From: Andy Scherzinger Date: Fri, 11 Sep 2015 13:39:31 +0000 (+0200) Subject: close logic on back pressed for drawer/fab/up-navigation X-Git-Tag: beta-20151202~3^2~50 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/72aae5988f4ff2fb32104d73256a94a9da125ad7?ds=inline;hp=--cc close logic on back pressed for drawer/fab/up-navigation --- 72aae5988f4ff2fb32104d73256a94a9da125ad7 diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index c2eccda0..ff84efb3 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -791,7 +791,26 @@ public class FileDisplayActivity extends HookActivity @Override public void onBackPressed() { - if (!isDrawerOpen()){ + boolean isFabOpen = isFabOpen(); + boolean isDrawerOpen = isDrawerOpen(); + + /* + * BackPressed priority/hierarchy: + * 1. close drawer if opened + * 2. close FAB if open (only if drawer isn't open) + * 3. navigate up (only if drawer and FAB aren't open) + */ + if(isDrawerOpen && isFabOpen) { + // close drawer first + super.onBackPressed(); + } else if(isDrawerOpen && !isFabOpen) { + // close drawer + super.onBackPressed(); + } else if (!isDrawerOpen && isFabOpen) { + // close fab + getListOfFilesFragment().getFabMain().collapse(); + } else { + // all closed OCFileListFragment listOfFiles = getListOfFilesFragment(); if (mDualPane || getSecondFragment() == null) { OCFile currentDir = getCurrentDir(); @@ -807,8 +826,6 @@ public class FileDisplayActivity extends HookActivity setFile(listOfFiles.getCurrentFile()); } cleanSecondFragment(); - } else { - super.onBackPressed(); } } @@ -887,6 +904,14 @@ public class FileDisplayActivity extends HookActivity Log_OC.v(TAG, "onPause() end"); } + public boolean isFabOpen() { + if(getListOfFilesFragment() != null && getListOfFilesFragment().getFabMain() != null && getListOfFilesFragment().getFabMain().isExpanded()) { + return true; + } else { + return false; + } + } + private class SyncBroadcastReceiver extends BroadcastReceiver {