aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org
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
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')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java33
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/BaseActivity.java33
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() {