aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2015-07-02 10:58:23 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2015-07-02 10:58:23 +0200
commit06c1871542eaad899c48431fdab620d815217fd8 (patch)
treed80d79f82b1689e15a1d308713a0d8909fe93a42 /OpenKeychain
parent9fe05ed1e7fff479430f0042c47842151a0cb68d (diff)
parent7b5c35ee8787934d97d24f3d6f79fd6340ab8a4d (diff)
downloadopen-keychain-06c1871542eaad899c48431fdab620d815217fd8.tar.gz
open-keychain-06c1871542eaad899c48431fdab620d815217fd8.tar.bz2
open-keychain-06c1871542eaad899c48431fdab620d815217fd8.zip
Merge pull request #1400 from open-keychain/keyserver-preference
Fixe Keyserver Preference crash on empty list
Diffstat (limited to 'OpenKeychain')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsKeyserverFragment.java8
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java6
-rw-r--r--OpenKeychain/src/main/res/values/strings.xml3
3 files changed, 13 insertions, 4 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsKeyserverFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsKeyserverFragment.java
index 20565aa7d..2ae64d90b 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsKeyserverFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsKeyserverFragment.java
@@ -83,7 +83,6 @@ public class SettingsKeyserverFragment extends Fragment implements RecyclerItemC
String keyservers[] = getArguments().getStringArray(ARG_KEYSERVER_ARRAY);
mKeyservers = new ArrayList<>(Arrays.asList(keyservers));
- saveKeyserverList(); // in case user does not make any changes
mAdapter = new KeyserverListAdapter(mKeyservers);
@@ -146,7 +145,7 @@ public class SettingsKeyserverFragment extends Fragment implements RecyclerItemC
if (deleted) {
Notify.create(getActivity(),
getActivity().getString(
- R.string.keyserver_deleted, mKeyservers.get(position)),
+ R.string.keyserver_preference_deleted, mKeyservers.get(position)),
Notify.Style.OK)
.show();
deleteKeyserver(position);
@@ -222,6 +221,11 @@ public class SettingsKeyserverFragment extends Fragment implements RecyclerItemC
}
private void deleteKeyserver(int position) {
+ if (mKeyservers.size() == 1) {
+ Notify.create(getActivity(), R.string.keyserver_preference_cannot_delete_last,
+ Notify.Style.ERROR).show();
+ return;
+ }
mKeyservers.remove(position);
// we use this
mAdapter.notifyItemRemoved(position);
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 a5b0088c0..713d5f5ea 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java
@@ -138,6 +138,9 @@ public class Preferences {
public String[] getKeyServers() {
String rawData = mSharedPreferences.getString(Constants.Pref.KEY_SERVERS,
Constants.Defaults.KEY_SERVERS);
+ if (rawData.equals("")) {
+ return new String[0];
+ }
Vector<String> servers = new Vector<>();
String chunks[] = rawData.split(",");
for (String c : chunks) {
@@ -150,7 +153,8 @@ public class Preferences {
}
public String getPreferredKeyserver() {
- return getKeyServers()[0];
+ String[] keyservers = getKeyServers();
+ return keyservers.length == 0 ? null : keyservers[0];
}
public void setKeyServers(String[] value) {
diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml
index 619c67ee3..c216cd869 100644
--- a/OpenKeychain/src/main/res/values/strings.xml
+++ b/OpenKeychain/src/main/res/values/strings.xml
@@ -685,7 +685,8 @@
<string name="add_keyserver_without_verification">"Keyserver added without verification."</string>
<string name="add_keyserver_invalid_url">"Invalid URL!"</string>
<string name="add_keyserver_connection_failed">"Failed to connect to keyserver. Please check the URL and your internet connection."</string>
- <string name="keyserver_deleted">"%s deleted"</string>
+ <string name="keyserver_preference_deleted">"%s deleted"</string>
+ <string name="keyserver_preference_cannot_delete_last">"Cannot delete last keyserver. At least one is required!"</string>
<!-- Navigation Drawer -->
<string name="nav_keys">"Keys"</string>