From ec7a3a704701537eda24afe16081b18b34497928 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Thu, 27 Aug 2015 12:24:37 +0200 Subject: Experimental feature setting --- .../org/sufficientlysecure/keychain/Constants.java | 2 ++ .../keychain/ui/SettingsActivity.java | 42 ++++++++++++++++++---- .../keychain/util/Preferences.java | 14 +++++++- OpenKeychain/src/main/res/values/strings.xml | 4 +++ OpenKeychain/src/main/res/xml/adv_preferences.xml | 23 ------------ .../src/main/res/xml/passphrase_preferences.xml | 23 ++++++++++++ .../src/main/res/xml/preference_headers.xml | 7 ++-- 7 files changed, 83 insertions(+), 32 deletions(-) delete mode 100644 OpenKeychain/src/main/res/xml/adv_preferences.xml create mode 100644 OpenKeychain/src/main/res/xml/passphrase_preferences.xml (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java index b6832a9c7..17d550ce5 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java @@ -108,6 +108,8 @@ public final class Constants { // keyserver sync settings public static final String SYNC_CONTACTS = "syncContacts"; public static final String SYNC_KEYSERVER = "syncKeyserver"; + // other settings + public static final String ENABLE_EXPERIMENTAL_FEATURES = "enableExperimentalFeatures"; public static final class Theme { public static final String LIGHT = "light"; 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 842059da5..63be1e20f 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java @@ -32,6 +32,7 @@ import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; +import android.preference.SwitchPreference; import android.provider.ContactsContract; import android.support.v7.widget.Toolbar; import android.text.TextUtils; @@ -100,7 +101,7 @@ public class SettingsActivity extends AppCompatPreferenceActivity { ); } else if (action != null && action.equals(ACTION_PREFS_ADV)) { - addPreferencesFromResource(R.xml.adv_preferences); + addPreferencesFromResource(R.xml.passphrase_preferences); initializePassphraseCacheSubs( (CheckBoxPreference) findPreference(Constants.Pref.PASSPHRASE_CACHE_SUBS)); @@ -221,14 +222,14 @@ public class SettingsActivity extends AppCompatPreferenceActivity { /** * This fragment shows the PIN/password preferences */ - public static class AdvancedPrefsFragment extends PreferenceFragment { + public static class PassphrasePrefsFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Load the preferences from an XML resource - addPreferencesFromResource(R.xml.adv_preferences); + addPreferencesFromResource(R.xml.passphrase_preferences); initializePassphraseCacheSubs( (CheckBoxPreference) findPreference(Constants.Pref.PASSPHRASE_CACHE_SUBS)); @@ -472,7 +473,7 @@ public class SettingsActivity extends AppCompatPreferenceActivity { /** * This fragment shows the keyserver/contacts sync preferences */ - public static class SyncSettingsFragment extends PreferenceFragment { + public static class SyncPrefsFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { @@ -551,12 +552,30 @@ public class SettingsActivity extends AppCompatPreferenceActivity { } } + /** + * This fragment shows other preferences + */ + public static class OtherPrefsFragment extends PreferenceFragment { + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Load the preferences from an XML resource + addPreferencesFromResource(R.xml.other_preferences); + + initializeEnableExperimentalFeatures( + (SwitchPreference) findPreference(Constants.Pref.ENABLE_EXPERIMENTAL_FEATURES)); + } + } + protected boolean isValidFragment(String fragmentName) { - return AdvancedPrefsFragment.class.getName().equals(fragmentName) + return PassphrasePrefsFragment.class.getName().equals(fragmentName) || CloudSearchPrefsFragment.class.getName().equals(fragmentName) || ProxyPrefsFragment.class.getName().equals(fragmentName) || GuiPrefsFragment.class.getName().equals(fragmentName) - || SyncSettingsFragment.class.getName().equals(fragmentName) + || SyncPrefsFragment.class.getName().equals(fragmentName) + || OtherPrefsFragment.class.getName().equals(fragmentName) || super.isValidFragment(fragmentName); } @@ -656,4 +675,15 @@ public class SettingsActivity extends AppCompatPreferenceActivity { } }); } + + private static void initializeEnableExperimentalFeatures(final SwitchPreference mEnableExperimentalFeatures) { + mEnableExperimentalFeatures.setChecked(sPreferences.getEnableExperimentalFeatures()); + mEnableExperimentalFeatures.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + public boolean onPreferenceChange(Preference preference, Object newValue) { + mEnableExperimentalFeatures.setChecked((Boolean) newValue); + sPreferences.setEnableExperimentalFeatures((Boolean) newValue); + return false; + } + }); + } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java index 60d0e6ac1..75f83d1f6 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java @@ -335,7 +335,7 @@ public class Preferences { } } - // proxy preference functions ends here + // cloud prefs public CloudSearchPrefs getCloudSearchPrefs() { return new CloudSearchPrefs(mSharedPreferences.getBoolean(Pref.SEARCH_KEYSERVER, true), @@ -360,6 +360,18 @@ public class Preferences { } } + // other prefs + + public void setEnableExperimentalFeatures(boolean enableExperimentalFeatures) { + SharedPreferences.Editor editor = mSharedPreferences.edit(); + editor.putBoolean(Pref.ENABLE_EXPERIMENTAL_FEATURES, enableExperimentalFeatures); + editor.commit(); + } + + public boolean getEnableExperimentalFeatures() { + return mSharedPreferences.getBoolean(Pref.ENABLE_EXPERIMENTAL_FEATURES, false); + } + public void upgradePreferences(Context context) { if (mSharedPreferences.getInt(Constants.Pref.PREF_DEFAULT_VERSION, 0) != Constants.Defaults.PREF_VERSION) { diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index d44c9a5a0..ded2da6a2 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -52,6 +52,7 @@ "Proxy Settings" "Interface" "Sync Settings" + "Other Settings" "Confirm" "Actions" "Key" @@ -185,6 +186,9 @@ "Automatically update keys" + "Enable experimental features" + "Enable experimental features, mostly results of security/UX research. Don't rely on their security!" + "Enable Tor" "Requires Orbot to be installed" diff --git a/OpenKeychain/src/main/res/xml/adv_preferences.xml b/OpenKeychain/src/main/res/xml/adv_preferences.xml deleted file mode 100644 index 7dd649e5d..000000000 --- a/OpenKeychain/src/main/res/xml/adv_preferences.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - diff --git a/OpenKeychain/src/main/res/xml/passphrase_preferences.xml b/OpenKeychain/src/main/res/xml/passphrase_preferences.xml new file mode 100644 index 000000000..7dd649e5d --- /dev/null +++ b/OpenKeychain/src/main/res/xml/passphrase_preferences.xml @@ -0,0 +1,23 @@ + + + + + + diff --git a/OpenKeychain/src/main/res/xml/preference_headers.xml b/OpenKeychain/src/main/res/xml/preference_headers.xml index 606196c1e..36fc9a7ae 100644 --- a/OpenKeychain/src/main/res/xml/preference_headers.xml +++ b/OpenKeychain/src/main/res/xml/preference_headers.xml @@ -6,12 +6,15 @@ android:fragment="org.sufficientlysecure.keychain.ui.SettingsActivity$CloudSearchPrefsFragment" android:title="@string/section_cloud_search" />
+
-- cgit v1.2.3