From 4bdb2acd29f06ec0782f33e20b3c8290a002bef3 Mon Sep 17 00:00:00 2001 From: art1fa Date: Tue, 13 Feb 2018 21:55:59 +0100 Subject: [PATCH] Batch selection mode improvements Simplified and now the same for conversation and conversation list. Added also some styling. Closes #7410 --- res/menu/conversation_context.xml | 2 +- res/values/colors.xml | 2 +- res/values/themes.xml | 4 ++++ .../securesms/ConversationFragment.java | 21 ++++++++++++++++--- .../securesms/ConversationListFragment.java | 9 +++----- 5 files changed, 27 insertions(+), 11 deletions(-) diff --git a/res/menu/conversation_context.xml b/res/menu/conversation_context.xml index 6d7fe4295a..e5955f5c4a 100644 --- a/res/menu/conversation_context.xml +++ b/res/menu/conversation_context.xml @@ -18,7 +18,7 @@ + app:showAsAction="always" /> #32000000 - #ff1f1f1f + @color/gray65 #400099cc #ffffffff diff --git a/res/values/themes.xml b/res/values/themes.xml index f174636de2..51b4e11fd4 100644 --- a/res/values/themes.xml +++ b/res/values/themes.xml @@ -115,6 +115,8 @@ light @style/TextSecure.LightActionBar @style/TextSecure.LightActionBar.TabBar + @color/gray50 + @drawable/ic_close_white_24dp @color/textsecure_primary @color/textsecure_primary_dark @color/textsecure_primary_dark @@ -241,6 +243,8 @@ @style/TextSecure.DarkActionBar @style/TextSecure.DarkActionBar.TabBar @style/ThemeOverlay.AppCompat.Dark + @color/gray50 + @drawable/ic_close_white_24dp @color/text_color_dark_theme @color/text_color_secondary_dark_theme @color/textsecure_primary_dark diff --git a/src/org/thoughtcrime/securesms/ConversationFragment.java b/src/org/thoughtcrime/securesms/ConversationFragment.java index a98c253886..46191f9852 100644 --- a/src/org/thoughtcrime/securesms/ConversationFragment.java +++ b/src/org/thoughtcrime/securesms/ConversationFragment.java @@ -201,6 +201,7 @@ public class ConversationFragment extends Fragment private void setCorrectMenuVisibility(Menu menu) { Set messageRecords = getListAdapter().getSelectedItems(); boolean actionMessage = false; + boolean mediaMessage = false; if (actionMode != null && messageRecords.size() == 0) { actionMode.finish(); @@ -215,6 +216,12 @@ public class ConversationFragment extends Fragment { actionMessage = true; break; + } else if (messageRecord.isMms() && + !messageRecord.isMmsNotification() && + ((MediaMmsMessageRecord)messageRecord).containsMediaSlide()) + { + mediaMessage = true; + break; } } @@ -223,7 +230,7 @@ public class ConversationFragment extends Fragment menu.findItem(R.id.menu_context_details).setVisible(false); menu.findItem(R.id.menu_context_save_attachment).setVisible(false); menu.findItem(R.id.menu_context_resend).setVisible(false); - menu.findItem(R.id.menu_context_copy).setVisible(!actionMessage); + menu.findItem(R.id.menu_context_copy).setVisible(!actionMessage && !mediaMessage); } else { MessageRecord messageRecord = messageRecords.iterator().next(); @@ -235,7 +242,7 @@ public class ConversationFragment extends Fragment menu.findItem(R.id.menu_context_forward).setVisible(!actionMessage); menu.findItem(R.id.menu_context_details).setVisible(!actionMessage); - menu.findItem(R.id.menu_context_copy).setVisible(!actionMessage); + menu.findItem(R.id.menu_context_copy).setVisible(!actionMessage && !mediaMessage); } } @@ -578,7 +585,13 @@ public class ConversationFragment extends Fragment ((ConversationAdapter) list.getAdapter()).toggleSelection(messageRecord); list.getAdapter().notifyDataSetChanged(); - setCorrectMenuVisibility(actionMode.getMenu()); + if (getListAdapter().getSelectedItems().size() == 0) { + actionMode.finish(); + } else { + setCorrectMenuVisibility(actionMode.getMenu()); + actionMode.setTitle(String.valueOf(getListAdapter().getSelectedItems().size())); + } + } } @@ -602,6 +615,8 @@ public class ConversationFragment extends Fragment MenuInflater inflater = mode.getMenuInflater(); inflater.inflate(R.menu.conversation_context, menu); + mode.setTitle("1"); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getActivity().getWindow(); statusBarColor = window.getStatusBarColor(); diff --git a/src/org/thoughtcrime/securesms/ConversationListFragment.java b/src/org/thoughtcrime/securesms/ConversationListFragment.java index c392f7ff9a..531db2f936 100644 --- a/src/org/thoughtcrime/securesms/ConversationListFragment.java +++ b/src/org/thoughtcrime/securesms/ConversationListFragment.java @@ -322,8 +322,7 @@ public class ConversationListFragment extends Fragment private void handleSelectAllThreads() { getListAdapter().selectAllThreads(); - actionMode.setSubtitle(getString(R.string.conversation_fragment_cab__batch_selection_amount, - String.valueOf(getListAdapter().getBatchSelections().size()))); + actionMode.setTitle(String.valueOf(getListAdapter().getBatchSelections().size())); } private void handleCreateConversation(long threadId, Recipient recipient, int distributionType, long lastSeen) { @@ -374,8 +373,7 @@ public class ConversationListFragment extends Fragment if (adapter.getBatchSelections().size() == 0) { actionMode.finish(); } else { - actionMode.setSubtitle(getString(R.string.conversation_fragment_cab__batch_selection_amount, - String.valueOf(adapter.getBatchSelections().size()))); + actionMode.setTitle(String.valueOf(getListAdapter().getBatchSelections().size())); } adapter.notifyDataSetChanged(); @@ -410,8 +408,7 @@ public class ConversationListFragment extends Fragment inflater.inflate(R.menu.conversation_list_batch, menu); - mode.setTitle(R.string.conversation_fragment_cab__batch_selection_mode); - mode.setSubtitle(getString(R.string.conversation_fragment_cab__batch_selection_amount, "1")); + mode.setTitle("1"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getActivity().getWindow().setStatusBarColor(getResources().getColor(R.color.action_mode_status_bar));