Split move counts

This commit is contained in:
M66B 2021-06-06 07:27:58 +02:00
parent 6c00ea8ab4
commit 47b8f8296d
1 changed files with 28 additions and 12 deletions

View File

@ -5670,7 +5670,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
} }
}; };
String title = getString(R.string.title_move_undo, getDisplay(result, true), result.size()); String title = getString(R.string.title_move_undo, getNames(result, true), result.size());
((ActivityView) activity).undo(title, args, move, show); ((ActivityView) activity).undo(title, args, move, show);
} }
@ -5681,27 +5681,43 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
}.execute(this, args, "undo:hide"); }.execute(this, args, "undo:hide");
} }
private static String getDisplay(ArrayList<MessageTarget> result, boolean dest) { private static String getNames(ArrayList<MessageTarget> result, boolean dest) {
boolean across = false; boolean across = false;
for (MessageTarget target : result) for (MessageTarget target : result)
if (target.isAccross()) if (target.isAccross())
across = true; across = true;
List<String> displays = new ArrayList<>(); Map<String, Integer> nameCount = new HashMap<>();
for (MessageTarget target : result) { for (MessageTarget target : result) {
String display = ""; String name = "";
if (across) if (across)
display += (dest ? target.targetAccount.name : target.sourceAccount.name) + "/"; name += (dest ? target.targetAccount.name : target.sourceAccount.name) + "/";
display += (dest ? target.targetFolder.display : target.sourceFolder.display); name += (dest ? target.targetFolder.display : target.sourceFolder.display);
if (!displays.contains(display)) if (!nameCount.containsKey(name))
displays.add(display); nameCount.put(name, 0);
nameCount.put(name, nameCount.get(name) + 1);
} }
List<String> keys = new ArrayList(nameCount.keySet());
Collator collator = Collator.getInstance(Locale.getDefault()); Collator collator = Collator.getInstance(Locale.getDefault());
collator.setStrength(Collator.SECONDARY); // Case insensitive, process accents etc collator.setStrength(Collator.SECONDARY); // Case insensitive, process accents etc
Collections.sort(displays, collator); Collections.sort(keys, collator);
return TextUtils.join(", ", displays); NumberFormat NF = NumberFormat.getNumberInstance();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < keys.size(); i++) {
if (i > 0)
sb.append(", ");
sb.append(keys.get(i));
if (!dest && keys.size() > 0) {
int count = nameCount.get(keys.get(i));
sb.append('(').append(NF.format(count)).append(')');
}
}
return sb.toString();
} }
static String getFilter(String name, String type) { static String getFilter(String name, String type) {
@ -8382,8 +8398,8 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
result.size(), result.size()); result.size(), result.size());
tvMessages.setText(question); tvMessages.setText(question);
tvSourceFolders.setText(getDisplay(result, false)); tvSourceFolders.setText(getNames(result, false));
tvTargetFolders.setText(getDisplay(result, true)); tvTargetFolders.setText(getNames(result, true));
List<String> sources = new ArrayList<>(); List<String> sources = new ArrayList<>();
List<String> targets = new ArrayList<>(); List<String> targets = new ArrayList<>();