package com.caigang.process.ui.file;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import com.caigang.process.R;
import com.caigang.process.util.FileUtil;
public class FileActivity extends Activity{
private ListView leftLV,rightLV;
List<Map<String, Object>> leftList;
List<Map<String, Object>> rightList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.file);
leftLV = (ListView)findViewById(R.id.leftLV);
rightLV = (ListView)findViewById(R.id.rightLV);
List<Map<String, Object>> fileList = new ArrayList<Map<String,Object>>();
FileUtil.getParentPath(new File("/"), fileList);
leftList = fileList;
rightList = FileUtil.getSubDirAndFiles(new File("/"));
setUpAdapter();//����ʼ����
leftLV.setOnItemClickListener(new LeftItemListener());
rightLV.setOnItemClickListener(new RightItemListener());
rightLV.setOnItemLongClickListener(new rightLVItemLongClickListener());
}
private void setUpAdapter(){
if(leftList!=null){
SimpleAdapter leftAdapter = new SimpleAdapter(this, leftList, R.layout.file_left_item,
new String[] { "currentDirImage", "currentDirName"}, new int[] { R.id.currentDirImage,
R.id.currentDirName});
leftLV.setAdapter(leftAdapter);
}else{
leftLV.setAdapter(null);
}
if(rightList!=null){
SimpleAdapter rightAdapter = new SimpleAdapter(this, rightList, R.layout.file_right_item,
new String[] { "subDirImage", "subDirName"}, new int[] { R.id.subDirImage,
R.id.subDirName});
rightLV.setAdapter(rightAdapter);
}else{
rightLV.setAdapter(null);
Toast.makeText(FileActivity.this, "���ļ���", Toast.LENGTH_SHORT).show();
}
}
class LeftItemListener implements OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
Map<String, Object> map = leftList.get(position);
String currentDirPath = (String)map.get("currentDirPath");
File file = new File(currentDirPath);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
FileUtil.getParentPath(file, list);
leftList = list;
rightList = FileUtil.getSubDirAndFiles(file);
setUpAdapter();//ˢ��
}
}
class RightItemListener implements OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
Map<String, Object> map = rightList.get(position);
String subDirPath = (String)map.get("subDirPath");
File file = new File(subDirPath);
File parentFile = file.getParentFile();
if(file.isDirectory()){//�������Ŀ¼���ұ�Ŀ¼�Լ��ұ��ļ�����ʾ
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
FileUtil.getParentPath(file, list);
leftList = list;
rightList = FileUtil.getSubDirAndFiles(file);
setUpAdapter();//ˢ��
}else{//�����������ļ�����ʾ�û�ѡ����Ӧ�ij�����ļ�
Toast.makeText(FileActivity.this, "��ѡ������ļ�", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.filemenu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.addfolder:{
AlertDialog.Builder builder = new AlertDialog.Builder(FileActivity.this);
builder.setTitle("��������");
builder.setIcon(R.drawable.directory);
builder.setCancelable(true);
LayoutInflater inflater = LayoutInflater.from(FileActivity.this);
View rootView = inflater.inflate(R.layout.input_foldername_dialog, null);
final EditText et = (EditText)rootView.findViewById(R.id.foldername);
builder.setView(rootView);
builder.setPositiveButton("ȷ��", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String foldername = et.getText().toString();
Map<String, Object> map = leftList.get(0);
File parentFile = new File((String)map.get("currentDirPath"));
File newFolder = new File(parentFile,foldername);
if(newFolder.mkdir()){
rightList = FileUtil.getSubDirAndFiles(parentFile);
setUpAdapter();//ˢ��
Toast.makeText(FileActivity.this, "�����ɹ�", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(FileActivity.this, "�����ļ���", Toast.LENGTH_SHORT).show();
}
}
});
builder.show();
}
return true;
case R.id.deletefolder:{
Toast.makeText(FileActivity.this, "ɾ���ļ���", Toast.LENGTH_SHORT).show();
}
return true;
default:
return false;
}
}
class rightLVItemLongClickListener implements OnItemLongClickListener{
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
final Map<String, Object> map = rightList.get(0);
AlertDialog.Builder builder = new AlertDialog.Builder(FileActivity.this);
builder.setTitle("��ȷ��Ҫɾ����?");
builder.setIcon(R.drawable.question);
builder.setPositiveButton("ȷ��", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
File currentFile = new File((String)map.get("subDirPath"));
if(currentFile.delete()){
rightList = FileUtil.getSubDirAndFiles(currentFile.getParentFile());
setUpAdapter();//ˢ��
Toast.makeText(FileActivity.this, "ɾ���ɹ�", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(FileActivity.this, "ɾ��ʧ��", Toast.LENGTH_SHORT).show();
}
}
});
builder.setNegativeButton("ȡ��", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.show();
return false;
}
}
}