diff options
author | Thialfihar <thialfihar@gmail.com> | 2010-06-06 15:54:27 +0000 |
---|---|---|
committer | Thialfihar <thialfihar@gmail.com> | 2010-06-06 15:54:27 +0000 |
commit | 68d74b4d549d6fb84eb61c044dac6f7360e14473 (patch) | |
tree | 02f5b2cd36c864314938a4caa0d269813314afdd /src | |
parent | a0ab2402144dd5913d6b8f6588b4dea392b45572 (diff) | |
download | open-keychain-68d74b4d549d6fb84eb61c044dac6f7360e14473.tar.gz open-keychain-68d74b4d549d6fb84eb61c044dac6f7360e14473.tar.bz2 open-keychain-68d74b4d549d6fb84eb61c044dac6f7360e14473.zip |
the select public key list now uses the selection for the ordering, putting already selected keys on top, also correctly maintains the selection over repeated filtering
Diffstat (limited to 'src')
-rw-r--r-- | src/org/thialfihar/android/apg/SelectPublicKeyListActivity.java | 4 | ||||
-rw-r--r-- | src/org/thialfihar/android/apg/SelectPublicKeyListAdapter.java | 35 |
2 files changed, 23 insertions, 16 deletions
diff --git a/src/org/thialfihar/android/apg/SelectPublicKeyListActivity.java b/src/org/thialfihar/android/apg/SelectPublicKeyListActivity.java index a487bc1ff..ef734a789 100644 --- a/src/org/thialfihar/android/apg/SelectPublicKeyListActivity.java +++ b/src/org/thialfihar/android/apg/SelectPublicKeyListActivity.java @@ -92,9 +92,7 @@ public class SelectPublicKeyListActivity extends BaseActivity { } long selectedKeyIds[] = null; - if (getIntent().getExtras() != null) { - selectedKeyIds = getIntent().getExtras().getLongArray(Apg.EXTRA_SELECTION); - } + selectedKeyIds = intent.getLongArrayExtra(Apg.EXTRA_SELECTION); if (selectedKeyIds == null) { Vector<Long> vector = new Vector<Long>(); diff --git a/src/org/thialfihar/android/apg/SelectPublicKeyListAdapter.java b/src/org/thialfihar/android/apg/SelectPublicKeyListAdapter.java index 1b5a20d31..9bb652248 100644 --- a/src/org/thialfihar/android/apg/SelectPublicKeyListAdapter.java +++ b/src/org/thialfihar/android/apg/SelectPublicKeyListAdapter.java @@ -25,6 +25,7 @@ import org.thialfihar.android.apg.provider.UserIds; import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
+import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;
import android.view.LayoutInflater;
@@ -63,6 +64,19 @@ public class SelectPublicKeyListAdapter extends BaseAdapter { UserIds.TABLE_NAME + "." + UserIds.KEY_ID + " AND " +
UserIds.TABLE_NAME + "." + UserIds.RANK + " = '0') ");
+ String inIdList = null;
+
+ if (selectedKeyIds != null && selectedKeyIds.length > 0) {
+ inIdList = KeyRings.TABLE_NAME + "." + KeyRings.MASTER_KEY_ID + " IN (";
+ for (int i = 0; i < selectedKeyIds.length; ++i) {
+ if (i != 0) {
+ inIdList += ", ";
+ }
+ inIdList += DatabaseUtils.sqlEscapeString("" + selectedKeyIds[i]);
+ }
+ inIdList += ")";
+ }
+
if (searchString != null && searchString.trim().length() > 0) {
String[] chunks = searchString.trim().split(" +");
qb.appendWhere("(EXISTS (SELECT tmp." + UserIds._ID + " FROM " +
@@ -75,21 +89,16 @@ public class SelectPublicKeyListAdapter extends BaseAdapter { }
qb.appendWhere("))");
- if (selectedKeyIds != null && selectedKeyIds.length > 0) {
- qb.appendWhere(" OR ");
-
- qb.appendWhere("(" + KeyRings.TABLE_NAME + "." + KeyRings.MASTER_KEY_ID +
- " IN (");
- for (int i = 0; i < selectedKeyIds.length; ++i) {
- if (i != 0) {
- qb.appendWhere(", ");
- }
- qb.appendWhereEscapeString("" + selectedKeyIds[i]);
- }
- qb.appendWhere("))");
+ if (inIdList != null) {
+ qb.appendWhere(" OR (" + inIdList + ")");
}
}
+ String orderBy = UserIds.TABLE_NAME + "." + UserIds.USER_ID + " ASC";
+ if (inIdList != null) {
+ orderBy = inIdList + " DESC, " + orderBy;
+ }
+
mCursor = qb.query(mDatabase,
new String[] {
KeyRings.TABLE_NAME + "." + KeyRings._ID, // 0
@@ -111,7 +120,7 @@ public class SelectPublicKeyListAdapter extends BaseAdapter { },
KeyRings.TABLE_NAME + "." + KeyRings.TYPE + " = ?",
new String[] { "" + Id.database.type_public },
- null, null, UserIds.TABLE_NAME + "." + UserIds.USER_ID + " ASC");
+ null, null, orderBy);
activity.startManagingCursor(mCursor);
}
|