aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2014-09-15 10:20:01 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2014-09-15 10:20:01 +0200
commit67e572cf4f65fa8e643825cd4ec75f03951a5dd7 (patch)
tree15e0b3cc73d8681036b82fab3b2599e79ce5cfb1 /OpenKeychain/src/main/java/org/sufficientlysecure
parent53bc417f8f77a9f92786457281d02431ef614ca7 (diff)
parentba7ef28ade4161ebecf8db7271114d96d9ae0595 (diff)
downloadopen-keychain-67e572cf4f65fa8e643825cd4ec75f03951a5dd7.tar.gz
open-keychain-67e572cf4f65fa8e643825cd4ec75f03951a5dd7.tar.bz2
open-keychain-67e572cf4f65fa8e643825cd4ec75f03951a5dd7.zip
Merge branch 'master' of github.com:open-keychain/open-keychain
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/EmailKeyHelper.java6
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/KeyUpdateHelper.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/Preferences.java32
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/CloudSearch.java90
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysList.java95
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java23
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/KeybaseKeyserver.java4
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/Keyserver.java16
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java6
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpImportExport.java6
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyOperation.java10
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java9
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java7
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java6
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java3
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsActivity.java14
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java6
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AppSettingsActivity.java6
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java60
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/ConsolidateResult.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/DecryptVerifyResult.java7
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/EditKeyResult.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/ImportKeyResult.java4
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/OperationResult.java (renamed from OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/OperationResultParcel.java)36
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SaveKeyringResult.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SignEncryptResult.java11
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SingletonResult.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java21
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java10
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFilesFragment.java4
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java14
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java93
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysCloudFragment.java (renamed from OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysServerFragment.java)75
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysKeybaseFragment.java122
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java66
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListActivity.java8
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java12
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PreferencesActivity.java88
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PreferencesKeyServerActivity.java34
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java6
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListCloudLoader.java (renamed from OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListServerLoader.java)29
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListKeybaseLoader.java103
45 files changed, 571 insertions, 587 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java
index ab1c6a462..67ab156a8 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java
@@ -82,6 +82,8 @@ public final class Constants {
public static final String CACHED_CONSOLIDATE = "cachedConsolidate";
public static final String CACHED_CONSOLIDATE_SECRETS = "cachedConsolidateSecrets";
public static final String CACHED_CONSOLIDATE_PUBLICS = "cachedConsolidatePublics";
+ public static final String SEARCH_KEYSERVER = "search_keyserver_pref";
+ public static final String SEARCH_KEYBASE = "search_keybase_pref";
public static final String USE_DEFAULT_YUBIKEY_PIN = "useDefaultYubikeyPin";
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/EmailKeyHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/EmailKeyHelper.java
index d8efdc480..91325ca1f 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/EmailKeyHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/EmailKeyHelper.java
@@ -61,9 +61,9 @@ public class EmailKeyHelper {
if (keys.isEmpty()) {
// Most users don't have the SRV record, so ask a default server as well
- String[] servers = Preferences.getPreferences(context).getKeyServers();
- if (servers != null && servers.length != 0) {
- HkpKeyserver hkp = new HkpKeyserver(servers[0]);
+ String server = Preferences.getPreferences(context).getPreferredKeyserver();
+ if (server != null) {
+ HkpKeyserver hkp = new HkpKeyserver(server);
keys.addAll(getEmailKeys(mail, hkp));
}
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/KeyUpdateHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/KeyUpdateHelper.java
index 9ca6d5c5b..0a804fa64 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/KeyUpdateHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/KeyUpdateHelper.java
@@ -63,7 +63,7 @@ public class KeyUpdateHelper {
ImportKeysListEntry key = new ImportKeysListEntry();
key.setFingerprintHex(fprint);
key.setBitStrength(1337);
- key.setOrigin(servers[0]);
+ key.addOrigin(servers[0]);
keys.add(key);
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/Preferences.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/Preferences.java
index aa4621893..bf09997a0 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/Preferences.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/Preferences.java
@@ -220,6 +220,9 @@ public class Preferences {
}
return servers.toArray(chunks);
}
+ public String getPreferredKeyserver() {
+ return getKeyServers()[0];
+ }
public void setKeyServers(String[] value) {
SharedPreferences.Editor editor = mSharedPreferences.edit();
@@ -248,6 +251,35 @@ public class Preferences {
return mSharedPreferences.getBoolean(Constants.Pref.WRITE_VERSION_HEADER, false);
}
+ public void setSearchKeyserver(boolean searchKeyserver) {
+ SharedPreferences.Editor editor = mSharedPreferences.edit();
+ editor.putBoolean(Pref.SEARCH_KEYSERVER, searchKeyserver);
+ editor.commit();
+ }
+ public void setSearchKeybase(boolean searchKeybase) {
+ SharedPreferences.Editor editor = mSharedPreferences.edit();
+ editor.putBoolean(Pref.SEARCH_KEYBASE, searchKeybase);
+ editor.commit();
+ }
+
+ public CloudSearchPrefs getCloudSearchPrefs() {
+ return new CloudSearchPrefs(mSharedPreferences.getBoolean(Pref.SEARCH_KEYSERVER, true),
+ mSharedPreferences.getBoolean(Pref.SEARCH_KEYBASE, true),
+ getPreferredKeyserver());
+ }
+
+ public static class CloudSearchPrefs {
+ public final boolean searchKeyserver;
+ public final boolean searchKeybase;
+ public final String keyserver;
+
+ public CloudSearchPrefs(boolean searchKeyserver, boolean searchKeybase, String keyserver) {
+ this.searchKeyserver = searchKeyserver;
+ this.searchKeybase = searchKeybase;
+ this.keyserver = keyserver;
+ }
+ }
+
public void updatePreferences() {
if (mSharedPreferences.getInt(Constants.Pref.PREF_DEFAULT_VERSION, 0) !=
Constants.Defaults.PREF_VERSION) {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/CloudSearch.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/CloudSearch.java
new file mode 100644
index 000000000..27d826c59
--- /dev/null
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/CloudSearch.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2014 Tim Bray <tbray@textuality.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.sufficientlysecure.keychain.keyimport;
+
+import org.sufficientlysecure.keychain.Constants;
+import org.sufficientlysecure.keychain.helper.Preferences;
+import org.sufficientlysecure.keychain.util.Log;
+
+import java.util.ArrayList;
+import java.util.Vector;
+
+/**
+ * Search two or more types of server for online keys.
+ */
+public class CloudSearch {
+
+ private final static long SECONDS = 1000;
+
+ public static ArrayList<ImportKeysListEntry> search(final String query, Preferences.CloudSearchPrefs cloudPrefs)
+ throws Keyserver.CloudSearchFailureException {
+ final ArrayList<Keyserver> servers = new ArrayList<Keyserver>();
+
+ // it's a Vector for sync, multiple threads might report problems
+ final Vector<Keyserver.CloudSearchFailureException> problems = new Vector<Keyserver.CloudSearchFailureException>();
+
+ if (cloudPrefs.searchKeyserver) {
+ servers.add(new HkpKeyserver(cloudPrefs.keyserver));
+ }
+ if (cloudPrefs.searchKeybase) {
+ servers.add(new KeybaseKeyserver());
+ }
+ final ImportKeysList results = new ImportKeysList(servers.size());
+
+ for (final Keyserver keyserver : servers) {
+ Runnable r = new Runnable() {
+ @Override
+ public void run() {
+ try {
+ results.addAll(keyserver.search(query));
+ } catch (Keyserver.CloudSearchFailureException e) {
+ problems.add(e);
+ }
+ results.finishedAdding(); // notifies if all searchers done
+ }
+ };
+ new Thread(r).start();
+ }
+
+ // wait for either all the searches to come back, or 10 seconds
+ synchronized(results) {
+ try {
+ results.wait(10 * SECONDS);
+ } catch (InterruptedException e) {
+ }
+ }
+
+ if (results.outstandingSuppliers() > 0) {
+ String message = "Launched " + servers.size() + " cloud searchers, but" +
+ results.outstandingSuppliers() + "failed to complete.";
+ problems.add(new Keyserver.QueryFailedException(message));
+ }
+
+ if (!problems.isEmpty()) {
+ for (Keyserver.CloudSearchFailureException e : problems) {
+ Log.d(Constants.TAG, "Cloud search exception: " + e.getLocalizedMessage());
+ }
+
+ // only throw exception if we didn’t get any results
+ if (results.isEmpty()) {
+ throw problems.get(0);
+ }
+ }
+
+ return results;
+ }
+}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java
index c4c12cd3a..a6f1334ea 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java
@@ -278,7 +278,7 @@ public class HkpKeyserver extends Keyserver {
while (matcher.find()) {
final ImportKeysListEntry entry = new ImportKeysListEntry();
entry.setQuery(query);
- entry.setOrigin(getUrlPrefix() + mHost + ":" + mPort);
+ entry.addOrigin(getUrlPrefix() + mHost + ":" + mPort);
int bitSize = Integer.parseInt(matcher.group(3));
entry.setBitStrength(bitSize);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysList.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysList.java
new file mode 100644
index 000000000..15bcd8576
--- /dev/null
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysList.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2014 Tim Bray <tbray@textuality.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.sufficientlysecure.keychain.keyimport;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+/**
+ * Just an ArrayList, only with a synchronized dupe-merging add/addAll, and a sign-off method
+ */
+public class ImportKeysList extends ArrayList<ImportKeysListEntry> {
+
+ private int mSupplierCount;
+
+ public ImportKeysList(int supplierCount) {
+ mSupplierCount = supplierCount;
+ }
+
+ @Override
+ public boolean add(ImportKeysListEntry toAdd) {
+ addOrMerge(toAdd);
+ return true; // that’s what the ArrayList#add contract says
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends ImportKeysListEntry> addThese) {
+ boolean modified = false;
+ for (ImportKeysListEntry toAdd : addThese) {
+ modified = addOrMerge(toAdd) || modified;
+ }
+ return modified;
+ }
+
+ // NOTE: side-effects
+ // NOTE: synchronized
+ private synchronized boolean addOrMerge(ImportKeysListEntry toAdd) {
+ for (ImportKeysListEntry existing : this) {
+ if (toAdd.hasSameKeyAs(existing)) {
+ return mergeDupes(toAdd, existing);
+ }
+ }
+ return super.add(toAdd);
+ }
+
+ // being a little anal about the ArrayList#addAll contract here
+ private boolean mergeDupes(ImportKeysListEntry incoming, ImportKeysListEntry existing) {
+ boolean modified = false;
+ if (incoming.isRevoked()) {
+ existing.setRevoked(true);
+ modified = true;
+ }
+ if (incoming.isExpired()) {
+ existing.setExpired(true);
+ modified = true;
+ }
+ for (String origin : incoming.getOrigins()) {
+ existing.addOrigin(origin);
+ }
+ ArrayList<String> incomingIDs = incoming.getUserIds();
+ ArrayList<String> existingIDs = existing.getUserIds();
+ for (String incomingID : incomingIDs) {
+ if (!existingIDs.contains(incomingID)) {
+ existingIDs.add(incomingID);
+ modified = true;
+ }
+ }
+ return modified;
+ }
+
+ // NOTE: synchronized
+ public synchronized void finishedAdding() {
+ mSupplierCount--;
+ if (mSupplierCount == 0) {
+ this.notify();
+ }
+ }
+
+ public int outstandingSuppliers() {
+ return mSupplierCount;
+ }
+}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java
index da70f1505..b3df67c0c 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java
@@ -46,7 +46,7 @@ public class ImportKeysListEntry implements Serializable, Parcelable {
private String mPrimaryUserId;
private String mExtraData;
private String mQuery;
- private String mOrigin;
+ private ArrayList<String> mOrigins;
private Integer mHashCode = null;
private boolean mSelected;
@@ -70,7 +70,7 @@ public class ImportKeysListEntry implements Serializable, Parcelable {
dest.writeByte((byte) (mSecretKey ? 1 : 0));
dest.writeByte((byte) (mSelected ? 1 : 0));
dest.writeString(mExtraData);
- dest.writeString(mOrigin);
+ dest.writeStringList(mOrigins);
}
public static final Creator<ImportKeysListEntry> CREATOR = new Creator<ImportKeysListEntry>() {
@@ -90,7 +90,8 @@ public class ImportKeysListEntry implements Serializable, Parcelable {
vr.mSecretKey = source.readByte() == 1;
vr.mSelected = source.readByte() == 1;
vr.mExtraData = source.readString();
- vr.mOrigin = source.readString();
+ vr.mOrigins = new ArrayList<String>();
+ source.readStringList(vr.mOrigins);
return vr;
}
@@ -107,6 +108,13 @@ public class ImportKeysListEntry implements Serializable, Parcelable {
return super.hashCode();
}
+ public boolean hasSameKeyAs(Object o) {
+ if (mFingerprintHex == null || o == null || !(o instanceof ImportKeysListEntry)) {
+ return false;
+ }
+ return mFingerprintHex.equals(((ImportKeysListEntry) o).mFingerprintHex);
+ }
+
public String getKeyIdHex() {
return mKeyIdHex;
}
@@ -223,12 +231,12 @@ public class ImportKeysListEntry implements Serializable, Parcelable {
mQuery = query;
}
- public String getOrigin() {
- return mOrigin;
+ public ArrayList<String> getOrigins() {
+ return mOrigins;
}
- public void setOrigin(String origin) {
- mOrigin = origin;
+ public void addOrigin(String origin) {
+ mOrigins.add(origin);
}
/**
@@ -240,6 +248,7 @@ public class ImportKeysListEntry implements Serializable, Parcelable {
// do not select by default
mSelected = false;
mUserIds = new ArrayList<String>();
+ mOrigins = new ArrayList<String>();
}
/**
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/KeybaseKeyserver.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/KeybaseKeyserver.java
index cbd06da90..0a55fccc8 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/KeybaseKeyserver.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/KeybaseKeyserver.java
@@ -63,7 +63,9 @@ public class KeybaseKeyserver extends Keyserver {
private ImportKeysListEntry makeEntry(Match match) throws KeybaseException {
final ImportKeysListEntry entry = new ImportKeysListEntry();
entry.setQuery(mQuery);
- entry.setOrigin(ORIGIN);
+ entry.addOrigin(ORIGIN);
+
+ entry.setRevoked(false); // keybase doesn’t say anything about revoked keys
String username = match.getUsername();
String fullName = match.getFullName();
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/Keyserver.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/Keyserver.java
index b726529f8..5e4bd0b70 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/Keyserver.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/Keyserver.java
@@ -24,7 +24,19 @@ import java.io.InputStream;
import java.util.List;
public abstract class Keyserver {
- public static class QueryFailedException extends Exception {
+
+ public static class CloudSearchFailureException extends Exception {
+ private static final long serialVersionUID = 2703768928624654515L;
+
+ public CloudSearchFailureException(String message) {
+ super(message);
+ }
+ public CloudSearchFailureException() {
+ super();
+ }
+ }
+
+ public static class QueryFailedException extends CloudSearchFailureException {
private static final long serialVersionUID = 2703768928624654512L;
public QueryFailedException(String message) {
@@ -32,7 +44,7 @@ public abstract class Keyserver {
}
}
- public static class QueryNeedsRepairException extends Exception {
+ public static class QueryNeedsRepairException extends CloudSearchFailureException {
private static final long serialVersionUID = 2693768928624654512L;
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java
index 6e59a3b9b..58ca2b54a 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java
@@ -49,9 +49,9 @@ import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.service.results.DecryptVerifyResult;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogLevel;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogType;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.OperationLog;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogLevel;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogType;
+import org.sufficientlysecure.keychain.service.results.OperationResult.OperationLog;
import org.sufficientlysecure.keychain.util.InputData;
import org.sufficientlysecure.keychain.util.Log;
import org.sufficientlysecure.keychain.util.ProgressScaler;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpImportExport.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpImportExport.java
index 06415cf8a..1c994dceb 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpImportExport.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpImportExport.java
@@ -33,9 +33,9 @@ import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
import org.sufficientlysecure.keychain.provider.KeychainContract;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.service.KeychainIntentService;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogLevel;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogType;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.OperationLog;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogLevel;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogType;
+import org.sufficientlysecure.keychain.service.results.OperationResult.OperationLog;
import org.sufficientlysecure.keychain.service.results.ImportKeyResult;
import org.sufficientlysecure.keychain.service.results.SaveKeyringResult;
import org.sufficientlysecure.keychain.util.IterableIterator;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyOperation.java
index ad592a3e9..4ee4ac74c 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyOperation.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyOperation.java
@@ -46,10 +46,10 @@ import org.spongycastle.openpgp.operator.jcajce.JcePBESecretKeyDecryptorBuilder;
import org.spongycastle.openpgp.operator.jcajce.JcePBESecretKeyEncryptorBuilder;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogLevel;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogType;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.OperationLog;
+import org.sufficientlysecure.keychain.service.results.OperationResult;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogLevel;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogType;
+import org.sufficientlysecure.keychain.service.results.OperationResult.OperationLog;
import org.sufficientlysecure.keychain.service.results.EditKeyResult;
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.Algorithm;
@@ -949,7 +949,7 @@ public class PgpKeyOperation {
progress(R.string.progress_done, 100);
log.add(LogLevel.OK, LogType.MSG_MF_SUCCESS, indent);
- return new EditKeyResult(OperationResultParcel.RESULT_OK, log, new UncachedKeyRing(sKR));
+ return new EditKeyResult(OperationResult.RESULT_OK, log, new UncachedKeyRing(sKR));
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java
index 9f97ac4c9..e4ed740a5 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java
@@ -1,6 +1,7 @@
/*
* Copyright (C) 2012-2014 Dominik Schürmann <dominik@dominikschuermann.de>
* Copyright (C) 2010-2014 Thialfihar <thi@thialfihar.org>
+ * Copyright (C) 2014 Vincent Breitmoser <v.breitmoser@mugenguild.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -35,9 +36,9 @@ import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogLevel;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogType;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.OperationLog;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogLevel;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogType;
+import org.sufficientlysecure.keychain.service.results.OperationResult.OperationLog;
import org.sufficientlysecure.keychain.service.results.SignEncryptResult;
import org.sufficientlysecure.keychain.util.InputData;
import org.sufficientlysecure.keychain.util.Log;
@@ -366,7 +367,7 @@ public class PgpSignEncrypt {
KeyRings.buildUnifiedKeyRingUri(id));
CanonicalizedPublicKey key = keyRing.getEncryptionSubKey();
cPk.addMethod(key.getPubKeyEncryptionGenerator());
- log.add(LogLevel.DEBUG, LogType.MSG_SE_KEY_OK, indent +1,
+ log.add(LogLevel.DEBUG, LogType.MSG_SE_KEY_OK, indent + 1,
PgpKeyHelper.convertKeyIdToHex(id));
} catch (PgpGeneralException e) {
log.add(LogLevel.WARN, LogType.MSG_SE_KEY_WARN, indent +1,
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java
index 04f2c3dfb..cdaa3e36e 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java
@@ -34,12 +34,11 @@ import org.spongycastle.openpgp.PGPSignatureList;
import org.spongycastle.openpgp.PGPUtil;
import org.spongycastle.openpgp.operator.jcajce.JcaKeyFingerprintCalculator;
import org.spongycastle.util.Strings;
-import org.spongycastle.util.encoders.Hex;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogLevel;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogType;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.OperationLog;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogLevel;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogType;
+import org.sufficientlysecure.keychain.service.results.OperationResult.OperationLog;
import org.sufficientlysecure.keychain.util.IterableIterator;
import org.sufficientlysecure.keychain.util.Log;
import org.sufficientlysecure.keychain.util.Utf8Util;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java
index ed65b87bd..8a30ad932 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java
@@ -55,9 +55,9 @@ import org.sufficientlysecure.keychain.provider.KeychainContract.Keys;
import org.sufficientlysecure.keychain.provider.KeychainContract.UserIds;
import org.sufficientlysecure.keychain.remote.AccountSettings;
import org.sufficientlysecure.keychain.remote.AppSettings;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogLevel;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogType;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.OperationLog;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogLevel;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogType;
+import org.sufficientlysecure.keychain.service.results.OperationResult.OperationLog;
import org.sufficientlysecure.keychain.service.results.ConsolidateResult;
import org.sufficientlysecure.keychain.service.results.SaveKeyringResult;
import org.sufficientlysecure.keychain.util.ParcelableFileCache;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java
index 29f888a82..a26ee009a 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java
@@ -32,7 +32,6 @@ import org.openintents.openpgp.OpenPgpSignatureResult;
import org.openintents.openpgp.util.OpenPgpApi;
import org.sufficientlysecure.keychain.nfc.NfcActivity;
import org.sufficientlysecure.keychain.Constants;
-import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.pgp.PgpDecryptVerify;
import org.sufficientlysecure.keychain.provider.KeychainDatabase.Tables;
import org.sufficientlysecure.keychain.service.results.DecryptVerifyResult;
@@ -45,7 +44,7 @@ import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.remote.ui.RemoteServiceActivity;
import org.sufficientlysecure.keychain.service.PassphraseCacheService;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogEntryParcel;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogEntryParcel;
import org.sufficientlysecure.keychain.service.results.SignEncryptResult;
import org.sufficientlysecure.keychain.ui.ImportKeysActivity;
import org.sufficientlysecure.keychain.ui.ViewKeyActivity;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsActivity.java
index 4bf750121..231b26409 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsActivity.java
@@ -30,7 +30,10 @@ import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.helper.ActionBarHelper;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.remote.AccountSettings;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel;
+import org.sufficientlysecure.keychain.service.results.OperationResult;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogLevel;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogType;
+import org.sufficientlysecure.keychain.service.results.SingletonResult;
import org.sufficientlysecure.keychain.util.Log;
public class AccountSettingsActivity extends ActionBarActivity {
@@ -105,9 +108,10 @@ public class AccountSettingsActivity extends ActionBarActivity {
private void save() {
new ProviderHelper(this).updateApiAccount(mAccountUri, mAccountSettingsFragment.getAccSettings());
// TODO: show "account saved" instead of "operation succeeded"
- OperationResultParcel result = new OperationResultParcel(OperationResultParcel.RESULT_OK, null);
+ SingletonResult result = new SingletonResult(
+ SingletonResult.RESULT_OK, LogLevel.OK, LogType.MSG_ACC_SAVED);
Intent intent = new Intent();
- intent.putExtra(OperationResultParcel.EXTRA_RESULT, result);
+ intent.putExtra(SingletonResult.EXTRA_RESULT, result);
setResult(RESULT_OK, intent);
finish();
}
@@ -115,8 +119,8 @@ public class AccountSettingsActivity extends ActionBarActivity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// if a result has been returned, display a notify
- if (data != null && data.hasExtra(OperationResultParcel.EXTRA_RESULT)) {
- OperationResultParcel result = data.getParcelableExtra(OperationResultParcel.EXTRA_RESULT);
+ if (data != null && data.hasExtra(OperationResult.EXTRA_RESULT)) {
+ OperationResult result = data.getParcelableExtra(OperationResult.EXTRA_RESULT);
result.createNotify(this).show();
} else {
super.onActivityResult(requestCode, resultCode, data);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java
index d21d83574..a7eb58377 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java
@@ -33,7 +33,7 @@ import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.pgp.KeyRing;
import org.sufficientlysecure.keychain.remote.AccountSettings;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel;
+import org.sufficientlysecure.keychain.service.results.OperationResult;
import org.sufficientlysecure.keychain.service.results.SaveKeyringResult;
import org.sufficientlysecure.keychain.ui.CreateKeyActivity;
import org.sufficientlysecure.keychain.ui.adapter.KeyValueSpinnerAdapter;
@@ -171,8 +171,8 @@ public class AccountSettingsFragment extends Fragment {
switch (requestCode) {
case REQUEST_CODE_CREATE_KEY: {
if (resultCode == Activity.RESULT_OK) {
- if (data != null && data.hasExtra(OperationResultParcel.EXTRA_RESULT)) {
- SaveKeyringResult result = data.getParcelableExtra(OperationResultParcel.EXTRA_RESULT);
+ if (data != null && data.hasExtra(OperationResult.EXTRA_RESULT)) {
+ SaveKeyringResult result = data.getParcelableExtra(OperationResult.EXTRA_RESULT);
mSelectKeySpinner.setSelectedKeyId(result.mRingMasterKeyId);
} else {
Log.e(Constants.TAG, "missing result!");
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AppSettingsActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AppSettingsActivity.java
index 8cc05231e..1c1978fe9 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AppSettingsActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AppSettingsActivity.java
@@ -32,7 +32,7 @@ import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.provider.KeychainContract;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.remote.AppSettings;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel;
+import org.sufficientlysecure.keychain.service.results.OperationResult;
import org.sufficientlysecure.keychain.util.Log;
public class AppSettingsActivity extends ActionBarActivity {
@@ -158,8 +158,8 @@ public class AppSettingsActivity extends ActionBarActivity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// if a result has been returned, display a notify
- if (data != null && data.hasExtra(OperationResultParcel.EXTRA_RESULT)) {
- OperationResultParcel result = data.getParcelableExtra(OperationResultParcel.EXTRA_RESULT);
+ if (data != null && data.hasExtra(OperationResult.EXTRA_RESULT)) {
+ OperationResult result = data.getParcelableExtra(OperationResult.EXTRA_RESULT);
result.createNotify(this).show();
} else {
super.onActivityResult(requestCode, resultCode, data);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
index e09c71787..9b7dcaf6a 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
@@ -55,10 +55,10 @@ import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRingData;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.provider.KeychainDatabase;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogLevel;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogType;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.OperationLog;
+import org.sufficientlysecure.keychain.service.results.OperationResult;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogLevel;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogType;
+import org.sufficientlysecure.keychain.service.results.OperationResult.OperationLog;
import org.sufficientlysecure.keychain.service.results.ConsolidateResult;
import org.sufficientlysecure.keychain.service.results.EditKeyResult;
import org.sufficientlysecure.keychain.service.results.ImportKeyResult;
@@ -364,7 +364,7 @@ public class KeychainIntentService extends IntentService implements Progressable
outStream.close();
- resultData.putParcelable(RESULT_DECRYPT_VERIFY_RESULT, decryptVerifyResult);
+ resultData.putParcelable(DecryptVerifyResult.EXTRA_RESULT, decryptVerifyResult);
/* Output */
@@ -411,7 +411,7 @@ public class KeychainIntentService extends IntentService implements Progressable
DecryptVerifyResult decryptVerifyResult = builder.build().execute();
- resultData.putParcelable(RESULT_DECRYPT_VERIFY_RESULT, decryptVerifyResult);
+ resultData.putParcelable(DecryptVerifyResult.EXTRA_RESULT, decryptVerifyResult);
/* Output */
OtherHelper.logDebugBundle(resultData, "resultData");
@@ -652,27 +652,35 @@ public class KeychainIntentService extends IntentService implements Progressable
for (ImportKeysListEntry entry : entries) {
try {
Keyserver server;
- if (entry.getOrigin() == null) {
- server = new HkpKeyserver(keyServer);
- } else if (KeybaseKeyserver.ORIGIN.equals(entry.getOrigin())) {
- server = new KeybaseKeyserver();
- } else {
- server = new HkpKeyserver(entry.getOrigin());
+ ArrayList<String> origins = entry.getOrigins();
+ if (origins == null) {
+ origins = new ArrayList<String>();
}
-
- // if available use complete fingerprint for get request
- byte[] downloadedKeyBytes;
- if (KeybaseKeyserver.ORIGIN.equals(entry.getOrigin())) {
- downloadedKeyBytes = server.get(entry.getExtraData()).getBytes();
- } else if (entry.getFingerprintHex() != null) {
- downloadedKeyBytes = server.get("0x" + entry.getFingerprintHex()).getBytes();
- } else {
- downloadedKeyBytes = server.get(entry.getKeyIdHex()).getBytes();
+ if (origins.isEmpty()) {
+ origins.add(keyServer);
}
+ for (String origin : origins) {
+ if (KeybaseKeyserver.ORIGIN.equals(origin)) {
+ server = new KeybaseKeyserver();
+ } else {
+ server = new HkpKeyserver(origin);
+ }
+ Log.d(Constants.TAG, "IMPORTING " + entry.getKeyIdHex() + " FROM: " + server);
+
+ // if available use complete fingerprint for get request
+ byte[] downloadedKeyBytes;
+ if (KeybaseKeyserver.ORIGIN.equals(origin)) {
+ downloadedKeyBytes = server.get(entry.getExtraData()).getBytes();
+ } else if (entry.getFingerprintHex() != null) {
+ downloadedKeyBytes = server.get("0x" + entry.getFingerprintHex()).getBytes();
+ } else {
+ downloadedKeyBytes = server.get(entry.getKeyIdHex()).getBytes();
+ }
- // save key bytes in entry object for doing the
- // actual import afterwards
- keyRings.add(new ParcelableKeyRing(downloadedKeyBytes, entry.getFingerprintHex()));
+ // save key bytes in entry object for doing the
+ // actual import afterwards
+ keyRings.add(new ParcelableKeyRing(downloadedKeyBytes, entry.getFingerprintHex()));
+ }
} catch (Exception e) {
sendErrorToHandler(e);
}
@@ -813,9 +821,9 @@ public class KeychainIntentService extends IntentService implements Progressable
}
}
- private void sendMessageToHandler(Integer arg1, OperationResultParcel data) {
+ private void sendMessageToHandler(Integer arg1, OperationResult data) {
Bundle bundle = new Bundle();
- bundle.putParcelable(OperationResultParcel.EXTRA_RESULT, data);
+ bundle.putParcelable(OperationResult.EXTRA_RESULT, data);
sendMessageToHandler(arg1, null, bundle);
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/ConsolidateResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/ConsolidateResult.java
index 31f4cabc3..44177563f 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/ConsolidateResult.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/ConsolidateResult.java
@@ -18,7 +18,7 @@
package org.sufficientlysecure.keychain.service.results;
-public class ConsolidateResult extends OperationResultParcel {
+public class ConsolidateResult extends OperationResult {
public ConsolidateResult(int result, OperationLog log) {
super(result, log);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/DecryptVerifyResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/DecryptVerifyResult.java
index e7ac209bf..18533ffe6 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/DecryptVerifyResult.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/DecryptVerifyResult.java
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2014 Dominik Schürmann <dominik@dominikschuermann.de>
+ * Copyright (C) 2014 Vincent Breitmoser <v.breitmoser@mugenguild.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -22,10 +23,10 @@ import android.os.Parcel;
import org.openintents.openpgp.OpenPgpMetadata;
import org.openintents.openpgp.OpenPgpSignatureResult;
-public class DecryptVerifyResult extends OperationResultParcel {
+public class DecryptVerifyResult extends OperationResult {
- // the fourth bit indicates a "data pending" result!
- public static final int RESULT_PENDING = 8;
+ // the fourth bit indicates a "data pending" result! (it's also a form of non-success)
+ public static final int RESULT_PENDING = RESULT_ERROR +8;
// fifth to sixth bit in addition indicate specific type of pending
public static final int RESULT_PENDING_ASYM_PASSPHRASE = RESULT_PENDING +16;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/EditKeyResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/EditKeyResult.java
index 169ed9f36..9385afd8e 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/EditKeyResult.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/EditKeyResult.java
@@ -23,7 +23,7 @@ import android.os.Parcel;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.pgp.UncachedKeyRing;
-public class EditKeyResult extends OperationResultParcel {
+public class EditKeyResult extends OperationResult {
private transient UncachedKeyRing mRing;
public final long mRingMasterKeyId;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/ImportKeyResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/ImportKeyResult.java
index 62b5b1b52..ec9c424cf 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/ImportKeyResult.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/ImportKeyResult.java
@@ -34,7 +34,7 @@ import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.ui.LogDisplayActivity;
import org.sufficientlysecure.keychain.ui.LogDisplayFragment;
-public class ImportKeyResult extends OperationResultParcel {
+public class ImportKeyResult extends OperationResult {
public final int mNewKeys, mUpdatedKeys, mBadKeys, mSecret;
@@ -109,7 +109,7 @@ public class ImportKeyResult extends OperationResultParcel {
int duration, color;
// Not an overall failure
- if ((resultType & OperationResultParcel.RESULT_ERROR) == 0) {
+ if ((resultType & OperationResult.RESULT_ERROR) == 0) {
String withWarnings;
duration = Duration.EXTRA_LONG;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/OperationResultParcel.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/OperationResult.java
index 56f5248cb..d2be1466f 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/OperationResultParcel.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/OperationResult.java
@@ -52,7 +52,7 @@ import java.util.List;
* TODO ideally, this class should be abstract, and all actual results of a specific subclass
*
*/
-public class OperationResultParcel implements Parcelable {
+public abstract class OperationResult implements Parcelable {
public static final String EXTRA_RESULT = "operation_result";
@@ -71,12 +71,12 @@ public class OperationResultParcel implements Parcelable {
/// A list of log entries tied to the operation result.
final OperationLog mLog;
- public OperationResultParcel(int result, OperationLog log) {
+ public OperationResult(int result, OperationLog log) {
mResult = result;
mLog = log;
}
- public OperationResultParcel(Parcel source) {
+ public OperationResult(Parcel source) {
mResult = source.readInt();
mLog = new OperationLog();
mLog.addAll(source.createTypedArrayList(LogEntryParcel.CREATOR));
@@ -156,25 +156,22 @@ public class OperationResultParcel implements Parcelable {
public SuperCardToast createNotify(final Activity activity) {
- String str;
int color;
+ // Take the last message as string
+ String str = activity.getString(mLog.getLast().mType.getMsgId());
+
// Not an overall failure
if (cancelled()) {
color = Style.RED;
- str = "operation cancelled!";
} else if (success()) {
if (getLog().containsWarnings()) {
color = Style.ORANGE;
} else {
color = Style.GREEN;
}
- str = "operation succeeded!";
- // str = activity.getString(R.string.import_error);
} else {
color = Style.RED;
- str = "operation failed";
- // str = activity.getString(R.string.import_error);
}
boolean button = getLog() != null && !getLog().isEmpty();
@@ -197,7 +194,7 @@ public class OperationResultParcel implements Parcelable {
public void onClick(View view, Parcelable token) {
Intent intent = new Intent(
activity, LogDisplayActivity.class);
- intent.putExtra(LogDisplayFragment.EXTRA_RESULT, OperationResultParcel.this);
+ intent.putExtra(LogDisplayFragment.EXTRA_RESULT, OperationResult.this);
activity.startActivity(intent);
}
}
@@ -498,6 +495,11 @@ public class OperationResultParcel implements Parcelable {
MSG_SE_SIGCRYPTING (R.string.msg_se_sigcrypting),
MSG_SE_SYMMETRIC (R.string.msg_se_symmetric),
+ MSG_CRT_UPLOAD_SUCCESS (R.string.msg_crt_upload_success),
+ MSG_CRT_SUCCESS (R.string.msg_crt_success),
+
+ MSG_ACC_SAVED (R.string.api_settings_save)
+
;
private final int mMsgId;
@@ -533,27 +535,17 @@ public class OperationResultParcel implements Parcelable {
}
}
- public static final Creator<OperationResultParcel> CREATOR = new Creator<OperationResultParcel>() {
- public OperationResultParcel createFromParcel(final Parcel source) {
- return new OperationResultParcel(source);
- }
-
- public OperationResultParcel[] newArray(final int size) {
- return new OperationResultParcel[size];
- }
- };
-
public static class OperationLog implements Iterable<LogEntryParcel> {
private final List<LogEntryParcel> mParcels = new ArrayList<LogEntryParcel>();
/// Simple convenience method
public void add(LogLevel level, LogType type, int indent, Object... parameters) {
- mParcels.add(new OperationResultParcel.LogEntryParcel(level, type, indent, parameters));
+ mParcels.add(new OperationResult.LogEntryParcel(level, type, indent, parameters));
}
public void add(LogLevel level, LogType type, int indent) {
- mParcels.add(new OperationResultParcel.LogEntryParcel(level, type, indent, (Object[]) null));
+ mParcels.add(new OperationResult.LogEntryParcel(level, type, indent, (Object[]) null));
}
public boolean containsType(LogType type) {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SaveKeyringResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SaveKeyringResult.java
index 0edb9c617..e229a5c6a 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SaveKeyringResult.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SaveKeyringResult.java
@@ -23,7 +23,7 @@ import android.os.Parcel;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.pgp.CanonicalizedKeyRing;
-public class SaveKeyringResult extends OperationResultParcel {
+public class SaveKeyringResult extends OperationResult {
public final long mRingMasterKeyId;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SignEncryptResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SignEncryptResult.java
index 073eab354..9d492e545 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SignEncryptResult.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SignEncryptResult.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2014 Dominik Schürmann <dominik@dominikschuermann.de>
+ * Copyright (C) 2014 Vincent Breitmoser <v.breitmoser@mugenguild.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -19,15 +19,12 @@ package org.sufficientlysecure.keychain.service.results;
import android.os.Parcel;
-import org.openintents.openpgp.OpenPgpMetadata;
-import org.openintents.openpgp.OpenPgpSignatureResult;
-
import java.util.Date;
-public class SignEncryptResult extends OperationResultParcel {
+public class SignEncryptResult extends OperationResult {
- // the fourth bit indicates a "data pending" result!
- public static final int RESULT_PENDING = 8;
+ // the fourth bit indicates a "data pending" result! (it's also a form of non-success)
+ public static final int RESULT_PENDING = RESULT_ERROR +8;
// fifth to sixth bit in addition indicate specific type of pending
public static final int RESULT_PENDING_NFC = RESULT_PENDING +16;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SingletonResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SingletonResult.java
index 5022c46a7..38b2e4bc3 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SingletonResult.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SingletonResult.java
@@ -27,7 +27,7 @@ import com.github.johnpersano.supertoasts.util.Style;
/** This is a simple subclass meant to contain only a single log message. This log
* message is also shown without a log button in the createNotify SuperToast. */
-public class SingletonResult extends OperationResultParcel {
+public class SingletonResult extends OperationResult {
/** Construct from a parcel - trivial because we have no extra data. */
public SingletonResult(Parcel source) {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java
index fb2184362..81fa98e7a 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java
@@ -54,8 +54,11 @@ import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.provider.KeychainContract.UserIds;
import org.sufficientlysecure.keychain.service.KeychainIntentService;
import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel;
+import org.sufficientlysecure.keychain.service.results.OperationResult;
import org.sufficientlysecure.keychain.service.PassphraseCacheService;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogLevel;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogType;
+import org.sufficientlysecure.keychain.service.results.SingletonResult;
import org.sufficientlysecure.keychain.ui.adapter.UserIdsAdapter;
import org.sufficientlysecure.keychain.ui.dialog.PassphraseDialogFragment;
import org.sufficientlysecure.keychain.ui.widget.CertifyKeySpinner;
@@ -327,12 +330,10 @@ public class CertifyKeyFragment extends LoaderFragment
if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
-// Notify.showNotify(CertifyKeyActivity.this, R.string.key_certify_success,
-// Notify.Style.INFO);
-
- OperationResultParcel result = new OperationResultParcel(OperationResultParcel.RESULT_OK, null);
+ SingletonResult result = new SingletonResult(
+ SingletonResult.RESULT_OK, LogLevel.OK, LogType.MSG_CRT_SUCCESS);
Intent intent = new Intent();
- intent.putExtra(OperationResultParcel.EXTRA_RESULT, result);
+ intent.putExtra(SingletonResult.EXTRA_RESULT, result);
mActivity.setResult(CertifyKeyActivity.RESULT_OK, intent);
// check if we need to send the key to the server or not
@@ -383,12 +384,10 @@ public class CertifyKeyFragment extends LoaderFragment
super.handleMessage(message);
if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
- //Notify.showNotify(CertifyKeyActivity.this, R.string.key_send_success,
- //Notify.Style.INFO);
-
- OperationResultParcel result = new OperationResultParcel(OperationResultParcel.RESULT_OK, null);
+ SingletonResult result = new SingletonResult(SingletonResult.RESULT_OK,
+ LogLevel.OK, LogType.MSG_CRT_UPLOAD_SUCCESS);
Intent intent = new Intent();
- intent.putExtra(OperationResultParcel.EXTRA_RESULT, result);
+ intent.putExtra(SingletonResult.EXTRA_RESULT, result);
mActivity.setResult(CertifyKeyActivity.RESULT_OK, intent);
mActivity.finish();
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java
index a645f18a9..c6edc47a1 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java
@@ -39,7 +39,7 @@ import org.sufficientlysecure.keychain.pgp.KeyRing;
import org.sufficientlysecure.keychain.provider.KeychainContract;
import org.sufficientlysecure.keychain.service.KeychainIntentService;
import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel;
+import org.sufficientlysecure.keychain.service.results.OperationResult;
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.Algorithm;
import org.sufficientlysecure.keychain.service.results.SaveKeyringResult;
@@ -141,7 +141,7 @@ public class CreateKeyFinalFragment extends Fragment {
return;
}
final SaveKeyringResult result =
- returnData.getParcelable(OperationResultParcel.EXTRA_RESULT);
+ returnData.getParcelable(OperationResult.EXTRA_RESULT);
if (result == null) {
Log.e(Constants.TAG, "result == null");
return;
@@ -152,7 +152,7 @@ public class CreateKeyFinalFragment extends Fragment {
uploadKey(result);
} else {
Intent data = new Intent();
- data.putExtra(OperationResultParcel.EXTRA_RESULT, result);
+ data.putExtra(OperationResult.EXTRA_RESULT, result);
getActivity().setResult(Activity.RESULT_OK, data);
getActivity().finish();
}
@@ -204,7 +204,7 @@ public class CreateKeyFinalFragment extends Fragment {
Bundle data = new Bundle();
// upload to favorite keyserver
- String keyserver = Preferences.getPreferences(getActivity()).getKeyServers()[0];
+ String keyserver = Preferences.getPreferences(getActivity()).getPreferredKeyserver();
data.putString(KeychainIntentService.UPLOAD_KEY_SERVER, keyserver);
intent.putExtra(KeychainIntentService.EXTRA_DATA, data);
@@ -223,7 +223,7 @@ public class CreateKeyFinalFragment extends Fragment {
//Notify.Style.INFO);
Intent data = new Intent();
- data.putExtra(OperationResultParcel.EXTRA_RESULT, saveKeyResult);
+ data.putExtra(OperationResult.EXTRA_RESULT, saveKeyResult);
getActivity().setResult(Activity.RESULT_OK, data);
getActivity().finish();
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFilesFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFilesFragment.java
index ccfcfc2c5..f5d6eba1b 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFilesFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFilesFragment.java
@@ -205,7 +205,7 @@ public class DecryptFilesFragment extends DecryptFragment {
Bundle returnData = message.getData();
DecryptVerifyResult result =
- returnData.getParcelable(KeychainIntentService.RESULT_DECRYPT_VERIFY_RESULT);
+ returnData.getParcelable(DecryptVerifyResult.EXTRA_RESULT);
switch (result.getResult()) {
case DecryptVerifyResult.RESULT_PENDING_ASYM_PASSPHRASE:
@@ -285,7 +285,7 @@ public class DecryptFilesFragment extends DecryptFragment {
Bundle returnData = message.getData();
DecryptVerifyResult result =
- returnData.getParcelable(KeychainIntentService.RESULT_DECRYPT_VERIFY_RESULT);
+ returnData.getParcelable(DecryptVerifyResult.EXTRA_RESULT);
if (result.isPending()) {
switch (result.getResult()) {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java
index 13dab6673..c1bc563f8 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java
@@ -127,7 +127,7 @@ public class DecryptTextFragment extends DecryptFragment {
Bundle returnData = message.getData();
DecryptVerifyResult result =
- returnData.getParcelable(KeychainIntentService.RESULT_DECRYPT_VERIFY_RESULT);
+ returnData.getParcelable(DecryptVerifyResult.EXTRA_RESULT);
if (result.isPending()) {
switch (result.getResult()) {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java
index 8bde3f295..0911a98ae 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java
@@ -48,9 +48,9 @@ import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.provider.ProviderHelper.NotFoundException;
import org.sufficientlysecure.keychain.service.KeychainIntentService;
import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogLevel;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogType;
+import org.sufficientlysecure.keychain.service.results.OperationResult;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogLevel;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogType;
import org.sufficientlysecure.keychain.service.results.SingletonResult;
import org.sufficientlysecure.keychain.service.PassphraseCacheService;
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
@@ -541,8 +541,8 @@ public class EditKeyFragment extends LoaderFragment implements
if (returnData == null) {
return;
}
- final OperationResultParcel result =
- returnData.getParcelable(OperationResultParcel.EXTRA_RESULT);
+ final OperationResult result =
+ returnData.getParcelable(OperationResult.EXTRA_RESULT);
if (result == null) {
return;
}
@@ -555,7 +555,7 @@ public class EditKeyFragment extends LoaderFragment implements
// if good -> finish, return result to showkey and display there!
Intent intent = new Intent();
- intent.putExtra(OperationResultParcel.EXTRA_RESULT, result);
+ intent.putExtra(OperationResult.EXTRA_RESULT, result);
getActivity().setResult(EditKeyActivity.RESULT_OK, intent);
getActivity().finish();
@@ -590,7 +590,7 @@ public class EditKeyFragment extends LoaderFragment implements
// Prepare an intent with an EXTRA_RESULT
Intent intent = new Intent();
- intent.putExtra(OperationResultParcel.EXTRA_RESULT,
+ intent.putExtra(OperationResult.EXTRA_RESULT,
new SingletonResult(SingletonResult.RESULT_ERROR, LogLevel.ERROR, reason));
// Finish with result
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java
index 732e59e32..518a8046a 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java
@@ -46,7 +46,7 @@ import org.sufficientlysecure.keychain.keyimport.ParcelableKeyRing;
import org.sufficientlysecure.keychain.pgp.PgpKeyHelper;
import org.sufficientlysecure.keychain.service.KeychainIntentService;
import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel;
+import org.sufficientlysecure.keychain.service.results.OperationResult;
import org.sufficientlysecure.keychain.service.results.ImportKeyResult;
import org.sufficientlysecure.keychain.ui.adapter.PagerTabStripAdapter;
import org.sufficientlysecure.keychain.ui.widget.SlidingTabLayout;
@@ -68,8 +68,6 @@ public class ImportKeysActivity extends ActionBarActivity {
+ "IMPORT_KEY_FROM_KEY_SERVER_AND_RETURN";
public static final String ACTION_IMPORT_KEY_FROM_FILE_AND_RETURN = Constants.INTENT_PREFIX
+ "IMPORT_KEY_FROM_FILE_AND_RETURN";
- public static final String ACTION_IMPORT_KEY_FROM_KEYBASE = Constants.INTENT_PREFIX
- + "IMPORT_KEY_FROM_KEYBASE";
// Actions for internal use only:
public static final String ACTION_IMPORT_KEY_FROM_FILE = Constants.INTENT_PREFIX
@@ -101,12 +99,11 @@ public class ImportKeysActivity extends ActionBarActivity {
public static final int VIEW_PAGER_HEIGHT = 64; // dp
private static final int ALL_TABS = -1;
- private static final int TAB_KEYSERVER = 0;
+ private static final int TAB_CLOUD = 0;
private static final int TAB_QR_CODE = 1;
private static final int TAB_FILE = 2;
- private static final int TAB_KEYBASE = 3;
- private int mSwitchToTab = TAB_KEYSERVER;
+ private int mSwitchToTab = TAB_CLOUD;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -193,8 +190,8 @@ public class ImportKeysActivity extends ActionBarActivity {
if (query != null && query.length() > 0) {
// display keyserver fragment with query
serverBundle = new Bundle();
- serverBundle.putString(ImportKeysServerFragment.ARG_QUERY, query);
- mSwitchToTab = TAB_KEYSERVER;
+ serverBundle.putString(ImportKeysCloudFragment.ARG_QUERY, query);
+ mSwitchToTab = TAB_CLOUD;
// action: search immediately
startListFragment(savedInstanceState, null, null, query);
@@ -214,11 +211,11 @@ public class ImportKeysActivity extends ActionBarActivity {
// display keyserver fragment with query
serverBundle = new Bundle();
- serverBundle.putString(ImportKeysServerFragment.ARG_QUERY, query);
- serverBundle.putBoolean(ImportKeysServerFragment.ARG_DISABLE_QUERY_EDIT, true);
+ serverBundle.putString(ImportKeysCloudFragment.ARG_QUERY, query);
+ serverBundle.putBoolean(ImportKeysCloudFragment.ARG_DISABLE_QUERY_EDIT, true);
// display server tab only
- showTabOnly = TAB_KEYSERVER;
- mSwitchToTab = TAB_KEYSERVER;
+ showTabOnly = TAB_CLOUD;
+ mSwitchToTab = TAB_CLOUD;
// action: search immediately
startListFragment(savedInstanceState, null, null, query);
@@ -259,12 +256,6 @@ public class ImportKeysActivity extends ActionBarActivity {
// no immediate actions!
startListFragment(savedInstanceState, null, null, null);
- } else if (ACTION_IMPORT_KEY_FROM_KEYBASE.equals(action)) {
- // NOTE: this only displays the appropriate fragment, no actions are taken
- mSwitchToTab = TAB_KEYBASE;
-
- // no immediate actions!
- startListFragment(savedInstanceState, null, null, null);
} else {
startListFragment(savedInstanceState, null, null, null);
}
@@ -299,19 +290,17 @@ public class ImportKeysActivity extends ActionBarActivity {
switch (showTabOnly) {
case ALL_TABS:
- // show all tabs
- mTabsAdapter.addTab(ImportKeysServerFragment.class,
- serverBundle, getString(R.string.import_tab_keyserver));
+ // show default tabs
+ mTabsAdapter.addTab(ImportKeysCloudFragment.class,
+ serverBundle, getString(R.string.import_tab_cloud));
mTabsAdapter.addTab(ImportKeysQrCodeFragment.class,
null, getString(R.string.import_tab_qr_code));
mTabsAdapter.addTab(ImportKeysFileFragment.class,
null, getString(R.string.import_tab_direct));
- mTabsAdapter.addTab(ImportKeysKeybaseFragment.class,
- null, getString(R.string.import_tab_keybase));
break;
- case TAB_KEYSERVER:
- mTabsAdapter.addTab(ImportKeysServerFragment.class,
- serverBundle, getString(R.string.import_tab_keyserver));
+ case TAB_CLOUD:
+ mTabsAdapter.addTab(ImportKeysCloudFragment.class,
+ serverBundle, getString(R.string.import_tab_cloud));
break;
case TAB_QR_CODE:
mTabsAdapter.addTab(ImportKeysQrCodeFragment.class,
@@ -321,10 +310,6 @@ public class ImportKeysActivity extends ActionBarActivity {
mTabsAdapter.addTab(ImportKeysFileFragment.class,
null, getString(R.string.import_tab_direct));
break;
- case TAB_KEYBASE:
- mTabsAdapter.addTab(ImportKeysKeybaseFragment.class,
- null, getString(R.string.import_tab_keybase));
- break;
}
// update layout after operations
@@ -380,18 +365,17 @@ public class ImportKeysActivity extends ActionBarActivity {
if (mViewPager.getAdapter() != null)
mViewPager.setAdapter(null);
mViewPager.setAdapter(mTabsAdapter);
- mViewPager.setCurrentItem(TAB_KEYSERVER);
+ mViewPager.setCurrentItem(TAB_CLOUD);
- ImportKeysServerFragment f = (ImportKeysServerFragment)
- getActiveFragment(mViewPager, TAB_KEYSERVER);
+ ImportKeysCloudFragment f = (ImportKeysCloudFragment)
+ getActiveFragment(mViewPager, TAB_CLOUD);
- // ask favorite keyserver
- String keyserver = Preferences.getPreferences(ImportKeysActivity.this).getKeyServers()[0];
+ // search config
+ Preferences prefs = Preferences.getPreferences(ImportKeysActivity.this);
+ Preferences.CloudSearchPrefs cloudPrefs = new Preferences.CloudSearchPrefs(true, true, prefs.getPreferredKeyserver());
- // set fields of ImportKeysServerFragment
- f.setQueryAndKeyserver(query, keyserver);
// search directly
- loadCallback(new ImportKeysListFragment.KeyserverLoaderState(query, keyserver));
+ loadCallback(new ImportKeysListFragment.CloudLoaderState(query, cloudPrefs));
}
// http://stackoverflow.com/a/9293207
@@ -459,7 +443,7 @@ public class ImportKeysActivity extends ActionBarActivity {
return;
}
final ImportKeyResult result =
- returnData.getParcelable(OperationResultParcel.EXTRA_RESULT);
+ returnData.getParcelable(OperationResult.EXTRA_RESULT);
if (result == null) {
Log.e(Constants.TAG, "result == null");
return;
@@ -522,8 +506,8 @@ public class ImportKeysActivity extends ActionBarActivity {
Log.e(Constants.TAG, "Problem writing cache file", e);
Notify.showNotify(this, "Problem writing cache file!", Notify.Style.ERROR);
}
- } else if (ls instanceof ImportKeysListFragment.KeyserverLoaderState) {
- ImportKeysListFragment.KeyserverLoaderState sls = (ImportKeysListFragment.KeyserverLoaderState) ls;
+ } else if (ls instanceof ImportKeysListFragment.CloudLoaderState) {
+ ImportKeysListFragment.CloudLoaderState sls = (ImportKeysListFragment.CloudLoaderState) ls;
// Send all information needed to service to query keys in other thread
Intent intent = new Intent(this, KeychainIntentService.class);
@@ -533,31 +517,7 @@ public class ImportKeysActivity extends ActionBarActivity {
// fill values for this action
Bundle data = new Bundle();
- data.putString(KeychainIntentService.DOWNLOAD_KEY_SERVER, sls.keyserver);
-
- // get selected key entries
- ArrayList<ImportKeysListEntry> selectedEntries = mListFragment.getSelectedEntries();
- data.putParcelableArrayList(KeychainIntentService.DOWNLOAD_KEY_LIST, selectedEntries);
-
- intent.putExtra(KeychainIntentService.EXTRA_DATA, data);
-
- // Create a new Messenger for the communication back
- Messenger messenger = new Messenger(saveHandler);
- intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger);
-
- // show progress dialog
- saveHandler.showProgressDialog(this);
-
- // start service with intent
- startService(intent);
- } else if (ls instanceof ImportKeysListFragment.KeybaseLoaderState) {
- // Send all information needed to service to query keys in other thread
- Intent intent = new Intent(this, KeychainIntentService.class);
-
- intent.setAction(KeychainIntentService.ACTION_IMPORT_KEYBASE_KEYS);
-
- // fill values for this action
- Bundle data = new Bundle();
+ data.putString(KeychainIntentService.DOWNLOAD_KEY_SERVER, sls.mCloudPrefs.keyserver);
// get selected key entries
ArrayList<ImportKeysListEntry> selectedEntries = mListFragment.getSelectedEntries();
@@ -574,7 +534,6 @@ public class ImportKeysActivity extends ActionBarActivity {
// start service with intent
startService(intent);
-
} else {
Notify.showNotify(this, R.string.error_nothing_import, Notify.Style.ERROR);
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysServerFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysCloudFragment.java
index 88caebc32..6b4b833c6 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysServerFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysCloudFragment.java
@@ -19,6 +19,7 @@ package org.sufficientlysecure.keychain.ui;
import android.app.Activity;
import android.content.Context;
+import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.KeyEvent;
@@ -30,8 +31,6 @@ import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
-import android.widget.EditText;
-import android.widget.Spinner;
import android.widget.TextView;
import org.sufficientlysecure.keychain.Constants;
@@ -42,9 +41,8 @@ import org.sufficientlysecure.keychain.util.Log;
import java.util.List;
-public class ImportKeysServerFragment extends Fragment {
+public class ImportKeysCloudFragment extends Fragment {
public static final String ARG_QUERY = "query";
- public static final String ARG_KEYSERVER = "keyserver";
public static final String ARG_DISABLE_QUERY_EDIT = "disable_query_edit";
private ImportKeysActivity mImportActivity;
@@ -52,19 +50,16 @@ public class ImportKeysServerFragment extends Fragment {
private View mSearchButton;
private AutoCompleteTextView mQueryEditText;
private View mConfigButton;
- private View mConfigLayout;
- private Spinner mServerSpinner;
private ArrayAdapter<String> mServerAdapter;
/**
* Creates new instance of this fragment
*/
- public static ImportKeysServerFragment newInstance(String query, String keyserver) {
- ImportKeysServerFragment frag = new ImportKeysServerFragment();
+ public static ImportKeysCloudFragment newInstance(String query, String keyserver, boolean doKeyserver, boolean doKeybase) {
+ ImportKeysCloudFragment frag = new ImportKeysCloudFragment();
Bundle args = new Bundle();
args.putString(ARG_QUERY, query);
- args.putString(ARG_KEYSERVER, keyserver);
frag.setArguments(args);
@@ -76,26 +71,11 @@ public class ImportKeysServerFragment extends Fragment {
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.import_keys_server_fragment, container, false);
-
- mSearchButton = view.findViewById(R.id.import_server_search);
- mQueryEditText = (AutoCompleteTextView) view.findViewById(R.id.import_server_query);
- mConfigButton = view.findViewById(R.id.import_server_config_button);
- mConfigLayout = view.findViewById(R.id.import_server_config);
- mServerSpinner = (Spinner) view.findViewById(R.id.import_server_spinner);
-
- // add keyservers to spinner
- mServerAdapter = new ArrayAdapter<String>(getActivity(),
- android.R.layout.simple_spinner_item, Preferences.getPreferences(getActivity())
- .getKeyServers()
- );
- mServerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- mServerSpinner.setAdapter(mServerAdapter);
- if (mServerAdapter.getCount() > 0) {
- mServerSpinner.setSelection(0);
- } else {
- mSearchButton.setEnabled(false);
- }
+ View view = inflater.inflate(R.layout.import_keys_cloud_fragment, container, false);
+
+ mSearchButton = view.findViewById(R.id.cloud_import_server_search);
+ mQueryEditText = (AutoCompleteTextView) view.findViewById(R.id.cloud_import_server_query);
+ mConfigButton = view.findViewById(R.id.cloud_import_server_config_button);
List<String> namesAndEmails = ContactHelper.getContactNames(getActivity());
namesAndEmails.addAll(ContactHelper.getContactMails(getActivity()));
@@ -110,9 +90,7 @@ public class ImportKeysServerFragment extends Fragment {
mSearchButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
- String query = mQueryEditText.getText().toString();
- String keyServer = (String) mServerSpinner.getSelectedItem();
- search(query, keyServer);
+ search(mQueryEditText.getText().toString());
// close keyboard after pressing search
InputMethodManager imm =
@@ -125,9 +103,7 @@ public class ImportKeysServerFragment extends Fragment {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
- String query = mQueryEditText.getText().toString();
- String keyServer = (String) mServerSpinner.getSelectedItem();
- search(query, keyServer);
+ search(mQueryEditText.getText().toString());
// Don't return true to let the keyboard close itself after pressing search
return false;
@@ -139,11 +115,11 @@ public class ImportKeysServerFragment extends Fragment {
mConfigButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
- if (mImportActivity.getViewPagerHeight() > ImportKeysActivity.VIEW_PAGER_HEIGHT) {
- mImportActivity.resizeViewPager(ImportKeysActivity.VIEW_PAGER_HEIGHT);
- } else {
- mImportActivity.resizeViewPager(ImportKeysActivity.VIEW_PAGER_HEIGHT + 41);
- }
+ Intent i = new Intent(mImportActivity, PreferencesActivity.class);
+ // GRR, for some reason I can’t set the Action or I get an incomprehensible
+ // exception about “modern two-pane layouts”
+ // i.setAction(PreferencesActivity.ACTION_PREFS_CLOUD);
+ startActivity(i);
}
});
@@ -163,14 +139,6 @@ public class ImportKeysServerFragment extends Fragment {
Log.d(Constants.TAG, "query: " + query);
}
- if (getArguments().containsKey(ARG_KEYSERVER)) {
- String keyserver = getArguments().getString(ARG_KEYSERVER);
- int keyserverPos = mServerAdapter.getPosition(keyserver);
- mServerSpinner.setSelection(keyserverPos);
-
- Log.d(Constants.TAG, "keyserver: " + keyserver);
- }
-
if (getArguments().getBoolean(ARG_DISABLE_QUERY_EDIT, false)) {
mQueryEditText.setEnabled(false);
}
@@ -184,14 +152,9 @@ public class ImportKeysServerFragment extends Fragment {
mImportActivity = (ImportKeysActivity) activity;
}
- private void search(String query, String keyserver) {
- mImportActivity.loadCallback(new ImportKeysListFragment.KeyserverLoaderState(query, keyserver));
- }
-
- public void setQueryAndKeyserver(String query, String keyserver) {
- mQueryEditText.setText(query, TextView.BufferType.EDITABLE);
- int keyServerPos = mServerAdapter.getPosition(keyserver);
- mServerSpinner.setSelection(keyServerPos);
+ private void search(String query) {
+ Preferences prefs = Preferences.getPreferences(getActivity());
+ mImportActivity.loadCallback(new ImportKeysListFragment.CloudLoaderState(query, prefs.getCloudSearchPrefs()));
}
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysKeybaseFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysKeybaseFragment.java
deleted file mode 100644
index 3a82bdc32..000000000
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysKeybaseFragment.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2014 Dominik Schürmann <dominik@dominikschuermann.de>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-package org.sufficientlysecure.keychain.ui;
-
-import android.app.Activity;
-import android.content.Context;
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.view.KeyEvent;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.inputmethod.EditorInfo;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.EditText;
-import android.widget.TextView;
-
-import org.sufficientlysecure.keychain.R;
-
-/**
- * Import public keys from the Keybase.io directory. First cut: just raw search.
- * TODO: make a pick list of the people you’re following on keybase
- */
-public class ImportKeysKeybaseFragment extends Fragment {
-
- private ImportKeysActivity mImportActivity;
- private View mSearchButton;
- private EditText mQueryEditText;
-
- public static final String ARG_QUERY = "query";
-
- /**
- * Creates new instance of this fragment
- */
- public static ImportKeysKeybaseFragment newInstance() {
- ImportKeysKeybaseFragment frag = new ImportKeysKeybaseFragment();
-
- Bundle args = new Bundle();
- frag.setArguments(args);
-
- return frag;
- }
-
- /**
- * Inflate the layout for this fragment
- */
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.import_keys_keybase_fragment, container, false);
-
- mQueryEditText = (EditText) view.findViewById(R.id.import_keybase_query);
-
- mSearchButton = view.findViewById(R.id.import_keybase_search);
- mSearchButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String query = mQueryEditText.getText().toString();
- search(query);
-
- // close keyboard after pressing search
- InputMethodManager imm =
- (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(mQueryEditText.getWindowToken(), 0);
- }
- });
-
- mQueryEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
- @Override
- public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
- if (actionId == EditorInfo.IME_ACTION_SEARCH) {
- String query = mQueryEditText.getText().toString();
- search(query);
-
- // Don't return true to let the keyboard close itself after pressing search
- return false;
- }
- return false;
- }
- });
-
- return view;
- }
-
- @Override
- public void onActivityCreated(Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
-
- // set displayed values
- if (getArguments() != null) {
- if (getArguments().containsKey(ARG_QUERY)) {
- String query = getArguments().getString(ARG_QUERY);
- mQueryEditText.setText(query, TextView.BufferType.EDITABLE);
- }
- }
- }
-
- @Override
- public void onAttach(Activity activity) {
- super.onAttach(activity);
-
- mImportActivity = (ImportKeysActivity) activity;
- }
-
- private void search(String query) {
- mImportActivity.loadCallback(new ImportKeysListFragment.KeybaseLoaderState(query));
- }
-}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java
index fde0f5f23..f1f234461 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java
@@ -37,9 +37,8 @@ import org.sufficientlysecure.keychain.keyimport.Keyserver;
import org.sufficientlysecure.keychain.keyimport.ParcelableKeyRing;
import org.sufficientlysecure.keychain.ui.adapter.AsyncTaskResultWrapper;
import org.sufficientlysecure.keychain.ui.adapter.ImportKeysAdapter;
-import org.sufficientlysecure.keychain.ui.adapter.ImportKeysListKeybaseLoader;
+import org.sufficientlysecure.keychain.ui.adapter.ImportKeysListCloudLoader;
import org.sufficientlysecure.keychain.ui.adapter.ImportKeysListLoader;
-import org.sufficientlysecure.keychain.ui.adapter.ImportKeysListServerLoader;
import org.sufficientlysecure.keychain.util.InputData;
import org.sufficientlysecure.keychain.util.Log;
import org.sufficientlysecure.keychain.util.Notify;
@@ -63,8 +62,7 @@ public class ImportKeysListFragment extends ListFragment implements
private LoaderState mLoaderState;
private static final int LOADER_ID_BYTES = 0;
- private static final int LOADER_ID_SERVER_QUERY = 1;
- private static final int LOADER_ID_KEYBASE = 2;
+ private static final int LOADER_ID_CLOUD = 1;
private LongSparseArray<ParcelableKeyRing> mCachedKeyData;
@@ -118,21 +116,13 @@ public class ImportKeysListFragment extends ListFragment implements
}
}
- static public class KeyserverLoaderState extends LoaderState {
- String serverQuery;
- String keyserver;
+ static public class CloudLoaderState extends LoaderState {
+ Preferences.CloudSearchPrefs mCloudPrefs;
+ String mServerQuery;
- KeyserverLoaderState(String serverQuery, String keyserver) {
- this.serverQuery = serverQuery;
- this.keyserver = keyserver;
- }
- }
-
- static public class KeybaseLoaderState extends LoaderState {
- String keybaseQuery;
-
- KeybaseLoaderState(String keybaseQuery) {
- this.keybaseQuery = keybaseQuery;
+ CloudLoaderState(String serverQuery, Preferences.CloudSearchPrefs cloudPrefs) {
+ mServerQuery = serverQuery;
+ mCloudPrefs = cloudPrefs;
}
}
@@ -161,9 +151,8 @@ public class ImportKeysListFragment extends ListFragment implements
} else if (query != null) {
// TODO: this is used when updating a key.
// Currently it simply uses keyserver nr 0
- String keyserver = Preferences.getPreferences(getActivity())
- .getKeyServers()[0];
- mLoaderState = new KeyserverLoaderState(query, keyserver);
+ Preferences prefs = Preferences.getPreferences(getActivity());
+ mLoaderState = new CloudLoaderState(query, prefs.getCloudSearchPrefs());
}
getListView().setOnTouchListener(new OnTouchListener() {
@@ -202,11 +191,8 @@ public class ImportKeysListFragment extends ListFragment implements
if (getLoaderManager().getLoader(LOADER_ID_BYTES) != null) {
getLoaderManager().destroyLoader(LOADER_ID_BYTES);
}
- if (getLoaderManager().getLoader(LOADER_ID_SERVER_QUERY) != null) {
- getLoaderManager().destroyLoader(LOADER_ID_SERVER_QUERY);
- }
- if (getLoaderManager().getLoader(LOADER_ID_KEYBASE) != null) {
- getLoaderManager().destroyLoader(LOADER_ID_KEYBASE);
+ if (getLoaderManager().getLoader(LOADER_ID_CLOUD) != null) {
+ getLoaderManager().destroyLoader(LOADER_ID_CLOUD);
}
if (getView() != null) {
setListShown(true);
@@ -219,16 +205,11 @@ public class ImportKeysListFragment extends ListFragment implements
setListShown(false);
getLoaderManager().restartLoader(LOADER_ID_BYTES, null, this);
- } else if (mLoaderState instanceof KeyserverLoaderState) {
- // Start out with a progress indicator.
- setListShown(false);
-
- getLoaderManager().restartLoader(LOADER_ID_SERVER_QUERY, null, this);
- } else if (mLoaderState instanceof KeybaseLoaderState) {
+ } else if (mLoaderState instanceof CloudLoaderState) {
// Start out with a progress indicator.
setListShown(false);
- getLoaderManager().restartLoader(LOADER_ID_KEYBASE, null, this);
+ getLoaderManager().restartLoader(LOADER_ID_CLOUD, null, this);
}
}
@@ -241,13 +222,9 @@ public class ImportKeysListFragment extends ListFragment implements
InputData inputData = getInputData(ls.keyBytes, ls.dataUri);
return new ImportKeysListLoader(mActivity, inputData);
}
- case LOADER_ID_SERVER_QUERY: {
- KeyserverLoaderState ls = (KeyserverLoaderState) mLoaderState;
- return new ImportKeysListServerLoader(getActivity(), ls.serverQuery, ls.keyserver);
- }
- case LOADER_ID_KEYBASE: {
- KeybaseLoaderState ls = (KeybaseLoaderState) mLoaderState;
- return new ImportKeysListKeybaseLoader(getActivity(), ls.keybaseQuery);
+ case LOADER_ID_CLOUD: {
+ CloudLoaderState ls = (CloudLoaderState) mLoaderState;
+ return new ImportKeysListCloudLoader(getActivity(), ls.mServerQuery, ls.mCloudPrefs);
}
default:
@@ -301,8 +278,7 @@ public class ImportKeysListFragment extends ListFragment implements
}
break;
- case LOADER_ID_SERVER_QUERY:
- case LOADER_ID_KEYBASE:
+ case LOADER_ID_CLOUD:
if (error == null) {
// No error
@@ -333,11 +309,7 @@ public class ImportKeysListFragment extends ListFragment implements
// Clear the data in the adapter.
mAdapter.clear();
break;
- case LOADER_ID_SERVER_QUERY:
- // Clear the data in the adapter.
- mAdapter.clear();
- break;
- case LOADER_ID_KEYBASE:
+ case LOADER_ID_CLOUD:
// Clear the data in the adapter.
mAdapter.clear();
break;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListActivity.java
index 1b3bb06c3..4c94d25be 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListActivity.java
@@ -34,7 +34,7 @@ import org.sufficientlysecure.keychain.provider.KeychainContract;
import org.sufficientlysecure.keychain.provider.KeychainDatabase;
import org.sufficientlysecure.keychain.service.KeychainIntentService;
import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel;
+import org.sufficientlysecure.keychain.service.results.OperationResult;
import org.sufficientlysecure.keychain.service.results.ConsolidateResult;
import org.sufficientlysecure.keychain.util.Log;
import org.sufficientlysecure.keychain.util.Notify;
@@ -166,7 +166,7 @@ public class KeyListActivity extends DrawerActivity {
return;
}
final ConsolidateResult result =
- returnData.getParcelable(OperationResultParcel.EXTRA_RESULT);
+ returnData.getParcelable(OperationResult.EXTRA_RESULT);
if (result == null) {
return;
}
@@ -201,8 +201,8 @@ public class KeyListActivity extends DrawerActivity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// if a result has been returned, display a notify
- if (data != null && data.hasExtra(OperationResultParcel.EXTRA_RESULT)) {
- OperationResultParcel result = data.getParcelableExtra(OperationResultParcel.EXTRA_RESULT);
+ if (data != null && data.hasExtra(OperationResult.EXTRA_RESULT)) {
+ OperationResult result = data.getParcelableExtra(OperationResult.EXTRA_RESULT);
result.createNotify(this).show();
} else {
super.onActivityResult(requestCode, resultCode, data);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java
index ddc57b8aa..fcd9324c9 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java
@@ -37,9 +37,9 @@ import android.widget.TextView;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogEntryParcel;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel.LogLevel;
+import org.sufficientlysecure.keychain.service.results.OperationResult;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogEntryParcel;
+import org.sufficientlysecure.keychain.service.results.OperationResult.LogLevel;
import org.sufficientlysecure.keychain.util.Log;
import java.util.HashMap;
@@ -50,7 +50,7 @@ public class LogDisplayFragment extends ListFragment implements OnTouchListener
LogAdapter mAdapter;
LogLevel mLevel = LogLevel.DEBUG;
- OperationResultParcel mResult;
+ OperationResult mResult;
GestureDetector mDetector;
@@ -66,7 +66,7 @@ public class LogDisplayFragment extends ListFragment implements OnTouchListener
return;
}
- mResult = intent.<OperationResultParcel>getParcelableExtra(EXTRA_RESULT);
+ mResult = intent.<OperationResult>getParcelableExtra(EXTRA_RESULT);
if (mResult == null) {
getActivity().finish();
return;
@@ -135,7 +135,7 @@ public class LogDisplayFragment extends ListFragment implements OnTouchListener
private LayoutInflater mInflater;
private int dipFactor;
- public LogAdapter(Context context, OperationResultParcel.OperationLog log, LogLevel level) {
+ public LogAdapter(Context context, OperationResult.OperationLog log, LogLevel level) {
super(context, R.layout.log_display_item);
mInflater = LayoutInflater.from(getContext());
dipFactor = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PreferencesActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PreferencesActivity.java
index 1221966e1..dd4fedf9d 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PreferencesActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PreferencesActivity.java
@@ -18,6 +18,7 @@
package org.sufficientlysecure.keychain.ui;
import android.annotation.SuppressLint;
+import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
@@ -40,7 +41,7 @@ import java.util.List;
@SuppressLint("NewApi")
public class PreferencesActivity extends PreferenceActivity {
- public static final String ACTION_PREFS_GEN = "org.sufficientlysecure.keychain.ui.PREFS_GEN";
+ 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 int REQUEST_CODE_KEYSERVER_PREF = 0x00007005;
@@ -55,16 +56,11 @@ public class PreferencesActivity extends PreferenceActivity {
String action = getIntent().getAction();
- if (action != null && action.equals(ACTION_PREFS_GEN)) {
- addPreferencesFromResource(R.xml.gen_preferences);
-
- initializePassPassphraceCacheTtl(
- (IntegerListPreference) findPreference(Constants.Pref.PASSPHRASE_CACHE_TTL));
+ if (action != null && action.equals(ACTION_PREFS_CLOUD)) {
+ addPreferencesFromResource(R.xml.cloud_search_prefs);
mKeyServerPreference = (PreferenceScreen) findPreference(Constants.Pref.KEY_SERVERS);
- String servers[] = sPreferences.getKeyServers();
- mKeyServerPreference.setSummary(getResources().getQuantityString(R.plurals.n_keyservers,
- servers.length, servers.length));
+ mKeyServerPreference.setSummary(keyserverSummary(this));
mKeyServerPreference
.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
@@ -76,10 +72,19 @@ public class PreferencesActivity extends PreferenceActivity {
return false;
}
});
+ initializeSearchKeyserver(
+ (CheckBoxPreference) findPreference(Constants.Pref.SEARCH_KEYSERVER)
+ );
+ initializeSearchKeybase(
+ (CheckBoxPreference) findPreference(Constants.Pref.SEARCH_KEYBASE)
+ );
} else if (action != null && action.equals(ACTION_PREFS_ADV)) {
addPreferencesFromResource(R.xml.adv_preferences);
+ initializePassPassphraceCacheTtl(
+ (IntegerListPreference) findPreference(Constants.Pref.PASSPHRASE_CACHE_TTL));
+
initializeEncryptionAlgorithm(
(IntegerListPreference) findPreference(Constants.Pref.DEFAULT_ENCRYPTION_ALGORITHM));
@@ -136,8 +141,7 @@ public class PreferencesActivity extends PreferenceActivity {
String servers[] = data
.getStringArrayExtra(PreferencesKeyServerActivity.EXTRA_KEY_SERVERS);
sPreferences.setKeyServers(servers);
- mKeyServerPreference.setSummary(getResources().getQuantityString(
- R.plurals.n_keyservers, servers.length, servers.length));
+ mKeyServerPreference.setSummary(keyserverSummary(this));
break;
}
@@ -156,9 +160,9 @@ public class PreferencesActivity extends PreferenceActivity {
}
/**
- * This fragment shows the general preferences in android 3.0+
+ * This fragment shows the Cloud Search preferences in android 3.0+
*/
- public static class GeneralPrefsFragment extends PreferenceFragment {
+ public static class CloudSearchPrefsFragment extends PreferenceFragment {
private PreferenceScreen mKeyServerPreference = null;
@@ -167,15 +171,11 @@ public class PreferencesActivity extends PreferenceActivity {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
- addPreferencesFromResource(R.xml.gen_preferences);
-
- initializePassPassphraceCacheTtl(
- (IntegerListPreference) findPreference(Constants.Pref.PASSPHRASE_CACHE_TTL));
+ addPreferencesFromResource(R.xml.cloud_search_prefs);
mKeyServerPreference = (PreferenceScreen) findPreference(Constants.Pref.KEY_SERVERS);
- String servers[] = sPreferences.getKeyServers();
- mKeyServerPreference.setSummary(getResources().getQuantityString(R.plurals.n_keyservers,
- servers.length, servers.length));
+ mKeyServerPreference.setSummary(keyserverSummary(getActivity()));
+
mKeyServerPreference
.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
@@ -187,6 +187,12 @@ public class PreferencesActivity extends PreferenceActivity {
return false;
}
});
+ initializeSearchKeyserver(
+ (CheckBoxPreference) findPreference(Constants.Pref.SEARCH_KEYSERVER)
+ );
+ initializeSearchKeybase(
+ (CheckBoxPreference) findPreference(Constants.Pref.SEARCH_KEYBASE)
+ );
}
@Override
@@ -199,8 +205,7 @@ public class PreferencesActivity extends PreferenceActivity {
String servers[] = data
.getStringArrayExtra(PreferencesKeyServerActivity.EXTRA_KEY_SERVERS);
sPreferences.setKeyServers(servers);
- mKeyServerPreference.setSummary(getResources().getQuantityString(
- R.plurals.n_keyservers, servers.length, servers.length));
+ mKeyServerPreference.setSummary(keyserverSummary(getActivity()));
break;
}
@@ -224,6 +229,9 @@ public class PreferencesActivity extends PreferenceActivity {
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.adv_preferences);
+ initializePassPassphraceCacheTtl(
+ (IntegerListPreference) findPreference(Constants.Pref.PASSPHRASE_CACHE_TTL));
+
initializeEncryptionAlgorithm(
(IntegerListPreference) findPreference(Constants.Pref.DEFAULT_ENCRYPTION_ALGORITHM));
@@ -271,7 +279,7 @@ public class PreferencesActivity extends PreferenceActivity {
protected boolean isValidFragment(String fragmentName) {
return AdvancedPrefsFragment.class.getName().equals(fragmentName)
- || GeneralPrefsFragment.class.getName().equals(fragmentName)
+ || CloudSearchPrefsFragment.class.getName().equals(fragmentName)
|| super.isValidFragment(fragmentName);
}
@@ -398,6 +406,39 @@ public class PreferencesActivity extends PreferenceActivity {
});
}
+ private static void initializeSearchKeyserver(final CheckBoxPreference mSearchKeyserver) {
+ Preferences.CloudSearchPrefs prefs = sPreferences.getCloudSearchPrefs();
+ mSearchKeyserver.setChecked(prefs.searchKeyserver);
+ mSearchKeyserver.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ mSearchKeyserver.setChecked((Boolean) newValue);
+ sPreferences.setSearchKeyserver((Boolean) newValue);
+ return false;
+ }
+ });
+ }
+
+ private static void initializeSearchKeybase(final CheckBoxPreference mSearchKeybase) {
+ Preferences.CloudSearchPrefs prefs = sPreferences.getCloudSearchPrefs();
+ mSearchKeybase.setChecked(prefs.searchKeybase);
+ mSearchKeybase.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ mSearchKeybase.setChecked((Boolean) newValue);
+ sPreferences.setSearchKeybase((Boolean) newValue);
+ return false;
+ }
+ });
+ }
+
+ public static String keyserverSummary(Context context) {
+ String[] servers = sPreferences.getKeyServers();
+ String serverSummary = context.getResources().getQuantityString(
+ R.plurals.n_keyservers, servers.length, servers.length);
+ return serverSummary + "; " + context.getString(R.string.label_preferred) + ": " + sPreferences.getPreferredKeyserver();
+ }
+
private static void initializeUseDefaultYubikeyPin(final CheckBoxPreference mUseDefaultYubikeyPin) {
mUseDefaultYubikeyPin.setChecked(sPreferences.useDefaultYubikeyPin());
mUseDefaultYubikeyPin.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@@ -408,4 +449,5 @@ public class PreferencesActivity extends PreferenceActivity {
}
});
}
+
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PreferencesKeyServerActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PreferencesKeyServerActivity.java
index 0de675bab..520f0b6a5 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PreferencesKeyServerActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PreferencesKeyServerActivity.java
@@ -43,6 +43,7 @@ public class PreferencesKeyServerActivity extends ActionBarActivity implements O
private LayoutInflater mInflater;
private ViewGroup mEditors;
private View mAdd;
+ private View mRotate;
private TextView mTitle;
private TextView mSummary;
@@ -73,6 +74,7 @@ public class PreferencesKeyServerActivity extends ActionBarActivity implements O
mTitle = (TextView) findViewById(R.id.title);
mSummary = (TextView) findViewById(R.id.summary);
+ mSummary.setText(getText(R.string.label_first_keyserver_is_used));
mTitle.setText(R.string.label_keyservers);
@@ -80,9 +82,29 @@ public class PreferencesKeyServerActivity extends ActionBarActivity implements O
mAdd = findViewById(R.id.add);
mAdd.setOnClickListener(this);
+ mRotate = findViewById(R.id.rotate);
+ mRotate.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Vector<String> servers = serverList();
+ String first = servers.get(0);
+ if (first != null) {
+ servers.remove(0);
+ servers.add(first);
+ String[] dummy = {};
+ makeServerList(servers.toArray(dummy));
+ }
+ }
+ });
+
Intent intent = getIntent();
String servers[] = intent.getStringArrayExtra(EXTRA_KEY_SERVERS);
+ makeServerList(servers);
+ }
+
+ private void makeServerList(String[] servers) {
if (servers != null) {
+ mEditors.removeAllViews();
for (String serv : servers) {
KeyServerEditor view = (KeyServerEditor) mInflater.inflate(
R.layout.key_server_editor, mEditors, false);
@@ -114,6 +136,18 @@ public class PreferencesKeyServerActivity extends ActionBarActivity implements O
finish();
}
+ private Vector<String> serverList() {
+ Vector<String> servers = new Vector<String>();
+ for (int i = 0; i < mEditors.getChildCount(); ++i) {
+ KeyServerEditor editor = (KeyServerEditor) mEditors.getChildAt(i);
+ String tmp = editor.getValue();
+ if (tmp.length() > 0) {
+ servers.add(tmp);
+ }
+ }
+ return servers;
+ }
+
private void okClicked() {
Intent data = new Intent();
Vector<String> servers = new Vector<String>();
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
index ef0b95bcc..805fc8753 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
@@ -56,7 +56,7 @@ import org.sufficientlysecure.keychain.pgp.PgpKeyHelper;
import org.sufficientlysecure.keychain.provider.KeychainContract;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler;
-import org.sufficientlysecure.keychain.service.results.OperationResultParcel;
+import org.sufficientlysecure.keychain.service.results.OperationResult;
import org.sufficientlysecure.keychain.ui.adapter.PagerTabStripAdapter;
import org.sufficientlysecure.keychain.ui.widget.SlidingTabLayout;
import org.sufficientlysecure.keychain.ui.widget.SlidingTabLayout.TabColorizer;
@@ -322,8 +322,8 @@ public class ViewKeyActivity extends ActionBarActivity implements
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// if a result has been returned, display a notify
- if (data != null && data.hasExtra(OperationResultParcel.EXTRA_RESULT)) {
- OperationResultParcel result = data.getParcelableExtra(OperationResultParcel.EXTRA_RESULT);
+ if (data != null && data.hasExtra(OperationResult.EXTRA_RESULT)) {
+ OperationResult result = data.getParcelableExtra(OperationResult.EXTRA_RESULT);
result.createNotify(this).show();
} else {
super.onActivityResult(requestCode, resultCode, data);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListServerLoader.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListCloudLoader.java
index d62c2db43..d39feda76 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListServerLoader.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListCloudLoader.java
@@ -21,28 +21,29 @@ import android.content.Context;
import android.support.v4.content.AsyncTaskLoader;
import org.sufficientlysecure.keychain.Constants;
-import org.sufficientlysecure.keychain.keyimport.HkpKeyserver;
+import org.sufficientlysecure.keychain.helper.Preferences;
+import org.sufficientlysecure.keychain.keyimport.CloudSearch;
import org.sufficientlysecure.keychain.keyimport.ImportKeysListEntry;
-import org.sufficientlysecure.keychain.keyimport.Keyserver;
import org.sufficientlysecure.keychain.util.Log;
import java.util.ArrayList;
-public class ImportKeysListServerLoader
+public class ImportKeysListCloudLoader
extends AsyncTaskLoader<AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>> {
Context mContext;
+
+ Preferences.CloudSearchPrefs mCloudPrefs;
String mServerQuery;
- String mKeyServer;
private ArrayList<ImportKeysListEntry> mEntryList = new ArrayList<ImportKeysListEntry>();
private AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>> mEntryListWrapper;
- public ImportKeysListServerLoader(Context context, String serverQuery, String keyServer) {
+ public ImportKeysListCloudLoader(Context context, String serverQuery, Preferences.CloudSearchPrefs cloudPrefs) {
super(context);
mContext = context;
mServerQuery = serverQuery;
- mKeyServer = keyServer;
+ mCloudPrefs = cloudPrefs;
}
@Override
@@ -56,9 +57,9 @@ public class ImportKeysListServerLoader
if (mServerQuery.startsWith("0x") && mServerQuery.length() == 42) {
Log.d(Constants.TAG, "This search is based on a unique fingerprint. Enforce a fingerprint check!");
- queryServer(mServerQuery, mKeyServer, true);
+ queryServer(true);
} else {
- queryServer(mServerQuery, mKeyServer, false);
+ queryServer(false);
}
return mEntryListWrapper;
@@ -90,15 +91,14 @@ public class ImportKeysListServerLoader
/**
* Query keyserver
*/
- private void queryServer(String query, String keyServer, boolean enforceFingerprint) {
- HkpKeyserver server = new HkpKeyserver(keyServer);
+ private void queryServer(boolean enforceFingerprint) {
try {
- ArrayList<ImportKeysListEntry> searchResult = server.search(query);
+ ArrayList<ImportKeysListEntry> searchResult = CloudSearch.search(mServerQuery, mCloudPrefs);
mEntryList.clear();
// add result to data
if (enforceFingerprint) {
- String fingerprint = query.substring(2);
+ String fingerprint = mServerQuery.substring(2);
Log.d(Constants.TAG, "fingerprint: " + fingerprint);
// query must return only one result!
if (searchResult.size() == 1) {
@@ -115,11 +115,8 @@ public class ImportKeysListServerLoader
mEntryList.addAll(searchResult);
}
mEntryListWrapper = new AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>(mEntryList, null);
- } catch (Keyserver.QueryFailedException e) {
- mEntryListWrapper = new AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>(mEntryList, e);
- } catch (Keyserver.QueryNeedsRepairException e) {
+ } catch (Exception e) {
mEntryListWrapper = new AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>(mEntryList, e);
}
}
-
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListKeybaseLoader.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListKeybaseLoader.java
deleted file mode 100644
index d2aefc220..000000000
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListKeybaseLoader.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2014 Dominik Schürmann <dominik@dominikschuermann.de>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-package org.sufficientlysecure.keychain.ui.adapter;
-
-import android.content.Context;
-import android.support.v4.content.AsyncTaskLoader;
-
-import org.sufficientlysecure.keychain.Constants;
-import org.sufficientlysecure.keychain.keyimport.ImportKeysListEntry;
-import org.sufficientlysecure.keychain.keyimport.KeybaseKeyserver;
-import org.sufficientlysecure.keychain.keyimport.Keyserver;
-import org.sufficientlysecure.keychain.util.Log;
-
-import java.util.ArrayList;
-
-public class ImportKeysListKeybaseLoader
- extends AsyncTaskLoader<AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>> {
- Context mContext;
-
- String mKeybaseQuery;
-
- private ArrayList<ImportKeysListEntry> mEntryList = new ArrayList<ImportKeysListEntry>();
- private AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>> mEntryListWrapper;
-
- public ImportKeysListKeybaseLoader(Context context, String keybaseQuery) {
- super(context);
- mContext = context;
- mKeybaseQuery = keybaseQuery;
- }
-
- @Override
- public AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>> loadInBackground() {
-
- mEntryListWrapper = new AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>(mEntryList, null);
-
- if (mKeybaseQuery == null) {
- Log.e(Constants.TAG, "mKeybaseQery is null!");
- return mEntryListWrapper;
- }
-
- queryServer(mKeybaseQuery);
-
- return mEntryListWrapper;
- }
-
- @Override
- protected void onReset() {
- super.onReset();
-
- // Ensure the loader is stopped
- onStopLoading();
- }
-
- @Override
- protected void onStartLoading() {
- forceLoad();
- }
-
- @Override
- protected void onStopLoading() {
- cancelLoad();
- }
-
- @Override
- public void deliverResult(AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>> data) {
- super.deliverResult(data);
- }
-
- /**
- * Query keybase
- */
- private void queryServer(String query) {
-
- KeybaseKeyserver server = new KeybaseKeyserver();
- try {
- ArrayList<ImportKeysListEntry> searchResult = server.search(query);
-
- mEntryList.clear();
-
- mEntryList.addAll(searchResult);
- mEntryListWrapper = new AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>(mEntryList, null);
- } catch (Keyserver.QueryFailedException e) {
- mEntryListWrapper = new AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>(mEntryList, e);
- } catch (Keyserver.QueryNeedsRepairException e) {
- mEntryListWrapper = new AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>(mEntryList, e);
- }
- }
-}