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