package com.bucketdevelopers.uft;
import java.io.File;
import java.util.ArrayList;
import java.util.Map;
import com.common.methods.MimeUtils;
import com.common.methods.XmlParser;
import com.ipaulpro.afilechooser.FileChooserActivity;
import com.ipaulpro.afilechooser.utils.FileUtils;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
@SuppressLint("DefaultLocale")
public class File_Download extends Activity implements OnClickListener {
private static final int REQUEST_CODE = 100;
Button upload;
ListView listview;
ArrayList<String> filearray;
ArrayAdapter<String> arrayadapter;
XmlParser xml;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.file_download);
upload = (Button) findViewById(R.id.button1);
listview = (ListView) findViewById(R.id.filelist);
upload.setOnClickListener(this);
filearray = new ArrayList<String>();
xml = new XmlParser(getFilesDir());
filearray = xml.fileList();
arrayadapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, filearray);
listview.setAdapter(arrayadapter);
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
final int pos = position;
final CharSequence[] items = { "Open", "Remove from list",
"Clear entire list" };
AlertDialog.Builder dialog = new AlertDialog.Builder(
File_Download.this);
dialog.setTitle(filearray.get(pos)).setItems(items,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int index) {
// TODO Auto-generated method stub
File tempfile;
switch (index) {
case 0: // Open that file
String fpath = XmlParser.getFilePath(
filearray.get(pos)).toLowerCase();
String extension = fpath.substring(fpath
.lastIndexOf('.') + 1);
File file = new File(fpath.substring(1));
if (MimeUtils
.guessMimeTypeFromExtension(extension) == null)
Toast.makeText(getBaseContext(),
"Unknown File Type",
Toast.LENGTH_SHORT).show();
else {
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(
Uri.fromFile(file),
MimeUtils
.guessMimeTypeFromExtension(extension));
startActivity(intent);
}
break;
case 1: // Remove that file
Map<String, String> filemap = XmlParser
.getFileMap();
Log.d("Hell",
"List has " + filearray.size());
/*
* for(int i= 0; i< filearray.size();i++) {
*
* filemap.put(filearray.get(i),
* xml.getFilePath(filearray.get(i))); }
*/
// Log.d("Hell","Map is "+filemap.toString());
filearray.remove(pos);
arrayadapter.notifyDataSetChanged();
tempfile = new File(getFilesDir(),
"list.xml");
tempfile.delete();
XmlParser.checkXml(getFilesDir(),
"list.xml");
XmlParser t_xml = new XmlParser(
getFilesDir());
Log.d("Hell",
"List has " + filearray.size());
for (int i = 0; i < filearray.size(); i++) {
// Log.d("attempt",
// "Trying "+filearray.get(i)+" at "+filemap.get(filearray.get(i)));
t_xml.addFile(filearray.get(i),
filemap.get(filearray.get(i)));
}
Toast.makeText(getBaseContext(), "Removed",
Toast.LENGTH_SHORT).show();
break;
case 2:
tempfile = new File(getFilesDir(),
"list.xml");
tempfile.delete();
XmlParser.checkXml(getFilesDir(),
"list.xml");
filearray.clear();
arrayadapter.notifyDataSetChanged();
break;
}
}
});
dialog.show();
}
});
}
public void onClick(View view) {
Button clickedBtn = (Button) view;
switch (clickedBtn.getId()) {
case R.id.button1:
// TODO Auto-generated method stub
// Intent getContentIntent = FileUtils.createGetContentIntent();
// Intent intent = Intent.createChooser(getContentIntent,
// "Select a file");
Intent intent = new Intent(this, FileChooserActivity.class);
startActivityForResult(intent, REQUEST_CODE);
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQUEST_CODE:
if (resultCode == RESULT_OK) {
String tempFilePath, tempFileName;
final Uri uri = data.getData();
File file = FileUtils.getFile(getApplicationContext(),uri);
tempFilePath = file.toString();
tempFileName = tempFilePath.substring(tempFilePath
.lastIndexOf('/') + 1);
Log.d("msg1", tempFileName);
XmlParser t_xml = new XmlParser(getFilesDir());
t_xml.addFile(tempFileName, tempFilePath);
Log.d("msg2", tempFilePath);
filearray.add(tempFileName);
arrayadapter.notifyDataSetChanged();
}
}
}
/*
* @Override protected void onResume() { super.onResume();
*
* TextView textIpaddr = (TextView) findViewById(R.id.ipaddr);
*
* String ipaddress = IpAddress.getHostIPAddress();
* textIpaddr.setText("Please access! http://" + ipaddress + ":" + PORT);
*
* server = new MyHTTPD(); try { server.start(); } catch (IOException e) {
* // TODO Auto-generated catch block e.printStackTrace(); } }
*
* @Override protected void onPause() { super.onPause(); if (server != null)
* server.stop(); }
*
* // Http Response Server
*
* private class MyHTTPD extends NanoHTTPD { public MyHTTPD() { super(PORT);
* }
*
* public Response serve(String uri, Method method, Map<String, String>
* header, Map<String, String> parms, Map<String, String> files) {
*
* XmlParser xml = new XmlParser(getFilesDir()); //xml.addFile("abc.txt",
* "/sdcard/test/abc.txt"); ArrayList<String> fileList = xml.fileList();
* if(uri.contentEquals("/")){ StringBuilder filesHtml = new
* StringBuilder(); for(int i=0;i<fileList.size();i++) {
* filesHtml.append("<a href=\""
* +fileList.get(i)+"\">"+fileList.get(i)+"</a><br/>"); }
*
* StringBuilder sb = new StringBuilder(); sb.append("<html>");
* sb.append("<head><title>Debug Server</title></head>");
* sb.append(filesHtml.toString()); sb.append("<body>");
* sb.append("</body>"); sb.append("</html>"); return new
* Response(sb.toString()); }
*
* // File path = Environment.getExternalStorageDirectory(); else{ String
* fileName = uri.substring(1); String fpath=xml.getFilePath(fileName); File
* file = new File(fpath); //int ch; //StringBuilder text = new
* StringBuilder();
*
* try { //BufferedReader br = new BufferedReader(new FileReader(file));
* FileInputStream in = new FileInputStream(file); // String line; // while
* ((ch = in.read()) != -1) { // text.append((char)ch); //text.append('\n');
* // }
*
* Response res= new Response(Status.OK,"application/octet-stream",in );
* res.addHeader("Content-Disposition",
* "attachment; filename=\""+fileName+"\""); return res; } catch
* (IOException e) { //You'll need to add proper error handling here }
* return new Response("Fail!!");
*
* } }//end of serve } //end of class myHTTPD
*/
}// end of main activity