Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec95ed26 authored by Stanley Wang's avatar Stanley Wang
Browse files

Fix the problem that the ToggleSubscriptionDialogActivity

appears twice when switch changed.

- Don't trigger the switch change event if the state of Switch and
  SwitchSettingsMainSwitchPreference are the same.

Fix: 190767461
Test: robotest and operate the switch preference manually

Change-Id: I6ab4b7e5ca1455948ca9118bb4a674fdc4fdbd50
parent 416a24d8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ public class AutoBrightnessDetailPreferenceController extends
        SettingsMainSwitchPreference pref = (SettingsMainSwitchPreference) screen.findPreference(
                getPreferenceKey());
        pref.addOnSwitchChangeListener(this);
        pref.updateStatus(isChecked());
        pref.setChecked(isChecked());
    }

    @Override
+11 −13
Original line number Diff line number Diff line
@@ -86,9 +86,12 @@ public class SettingsMainSwitchPreference extends TwoStatePreference implements
            mEnforcedAdmin = mRestrictedHelper.checkRestrictionEnforced();
        }
        mMainSwitchBar = (SettingsMainSwitchBar) holder.findViewById(R.id.main_switch_bar);
        initMainSwitchBar();
        if (mIsVisible) {
            mMainSwitchBar.show();
            updateStatus(isChecked());
            if (mMainSwitchBar.isChecked() != isChecked()) {
                setChecked(isChecked());
            }
            registerListenerToSwitchBar();
        } else {
            mMainSwitchBar.hide();
@@ -144,18 +147,6 @@ public class SettingsMainSwitchPreference extends TwoStatePreference implements
        super.setChecked(isChecked);
    }

    /**
     * Update the switch status of preference
     */
    public void updateStatus(boolean checked) {
        setChecked(checked);
        if (mMainSwitchBar != null) {
            mMainSwitchBar.setTitle(mTitle);
            mMainSwitchBar.setDisabledByAdmin(mEnforcedAdmin);
            mMainSwitchBar.show();
        }
    }

    /**
     * Show the MainSwitchBar
     */
@@ -251,6 +242,13 @@ public class SettingsMainSwitchPreference extends TwoStatePreference implements
        }
    }

    private void initMainSwitchBar() {
        if (mMainSwitchBar != null) {
            mMainSwitchBar.setTitle(mTitle);
            mMainSwitchBar.setDisabledByAdmin(mEnforcedAdmin);
        }
    }

    private void registerListenerToSwitchBar() {
        for (OnBeforeCheckedChangeListener listener : mBeforeCheckedChangeListeners) {
            mMainSwitchBar.setOnBeforeCheckedChangeListener(listener);
+2 −2
Original line number Diff line number Diff line
@@ -59,8 +59,8 @@ public class SettingsMainSwitchPreferenceTest {
    }

    @Test
    public void updateStatus_isRestricted_restrictIconShouldDisplay() {
        mPreference.updateStatus(true);
    public void onBindViewHolder_isRestricted_restrictIconShouldDisplay() {
        mPreference.onBindViewHolder(mHolder);

        final SettingsMainSwitchBar switchBar = mPreference.getSwitchBar();
        final ImageView restrictedIcon = switchBar.findViewById(