From cd5b54d973e0aed88117ef46ede9b9e696e4d4f7 Mon Sep 17 00:00:00 2001 From: Arpit Shukla Date: Mon, 7 Sep 2020 18:17:54 +0530 Subject: [PATCH 1/4] Fix issue #1061 --- .../com/amaze/filemanager/ui/views/drawer/Drawer.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/src/main/java/com/amaze/filemanager/ui/views/drawer/Drawer.java b/app/src/main/java/com/amaze/filemanager/ui/views/drawer/Drawer.java index 33ae923492..42d970085c 100644 --- a/app/src/main/java/com/amaze/filemanager/ui/views/drawer/Drawer.java +++ b/app/src/main/java/com/amaze/filemanager/ui/views/drawer/Drawer.java @@ -234,6 +234,15 @@ public void onDrawerOpened(View drawerView) { mainActivity.getSupportActionBar().setHomeButtonEnabled(true); mDrawerToggle.syncState(); } + + mDrawerLayout.addDrawerListener( + new DrawerLayout.SimpleDrawerListener() { + @Override + public void onDrawerStateChanged(int newState) { + if (isOnTablet) lock(DrawerLayout.LOCK_MODE_LOCKED_OPEN); + unlockIfNotOnTablet(); + } + }); } private void setNavViewDimension(CustomNavigationView navView) { From 8774b3f88a9b6ebf87fa781039a7385e2e41f137 Mon Sep 17 00:00:00 2001 From: Arpit Shukla Date: Mon, 7 Sep 2020 18:38:27 +0530 Subject: [PATCH 2/4] Adjust spacing --- .../main/java/com/amaze/filemanager/ui/views/drawer/Drawer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/amaze/filemanager/ui/views/drawer/Drawer.java b/app/src/main/java/com/amaze/filemanager/ui/views/drawer/Drawer.java index 42d970085c..77358c1d25 100644 --- a/app/src/main/java/com/amaze/filemanager/ui/views/drawer/Drawer.java +++ b/app/src/main/java/com/amaze/filemanager/ui/views/drawer/Drawer.java @@ -234,7 +234,7 @@ public void onDrawerOpened(View drawerView) { mainActivity.getSupportActionBar().setHomeButtonEnabled(true); mDrawerToggle.syncState(); } - + mDrawerLayout.addDrawerListener( new DrawerLayout.SimpleDrawerListener() { @Override From 3e8ad90ba456de1661dcfbfa610856aa59744507 Mon Sep 17 00:00:00 2001 From: Arpit Shukla Date: Mon, 7 Sep 2020 22:32:31 +0530 Subject: [PATCH 3/4] Update Date Format --- app/src/main/java/com/amaze/filemanager/utils/Utils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/amaze/filemanager/utils/Utils.java b/app/src/main/java/com/amaze/filemanager/utils/Utils.java index f83a0df6b7..00a93163f8 100644 --- a/app/src/main/java/com/amaze/filemanager/utils/Utils.java +++ b/app/src/main/java/com/amaze/filemanager/utils/Utils.java @@ -108,7 +108,7 @@ public static void setTint(Context context, CheckBox box, int color) { public static String getDate(@NonNull Context c, long f) { return String.format( DATE_TIME_FORMAT, - DateUtils.formatDateTime(c, f, DateUtils.FORMAT_SHOW_DATE), + DateUtils.formatDateTime(c, f, DateUtils.FORMAT_ABBREV_MONTH), DateUtils.formatDateTime(c, f, DateUtils.FORMAT_SHOW_TIME)); } From ecb579652401b67517efdb30678c2855e73554fd Mon Sep 17 00:00:00 2001 From: VishalNehra Date: Sun, 13 Sep 2020 04:39:27 +0530 Subject: [PATCH 4/4] 1982: Preserve drawer item selection; fix setting drawer lock mode --- .../ui/activities/MainActivity.java | 18 ++--- .../ui/fragments/MainFragment.java | 1 - .../filemanager/ui/views/drawer/Drawer.java | 72 +++++++++++-------- 3 files changed, 47 insertions(+), 44 deletions(-) diff --git a/app/src/main/java/com/amaze/filemanager/ui/activities/MainActivity.java b/app/src/main/java/com/amaze/filemanager/ui/activities/MainActivity.java index c4771eb5ad..431113af50 100644 --- a/app/src/main/java/com/amaze/filemanager/ui/activities/MainActivity.java +++ b/app/src/main/java/com/amaze/filemanager/ui/activities/MainActivity.java @@ -322,10 +322,6 @@ public void onCreate(final Bundle savedInstanceState) { checkForExternalIntent(intent); - if (savedInstanceState != null) { - drawer.setSomethingSelected(savedInstanceState.getBoolean(KEY_DRAWER_SELECTED)); - } - // setting window background color instead of each item, in order to reduce pixel overdraw if (getAppTheme().equals(AppTheme.LIGHT)) { /*if(Main.IS_LIST) @@ -398,7 +394,6 @@ public void onPostExecute(Void result) { transaction.replace( R.id.content_frame, new ProcessViewerFragment(), KEY_INTENT_PROCESS_VIEWER); // transaction.addToBackStack(null); - drawer.setSomethingSelected(true); openProcesses = false; // title.setText(utils.getString(con, R.string.process_viewer)); // Commit the transaction @@ -416,7 +411,6 @@ public void onPostExecute(Void result) { .setInterpolator(new DecelerateInterpolator(2)) .start(); - drawer.setSomethingSelected(true); drawer.deselectEverything(); transaction2.commit(); } else { @@ -439,6 +433,8 @@ public void onPostExecute(Void result) { oparrayList = savedInstanceState.getParcelableArrayList(KEY_OPERATIONS_PATH_LIST); operation = savedInstanceState.getInt(KEY_OPERATION); // mainFragment = (Main) savedInstanceState.getParcelable("main_fragment"); + int selectedStorage = savedInstanceState.getInt(KEY_DRAWER_SELECTED, 0); + getDrawer().selectCorrectDrawerItem(selectedStorage); } } }); @@ -896,7 +892,6 @@ public void goToMain(String path) { } transaction.replace(R.id.content_frame, tabFragment); // Commit the transaction - drawer.setSomethingSelected(true); transaction.addToBackStack("tabt" + 1); transaction.commitAllowingStateLoss(); appbar.setTitle(null); @@ -1197,7 +1192,7 @@ public void onConfigurationChanged(Configuration newConfig) { @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); - outState.putBoolean(KEY_DRAWER_SELECTED, drawer.isSomethingSelected()); + outState.putInt(KEY_DRAWER_SELECTED, getDrawer().getDrawerSelectedItem()); if (pasteHelper != null) { outState.putParcelable(PASTEHELPER_BUNDLE, pasteHelper); } @@ -1234,7 +1229,7 @@ public void onResume() { } drawer.refreshDrawer(); - drawer.deselectEverything(); + drawer.refactorDrawerLockMode(); IntentFilter newFilter = new IntentFilter(); newFilter.addAction(Intent.ACTION_MEDIA_MOUNTED); @@ -1578,12 +1573,12 @@ void initialiseViews() { FrameLayout.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) findViewById(R.id.drawer_layout).getLayoutParams(); SystemBarTintManager.SystemBarConfig config = tintManager.getConfig(); - if (!drawer.isLocked()) p.setMargins(0, config.getStatusBarHeight(), 0, 0); + if (!drawer.isOnTablet()) p.setMargins(0, config.getStatusBarHeight(), 0, 0); } else if (SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); // window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); - if (drawer.isLocked()) { + if (drawer.isOnTablet()) { window.setStatusBarColor((skinStatusBar)); } else window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); if (getBoolean(PREFERENCE_COLORED_NAVIGATION)) window.setNavigationBarColor(skinStatusBar); @@ -1723,7 +1718,6 @@ public void onNewIntent(Intent i) { transaction.replace( R.id.content_frame, new ProcessViewerFragment(), KEY_INTENT_PROCESS_VIEWER); // transaction.addToBackStack(null); - drawer.setSomethingSelected(true); openProcesses = false; // title.setText(utils.getString(con, R.string.process_viewer)); // Commit the transaction diff --git a/app/src/main/java/com/amaze/filemanager/ui/fragments/MainFragment.java b/app/src/main/java/com/amaze/filemanager/ui/fragments/MainFragment.java index 18b5aac627..935ab37d5c 100644 --- a/app/src/main/java/com/amaze/filemanager/ui/fragments/MainFragment.java +++ b/app/src/main/java/com/amaze/filemanager/ui/fragments/MainFragment.java @@ -1468,7 +1468,6 @@ public void onResume() { (getActivity()) .registerReceiver(receiver2, new IntentFilter(MainActivity.KEY_INTENT_LOAD_LIST)); - getMainActivity().getDrawer().selectCorrectDrawerItemForPath(getPath()); resumeDecryptOperations(); startFileObserver(); } diff --git a/app/src/main/java/com/amaze/filemanager/ui/views/drawer/Drawer.java b/app/src/main/java/com/amaze/filemanager/ui/views/drawer/Drawer.java index 77358c1d25..96dad62035 100644 --- a/app/src/main/java/com/amaze/filemanager/ui/views/drawer/Drawer.java +++ b/app/src/main/java/com/amaze/filemanager/ui/views/drawer/Drawer.java @@ -109,7 +109,6 @@ public class Drawer implements NavigationView.OnNavigationItemSelectedListener { private DataUtils dataUtils; private ActionViewStateManager actionViewStateManager; - private boolean isSomethingSelected; private volatile int phoneStorageCount = 0; // number of storage available (internal/external/otg etc) private boolean isDrawerLocked = false; @@ -200,18 +199,11 @@ public Drawer(MainActivity mainActivity) { // drawerHeaderParent.setBackgroundColor(Color.parseColor((currentTab==1 ? skinTwo : skin))); if (mainActivity.findViewById(R.id.tab_frame) != null) { isOnTablet = true; - lock(DrawerLayout.LOCK_MODE_LOCKED_OPEN); - open(); mDrawerLayout.setScrimColor(Color.TRANSPARENT); - mDrawerLayout.post(this::open); - } else if (mainActivity.findViewById(R.id.tab_frame) == null) { - unlockIfNotOnTablet(); - close(); - mDrawerLayout.post(this::close); } navView.addHeaderView(drawerHeaderLayout); - if (!isDrawerLocked) { + if (!isOnTablet) { mDrawerToggle = new ActionBarDrawerToggle( mainActivity, /* host Activity */ @@ -234,15 +226,6 @@ public void onDrawerOpened(View drawerView) { mainActivity.getSupportActionBar().setHomeButtonEnabled(true); mDrawerToggle.syncState(); } - - mDrawerLayout.addDrawerListener( - new DrawerLayout.SimpleDrawerListener() { - @Override - public void onDrawerStateChanged(int newState) { - if (isOnTablet) lock(DrawerLayout.LOCK_MODE_LOCKED_OPEN); - unlockIfNotOnTablet(); - } - }); } private void setNavViewDimension(CustomNavigationView navView) { @@ -255,6 +238,19 @@ private void setNavViewDimension(CustomNavigationView navView) { desiredWidthInPx, LinearLayout.LayoutParams.MATCH_PARENT, Gravity.START)); } + /** Refactors lock mode based on orientation */ + public void refactorDrawerLockMode() { + if (mainActivity.findViewById(R.id.tab_frame) != null) { + isOnTablet = true; + mDrawerLayout.setScrimColor(Color.TRANSPARENT); + open(); + lock(DrawerLayout.LOCK_MODE_LOCKED_OPEN); + } else { + unlockIfNotOnTablet(); + close(); + } + } + public void refreshDrawer() { Menu menu = navView.getMenu(); menu.clear(); @@ -555,7 +551,6 @@ public void refreshDrawer() { if (item != null) { item.setChecked(true); actionViewStateManager.selectActionView(item); - isSomethingSelected = true; } } @@ -639,6 +634,10 @@ public boolean isLocked() { return isDrawerLocked; } + public boolean isOnTablet() { + return isOnTablet; + } + public boolean isOpen() { return mDrawerLayout.isDrawerOpen(navView); } @@ -682,7 +681,6 @@ public void onDrawerClosed() { public boolean onNavigationItemSelected(@NonNull MenuItem item) { actionViewStateManager.deselectCurrentActionView(); actionViewStateManager.selectActionView(item); - isSomethingSelected = true; String title = item.getTitle().toString(); MenuMetadata meta = dataUtils.getDrawerMetadata(item); @@ -773,14 +771,6 @@ public void onNavigationItemActionClick(MenuItem item) { } } - public boolean isSomethingSelected() { - return isSomethingSelected; - } - - public void setSomethingSelected(boolean isSelected) { - isSomethingSelected = isSelected; - } - public int getPhoneStorageCount() { return phoneStorageCount; } @@ -816,12 +806,34 @@ public void selectCorrectDrawerItemForPath(final String path) { if (id == null) deselectEverything(); else { + selectCorrectDrawerItem(id); + } + } + + /** + * Select given item id in navigation drawer + * + * @param id given item id from menu + */ + public void selectCorrectDrawerItem(int id) { + if (id < 0) { + deselectEverything(); + } else { MenuItem item = navView.getMenu().findItem(id); navView.setCheckedItem(item); actionViewStateManager.selectActionView(item); } } + /** + * Get selected item id + * + * @return item id from menu + */ + public int getDrawerSelectedItem() { + return navView.getSelected().getItemId(); + } + public void setBackgroundColor(@ColorInt int color) { mDrawerLayout.setStatusBarBackgroundColor(color); drawerHeaderParent.setBackgroundColor(color); @@ -855,7 +867,7 @@ public void setDrawerIndicatorEnabled() { public void deselectEverything() { actionViewStateManager .deselectCurrentActionView(); // If you set the item as checked the listener doesn't trigger - if (!isSomethingSelected) { + if (navView.getSelected() == null) { return; } @@ -864,8 +876,6 @@ public void deselectEverything() { for (int i = 0; i < navView.getMenu().size(); i++) { navView.getMenu().getItem(i).setChecked(false); } - - isSomethingSelected = false; } /**