diff --git a/app/src/main/java/eu/faircode/email/ActivityBase.java b/app/src/main/java/eu/faircode/email/ActivityBase.java
index 5daa27bc4d..871156942a 100644
--- a/app/src/main/java/eu/faircode/email/ActivityBase.java
+++ b/app/src/main/java/eu/faircode/email/ActivityBase.java
@@ -203,6 +203,13 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc
checkAuthentication();
+ boolean navbar_colorize = prefs.getBoolean("navbar_colorize", false);
+ if (navbar_colorize) {
+ Window window = getWindow();
+ if (window != null)
+ window.setNavigationBarColor(Helper.resolveColor(this, R.attr.colorPrimaryDark));
+ }
+
super.onCreate(savedInstanceState);
}
diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java b/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java
index 853147caa6..9daa302357 100644
--- a/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java
+++ b/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java
@@ -25,6 +25,7 @@ import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.graphics.Bitmap;
+import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
@@ -33,6 +34,7 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.view.Window;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.CompoundButton;
@@ -48,6 +50,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.SwitchCompat;
+import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.Lifecycle;
import androidx.preference.PreferenceManager;
@@ -100,6 +103,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
private SwitchCompat swImagesInline;
private SwitchCompat swSeekbar;
private SwitchCompat swActionbar;
+ private SwitchCompat swNavBarColorize;
private final static String[] RESET_OPTIONS = new String[]{
"theme", "landscape", "landscape3", "startup", "cards", "indentation", "date", "threading", "highlight_unread", "color_stripe",
@@ -108,7 +112,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
"subject_top", "font_size_sender", "font_size_subject", "subject_italic", "subject_ellipsize", "keywords_header",
"flags", "flags_background", "preview", "preview_italic", "preview_lines", "addresses", "attachments_alt",
"contrast", "monospaced", "text_color", "text_size",
- "inline_images", "collapse_quotes", "seekbar", "actionbar",
+ "inline_images", "collapse_quotes", "seekbar", "actionbar", "navbar_colorize"
};
@Override
@@ -168,6 +172,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
swImagesInline = view.findViewById(R.id.swImagesInline);
swSeekbar = view.findViewById(R.id.swSeekbar);
swActionbar = view.findViewById(R.id.swActionbar);
+ swNavBarColorize = view.findViewById(R.id.swNavBarColorize);
setOptions();
@@ -566,6 +571,15 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
}
});
+ swNavBarColorize.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
+ prefs.edit().putBoolean("navbar_colorize", checked).apply();
+ setNavigationBarColor(
+ checked ? Helper.resolveColor(getContext(), R.attr.colorPrimaryDark) : Color.BLACK);
+ }
+ });
+
PreferenceManager.getDefaultSharedPreferences(getContext()).registerOnSharedPreferenceChangeListener(this);
return view;
@@ -606,6 +620,9 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
for (String option : RESET_OPTIONS)
editor.remove(option);
editor.apply();
+
+ setNavigationBarColor(Color.BLACK);
+
ToastEx.makeText(getContext(), R.string.title_setup_done, Toast.LENGTH_LONG).show();
}
@@ -700,10 +717,21 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
swImagesInline.setChecked(prefs.getBoolean("inline_images", false));
swSeekbar.setChecked(prefs.getBoolean("seekbar", false));
swActionbar.setChecked(prefs.getBoolean("actionbar", true));
+ swNavBarColorize.setChecked(prefs.getBoolean("navbar_colorize", false));
updateColor();
}
+ private void setNavigationBarColor(int color) {
+ FragmentActivity activity = getActivity();
+ if (activity == null)
+ return;
+ Window window = activity.getWindow();
+ if (window == null)
+ return;
+ window.setNavigationBarColor(color);
+ }
+
private void updateColor() {
Context context = getContext();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
diff --git a/app/src/main/res/layout/fragment_options_display.xml b/app/src/main/res/layout/fragment_options_display.xml
index 1c99ee0d44..855dd26f6d 100644
--- a/app/src/main/res/layout/fragment_options_display.xml
+++ b/app/src/main/res/layout/fragment_options_display.xml
@@ -734,5 +734,16 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/swSeekbar"
app:switchPadding="12dp" />
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5245c96308..70436780c7 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -334,6 +334,7 @@
Automatically show inline images
Show relative conversation position with a dot
Show conversation action bar
+ Colorize the Android navigation bar
Double \'back\' to exit
Pull down to refresh