From bad8aeea781bad8db11d8d2df9cfc7ca579f6adc Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Sat, 4 Oct 2014 23:16:51 +0200 Subject: implement preliminary MultiCertifyActivity (most heavy lifting is done) --- .../keychain/provider/KeychainContract.java | 5 ++++- .../keychain/provider/KeychainProvider.java | 26 ++++++++++++++++------ 2 files changed, 23 insertions(+), 8 deletions(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider') 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 { *
          * key_rings/unified
          * key_rings/public
+         * key_rings/secret
+         * key_rings/user_ids
          * 
*/ 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 projectionMap = new HashMap(); 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; -- cgit v1.2.3