(Menu main, boolean compose, List<EntityAnswer> answers, Context context)
| 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 |
no test coverage detected