aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2015-08-27 12:24:37 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2015-08-27 12:24:37 +0200
commitec7a3a704701537eda24afe16081b18b34497928 (patch)
tree1279cd5b61f0bb19a3473c5a4c116c0163b0ff15 /OpenKeychain/src/main
parentf92e5f663fd73c8a2b518d7aa6f24a298fe13761 (diff)
downloadopen-keychain-ec7a3a704701537eda24afe16081b18b34497928.tar.gz
open-keychain-ec7a3a704701537eda24afe16081b18b34497928.tar.bz2
open-keychain-ec7a3a704701537eda24afe16081b18b34497928.zip
Experimental feature setting
Diffstat (limited to 'OpenKeychain/src/main')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java42
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java14
-rw-r--r--OpenKeychain/src/main/res/values/strings.xml4
-rw-r--r--OpenKeychain/src/main/res/xml/passphrase_preferences.xml (renamed from OpenKeychain/src/main/res/xml/adv_preferences.xml)0
-rw-r--r--OpenKeychain/src/main/res/xml/preference_headers.xml7
6 files changed, 60 insertions, 9 deletions
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 @@
<string name="section_proxy_settings">"Proxy Settings"</string>
<string name="section_gui">"Interface"</string>
<string name="section_sync_settings">"Sync Settings"</string>
+ <string name="section_other_settings">"Other Settings"</string>
<string name="section_certify">"Confirm"</string>
<string name="section_actions">"Actions"</string>
<string name="section_share_key">"Key"</string>
@@ -185,6 +186,9 @@
<!-- label shown in Android settings under the OpenKeychain account -->
<string name="keyserver_sync_settings_title">"Automatically update keys"</string>
+ <string name="label_other_settings_experimental_title">"Enable experimental features"</string>
+ <string name="label_other_settings_experimental_summary">"Enable experimental features, mostly results of security/UX research. Don't rely on their security!"</string>
+
<!-- Proxy Preferences -->
<string name="pref_proxy_tor_title">"Enable Tor"</string>
<string name="pref_proxy_tor_summary">"Requires Orbot to be installed"</string>
diff --git a/OpenKeychain/src/main/res/xml/adv_preferences.xml b/OpenKeychain/src/main/res/xml/passphrase_preferences.xml
index 7dd649e5d..7dd649e5d 100644
--- a/OpenKeychain/src/main/res/xml/adv_preferences.xml
+++ b/OpenKeychain/src/main/res/xml/passphrase_preferences.xml
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" />
<header
- android:fragment="org.sufficientlysecure.keychain.ui.SettingsActivity$AdvancedPrefsFragment"
+ android:fragment="org.sufficientlysecure.keychain.ui.SettingsActivity$PassphrasePrefsFragment"
android:title="@string/section_passphrase_cache" />
<header
android:fragment="org.sufficientlysecure.keychain.ui.SettingsActivity$ProxyPrefsFragment"
android:title="@string/section_proxy_settings" />
<header
- android:fragment="org.sufficientlysecure.keychain.ui.SettingsActivity$SyncSettingsFragment"
+ android:fragment="org.sufficientlysecure.keychain.ui.SettingsActivity$SyncPrefsFragment"
android:title="@string/section_sync_settings" />
+ <header
+ android:fragment="org.sufficientlysecure.keychain.ui.SettingsActivity$OtherPrefsFragment"
+ android:title="@string/section_other_settings" />
</preference-headers>