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 | |
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')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java | 33 | ||||
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/BaseActivity.java | 33 |
2 files changed, 62 insertions, 4 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 */ diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/BaseActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/BaseActivity.java index 82f62f933..6ba4b9e22 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/BaseActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/BaseActivity.java @@ -18,6 +18,7 @@ package org.sufficientlysecure.keychain.ui.base; import android.app.Activity; +import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; @@ -39,21 +40,45 @@ public abstract class BaseActivity extends AppCompatActivity { protected Toolbar mToolbar; protected View mStatusBar; private static Preferences sPreferences; + private String mCurrentTheme = null; @Override protected void onCreate(Bundle savedInstanceState) { sPreferences = Preferences.getPreferences(this); + + changeTheme(); + super.onCreate(savedInstanceState); + initLayout(); + initToolbar(); + } + + @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(sPreferences.getTheme())) { + if ("dark".equals(newTheme)) { themeId = R.style.DarkTheme; } ContextThemeWrapper w = new ContextThemeWrapper(this, themeId); getTheme().setTo(w.getTheme()); + mCurrentTheme = newTheme; - super.onCreate(savedInstanceState); - initLayout(); - initToolbar(); + return true; } protected void initLayout() { |