//package com.artifex.mupdfdemo; // //import java.io.File; //import java.io.FileFilter; //import java.util.Arrays; //import java.util.Comparator; //import java.util.HashMap; //import java.util.Map; // //import android.app.AlertDialog; //import android.app.ListActivity; //import android.content.DialogInterface; //import android.content.DialogInterface.OnClickListener; //import android.content.Intent; //import android.content.res.Resources; //import android.net.Uri; //import android.os.Bundle; //import android.os.Environment; //import android.os.FileObserver; //import android.os.Handler; //import android.view.View; //import android.widget.ListView; // //enum Purpose { // PickPDF, // PickKeyFile //} // //public class ChoosePDFActivity extends ListActivity { // static public final String PICK_KEY_FILE = "com.artifex.mupdfdemo.PICK_KEY_FILE"; // static private File mDirectory; // static private Map<String, Integer> mPositions = new HashMap<String, Integer>(); // private File mParent; // private File [] mDirs; // private File [] mFiles; // private Handler mHandler; // private Runnable mUpdateFiles; // private ChoosePDFAdapter adapter; // private Purpose mPurpose; // // @Override // protected void onCreate(Bundle savedInstanceState) { // super.onCreate(savedInstanceState); // // mPurpose = PICK_KEY_FILE.equals(getIntent().getAction()) ? Purpose.PickKeyFile : Purpose.PickPDF; // // String storageState = Environment.getExternalStorageState(); // // if (!Environment.MEDIA_MOUNTED.equals(storageState) // && !Environment.MEDIA_MOUNTED_READ_ONLY.equals(storageState)) // { // AlertDialog.Builder builder = new AlertDialog.Builder(this); // builder.setTitle(R.string.no_media_warning); // builder.setMessage(R.string.no_media_hint); // AlertDialog alert = builder.create(); // alert.setButton(AlertDialog.BUTTON_POSITIVE,getString(R.string.dismiss), // new OnClickListener() { // public void onClick(DialogInterface dialog, int which) { // finish(); // } // }); // alert.show(); // return; // } // // if (mDirectory == null) // mDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); // // // Create a list adapter... // adapter = new ChoosePDFAdapter(getLayoutInflater()); // setListAdapter(adapter); // // // ...that is updated dynamically when files are scanned // mHandler = new Handler(); // mUpdateFiles = new Runnable() { // public void run() { // Resources res = getResources(); // String appName = res.getString(R.string.app_name); // String version = res.getString(R.string.version); // String title = res.getString(R.string.picker_title_App_Ver_Dir); // setTitle(String.format(title, appName, version, mDirectory)); // // mParent = mDirectory.getParentFile(); // // mDirs = mDirectory.listFiles(new FileFilter() { // // public boolean accept(File file) { // return file.isDirectory(); // } // }); // if (mDirs == null) // mDirs = new File[0]; // // mFiles = mDirectory.listFiles(new FileFilter() { // // public boolean accept(File file) { // if (file.isDirectory()) // return false; // String fname = file.getName().toLowerCase(); // switch (mPurpose) { // case PickPDF: // if (fname.endsWith(".pdf")) // return true; // if (fname.endsWith(".xps")) // return true; // if (fname.endsWith(".cbz")) // return true; // if (fname.endsWith(".epub")) // return true; // if (fname.endsWith(".fb2")) // return true; // if (fname.endsWith(".png")) // return true; // if (fname.endsWith(".jpe")) // return true; // if (fname.endsWith(".jpeg")) // return true; // if (fname.endsWith(".jpg")) // return true; // if (fname.endsWith(".jfif")) // return true; // if (fname.endsWith(".jfif-tbnl")) // return true; // if (fname.endsWith(".tif")) // return true; // if (fname.endsWith(".tiff")) // return true; // return false; // case PickKeyFile: // if (fname.endsWith(".pfx")) // return true; // return false; // default: // return false; // } // } // }); // if (mFiles == null) // mFiles = new File[0]; // // Arrays.sort(mFiles, new Comparator<File>() { // public int compare(File arg0, File arg1) { // return arg0.getName().compareToIgnoreCase(arg1.getName()); // } // }); // // Arrays.sort(mDirs, new Comparator<File>() { // public int compare(File arg0, File arg1) { // return arg0.getName().compareToIgnoreCase(arg1.getName()); // } // }); // // adapter.clear(); // if (mParent != null) // adapter.add(new ChoosePDFItem(ChoosePDFItem.Type.PARENT, getString(R.string.parent_directory))); // for (File f : mDirs) // adapter.add(new ChoosePDFItem(ChoosePDFItem.Type.DIR, f.getName())); // for (File f : mFiles) // adapter.add(new ChoosePDFItem(ChoosePDFItem.Type.DOC, f.getName())); // // lastPosition(); // } // }; // // // Start initial file scan... // mHandler.post(mUpdateFiles); // // // ...and observe the directory and scan files upon changes. // FileObserver observer = new FileObserver(mDirectory.getPath(), FileObserver.CREATE | FileObserver.DELETE) { // public void onEvent(int event, String path) { // mHandler.post(mUpdateFiles); // } // }; // observer.startWatching(); // } // // private void lastPosition() { // String p = mDirectory.getAbsolutePath(); // if (mPositions.containsKey(p)) // getListView().setSelection(mPositions.get(p)); // } // // @Override // protected void onListItemClick(ListView l, View v, int position, long id) { // super.onListItemClick(l, v, position, id); // // mPositions.put(mDirectory.getAbsolutePath(), getListView().getFirstVisiblePosition()); // // if (position < (mParent == null ? 0 : 1)) { // mDirectory = mParent; // mHandler.post(mUpdateFiles); // return; // } // // position -= (mParent == null ? 0 : 1); // // if (position < mDirs.length) { // mDirectory = mDirs[position]; // mHandler.post(mUpdateFiles); // return; // } // // position -= mDirs.length; // // Uri uri = Uri.fromFile(mFiles[position]); // Intent intent = new Intent(this,MuPDFActivity.class); // intent.setAction(Intent.ACTION_VIEW); // intent.setData(uri); // switch (mPurpose) { // case PickPDF: // // Start an activity to display the PDF file // startActivity(intent); // break; // case PickKeyFile: // // Return the uri to the caller // setResult(RESULT_OK, intent); // finish(); // break; // } // } // // @Override // protected void onPause() { // super.onPause(); // if (mDirectory != null) // mPositions.put(mDirectory.getAbsolutePath(), getListView().getFirstVisiblePosition()); // } //}