diff options
Diffstat (limited to 'src/de/danoeh/antennapod')
-rw-r--r-- | src/de/danoeh/antennapod/activity/DirectoryChooserActivity.java | 118 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/activity/PreferenceActivity.java | 10 |
2 files changed, 121 insertions, 7 deletions
diff --git a/src/de/danoeh/antennapod/activity/DirectoryChooserActivity.java b/src/de/danoeh/antennapod/activity/DirectoryChooserActivity.java index f6c2583ea..541534217 100644 --- a/src/de/danoeh/antennapod/activity/DirectoryChooserActivity.java +++ b/src/de/danoeh/antennapod/activity/DirectoryChooserActivity.java @@ -1,7 +1,20 @@ package de.danoeh.antennapod.activity; +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; + import android.os.Bundle; +import android.os.Environment; +import android.util.Log; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.ArrayAdapter; import android.widget.Button; +import android.widget.ImageButton; import android.widget.ListView; import android.widget.TextView; @@ -9,6 +22,7 @@ import com.actionbarsherlock.app.SherlockActivity; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuInflater; +import de.danoeh.antennapod.AppConfig; import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; @@ -18,21 +32,114 @@ public class DirectoryChooserActivity extends SherlockActivity { private Button butConfirm; private Button butCancel; - private Button butNavUp; + private ImageButton butNavUp; private TextView txtvSelectedFolder; private ListView listDirectories; - + + private ArrayAdapter<String> listDirectoriesAdapter; + private ArrayList<String> filenames; + private File selectedDir; + private File[] filesInDir; + @Override protected void onCreate(Bundle savedInstanceState) { setTheme(PodcastApp.getThemeResourceId()); super.onCreate(savedInstanceState); - + setContentView(R.layout.directory_chooser); butConfirm = (Button) findViewById(R.id.butConfirm); butCancel = (Button) findViewById(R.id.butCancel); - butNavUp = (Button) findViewById(R.id.butNavUp); + butNavUp = (ImageButton) findViewById(R.id.butNavUp); txtvSelectedFolder = (TextView) findViewById(R.id.txtvSelectedFolder); listDirectories = (ListView) findViewById(R.id.directory_list); + + butConfirm.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + finish(); + } + }); + + butCancel.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + finish(); + } + }); + + listDirectories.setOnItemClickListener(new OnItemClickListener() { + + @Override + public void onItemClick(AdapterView<?> adapter, View view, + int position, long id) { + if (AppConfig.DEBUG) + Log.d(TAG, "Selected index: " + position); + if (filesInDir != null && position >= 0 + && position < filesInDir.length) { + changeDirectory(filesInDir[position]); + } + } + }); + + butNavUp.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + File parent = null; + if (selectedDir != null + && (parent = selectedDir.getParentFile()) != null) { + changeDirectory(parent); + } + } + }); + + filenames = new ArrayList<String>(); + listDirectoriesAdapter = new ArrayAdapter<String>(this, + android.R.layout.simple_list_item_1, filenames); + listDirectories.setAdapter(listDirectoriesAdapter); + changeDirectory(Environment.getExternalStorageDirectory()); + } + + private void changeDirectory(File dir) { + if (dir != null && dir.isDirectory()) { + File[] contents = dir.listFiles(); + if (contents != null) { + int numDirectories = 0; + for (File f : contents) { + if (f.isDirectory()) { + numDirectories++; + } + } + filesInDir = new File[numDirectories]; + filenames.clear(); + for (int i = 0, counter = 0; i < numDirectories; counter++) { + if (contents[counter].isDirectory()) { + filesInDir[i] = contents[counter]; + filenames.add(contents[counter].getName()); + i++; + } + } + Arrays.sort(filesInDir); + Collections.sort(filenames); + selectedDir = dir; + txtvSelectedFolder.setText(dir.getAbsolutePath()); + listDirectoriesAdapter.notifyDataSetChanged(); + if (AppConfig.DEBUG) + Log.d(TAG, "Changed directory to " + dir.getAbsolutePath()); + } else { + if (AppConfig.DEBUG) Log.d(TAG, "Could not change folder: contents of dir were null"); + } + } else { + if (dir == null) { + if (AppConfig.DEBUG) + Log.d(TAG, "Could not change folder: dir was null"); + } else { + if (AppConfig.DEBUG) + Log.d(TAG, "Could not change folder: dir is no directory"); + } + } } @Override @@ -41,7 +148,4 @@ public class DirectoryChooserActivity extends SherlockActivity { inflater.inflate(R.menu.directory_chooser, menu); return true; } - - - } diff --git a/src/de/danoeh/antennapod/activity/PreferenceActivity.java b/src/de/danoeh/antennapod/activity/PreferenceActivity.java index 78006c0d0..f4afa319a 100644 --- a/src/de/danoeh/antennapod/activity/PreferenceActivity.java +++ b/src/de/danoeh/antennapod/activity/PreferenceActivity.java @@ -27,6 +27,7 @@ public class PreferenceActivity extends SherlockPreferenceActivity { private static final String PREF_FLATTR_REVOKE = "prefRevokeAccess"; private static final String PREF_OPML_EXPORT = "prefOpmlExport"; private static final String PREF_ABOUT = "prefAbout"; + private static final String PREF_CHOOSE_DATA_DIR = "prefChooseDataDir"; @SuppressWarnings("deprecation") @Override @@ -84,6 +85,15 @@ public class PreferenceActivity extends SherlockPreferenceActivity { return true; } }); + + findPreference(PREF_CHOOSE_DATA_DIR).setOnPreferenceClickListener(new OnPreferenceClickListener() { + + @Override + public boolean onPreferenceClick(Preference preference) { + startActivity(new Intent(PreferenceActivity.this, DirectoryChooserActivity.class)); + return true; + } + }); findPreference(PodcastApp.PREF_THEME).setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override |