summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2012-12-23 11:29:09 +0100
committerdaniel oeh <daniel.oeh@gmail.com>2012-12-23 11:29:09 +0100
commit5d3f10575f56307eb194ac3872d75d64c65a8391 (patch)
tree47bd473dc51b98b45e396c0325889e927828d7d1 /src/de/danoeh/antennapod
parenta0127ad755d41bc5a8a39d99ccd6e4918fabc653 (diff)
downloadAntennaPod-5d3f10575f56307eb194ac3872d75d64c65a8391.zip
Added FileObserver
Diffstat (limited to 'src/de/danoeh/antennapod')
-rw-r--r--src/de/danoeh/antennapod/activity/DirectoryChooserActivity.java72
1 files changed, 71 insertions, 1 deletions
diff --git a/src/de/danoeh/antennapod/activity/DirectoryChooserActivity.java b/src/de/danoeh/antennapod/activity/DirectoryChooserActivity.java
index 541534217..236d20b51 100644
--- a/src/de/danoeh/antennapod/activity/DirectoryChooserActivity.java
+++ b/src/de/danoeh/antennapod/activity/DirectoryChooserActivity.java
@@ -7,6 +7,7 @@ import java.util.Collections;
import android.os.Bundle;
import android.os.Environment;
+import android.os.FileObserver;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
@@ -16,11 +17,13 @@ import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ListView;
+import android.widget.SlidingDrawer;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
+import com.actionbarsherlock.view.MenuItem;
import de.danoeh.antennapod.AppConfig;
import de.danoeh.antennapod.PodcastApp;
@@ -41,10 +44,13 @@ public class DirectoryChooserActivity extends SherlockActivity {
private File selectedDir;
private File[] filesInDir;
+ private FileObserver fileObserver;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(PodcastApp.getThemeResourceId());
super.onCreate(savedInstanceState);
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
setContentView(R.layout.directory_chooser);
butConfirm = (Button) findViewById(R.id.butConfirm);
@@ -102,6 +108,22 @@ public class DirectoryChooserActivity extends SherlockActivity {
changeDirectory(Environment.getExternalStorageDirectory());
}
+ @Override
+ protected void onPause() {
+ super.onPause();
+ if (fileObserver != null) {
+ fileObserver.stopWatching();
+ }
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ if (fileObserver != null) {
+ fileObserver.startWatching();
+ }
+ }
+
private void changeDirectory(File dir) {
if (dir != null && dir.isDirectory()) {
File[] contents = dir.listFiles();
@@ -126,10 +148,14 @@ public class DirectoryChooserActivity extends SherlockActivity {
selectedDir = dir;
txtvSelectedFolder.setText(dir.getAbsolutePath());
listDirectoriesAdapter.notifyDataSetChanged();
+ fileObserver = createFileObserver(dir.getAbsolutePath());
+ fileObserver.startWatching();
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");
+ if (AppConfig.DEBUG)
+ Log.d(TAG,
+ "Could not change folder: contents of dir were null");
}
} else {
if (dir == null) {
@@ -142,10 +168,54 @@ public class DirectoryChooserActivity extends SherlockActivity {
}
}
+ private void refreshDirectory() {
+ if (selectedDir != null) {
+ changeDirectory(selectedDir);
+ }
+ }
+
+ private FileObserver createFileObserver(String path) {
+ return new FileObserver(path, FileObserver.CREATE | FileObserver.DELETE
+ | FileObserver.MOVED_FROM | FileObserver.MOVED_TO) {
+
+ @Override
+ public void onEvent(int event, String path) {
+ if (AppConfig.DEBUG)
+ Log.d(TAG, "FileObserver received event " + event);
+ runOnUiThread(new Runnable() {
+
+ @Override
+ public void run() {
+ refreshDirectory();
+ }
+ });
+ }
+ };
+ }
+
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = new MenuInflater(this);
inflater.inflate(R.menu.directory_chooser, menu);
return true;
}
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ finish();
+ return true;
+ case R.id.new_folder_item:
+ openNewFolderDialog();
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ private void openNewFolderDialog() {
+
+ }
+
}