package de.fun2code.android.piratebox.dialog.directory;
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
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 de.fun2code.android.piratebox.R;
/**
* ListView adapter that displays file and directory information
*
* @author joschi
*
*/
public class DirectoryAdapter extends BaseAdapter {
private Context context;
private List<File> listFileEntries;
public DirectoryAdapter(Context context, List<File> listFileEntries) {
this.context = context;
this.listFileEntries = listFileEntries;
}
public int getCount() {
return listFileEntries.size();
}
public Object getItem(int position) {
return listFileEntries.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View view, ViewGroup viewGroup) {
File entry = listFileEntries.get(position);
if (view == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.directory_files_row, null);
}
ImageView imageType = (ImageView) view.findViewById(R.id.fileImageType);
TextView textInfo = (TextView) view.findViewById(R.id.textInfo);
if (entry.getName().equals("..")) {
imageType.setImageResource(R.drawable.back);
textInfo.setVisibility(View.VISIBLE);
textInfo.setText("");
} else if (entry.isDirectory()) {
try {
Bitmap image = BitmapFactory.decodeStream(context
.getResources().getAssets()
.open("file_icons/directory.png"));
imageType.setImageBitmap(image);
}
catch(Exception e) {
imageType.setImageResource(R.drawable.directory);
}
textInfo.setVisibility(View.VISIBLE);
//textInfo.setText(new Date(entry.lastModified()).toLocaleString());
textInfo.setText(DateFormat.getDateTimeInstance().format(new Date(entry.lastModified())));
} else {
textInfo.setVisibility(View.VISIBLE);
imageType.setImageResource(R.drawable.file);
textInfo.setText(String.format("%.2f MB",
entry.length() / 1024.0 / 1024.0));
String ext = "default";
if (entry.getName().matches(".*\\.[0-9A-Za-z]{3,4}$")) {
ext = entry.getName().replaceAll(".*\\.([0-9A-Za-z]{3,4})$",
"$1").toLowerCase(Locale.getDefault());
}
// Check if file exists
try {
context.getResources().getAssets()
.open("file_icons/" + ext + ".png");
} catch (IOException e) {
ext = "default";
}
if (ext != null) {
try {
Bitmap image = BitmapFactory.decodeStream(context
.getResources().getAssets()
.open("file_icons/" + ext + ".png"));
imageType.setImageBitmap(image);
} catch (IOException e) {
e.printStackTrace();
}
}
}
TextView textResource = (TextView) view.findViewById(R.id.textName);
textResource.setText(entry.getName());
return view;
}
}