Merge "Improve query filtering for Search"
diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java
index 077da78..0e034ff 100644
--- a/src/com/android/settings/dashboard/DashboardSummary.java
+++ b/src/com/android/settings/dashboard/DashboardSummary.java
@@ -22,9 +22,6 @@
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.Editable;
-import android.text.InputFilter;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.LayoutInflater;
@@ -69,32 +66,6 @@
}
}
- /**
- * A basic InputFilter for filtering query input (mainly because we are issuing SQL queries
- * that need to be valid ones. So just accept Letters, Digits and Spaces.
- */
- private class QueryInputFilter implements InputFilter {
-
- public QueryInputFilter() {
- }
-
- @Override
- public CharSequence filter(CharSequence source, int start, int end, Spanned dest,
- int dstart, int dend) {
- SpannableStringBuilder sb = null;
- for (int i = start; i < end; i++) {
- char c = source.charAt(i);
- if (!Character.isLetterOrDigit(c) && !Character.isSpaceChar(c)) {
- if (sb == null) {
- sb = new SpannableStringBuilder(source, start, end);
- }
- sb.delete(i, i + 1);
- }
- }
- return sb;
- }
- }
-
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -147,9 +118,6 @@
}
});
- final InputFilter queryFilter = new QueryInputFilter();
- mEditText.setFilters(new InputFilter[] { queryFilter });
-
mListView = (ListView) view.findViewById(R.id.list_results);
mListView.setAdapter(mAdapter);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@@ -191,12 +159,25 @@
}
}
+ private String getFilteredQueryString() {
+ final CharSequence query = mEditText.getText().toString();
+ final StringBuilder filtered = new StringBuilder();
+ for (int n = 0; n < query.length(); n++) {
+ char c = query.charAt(n);
+ if (!Character.isLetterOrDigit(c) && !Character.isSpaceChar(c)) {
+ continue;
+ }
+ filtered.append(c);
+ }
+ return filtered.toString();
+ }
+
private void updateSearchResults() {
if (mUpdateSearchResultsTask != null) {
mUpdateSearchResultsTask.cancel(false);
mUpdateSearchResultsTask = null;
}
- final String query = mEditText.getText().toString();
+ final String query = getFilteredQueryString();
if (TextUtils.isEmpty(query)) {
setCursor(null);
} else {