aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src
diff options
context:
space:
mode:
Diffstat (limited to 'OpenKeychain/src')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java7
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java22
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java26
-rw-r--r--OpenKeychain/src/main/res/values/arrays.xml8
-rw-r--r--OpenKeychain/src/main/res/values/strings.xml14
-rw-r--r--OpenKeychain/src/main/res/xml/proxy_prefs.xml13
6 files changed, 75 insertions, 15 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java
index 048fbf327..045ef347c 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java
@@ -98,12 +98,7 @@ public final class Constants {
public static final String USE_TOR_PROXY = "useTorProxy";
public static final String PROXY_HOST = "proxyHost";
public static final String PROXY_PORT = "proxyPort";
- }
-
- public static final class ProxyOrbot {
- public static final String PROXY_HOST = "127.0.0.1";
- public static final int PROXY_HTTP_PORT = 8118;
- public static final int PROXY_SOCKS_PORT = 9050;
+ public static final String PROXY_TYPE = "proxyType";
}
public static final class Defaults {
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 a49eb731d..383a542ff 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java
@@ -217,6 +217,7 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
private CheckBoxPreference mUseNormalProxy;
private EditTextPreference mProxyHost;
private EditTextPreference mProxyPort;
+ private ListPreference mProxyType;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -229,10 +230,12 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
mUseNormalProxy = (CheckBoxPreference) findPreference(Constants.Pref.USE_NORMAL_PROXY);
mProxyHost = (EditTextPreference) findPreference(Constants.Pref.PROXY_HOST);
mProxyPort = (EditTextPreference) findPreference(Constants.Pref.PROXY_PORT);
+ mProxyType = (ListPreference) findPreference(Constants.Pref.PROXY_TYPE);
initializeUseTorPref();
initializeUseNormalProxyPref();
- initialiseEditTextPreferences();
+ initializeEditTextPreferences();
+ initializeProxyTypePreference();
if (mUseTor.isChecked()) disableNormalProxyPrefs();
else if (mUseNormalProxy.isChecked()) disableUseTorPrefs();
@@ -279,7 +282,7 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
});
}
- private void initialiseEditTextPreferences() {
+ private void initializeEditTextPreferences() {
mProxyHost.setSummary(mProxyHost.getText());
mProxyPort.setSummary(mProxyPort.getText());
@@ -328,17 +331,32 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
});
}
+ private void initializeProxyTypePreference() {
+ mProxyType.setSummary(mProxyType.getEntry());
+
+ mProxyType.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ CharSequence entry = mProxyType.getEntries()[mProxyType.findIndexOfValue((String) newValue)];
+ mProxyType.setSummary(entry);
+ return true;
+ }
+ });
+ }
+
private void disableNormalProxyPrefs() {
mUseNormalProxy.setChecked(false);
mUseNormalProxy.setEnabled(false);
mProxyHost.setEnabled(false);
mProxyPort.setEnabled(false);
+ mProxyType.setEnabled(false);
}
private void enableNormalProxyPrefs() {
mUseNormalProxy.setEnabled(true);
mProxyHost.setEnabled(true);
mProxyPort.setEnabled(true);
+ mProxyType.setEnabled(true);
}
private void disableUseTorPrefs() {
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 80f0500c6..6a7d6d3eb 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java
@@ -21,9 +21,12 @@ package org.sufficientlysecure.keychain.util;
import android.content.Context;
import android.content.SharedPreferences;
+import android.content.res.Resources;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.Constants.Pref;
+import org.sufficientlysecure.keychain.R;
+import java.net.Proxy;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.ListIterator;
@@ -35,6 +38,7 @@ import java.util.Vector;
public class Preferences {
private static Preferences sPreferences;
private SharedPreferences mSharedPreferences;
+ private Resources mResources;
public static synchronized Preferences getPreferences(Context context) {
return getPreferences(context, false);
@@ -51,6 +55,7 @@ public class Preferences {
}
private Preferences(Context context) {
+ mResources = context.getResources();
updateSharedPreferences(context);
}
@@ -228,6 +233,8 @@ public class Preferences {
return mSharedPreferences.getBoolean(Pref.ENCRYPT_FILENAMES, true);
}
+ // proxy preference functions start here
+
public boolean getUseNormalProxy() {
return mSharedPreferences.getBoolean(Constants.Pref.USE_NORMAL_PROXY, false);
}
@@ -260,13 +267,16 @@ public class Preferences {
/**
* we store port as String for easy interfacing with EditTextPreference, but return it as an integer
+ *
* @return port number of proxy
*/
public int getProxyPort() {
return Integer.parseInt(mSharedPreferences.getString(Pref.PROXY_PORT, "-1"));
}
+
/**
* we store port as String for easy interfacing with EditTextPreference, but return it as an integer
+ *
* @param port proxy port
*/
public void setProxyPort(String port) {
@@ -275,6 +285,22 @@ public class Preferences {
editor.commit();
}
+ public Proxy.Type getProxyType() {
+ final String typeHttp = mResources.getString(R.string.pref_proxy_type_value_http);
+ final String typeSocks = mResources.getString(R.string.pref_proxy_type_value_socks);
+
+ String type = mSharedPreferences.getString(Pref.PROXY_TYPE, typeHttp);
+
+ if(type.equals(typeHttp)) return Proxy.Type.HTTP;
+ else if(type.equals(typeSocks)) return Proxy.Type.SOCKS;
+ else { // shouldn't happen
+ Log.e(Constants.TAG, "Invalid Proxy Type in preferences");
+ return null;
+ }
+ }
+
+ // proxy preference functions ends here
+
public CloudSearchPrefs getCloudSearchPrefs() {
return new CloudSearchPrefs(mSharedPreferences.getBoolean(Pref.SEARCH_KEYSERVER, true),
mSharedPreferences.getBoolean(Pref.SEARCH_KEYBASE, true),
diff --git a/OpenKeychain/src/main/res/values/arrays.xml b/OpenKeychain/src/main/res/values/arrays.xml
index 44bbe00cc..241f530d8 100644
--- a/OpenKeychain/src/main/res/values/arrays.xml
+++ b/OpenKeychain/src/main/res/values/arrays.xml
@@ -29,6 +29,14 @@
<item>28800</item>
<item>-1</item>
</string-array>
+ <string-array name="pref_proxy_type_entries" translatable="false">
+ <item>@string/pref_proxy_type_choice_http</item>
+ <item>@string/pref_proxy_type_choice_socks</item>
+ </string-array>
+ <string-array name="pref_proxy_type_values" translatable="false">
+ <item>@string/pref_proxy_type_value_http</item>
+ <item>@string/pref_proxy_type_value_socks</item>
+ </string-array>
<string-array name="rsa_key_size_spinner_values" translatable="false">
<item>@string/key_size_2048</item>
<item>@string/key_size_4096</item>
diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml
index defa7d2a5..d8499ed06 100644
--- a/OpenKeychain/src/main/res/values/strings.xml
+++ b/OpenKeychain/src/main/res/values/strings.xml
@@ -174,14 +174,20 @@
<string name="pref_keybase_summary">"Search keys on keybase.io"</string>
<!-- Proxy Preferences -->
- <string name="pref_proxy_non">"Don't use a proxy"</string>
- <string name="pref_proxy_tor">"Enable Tor"</string>
+ <string name="pref_proxy_tor_label">"Enable Tor"</string>
<string name="pref_proxy_tor_summary">"Requires Orbot to be installed"</string>
<string name="pref_proxy_normal">"Enable other proxy"</string>
- <string name="pref_proxy_host">"Proxy Host"</string>
+ <string name="pref_proxy_host_label">"Proxy Host"</string>
<string name="pref_proxy_host_err_invalid">"Proxy host cannot be empty"</string>
- <string name="pref_proxy_port">"Proxy Port"</string>
+ <string name="pref_proxy_port_label">"Proxy Port"</string>
<string name="pref_proxy_port_err_invalid">"Invalid port number entered"</string>
+ <string name="pref_proxy_type_label">"Proxy Type"</string>
+
+ <!-- proxy type choices -->
+ <string name="pref_proxy_type_choice_http">"HTTP"</string>
+ <string name="pref_proxy_type_choice_socks">"SOCKS"</string>
+ <string name="pref_proxy_type_value_http">"proxyHttp"</string>
+ <string name="pref_proxy_type_value_socks">"proxySocks"</string>
<string name="user_id_no_name">"&lt;no name&gt;"</string>
<string name="none">"&lt;none&gt;"</string>
diff --git a/OpenKeychain/src/main/res/xml/proxy_prefs.xml b/OpenKeychain/src/main/res/xml/proxy_prefs.xml
index e77ac6d71..ab9c5a3e3 100644
--- a/OpenKeychain/src/main/res/xml/proxy_prefs.xml
+++ b/OpenKeychain/src/main/res/xml/proxy_prefs.xml
@@ -3,7 +3,7 @@
<CheckBoxPreference
android:key="useTorProxy"
android:persistent="true"
- android:title="@string/pref_proxy_tor"
+ android:title="@string/pref_proxy_tor_label"
android:summary="@string/pref_proxy_tor_summary" />
<CheckBoxPreference
android:key="useNormalProxy"
@@ -13,7 +13,7 @@
android:key="proxyHost"
android:persistent="true"
android:defaultValue="127.0.0.1"
- android:title="@string/pref_proxy_host"
+ android:title="@string/pref_proxy_host_label"
android:cursorVisible="true"
android:textCursorDrawable="@null"
android:inputType="textEmailAddress"/>
@@ -21,7 +21,14 @@
android:key="proxyPort"
android:defaultValue="8118"
android:persistent="true"
- android:title="@string/pref_proxy_port"
+ android:title="@string/pref_proxy_port_label"
android:textCursorDrawable="@null"
android:inputType="number" />
+ <ListPreference
+ android:entries="@array/pref_proxy_type_entries"
+ android:entryValues="@array/pref_proxy_type_values"
+ android:defaultValue="@string/pref_proxy_type_value_http"
+ android:key="proxyType"
+ android:persistent="true"
+ android:title="@string/pref_proxy_type_label" />
</PreferenceScreen>