diff --git a/app/src/main/java/eu/faircode/email/ActivitySetup.java b/app/src/main/java/eu/faircode/email/ActivitySetup.java
index 31bdb81f31..d477d090a8 100644
--- a/app/src/main/java/eu/faircode/email/ActivitySetup.java
+++ b/app/src/main/java/eu/faircode/email/ActivitySetup.java
@@ -32,6 +32,7 @@ import android.content.res.Configuration;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
+import android.provider.Settings;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.MenuItem;
@@ -131,12 +132,23 @@ public class ActivitySetup extends ActivityBilling implements FragmentManager.On
case R.string.title_setup_help:
onMenuHelp();
break;
+ case R.string.title_setup_notifications:
+ onManageNotifications();
+ break;
case R.string.title_setup_export:
onMenuExport();
break;
case R.string.title_setup_import:
onMenuImport();
break;
+ case R.string.title_setup_light_theme:
+ case R.string.title_setup_dark_theme:
+ case R.string.title_setup_black_theme:
+ onMenuTheme(item.getId());
+ break;
+ case R.string.title_setup_advanced:
+ onMenuOptions();
+ break;
case R.string.menu_legend:
onMenuLegend();
break;
@@ -159,15 +171,29 @@ public class ActivitySetup extends ActivityBilling implements FragmentManager.On
DrawerAdapter drawerArray = new DrawerAdapter(this);
if (getIntentHelp().resolveActivity(pm) != null)
- drawerArray.add(new DrawerItem(this, R.layout.item_drawer, R.drawable.baseline_settings_applications_24, R.string.title_setup_help));
+ drawerArray.add(new DrawerItem(this, R.layout.item_drawer, R.drawable.baseline_live_help_24, R.string.title_setup_help));
drawerArray.add(new DrawerItem(R.layout.item_drawer_separator));
+ if (getIntentNotifications(this).resolveActivity(pm) != null)
+ drawerArray.add(new DrawerItem(this, R.layout.item_drawer, R.drawable.baseline_notifications_24, R.string.title_setup_notifications));
+
if (getIntentExport().resolveActivity(pm) != null)
drawerArray.add(new DrawerItem(this, R.layout.item_drawer, R.drawable.baseline_archive_24, R.string.title_setup_export));
if (getIntentImport().resolveActivity(pm) != null)
drawerArray.add(new DrawerItem(this, R.layout.item_drawer, R.drawable.baseline_unarchive_24, R.string.title_setup_import));
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
+ String theme = prefs.getString("theme", "light");
+ if ("dark".equals(theme))
+ drawerArray.add(new DrawerItem(this, R.layout.item_drawer, R.drawable.baseline_palette_24, R.string.title_setup_black_theme));
+ else if ("black".equals(theme))
+ drawerArray.add(new DrawerItem(this, R.layout.item_drawer, R.drawable.baseline_palette_24, R.string.title_setup_light_theme));
+ else
+ drawerArray.add(new DrawerItem(this, R.layout.item_drawer, R.drawable.baseline_palette_24, R.string.title_setup_dark_theme));
+
+ drawerArray.add(new DrawerItem(this, R.layout.item_drawer, R.drawable.baseline_settings_applications_24, R.string.title_setup_advanced));
+
drawerArray.add(new DrawerItem(R.layout.item_drawer_separator));
drawerArray.add(new DrawerItem(this, R.layout.item_drawer, R.drawable.baseline_help_24, R.string.menu_legend));
@@ -311,6 +337,10 @@ public class ActivitySetup extends ActivityBilling implements FragmentManager.On
startActivity(getIntentHelp());
}
+ private void onManageNotifications() {
+ startActivity(getIntentNotifications(this));
+ }
+
private void onMenuExport() {
if (Helper.isPro(this))
try {
@@ -333,6 +363,33 @@ public class ActivitySetup extends ActivityBilling implements FragmentManager.On
}
}
+ private void onMenuTheme(int id) {
+ if (Helper.isPro(this)) {
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
+ switch (id) {
+ case R.string.title_setup_light_theme:
+ prefs.edit().putString("theme", "light").apply();
+ break;
+ case R.string.title_setup_dark_theme:
+ prefs.edit().putString("theme", "dark").apply();
+ break;
+ case R.string.title_setup_black_theme:
+ prefs.edit().putString("theme", "black").apply();
+ break;
+ }
+ } else {
+ FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
+ fragmentTransaction.replace(R.id.content_frame, new FragmentPro()).addToBackStack("pro");
+ fragmentTransaction.commit();
+ }
+ }
+
+ private void onMenuOptions() {
+ FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
+ fragmentTransaction.replace(R.id.content_frame, new FragmentOptions()).addToBackStack("options");
+ fragmentTransaction.commit();
+ }
+
private void onMenuLegend() {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.content_frame, new FragmentLegend()).addToBackStack("legend");
@@ -359,6 +416,13 @@ public class ActivitySetup extends ActivityBilling implements FragmentManager.On
return intent;
}
+ private static Intent getIntentNotifications(Context context) {
+ return new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
+ .putExtra("app_package", context.getPackageName())
+ .putExtra("app_uid", context.getApplicationInfo().uid)
+ .putExtra(Settings.EXTRA_APP_PACKAGE, context.getPackageName());
+ }
+
private static Intent getIntentExport() {
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
@@ -578,7 +642,7 @@ public class ActivitySetup extends ActivityBilling implements FragmentManager.On
for (int s = 0; s < jsettings.length(); s++) {
JSONObject jsetting = (JSONObject) jsettings.get(s);
String key = jsetting.getString("key");
- if (!"pro".equals(key)) {
+ if (!"pro".equals(key) && !"theme".equals(key)) {
Object value = jsetting.get("value");
if (value instanceof Boolean)
editor.putBoolean(key, (Boolean) value);
diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java
index 7bc412003c..18c2f60717 100644
--- a/app/src/main/java/eu/faircode/email/FragmentSetup.java
+++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java
@@ -25,7 +25,6 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
-import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.net.ConnectivityManager;
@@ -33,16 +32,12 @@ import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.PowerManager;
-import android.preference.PreferenceManager;
import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
import android.widget.TextView;
-import android.widget.ToggleButton;
import java.util.List;
@@ -73,13 +68,6 @@ public class FragmentSetup extends FragmentEx {
private Button btnData;
- private Button btnNotifications;
-
- private ToggleButton tbDarkTheme;
- private CheckBox cbBlackTheme;
-
- private Button btnOptions;
-
private Drawable check;
private static final String[] permissions = new String[]{
@@ -111,14 +99,8 @@ public class FragmentSetup extends FragmentEx {
btnDoze = view.findViewById(R.id.btnDoze);
tvDozeDone = view.findViewById(R.id.tvDozeDone);
- btnNotifications = view.findViewById(R.id.btnNotifications);
-
btnData = view.findViewById(R.id.btnData);
- tbDarkTheme = view.findViewById(R.id.tbDarkTheme);
- cbBlackTheme = view.findViewById(R.id.cbBlackTheme);
- btnOptions = view.findViewById(R.id.btnOptions);
-
// Wire controls
btnQuick.setOnClickListener(new View.OnClickListener() {
@@ -189,61 +171,6 @@ public class FragmentSetup extends FragmentEx {
}
});
- PackageManager pm = getContext().getPackageManager();
- btnNotifications.setVisibility(getIntentNotifications(getContext()).resolveActivity(pm) == null ? View.GONE : View.VISIBLE);
- btnNotifications.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- startActivity(getIntentNotifications(getContext()));
- }
- });
-
- final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
-
- String theme = prefs.getString("theme", "light");
- boolean light = "light".equals(theme);
- tbDarkTheme.setTag(!light);
- tbDarkTheme.setChecked(!light);
- tbDarkTheme.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton button, boolean checked) {
- if (Helper.isPro(getContext())) {
- if (checked != (Boolean) button.getTag()) {
- button.setTag(checked);
- tbDarkTheme.setChecked(checked);
- prefs.edit().putString("theme", checked ? "dark" : "light").apply();
- }
- } else {
- prefs.edit().remove("theme").apply();
- if (checked) {
- tbDarkTheme.setChecked(false);
- FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
- fragmentTransaction.replace(R.id.content_frame, new FragmentPro()).addToBackStack("pro");
- fragmentTransaction.commit();
- }
- }
- cbBlackTheme.setVisibility(tbDarkTheme.isChecked() ? View.VISIBLE : View.GONE);
- }
- });
-
- cbBlackTheme.setChecked("black".equals(theme));
- cbBlackTheme.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean checked) {
- prefs.edit().putString("theme", checked ? "black" : "dark").apply();
- }
- });
- cbBlackTheme.setVisibility(tbDarkTheme.isChecked() ? View.VISIBLE : View.GONE);
-
- btnOptions.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
- fragmentTransaction.replace(R.id.content_frame, new FragmentOptions()).addToBackStack("options");
- fragmentTransaction.commit();
- }
- });
-
// Initialize
tvAccountDone.setText(null);
tvAccountDone.setCompoundDrawables(null, null, null, null);
@@ -423,11 +350,4 @@ public class FragmentSetup extends FragmentEx {
}
}.execute(FragmentSetup.this, new Bundle(), "setup:sync");
}
-
- private static Intent getIntentNotifications(Context context) {
- return new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
- .putExtra("app_package", context.getPackageName())
- .putExtra("app_uid", context.getApplicationInfo().uid)
- .putExtra(Settings.EXTRA_APP_PACKAGE, context.getPackageName());
- }
}
diff --git a/app/src/main/res/drawable/baseline_live_help_24.xml b/app/src/main/res/drawable/baseline_live_help_24.xml
new file mode 100644
index 0000000000..d074524486
--- /dev/null
+++ b/app/src/main/res/drawable/baseline_live_help_24.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/baseline_palette_24.xml b/app/src/main/res/drawable/baseline_palette_24.xml
new file mode 100644
index 0000000000..230f75166b
--- /dev/null
+++ b/app/src/main/res/drawable/baseline_palette_24.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/layout/fragment_setup.xml b/app/src/main/res/layout/fragment_setup.xml
index 7b63ce8336..4f5e430db8 100644
--- a/app/src/main/res/layout/fragment_setup.xml
+++ b/app/src/main/res/layout/fragment_setup.xml
@@ -241,58 +241,5 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvDozeDone" />
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_drawer_separator.xml b/app/src/main/res/layout/item_drawer_separator.xml
index 9f126e812c..60981e1c8a 100644
--- a/app/src/main/res/layout/item_drawer_separator.xml
+++ b/app/src/main/res/layout/item_drawer_separator.xml
@@ -3,8 +3,8 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingTop="12dp"
- android:paddingBottom="12dp">
+ android:paddingTop="6dp"
+ android:paddingBottom="6dp">
Done
Light theme
Dark theme
- Black background
+ Black theme
Advanced options