aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2014-10-04 23:16:51 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2014-10-04 23:16:51 +0200
commitbad8aeea781bad8db11d8d2df9cfc7ca579f6adc (patch)
tree5b2fe6b54e6fdc7f6b7d9b2ed772414ba2fcf83e /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider
parent0ffa1b94ded0bb89c0f1b0f3ed48562646bde3fc (diff)
downloadopen-keychain-bad8aeea781bad8db11d8d2df9cfc7ca579f6adc.tar.gz
open-keychain-bad8aeea781bad8db11d8d2df9cfc7ca579f6adc.tar.bz2
open-keychain-bad8aeea781bad8db11d8d2df9cfc7ca579f6adc.zip
implement preliminary MultiCertifyActivity (most heavy lifting is done)
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java5
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java26
2 files changed, 23 insertions, 8 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java
index 33f51cbf9..6127002bb 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java
@@ -89,7 +89,6 @@ public class KeychainContract {
.parse("content://" + CONTENT_AUTHORITY);
public static final String BASE_KEY_RINGS = "key_rings";
- public static final String BASE_DATA = "data";
public static final String PATH_UNIFIED = "unified";
@@ -243,6 +242,10 @@ public class KeychainContract {
public static final String CONTENT_ITEM_TYPE
= "vnd.android.cursor.item/vnd.org.sufficientlysecure.keychain.provider.user_ids";
+ public static Uri buildUserIdsUri() {
+ return CONTENT_URI.buildUpon().appendPath(PATH_USER_IDS).build();
+ }
+
public static Uri buildUserIdsUri(long masterKeyId) {
return CONTENT_URI.buildUpon().appendPath(Long.toString(masterKeyId)).appendPath(PATH_USER_IDS).build();
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java
index 80f4610a4..d40287690 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java
@@ -51,6 +51,7 @@ public class KeychainProvider extends ContentProvider {
private static final int KEY_RINGS_UNIFIED = 101;
private static final int KEY_RINGS_PUBLIC = 102;
private static final int KEY_RINGS_SECRET = 103;
+ private static final int KEY_RINGS_USER_IDS = 104;
private static final int KEY_RING_UNIFIED = 200;
private static final int KEY_RING_KEYS = 201;
@@ -85,17 +86,22 @@ public class KeychainProvider extends ContentProvider {
* <pre>
* key_rings/unified
* key_rings/public
+ * key_rings/secret
+ * key_rings/user_ids
* </pre>
*/
matcher.addURI(authority, KeychainContract.BASE_KEY_RINGS
- + "/" + KeychainContract.PATH_UNIFIED,
+ + "/" + KeychainContract.PATH_UNIFIED,
KEY_RINGS_UNIFIED);
matcher.addURI(authority, KeychainContract.BASE_KEY_RINGS
- + "/" + KeychainContract.PATH_PUBLIC,
+ + "/" + KeychainContract.PATH_PUBLIC,
KEY_RINGS_PUBLIC);
matcher.addURI(authority, KeychainContract.BASE_KEY_RINGS
- + "/" + KeychainContract.PATH_SECRET,
+ + "/" + KeychainContract.PATH_SECRET,
KEY_RINGS_SECRET);
+ matcher.addURI(authority, KeychainContract.BASE_KEY_RINGS
+ + "/" + KeychainContract.PATH_USER_IDS,
+ KEY_RINGS_USER_IDS);
/**
* find by criteria other than master key id
@@ -450,6 +456,7 @@ public class KeychainProvider extends ContentProvider {
break;
}
+ case KEY_RINGS_USER_IDS:
case KEY_RING_USER_IDS: {
HashMap<String, String> projectionMap = new HashMap<String, String>();
projectionMap.put(UserIds._ID, Tables.USER_IDS + ".oid AS _id");
@@ -470,13 +477,18 @@ public class KeychainProvider extends ContentProvider {
+ Tables.CERTS + "." + Certs.RANK
+ " AND " + Tables.CERTS + "." + Certs.VERIFIED + " > 0"
+ ")");
- groupBy = Tables.USER_IDS + "." + UserIds.RANK;
+ groupBy = Tables.USER_IDS + "." + UserIds.MASTER_KEY_ID
+ + ", " + Tables.USER_IDS + "." + UserIds.RANK;
- qb.appendWhere(Tables.USER_IDS + "." + UserIds.MASTER_KEY_ID + " = ");
- qb.appendWhereEscapeString(uri.getPathSegments().get(1));
+ // If we are searching for a particular keyring's ids, add where
+ if (match == KEY_RING_USER_IDS) {
+ qb.appendWhere(Tables.USER_IDS + "." + UserIds.MASTER_KEY_ID + " = ");
+ qb.appendWhereEscapeString(uri.getPathSegments().get(1));
+ }
if (TextUtils.isEmpty(sortOrder)) {
- sortOrder = Tables.USER_IDS + "." + UserIds.RANK + " ASC";
+ sortOrder = Tables.USER_IDS + "." + UserIds.MASTER_KEY_ID + " ASC"
+ + "," + Tables.USER_IDS + "." + UserIds.RANK + " ASC";
}
break;