From 0581a14d6752bb7ceb4341e9b472d1211c8c9a04 Mon Sep 17 00:00:00 2001 From: VishalNehra Date: Sat, 11 Jul 2020 04:18:07 +0530 Subject: [PATCH 1/2] 1919: Fix loading tabs after giving storage permissions --- .../filemanager/activities/MainActivity.java | 15 +-- .../filemanager/fragments/TabFragment.java | 93 ++++++++++--------- .../com/amaze/filemanager/utils/Utils.java | 4 + 3 files changed, 56 insertions(+), 56 deletions(-) diff --git a/app/src/main/java/com/amaze/filemanager/activities/MainActivity.java b/app/src/main/java/com/amaze/filemanager/activities/MainActivity.java index 89092d1ae0..bc615e1976 100644 --- a/app/src/main/java/com/amaze/filemanager/activities/MainActivity.java +++ b/app/src/main/java/com/amaze/filemanager/activities/MainActivity.java @@ -53,7 +53,6 @@ import com.amaze.filemanager.database.UtilsHandler; import com.amaze.filemanager.database.models.OperationData; import com.amaze.filemanager.database.models.explorer.CloudEntry; -import com.amaze.filemanager.database.models.explorer.Tab; import com.amaze.filemanager.exceptions.CloudPluginException; import com.amaze.filemanager.filesystem.FileUtil; import com.amaze.filemanager.filesystem.HybridFile; @@ -458,20 +457,8 @@ private void checkForExternalPermission() { if (b) { TabHandler tabHandler = TabHandler.getInstance(); tabHandler.clear(); - - if (drawer.getPhoneStorageCount() > 1) { - tabHandler.addTab(new Tab(1, drawer.getSecondPath(), "/")); - } else { - tabHandler.addTab(new Tab(1, "/", "/")); - } - - if (drawer.getFirstPath() != null) { - String pa = drawer.getFirstPath(); - tabHandler.addTab(new Tab(2, pa, pa)); - } else { - tabHandler.addTab(new Tab(2, drawer.getSecondPath(), "/")); - } if (tabFragment != null) { + tabFragment.refactorDrawerStorages(false); Fragment main = tabFragment.getFragmentAtIndex(0); if (main != null) ((MainFragment) main).updateTabWithDb(tabHandler.findTab(1)); Fragment main1 = tabFragment.getFragmentAtIndex(1); diff --git a/app/src/main/java/com/amaze/filemanager/fragments/TabFragment.java b/app/src/main/java/com/amaze/filemanager/fragments/TabFragment.java index 11451f454a..1309e35480 100644 --- a/app/src/main/java/com/amaze/filemanager/fragments/TabFragment.java +++ b/app/src/main/java/com/amaze/filemanager/fragments/TabFragment.java @@ -35,6 +35,7 @@ import com.amaze.filemanager.utils.MainActivityHelper; import com.amaze.filemanager.utils.OpenMode; import com.amaze.filemanager.utils.PreferenceUtils; +import com.amaze.filemanager.utils.Utils; import android.animation.ArgbEvaluator; import android.content.SharedPreferences; @@ -124,47 +125,7 @@ public View onCreateView( PreferencesConstants.PREFERENCE_CURRENT_TAB, PreferenceUtils.DEFAULT_CURRENT_TAB); MainActivity.currentTab = lastOpenTab; - Tab tab1 = tabHandler.findTab(1); - Tab tab2 = tabHandler.findTab(2); - Tab[] tabs = tabHandler.getAllTabs(); - - if (tabs == null - || tabs.length < 1 - || tab1 == null - || tab2 == null) { // creating tabs in db for the first time, probably the first launch of - // app, or something got corrupted - if (mainActivity.getDrawer().getFirstPath() != null) { - addNewTab(1, mainActivity.getDrawer().getFirstPath()); - } else { - if (mainActivity.getDrawer().getSecondPath() != null) { - addNewTab(1, mainActivity.getDrawer().getSecondPath()); - } else { - sharedPrefs.edit().putBoolean(PreferencesConstants.PREFERENCE_ROOTMODE, true).apply(); - addNewTab(1, "/"); - } - } - - if (mainActivity.getDrawer().getSecondPath() != null) { - addNewTab(2, mainActivity.getDrawer().getSecondPath()); - } else { - addNewTab(2, mainActivity.getDrawer().getFirstPath()); - } - } else { - if (path != null && path.length() != 0) { - if (lastOpenTab == 0) { - addTab(tab1, path); - addTab(tab2, ""); - } - - if (lastOpenTab == 1) { - addTab(tab1, ""); - addTab(tab2, path); - } - } else { - addTab(tab1, ""); - addTab(tab2, ""); - } - } + refactorDrawerStorages(true); mViewPager.setAdapter(mSectionsPagerAdapter); @@ -378,7 +339,55 @@ private void addNewTab(int num, String path) { addTab(new Tab(num, path, path), ""); } - public void addTab(@NonNull Tab tab, String path) { + /** + * Fetches new storage paths from drawer and apply to tabs This method will just create tabs in UI + * change paths in database. Calls should implement updating each tab's list for new paths. + * + * @param addTab whether new tabs should be added to ui or just change values in database + */ + public void refactorDrawerStorages(boolean addTab) { + Tab tab1 = tabHandler.findTab(1); + Tab tab2 = tabHandler.findTab(2); + Tab[] tabs = tabHandler.getAllTabs(); + String firstTabPath = mainActivity.getDrawer().getFirstPath(); + String secondTabPath = mainActivity.getDrawer().getSecondPath(); + + if (tabs == null + || tabs.length < 1 + || tab1 == null + || tab2 == null) { // creating tabs in db for the first time, probably the first launch of + // app, or something got corrupted + String currentFirstTab = Utils.isNullOrEmpty(firstTabPath) ? "/" : firstTabPath; + String currentSecondTab = Utils.isNullOrEmpty(secondTabPath) ? firstTabPath : secondTabPath; + if (addTab) { + addNewTab(1, currentSecondTab); + addNewTab(2, currentFirstTab); + } + tabHandler.addTab(new Tab(1, currentSecondTab, currentSecondTab)); + tabHandler.addTab(new Tab(2, currentFirstTab, currentFirstTab)); + + if (currentFirstTab.equalsIgnoreCase("/")) { + sharedPrefs.edit().putBoolean(PreferencesConstants.PREFERENCE_ROOTMODE, true).apply(); + } + } else { + if (path != null && path.length() != 0) { + if (MainActivity.currentTab == 0) { + addTab(tab1, path); + addTab(tab2, ""); + } + + if (MainActivity.currentTab == 1) { + addTab(tab1, ""); + addTab(tab2, path); + } + } else { + addTab(tab1, ""); + addTab(tab2, ""); + } + } + } + + private void addTab(@NonNull Tab tab, String path) { Fragment main = new MainFragment(); Bundle b = new Bundle(); 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 efc3d4d493..31d3e795e7 100644 --- a/app/src/main/java/com/amaze/filemanager/utils/Utils.java +++ b/app/src/main/java/com/amaze/filemanager/utils/Utils.java @@ -284,4 +284,8 @@ public static File getVolumeDirectory(StorageVolume volume) { public static boolean isNullOrEmpty(final Collection list) { return list == null || list.size() == 0; } + + public static boolean isNullOrEmpty(final String string) { + return string == null || string.length() == 0; + } } From e5930ffe2617efa5cbc8771d6dbe842be99a0072 Mon Sep 17 00:00:00 2001 From: VishalNehra Date: Wed, 15 Jul 2020 17:48:20 +0530 Subject: [PATCH 2/2] 1932: Add themed snackbar --- .../filemanager/filesystem/PasteHelper.java | 38 +++++++++---------- .../com/amaze/filemanager/utils/Utils.java | 21 ++++++++++ 2 files changed, 39 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/amaze/filemanager/filesystem/PasteHelper.java b/app/src/main/java/com/amaze/filemanager/filesystem/PasteHelper.java index 595ecf1c9b..754b3aa84d 100644 --- a/app/src/main/java/com/amaze/filemanager/filesystem/PasteHelper.java +++ b/app/src/main/java/com/amaze/filemanager/filesystem/PasteHelper.java @@ -130,26 +130,24 @@ private void dismissSnackbar(boolean shouldClearPasteData) { private void showSnackbar() { snackbar = - Snackbar.make( - mainActivity.findViewById(R.id.content_frame), - getSnackbarContent(), - BaseTransientBottomBar.LENGTH_INDEFINITE) - .setAction( - R.string.paste, - v -> { - String path = mainActivity.getCurrentMainFragment().getCurrentPath(); - ArrayList arrayList = new ArrayList<>(Arrays.asList(paths)); - boolean move = operation == PasteHelper.OPERATION_CUT; - new PrepareCopyTask( - mainActivity.getCurrentMainFragment(), - path, - move, - mainActivity, - mainActivity.isRootExplorer()) - .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, arrayList); - dismissSnackbar(true); - }); - snackbar.show(); + Utils.showThemedSnackbar( + mainActivity, + getSnackbarContent(), + BaseTransientBottomBar.LENGTH_INDEFINITE, + R.string.paste, + () -> { + String path = mainActivity.getCurrentMainFragment().getCurrentPath(); + ArrayList arrayList = new ArrayList<>(Arrays.asList(paths)); + boolean move = operation == PasteHelper.OPERATION_CUT; + new PrepareCopyTask( + mainActivity.getCurrentMainFragment(), + path, + move, + mainActivity, + mainActivity.isRootExplorer()) + .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, arrayList); + dismissSnackbar(true); + }); Utils.invalidateFab(mainActivity, () -> dismissSnackbar(true), true); } 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 a22a077c0b..02becc753b 100644 --- a/app/src/main/java/com/amaze/filemanager/utils/Utils.java +++ b/app/src/main/java/com/amaze/filemanager/utils/Utils.java @@ -28,6 +28,8 @@ import com.amaze.filemanager.R; import com.amaze.filemanager.activities.MainActivity; import com.amaze.filemanager.filesystem.HybridFileParcelable; +import com.amaze.filemanager.utils.theme.AppTheme; +import com.google.android.material.snackbar.Snackbar; import com.leinardi.android.speeddial.SpeedDialView; import com.leinardi.android.speeddial.UiUtils; @@ -333,4 +335,23 @@ public void onToggleChanged(boolean isOpen) { mainActivity.getFAB().setOnChangeListener(null); } } + + public static Snackbar showThemedSnackbar( + MainActivity mainActivity, + CharSequence text, + int length, + int actionTextId, + Runnable actionCallback) { + Snackbar snackbar = + Snackbar.make(mainActivity.findViewById(R.id.content_frame), text, length) + .setAction(actionTextId, v -> actionCallback.run()); + if (mainActivity.getAppTheme().equals(AppTheme.LIGHT)) { + snackbar + .getView() + .setBackgroundColor(mainActivity.getResources().getColor(android.R.color.white)); + snackbar.setTextColor(mainActivity.getResources().getColor(android.R.color.black)); + } + snackbar.show(); + return snackbar; + } }