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

Commit 89458dcc authored by Julia Reynolds's avatar Julia Reynolds Committed by Android (Google) Code Review
Browse files

Merge "Use checkboxes on notification settings pages"

parents b48bb6f0 4e3060c8
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);