Advertisement
bigrushdog

Untitled

Nov 7th, 2012
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.56 KB | None | 0 0
  1.  
  2. package org.teameos.settings.device;
  3.  
  4. import android.app.AlertDialog;
  5. import android.app.Dialog;
  6. import android.content.Context;
  7. import android.content.DialogInterface;
  8. import android.content.SharedPreferences;
  9. import android.os.Bundle;
  10. import android.os.Environment;
  11. import android.support.v4.app.DialogFragment;
  12. import android.util.Log;
  13. import android.view.LayoutInflater;
  14. import android.view.View;
  15. import android.view.ViewGroup;
  16. import android.widget.ArrayAdapter;
  17. import android.widget.TextView;
  18.  
  19. import com.squareup.otto.Subscribe;
  20.  
  21. import java.io.File;
  22. import java.io.FileFilter;
  23. import java.util.ArrayList;
  24. import java.util.Arrays;
  25. import java.util.List;
  26.  
  27. public class PrlListDialogFragment extends DialogFragment {
  28.     private static String TAG = "PrlListDialogFragment";
  29.     private static String FOLDER_KEY = "folder_key";
  30.     final static String SDCARD_PATH = Environment.getExternalStorageDirectory().toString();
  31.     PrlAdapter mPrlAdapter;
  32.     SharedPreferences mPrefs;
  33.  
  34.     public static PrlListDialogFragment newInstance() {
  35.         PrlListDialogFragment f = new PrlListDialogFragment();
  36.         return f;
  37.     }
  38.  
  39.     public PrlListDialogFragment() {
  40.     }
  41.  
  42.     @Override
  43.     public void onCreate(Bundle savedInstanceState) {
  44.         super.onCreate(savedInstanceState);
  45.         mPrefs = getActivity().getSharedPreferences(TAG, Context.MODE_PRIVATE);
  46.         BusProvider.getInstance().register(this);
  47.         log("Created");
  48.     }
  49.  
  50.     @Override
  51.     public void onPause() {
  52.         super.onPause();
  53.         BusProvider.getInstance().unregister(this);
  54.     }
  55.  
  56.     @Override
  57.     public void onResume() {
  58.         super.onResume();
  59.         BusProvider.getInstance().register(this);
  60.     }
  61.  
  62.     @Override
  63.     public Dialog onCreateDialog(Bundle savedInstanceState) {
  64.         log("onCreateDialog called");
  65.         mPrlAdapter = new PrlAdapter(getActivity(), getPrlFiles());
  66.  
  67.         AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
  68.         builder.setTitle(R.string.select_prl);
  69.         builder.setAdapter(mPrlAdapter, new DialogInterface.OnClickListener() {
  70.             public void onClick(DialogInterface dialog, int item) {
  71.                 File prl = (File) mPrlAdapter.getItem(item);
  72.                 BusProvider.getInstance().post(new PrlSelectedEvent(prl));
  73.             }
  74.         });
  75.         return builder.create();
  76.     }
  77.  
  78.     private class PrlAdapter extends ArrayAdapter<File> {
  79.         private final ArrayList<File> prls;
  80.         private final Context mContext;
  81.  
  82.         public PrlAdapter(Context context, ArrayList<File> prls) {
  83.             super(context, android.R.layout.select_dialog_item, prls);
  84.             this.mContext = context;
  85.             this.prls = prls;
  86.             // TODO Auto-generated constructor stub
  87.         }
  88.  
  89.         public View getView(int position, View convertView, ViewGroup parent) {
  90.             View itemRow = convertView;
  91.             File f = prls.get(position);
  92.             itemRow = ((LayoutInflater) mContext
  93.                     .getSystemService(Context.LAYOUT_INFLATER_SERVICE))
  94.                     .inflate(android.R.layout.select_dialog_item, null);
  95.             ((TextView) itemRow.findViewById(android.R.id.text1)).setText(f.getName());
  96.  
  97.             return itemRow;
  98.         }
  99.     }
  100.  
  101.     private ArrayList<File> getPrlFiles() {
  102.         File f = new File(mPrefs.getString(FOLDER_KEY, SDCARD_PATH)).getAbsoluteFile();
  103.         log("PRL path found " + f.getAbsolutePath());
  104.         if (!f.isDirectory()) {
  105.             log(f.toString() + " is not a directory?");
  106.             f = new File(SDCARD_PATH);
  107.         }
  108.         ArrayList<File> list = new ArrayList<File>();
  109.         if (f.listFiles() == null) return null;
  110.         for(File tmp : f.listFiles(new PrlFilter())) {
  111.             list.add(tmp);
  112.         }
  113.         return list;
  114.     }
  115.  
  116.     private class PrlFilter implements FileFilter {
  117.         private final String[] okFileExtensions =
  118.                 new String[] {"prl"};
  119.         @Override
  120.         public boolean accept(File file) {
  121.             for (String extension : okFileExtensions) {
  122.                 if (file.getName().toLowerCase().endsWith(extension)) {
  123.                     return true;
  124.                 }
  125.             }
  126.             return false;
  127.         }
  128.     }
  129.  
  130.     @Subscribe
  131.     public void onPrlDirectorySelectedEvent(PrlDirectorySelectedEvent event) {
  132.         mPrlAdapter.clear();
  133.         mPrlAdapter.addAll(getPrlFiles());
  134.         mPrlAdapter.notifyDataSetChanged();
  135.     }
  136.  
  137.     private static void log(String s) {
  138.         Log.i(TAG, s);
  139.     }
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement