diff --git a/app/build.gradle b/app/build.gradle index 78b3724b..41e07dd3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ android { applicationId "com.stardust.scriptdroid" minSdkVersion 17 targetSdkVersion 23 - versionCode 202 - versionName "3.0.0 Alpha3" + versionCode 203 + versionName "3.0.0 Alpha4" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true ndk { diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/ScriptListView.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/ScriptListView.java index f25bc7d0..884aca51 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/ScriptListView.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/ScriptListView.java @@ -25,6 +25,8 @@ import com.stardust.scriptdroid.ui.common.ScriptLoopDialog; import com.stardust.scriptdroid.ui.common.ScriptOperations; import com.stardust.widget.BindableViewHolder; +import org.greenrobot.eventbus.Subscribe; + import java.util.ArrayList; import butterknife.BindView; @@ -51,6 +53,7 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa private ScriptFile mCurrentDirectory; private OnScriptFileClickListener mOnScriptFileClickListener; private ScriptFile mSelectedScriptFile; + private StorageFileProvider mStorageFileProvider; public ScriptListView(Context context) { super(context); @@ -80,7 +83,9 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa mScriptListView = new RecyclerView(getContext()); addView(mScriptListView); initScriptListRecyclerView(); - setCurrentDirectory(StorageFileProvider.getDefault().getInitialDirectory()); + mStorageFileProvider = StorageFileProvider.getDefault(); + setCurrentDirectory(mStorageFileProvider.getInitialDirectory()); + mStorageFileProvider.registerDirectoryChangeListener(this); } private void initScriptListRecyclerView() { @@ -104,7 +109,7 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa private void loadScriptList() { mScriptFiles.clear(); mDirectories.clear(); - StorageFileProvider.getDefault().getDirectoryScriptFiles(mCurrentDirectory) + mStorageFileProvider.getDirectoryScriptFiles(mCurrentDirectory) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new SimpleObserver() { @@ -126,6 +131,13 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa }); } + @Subscribe + void onDirectoryChange(StorageFileProvider.DirectoryChangeEvent event) { + if (event.directory.equals(mCurrentDirectory)) { + loadScriptList(); + } + } + @Override public void onRefresh() { loadScriptList(); @@ -160,6 +172,12 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa return true; } + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + mStorageFileProvider.unregisterDirectoryChangeListener(this); + } + private class ScriptListAdapter extends RecyclerView.Adapter { private final int VIEW_TYPE_FILE = 0;