aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java38
1 files changed, 27 insertions, 11 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java
index 5b936c188..e38ed6e67 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java
@@ -34,6 +34,7 @@ import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.ActionBarActivity;
+import android.support.v4.widget.CursorAdapter;
import android.support.v7.widget.SearchView;
import android.text.TextUtils;
import android.view.ActionMode;
@@ -61,8 +62,8 @@ import org.sufficientlysecure.keychain.helper.ExportHelper;
import org.sufficientlysecure.keychain.pgp.PgpKeyHelper;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRingData;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
-import org.sufficientlysecure.keychain.ui.adapter.HighlightQueryCursorAdapter;
import org.sufficientlysecure.keychain.ui.dialog.DeleteKeyDialogFragment;
+import org.sufficientlysecure.keychain.util.Highlighter;
import org.sufficientlysecure.keychain.util.Log;
import java.util.Date;
@@ -82,7 +83,7 @@ public class KeyListFragment extends LoaderFragment
private KeyListAdapter mAdapter;
private StickyListHeadersListView mStickyList;
- private String mCurQuery;
+ private String mQuery;
private SearchView mSearchView;
// empty list layout
private BootstrapButton mButtonEmptyCreate;
@@ -262,9 +263,18 @@ public class KeyListFragment extends LoaderFragment
Uri baseUri = KeyRings.buildUnifiedKeyRingsUri();
String where = null;
String whereArgs[] = null;
- if (mCurQuery != null) {
- where = KeyRings.USER_ID + " LIKE ?";
- whereArgs = new String[]{"%" + mCurQuery + "%"};
+ if (mQuery != null) {
+ String[] words = mQuery.trim().split("\\s+");
+ whereArgs = new String[words.length];
+ for (int i = 0; i < words.length; ++i) {
+ if (where == null) {
+ where = "";
+ } else {
+ where += " AND ";
+ }
+ where += KeyRings.USER_ID + " LIKE ?";
+ whereArgs[i] = "%" + words[i] + "%";
+ }
}
// Now create and return a CursorLoader that will take care of
@@ -276,7 +286,7 @@ public class KeyListFragment extends LoaderFragment
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
// Swap the new cursor in. (The framework will take care of closing the
// old cursor once we return.)
- mAdapter.setSearchQuery(mCurQuery);
+ mAdapter.setSearchQuery(mQuery);
mAdapter.swapCursor(data);
mStickyList.setAdapter(mAdapter);
@@ -378,7 +388,7 @@ public class KeyListFragment extends LoaderFragment
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
- mCurQuery = null;
+ mQuery = null;
mSearchView.setQuery("", true);
getLoaderManager().restartLoader(0, null, KeyListFragment.this);
return true;
@@ -398,7 +408,7 @@ public class KeyListFragment extends LoaderFragment
// Called when the action bar search text has changed. Update
// the search filter, and restart the loader to do a new query
// with this filter.
- mCurQuery = !TextUtils.isEmpty(s) ? s : null;
+ mQuery = !TextUtils.isEmpty(s) ? s : null;
getLoaderManager().restartLoader(0, null, this);
return true;
}
@@ -406,7 +416,8 @@ public class KeyListFragment extends LoaderFragment
/**
* Implements StickyListHeadersAdapter from library
*/
- private class KeyListAdapter extends HighlightQueryCursorAdapter implements StickyListHeadersAdapter {
+ private class KeyListAdapter extends CursorAdapter implements StickyListHeadersAdapter {
+ private String mQuery;
private LayoutInflater mInflater;
private HashMap<Integer, Boolean> mSelection = new HashMap<Integer, Boolean>();
@@ -417,6 +428,10 @@ public class KeyListFragment extends LoaderFragment
mInflater = LayoutInflater.from(context);
}
+ public void setSearchQuery(String query) {
+ mQuery = query;
+ }
+
@Override
public Cursor swapCursor(Cursor newCursor) {
return super.swapCursor(newCursor);
@@ -455,18 +470,19 @@ public class KeyListFragment extends LoaderFragment
*/
@Override
public void bindView(View view, Context context, Cursor cursor) {
+ Highlighter highlighter = new Highlighter(context, mQuery);
ItemViewHolder h = (ItemViewHolder) view.getTag();
{ // set name and stuff, common to both key types
String userId = cursor.getString(INDEX_USER_ID);
String[] userIdSplit = PgpKeyHelper.splitUserId(userId);
if (userIdSplit[0] != null) {
- h.mMainUserId.setText(highlightSearchQuery(userIdSplit[0]));
+ h.mMainUserId.setText(highlighter.highlight(userIdSplit[0]));
} else {
h.mMainUserId.setText(R.string.user_id_no_name);
}
if (userIdSplit[1] != null) {
- h.mMainUserIdRest.setText(highlightSearchQuery(userIdSplit[1]));
+ h.mMainUserIdRest.setText(highlighter.highlight(userIdSplit[1]));
h.mMainUserIdRest.setVisibility(View.VISIBLE);
} else {
h.mMainUserIdRest.setVisibility(View.GONE);