From ace3cb81222ad47280689ce0b435ec071d4c6f54 Mon Sep 17 00:00:00 2001 From: Sunny Shao Date: Sat, 27 Mar 2021 15:43:33 +0800 Subject: [PATCH] Fix the "Add link" permanent disabled problem - Update setEnabled of the "Add link" while UI change. Fixes: 183797700 Test: manual test Change-Id: Ia6dad313ab752ccbe7313f6a4cdf759b02dff728 --- .../intentpicker/AppLaunchSettings.java | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java b/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java index 7d6abe7ca0f..a2771697373 100644 --- a/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java +++ b/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java @@ -86,6 +86,7 @@ public class AppLaunchSettings extends AppInfoBase implements private ClearDefaultsPreference mClearDefaultsPreference; private MainSwitchPreference mMainSwitchPreference; + private Preference mAddLinkPreference; private PreferenceCategory mMainPreferenceCategory; private PreferenceCategory mSelectedLinksPreferenceCategory; private PreferenceCategory mOtherDefaultsPreferenceCategory; @@ -155,6 +156,7 @@ public class AppLaunchSettings extends AppInfoBase implements } setDomainVerificationUserSelection(userState.getIdentifier(), domainSet, /* enabled= */ false); + mAddLinkPreference.setEnabled(isAddLinksNotEmpty()); } return true; } @@ -209,8 +211,8 @@ public class AppLaunchSettings extends AppInfoBase implements initMainSwitchAndCategories(); if (canUpdateMainSwitchAndCategories()) { initVerifiedLinksPreference(); - addSelectedLinksPreference(); initAddLinkPreference(); + addSelectedLinksPreference(); initFooter(); } } @@ -293,7 +295,7 @@ public class AppLaunchSettings extends AppInfoBase implements } /** Add selected links items */ - public void addSelectedLinksPreference() { + void addSelectedLinksPreference() { if (getLinksNumber(DOMAIN_STATE_SELECTED) == 0) { return; } @@ -303,22 +305,25 @@ public class AppLaunchSettings extends AppInfoBase implements for (String host : selectedLinks) { generateCheckBoxPreference(mSelectedLinksPreferenceCategory, host); } + mAddLinkPreference.setEnabled(isAddLinksNotEmpty()); } /** Initialize add link preference */ private void initAddLinkPreference() { - final Preference addLinkPreference = findPreference(ADD_LINK_PREF_KEY); - if (addLinkPreference != null) { - addLinkPreference.setEnabled(getLinksNumber(DOMAIN_STATE_NONE) > 0); - addLinkPreference.setOnPreferenceClickListener(preference -> { - final int stateNoneLinksNo = getLinksNumber(DOMAIN_STATE_NONE); - IntentPickerUtils.logd("The number of the state none links: " + stateNoneLinksNo); - if (stateNoneLinksNo > 0) { - showProgressDialogFragment(); - } - return true; - }); - } + mAddLinkPreference = findPreference(ADD_LINK_PREF_KEY); + mAddLinkPreference.setEnabled(isAddLinksNotEmpty()); + mAddLinkPreference.setOnPreferenceClickListener(preference -> { + final int stateNoneLinksNo = getLinksNumber(DOMAIN_STATE_NONE); + IntentPickerUtils.logd("The number of the state none links: " + stateNoneLinksNo); + if (stateNoneLinksNo > 0) { + showProgressDialogFragment(); + } + return true; + }); + } + + private boolean isAddLinksNotEmpty() { + return getLinksNumber(DOMAIN_STATE_NONE) > 0; } private void showProgressDialogFragment() {