From 72117b22aaef4df1c6fe87d6d517b59233f227b1 Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Mon, 22 May 2023 17:45:22 +0800 Subject: Fix mobile data toggle status not correct When toggle off the switch and dismiss the confirmation dialog. This issue is caused by dialog's on dismiss listener not set, only confirm and cancel listener is set. Since confirm and cancel will also called dismiss listener, set a dismiss listener cannot fix this issue. So when need display confirmation dialog, change the toggle status back to on, and set to off when confirmed to fix this issue. Fix: 283259670 Test: Manually with InternetDialog Change-Id: Ic8f70518a22147f7f01936015d1ac6c341a30993 --- .../systemui/qs/tiles/dialog/InternetDialog.java | 28 +++++++++------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java index 380b85cb5504..212a2b732e0d 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java @@ -286,7 +286,6 @@ public class InternetDialog extends SystemUIDialog implements mHandler.removeCallbacks(mHideProgressBarRunnable); mHandler.removeCallbacks(mHideSearchingRunnable); mMobileNetworkLayout.setOnClickListener(null); - mMobileDataToggle.setOnCheckedChangeListener(null); mConnectedWifListLayout.setOnClickListener(null); if (mSecondaryMobileNetworkLayout != null) { mSecondaryMobileNetworkLayout.setOnClickListener(null); @@ -351,18 +350,16 @@ public class InternetDialog extends SystemUIDialog implements } mInternetDialogController.connectCarrierNetwork(); }); - mMobileDataToggle.setOnCheckedChangeListener( - (buttonView, isChecked) -> { - if (!isChecked && shouldShowMobileDialog()) { - showTurnOffMobileDialog(); - } else if (!shouldShowMobileDialog()) { - if (mInternetDialogController.isMobileDataEnabled() == isChecked) { - return; - } - mInternetDialogController.setMobileDataEnabled(mContext, mDefaultDataSubId, - isChecked, false); - } - }); + mMobileDataToggle.setOnClickListener(v -> { + boolean isChecked = mMobileDataToggle.isChecked(); + if (!isChecked && shouldShowMobileDialog()) { + mMobileDataToggle.setChecked(true); + showTurnOffMobileDialog(); + } else if (mInternetDialogController.isMobileDataEnabled() != isChecked) { + mInternetDialogController.setMobileDataEnabled(mContext, mDefaultDataSubId, + isChecked, false); + } + }); mConnectedWifListLayout.setOnClickListener(this::onClickConnectedWifi); mSeeAllLayout.setOnClickListener(this::onClickSeeMoreButton); mWiFiToggle.setOnCheckedChangeListener( @@ -696,9 +693,7 @@ public class InternetDialog extends SystemUIDialog implements mAlertDialog = new Builder(mContext) .setTitle(R.string.mobile_data_disable_title) .setMessage(mContext.getString(R.string.mobile_data_disable_message, carrierName)) - .setNegativeButton(android.R.string.cancel, (d, w) -> { - mMobileDataToggle.setChecked(true); - }) + .setNegativeButton(android.R.string.cancel, (d, w) -> {}) .setPositiveButton( com.android.internal.R.string.alert_windows_notification_turn_off_action, (d, w) -> { @@ -708,7 +703,6 @@ public class InternetDialog extends SystemUIDialog implements Prefs.putBoolean(mContext, QS_HAS_TURNED_OFF_MOBILE_DATA, true); }) .create(); - mAlertDialog.setOnCancelListener(dialog -> mMobileDataToggle.setChecked(true)); mAlertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); SystemUIDialog.setShowForAllUsers(mAlertDialog, true); SystemUIDialog.registerDismissListener(mAlertDialog); -- cgit v1.2.3-59-g8ed1b