diff options
author | Thialfihar <thi@thialfihar.org> | 2015-06-25 19:22:13 +0200 |
---|---|---|
committer | Thialfihar <thi@thialfihar.org> | 2015-07-21 20:49:08 +0200 |
commit | 4d412d53dc85d2f1d50f43b92a03c3e374872445 (patch) | |
tree | d1ebfb240fc48c5048b091817655e64250823919 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java | |
parent | e51eff40503a9715a98f7d1fb41c3a607b8f67d0 (diff) | |
download | open-keychain-4d412d53dc85d2f1d50f43b92a03c3e374872445.tar.gz open-keychain-4d412d53dc85d2f1d50f43b92a03c3e374872445.tar.bz2 open-keychain-4d412d53dc85d2f1d50f43b92a03c3e374872445.zip |
Automatically recreate activities on theme change
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java | 33 |
1 files changed, 33 insertions, 0 deletions
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 */ |