aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/cyanogenmod/filemanager/adapters/QuickSearchAdapter.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/cyanogenmod/filemanager/adapters/QuickSearchAdapter.java')
-rw-r--r--src/com/cyanogenmod/filemanager/adapters/QuickSearchAdapter.java163
1 files changed, 163 insertions, 0 deletions
diff --git a/src/com/cyanogenmod/filemanager/adapters/QuickSearchAdapter.java b/src/com/cyanogenmod/filemanager/adapters/QuickSearchAdapter.java
new file mode 100644
index 00000000..15835522
--- /dev/null
+++ b/src/com/cyanogenmod/filemanager/adapters/QuickSearchAdapter.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.cyanogenmod.filemanager.adapters;
+
+import android.app.SearchManager;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.ColorStateList;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.StateListDrawable;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+import com.cyanogenmod.filemanager.R;
+import com.cyanogenmod.filemanager.activities.SearchActivity;
+import com.cyanogenmod.filemanager.ui.IconHolder;
+import com.cyanogenmod.filemanager.util.FileHelper;
+import com.cyanogenmod.filemanager.util.MimeTypeHelper;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.cyanogenmod.filemanager.util.MimeTypeHelper.MimeTypeCategory.APP;
+import static com.cyanogenmod.filemanager.util.MimeTypeHelper.MimeTypeCategory.COMPRESS;
+import static com.cyanogenmod.filemanager.util.MimeTypeHelper.MimeTypeCategory.IMAGE;
+import static com.cyanogenmod.filemanager.util.MimeTypeHelper.MimeTypeCategory.AUDIO;
+import static com.cyanogenmod.filemanager.util.MimeTypeHelper.MimeTypeCategory.VIDEO;
+import static com.cyanogenmod.filemanager.util.MimeTypeHelper.MimeTypeCategory.DOCUMENT;
+
+public class QuickSearchAdapter extends ArrayAdapter<MimeTypeHelper.MimeTypeCategory>
+ implements View.OnClickListener {
+
+ static String MIME_TYPE_LOCALIZED_NAMES[];
+
+ static Map<MimeTypeHelper.MimeTypeCategory, Integer> QUICK_SEARCH_ICONS
+ = new HashMap<MimeTypeHelper.MimeTypeCategory, Integer>();
+ static {
+ QUICK_SEARCH_ICONS.put(MimeTypeHelper.MimeTypeCategory.IMAGE,
+ R.drawable.ic_category_images);
+ QUICK_SEARCH_ICONS.put(MimeTypeHelper.MimeTypeCategory.AUDIO, R.drawable.ic_category_audio);
+ QUICK_SEARCH_ICONS.put(MimeTypeHelper.MimeTypeCategory.VIDEO, R.drawable.ic_category_video);
+ QUICK_SEARCH_ICONS.put(MimeTypeHelper.MimeTypeCategory.DOCUMENT,
+ R.drawable.ic_category_docs);
+ QUICK_SEARCH_ICONS.put(MimeTypeHelper.MimeTypeCategory.APP, R.drawable.ic_category_apps);
+ QUICK_SEARCH_ICONS.put(MimeTypeHelper.MimeTypeCategory.COMPRESS,
+ R.drawable.ic_category_archives);
+ }
+
+ public static final List<MimeTypeHelper.MimeTypeCategory> QUICK_SEARCH_LIST
+ = new ArrayList<MimeTypeHelper.MimeTypeCategory>() {
+ {
+ add(IMAGE);
+ add(AUDIO);
+ add(VIDEO);
+ add(DOCUMENT);
+ add(APP);
+ add(COMPRESS);
+ }
+ };
+
+ IconHolder mIconHolder;
+
+ public QuickSearchAdapter(Context context, int resource) {
+ super(context, resource);
+
+ MIME_TYPE_LOCALIZED_NAMES =
+ MimeTypeHelper.MimeTypeCategory.getDefinedLocalizedNames(context);
+ mIconHolder = new IconHolder(context, false);
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ convertView = (convertView == null) ? LayoutInflater.from(getContext()).inflate(
+ R.layout.quick_search_item, parent, false) : convertView;
+
+ MimeTypeHelper.MimeTypeCategory item = getItem(position);
+ String typeTitle = MIME_TYPE_LOCALIZED_NAMES[item.ordinal()];
+ TextView typeTitleTV = (TextView) convertView
+ .findViewById(R.id.navigation_view_item_name);
+ ImageView typeIconIV = (ImageView) convertView
+ .findViewById(R.id.navigation_view_item_icon);
+
+ typeTitleTV.setText(typeTitle);
+ convertView.setOnClickListener(this);
+ convertView.setTag(position);
+
+ int colorId = MimeTypeHelper.getIconColorFromIconId(getContext(), QUICK_SEARCH_ICONS.get(item));
+ setIcon(typeIconIV, getContext().getResources().getDrawable(QUICK_SEARCH_ICONS.get(item)),
+ R.color.navigation_view_icon_unselected, R.drawable.ic_icon_background,
+ getContext().getResources().getColor(colorId));
+
+ return convertView;
+ }
+
+ // Set drawable as icon
+ private void setIcon(ImageView view, Drawable iconDrawable, int iconColorId, int backgroundId,
+ int backgroundColor) {
+
+ StateListDrawable stateListDrawable = new StateListDrawable();
+ addUnselected(getContext().getResources(), stateListDrawable, iconDrawable, iconColorId);
+
+ ColorStateList colorList = new ColorStateList(
+ new int[][]{new int[]{android.R.attr.state_selected},
+ new int[]{}},
+ new int[]{getContext().getResources()
+ .getColor(R.color.navigation_view_icon_selected), backgroundColor});
+
+ view.setBackgroundResource(backgroundId);
+ view.setBackgroundTintList(colorList);
+ view.setImageDrawable(stateListDrawable);
+ }
+
+ // default
+ private void addUnselected(Resources res, StateListDrawable drawable, Drawable iconDrawable,
+ int colorId) {
+ iconDrawable.setTint(res.getColor(colorId));
+ drawable.addState(new int[0], iconDrawable);
+ }
+
+ @Override
+ public void onClick(View view) {
+ Integer position = (Integer) view.getTag();
+
+ Intent intent = new Intent(getContext(), SearchActivity.class);
+ intent.setAction(Intent.ACTION_SEARCH);
+ intent.putExtra(SearchActivity.EXTRA_SEARCH_DIRECTORY, FileHelper.ROOT_DIRECTORY);
+ intent.putExtra(SearchManager.QUERY, "*"); // Use wild-card '*'
+
+ ArrayList<MimeTypeHelper.MimeTypeCategory> searchCategories =
+ new ArrayList<MimeTypeHelper.MimeTypeCategory>();
+ MimeTypeHelper.MimeTypeCategory selectedCategory = QUICK_SEARCH_LIST.get(position);
+ searchCategories.add(selectedCategory);
+ // a one off case where we implicitly want to also search for TEXT mimetypes when the
+ // DOCUMENTS category is selected
+ if (selectedCategory == MimeTypeHelper.MimeTypeCategory.DOCUMENT) {
+ searchCategories.add(
+ MimeTypeHelper.MimeTypeCategory.TEXT);
+ }
+ intent.putExtra(SearchActivity.EXTRA_SEARCH_MIMETYPE, searchCategories);
+
+ getContext().startActivity(intent);
+ }
+} \ No newline at end of file