From 4d412d53dc85d2f1d50f43b92a03c3e374872445 Mon Sep 17 00:00:00 2001 From: Thialfihar Date: Thu, 25 Jun 2015 19:22:13 +0200 Subject: Automatically recreate activities on theme change --- .../keychain/ui/SettingsActivity.java | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java index 27ce3ac56..e7c5f51ab 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java @@ -33,6 +33,7 @@ import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; import android.support.v7.widget.Toolbar; import android.text.TextUtils; +import android.view.ContextThemeWrapper; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; @@ -59,10 +60,13 @@ public class SettingsActivity extends AppCompatPreferenceActivity { private PreferenceScreen mKeyServerPreference = null; private static Preferences sPreferences; + private String mCurrentTheme = null; @Override protected void onCreate(Bundle savedInstanceState) { sPreferences = Preferences.getPreferences(this); + + changeTheme(); super.onCreate(savedInstanceState); setupToolbar(); @@ -114,6 +118,35 @@ public class SettingsActivity extends AppCompatPreferenceActivity { } } + @Override + protected void onResume() { + super.onResume(); + + if (changeTheme()) { + Intent intent = getIntent(); + finish(); + startActivity(intent); + } + } + + protected boolean changeTheme() { + String newTheme = sPreferences.getTheme(); + if (mCurrentTheme != null && mCurrentTheme.equals(newTheme)) { + return false; + } + + int themeId = R.style.LightTheme; + if ("dark".equals(newTheme)) { + themeId = R.style.DarkTheme; + } + + ContextThemeWrapper w = new ContextThemeWrapper(this, themeId); + getTheme().setTo(w.getTheme()); + mCurrentTheme = newTheme; + + return true; + } + /** * Hack to get Toolbar in PreferenceActivity. See http://stackoverflow.com/a/26614696 */ -- cgit v1.2.3