2018-11-20 09:59:23 -08:00
|
|
|
package org.thoughtcrime.securesms.mediasend;
|
|
|
|
|
|
|
|
import android.net.Uri;
|
|
|
|
import android.os.Bundle;
|
2019-06-05 15:47:14 -04:00
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
import androidx.annotation.Nullable;
|
|
|
|
import androidx.fragment.app.Fragment;
|
2018-11-20 09:59:23 -08:00
|
|
|
import android.view.LayoutInflater;
|
|
|
|
import android.view.View;
|
|
|
|
import android.view.ViewGroup;
|
|
|
|
|
|
|
|
import org.thoughtcrime.securesms.R;
|
|
|
|
import org.thoughtcrime.securesms.logging.Log;
|
|
|
|
import org.thoughtcrime.securesms.mms.VideoSlide;
|
|
|
|
import org.thoughtcrime.securesms.video.VideoPlayer;
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
|
|
|
public class MediaSendVideoFragment extends Fragment implements MediaSendPageFragment {
|
|
|
|
|
|
|
|
private static final String TAG = MediaSendVideoFragment.class.getSimpleName();
|
|
|
|
|
|
|
|
private static final String KEY_URI = "uri";
|
|
|
|
|
|
|
|
private Uri uri;
|
|
|
|
|
|
|
|
public static MediaSendVideoFragment newInstance(@NonNull Uri uri) {
|
|
|
|
Bundle args = new Bundle();
|
|
|
|
args.putParcelable(KEY_URI, uri);
|
|
|
|
|
|
|
|
MediaSendVideoFragment fragment = new MediaSendVideoFragment();
|
|
|
|
fragment.setArguments(args);
|
|
|
|
fragment.setUri(uri);
|
|
|
|
return fragment;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public @Nullable View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
|
|
|
return inflater.inflate(R.layout.mediasend_video_fragment, container, false);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
|
|
|
super.onViewCreated(view, savedInstanceState);
|
|
|
|
|
|
|
|
uri = getArguments().getParcelable(KEY_URI);
|
|
|
|
VideoSlide slide = new VideoSlide(requireContext(), uri, 0);
|
2019-07-02 13:18:36 -04:00
|
|
|
|
|
|
|
((VideoPlayer) view).setWindow(requireActivity().getWindow());
|
2019-10-09 17:16:23 -03:00
|
|
|
((VideoPlayer) view).setVideoSource(slide, true);
|
2018-11-20 09:59:23 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onDestroyView() {
|
|
|
|
super.onDestroyView();
|
|
|
|
|
|
|
|
if (getView() != null) {
|
|
|
|
((VideoPlayer) getView()).cleanup();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-10-17 20:28:51 -04:00
|
|
|
@Override
|
|
|
|
public void onPause() {
|
|
|
|
super.onPause();
|
|
|
|
notifyHidden();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onHiddenChanged(boolean hidden) {
|
|
|
|
if (hidden) {
|
|
|
|
notifyHidden();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-20 09:59:23 -08:00
|
|
|
@Override
|
|
|
|
public void setUri(@NonNull Uri uri) {
|
|
|
|
this.uri = uri;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public @NonNull Uri getUri() {
|
|
|
|
return uri;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public @Nullable View getPlaybackControls() {
|
|
|
|
VideoPlayer player = (VideoPlayer) getView();
|
|
|
|
return player != null ? player.getControlView() : null;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public @Nullable Object saveState() {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void restoreState(@NonNull Object state) { }
|
2019-10-17 20:28:51 -04:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public void notifyHidden() {
|
|
|
|
if (getView() != null) {
|
|
|
|
((VideoPlayer) getView()).pause();
|
|
|
|
}
|
|
|
|
}
|
2018-11-20 09:59:23 -08:00
|
|
|
}
|