package com.yamin.reader.adapter;
import java.util.ArrayList;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.yamin.reader.R;
public class ScanFileAdapter extends BaseAdapter {
private ArrayList<FileInfo> mFileLists;
private LayoutInflater mLayoutInflater = null;
private int[] itemState;
private static ArrayList<String> FILE_SUFFIX = new ArrayList<String>();
static {
FILE_SUFFIX.add(".txt");
FILE_SUFFIX.add(".epub");
FILE_SUFFIX.add(".fb2");
FILE_SUFFIX.add(".html");
FILE_SUFFIX.add(".mobi");
FILE_SUFFIX.add(".oeb");
}
public ScanFileAdapter(Context context, ArrayList<FileInfo> fileLists) {
super();
mFileLists = fileLists;
mLayoutInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//
if(mFileLists!=null&&mFileLists.size()>0){
itemState = new int[mFileLists.size()];
for (int i = 0; i < mFileLists.size(); i++) {
itemState[i] = 0;
}
}
}
public int[] getItemState() {
return itemState;
}
public void setItemState(int[] itemState) {
this.itemState = itemState;
}
public void uncheckAll(){
for(int i=0;i<itemState.length;i++){
itemState[i] = 0;
}
}
public boolean isAllChecked(){
for(int i :itemState){
if(i ==0) return false;
}
return true;
}
public void checkAll(){
for(int i=0;i<itemState.length;i++){
itemState[i] = 1;
}
}
public int getCheckedItemCount(){
int count = 0;
for(int i :itemState){
if(i ==1) count++;
}
return count;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mFileLists.size();
}
@Override
public FileInfo getItem(int position) {
// TODO Auto-generated method stub
return mFileLists.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view = null;
ViewHolder holder = null;
if (convertView == null || convertView.getTag() == null) {
view = mLayoutInflater.inflate(R.layout.search_gridview_item, null);
holder = new ViewHolder(view);
/*
holder.imgFileIcon=(ImageView)view.findViewById(R.id.imgSearchFileIcon);
holder.imgFileSelectIcon=(ImageView)view.findViewById(R.id.imFileSelectIcon);
*/
view.setTag(holder);
} else {
view = convertView;
holder = (ViewHolder) convertView.getTag();
}
FileInfo fileInfo = getItem(position);
// TODO
holder.tvFileName.setText(fileInfo.getFileName());
if (fileInfo.isTXTFile(fileInfo.getFileName())) {
holder.imgFileIcon.setImageResource(R.drawable.listview_txtcover);
holder.tvFileName.setTextColor(Color.RED);
}
if (fileInfo.isEPUBFile(fileInfo.getFileName())) {
holder.imgFileIcon.setImageResource(R.drawable.listview_epubcover);
holder.tvFileName.setTextColor(Color.RED);
}
if (fileInfo.isMOBIFile(fileInfo.getFileName())) {
holder.imgFileIcon.setImageResource(R.drawable.listview_mobiicon);
holder.tvFileName.setTextColor(Color.RED);
}
if (fileInfo.isHTMLFile(fileInfo.getFileName())) {
holder.imgFileIcon.setImageResource(R.drawable.listview_htmlcover);
holder.tvFileName.setTextColor(Color.RED);
}
if (fileInfo.isOEBFile(fileInfo.getFileName())) {
holder.imgFileIcon.setImageResource(R.drawable.listview_oebicon);
holder.tvFileName.setTextColor(Color.RED);
}
updateIsChecked(position,holder.imgFileSelectIcon);
return view;
}
static class ViewHolder {
ImageView imgFileIcon;
TextView tvFileName;
ImageView imgFileSelectIcon;
public ViewHolder(View view) {
imgFileIcon = (ImageView) view.findViewById(R.id.imgSearchFileIcon);
tvFileName = (TextView) view.findViewById(R.id.tvFileName);
imgFileSelectIcon= (ImageView) view.findViewById(R.id.imSearchFileSelectIcon);
}
}
public void updateIsChecked(int position, ImageView select) {
if (itemState[position] == 0) {
select.setVisibility(View.GONE);
}else{
select.setVisibility(View.VISIBLE);
}
}
enum FileType {
FILE, DIRECTORY;
}
// =========================
// Model
// =========================
public static class FileInfo {
private FileType fileType;
private String fileName;
private String filePath;
private long fileSize;
public FileInfo(String filePath, String fileName,long fileSize, boolean isDirectory) {
this.filePath = filePath;
this.fileName = fileName;
this.fileSize=fileSize;
fileType = isDirectory ? FileType.DIRECTORY : FileType.FILE;
}
public boolean isTXTFile(String fileName) {
if (fileName.lastIndexOf(".") < 0) // Don't have the suffix
return false;
String fileSuffix = fileName.substring(fileName.lastIndexOf("."));
if (!isDirectory() && fileSuffix.contains(".txt"))
return true;
else
return false;
}
public boolean isEPUBFile(String fileName) {
if (fileName.lastIndexOf(".") < 0) // Don't have the suffix
return false;
String fileSuffix = fileName.substring(fileName.lastIndexOf("."));
if (!isDirectory() && fileSuffix.contains(".epub"))
return true;
else
return false;
}
public boolean isHTMLFile(String fileName) {
if (fileName.lastIndexOf(".") < 0) // Don't have the suffix
return false;
String fileSuffix = fileName.substring(fileName.lastIndexOf("."));
if (!isDirectory() && fileSuffix.contains(".html"))
return true;
else
return false;
}
public boolean isMOBIFile(String fileName) {
if (fileName.lastIndexOf(".") < 0) // Don't have the suffix
return false;
String fileSuffix = fileName.substring(fileName.lastIndexOf("."));
if (!isDirectory() && fileSuffix.contains(".mobi"))
return true;
else
return false;
}
public boolean isOEBFile(String fileName) {
if (fileName.lastIndexOf(".") < 0) // Don't have the suffix
return false;
String fileSuffix = fileName.substring(fileName.lastIndexOf("."));
if (!isDirectory() && fileSuffix.contains(".oeb"))
return true;
else
return false;
}
public boolean isFB2File() {
if (fileName.lastIndexOf(".") < 0) // Don't have the suffix
return false;
String fileSuffix = fileName.substring(fileName.lastIndexOf("."));
if (!isDirectory() && FILE_SUFFIX.contains(fileSuffix))
return true;
else
return false;
}
public boolean isDirectory() {
if (fileType == FileType.DIRECTORY)
return true;
else
return false;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public FileType getFileType() {
return fileType;
}
public void setFileType(FileType fileType) {
this.fileType = fileType;
}
public long getFileSize() {
return fileSize;
}
public void setFileSize(long fileSize) {
this.fileSize = fileSize;
}
@Override
public String toString() {
return "FileInfo [fileType=" + fileType + ", fileName=" + fileName
+ ", filePath=" + filePath + "]";
}
}
}