diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2012-12-23 11:29:09 +0100 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2012-12-23 11:29:09 +0100 |
commit | 5d3f10575f56307eb194ac3872d75d64c65a8391 (patch) | |
tree | 47bd473dc51b98b45e396c0325889e927828d7d1 /src/de | |
parent | a0127ad755d41bc5a8a39d99ccd6e4918fabc653 (diff) | |
download | AntennaPod-5d3f10575f56307eb194ac3872d75d64c65a8391.zip |
Added FileObserver
Diffstat (limited to 'src/de')
-rw-r--r-- | src/de/danoeh/antennapod/activity/DirectoryChooserActivity.java | 72 |
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() { + + } + } |