diff options
Diffstat (limited to 'src/com/cyanogenmod/filemanager/ui')
-rw-r--r-- | src/com/cyanogenmod/filemanager/ui/fragments/NavigationFragment.java | 21 | ||||
-rwxr-xr-x | src/com/cyanogenmod/filemanager/ui/widgets/NavigationView.java | 44 |
2 files changed, 49 insertions, 16 deletions
diff --git a/src/com/cyanogenmod/filemanager/ui/fragments/NavigationFragment.java b/src/com/cyanogenmod/filemanager/ui/fragments/NavigationFragment.java index 5e2d364e..fbd063db 100644 --- a/src/com/cyanogenmod/filemanager/ui/fragments/NavigationFragment.java +++ b/src/com/cyanogenmod/filemanager/ui/fragments/NavigationFragment.java @@ -116,6 +116,7 @@ import com.cyanogenmod.filemanager.ui.widgets.Breadcrumb; import com.cyanogenmod.filemanager.ui.widgets.ButtonItem; import com.cyanogenmod.filemanager.ui.widgets.NavigationCustomTitleView; import com.cyanogenmod.filemanager.ui.widgets.NavigationView; +import com.cyanogenmod.filemanager.ui.widgets.NavigationView.OnBackRequestListener; import com.cyanogenmod.filemanager.ui.widgets.NavigationView.OnNavigationRequestMenuListener; import com.cyanogenmod.filemanager.ui.widgets.NavigationView.OnNavigationSelectionChangedListener; import com.cyanogenmod.filemanager.ui.widgets.SelectionView; @@ -227,6 +228,7 @@ public class NavigationFragment extends Fragment private View mTitleLayout; private View mStatusBar; + private OnBackRequestListener mOnBackRequestListener; private final BroadcastReceiver mNotificationReceiver = new BroadcastReceiver() { @Override @@ -1480,6 +1482,7 @@ public class NavigationFragment extends Fragment //- 0 this.mNavigationViews[0] = (NavigationView) mView.findViewById(R.id.navigation_view); this.mNavigationViews[0].setId(0); + this.mNavigationViews[0].setOnBackRequestListener(mOnBackRequestListener); } /** @@ -2129,14 +2132,6 @@ public class NavigationFragment extends Fragment this.mHistory.remove(i); } - if (mDrawerHistory.getChildCount() == 0) { - mDrawerHistoryEmpty.setVisibility(View.VISIBLE); - } - - //Navigate - final boolean clearHistory = - mHistoryTab.isSelected() && mHistorySaved.size() > 0; - mClearHistory.setVisibility(clearHistory ? View.VISIBLE : View.GONE); return true; } catch (Throwable ex) { @@ -2197,7 +2192,6 @@ public class NavigationFragment extends Fragment } //Nothing to apply - mClearHistory.setVisibility(View.GONE); return false; } @@ -2648,4 +2642,13 @@ public class NavigationFragment extends Fragment return mDescription; } } + + /* + * Method that sets the listener for back requests + * + * @param onBackRequestListener The listener reference + */ + public void setOnBackRequestListener(OnBackRequestListener onBackRequestListener) { + mOnBackRequestListener = onBackRequestListener; + } } diff --git a/src/com/cyanogenmod/filemanager/ui/widgets/NavigationView.java b/src/com/cyanogenmod/filemanager/ui/widgets/NavigationView.java index 95141ac0..a33f03ca 100755 --- a/src/com/cyanogenmod/filemanager/ui/widgets/NavigationView.java +++ b/src/com/cyanogenmod/filemanager/ui/widgets/NavigationView.java @@ -141,6 +141,17 @@ BreadcrumbListener, OnSelectionChangedListener, OnSelectionListener, OnRequestRe } /** + * An interface to communicate a request to go back to previous view + */ + public interface OnBackRequestListener { + /** + * Method invoked when a back (previous view) is requested + * + */ + void onBackRequested(); + } + + /** * The navigation view mode * @hide */ @@ -315,11 +326,6 @@ BreadcrumbListener, OnSelectionChangedListener, OnSelectionListener, OnRequestRe } if (ex instanceof CancelledOperationException || ex instanceof AuthenticationFailedException) { - if (TextUtils.isEmpty(mCurrentDir)) { - // If currentDir isn't set, load default - // This is local storage or root depending on mode - mCurrentDir = FileHelper.ROOT_DIRECTORY; - } return null; } @@ -394,8 +400,20 @@ BreadcrumbListener, OnSelectionChangedListener, OnSelectionListener, OnRequestRe // Do animation fadeEfect(false); } else { - // Reload current directory - changeCurrentDir(mCurrentDir); + if (TextUtils.isEmpty(mCurrentDir)) { + if (mOnBackRequestListener != null) { + // Go back to previous view + post(new Runnable() { + @Override + public void run() { + mOnBackRequestListener.onBackRequested(); + } + }); + } + } else { + // Reload current directory + changeCurrentDir(mCurrentDir); + } } } @@ -436,6 +454,7 @@ BreadcrumbListener, OnSelectionChangedListener, OnSelectionListener, OnRequestRe private OnNavigationRequestMenuListener mOnNavigationRequestMenuListener; private OnFilePickedListener mOnFilePickedListener; private OnDirectoryChangedListener mOnDirectoryChangedListener; + private OnBackRequestListener mOnBackRequestListener; private boolean mChRooted; @@ -734,6 +753,17 @@ BreadcrumbListener, OnSelectionChangedListener, OnSelectionListener, OnRequestRe } /** + * Method that sets the listener for back requests + * + * @param onBackRequestListener The listener reference + */ + public void setOnBackRequestListener( + OnBackRequestListener onBackRequestListener) { + this.mOnBackRequestListener = onBackRequestListener; + } + + + /** * Method that sets if the view should use flinger gesture detection. * * @param useFlinger If the view should use flinger gesture detection |