diff --git a/app/build.gradle b/app/build.gradle
index 5e1510020b..5d6dad8f46 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -146,6 +146,7 @@ android {
productFlavors {
github {
dimension "all"
+ buildConfigField "boolean", "TEST_RELEASE", "false"
buildConfigField "boolean", "BETA_RELEASE", "true"
buildConfigField "boolean", "PLAY_STORE_RELEASE", "false"
buildConfigField "boolean", "AMAZON_RELEASE", "false"
@@ -157,6 +158,7 @@ android {
}
fdroid {
dimension "all"
+ buildConfigField "boolean", "TEST_RELEASE", "false"
buildConfigField "boolean", "BETA_RELEASE", "true"
buildConfigField "boolean", "PLAY_STORE_RELEASE", "false"
buildConfigField "boolean", "AMAZON_RELEASE", "false"
@@ -169,6 +171,7 @@ android {
play {
dimension "all"
//minSdkVersion 23
+ buildConfigField "boolean", "TEST_RELEASE", "false"
buildConfigField "boolean", "BETA_RELEASE", "true"
buildConfigField "boolean", "PLAY_STORE_RELEASE", "true"
buildConfigField "boolean", "AMAZON_RELEASE", "false"
@@ -181,6 +184,7 @@ android {
amazon {
dimension "all"
//minSdkVersion 23
+ buildConfigField "boolean", "TEST_RELEASE", "false"
buildConfigField "boolean", "BETA_RELEASE", "true"
buildConfigField "boolean", "PLAY_STORE_RELEASE", "false"
buildConfigField "boolean", "AMAZON_RELEASE", "true"
diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
index 69ce30d8cb..c334aaf5de 100644
--- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
+++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
@@ -127,6 +127,9 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
private SwitchCompat swProtocol;
private SwitchCompat swLogInfo;
private SwitchCompat swDebug;
+ private SwitchCompat swTest1;
+ private SwitchCompat swTest2;
+ private SwitchCompat swTest3;
private Button btnRepair;
private SwitchCompat swAutostart;
@@ -170,6 +173,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
private TextView tvPermissions;
private Group grpUpdates;
+ private Group grpTest;
private CardView cardDebug;
private NumberFormat NF = NumberFormat.getNumberInstance();
@@ -182,7 +186,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
"language", "deepl_enabled", "watchdog",
"updates", "weekly", "show_changelog",
"experiments", "crash_reports", "cleanup_attachments",
- "protocol", "debug", "log_level",
+ "protocol", "debug", "log_level", "test1", "test2", "test3",
"query_threads", "wal", "checkpoints", "sqlite_cache",
"chunk_size", "webview_legacy",
"use_modseq", "perform_expunge", "uid_expunge",
@@ -266,6 +270,9 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
swProtocol = view.findViewById(R.id.swProtocol);
swLogInfo = view.findViewById(R.id.swLogInfo);
swDebug = view.findViewById(R.id.swDebug);
+ swTest1 = view.findViewById(R.id.swTest1);
+ swTest2 = view.findViewById(R.id.swTest2);
+ swTest3 = view.findViewById(R.id.swTest3);
btnRepair = view.findViewById(R.id.btnRepair);
swAutostart = view.findViewById(R.id.swAutostart);
@@ -309,6 +316,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
tvPermissions = view.findViewById(R.id.tvPermissions);
grpUpdates = view.findViewById(R.id.grpUpdates);
+ grpTest = view.findViewById(R.id.grpTest);
cardDebug = view.findViewById(R.id.cardDebug);
setOptions();
@@ -661,6 +669,27 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
}
});
+ swTest1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
+ prefs.edit().putBoolean("test1", checked).apply();
+ }
+ });
+
+ swTest2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
+ prefs.edit().putBoolean("test2", checked).apply();
+ }
+ });
+
+ swTest3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
+ prefs.edit().putBoolean("test3", checked).apply();
+ }
+ });
+
btnRepair.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -1175,6 +1204,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
grpUpdates.setVisibility(!BuildConfig.DEBUG &&
(Helper.isPlayStoreInstall() || !Helper.hasValidFingerprint(getContext()))
? View.GONE : View.VISIBLE);
+ grpTest.setVisibility(BuildConfig.TEST_RELEASE ? View.VISIBLE : View.GONE);
setLastCleanup(prefs.getLong("last_cleanup", -1));
@@ -1368,6 +1398,9 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
swProtocol.setChecked(prefs.getBoolean("protocol", false));
swLogInfo.setChecked(prefs.getInt("log_level", Log.getDefaultLogLevel()) <= android.util.Log.INFO);
swDebug.setChecked(prefs.getBoolean("debug", false));
+ swTest1.setChecked(prefs.getBoolean("test1", false));
+ swTest2.setChecked(prefs.getBoolean("test2", false));
+ swTest3.setChecked(prefs.getBoolean("test3", false));
swAutostart.setChecked(Helper.isComponentEnabled(getContext(), ReceiverAutoStart.class));
diff --git a/app/src/main/res/layout/fragment_options_misc.xml b/app/src/main/res/layout/fragment_options_misc.xml
index 48a914387d..ed86bde735 100644
--- a/app/src/main/res/layout/fragment_options_misc.xml
+++ b/app/src/main/res/layout/fragment_options_misc.xml
@@ -580,11 +580,50 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/swDebug" />
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index db46aa3a83..1dc1600d41 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -674,6 +674,9 @@
Protocol logging
Debug logging
Debug mode
+ Test #1
+ Test #2
+ Test #3
Repair
Autostart
ROOM query threads: %1$s