Multiple select actions

This commit is contained in:
M66B 2018-10-24 12:06:04 +00:00
parent 77fabb2d37
commit 991d68112d
7 changed files with 231 additions and 187 deletions

View File

@ -74,6 +74,7 @@ public class FragmentMessages extends FragmentEx {
private ImageButton ibHintActions; private ImageButton ibHintActions;
private TextView tvNoEmail; private TextView tvNoEmail;
private RecyclerView rvMessage; private RecyclerView rvMessage;
private BottomNavigationView multiple;
private BottomNavigationView bottom_navigation; private BottomNavigationView bottom_navigation;
private ProgressBar pbWait; private ProgressBar pbWait;
private Group grpSupport; private Group grpSupport;
@ -95,10 +96,9 @@ public class FragmentMessages extends FragmentEx {
private List<Long> trashes = new ArrayList<>(); private List<Long> trashes = new ArrayList<>();
private AdapterMessage.ViewType viewType; private AdapterMessage.ViewType viewType;
private SelectionTracker<Long> selectionTracker = null;
private LiveData<PagedList<TupleMessageEx>> messages = null; private LiveData<PagedList<TupleMessageEx>> messages = null;
private SelectionTracker<Long> selectionTracker;
private int autoCount = 0; private int autoCount = 0;
private boolean autoExpand = true; private boolean autoExpand = true;
private List<Long> expanded = new ArrayList<>(); private List<Long> expanded = new ArrayList<>();
@ -149,6 +149,7 @@ public class FragmentMessages extends FragmentEx {
ibHintActions = view.findViewById(R.id.ibHintActions); ibHintActions = view.findViewById(R.id.ibHintActions);
tvNoEmail = view.findViewById(R.id.tvNoEmail); tvNoEmail = view.findViewById(R.id.tvNoEmail);
rvMessage = view.findViewById(R.id.rvFolder); rvMessage = view.findViewById(R.id.rvFolder);
multiple = view.findViewById(R.id.multiple);
bottom_navigation = view.findViewById(R.id.bottom_navigation); bottom_navigation = view.findViewById(R.id.bottom_navigation);
pbWait = view.findViewById(R.id.pbWait); pbWait = view.findViewById(R.id.pbWait);
grpSupport = view.findViewById(R.id.grpSupport); grpSupport = view.findViewById(R.id.grpSupport);
@ -233,21 +234,24 @@ public class FragmentMessages extends FragmentEx {
}); });
rvMessage.setAdapter(adapter); rvMessage.setAdapter(adapter);
selectionTracker = new SelectionTracker.Builder<>( if (viewType == AdapterMessage.ViewType.FOLDER) {
"messages-selection", selectionTracker = new SelectionTracker.Builder<>(
rvMessage, "messages-selection",
new ItemKeyProviderMessage(rvMessage), rvMessage,
new ItemDetailsLookupMessage(rvMessage), new ItemKeyProviderMessage(rvMessage),
StorageStrategy.createLongStorage()) new ItemDetailsLookupMessage(rvMessage),
.withSelectionPredicate(new SelectionPredicateMessage()) StorageStrategy.createLongStorage())
.build(); .withSelectionPredicate(new SelectionPredicateMessage())
adapter.setSelectionTracker(selectionTracker); .build();
adapter.setSelectionTracker(selectionTracker);
selectionTracker.addObserver(new SelectionTracker.SelectionObserver() { selectionTracker.addObserver(new SelectionTracker.SelectionObserver() {
@Override @Override
public void onSelectionChanged() { public void onSelectionChanged() {
} multiple.setVisibility(selectionTracker.hasSelection() ? View.VISIBLE : View.GONE);
}); }
});
}
new ItemTouchHelper(new ItemTouchHelper.Callback() { new ItemTouchHelper(new ItemTouchHelper.Callback() {
@Override @Override
@ -518,6 +522,7 @@ public class FragmentMessages extends FragmentEx {
// Initialize // Initialize
tvNoEmail.setVisibility(View.GONE); tvNoEmail.setVisibility(View.GONE);
multiple.setVisibility(View.GONE);
bottom_navigation.setVisibility(View.GONE); bottom_navigation.setVisibility(View.GONE);
grpReady.setVisibility(View.GONE); grpReady.setVisibility(View.GONE);
pbWait.setVisibility(View.VISIBLE); pbWait.setVisibility(View.VISIBLE);
@ -535,7 +540,8 @@ public class FragmentMessages extends FragmentEx {
outState.putLongArray("expanded", Helper.toLongArray(expanded)); outState.putLongArray("expanded", Helper.toLongArray(expanded));
outState.putLongArray("headers", Helper.toLongArray(headers)); outState.putLongArray("headers", Helper.toLongArray(headers));
outState.putLongArray("images", Helper.toLongArray(images)); outState.putLongArray("images", Helper.toLongArray(images));
selectionTracker.onSaveInstanceState(outState); if (selectionTracker != null)
selectionTracker.onSaveInstanceState(outState);
} }
@Override @Override
@ -548,7 +554,8 @@ public class FragmentMessages extends FragmentEx {
expanded = Helper.fromLongArray(savedInstanceState.getLongArray("expanded")); expanded = Helper.fromLongArray(savedInstanceState.getLongArray("expanded"));
headers = Helper.fromLongArray(savedInstanceState.getLongArray("headers")); headers = Helper.fromLongArray(savedInstanceState.getLongArray("headers"));
images = Helper.fromLongArray(savedInstanceState.getLongArray("images")); images = Helper.fromLongArray(savedInstanceState.getLongArray("images"));
selectionTracker.onRestoreInstanceState(savedInstanceState); if (selectionTracker != null)
selectionTracker.onRestoreInstanceState(savedInstanceState);
} }
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
@ -637,6 +644,8 @@ public class FragmentMessages extends FragmentEx {
} }
}); });
multiple.setVisibility(selectionTracker != null && selectionTracker.hasSelection() ? View.VISIBLE : View.GONE);
if (viewType == AdapterMessage.ViewType.THREAD) { if (viewType == AdapterMessage.ViewType.THREAD) {
// Navigation // Navigation
ViewModelMessages model = ViewModelProviders.of(getActivity()).get(ViewModelMessages.class); ViewModelMessages model = ViewModelProviders.of(getActivity()).get(ViewModelMessages.class);

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M15.73,3L8.27,3L3,8.27v7.46L8.27,21h7.46L21,15.73L21,8.27L15.73,3zM12,17.3c-0.72,0 -1.3,-0.58 -1.3,-1.3 0,-0.72 0.58,-1.3 1.3,-1.3 0.72,0 1.3,0.58 1.3,1.3 0,0.72 -0.58,1.3 -1.3,1.3zM13,13h-2L11,7h2v6z"/>
</vector>

View File

@ -6,163 +6,169 @@
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".ActivityView"> tools:context=".ActivityView">
<androidx.constraintlayout.widget.ConstraintLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
android:layout_above="@+id/multiple">
<TextView <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/tvSupport"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:padding="6dp"
android:text="@string/title_pro_support"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="?android:attr/textColorPrimary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/vSeparatorSupport"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="match_parent">
android:background="?attr/colorSeparator"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvSupport" />
<TextView <TextView
android:id="@+id/tvHintSupport" android:id="@+id/tvSupport"
android:layout_width="0dp" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical" android:layout_gravity="center_vertical"
android:minHeight="33dp" android:padding="6dp"
android:padding="6dp" android:text="@string/title_pro_support"
android:text="@string/title_hint_support" android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textAppearance="@style/TextAppearance.AppCompat.Small" android:textColor="?android:attr/textColorPrimary"
android:textColor="?android:attr/textColorPrimary" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintEnd_toStartOf="@+id/ibHintSupport" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toBottomOf="@id/vSeparatorSupport" />
<ImageButton <View
android:id="@+id/ibHintSupport" android:id="@+id/vSeparatorSupport"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="1dp"
android:src="@drawable/baseline_close_24" android:background="?attr/colorSeparator"
app:layout_constraintBottom_toBottomOf="@id/tvHintSupport" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@id/tvSupport" />
app:layout_constraintTop_toTopOf="@id/tvHintSupport" />
<View <TextView
android:id="@+id/vSeparatorHintSupport" android:id="@+id/tvHintSupport"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="1dp" android:layout_height="wrap_content"
android:background="?attr/colorSeparator" android:gravity="center_vertical"
app:layout_constraintStart_toStartOf="parent" android:minHeight="33dp"
app:layout_constraintTop_toBottomOf="@id/ibHintSupport" /> android:padding="6dp"
android:text="@string/title_hint_support"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="?android:attr/textColorPrimary"
app:layout_constraintEnd_toStartOf="@+id/ibHintSupport"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/vSeparatorSupport" />
<TextView <ImageButton
android:id="@+id/tvHintActions" android:id="@+id/ibHintSupport"
android:layout_width="0dp" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical" android:src="@drawable/baseline_close_24"
android:minHeight="33dp" app:layout_constraintBottom_toBottomOf="@id/tvHintSupport"
android:padding="6dp" app:layout_constraintEnd_toEndOf="parent"
android:text="@string/title_hint_message_actions" app:layout_constraintTop_toTopOf="@id/tvHintSupport" />
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="?android:attr/textColorPrimary"
app:layout_constraintEnd_toStartOf="@+id/ibHintActions"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/vSeparatorHintSupport" />
<ImageButton <View
android:id="@+id/ibHintActions" android:id="@+id/vSeparatorHintSupport"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="1dp"
android:src="@drawable/baseline_close_24" android:background="?attr/colorSeparator"
app:layout_constraintBottom_toBottomOf="@id/tvHintActions" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@id/ibHintSupport" />
app:layout_constraintTop_toTopOf="@id/tvHintActions" />
<View <TextView
android:id="@+id/vSeparatorHintActions" android:id="@+id/tvHintActions"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="1dp" android:layout_height="wrap_content"
android:background="?attr/colorSeparator" android:gravity="center_vertical"
app:layout_constraintStart_toStartOf="parent" android:minHeight="33dp"
app:layout_constraintTop_toBottomOf="@id/tvHintActions" /> android:padding="6dp"
android:text="@string/title_hint_message_actions"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="?android:attr/textColorPrimary"
app:layout_constraintEnd_toStartOf="@+id/ibHintActions"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/vSeparatorHintSupport" />
<TextView <ImageButton
android:id="@+id/tvNoEmail" android:id="@+id/ibHintActions"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/title_no_messages" android:src="@drawable/baseline_close_24"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" app:layout_constraintBottom_toBottomOf="@id/tvHintActions"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@id/tvHintActions" />
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView <View
android:id="@+id/rvFolder" android:id="@+id/vSeparatorHintActions"
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="1dp"
android:scrollbarStyle="outsideOverlay" android:background="?attr/colorSeparator"
android:scrollbars="vertical" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@+id/bottom_navigation" app:layout_constraintTop_toBottomOf="@id/tvHintActions" />
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/vSeparatorHintActions" />
<ProgressBar <TextView
android:id="@+id/pbWait" android:id="@+id/tvNoEmail"
style="@style/Base.Widget.AppCompat.ProgressBar" android:layout_width="wrap_content"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_height="wrap_content" android:text="@string/title_no_messages"
android:indeterminate="true" android:textAppearance="@style/TextAppearance.AppCompat.Medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toTopOf="@+id/bottom_navigation"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.bottomnavigation.BottomNavigationView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/bottom_navigation" android:id="@+id/rvFolder"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="28dp" android:layout_height="0dp"
android:background="?attr/colorSeparator" android:scrollbarStyle="outsideOverlay"
app:itemIconTint="@color/bottomnav_background" android:scrollbars="vertical"
app:itemTextColor="@color/bottomnav_background" app:layout_constraintBottom_toTopOf="@+id/bottom_navigation"
app:labelVisibilityMode="unlabeled" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@id/vSeparatorHintActions" />
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/action_messages" />
<androidx.constraintlayout.widget.Group <ProgressBar
android:id="@+id/grpSupport" android:id="@+id/pbWait"
android:layout_width="0dp" style="@style/Base.Widget.AppCompat.ProgressBar"
android:layout_height="0dp" android:layout_width="wrap_content"
app:constraint_referenced_ids="tvSupport,vSeparatorSupport" /> android:layout_height="wrap_content"
android:indeterminate="true"
app:layout_constraintBottom_toTopOf="@+id/bottom_navigation"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.Group <com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/grpHintSupport" android:id="@+id/bottom_navigation"
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="28dp"
app:constraint_referenced_ids="tvHintSupport,ibHintSupport,vSeparatorHintSupport" /> android:background="?attr/colorSeparator"
app:itemIconTint="@color/bottomnav_background"
app:itemTextColor="@color/bottomnav_background"
app:labelVisibilityMode="unlabeled"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/action_messages" />
<androidx.constraintlayout.widget.Group <androidx.constraintlayout.widget.Group
android:id="@+id/grpHintActions" android:id="@+id/grpSupport"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
app:constraint_referenced_ids="tvHintActions,ibHintActions,vSeparatorHintActions" /> app:constraint_referenced_ids="tvSupport,vSeparatorSupport" />
<androidx.constraintlayout.widget.Group <androidx.constraintlayout.widget.Group
android:id="@+id/grpReady" android:id="@+id/grpHintSupport"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
app:constraint_referenced_ids="rvFolder" /> app:constraint_referenced_ids="tvHintSupport,ibHintSupport,vSeparatorHintSupport" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.Group
android:id="@+id/grpHintActions"
android:layout_width="0dp"
android:layout_height="0dp"
app:constraint_referenced_ids="tvHintActions,ibHintActions,vSeparatorHintActions" />
<androidx.constraintlayout.widget.Group
android:id="@+id/grpReady"
android:layout_width="0dp"
android:layout_height="0dp"
app:constraint_referenced_ids="rvFolder" />
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>
<com.google.android.material.floatingactionbutton.FloatingActionButton <com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab" android:id="@+id/fab"
@ -172,7 +178,16 @@
android:layout_margin="16dp" android:layout_margin="16dp"
android:src="@drawable/baseline_edit_24" android:src="@drawable/baseline_edit_24"
android:tint="@color/colorActionForeground" android:tint="@color/colorActionForeground"
app:backgroundTint="?attr/colorAccent" app:backgroundTint="?attr/colorAccent" />
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" /> <com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/multiple"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@color/colorPrimary"
app:itemIconTint="@color/bottomnav_background"
app:itemTextColor="@color/bottomnav_background"
app:labelVisibilityMode="labeled"
app:menu="@menu/action_multiple" />
</androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -1,16 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" <menu xmlns:android="http://schemas.android.com/apk/res/android">
xmlns:app="http://schemas.android.com/apk/res-auto">
<item <item
android:id="@+id/action_delete" android:id="@+id/action_delete"
android:icon="@drawable/baseline_delete_24" android:icon="@drawable/baseline_delete_24"
android:title="@string/title_delete" android:title="@string/title_delete" />
app:showAsAction="ifRoom" />
<item <item
android:id="@+id/action_save" android:id="@+id/action_save"
android:icon="@drawable/baseline_save_alt_24" android:icon="@drawable/baseline_save_alt_24"
android:title="@string/title_save" android:title="@string/title_save" />
app:showAsAction="ifRoom" />
</menu> </menu>

View File

@ -1,22 +1,18 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" <menu xmlns:android="http://schemas.android.com/apk/res/android">
xmlns:app="http://schemas.android.com/apk/res-auto">
<item <item
android:id="@+id/action_delete" android:id="@+id/action_delete"
android:icon="@drawable/baseline_delete_24" android:icon="@drawable/baseline_delete_24"
android:title="@string/title_discard" android:title="@string/title_discard" />
app:showAsAction="ifRoom" />
<item <item
android:id="@+id/action_save" android:id="@+id/action_save"
android:icon="@drawable/baseline_save_alt_24" android:icon="@drawable/baseline_save_alt_24"
android:title="@string/title_save" android:title="@string/title_save" />
app:showAsAction="ifRoom" />
<item <item
android:id="@+id/action_send" android:id="@+id/action_send"
android:icon="@drawable/baseline_send_24" android:icon="@drawable/baseline_send_24"
android:title="@string/title_send" android:title="@string/title_send" />
app:showAsAction="ifRoom" />
</menu> </menu>

View File

@ -1,34 +1,28 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" <menu xmlns:android="http://schemas.android.com/apk/res/android">
xmlns:app="http://schemas.android.com/apk/res-auto">
<item <item
android:id="@+id/action_more" android:id="@+id/action_more"
android:icon="@drawable/baseline_more_vert_24" android:icon="@drawable/baseline_more_vert_24"
android:title="@string/title_more" android:title="@string/title_more" />
app:showAsAction="ifRoom" />
<item <item
android:id="@+id/action_delete" android:id="@+id/action_delete"
android:icon="@drawable/baseline_delete_24" android:icon="@drawable/baseline_delete_24"
android:title="@string/title_trash" android:title="@string/title_trash" />
app:showAsAction="ifRoom" />
<item <item
android:id="@+id/action_move" android:id="@+id/action_move"
android:icon="@drawable/baseline_folder_24" android:icon="@drawable/baseline_folder_24"
android:title="@string/title_move" android:title="@string/title_move" />
app:showAsAction="ifRoom" />
<item <item
android:id="@+id/action_archive" android:id="@+id/action_archive"
android:icon="@drawable/baseline_archive_24" android:icon="@drawable/baseline_archive_24"
android:title="@string/title_archive" android:title="@string/title_archive" />
app:showAsAction="ifRoom" />
<item <item
android:id="@+id/action_reply" android:id="@+id/action_reply"
android:icon="@drawable/baseline_reply_24" android:icon="@drawable/baseline_reply_24"
android:title="@string/title_reply" android:title="@string/title_reply" />
app:showAsAction="ifRoom" />
</menu> </menu>

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_junk"
android:icon="@drawable/baseline_report_24"
android:title="@string/title_spam" />
<item
android:id="@+id/action_delete"
android:icon="@drawable/baseline_delete_24"
android:title="@string/title_trash" />
<item
android:id="@+id/action_move"
android:icon="@drawable/baseline_folder_24"
android:title="@string/title_move" />
<item
android:id="@+id/action_archive"
android:icon="@drawable/baseline_archive_24"
android:title="@string/title_archive" />
</menu>