aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/cyanogenmod/filemanager/controllers/MStarUController.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/cyanogenmod/filemanager/controllers/MStarUController.java')
-rw-r--r--src/com/cyanogenmod/filemanager/controllers/MStarUController.java129
1 files changed, 129 insertions, 0 deletions
diff --git a/src/com/cyanogenmod/filemanager/controllers/MStarUController.java b/src/com/cyanogenmod/filemanager/controllers/MStarUController.java
new file mode 100644
index 00000000..74747a61
--- /dev/null
+++ b/src/com/cyanogenmod/filemanager/controllers/MStarUController.java
@@ -0,0 +1,129 @@
+package com.cyanogenmod.filemanager.controllers;
+
+import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+import com.cyanogenmod.filemanager.R;
+import com.cyanogenmod.filemanager.ui.IconRenderer;
+import com.cyanogenmod.filemanager.model.FileSystemObject;
+import com.cyanogenmod.filemanager.preferences.FileManagerSettings;
+import com.cyanogenmod.filemanager.preferences.Preferences;
+import com.cyanogenmod.filemanager.ui.IconHolder;
+import com.cyanogenmod.filemanager.util.MimeTypeHelper;
+
+import java.util.List;
+
+/**
+ * This is meant to make this section more transferable
+ */
+public class MStarUController {
+
+ public interface OnClickListener {
+ void onItemClick(FileSystemObject fso);
+ void onDetailsClick(FileSystemObject fso);
+ }
+
+ private class ViewHolder {
+ /* package */ ImageView fileImage;
+ /* package */ TextView fileName;
+ /* package */ TextView parent;
+ /* package */ View details;
+
+ FileSystemObject fso;
+
+ public ViewHolder(View row) {
+ fileImage = (ImageView)row.findViewById(R.id.file_image);
+ fileName = (TextView)row.findViewById(R.id.file_name);
+ parent = (TextView)row.findViewById(R.id.file_parent);
+ details = row.findViewById(R.id.file_details);
+ }
+ }
+
+ private View.OnClickListener mOnItemClickListener = new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ MStarUController.ViewHolder h =
+ (MStarUController.ViewHolder)view.getTag(R.id.tag_viewholder);
+
+ if (mOnClickListener != null) {
+ switch (view.getId()) {
+ case R.id.file_details:
+ mOnClickListener.onDetailsClick(h.fso);
+ break;
+ default:
+ mOnClickListener.onItemClick(h.fso);
+ break;
+
+ }
+ }
+ }
+ };
+
+ private ViewGroup mStarUGroup;
+
+ private ViewGroup mStarUEmpty;
+
+ private MStarUController.OnClickListener mOnClickListener;
+
+ private Context mContext;
+
+ private IconHolder mImageLoader;
+
+ public MStarUController(Context context, View root, MStarUController.OnClickListener l) {
+ mContext = context;
+ mStarUGroup = (ViewGroup)root.findViewById(R.id.mstaru_list);
+ mStarUEmpty = (ViewGroup)root.findViewById(R.id.mstaru_empty);
+ // This is kind of crap since it won't pick up changes if we leave the screen and come back
+ FileManagerSettings displayThumbsPref = FileManagerSettings.SETTINGS_DISPLAY_THUMBS;
+ final boolean displayThumbs =
+ Preferences.getSharedPreferences().getBoolean(
+ displayThumbsPref.getId(),
+ ((Boolean)displayThumbsPref.getDefaultValue()).booleanValue());
+ mImageLoader = new IconHolder(context, displayThumbs);
+ mOnClickListener = l;
+ }
+
+ public void replaceData(List<FileSystemObject> files) {
+ if (files == null || files.isEmpty()) {
+ mStarUGroup.setVisibility(View.GONE);
+ mStarUEmpty.setVisibility(View.VISIBLE);
+ return;
+ }
+ mStarUGroup.setVisibility(View.VISIBLE);
+ mStarUEmpty.setVisibility(View.GONE);
+
+ int size = Math.min(files.size(), mStarUGroup.getChildCount());
+ int i = 0;
+ for (; i < size; i++) {
+ final View row = mStarUGroup.getChildAt(i);
+ final FileSystemObject fso = files.get(i);
+
+ row.setVisibility(View.VISIBLE);
+ MStarUController.ViewHolder h =
+ (MStarUController.ViewHolder)row.getTag(R.id.tag_viewholder);
+
+ if (h == null) {
+ h = new MStarUController.ViewHolder(row);
+ row.setTag(R.id.tag_viewholder, h);
+ row.setOnClickListener(mOnItemClickListener);
+ h.details.setOnClickListener(mOnItemClickListener);
+ h.details.setTag(R.id.tag_viewholder, h);
+ }
+ h.fso = fso;
+
+ final int mimeTypeIconId = MimeTypeHelper.getIcon(mContext, fso);
+ IconHolder.ICallback callback = new IconRenderer(mContext, mimeTypeIconId);
+ mImageLoader.loadDrawable(h.fileImage, fso, mimeTypeIconId, callback);
+
+ h.fileName.setText(fso.getName());
+ h.parent.setText(fso.getParent());
+ }
+ size = mStarUGroup.getChildCount();
+ for (; i < size; i++) {
+ View row = mStarUGroup.getChildAt(i);
+ row.setVisibility(View.GONE);
+ }
+ }
+}