aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoman Birg <roman@cyngn.com>2015-08-17 16:32:00 -0700
committerStephen Bird <sbird@cyngn.com>2015-08-26 14:13:52 -0700
commit8895e1c38bacdbe320ab84a5a7db3dc0e0c4fffb (patch)
treeea8f6e7e3ead8c05e68cce59dea03bd9d4d870bf
parent85032a699b4f9d6101599be230257eab7a8cd76a (diff)
downloadandroid_packages_apps_CMFileManager-8895e1c38bacdbe320ab84a5a7db3dc0e0c4fffb.tar.gz
android_packages_apps_CMFileManager-8895e1c38bacdbe320ab84a5a7db3dc0e0c4fffb.tar.bz2
android_packages_apps_CMFileManager-8895e1c38bacdbe320ab84a5a7db3dc0e0c4fffb.zip
CMFM: fix search mime type filter not applying
- update count when selecting mime type filter - use original result list to narrow results Ref: QRDL-950 Change-Id: I8715f0831e51adf18257d735b0d455c368083411 Signed-off-by: Roman Birg <roman@cyngn.com>
-rwxr-xr-xsrc/com/cyanogenmod/filemanager/activities/SearchActivity.java89
1 files changed, 46 insertions, 43 deletions
diff --git a/src/com/cyanogenmod/filemanager/activities/SearchActivity.java b/src/com/cyanogenmod/filemanager/activities/SearchActivity.java
index 86e6e4a5..bbf716a9 100755
--- a/src/com/cyanogenmod/filemanager/activities/SearchActivity.java
+++ b/src/com/cyanogenmod/filemanager/activities/SearchActivity.java
@@ -70,7 +70,6 @@ import com.cyanogenmod.filemanager.model.SearchResult;
import com.cyanogenmod.filemanager.model.Symlink;
import com.cyanogenmod.filemanager.parcelables.SearchInfoParcelable;
import com.cyanogenmod.filemanager.preferences.AccessMode;
-import com.cyanogenmod.filemanager.preferences.DisplayRestrictions;
import com.cyanogenmod.filemanager.preferences.FileManagerSettings;
import com.cyanogenmod.filemanager.preferences.Preferences;
import com.cyanogenmod.filemanager.providers.RecentSearchesContentProvider;
@@ -99,10 +98,8 @@ import java.io.FileNotFoundException;
import java.io.Serializable;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
/**
* An activity for search files and folders.
@@ -1473,49 +1470,55 @@ public class SearchActivity extends Activity
this.mSearchListView.invalidate();
}
- @Override
- public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
- final String category = MimeTypeHelper.MimeTypeCategory.names()[i];
- SearchResultAdapter adapter = ((SearchResultAdapter) this.mSearchListView.getAdapter());
- if (adapter != null) {
- new AsyncTask<String, Void, Void>() {
- List<DataHolder> mNewList = new ArrayList<>();
- @Override
- protected Void doInBackground(String... params) {
- // Are we in ChRooted environment?
- boolean chRooted =
- FileManagerApplication.getAccessMode().compareTo(AccessMode.SAFE) == 0;
-
- // Create display restrictions
- Map<DisplayRestrictions, Object> restrictions =
- new HashMap<DisplayRestrictions, Object>();
- restrictions.put(
- DisplayRestrictions.MIME_TYPE_RESTRICTION, MimeTypeHelper.ALL_MIME_TYPES);
-
- List<SearchResult> newResults = SearchHelper.convertToResults(
- FileHelper.applyUserPreferences(
- mAdapter.getFiles(), restrictions, true, chRooted), new Query().fillSlots(mQuery.getQueries()));
-
- for (SearchResult result : newResults) {
- // Only show results that are within our category, or all if no filter is set
- if (TextUtils.equals(category, MimeTypeHelper.MimeTypeCategory.NONE.name()) ||
- MimeTypeHelper.getCategory(SearchActivity.this, result.getFso()) ==
- MimeTypeHelper.MimeTypeCategory.valueOf(category)) {
- mNewList.add(generateDataHolder(result));
- }
- }
- return null;
- }
+ private class SearchResultFilterTask extends AsyncTask<MimeTypeCategory, Void,
+ List<DataHolder>> {
- @Override
- protected void onPostExecute(Void aVoid) {
- super.onPostExecute(aVoid);
- mAdapterList.clear();
- mAdapterList.addAll(mNewList);
- mAdapter.notifyDataSetChanged();
+ @Override
+ protected List<DataHolder> doInBackground(MimeTypeCategory... params) {
+ final MimeTypeCategory category = params.length == 0
+ ? MimeTypeCategory.NONE : params[0];
+
+ List<DataHolder> results = new ArrayList<DataHolder>();
+ // Are we in ChRooted environment?
+ boolean chRooted =
+ FileManagerApplication.getAccessMode().compareTo(AccessMode.SAFE) == 0;
+
+ List<SearchResult> newResults = SearchHelper.convertToResults(
+ FileHelper.applyUserPreferences(
+ mResultList, null, true, chRooted),
+ new Query().fillSlots(mQuery.getQueries()));
+
+ for (SearchResult result : newResults) {
+ // Only show results that are within our category, or all if no filter is set
+ if (MimeTypeHelper.MimeTypeCategory.NONE.equals(category)
+ || MimeTypeHelper.getCategory(SearchActivity.this,
+ result.getFso()).equals(category)) {
+ results.add(generateDataHolder(result));
}
- };
+ }
+ return results;
}
+
+ @Override
+ protected void onPostExecute(List<DataHolder> results) {
+ if (!isResumed()) {
+ return;
+ }
+ mAdapterList.clear();
+ mAdapterList.addAll(results);
+ mAdapter.notifyDataSetChanged();
+
+ String foundItems = getResources().getQuantityString(R.plurals.search_found_items,
+ results.size(), results.size());
+ mSearchFoundItems.setText(String.format(mSearchFoundString,
+ foundItems, mSearchDirectory));
+
+ }
+ }
+
+ @Override
+ public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
+ new SearchResultFilterTask().execute(MimeTypeHelper.MimeTypeCategory.values()[i]);
}
@Override