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

Commit 4e3060c8 authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Use checkboxes on notification settings pages

Test: make RunSettingsRoboTests
Bug: 63927402
Change-Id: Id751b807eae8a7a9165b0d020f10dd42f51382d1
parent 9ce68a20
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import com.android.settings.applications.LayoutPreference;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settings.widget.MasterCheckBoxPreference;
import com.android.settings.widget.MasterSwitchPreference;
import com.android.settings.widget.SwitchBar;
import com.android.settings.wrapper.NotificationChannelGroupWrapper;
@@ -277,9 +278,9 @@ abstract public class NotificationSettingsBase extends DashboardFragment {

    protected Preference populateSingleChannelPrefs(PreferenceGroup parent,
            final NotificationChannel channel, final boolean groupBlocked) {
        MasterSwitchPreference channelPref = new MasterSwitchPreference(
        MasterCheckBoxPreference channelPref = new MasterCheckBoxPreference(
                getPrefContext());
        channelPref.setSwitchEnabled(mSuspendedAppsAdmin == null
        channelPref.setCheckBoxEnabled(mSuspendedAppsAdmin == null
                && isChannelBlockable(channel)
                && isChannelConfigurable(channel)
                && !groupBlocked);
+9 −3
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ public class MasterCheckBoxPreference extends TwoTargetPreference {

    private CheckBox mCheckBox;
    private boolean mChecked;
    private boolean mEnableCheckBox = true;

    public MasterCheckBoxPreference(Context context, AttributeSet attrs,
            int defStyleAttr, int defStyleRes) {
@@ -88,9 +89,7 @@ public class MasterCheckBoxPreference extends TwoTargetPreference {
    @Override
    public void setEnabled(boolean enabled) {
        super.setEnabled(enabled);
        if (mCheckBox != null) {
            mCheckBox.setEnabled(enabled);
        }
        setCheckBoxEnabled(enabled);
    }

    public boolean isChecked() {
@@ -104,6 +103,13 @@ public class MasterCheckBoxPreference extends TwoTargetPreference {
        }
    }

    public void setCheckBoxEnabled(boolean enabled) {
        mEnableCheckBox = enabled;
        if (mCheckBox != null) {
            mCheckBox.setEnabled(enabled);
        }
    }

    public CheckBox getCheckBox() {
        return mCheckBox;
    }
+17 −0
Original line number Diff line number Diff line
@@ -88,6 +88,23 @@ public class MasterCheckBoxPreferenceTest {
        assertThat(checkBox.isEnabled()).isFalse();
    }

    @Test
    public void setCheckboxEnabled_shouldOnlyUpdateCheckBoxEnabledState() {
        final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
                LayoutInflater.from(mContext).inflate(
                        R.layout.preference_widget_master_checkbox, null));
        final CheckBox checkBox = (CheckBox) holder.findViewById(R.id.checkboxWidget);
        mPreference.onBindViewHolder(holder);

        mPreference.setCheckBoxEnabled(false);
        assertThat(mPreference.isEnabled()).isTrue();
        assertThat(checkBox.isEnabled()).isFalse();

        mPreference.setCheckBoxEnabled(true);
        assertThat(mPreference.isEnabled()).isTrue();
        assertThat(checkBox.isEnabled()).isTrue();
    }

    @Test
    public void clickWidgetView_shouldToggleCheckBox() {
        final LayoutInflater inflater = LayoutInflater.from(mContext);