package it.angrydroids.epub3reader; import it.angrydroids.epub3reader.FirstActivity.PlaceholderFragment; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.List; import net.sf.andpdf.pdfviewer.PdfViewerActivity; import pdf.render.view.MyPdfViewer; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.LayoutInflater; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.ListView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.app.ListFragment; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import pdf.render.view.*; public class PdfBrowserFragment extends ListFragment { ArrayList<String> names = new ArrayList<String>(); ArrayList<String> datas = new ArrayList<String>(); List<String> pdffiles; List<File> pdfs; static File selected; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub return inflater.inflate(R.layout.pdf_browser_layout, container, false); } public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if ((pdfs == null) || (pdfs.size() == 0)) { pdfs = pdfList(new File(Environment.getExternalStorageDirectory(),"")); } pdffiles = fileNames(pdfs); setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, pdffiles)); registerForContextMenu(getListView()); getListView().setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> listView, View itemView, int position, long itemId) { String fname = pdffiles.get(position); Intent intent = new Intent(getActivity() .getApplicationContext(), MyPdfViewer.class); intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, Environment.getExternalStorageDirectory() + "/ebooks/" + fname + ".pdf"); startActivity(intent); } }); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getActivity().getMenuInflater(); inflater.inflate(R.menu.pdflist_long_press, menu); } @Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item .getMenuInfo(); int listPosition = info.position; String fileName = getListView().getItemAtPosition((listPosition)) .toString(); switch (item.getItemId()) { case R.id.share_file: Toast.makeText(getActivity().getApplicationContext(), fileName, Toast.LENGTH_LONG).show(); Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); emailIntent.setType("application/pdf"); emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { "singhjaspreet1303@gmail.com" }); emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "attached pdf book"); emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Pleas find the attachments"); emailIntent.putExtra( Intent.EXTRA_STREAM, Uri.parse(Environment.getExternalStorageDirectory() + "/ebook/" + fileName + ".pdf")); startActivity(Intent.createChooser(emailIntent, "Send mail...")); break; case R.id.delete_file: try { File sdcard = Environment.getExternalStorageDirectory(); File file = new File(sdcard, "/ebook/" + fileName + ".pdf"); file.delete(); } catch (Exception e) { } FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); PdfBrowserFragment pfrag = new PdfBrowserFragment(); transaction.replace(R.id.container, pfrag, "pdfBrowserFragment"); transaction.commit(); break; } return super.onContextItemSelected(item); } private List<File> pdfList(File dir) { List<File> res = new ArrayList<File>(); if (dir.isDirectory()) { File[] f = dir.listFiles(); if (f != null) { for (int i = 0; i < f.length; i++) { if (f[i].isDirectory()) { res.addAll(pdfList(f[i])); } else { String lowerCasedName = f[i].getName().toLowerCase(); if (lowerCasedName.endsWith(".pdf")) { res.add(f[i]); } } } } } return res; } private List<String> fileNames(List<File> files) { List<String> res = new ArrayList<String>(); for (int i = 0; i < files.size(); i++) { res.add(files.get(i).getName().replace(".pdf", "")); } return res; } }