Add theme setting
This prepares that different themes can be added. Currently light and dark will just use the default OK theme.
This commit is contained in:
@@ -103,6 +103,7 @@ public final class Constants {
|
||||
public static final String PROXY_HOST = "proxyHost";
|
||||
public static final String PROXY_PORT = "proxyPort";
|
||||
public static final String PROXY_TYPE = "proxyType";
|
||||
public static final String THEME = "theme";
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -53,6 +53,7 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
|
||||
public static final String ACTION_PREFS_CLOUD = "org.sufficientlysecure.keychain.ui.PREFS_CLOUD";
|
||||
public static final String ACTION_PREFS_ADV = "org.sufficientlysecure.keychain.ui.PREFS_ADV";
|
||||
public static final String ACTION_PREFS_PROXY = "org.sufficientlysecure.keychain.ui.PREFS_PROXY";
|
||||
public static final String ACTION_PREFS_GUI = "org.sufficientlysecure.keychain.ui.PREFS_GUI";
|
||||
|
||||
public static final int REQUEST_CODE_KEYSERVER_PREF = 0x00007005;
|
||||
|
||||
@@ -106,6 +107,10 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
|
||||
initializeUseNumKeypadForYubiKeyPin(
|
||||
(CheckBoxPreference) findPreference(Constants.Pref.USE_NUMKEYPAD_FOR_YUBIKEY_PIN));
|
||||
|
||||
} else if (action != null && action.equals(ACTION_PREFS_GUI)) {
|
||||
addPreferencesFromResource(R.xml.gui_preferences);
|
||||
|
||||
initializeTheme((ListPreference) findPreference(Constants.Pref.THEME));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -425,14 +430,30 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
|
||||
mUseTor.setEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.KITKAT)
|
||||
/**
|
||||
* This fragment shows gui preferences.
|
||||
*/
|
||||
public static class GuiPrefsFragment extends PreferenceFragment {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
|
||||
// Load the preferences from an XML resource
|
||||
addPreferencesFromResource(R.xml.gui_preferences);
|
||||
|
||||
initializeTheme((ListPreference) findPreference(Constants.Pref.THEME));
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean isValidFragment(String fragmentName) {
|
||||
return AdvancedPrefsFragment.class.getName().equals(fragmentName)
|
||||
|| CloudSearchPrefsFragment.class.getName().equals(fragmentName)
|
||||
|| ProxyPrefsFragment.class.getName().equals(fragmentName)
|
||||
|| GuiPrefsFragment.class.getName().equals(fragmentName)
|
||||
|| super.isValidFragment(fragmentName);
|
||||
}
|
||||
|
||||
@@ -461,6 +482,19 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
|
||||
});
|
||||
}
|
||||
|
||||
private static void initializeTheme(final ListPreference mTheme) {
|
||||
mTheme.setValue(sPreferences.getTheme());
|
||||
mTheme.setSummary(mTheme.getEntry());
|
||||
mTheme.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
mTheme.setValue((String) newValue);
|
||||
mTheme.setSummary(mTheme.getEntry());
|
||||
sPreferences.setTheme((String) newValue);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static void initializeSearchKeyserver(final CheckBoxPreference mSearchKeyserver) {
|
||||
Preferences.CloudSearchPrefs prefs = sPreferences.getCloudSearchPrefs();
|
||||
mSearchKeyserver.setChecked(prefs.searchKeyserver);
|
||||
|
||||
@@ -22,6 +22,7 @@ import android.os.Bundle;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.ContextThemeWrapper;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -29,6 +30,7 @@ import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.sufficientlysecure.keychain.R;
|
||||
import org.sufficientlysecure.keychain.util.Preferences;
|
||||
|
||||
/**
|
||||
* Setups Toolbar
|
||||
@@ -36,9 +38,19 @@ import org.sufficientlysecure.keychain.R;
|
||||
public abstract class BaseActivity extends AppCompatActivity {
|
||||
protected Toolbar mToolbar;
|
||||
protected View mStatusBar;
|
||||
private static Preferences sPreferences;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
sPreferences = Preferences.getPreferences(this);
|
||||
int themeId = R.style.LightTheme;
|
||||
if ("dark".equals(sPreferences.getTheme())) {
|
||||
themeId = R.style.DarkTheme;
|
||||
}
|
||||
|
||||
ContextThemeWrapper w = new ContextThemeWrapper(this, themeId);
|
||||
getTheme().setTo(w.getTheme());
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
initLayout();
|
||||
initToolbar();
|
||||
|
||||
@@ -220,6 +220,15 @@ public class Preferences {
|
||||
return mSharedPreferences.getBoolean(Pref.TEXT_USE_COMPRESSION, true);
|
||||
}
|
||||
|
||||
public String getTheme() {
|
||||
return mSharedPreferences.getString(Pref.THEME, "light");
|
||||
}
|
||||
|
||||
public void setTheme(String value) {
|
||||
SharedPreferences.Editor editor = mSharedPreferences.edit();
|
||||
editor.putString(Constants.Pref.THEME, value);
|
||||
editor.commit();
|
||||
}
|
||||
|
||||
public void setUseArmor(boolean useArmor) {
|
||||
SharedPreferences.Editor editor = mSharedPreferences.edit();
|
||||
|
||||
Reference in New Issue
Block a user