Ensure videos are paused properly in MediaSendActivity.
This commit is contained in:
parent
2f23a13a6f
commit
096c9e0ff7
6 changed files with 58 additions and 0 deletions
|
@ -82,9 +82,17 @@ public class MediaSendFragment extends Fragment {
|
||||||
super.onHiddenChanged(hidden);
|
super.onHiddenChanged(hidden);
|
||||||
if (!hidden) {
|
if (!hidden) {
|
||||||
viewModel.onImageEditorStarted();
|
viewModel.onImageEditorStarted();
|
||||||
|
} else {
|
||||||
|
fragmentPagerAdapter.notifyHidden();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause() {
|
||||||
|
super.onPause();
|
||||||
|
fragmentPagerAdapter.notifyHidden();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStop() {
|
public void onStop() {
|
||||||
super.onStop();
|
super.onStop();
|
||||||
|
@ -143,6 +151,7 @@ public class MediaSendFragment extends Fragment {
|
||||||
@Override
|
@Override
|
||||||
public void onPageSelected(int position) {
|
public void onPageSelected(int position) {
|
||||||
viewModel.onPageChanged(position);
|
viewModel.onPageChanged(position);
|
||||||
|
fragmentPagerAdapter.notifyPageChanged(position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,8 @@ import androidx.fragment.app.FragmentStatePagerAdapter;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
import org.thoughtcrime.securesms.scribbles.ImageEditorFragment;
|
import org.thoughtcrime.securesms.scribbles.ImageEditorFragment;
|
||||||
import org.thoughtcrime.securesms.util.MediaUtil;
|
import org.thoughtcrime.securesms.util.MediaUtil;
|
||||||
|
|
||||||
|
@ -119,4 +121,21 @@ class MediaSendFragmentPagerAdapter extends FragmentStatePagerAdapter {
|
||||||
@Nullable View getPlaybackControls(int position) {
|
@Nullable View getPlaybackControls(int position) {
|
||||||
return fragments.containsKey(position) ? fragments.get(position).getPlaybackControls() : null;
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,4 +65,8 @@ public class MediaSendGifFragment extends Fragment implements MediaSendPageFragm
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void restoreState(@NonNull Object state) { }
|
public void restoreState(@NonNull Object state) { }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifyHidden() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,4 +19,6 @@ public interface MediaSendPageFragment {
|
||||||
@Nullable Object saveState();
|
@Nullable Object saveState();
|
||||||
|
|
||||||
void restoreState(@NonNull Object state);
|
void restoreState(@NonNull Object state);
|
||||||
|
|
||||||
|
void notifyHidden();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
@Override
|
||||||
public void setUri(@NonNull Uri uri) {
|
public void setUri(@NonNull Uri uri) {
|
||||||
this.uri = uri;
|
this.uri = uri;
|
||||||
|
@ -82,4 +95,11 @@ public class MediaSendVideoFragment extends Fragment implements MediaSendPageFra
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void restoreState(@NonNull Object state) { }
|
public void restoreState(@NonNull Object state) { }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifyHidden() {
|
||||||
|
if (getView() != null) {
|
||||||
|
((VideoPlayer) getView()).pause();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -212,6 +212,10 @@ public final class ImageEditorFragment extends Fragment implements ImageEditorHu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifyHidden() {
|
||||||
|
}
|
||||||
|
|
||||||
private void changeEntityColor(int selectedColor) {
|
private void changeEntityColor(int selectedColor) {
|
||||||
if (currentSelection != null) {
|
if (currentSelection != null) {
|
||||||
Renderer renderer = currentSelection.getRenderer();
|
Renderer renderer = currentSelection.getRenderer();
|
||||||
|
|
Loading…
Add table
Reference in a new issue