aboutsummaryrefslogtreecommitdiffstats
path: root/OpenPGP-Keychain
diff options
context:
space:
mode:
authorMiroojin Bakshi <gaglu231094@gmail.com>2014-03-10 15:25:09 +0530
committerMiroojin Bakshi <gaglu231094@gmail.com>2014-03-10 15:25:09 +0530
commitb927c0f26ace30651b3cb9df9d71741745563aaf (patch)
tree9c7d888c7d3bfe4e54a8d5730dcd12bc1de95c38 /OpenPGP-Keychain
parent8d85aa5876949aec45a908760411790f3601c632 (diff)
downloadopen-keychain-b927c0f26ace30651b3cb9df9d71741745563aaf.tar.gz
open-keychain-b927c0f26ace30651b3cb9df9d71741745563aaf.tar.bz2
open-keychain-b927c0f26ace30651b3cb9df9d71741745563aaf.zip
Highlight search query in SelectPublicKeyFragment and
KeyListPublicFragment
Diffstat (limited to 'OpenPGP-Keychain')
-rw-r--r--OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java2
-rw-r--r--OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectPublicKeyFragment.java1
-rw-r--r--OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyListPublicAdapter.java35
-rw-r--r--OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SelectKeyCursorAdapter.java37
4 files changed, 72 insertions, 3 deletions
diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java
index 40a016f55..59dd31a21 100644
--- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java
+++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java
@@ -272,8 +272,8 @@ public class KeyListPublicFragment extends Fragment implements SearchView.OnQuer
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.swapCursor(data);
-
mStickyList.setAdapter(mAdapter);
// NOTE: Not supported by StickyListHeader, but reimplemented here
diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectPublicKeyFragment.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectPublicKeyFragment.java
index 6e338979a..c1c9aa705 100644
--- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectPublicKeyFragment.java
+++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectPublicKeyFragment.java
@@ -311,6 +311,7 @@ public class SelectPublicKeyFragment extends ListFragmentWorkaround implements T
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.swapCursor(data);
// The list should now be shown.
diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyListPublicAdapter.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyListPublicAdapter.java
index 086d2c178..dcc368e7b 100644
--- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyListPublicAdapter.java
+++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyListPublicAdapter.java
@@ -19,6 +19,8 @@ package org.sufficientlysecure.keychain.ui.adapter;
import java.util.HashMap;
import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
@@ -33,6 +35,9 @@ import android.content.Context;
import android.database.Cursor;
import android.graphics.Color;
import android.support.v4.widget.CursorAdapter;
+import android.text.Html;
+import android.text.Spannable;
+import android.text.style.ForegroundColorSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -46,13 +51,14 @@ public class KeyListPublicAdapter extends CursorAdapter implements StickyListHea
private int mSectionColumnIndex;
private int mIndexUserId;
private int mIndexIsRevoked;
+ private String mCurQuery;
@SuppressLint("UseSparseArrays")
private HashMap<Integer, Boolean> mSelection = new HashMap<Integer, Boolean>();
public KeyListPublicAdapter(Context context, Cursor c, int flags, int sectionColumnIndex) {
super(context, c, flags);
-
+ mCurQuery = null;
mInflater = LayoutInflater.from(context);
mSectionColumnIndex = sectionColumnIndex;
initIndex(c);
@@ -78,6 +84,10 @@ public class KeyListPublicAdapter extends CursorAdapter implements StickyListHea
}
}
+ public void setSearchQuery(String searchQuery){
+ mCurQuery = searchQuery;
+ }
+
/**
* Bind cursor data to the item list view
* <p/>
@@ -110,6 +120,10 @@ public class KeyListPublicAdapter extends CursorAdapter implements StickyListHea
} else {
revoked.setVisibility(View.GONE);
}
+ if(mCurQuery != null){
+ mainUserId.setText(highlightSearchKey(userIdSplit[0]));
+ mainUserIdRest.setText(highlightSearchKey(userIdSplit[1]));
+ }
}
@Override
@@ -228,5 +242,24 @@ public class KeyListPublicAdapter extends CursorAdapter implements StickyListHea
}
return v;
}
+ private Spannable highlightSearchKey(String text) {
+ Spannable highlight;
+ Pattern pattern;
+ Matcher matcher;
+ String orig_str;
+
+ orig_str = Html.fromHtml(text).toString();
+ highlight = (Spannable) Html.fromHtml(text);
+ pattern = Pattern.compile("(?i)" + mCurQuery);
+ matcher = pattern.matcher(orig_str);
+ if (matcher.find()) {
+ highlight.setSpan(
+ new ForegroundColorSpan(0xFF33B5E5),
+ matcher.start(),
+ matcher.end(),
+ Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ }
+ return highlight;
+ }
}
diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SelectKeyCursorAdapter.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SelectKeyCursorAdapter.java
index d44dd5890..03010f7a2 100644
--- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SelectKeyCursorAdapter.java
+++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SelectKeyCursorAdapter.java
@@ -26,6 +26,9 @@ import org.sufficientlysecure.keychain.provider.KeychainContract.UserIds;
import android.content.Context;
import android.database.Cursor;
import android.support.v4.widget.CursorAdapter;
+import android.text.Html;
+import android.text.Spannable;
+import android.text.style.ForegroundColorSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -33,6 +36,9 @@ import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.TextView;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
public class SelectKeyCursorAdapter extends CursorAdapter {
protected int mKeyType;
@@ -47,6 +53,7 @@ public class SelectKeyCursorAdapter extends CursorAdapter {
public final static String PROJECTION_ROW_AVAILABLE = "available";
public final static String PROJECTION_ROW_VALID = "valid";
+ private String mCurQuery;
public SelectKeyCursorAdapter(Context context, Cursor c, int flags, ListView listView,
int keyType) {
@@ -55,7 +62,7 @@ public class SelectKeyCursorAdapter extends CursorAdapter {
mInflater = LayoutInflater.from(context);
mListView = listView;
mKeyType = keyType;
-
+ mCurQuery = null;
initIndex(c);
}
@@ -158,6 +165,11 @@ public class SelectKeyCursorAdapter extends CursorAdapter {
mainUserIdRest.setEnabled(valid);
keyId.setEnabled(valid);
status.setEnabled(valid);
+
+ if(mCurQuery != null){
+ mainUserId.setText(highlightSearchKey(userIdSplit[0]));
+ mainUserIdRest.setText(highlightSearchKey(userIdSplit[1]));
+ }
}
@Override
@@ -165,4 +177,27 @@ public class SelectKeyCursorAdapter extends CursorAdapter {
return mInflater.inflate(R.layout.select_key_item, null);
}
+ public void setSearchQuery(String searchQuery){
+ mCurQuery = searchQuery;
+ }
+
+ private Spannable highlightSearchKey(String text) {
+ Spannable highlight;
+ Pattern pattern;
+ Matcher matcher;
+ String orig_str;
+
+ orig_str = Html.fromHtml(text).toString();
+ highlight = (Spannable) Html.fromHtml(text);
+ pattern = Pattern.compile("(?i)" + mCurQuery);
+ matcher = pattern.matcher(orig_str);
+ if (matcher.find()) {
+ highlight.setSpan(
+ new ForegroundColorSpan(0xFF33B5E5),
+ matcher.start(),
+ matcher.end(),
+ Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ }
+ return highlight;
+ }
}