mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-05-01 06:03:18 +01:00
Disable tab switching in media overview during multiselect.
Multiselect only applies to items in the "media" tab, so people shouldn't be able to switch tabs during multiselect.
This commit is contained in:
@@ -71,7 +71,7 @@ import java.util.Locale;
|
||||
/**
|
||||
* Activity for displaying media attachments in-app
|
||||
*/
|
||||
public class MediaOverviewActivity extends PassphraseRequiredActionBarActivity {
|
||||
public class MediaOverviewActivity extends PassphraseRequiredActionBarActivity {
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private final static String TAG = MediaOverviewActivity.class.getSimpleName();
|
||||
@@ -137,6 +137,16 @@ public class MediaOverviewActivity extends PassphraseRequiredActionBarActivity
|
||||
this.recipient.addListener(recipient -> getSupportActionBar().setTitle(recipient.toShortString()));
|
||||
}
|
||||
|
||||
public void onEnterMultiSelect() {
|
||||
tabLayout.setEnabled(false);
|
||||
viewPager.setEnabled(false);
|
||||
}
|
||||
|
||||
public void onExitMultiSelect() {
|
||||
tabLayout.setEnabled(true);
|
||||
viewPager.setEnabled(true);
|
||||
}
|
||||
|
||||
private class MediaOverviewPagerAdapter extends FragmentStatePagerAdapter {
|
||||
|
||||
MediaOverviewPagerAdapter(FragmentManager fragmentManager) {
|
||||
@@ -270,8 +280,7 @@ public class MediaOverviewActivity extends PassphraseRequiredActionBarActivity
|
||||
|
||||
adapter.toggleSelection(mediaRecord);
|
||||
if (adapter.getSelectedMediaCount() == 0) {
|
||||
actionMode.finish();
|
||||
actionMode = null;
|
||||
exitMultiSelect();
|
||||
} else {
|
||||
actionMode.setTitle(String.valueOf(adapter.getSelectedMediaCount()));
|
||||
}
|
||||
@@ -304,7 +313,7 @@ public class MediaOverviewActivity extends PassphraseRequiredActionBarActivity
|
||||
((MediaGalleryAdapter) recyclerView.getAdapter()).toggleSelection(mediaRecord);
|
||||
recyclerView.getAdapter().notifyDataSetChanged();
|
||||
|
||||
actionMode = ((AppCompatActivity) getActivity()).startSupportActionMode(actionModeCallback);
|
||||
enterMultiSelect();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -352,6 +361,17 @@ public class MediaOverviewActivity extends PassphraseRequiredActionBarActivity
|
||||
return (MediaGalleryAdapter) recyclerView.getAdapter();
|
||||
}
|
||||
|
||||
private void enterMultiSelect() {
|
||||
actionMode = ((AppCompatActivity) getActivity()).startSupportActionMode(actionModeCallback);
|
||||
((MediaOverviewActivity) getActivity()).onEnterMultiSelect();
|
||||
}
|
||||
|
||||
private void exitMultiSelect() {
|
||||
actionMode.finish();
|
||||
actionMode = null;
|
||||
((MediaOverviewActivity) getActivity()).onExitMultiSelect();
|
||||
}
|
||||
|
||||
private class ActionModeCallback implements ActionMode.Callback {
|
||||
|
||||
private int originalStatusBarColor;
|
||||
@@ -379,7 +399,7 @@ public class MediaOverviewActivity extends PassphraseRequiredActionBarActivity
|
||||
switch (menuItem.getItemId()) {
|
||||
case R.id.delete:
|
||||
handleDeleteMedia(getListAdapter().getSelectedMedia());
|
||||
mode.finish();
|
||||
exitMultiSelect();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user