diff options
Diffstat (limited to 'src/org/fox/ttcomics/DirectoryPicker.java')
-rw-r--r-- | src/org/fox/ttcomics/DirectoryPicker.java | 169 |
1 files changed, 0 insertions, 169 deletions
diff --git a/src/org/fox/ttcomics/DirectoryPicker.java b/src/org/fox/ttcomics/DirectoryPicker.java deleted file mode 100644 index d607b48..0000000 --- a/src/org/fox/ttcomics/DirectoryPicker.java +++ /dev/null @@ -1,169 +0,0 @@ -package org.fox.ttcomics; - -import java.io.File; -import java.util.ArrayList; -import java.util.Collections; - -import android.app.ListActivity; -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.os.Environment; -import android.view.View; -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; - -/** -Copyright (C) 2011 by Brad Greco <[email protected]> - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - */ - -public class DirectoryPicker extends ListActivity { - - public static final String START_DIR = "startDir"; - public static final String ONLY_DIRS = "onlyDirs"; - public static final String SHOW_HIDDEN = "showHidden"; - public static final String CHOSEN_DIRECTORY = "chosenDir"; - public static final int PICK_DIRECTORY = 43522432; - private File dir; - private boolean showHidden = false; - private boolean onlyDirs = true ; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - Bundle extras = getIntent().getExtras(); - dir = Environment.getExternalStorageDirectory(); - if (extras != null) { - String preferredStartDir = extras.getString(START_DIR); - showHidden = extras.getBoolean(SHOW_HIDDEN, false); - onlyDirs = extras.getBoolean(ONLY_DIRS, true); - if(preferredStartDir != null) { - File startDir = new File(preferredStartDir); - if(startDir.isDirectory()) { - dir = startDir; - } - } - } - - setContentView(R.layout.chooser_list); - setTitle(dir.getAbsolutePath()); - Button btnChoose = (Button) findViewById(R.id.btnChoose); - String name = dir.getName(); - if(name.length() == 0) - name = "/"; - btnChoose.setText(getString(R.string.picker_choose, name)); - btnChoose.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { - returnDir(dir.getAbsolutePath()); - } - }); - - Button btnParent = (Button) findViewById(R.id.btnParent); - btnParent.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { - Intent intent = new Intent(DirectoryPicker.this, DirectoryPicker.class); - intent.putExtra(DirectoryPicker.START_DIR, dir.getParent()); - intent.putExtra(DirectoryPicker.SHOW_HIDDEN, showHidden); - intent.putExtra(DirectoryPicker.ONLY_DIRS, onlyDirs); - startActivityForResult(intent, PICK_DIRECTORY); - } - }); - - if (dir.getParent() == null) { - btnParent.setVisibility(View.GONE); - } - - ListView lv = getListView(); - lv.setTextFilterEnabled(true); - - if(!dir.canRead()) { - Context context = getApplicationContext(); - String msg = getString(R.string.error_could_not_read_folder_contents_); - Toast toast = Toast.makeText(context, msg, Toast.LENGTH_LONG); - toast.show(); - return; - } - - final ArrayList<File> files = filter(dir.listFiles(), onlyDirs, showHidden); - String[] names = names(files); - setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, names)); - - - lv.setOnItemClickListener(new OnItemClickListener() { - public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - if(!files.get(position).isDirectory()) - return; - String path = files.get(position).getAbsolutePath(); - Intent intent = new Intent(DirectoryPicker.this, DirectoryPicker.class); - intent.putExtra(DirectoryPicker.START_DIR, path); - intent.putExtra(DirectoryPicker.SHOW_HIDDEN, showHidden); - intent.putExtra(DirectoryPicker.ONLY_DIRS, onlyDirs); - startActivityForResult(intent, PICK_DIRECTORY); - } - }); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if(requestCode == PICK_DIRECTORY && resultCode == RESULT_OK) { - Bundle extras = data.getExtras(); - String path = (String) extras.get(DirectoryPicker.CHOSEN_DIRECTORY); - returnDir(path); - } - } - - private void returnDir(String path) { - Intent result = new Intent(); - result.putExtra(CHOSEN_DIRECTORY, path); - setResult(RESULT_OK, result); - finish(); - } - - public ArrayList<File> filter(File[] file_list, boolean onlyDirs, boolean showHidden) { - ArrayList<File> files = new ArrayList<File>(); - - for(File file: file_list) { - if(onlyDirs && !file.isDirectory()) - continue; - if(!showHidden && file.isHidden()) - continue; - files.add(file); - } - Collections.sort(files); - - return files; - } - - public String[] names(ArrayList<File> files) { - String[] names = new String[files.size()]; - int i = 0; - for(File file: files) { - names[i] = file.getName(); - i++; - } - return names; - } -} - |