diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java
index 9eac723ada..805f014520 100644
--- a/app/src/main/java/eu/faircode/email/FragmentMessages.java
+++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java
@@ -240,6 +240,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
private FloatingActionButton fabReply;
private FloatingActionButton fabCompose;
private FloatingActionButton fabMore;
+ private TextView tvSelectedCount;
private FloatingActionButton fabSearch;
private FloatingActionButton fabError;
@@ -444,6 +445,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
fabReply = view.findViewById(R.id.fabReply);
fabCompose = view.findViewById(R.id.fabCompose);
fabMore = view.findViewById(R.id.fabMore);
+ tvSelectedCount = view.findViewById(R.id.tvSelectedCount);
fabSearch = view.findViewById(R.id.fabSearch);
fabError = view.findViewById(R.id.fabError);
@@ -975,6 +977,13 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
}
});
+ tvSelectedCount.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ onMore();
+ }
+ });
+
fabSearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -1117,6 +1126,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
fabSearch.hide();
fabMore.hide();
+ tvSelectedCount.setVisibility(View.GONE);
fabError.hide();
if (viewType == AdapterMessage.ViewType.THREAD) {
@@ -1226,10 +1236,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
if (activity != null)
activity.invalidateOptionsMenu();
- if (selectionTracker != null && selectionTracker.hasSelection())
- fabMore.show();
- else
- fabMore.hide();
+ updateMore();
}
@Override
@@ -3090,11 +3097,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
loadMessages(false);
updateExpanded();
-
- if (selectionTracker != null && selectionTracker.hasSelection())
- fabMore.show();
- else
- fabMore.hide();
+ updateMore();
// Folder
switch (viewType) {
@@ -3878,6 +3881,17 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
swipeRefresh.setRefreshing(refreshing);
}
+ private void updateMore() {
+ if (selectionTracker != null && selectionTracker.hasSelection()) {
+ fabMore.show();
+ tvSelectedCount.setText(NF.format(selectionTracker.getSelection().size()));
+ tvSelectedCount.setVisibility(View.VISIBLE);
+ } else {
+ fabMore.hide();
+ tvSelectedCount.setVisibility(View.GONE);
+ }
+ }
+
private void loadMessages(final boolean top) {
if (viewType == AdapterMessage.ViewType.THREAD && onclose != null) {
ViewModelMessages model = new ViewModelProvider(getActivity()).get(ViewModelMessages.class);
diff --git a/app/src/main/res/drawable/selected_count_background.xml b/app/src/main/res/drawable/selected_count_background.xml
new file mode 100644
index 0000000000..29ab2dbb72
--- /dev/null
+++ b/app/src/main/res/drawable/selected_count_background.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_messages.xml b/app/src/main/res/layout/fragment_messages.xml
index b2c754362c..1c78b9fcdd 100644
--- a/app/src/main/res/layout/fragment_messages.xml
+++ b/app/src/main/res/layout/fragment_messages.xml
@@ -340,6 +340,20 @@
app:backgroundTint="?attr/colorFabBackground"
app:srcCompat="@drawable/baseline_more_vert_24" />
+
+