aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java
diff options
context:
space:
mode:
authorThialfihar <thi@thialfihar.org>2015-06-25 19:22:13 +0200
committerThialfihar <thi@thialfihar.org>2015-07-21 20:49:08 +0200
commit4d412d53dc85d2f1d50f43b92a03c3e374872445 (patch)
treed1ebfb240fc48c5048b091817655e64250823919 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java
parente51eff40503a9715a98f7d1fb41c3a607b8f67d0 (diff)
downloadopen-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.java33
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
*/