Ensure videos are paused properly in MediaSendActivity.

This commit is contained in:
Greyson Parrelli 2019-10-17 20:28:51 -04:00
parent 2f23a13a6f
commit 096c9e0ff7
6 changed files with 58 additions and 0 deletions

View file

@ -82,9 +82,17 @@ public class MediaSendFragment extends Fragment {
super.onHiddenChanged(hidden);
if (!hidden) {
viewModel.onImageEditorStarted();
} else {
fragmentPagerAdapter.notifyHidden();
}
}
@Override
public void onPause() {
super.onPause();
fragmentPagerAdapter.notifyHidden();
}
@Override
public void onStop() {
super.onStop();
@ -143,6 +151,7 @@ public class MediaSendFragment extends Fragment {
@Override
public void onPageSelected(int position) {
viewModel.onPageChanged(position);
fragmentPagerAdapter.notifyPageChanged(position);
}
}
}

View file

@ -9,6 +9,8 @@ import androidx.fragment.app.FragmentStatePagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import com.annimon.stream.Stream;
import org.thoughtcrime.securesms.scribbles.ImageEditorFragment;
import org.thoughtcrime.securesms.util.MediaUtil;
@ -119,4 +121,21 @@ class MediaSendFragmentPagerAdapter extends FragmentStatePagerAdapter {
@Nullable View getPlaybackControls(int position) {
return fragments.containsKey(position) ? fragments.get(position).getPlaybackControls() : null;
}
void notifyHidden() {
Stream.of(fragments.values()).forEach(MediaSendPageFragment::notifyHidden);
}
void notifyPageChanged(int currentPage) {
notifyHiddenIfExists(currentPage - 1);
notifyHiddenIfExists(currentPage + 1);
}
private void notifyHiddenIfExists(int position) {
MediaSendPageFragment fragment = fragments.get(position);
if (fragment != null) {
fragment.notifyHidden();
}
}
}

View file

@ -65,4 +65,8 @@ public class MediaSendGifFragment extends Fragment implements MediaSendPageFragm
@Override
public void restoreState(@NonNull Object state) { }
@Override
public void notifyHidden() {
}
}

View file

@ -19,4 +19,6 @@ public interface MediaSendPageFragment {
@Nullable Object saveState();
void restoreState(@NonNull Object state);
void notifyHidden();
}

View file

@ -59,6 +59,19 @@ public class MediaSendVideoFragment extends Fragment implements MediaSendPageFra
}
}
@Override
public void onPause() {
super.onPause();
notifyHidden();
}
@Override
public void onHiddenChanged(boolean hidden) {
if (hidden) {
notifyHidden();
}
}
@Override
public void setUri(@NonNull Uri uri) {
this.uri = uri;
@ -82,4 +95,11 @@ public class MediaSendVideoFragment extends Fragment implements MediaSendPageFra
@Override
public void restoreState(@NonNull Object state) { }
@Override
public void notifyHidden() {
if (getView() != null) {
((VideoPlayer) getView()).pause();
}
}
}

View file

@ -212,6 +212,10 @@ public final class ImageEditorFragment extends Fragment implements ImageEditorHu
}
}
@Override
public void notifyHidden() {
}
private void changeEntityColor(int selectedColor) {
if (currentSelection != null) {
Renderer renderer = currentSelection.getRenderer();