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

Commit e49ae19b authored by Edgar Wang's avatar Edgar Wang Committed by Android (Google) Code Review
Browse files

Merge "Replace some customized RadioButtonPreferences"

parents bed8dee6 c0e7328a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -22,11 +22,11 @@

    <PreferenceCategory
        android:key="zen_custom_rule_category">
        <com.android.settings.notification.zen.ZenCustomRadioButtonPreference
        <com.android.settingslib.widget.RadioButtonPreference
            android:key="zen_custom_rule_setting_default"
            android:title="@string/zen_mode_custom_behavior_summary_default"/>

        <com.android.settings.notification.zen.ZenCustomRadioButtonPreference
        <com.android.settingslib.widget.RadioButtonPreference
            android:key="zen_custom_rule_setting"
            android:title="@string/zen_mode_custom_behavior_summary" />
    </PreferenceCategory>
+3 −3
Original line number Diff line number Diff line
@@ -23,19 +23,19 @@
    <PreferenceCategory
        android:key="restrict_category"
        android:title="@string/zen_mode_restrict_notifications_category">
        <com.android.settings.notification.zen.ZenCustomRadioButtonPreference
        <com.android.settingslib.widget.RadioButtonPreference
            android:key="zen_mute_notifications"
            android:title="@string/zen_mode_restrict_notifications_mute"
            android:summary="@string/zen_mode_restrict_notifications_mute_summary"
            settings:searchable="false"/>

        <com.android.settings.notification.zen.ZenCustomRadioButtonPreference
        <com.android.settingslib.widget.RadioButtonPreference
            android:key="zen_hide_notifications"
            android:title="@string/zen_mode_restrict_notifications_hide"
            android:summary="@string/zen_mode_restrict_notifications_hide_summary"
            settings:searchable="false"/>

        <com.android.settings.notification.zen.ZenCustomRadioButtonPreference
        <com.android.settingslib.widget.RadioButtonPreference
            android:key="zen_custom"
            android:title="@string/zen_mode_restrict_notifications_custom"
            settings:searchable="false"/>
+3 −3
Original line number Diff line number Diff line
@@ -37,13 +37,13 @@ import com.android.settings.search.actionbar.SearchMenuController;
import com.android.settings.support.actionbar.HelpMenuController;
import com.android.settings.support.actionbar.HelpResourceProvider;
import com.android.settings.widget.RadioButtonPickerFragment;
import com.android.settings.widget.RadioButtonPreferenceWithExtraWidget;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.search.SearchIndexableRaw;
import com.android.settingslib.widget.CandidateInfo;
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.RadioButtonPreference;

import com.google.common.annotations.VisibleForTesting;

@@ -152,8 +152,8 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements
        }

        for (CandidateInfo info : candidateList) {
            RadioButtonPreferenceWithExtraWidget pref =
                    new RadioButtonPreferenceWithExtraWidget(getPrefContext());
            RadioButtonPreference pref =
                    new RadioButtonPreference(getPrefContext());
            bindPreference(pref, info.getKey(), info, defaultKey);
            screen.addPreference(pref);
        }
+4 −13
Original line number Diff line number Diff line
@@ -21,9 +21,6 @@ import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON_OVE
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON_OVERLAY;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL_OVERLAY;

import static com.android.settings.widget.RadioButtonPreferenceWithExtraWidget.EXTRA_WIDGET_VISIBILITY_GONE;
import static com.android.settings.widget.RadioButtonPreferenceWithExtraWidget.EXTRA_WIDGET_VISIBILITY_SETTING;

import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
@@ -49,7 +46,6 @@ import com.android.settings.support.actionbar.HelpMenuController;
import com.android.settings.support.actionbar.HelpResourceProvider;
import com.android.settings.utils.CandidateInfoExtra;
import com.android.settings.widget.RadioButtonPickerFragment;
import com.android.settings.widget.RadioButtonPreferenceWithExtraWidget;
import com.android.settings.widget.VideoPreference;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.widget.CandidateInfo;
@@ -119,8 +115,8 @@ public class SystemNavigationGestureSettings extends RadioButtonPickerFragment i
            return;
        }
        for (CandidateInfo info : candidateList) {
            RadioButtonPreferenceWithExtraWidget pref =
                    new RadioButtonPreferenceWithExtraWidget(getPrefContext());
            RadioButtonPreference pref =
                    new RadioButtonPreference(getPrefContext());
            bindPreference(pref, info.getKey(), info, defaultKey);
            bindPreferenceExtra(pref, info.getKey(), info, defaultKey, systemDefaultKey);
            screen.addPreference(pref);
@@ -131,20 +127,15 @@ public class SystemNavigationGestureSettings extends RadioButtonPickerFragment i
    @Override
    public void bindPreferenceExtra(RadioButtonPreference pref,
            String key, CandidateInfo info, String defaultKey, String systemDefaultKey) {
        if (!(info instanceof CandidateInfoExtra)
                || !(pref instanceof RadioButtonPreferenceWithExtraWidget)) {
        if (!(info instanceof CandidateInfoExtra)) {
            return;
        }

        pref.setSummary(((CandidateInfoExtra) info).loadSummary());

        RadioButtonPreferenceWithExtraWidget p = (RadioButtonPreferenceWithExtraWidget) pref;
        if (info.getKey() == KEY_SYSTEM_NAV_GESTURAL) {
            p.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_SETTING);
            p.setExtraWidgetOnClickListener((v) -> startActivity(new Intent(
            pref.setExtraWidgetOnClickListener((v) -> startActivity(new Intent(
                    GestureNavigationSettingsFragment.GESTURE_NAVIGATION_SETTINGS)));
        } else {
            p.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_GONE);
        }
    }

+0 −144
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.notification.zen;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.RadioButton;

import androidx.preference.PreferenceViewHolder;

import com.android.settings.R;
import com.android.settingslib.TwoTargetPreference;

/**
 * A radio button preference with a divider and a settings icon that links to another screen.
 */
public class ZenCustomRadioButtonPreference extends TwoTargetPreference
        implements View.OnClickListener {

    private RadioButton mButton;
    private boolean mChecked;

    private OnGearClickListener mOnGearClickListener;
    private OnRadioButtonClickListener mOnRadioButtonClickListener;

    public ZenCustomRadioButtonPreference(Context context, AttributeSet attrs,
            int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        setLayoutResource(R.layout.preference_two_target_radio);
    }

    public ZenCustomRadioButtonPreference(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        setLayoutResource(R.layout.preference_two_target_radio);
    }

    public ZenCustomRadioButtonPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
        setLayoutResource(R.layout.preference_two_target_radio);
    }

    public ZenCustomRadioButtonPreference(Context context) {
        super(context);
        setLayoutResource(R.layout.preference_two_target_radio);
    }

    @Override
    protected int getSecondTargetResId() {
        return R.layout.preference_widget_gear;
    }

    public void setOnGearClickListener(OnGearClickListener l) {
        mOnGearClickListener = l;
        notifyChanged();
    }

    public void setOnRadioButtonClickListener(OnRadioButtonClickListener l) {
        mOnRadioButtonClickListener = l;
        notifyChanged();
    }

    @Override
    public void onBindViewHolder(PreferenceViewHolder holder) {
        super.onBindViewHolder(holder);
        View buttonFrame = holder.findViewById(R.id.checkbox_frame);
        if (buttonFrame != null) {
            buttonFrame.setOnClickListener(this);
        }
        mButton = (RadioButton) holder.findViewById(android.R.id.checkbox);
        if (mButton != null) {
            mButton.setChecked(mChecked);
        }

        final View gear = holder.findViewById(android.R.id.widget_frame);
        final View divider = holder.findViewById(R.id.two_target_divider);
        if (mOnGearClickListener != null) {
            divider.setVisibility(View.VISIBLE);
            gear.setVisibility(View.VISIBLE);
            gear.setOnClickListener(this);
        } else {
            divider.setVisibility(View.GONE);
            gear.setVisibility(View.GONE);
            gear.setOnClickListener(null);
        }
    }

    public boolean isChecked() {
        return mButton != null && mChecked;
    }

    public void setChecked(boolean checked) {
        mChecked = checked;
        if (mButton != null) {
            mButton.setChecked(checked);
        }
    }

    public RadioButton getRadioButton() {
        return mButton;
    }

    @Override
    public void onClick() {
        if (mOnRadioButtonClickListener != null) {
            mOnRadioButtonClickListener.onRadioButtonClick(this);
        }
    }

    @Override
    public void onClick(View v) {
        if (v.getId() == android.R.id.widget_frame) {
            if (mOnGearClickListener != null) {
                mOnGearClickListener.onGearClick(this);
            }
        } else if (v.getId() == R.id.checkbox_frame) {
            if (mOnRadioButtonClickListener != null) {
                mOnRadioButtonClickListener.onRadioButtonClick(this);
            }
        }
    }

    public interface OnGearClickListener {
        void onGearClick(ZenCustomRadioButtonPreference p);
    }

    public interface OnRadioButtonClickListener {
        void onRadioButtonClick(ZenCustomRadioButtonPreference p);
    }
}
Loading