diff --git a/app/src/main/java/eu/faircode/email/ApplicationEx.java b/app/src/main/java/eu/faircode/email/ApplicationEx.java index bfb9ea1b11..a3e1714c86 100644 --- a/app/src/main/java/eu/faircode/email/ApplicationEx.java +++ b/app/src/main/java/eu/faircode/email/ApplicationEx.java @@ -479,6 +479,10 @@ public class ApplicationEx extends Application String key = prefs.getString("deepl", null); editor.putString("deepl_key", key).remove("deepl"); } + } else if (version < 1630) { + boolean experiments = prefs.getBoolean("experiments", false); + if (experiments) + editor.putBoolean("deepl_enabled", true); } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !BuildConfig.DEBUG) diff --git a/app/src/main/java/eu/faircode/email/DeepL.java b/app/src/main/java/eu/faircode/email/DeepL.java index af8478dfd8..2c145440a0 100644 --- a/app/src/main/java/eu/faircode/email/DeepL.java +++ b/app/src/main/java/eu/faircode/email/DeepL.java @@ -73,8 +73,8 @@ public class DeepL { public static boolean isAvailable(Context context) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - boolean experiments = prefs.getBoolean("experiments", false); - return (experiments && !BuildConfig.PLAY_STORE_RELEASE); + boolean deepl_enabled = prefs.getBoolean("deepl_enabled", false); + return (deepl_enabled && !BuildConfig.PLAY_STORE_RELEASE); } public static boolean canTranslate(Context context) { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index 59d8ca69fa..686e44fc0a 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -95,6 +95,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc private TextView tvFtsPro; private Spinner spLanguage; private ImageButton ibResetLanguage; + private SwitchCompat swDeepL; + private ImageButton ibDeepL; private SwitchCompat swWatchdog; private SwitchCompat swUpdates; private SwitchCompat swCheckWeekly; @@ -132,6 +134,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc private Button btnCiphers; private Button btnFiles; + private Group grpDeepL; private Group grpUpdates; private CardView cardDebug; @@ -142,7 +145,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc private final static String[] RESET_OPTIONS = new String[]{ "shortcuts", "fts", "classification", "class_min_probability", "class_min_difference", - "language", "watchdog", "updates", "weekly", + "language", "deepl_enabled", "watchdog", "updates", "weekly", "experiments", "wal", "query_threads", "crash_reports", "cleanup_attachments", "protocol", "debug", "log_level", "use_modseq", "perform_expunge", @@ -203,6 +206,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc tvFtsPro = view.findViewById(R.id.tvFtsPro); spLanguage = view.findViewById(R.id.spLanguage); ibResetLanguage = view.findViewById(R.id.ibResetLanguage); + swDeepL = view.findViewById(R.id.swDeepL); + ibDeepL = view.findViewById(R.id.ibDeepL); swWatchdog = view.findViewById(R.id.swWatchdog); swUpdates = view.findViewById(R.id.swUpdates); swCheckWeekly = view.findViewById(R.id.swWeekly); @@ -240,6 +245,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc btnCiphers = view.findViewById(R.id.btnCiphers); btnFiles = view.findViewById(R.id.btnFiles); + grpDeepL = view.findViewById(R.id.grpDeepL); grpUpdates = view.findViewById(R.id.grpUpdates); cardDebug = view.findViewById(R.id.cardDebug); @@ -415,6 +421,20 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc } }); + swDeepL.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { + prefs.edit().putBoolean("deepl_enabled", checked).apply(); + } + }); + + ibDeepL.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Helper.viewFAQ(v.getContext(), 167, true); + } + }); + swWatchdog.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { @@ -825,6 +845,12 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc } }); + grpDeepL.setVisibility(BuildConfig.PLAY_STORE_RELEASE ? View.GONE : View.VISIBLE); + + grpUpdates.setVisibility(!BuildConfig.DEBUG && + (Helper.isPlayStoreInstall() || !Helper.hasValidFingerprint(getContext())) + ? View.GONE : View.VISIBLE); + setLastCleanup(prefs.getLong("last_cleanup", -1)); swExactAlarms.setEnabled(AlarmManagerCompatEx.canScheduleExactAlarms(getContext())); @@ -977,13 +1003,11 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc if (selected >= 0) spLanguage.setSelection(selected); + swDeepL.setChecked(prefs.getBoolean("deepl_enabled", false)); swWatchdog.setChecked(prefs.getBoolean("watchdog", true)); swUpdates.setChecked(prefs.getBoolean("updates", true)); swCheckWeekly.setChecked(prefs.getBoolean("weekly", Helper.hasPlayStore(getContext()))); swCheckWeekly.setEnabled(swUpdates.isChecked()); - grpUpdates.setVisibility(!BuildConfig.DEBUG && - (Helper.isPlayStoreInstall() || !Helper.hasValidFingerprint(getContext())) - ? View.GONE : View.VISIBLE); swExperiments.setChecked(prefs.getBoolean("experiments", false)); swCrashReports.setChecked(prefs.getBoolean("crash_reports", false)); tvUuid.setText(prefs.getString("uuid", null)); diff --git a/app/src/main/res/layout/fragment_options_misc.xml b/app/src/main/res/layout/fragment_options_misc.xml index eeea2b0030..8f926ceb39 100644 --- a/app/src/main/res/layout/fragment_options_misc.xml +++ b/app/src/main/res/layout/fragment_options_misc.xml @@ -284,6 +284,28 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/spLanguage" /> + + + + + + Minimum class difference: %1$s %% Language System + DeepL integration Periodically check if FairEmail is still active Check for GitHub updates Check weekly instead of daily