1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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);
}
}
}
|