diff options
| author | Bananeweizen <Bananeweizen@gmx.de> | 2013-10-03 23:21:56 -0700 |
|---|---|---|
| committer | Bananeweizen <Bananeweizen@gmx.de> | 2013-10-03 23:21:56 -0700 |
| commit | a991f36d5cd00b3bbfbed27c4de30bf608d8b009 (patch) | |
| tree | 1c859986fe35d079ea67f356295ea93b6300825f /main | |
| parent | 4c65cb6e3443b2423e4dd16f1e7de711a5306975 (diff) | |
| parent | 39d26215babc48cad64492fdfb4e655635380d6e (diff) | |
| download | cgeo-a991f36d5cd00b3bbfbed27c4de30bf608d8b009.zip cgeo-a991f36d5cd00b3bbfbed27c4de30bf608d8b009.tar.gz cgeo-a991f36d5cd00b3bbfbed27c4de30bf608d8b009.tar.bz2 | |
Merge pull request #3323 from marco-dev/fixDirChooser
fixes #3303 - SimpleDirChooser shows all readable directories now
Diffstat (limited to 'main')
| -rw-r--r-- | main/res/layout/simple_dir_chooser.xml | 6 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/files/SimpleDirChooser.java | 26 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/settings/SettingsActivity.java | 11 |
3 files changed, 31 insertions, 12 deletions
diff --git a/main/res/layout/simple_dir_chooser.xml b/main/res/layout/simple_dir_chooser.xml index f7e03d8..637a2e1 100644 --- a/main/res/layout/simple_dir_chooser.xml +++ b/main/res/layout/simple_dir_chooser.xml @@ -49,15 +49,17 @@ <Button android:id="@+id/simple_dir_chooser_ok" style="@style/button_full" - android:layout_width="wrap_content" + android:layout_width="fill_parent" android:layout_height="wrap_content" + android:layout_weight="1" android:text="@android:string/ok" /> <Button android:id="@+id/simple_dir_chooser_cancel" style="@style/button_full" - android:layout_width="wrap_content" + android:layout_width="fill_parent" android:layout_height="wrap_content" + android:layout_weight="1" android:text="@android:string/cancel" /> </LinearLayout> diff --git a/main/src/cgeo/geocaching/files/SimpleDirChooser.java b/main/src/cgeo/geocaching/files/SimpleDirChooser.java index 2d3565a..266cf89 100644 --- a/main/src/cgeo/geocaching/files/SimpleDirChooser.java +++ b/main/src/cgeo/geocaching/files/SimpleDirChooser.java @@ -32,17 +32,20 @@ import java.util.List; * Dialog for choosing a file or directory. */ public class SimpleDirChooser extends AbstractListActivity { + public static final String EXTRA_CHOOSE_FOR_WRITING = "chooseForWriting"; private static final String PARENT_DIR = ".. "; private File currentDir; private FileArrayAdapter adapter; private Button okButton = null; private int lastPosition = -1; + private boolean chooseForWriting = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Bundle extras = getIntent().getExtras(); currentDir = dirContaining(extras.getString(Intents.EXTRA_START_DIR)); + chooseForWriting = extras.getBoolean(SimpleDirChooser.EXTRA_CHOOSE_FOR_WRITING, false); ActivityMixin.setTheme(this); setContentView(R.layout.simple_dir_chooser); @@ -91,13 +94,13 @@ public class SimpleDirChooser extends AbstractListActivity { List<Option> listDirs = new ArrayList<Option>(); try { for (File currentDir : dirs) { - listDirs.add(new Option(currentDir.getName(), currentDir.getAbsolutePath())); + listDirs.add(new Option(currentDir.getName(), currentDir.getAbsolutePath(), currentDir.canWrite())); } } catch (RuntimeException e) { } Collections.sort(listDirs); if (dir.getParent() != null) { - listDirs.add(0, new Option(PARENT_DIR, dir.getParent())); + listDirs.add(0, new Option(PARENT_DIR, dir.getParent(), false)); } this.adapter = new FileArrayAdapter(this, R.layout.simple_dir_item, listDirs); this.setListAdapter(adapter); @@ -138,8 +141,13 @@ public class SimpleDirChooser extends AbstractListActivity { } CheckBox check = (CheckBox) v.findViewById(R.id.CheckBox); if (check != null) { - check.setOnClickListener(new OnCheckBoxClickListener(position)); - check.setChecked(option.isChecked()); + if (!chooseForWriting || option.isWriteable()) { + check.setOnClickListener(new OnCheckBoxClickListener(position)); + check.setChecked(option.isChecked()); + check.setEnabled(true); + } else { + check.setEnabled(false); + } } } return v; @@ -204,10 +212,12 @@ public class SimpleDirChooser extends AbstractListActivity { private final String name; private final String path; private boolean checked = false; + private boolean writeable = false; - public Option(String name, String path) { + public Option(String name, String path, boolean writeable) { this.name = name; this.path = path; + this.writeable = writeable; } public String getName() { @@ -226,6 +236,10 @@ public class SimpleDirChooser extends AbstractListActivity { this.checked = checked; } + public boolean isWriteable() { + return writeable; + } + @Override public int compareTo(Option other) { if (other != null && this.name != null) { @@ -240,7 +254,7 @@ public class SimpleDirChooser extends AbstractListActivity { @Override public boolean accept(File dir, String filename) { File file = new File(dir, filename); - return file.isDirectory() && file.canWrite(); + return file.isDirectory() && file.canRead(); } } diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java index 22a0907..6ba3e04 100644 --- a/main/src/cgeo/geocaching/settings/SettingsActivity.java +++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java @@ -73,18 +73,20 @@ public class SettingsActivity extends PreferenceActivity { */ private enum DirChooserType { GPX_IMPORT_DIR(1, R.string.pref_gpxImportDir, - Environment.getExternalStorageDirectory().getPath() + "/gpx"), + Environment.getExternalStorageDirectory().getPath() + "/gpx", false), GPX_EXPORT_DIR(2, R.string.pref_gpxExportDir, - Environment.getExternalStorageDirectory().getPath() + "/gpx"), - THEMES_DIR(3, R.string.pref_renderthemepath, ""); + Environment.getExternalStorageDirectory().getPath() + "/gpx", true), + THEMES_DIR(3, R.string.pref_renderthemepath, "", false); public final int requestCode; public final int keyId; public final String defaultValue; + public final boolean writeMode; - DirChooserType(final int requestCode, final int keyId, final String defaultValue) { + DirChooserType(final int requestCode, final int keyId, final String defaultValue, final boolean writeMode) { this.requestCode = requestCode; this.keyId = keyId; this.defaultValue = defaultValue; + this.writeMode = writeMode; } } @@ -306,6 +308,7 @@ public class SettingsActivity extends PreferenceActivity { // OI file manager not available final Intent dirChooser = new Intent(this, SimpleDirChooser.class); dirChooser.putExtra(Intents.EXTRA_START_DIR, startDirectory); + dirChooser.putExtra(SimpleDirChooser.EXTRA_CHOOSE_FOR_WRITING, dct.writeMode); startActivityForResult(dirChooser, dct.requestCode); } } |
