MCPcopy Create free account
hub / github.com/M66B/FairEmail / fillMenu

Method fillMenu

app/src/main/java/eu/faircode/email/EntityAnswer.java:297–495  ·  view source on GitHub ↗
(Menu main, boolean compose, List<EntityAnswer> answers, Context context)

Source from the content-addressed store, hash-verified

295 }
296
297 static void fillMenu(Menu main, boolean compose, List<EntityAnswer> answers, Context context) {
298 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
299 boolean sort_answers = prefs.getBoolean("sort_answers", false);
300
301 int iconSize = context.getResources().getDimensionPixelSize(R.dimen.menu_item_icon_size);
302 NumberFormat NF = NumberFormat.getNumberInstance();
303
304 List<EntityAnswer> favorites = new ArrayList<>();
305 Map<String, Integer> groupApplied = new HashMap<>();
306 for (EntityAnswer answer : answers)
307 if (compose && answer.favorite)
308 favorites.add(answer);
309 else if (answer.group != null) {
310 Integer total = groupApplied.get(answer.group);
311 if (total == null)
312 total = 0;
313 groupApplied.put(answer.group, total + answer.applied);
314 }
315
316 Collator collator = Collator.getInstance(Locale.getDefault());
317 collator.setStrength(Collator.SECONDARY); // Case insensitive, process accents etc
318
319 List<String> groups = new ArrayList<>(groupApplied.keySet());
320 Collections.sort(groups, new Comparator<String>() {
321 @Override
322 public int compare(String g1, String g2) {
323 Integer a1 = groupApplied.get(g1);
324 Integer a2 = groupApplied.get(g2);
325 if (!sort_answers || a1.equals(a2))
326 return collator.compare(g1, g2);
327 else
328 return -a1.compareTo(a2);
329 }
330 });
331
332 Collections.sort(answers, new Comparator<EntityAnswer>() {
333 @Override
334 public int compare(EntityAnswer a1, EntityAnswer a2) {
335 if (!sort_answers || a1.applied.equals(a2.applied))
336 return collator.compare(a1.name, a2.name);
337 else
338 return -a1.applied.compareTo(a2.applied);
339 }
340 });
341
342 Collections.sort(favorites, new Comparator<EntityAnswer>() {
343 @Override
344 public int compare(EntityAnswer a1, EntityAnswer a2) {
345 return collator.compare(a1.name, a2.name);
346 }
347 });
348
349 int order = 0;
350
351 Map<String, SubMenu> map = new HashMap<>();
352 for (String group : groups) {
353 SpannableStringBuilder ssb = new SpannableStringBuilderEx(group);
354

Callers 2

onExecutedMethod · 0.95
onExecutedMethod · 0.95

Calls 15

setSpanMethod · 0.95
getProvidersMethod · 0.95
fromHtmlMethod · 0.95
resolveColorMethod · 0.95
getBooleanMethod · 0.80
getDefaultMethod · 0.80
joinMethod · 0.80
sizeMethod · 0.65
getDrawableMethod · 0.65
getResourcesMethod · 0.45
addMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected