Fix theme bugs

This commit is contained in:
Dominik Schürmann
2015-08-12 20:25:58 +02:00
parent 483d5ab495
commit d14e0b2ed3
7 changed files with 47 additions and 14 deletions

View File

@@ -56,9 +56,6 @@ public class HelpAboutFragment extends Fragment {
Log.e(Constants.TAG, "IOException", e); Log.e(Constants.TAG, "IOException", e);
} }
// no flickering when clicking textview for Android < 4
aboutTextView.setTextColor(getResources().getColor(android.R.color.black));
return view; return view;
} }

View File

@@ -73,9 +73,6 @@ public class HelpMarkdownFragment extends Fragment {
Log.e(Constants.TAG, "IOException", e); Log.e(Constants.TAG, "IOException", e);
} }
// no flickering when clicking textview for Android < 4
text.setTextColor(getResources().getColor(android.R.color.black));
return scroller; return scroller;
} }
} }

View File

@@ -26,6 +26,7 @@ import org.sufficientlysecure.keychain.service.PassphraseCacheService;
import org.sufficientlysecure.keychain.service.input.CryptoInputParcel; import org.sufficientlysecure.keychain.service.input.CryptoInputParcel;
import org.sufficientlysecure.keychain.service.input.RequiredInputParcel; import org.sufficientlysecure.keychain.service.input.RequiredInputParcel;
import org.sufficientlysecure.keychain.ui.base.BaseNfcActivity; import org.sufficientlysecure.keychain.ui.base.BaseNfcActivity;
import org.sufficientlysecure.keychain.ui.util.ThemeChanger;
import org.sufficientlysecure.keychain.util.Log; import org.sufficientlysecure.keychain.util.Log;
import org.sufficientlysecure.keychain.util.Passphrase; import org.sufficientlysecure.keychain.util.Passphrase;
import org.sufficientlysecure.keychain.util.Preferences; import org.sufficientlysecure.keychain.util.Preferences;
@@ -64,6 +65,14 @@ public class NfcOperationActivity extends BaseNfcActivity {
private CryptoInputParcel mInputParcel; private CryptoInputParcel mInputParcel;
@Override
protected void initTheme() {
mThemeChanger = new ThemeChanger(this);
mThemeChanger.setThemes(R.style.Theme_Keychain_Light_Dialog_SecurityToken,
R.style.Theme_Keychain_Dark_Dialog_SecurityToken);
mThemeChanger.changeTheme();
}
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);

View File

@@ -65,8 +65,8 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
sPreferences = Preferences.getPreferences(this); sPreferences = Preferences.getPreferences(this);
mThemeChanger = new ThemeChanger(this); mThemeChanger = new ThemeChanger(this);
mThemeChanger.setThemes(R.style.Theme_Keychain_Light, R.style.Theme_Keychain_Dark);
mThemeChanger.changeTheme(); mThemeChanger.changeTheme();
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@@ -126,7 +126,9 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
if (mThemeChanger.changeTheme()) { if (mThemeChanger.changeTheme()) {
Intent intent = getIntent(); Intent intent = getIntent();
finish(); finish();
overridePendingTransition(0, 0);
startActivity(intent); startActivity(intent);
overridePendingTransition(0, 0);
} }
} }
@@ -506,6 +508,9 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
mTheme.setValue((String) newValue); mTheme.setValue((String) newValue);
mTheme.setSummary(mTheme.getEntry()); mTheme.setSummary(mTheme.getEntry());
sPreferences.setTheme((String) newValue); sPreferences.setTheme((String) newValue);
((SettingsActivity) mTheme.getContext()).recreate();
return false; return false;
} }
}); });

View File

@@ -42,8 +42,7 @@ public abstract class BaseActivity extends AppCompatActivity {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
mThemeChanger = new ThemeChanger(this); initTheme();
mThemeChanger.changeTheme();
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
initLayout(); initLayout();
initToolbar(); initToolbar();
@@ -56,7 +55,9 @@ public abstract class BaseActivity extends AppCompatActivity {
if (mThemeChanger.changeTheme()) { if (mThemeChanger.changeTheme()) {
Intent intent = getIntent(); Intent intent = getIntent();
finish(); finish();
overridePendingTransition(0, 0);
startActivity(intent); startActivity(intent);
overridePendingTransition(0, 0);
} }
} }
@@ -73,6 +74,15 @@ public abstract class BaseActivity extends AppCompatActivity {
mStatusBar = findViewById(R.id.status_bar); mStatusBar = findViewById(R.id.status_bar);
} }
/**
* Override if you want a different theme!
*/
protected void initTheme() {
mThemeChanger = new ThemeChanger(this);
mThemeChanger.setThemes(R.style.Theme_Keychain_Light, R.style.Theme_Keychain_Dark);
mThemeChanger.changeTheme();
}
protected void setActionBarIcon(int iconRes) { protected void setActionBarIcon(int iconRes) {
mToolbar.setNavigationIcon(iconRes); mToolbar.setNavigationIcon(iconRes);
} }

View File

@@ -17,6 +17,7 @@
package org.sufficientlysecure.keychain.ui.util; package org.sufficientlysecure.keychain.ui.util;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.view.ContextThemeWrapper; import android.view.ContextThemeWrapper;
@@ -25,10 +26,13 @@ import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.util.Preferences; import org.sufficientlysecure.keychain.util.Preferences;
public class ThemeChanger { public class ThemeChanger {
private Context mContext; private Activity mContext;
private Preferences mPreferences; private Preferences mPreferences;
private String mCurrentTheme = null; private String mCurrentTheme = null;
private int mLightResId;
private int mDarkResId;
static public ContextThemeWrapper getDialogThemeWrapper(Context context) { static public ContextThemeWrapper getDialogThemeWrapper(Context context) {
Preferences preferences = Preferences.getPreferences(context); Preferences preferences = Preferences.getPreferences(context);
@@ -42,7 +46,12 @@ public class ThemeChanger {
} }
} }
public ThemeChanger(Context context) { public void setThemes(int lightResId, int darkResId) {
mLightResId = lightResId;
mDarkResId = darkResId;
}
public ThemeChanger(Activity context) {
mContext = context; mContext = context;
mPreferences = Preferences.getPreferences(mContext); mPreferences = Preferences.getPreferences(mContext);
} }
@@ -59,9 +68,9 @@ public class ThemeChanger {
return false; return false;
} }
int themeId = R.style.Theme_Keychain_Light; int themeId = mLightResId;
if (Constants.Pref.Theme.DARK.equals(newTheme)) { if (Constants.Pref.Theme.DARK.equals(newTheme)) {
themeId = R.style.Theme_Keychain_Dark; themeId = mDarkResId;
} }
ContextThemeWrapper w = new ContextThemeWrapper(mContext, themeId); ContextThemeWrapper w = new ContextThemeWrapper(mContext, themeId);
@@ -70,4 +79,5 @@ public class ThemeChanger {
return true; return true;
} }
} }

View File

@@ -115,7 +115,7 @@
<item name="colorAccent">#7bad45</item> <item name="colorAccent">#7bad45</item>
</style> </style>
<style name="Theme.Keychain.Dark.Dialog" parent="Base.Theme.AppCompat.Light.Dialog.Alert"> <style name="Theme.Keychain.Dark.Dialog" parent="Base.Theme.AppCompat.Dialog.Alert">
<item name="colorAccent">#268bd2</item> <item name="colorAccent">#268bd2</item>
</style> </style>
@@ -123,4 +123,9 @@
<item name="windowActionBar">false</item> <item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item> <item name="windowNoTitle">true</item>
</style> </style>
<style name="Theme.Keychain.Dark.Dialog.SecurityToken" parent="Theme.AppCompat.Dialog.MinWidth">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
</resources> </resources>