From 41e6fec258e582eb6e12120ddc06e84848cbb397 Mon Sep 17 00:00:00 2001 From: S4NKALP Date: Thu, 3 Jul 2025 22:48:49 +0545 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(launcher,=20dialo?= =?UTF-8?q?gs):=20close=20global=20settings=20dialog=20before=20showing=20?= =?UTF-8?q?other=20dialogs=20and=20popups,=20improve=20dismiss=20behavior?= =?UTF-8?q?=20of=20global=20settings=20dialog?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sankalp/lunox/LauncherActivity.java | 26 +++++++++++++++++-- .../lunox/dialogs/GlobalSettingsDialog.java | 26 +++++++++++-------- .../main/res/drawable/popup_background.xml | 4 +-- 3 files changed, 41 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/io/github/sankalp/lunox/LauncherActivity.java b/app/src/main/java/io/github/sankalp/lunox/LauncherActivity.java index c9000b3..c0a9cb7 100644 --- a/app/src/main/java/io/github/sankalp/lunox/LauncherActivity.java +++ b/app/src/main/java/io/github/sankalp/lunox/LauncherActivity.java @@ -650,6 +650,8 @@ public class LauncherActivity extends Activity implements View.OnClickListener, dialogs = null; } + closeGlobalSettingsDialog(); + if (mSearchTask!=null) { mSearchTask.cancel(true); mSearchTask=null; @@ -664,13 +666,18 @@ public class LauncherActivity extends Activity implements View.OnClickListener, showPopup((String) view.getTag(), (AppTextView) view); } else if (view instanceof FlowLayout) { // show launcher setting for FlowLayout (this handles long press on FlowLayout itself) - dialogs = new GlobalSettingsDialog(this, this); - dialogs.show(); + if (globalSettingsDialog == null || !globalSettingsDialog.isShowing()) { + globalSettingsDialog = new GlobalSettingsDialog(this, this); + globalSettingsDialog.setOnDismissListener(d -> globalSettingsDialog = null); + globalSettingsDialog.show(); + } } return true; } private void showPopup(String activityName, AppTextView view) { + // Close global settings dialog if it's open when showing app settings + closeGlobalSettingsDialog(); // show app settings dialog instead of popup menu AppSettingsPopup popup = new AppSettingsPopup(this, activityName, view, this); popup.show(); @@ -926,6 +933,8 @@ public class LauncherActivity extends Activity implements View.OnClickListener, dialogs = null; } + closeGlobalSettingsDialog(); + if (mSearchTask!=null) { mSearchTask.cancel(true); mSearchTask=null; @@ -1339,6 +1348,9 @@ public class LauncherActivity extends Activity implements View.OnClickListener, } private void showDialog(Dialog dialog, boolean setWindow) { + // Close global settings dialog if it's open when showing other dialogs + closeGlobalSettingsDialog(); + if (setWindow) { Window window = dialog.getWindow(); if (window != null) { @@ -1351,4 +1363,14 @@ public class LauncherActivity extends Activity implements View.OnClickListener, this.dialogs = dialog; } + /** + * Close the global settings dialog if it's currently open + */ + public void closeGlobalSettingsDialog() { + if (globalSettingsDialog != null && globalSettingsDialog.isShowing()) { + globalSettingsDialog.dismiss(); + globalSettingsDialog = null; + } + } + } \ No newline at end of file diff --git a/app/src/main/java/io/github/sankalp/lunox/dialogs/GlobalSettingsDialog.java b/app/src/main/java/io/github/sankalp/lunox/dialogs/GlobalSettingsDialog.java index 895876b..97c4fc7 100644 --- a/app/src/main/java/io/github/sankalp/lunox/dialogs/GlobalSettingsDialog.java +++ b/app/src/main/java/io/github/sankalp/lunox/dialogs/GlobalSettingsDialog.java @@ -157,8 +157,8 @@ public class GlobalSettingsDialog extends Dialog implements View.OnClickListener } else if (id == R.id.settings_alignment) { setFlowLayoutAlignment(view); } else if (id == R.id.settings_padding) { + launcherActivity.closeGlobalSettingsDialog(); launcherActivity.setPadding(); - cancel(); } else if (id == R.id.settings_restart_launcher) { launcherActivity.recreate(); } else if (id == R.id.settings_double_tap_lock) { @@ -179,6 +179,7 @@ public class GlobalSettingsDialog extends Dialog implements View.OnClickListener popupMenu.getMenuInflater().inflate(R.menu.sort_apps_popups, popupMenu.getMenu()); popupMenu.setOnMenuItemClickListener(menuItem -> { + launcherActivity.closeGlobalSettingsDialog(); int id = menuItem.getItemId(); if (id == R.id.menu_sort_by_name) { launcherActivity.sortApps(Constants.SORT_BY_NAME); @@ -199,8 +200,8 @@ public class GlobalSettingsDialog extends Dialog implements View.OnClickListener } private void showColorAndSizeDialog() { + launcherActivity.closeGlobalSettingsDialog(); launcherActivity.setColorsAndSize(); - cancel(); } private void setFlowLayoutAlignment(View view) { @@ -214,6 +215,7 @@ public class GlobalSettingsDialog extends Dialog implements View.OnClickListener popupMenu.getMenuInflater().inflate(R.menu.alignment_popup, popupMenu.getMenu()); popupMenu.setOnMenuItemClickListener(menuItem -> { + launcherActivity.closeGlobalSettingsDialog(); int id = menuItem.getItemId(); if (id == R.id.menu_center) { launcherActivity.setFlowLayoutAlignment(Gravity.CENTER | Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL); @@ -230,7 +232,7 @@ public class GlobalSettingsDialog extends Dialog implements View.OnClickListener private void randomColor() { boolean rColor = !DbUtils.isRandomColor(); DbUtils.randomColor(rColor); - cancel(); + launcherActivity.closeGlobalSettingsDialog(); if (rColor) { int color; for (Apps app : launcherActivity.mAppsList) { @@ -246,7 +248,7 @@ public class GlobalSettingsDialog extends Dialog implements View.OnClickListener } private void showColorSnifferDialog() { - cancel(); + launcherActivity.closeGlobalSettingsDialog(); Intent intent = context.getPackageManager().getLaunchIntentForPackage("ryey.colorsniffer"); // if color snifer app is not installed then send user to install it @@ -273,22 +275,23 @@ public class GlobalSettingsDialog extends Dialog implements View.OnClickListener } private void frozenApps() { + launcherActivity.closeGlobalSettingsDialog(); launcherActivity.showFrozenApps(); - cancel(); } //show hidden apps private void hiddenApps() { + launcherActivity.closeGlobalSettingsDialog(); launcherActivity.showHiddenApps(); - cancel(); } private void showThemeDialog() { - cancel(); + launcherActivity.closeGlobalSettingsDialog(); new ThemeSelectorDialog(getContext(), launcherActivity).show(); } private void defaultSettings() { + launcherActivity.closeGlobalSettingsDialog(); DbUtils.clearDB(); launcherActivity.recreate(); } @@ -302,6 +305,7 @@ public class GlobalSettingsDialog extends Dialog implements View.OnClickListener updateDoubleTapLockButtonText(); } else { // If currently disabled, show the detailed dialog to explain and enable the feature + launcherActivity.closeGlobalSettingsDialog(); DoubleTapLockDialog doubleTapDialog = new DoubleTapLockDialog(context, launcherActivity); doubleTapDialog.show(); @@ -336,7 +340,7 @@ public class GlobalSettingsDialog extends Dialog implements View.OnClickListener } private void backup() { - cancel(); + launcherActivity.closeGlobalSettingsDialog(); Intent intentBackupFiles; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { intentBackupFiles = new Intent(Intent.ACTION_CREATE_DOCUMENT); @@ -359,7 +363,7 @@ public class GlobalSettingsDialog extends Dialog implements View.OnClickListener } private void restore() { - cancel(); + launcherActivity.closeGlobalSettingsDialog(); Intent intentRestoreFiles; intentRestoreFiles = new Intent(Intent.ACTION_GET_CONTENT); intentRestoreFiles.addCategory(Intent.CATEGORY_OPENABLE); @@ -369,7 +373,7 @@ public class GlobalSettingsDialog extends Dialog implements View.OnClickListener } private void setFonts() { - cancel(); + launcherActivity.closeGlobalSettingsDialog(); Intent intentSetFonts = new Intent(Intent.ACTION_GET_CONTENT); intentSetFonts.addCategory(Intent.CATEGORY_OPENABLE); @@ -397,10 +401,10 @@ public class GlobalSettingsDialog extends Dialog implements View.OnClickListener setFonts(); } else if (id == R.id.menu_default_font) { if (DbUtils.isFontExists()) { + launcherActivity.closeGlobalSettingsDialog(); DbUtils.removeFont(); launcherActivity.setFont(); launcherActivity.loadApps(); - cancel(); } } return true; diff --git a/app/src/main/res/drawable/popup_background.xml b/app/src/main/res/drawable/popup_background.xml index 58c3bea..6c35fad 100644 --- a/app/src/main/res/drawable/popup_background.xml +++ b/app/src/main/res/drawable/popup_background.xml @@ -6,9 +6,9 @@ - + android:color="#DEDEDE" /> -->