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

Commit 9734698f authored by Chaohui Wang's avatar Chaohui Wang Committed by Automerger Merge Worker
Browse files

Fix Flicker for ZenCustomRuleSettingsBase am: bab79989

parents e2dd5d9f bab79989
Loading
Loading
Loading
Loading
+4 −11
Original line number Diff line number Diff line
@@ -19,9 +19,6 @@ package com.android.settings.notification.zen;
import android.app.AutomaticZenRule;
import android.content.Context;
import android.os.Bundle;
import android.util.Slog;

import androidx.preference.Preference;

import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -37,23 +34,19 @@ abstract class AbstractZenCustomRulePreferenceController extends
        super(context, key, lifecycle);
    }

    @Override
    public void updateState(Preference preference) {
        if (mId != null) {
            mRule = mBackend.getAutomaticZenRule(mId);
        }
    }

    @Override
    public boolean isAvailable() {
        return mRule != null;
    }

    public void onResume(AutomaticZenRule rule, String id) {
    public void setIdAndRule(String id, AutomaticZenRule rule) {
        mId = id;
        mRule = rule;
    }

    public void onResume() {
    }

    Bundle createBundle() {
        Bundle bundle = new Bundle();
        bundle.putString(ZenCustomRuleSettings.RULE_ID, mId);
+31 −12
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ abstract class ZenCustomRuleSettingsBase extends ZenModeSettingsBase {
    String mId;
    AutomaticZenRule mRule;
    List<AbstractPreferenceController> mControllers = new ArrayList<>();
    private boolean mIsFirstLaunch = true;

    /**
     * @return null if no preference category exists
@@ -49,21 +50,40 @@ abstract class ZenCustomRuleSettingsBase extends ZenModeSettingsBase {
        Bundle bundle = getArguments();
        if (bundle != null && bundle.containsKey(RULE_ID)) {
            mId = bundle.getString(RULE_ID);
            mRule = mBackend.getAutomaticZenRule(mId);
            updateRule();
        } else {
            Log.d(TAG, "Rule id required to set custom dnd rule config settings");
            this.finish();
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        updatePreferences();
    }

    @Override
    public void onZenModeConfigChanged() {
        super.onZenModeConfigChanged();
        updatePreferences();
        updatePreferenceStates();
    }

    public void updatePreferences() {
    private void updateRule() {
        mRule = mBackend.getAutomaticZenRule(mId);
        for (AbstractPreferenceController controller : mControllers) {
            AbstractZenCustomRulePreferenceController zenRuleController =
                    (AbstractZenCustomRulePreferenceController) controller;
            zenRuleController.setIdAndRule(mId, mRule);
        }
    }

    public void updatePreferences() {
        if (!mIsFirstLaunch) {
            updateRule();
        }

        final PreferenceScreen screen = getPreferenceScreen();
        String categoryKey = getPreferenceCategoryKey();
        if (categoryKey != null) {
@@ -78,21 +98,20 @@ abstract class ZenCustomRuleSettingsBase extends ZenModeSettingsBase {
        for (AbstractPreferenceController controller : mControllers) {
            AbstractZenCustomRulePreferenceController zenRuleController =
                    (AbstractZenCustomRulePreferenceController) controller;
            zenRuleController.onResume(mRule, mId);
            zenRuleController.onResume();
            if (!mIsFirstLaunch) {
                // In first launch, displayPreference() is already called in DashboardFragment's
                // onCreate().
                zenRuleController.displayPreference(screen);
            updatePreference(zenRuleController);
            }
        }

    @Override
    public int getHelpResource() {
        return R.string.help_uri_interruptions;
        mIsFirstLaunch = false;
    }

    @Override
    public void onResume() {
        super.onResume();
        updatePreferences();
    public int getHelpResource() {
        return R.string.help_uri_interruptions;
    }

    Bundle createZenRuleBundle() {
+2 −3
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.settings.notification.zen;

import static com.android.settings.notification.zen.ZenPrioritySendersHelper.UNKNOWN;

import android.app.AutomaticZenRule;
import android.content.Context;
import android.os.AsyncTask;
import android.service.notification.ZenPolicy;
@@ -79,8 +78,8 @@ public class ZenRulePrioritySendersPreferenceController
    }

    @Override
    public void onResume(AutomaticZenRule rule, String id) {
        super.onResume(rule, id);
    public void onResume() {
        super.onResume();
        if (mIsMessages) {
            updateChannelCounts();
        }
+1 −3
Original line number Diff line number Diff line
@@ -20,8 +20,6 @@ import android.app.AutomaticZenRule;
import android.app.NotificationManager;
import android.service.notification.ZenPolicy;

import com.android.settings.notification.zen.AbstractZenCustomRulePreferenceController;

import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;

@@ -37,6 +35,6 @@ abstract class ZenRuleCustomPrefContrTestBase {

    void updateControllerZenPolicy(ZenPolicy policy) {
        mRule.setZenPolicy(policy);
        getController().onResume(mRule, RULE_ID);
        getController().setIdAndRule(RULE_ID, mRule);
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -78,7 +78,7 @@ public class ZenRulePreferenceControllerTest {
        assertTrue(mController.mRule == null);
        assertTrue(mController.mId == null);

        mController.onResume(rule, id);
        mController.setIdAndRule(id, rule);

        assertEquals(mController.mId, id);
        assertEquals(mController.mRule, rule);
Loading