aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorThialfihar <thialfihar@gmail.com>2010-06-06 15:54:27 +0000
committerThialfihar <thialfihar@gmail.com>2010-06-06 15:54:27 +0000
commit68d74b4d549d6fb84eb61c044dac6f7360e14473 (patch)
tree02f5b2cd36c864314938a4caa0d269813314afdd /src
parenta0ab2402144dd5913d6b8f6588b4dea392b45572 (diff)
downloadopen-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.java4
-rw-r--r--src/org/thialfihar/android/apg/SelectPublicKeyListAdapter.java35
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);
}