diff options
| author | Stephen Bird <sbird@cyngn.com> | 2015-08-13 19:24:21 -0700 |
|---|---|---|
| committer | Stephen Bird <sbird@cyngn.com> | 2015-08-14 12:32:57 -0700 |
| commit | 080405b548865e6b118b56ca29ed6a6f0d10bcc5 (patch) | |
| tree | 31fca1dcb8f142b28c94156191583ff8178f37cb | |
| parent | e1fac533425ffe54ad58a22215bd4fbbc48612e8 (diff) | |
| download | android_packages_apps_CMFileManager-080405b548865e6b118b56ca29ed6a6f0d10bcc5.tar.gz android_packages_apps_CMFileManager-080405b548865e6b118b56ca29ed6a6f0d10bcc5.tar.bz2 android_packages_apps_CMFileManager-080405b548865e6b118b56ca29ed6a6f0d10bcc5.zip | |
Refresh: stop refreshes in action
If a refresh happens while another refresh is occuring, make sure
that that old refresh is cancelled. In addition to this, remove some
old logic that conflicted with itself. Also, keep ahold of the previous directory
before running the task.
Ticket: QRDL-1002
Change-Id: Ibc1f3d468243bc124d3baf259af21464f3c03c84
| -rw-r--r-- | src/com/cyanogenmod/filemanager/ui/widgets/NavigationView.java | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/src/com/cyanogenmod/filemanager/ui/widgets/NavigationView.java b/src/com/cyanogenmod/filemanager/ui/widgets/NavigationView.java index ec841409..4a58ceec 100644 --- a/src/com/cyanogenmod/filemanager/ui/widgets/NavigationView.java +++ b/src/com/cyanogenmod/filemanager/ui/widgets/NavigationView.java @@ -246,11 +246,6 @@ BreadcrumbListener, OnSelectionChangedListener, OnSelectionListener, OnRequestRe mNewDirChecked = checkChRootedNavigation(params[0]); //Check that it is really necessary change the directory - if (!mReload && NavigationView.this.mCurrentDir != null && - NavigationView.this.mCurrentDir.compareTo(mNewDirChecked) == 0) { - return null; - } - mHasChanged = !(NavigationView.this.mCurrentDir != null && NavigationView.this.mCurrentDir.compareTo(mNewDirChecked) == 0); mIsNewHistory = (NavigationView.this.mCurrentDir != null); @@ -385,13 +380,11 @@ BreadcrumbListener, OnSelectionChangedListener, OnSelectionListener, OnRequestRe @Override protected void onPostExecute(List<FileSystemObject> files) { // This means an exception. This method will be recalled then - if (files != null) { - onPostExecuteTask(files, mAddToHistory, mIsNewHistory, mHasChanged, + onPostExecuteTask(files, mAddToHistory, mIsNewHistory, mHasChanged, mSearchInfo, mNewDirChecked, mScrollTo); - // Do animation - fadeEfect(false); - } + // Do animation + fadeEfect(false); } /** @@ -418,6 +411,7 @@ BreadcrumbListener, OnSelectionChangedListener, OnSelectionListener, OnRequestRe private int mId; private String mCurrentDir; + private String mPreviousDir; private NavigationLayoutMode mCurrentMode; /** * @hide @@ -512,7 +506,7 @@ BreadcrumbListener, OnSelectionChangedListener, OnSelectionListener, OnRequestRe //Return the persistent the data NavigationViewInfoParcelable parcel = new NavigationViewInfoParcelable(); parcel.setId(this.mId); - parcel.setCurrentDir(this.mCurrentDir); + parcel.setCurrentDir(this.mPreviousDir); parcel.setChRooted(this.mChRooted); parcel.setSelectedFiles(this.mAdapter.getSelectedItems()); parcel.setFiles(this.mFiles); @@ -816,10 +810,15 @@ BreadcrumbListener, OnSelectionChangedListener, OnSelectionListener, OnRequestRe */ public void refresh(FileSystemObject scrollTo) { //Check that current directory was set - if (this.mCurrentDir == null || this.mFiles == null || this.mNavigationTask != null) { + if (this.mCurrentDir == null || this.mFiles == null) { return; } + if (this.mNavigationTask != null) { + this.mNavigationTask.cancel(true); + this.mNavigationTask = null; + } + //Reload data changeCurrentDir(this.mCurrentDir, false, true, false, null, scrollTo); } @@ -1026,9 +1025,11 @@ BreadcrumbListener, OnSelectionChangedListener, OnSelectionListener, OnRequestRe final String newDir, final boolean addToHistory, final boolean reload, final boolean useCurrent, final SearchInfoParcelable searchInfo, final FileSystemObject scrollTo) { + this.mPreviousDir = this.mCurrentDir; + this.mCurrentDir = newDir; mNavigationTask = new NavigationTask(useCurrent, addToHistory, reload, searchInfo, scrollTo, mRestrictions, mChRooted); - mNavigationTask.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, newDir); + mNavigationTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, newDir); } /** @@ -1072,6 +1073,7 @@ BreadcrumbListener, OnSelectionChangedListener, OnSelectionListener, OnRequestRe try { //Check that there is not errors and have some data if (files == null) { + this.mCurrentDir = this.mPreviousDir; return; } @@ -1106,19 +1108,20 @@ BreadcrumbListener, OnSelectionChangedListener, OnSelectionListener, OnRequestRe scrollTo(scrollTo); //The current directory is now the "newDir" - this.mCurrentDir = newDir; if (this.mOnDirectoryChangedListener != null) { FileSystemObject dir = FileHelper.createFileSystemObject(new File(newDir)); this.mOnDirectoryChangedListener.onDirectoryChanged(dir); } - mNavigationTask = null; } finally { //If calling activity is search, then save the search history if (searchInfo != null) { this.mOnHistoryListener.onNewHistory(searchInfo); } + this.mPreviousDir = null; + mNavigationTask = null; + //End of loading data try { NavigationView.this.mBreadcrumb.endLoading(); |
