From 9c340318e8901f773d4cc13320ef39b303931302 Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 18 May 2021 07:35:42 +0200 Subject: [PATCH] DeepL: language frequency --- .../eu/faircode/email/FragmentCompose.java | 29 +++++++++++++++++-- .../faircode/email/FragmentOptionsMisc.java | 5 +++- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 058484cd82..f7d325d806 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -1448,17 +1448,27 @@ public class FragmentCompose extends FragmentBase { try (InputStream is = getContext().getAssets().open("deepl.json")) { String json = Helper.readStream(is); JSONArray jarray = new JSONArray(json); - List> languages = new ArrayList<>(); String pkg = getContext().getPackageName(); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + + List> languages = new ArrayList<>(); + Map frequencies = new HashMap<>(); for (int i = 0; i < jarray.length(); i++) { JSONObject jlanguage = jarray.getJSONObject(i); String name = jlanguage.getString("name"); String target = jlanguage.getString("language"); + Locale locale = Locale.forLanguageTag(target); if (locale != null) name = locale.getDisplayName(); + + int frequency = prefs.getInt("translated_" + target, 0); + if (frequency > 0) + name += " ★"; + languages.add(new Pair<>(name, target)); + frequencies.put(target, frequency); } Collator collator = Collator.getInstance(Locale.getDefault()); @@ -1466,7 +1476,13 @@ public class FragmentCompose extends FragmentBase { Collections.sort(languages, new Comparator>() { @Override public int compare(Pair l1, Pair l2) { - return collator.compare(l1.first, l2.first); + int freq1 = frequencies.get(l1.second); + int freq2 = frequencies.get(l2.second); + + if (freq1 == freq2) + return collator.compare(l1.first, l2.first); + else + return -Integer.compare(freq1, freq2); } }); @@ -2044,8 +2060,17 @@ public class FragmentCompose extends FragmentBase { @Override protected void onExecuted(Bundle args, String translated) { + // Insert translated text edit.insert(insert, "\n" + translated); etBody.setSelection(insert + 1 + translated.length()); + + // Updated frequency + String key = "translated_" + args.getString("target"); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + int count = prefs.getInt(key, 0); + prefs.edit().putInt(key, count + 1).apply(); + + getActivity().invalidateOptionsMenu(); } @Override diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index 8d45fb860b..1c2fabdb30 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -876,7 +876,10 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc for (String option : RESET_QUESTIONS) editor.remove(option); for (String key : prefs.getAll().keySet()) - if (key.endsWith(".show_full") || key.endsWith(".show_images") || key.endsWith(".confirm_link")) + if (key.startsWith("translated_") || + key.endsWith(".show_full") || + key.endsWith(".show_images") || + key.endsWith(".confirm_link")) editor.remove(key); editor.apply();