From ecebb802ed63c3540ed2bdb0c903e49dabca73ff Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 9 Aug 2018 13:41:06 +0300 Subject: switch to a somewhat better looking directory picker --- org.fox.ttcomics/build.gradle | 3 +- org.fox.ttcomics/org.fox.ttcomics.iml | 2 + org.fox.ttcomics/src/main/AndroidManifest.xml | 4 +- .../java/org/fox/ttcomics2/CommonActivity.java | 1 + .../java/org/fox/ttcomics2/DirectoryPicker.java | 173 --------------------- .../org/fox/ttcomics2/PreferencesActivity.java | 27 +++- 6 files changed, 25 insertions(+), 185 deletions(-) delete mode 100644 org.fox.ttcomics/src/main/java/org/fox/ttcomics2/DirectoryPicker.java (limited to 'org.fox.ttcomics') diff --git a/org.fox.ttcomics/build.gradle b/org.fox.ttcomics/build.gradle index 3ebac38..1964a81 100755 --- a/org.fox.ttcomics/build.gradle +++ b/org.fox.ttcomics/build.gradle @@ -64,5 +64,6 @@ dependencies { compile 'com.google.android.gms:play-services-base:15.0.1' compile 'com.google.android.gms:play-services-auth:15.0.1' compile files('libs/nineoldandroids-2.4.0.jar') - + compile 'com.gu:option:1.3' + compile 'net.rdrei.android.dirchooser:library:3.2@aar' } diff --git a/org.fox.ttcomics/org.fox.ttcomics.iml b/org.fox.ttcomics/org.fox.ttcomics.iml index 37296f1..30bfbe0 100755 --- a/org.fox.ttcomics/org.fox.ttcomics.iml +++ b/org.fox.ttcomics/org.fox.ttcomics.iml @@ -142,6 +142,7 @@ + @@ -153,6 +154,7 @@ + diff --git a/org.fox.ttcomics/src/main/AndroidManifest.xml b/org.fox.ttcomics/src/main/AndroidManifest.xml index 3905efa..75e306e 100755 --- a/org.fox.ttcomics/src/main/AndroidManifest.xml +++ b/org.fox.ttcomics/src/main/AndroidManifest.xml @@ -49,9 +49,7 @@ + android:name="net.rdrei.android.dirchooser.DirectoryChooserActivity"> - -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 CompatListActivity { - - 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 = 128; - 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.activity_directory_picker); - setSupportActionBar((Toolbar)findViewById(R.id.toolbar)); - - 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 files = filter(dir.listFiles(), onlyDirs, showHidden); - String[] names = names(files); - setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, 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 filter(File[] file_list, boolean onlyDirs, boolean showHidden) { - ArrayList files = new ArrayList(); - - 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 files) { - String[] names = new String[files.size()]; - int i = 0; - for(File file: files) { - names[i] = file.getName(); - i++; - } - return names; - } -} - diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesActivity.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesActivity.java index 746c54b..9b474e4 100755 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesActivity.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesActivity.java @@ -8,8 +8,12 @@ import android.preference.PreferenceManager; import android.support.v7.widget.Toolbar; import android.view.MenuItem; +import net.rdrei.android.dirchooser.DirectoryChooserActivity; +import net.rdrei.android.dirchooser.DirectoryChooserConfig; + public class PreferencesActivity extends CommonActivity { - @Override + + @Override public void onCreate(Bundle savedInstanceState) { // we use that before parent onCreate so let's init locally m_prefs = PreferenceManager @@ -42,9 +46,9 @@ public class PreferencesActivity extends CommonActivity { @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == DirectoryPicker.PICK_DIRECTORY && resultCode == RESULT_OK) { - Bundle extras = data.getExtras(); - String path = (String) extras.get(DirectoryPicker.CHOSEN_DIRECTORY); + if (requestCode == REQUEST_PICK_DIRECTORY && resultCode == DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED) { + + String path = data.getStringExtra(DirectoryChooserActivity.RESULT_SELECTED_DIR); SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(getApplicationContext()); @@ -58,14 +62,21 @@ public class PreferencesActivity extends CommonActivity { } public void startPicker() { - Intent intent = new Intent(PreferencesActivity.this, DirectoryPicker.class); + Intent intent = new Intent(PreferencesActivity.this, DirectoryChooserActivity.class); SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(getApplicationContext()); - intent.putExtra(DirectoryPicker.START_DIR, prefs.getString("comics_directory", - Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath())); + String initialDir = prefs.getString("comics_directory", + Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath()); + + intent.putExtra(DirectoryChooserActivity.EXTRA_CONFIG, DirectoryChooserConfig.builder() + .newDirectoryName("Comics") + .allowNewDirectoryNameModification(true) + .allowReadOnlyDirectory(true) + .initialDirectory(initialDir) + .build()); - startActivityForResult(intent, DirectoryPicker.PICK_DIRECTORY); + startActivityForResult(intent, REQUEST_PICK_DIRECTORY); } } -- cgit v1.2.3