diff options
author | Roman Birg <roman@cyngn.com> | 2015-08-17 16:32:00 -0700 |
---|---|---|
committer | Stephen Bird <sbird@cyngn.com> | 2015-08-26 14:13:52 -0700 |
commit | 8895e1c38bacdbe320ab84a5a7db3dc0e0c4fffb (patch) | |
tree | ea8f6e7e3ead8c05e68cce59dea03bd9d4d870bf | |
parent | 85032a699b4f9d6101599be230257eab7a8cd76a (diff) | |
download | android_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-x | src/com/cyanogenmod/filemanager/activities/SearchActivity.java | 89 |
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 |