Replace some customized RadioButtonPreferences

- Deleted ZenCustomRadioButtonPreference
- Deleted RadioButtonPreferenceWithExtraWidget
- Replaced with RadioButtonPreference

Bug: 173472216
Test: robotest
Change-Id: I645b59d65ae14af1f384f16ee7b76b3c98e23e1f
This commit is contained in:
Edgar Wang
2020-11-17 12:59:54 +08:00
parent 379cd8a008
commit c0e7328a88
27 changed files with 123 additions and 627 deletions

View File

@@ -22,11 +22,11 @@
<PreferenceCategory <PreferenceCategory
android:key="zen_custom_rule_category"> 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:key="zen_custom_rule_setting_default"
android:title="@string/zen_mode_custom_behavior_summary_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:key="zen_custom_rule_setting"
android:title="@string/zen_mode_custom_behavior_summary" /> android:title="@string/zen_mode_custom_behavior_summary" />
</PreferenceCategory> </PreferenceCategory>

View File

@@ -23,19 +23,19 @@
<PreferenceCategory <PreferenceCategory
android:key="restrict_category" android:key="restrict_category"
android:title="@string/zen_mode_restrict_notifications_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:key="zen_mute_notifications"
android:title="@string/zen_mode_restrict_notifications_mute" android:title="@string/zen_mode_restrict_notifications_mute"
android:summary="@string/zen_mode_restrict_notifications_mute_summary" android:summary="@string/zen_mode_restrict_notifications_mute_summary"
settings:searchable="false"/> settings:searchable="false"/>
<com.android.settings.notification.zen.ZenCustomRadioButtonPreference <com.android.settingslib.widget.RadioButtonPreference
android:key="zen_hide_notifications" android:key="zen_hide_notifications"
android:title="@string/zen_mode_restrict_notifications_hide" android:title="@string/zen_mode_restrict_notifications_hide"
android:summary="@string/zen_mode_restrict_notifications_hide_summary" android:summary="@string/zen_mode_restrict_notifications_hide_summary"
settings:searchable="false"/> settings:searchable="false"/>
<com.android.settings.notification.zen.ZenCustomRadioButtonPreference <com.android.settingslib.widget.RadioButtonPreference
android:key="zen_custom" android:key="zen_custom"
android:title="@string/zen_mode_restrict_notifications_custom" android:title="@string/zen_mode_restrict_notifications_custom"
settings:searchable="false"/> settings:searchable="false"/>

View File

@@ -36,13 +36,13 @@ import com.android.settings.search.actionbar.SearchMenuController;
import com.android.settings.support.actionbar.HelpMenuController; import com.android.settings.support.actionbar.HelpMenuController;
import com.android.settings.support.actionbar.HelpResourceProvider; import com.android.settings.support.actionbar.HelpResourceProvider;
import com.android.settings.widget.RadioButtonPickerFragment; import com.android.settings.widget.RadioButtonPickerFragment;
import com.android.settings.widget.RadioButtonPreferenceWithExtraWidget;
import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtilsInternal; import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.search.SearchIndexable; import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.search.SearchIndexableRaw; import com.android.settingslib.search.SearchIndexableRaw;
import com.android.settingslib.widget.CandidateInfo; import com.android.settingslib.widget.CandidateInfo;
import com.android.settingslib.widget.FooterPreference; import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.RadioButtonPreference;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
@@ -126,8 +126,8 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements
} }
for (CandidateInfo info : candidateList) { for (CandidateInfo info : candidateList) {
RadioButtonPreferenceWithExtraWidget pref = RadioButtonPreference pref =
new RadioButtonPreferenceWithExtraWidget(getPrefContext()); new RadioButtonPreference(getPrefContext());
bindPreference(pref, info.getKey(), info, defaultKey); bindPreference(pref, info.getKey(), info, defaultKey);
screen.addPreference(pref); screen.addPreference(pref);
} }

View File

@@ -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_3BUTTON_OVERLAY;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL_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.app.settings.SettingsEnums;
import android.content.Context; import android.content.Context;
import android.content.Intent; 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.support.actionbar.HelpResourceProvider;
import com.android.settings.utils.CandidateInfoExtra; import com.android.settings.utils.CandidateInfoExtra;
import com.android.settings.widget.RadioButtonPickerFragment; import com.android.settings.widget.RadioButtonPickerFragment;
import com.android.settings.widget.RadioButtonPreferenceWithExtraWidget;
import com.android.settings.widget.VideoPreference; import com.android.settings.widget.VideoPreference;
import com.android.settingslib.search.SearchIndexable; import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.widget.CandidateInfo; import com.android.settingslib.widget.CandidateInfo;
@@ -119,8 +115,8 @@ public class SystemNavigationGestureSettings extends RadioButtonPickerFragment i
return; return;
} }
for (CandidateInfo info : candidateList) { for (CandidateInfo info : candidateList) {
RadioButtonPreferenceWithExtraWidget pref = RadioButtonPreference pref =
new RadioButtonPreferenceWithExtraWidget(getPrefContext()); new RadioButtonPreference(getPrefContext());
bindPreference(pref, info.getKey(), info, defaultKey); bindPreference(pref, info.getKey(), info, defaultKey);
bindPreferenceExtra(pref, info.getKey(), info, defaultKey, systemDefaultKey); bindPreferenceExtra(pref, info.getKey(), info, defaultKey, systemDefaultKey);
screen.addPreference(pref); screen.addPreference(pref);
@@ -131,20 +127,15 @@ public class SystemNavigationGestureSettings extends RadioButtonPickerFragment i
@Override @Override
public void bindPreferenceExtra(RadioButtonPreference pref, public void bindPreferenceExtra(RadioButtonPreference pref,
String key, CandidateInfo info, String defaultKey, String systemDefaultKey) { String key, CandidateInfo info, String defaultKey, String systemDefaultKey) {
if (!(info instanceof CandidateInfoExtra) if (!(info instanceof CandidateInfoExtra)) {
|| !(pref instanceof RadioButtonPreferenceWithExtraWidget)) {
return; return;
} }
pref.setSummary(((CandidateInfoExtra) info).loadSummary()); pref.setSummary(((CandidateInfoExtra) info).loadSummary());
RadioButtonPreferenceWithExtraWidget p = (RadioButtonPreferenceWithExtraWidget) pref;
if (info.getKey() == KEY_SYSTEM_NAV_GESTURAL) { if (info.getKey() == KEY_SYSTEM_NAV_GESTURAL) {
p.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_SETTING); pref.setExtraWidgetOnClickListener((v) -> startActivity(new Intent(
p.setExtraWidgetOnClickListener((v) -> startActivity(new Intent(
GestureNavigationSettingsFragment.GESTURE_NAVIGATION_SETTINGS))); GestureNavigationSettingsFragment.GESTURE_NAVIGATION_SETTINGS)));
} else {
p.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_GONE);
} }
} }

View File

@@ -1,144 +0,0 @@
/*
* 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);
}
}

View File

@@ -16,9 +16,6 @@
package com.android.settings.notification.zen; package com.android.settings.notification.zen;
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.NotificationManager; import android.app.NotificationManager;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.Context; import android.content.Context;
@@ -37,7 +34,6 @@ import com.android.settings.R;
import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.SubSettingLauncher;
import com.android.settings.notification.NotificationBackend; import com.android.settings.notification.NotificationBackend;
import com.android.settings.notification.app.ConversationListSettings; import com.android.settings.notification.app.ConversationListSettings;
import com.android.settings.widget.RadioButtonPreferenceWithExtraWidget;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference; import com.android.settingslib.widget.RadioButtonPreference;
@@ -186,13 +182,10 @@ public class ZenModePriorityConversationsPreferenceController
} }
private RadioButtonPreference makeRadioPreference(String key, int titleId) { private RadioButtonPreference makeRadioPreference(String key, int titleId) {
RadioButtonPreferenceWithExtraWidget pref = final RadioButtonPreference pref =
new RadioButtonPreferenceWithExtraWidget(mPreferenceCategory.getContext()); new RadioButtonPreference(mPreferenceCategory.getContext());
if (KEY_ALL.equals(key) || KEY_IMPORTANT.equals(key)) { if (KEY_ALL.equals(key) || KEY_IMPORTANT.equals(key)) {
pref.setExtraWidgetOnClickListener(mConversationSettingsWidgetClickListener); pref.setExtraWidgetOnClickListener(mConversationSettingsWidgetClickListener);
pref.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_SETTING);
} else {
pref.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_GONE);
} }
pref.setKey(key); pref.setKey(key);
pref.setTitle(titleId); pref.setTitle(titleId);

View File

@@ -19,9 +19,6 @@ package com.android.settings.notification.zen;
import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_CALLS; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_CALLS;
import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_MESSAGES; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_MESSAGES;
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.NotificationManager; import android.app.NotificationManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@@ -35,7 +32,6 @@ import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.widget.RadioButtonPreferenceWithExtraWidget;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference; import com.android.settingslib.widget.RadioButtonPreference;
@@ -67,7 +63,7 @@ public class ZenModePrioritySendersPreferenceController
private final boolean mIsMessages; // if this is false, then this preference is for calls private final boolean mIsMessages; // if this is false, then this preference is for calls
private PreferenceCategory mPreferenceCategory; private PreferenceCategory mPreferenceCategory;
private List<RadioButtonPreferenceWithExtraWidget> mRadioButtonPreferences = new ArrayList<>(); private List<RadioButtonPreference> mRadioButtonPreferences = new ArrayList<>();
public ZenModePrioritySendersPreferenceController(Context context, String key, public ZenModePrioritySendersPreferenceController(Context context, String key,
Lifecycle lifecycle, boolean isMessages) { Lifecycle lifecycle, boolean isMessages) {
@@ -114,7 +110,7 @@ public class ZenModePrioritySendersPreferenceController
public void updateState(Preference preference) { public void updateState(Preference preference) {
final int currSetting = getPrioritySenders(); final int currSetting = getPrioritySenders();
for (RadioButtonPreferenceWithExtraWidget pref : mRadioButtonPreferences) { for (RadioButtonPreference pref : mRadioButtonPreferences) {
pref.setChecked(keyToSetting(pref.getKey()) == currSetting); pref.setChecked(keyToSetting(pref.getKey()) == currSetting);
} }
} }
@@ -126,7 +122,7 @@ public class ZenModePrioritySendersPreferenceController
} }
private void updateSummaries() { private void updateSummaries() {
for (RadioButtonPreferenceWithExtraWidget pref : mRadioButtonPreferences) { for (RadioButtonPreference pref : mRadioButtonPreferences) {
pref.setSummary(getSummary(pref.getKey())); pref.setSummary(getSummary(pref.getKey()));
} }
} }
@@ -169,9 +165,9 @@ public class ZenModePrioritySendersPreferenceController
} }
} }
private RadioButtonPreferenceWithExtraWidget makeRadioPreference(String key, int titleId) { private RadioButtonPreference makeRadioPreference(String key, int titleId) {
RadioButtonPreferenceWithExtraWidget pref = final RadioButtonPreference pref =
new RadioButtonPreferenceWithExtraWidget(mPreferenceCategory.getContext()); new RadioButtonPreference(mPreferenceCategory.getContext());
pref.setKey(key); pref.setKey(key);
pref.setTitle(titleId); pref.setTitle(titleId);
pref.setOnClickListener(mRadioButtonClickListener); pref.setOnClickListener(mRadioButtonClickListener);
@@ -179,9 +175,6 @@ public class ZenModePrioritySendersPreferenceController
View.OnClickListener widgetClickListener = getWidgetClickListener(key); View.OnClickListener widgetClickListener = getWidgetClickListener(key);
if (widgetClickListener != null) { if (widgetClickListener != null) {
pref.setExtraWidgetOnClickListener(widgetClickListener); pref.setExtraWidgetOnClickListener(widgetClickListener);
pref.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_SETTING);
} else {
pref.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_GONE);
} }
mPreferenceCategory.addPreference(pref); mPreferenceCategory.addPreference(pref);

View File

@@ -24,12 +24,13 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference;
public class ZenModeVisEffectsAllPreferenceController public class ZenModeVisEffectsAllPreferenceController
extends AbstractZenModePreferenceController extends AbstractZenModePreferenceController
implements ZenCustomRadioButtonPreference.OnRadioButtonClickListener { implements RadioButtonPreference.OnClickListener {
private ZenCustomRadioButtonPreference mPreference; private RadioButtonPreference mPreference;
protected static final int EFFECTS = Policy.SUPPRESSED_EFFECT_SCREEN_OFF protected static final int EFFECTS = Policy.SUPPRESSED_EFFECT_SCREEN_OFF
| Policy.SUPPRESSED_EFFECT_SCREEN_ON | Policy.SUPPRESSED_EFFECT_SCREEN_ON
@@ -50,7 +51,7 @@ public class ZenModeVisEffectsAllPreferenceController
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen); super.displayPreference(screen);
mPreference = screen.findPreference(getPreferenceKey()); mPreference = screen.findPreference(getPreferenceKey());
mPreference.setOnRadioButtonClickListener(this); mPreference.setOnClickListener(this);
} }
@Override @Override
@@ -68,7 +69,7 @@ public class ZenModeVisEffectsAllPreferenceController
} }
@Override @Override
public void onRadioButtonClick(ZenCustomRadioButtonPreference p) { public void onRadioButtonClicked(RadioButtonPreference p) {
mMetricsFeatureProvider.action(mContext, mMetricsFeatureProvider.action(mContext,
SettingsEnums.ACTION_ZEN_SOUND_AND_VIS_EFFECTS, true); SettingsEnums.ACTION_ZEN_SOUND_AND_VIS_EFFECTS, true);
mBackend.saveVisualEffectsPolicy(EFFECTS, true); mBackend.saveVisualEffectsPolicy(EFFECTS, true);

View File

@@ -26,11 +26,12 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.SubSettingLauncher;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference;
public class ZenModeVisEffectsCustomPreferenceController public class ZenModeVisEffectsCustomPreferenceController
extends AbstractZenModePreferenceController { extends AbstractZenModePreferenceController {
private ZenCustomRadioButtonPreference mPreference; private RadioButtonPreference mPreference;
protected static final int INTERRUPTIVE_EFFECTS = protected static final int INTERRUPTIVE_EFFECTS =
NotificationManager.Policy.SUPPRESSED_EFFECT_AMBIENT NotificationManager.Policy.SUPPRESSED_EFFECT_AMBIENT
@@ -53,12 +54,11 @@ public class ZenModeVisEffectsCustomPreferenceController
super.displayPreference(screen); super.displayPreference(screen);
mPreference = screen.findPreference(getPreferenceKey()); mPreference = screen.findPreference(getPreferenceKey());
mPreference.setOnGearClickListener(p -> { mPreference.setExtraWidgetOnClickListener(p -> {
launchCustomSettings(); launchCustomSettings();
}); });
mPreference.setOnRadioButtonClickListener(p -> { mPreference.setOnClickListener(p -> {
launchCustomSettings(); launchCustomSettings();
}); });
} }

View File

@@ -24,12 +24,13 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference;
public class ZenModeVisEffectsNonePreferenceController public class ZenModeVisEffectsNonePreferenceController
extends AbstractZenModePreferenceController extends AbstractZenModePreferenceController
implements ZenCustomRadioButtonPreference.OnRadioButtonClickListener { implements RadioButtonPreference.OnClickListener {
private ZenCustomRadioButtonPreference mPreference; private RadioButtonPreference mPreference;
protected static final int EFFECTS = Policy.SUPPRESSED_EFFECT_SCREEN_OFF protected static final int EFFECTS = Policy.SUPPRESSED_EFFECT_SCREEN_OFF
| Policy.SUPPRESSED_EFFECT_SCREEN_ON | Policy.SUPPRESSED_EFFECT_SCREEN_ON
@@ -50,7 +51,7 @@ public class ZenModeVisEffectsNonePreferenceController
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen); super.displayPreference(screen);
mPreference = screen.findPreference(getPreferenceKey()); mPreference = screen.findPreference(getPreferenceKey());
mPreference.setOnRadioButtonClickListener(this); mPreference.setOnClickListener(this);
} }
@Override @Override
@@ -67,7 +68,7 @@ public class ZenModeVisEffectsNonePreferenceController
} }
@Override @Override
public void onRadioButtonClick(ZenCustomRadioButtonPreference preference) { public void onRadioButtonClicked(RadioButtonPreference preference) {
mMetricsFeatureProvider.action(mContext, mMetricsFeatureProvider.action(mContext,
SettingsEnums.ACTION_ZEN_SOUND_ONLY, true); SettingsEnums.ACTION_ZEN_SOUND_ONLY, true);
mBackend.saveVisualEffectsPolicy(EFFECTS, false); mBackend.saveVisualEffectsPolicy(EFFECTS, false);

View File

@@ -25,11 +25,12 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.SubSettingLauncher;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference;
public class ZenRuleCustomPolicyPreferenceController extends public class ZenRuleCustomPolicyPreferenceController extends
AbstractZenCustomRulePreferenceController { AbstractZenCustomRulePreferenceController {
private ZenCustomRadioButtonPreference mPreference; private RadioButtonPreference mPreference;
public ZenRuleCustomPolicyPreferenceController(Context context, Lifecycle lifecycle, public ZenRuleCustomPolicyPreferenceController(Context context, Lifecycle lifecycle,
String key) { String key) {
@@ -41,13 +42,12 @@ public class ZenRuleCustomPolicyPreferenceController extends
super.displayPreference(screen); super.displayPreference(screen);
mPreference = screen.findPreference(getPreferenceKey()); mPreference = screen.findPreference(getPreferenceKey());
mPreference.setOnGearClickListener(p -> { mPreference.setExtraWidgetOnClickListener(p -> {
setCustomPolicy(); setCustomPolicy();
launchCustomSettings(); launchCustomSettings();
}); });
mPreference.setOnRadioButtonClickListener(p -> { mPreference.setOnClickListener(p -> {
setCustomPolicy(); setCustomPolicy();
launchCustomSettings(); launchCustomSettings();
}); });

View File

@@ -26,11 +26,12 @@ import androidx.preference.PreferenceScreen;
import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference;
public class ZenRuleDefaultPolicyPreferenceController extends public class ZenRuleDefaultPolicyPreferenceController extends
AbstractZenCustomRulePreferenceController implements PreferenceControllerMixin { AbstractZenCustomRulePreferenceController implements PreferenceControllerMixin {
private ZenCustomRadioButtonPreference mPreference; private RadioButtonPreference mPreference;
public ZenRuleDefaultPolicyPreferenceController(Context context, Lifecycle lifecycle, public ZenRuleDefaultPolicyPreferenceController(Context context, Lifecycle lifecycle,
String key) { String key) {
@@ -42,7 +43,7 @@ public class ZenRuleDefaultPolicyPreferenceController extends
super.displayPreference(screen); super.displayPreference(screen);
mPreference = screen.findPreference(getPreferenceKey()); mPreference = screen.findPreference(getPreferenceKey());
mPreference.setOnRadioButtonClickListener(p -> { mPreference.setOnClickListener(p -> {
mRule.setZenPolicy(null); mRule.setZenPolicy(null);
mBackend.updateZenRule(mId, mRule); mBackend.updateZenRule(mId, mRule);
}); });

View File

@@ -27,11 +27,12 @@ import androidx.preference.PreferenceScreen;
import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference;
public class ZenRuleVisEffectsAllPreferenceController extends public class ZenRuleVisEffectsAllPreferenceController extends
AbstractZenCustomRulePreferenceController implements PreferenceControllerMixin { AbstractZenCustomRulePreferenceController implements PreferenceControllerMixin {
private ZenCustomRadioButtonPreference mPreference; private RadioButtonPreference mPreference;
public ZenRuleVisEffectsAllPreferenceController(Context context, Lifecycle lifecycle, public ZenRuleVisEffectsAllPreferenceController(Context context, Lifecycle lifecycle,
String key) { String key) {
@@ -43,7 +44,7 @@ public class ZenRuleVisEffectsAllPreferenceController extends
super.displayPreference(screen); super.displayPreference(screen);
mPreference = screen.findPreference(getPreferenceKey()); mPreference = screen.findPreference(getPreferenceKey());
mPreference.setOnRadioButtonClickListener(p -> { mPreference.setOnClickListener(p -> {
mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_ZEN_SOUND_ONLY, mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_ZEN_SOUND_ONLY,
Pair.create(MetricsProto.MetricsEvent.FIELD_ZEN_RULE_ID, mId)); Pair.create(MetricsProto.MetricsEvent.FIELD_ZEN_RULE_ID, mId));
mRule.setZenPolicy(new ZenPolicy.Builder(mRule.getZenPolicy()) mRule.setZenPolicy(new ZenPolicy.Builder(mRule.getZenPolicy())

View File

@@ -27,11 +27,12 @@ import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.SubSettingLauncher;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference;
public class ZenRuleVisEffectsCustomPreferenceController extends public class ZenRuleVisEffectsCustomPreferenceController extends
AbstractZenCustomRulePreferenceController implements PreferenceControllerMixin { AbstractZenCustomRulePreferenceController implements PreferenceControllerMixin {
private ZenCustomRadioButtonPreference mPreference; private RadioButtonPreference mPreference;
public ZenRuleVisEffectsCustomPreferenceController(Context context, Lifecycle lifecycle, public ZenRuleVisEffectsCustomPreferenceController(Context context, Lifecycle lifecycle,
String key) { String key) {
@@ -43,12 +44,12 @@ public class ZenRuleVisEffectsCustomPreferenceController extends
super.displayPreference(screen); super.displayPreference(screen);
mPreference = screen.findPreference(getPreferenceKey()); mPreference = screen.findPreference(getPreferenceKey());
mPreference.setOnGearClickListener(p -> { mPreference.setOnClickListener(p -> {
launchCustomSettings(); launchCustomSettings();
}); });
mPreference.setOnRadioButtonClickListener(p -> { mPreference.setExtraWidgetOnClickListener(p -> {
launchCustomSettings(); launchCustomSettings();
}); });
} }

View File

@@ -27,11 +27,12 @@ import androidx.preference.PreferenceScreen;
import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference;
public class ZenRuleVisEffectsNonePreferenceController extends public class ZenRuleVisEffectsNonePreferenceController extends
AbstractZenCustomRulePreferenceController implements PreferenceControllerMixin { AbstractZenCustomRulePreferenceController implements PreferenceControllerMixin {
private ZenCustomRadioButtonPreference mPreference; private RadioButtonPreference mPreference;
public ZenRuleVisEffectsNonePreferenceController(Context context, Lifecycle lifecycle, public ZenRuleVisEffectsNonePreferenceController(Context context, Lifecycle lifecycle,
String key) { String key) {
@@ -43,7 +44,7 @@ public class ZenRuleVisEffectsNonePreferenceController extends
super.displayPreference(screen); super.displayPreference(screen);
mPreference = screen.findPreference(getPreferenceKey()); mPreference = screen.findPreference(getPreferenceKey());
mPreference.setOnRadioButtonClickListener(p -> { mPreference.setOnClickListener(p -> {
mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_ZEN_SOUND_AND_VIS_EFFECTS, mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_ZEN_SOUND_AND_VIS_EFFECTS,
Pair.create(MetricsProto.MetricsEvent.FIELD_ZEN_RULE_ID, mId)); Pair.create(MetricsProto.MetricsEvent.FIELD_ZEN_RULE_ID, mId));
mRule.setZenPolicy(new ZenPolicy.Builder(mRule.getZenPolicy()) mRule.setZenPolicy(new ZenPolicy.Builder(mRule.getZenPolicy())

View File

@@ -1,90 +0,0 @@
/*
* Copyright (C) 2019 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.widget;
import android.content.Context;
import android.view.View;
import android.widget.ImageView;
import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
import com.android.settingslib.widget.RadioButtonPreference;
public class RadioButtonPreferenceWithExtraWidget extends RadioButtonPreference {
public static final int EXTRA_WIDGET_VISIBILITY_GONE = 0;
public static final int EXTRA_WIDGET_VISIBILITY_INFO = 1;
public static final int EXTRA_WIDGET_VISIBILITY_SETTING = 2;
private View mExtraWidgetDivider;
private ImageView mExtraWidget;
private int mExtraWidgetVisibility = EXTRA_WIDGET_VISIBILITY_GONE;
private View.OnClickListener mExtraWidgetOnClickListener;
public RadioButtonPreferenceWithExtraWidget(Context context) {
super(context, null);
setLayoutResource(R.layout.preference_radio_with_extra_widget);
}
@Override
public void onBindViewHolder(PreferenceViewHolder view) {
super.onBindViewHolder(view);
mExtraWidget = (ImageView) view.findViewById(R.id.radio_extra_widget);
mExtraWidgetDivider = view.findViewById(R.id.radio_extra_widget_divider);
setExtraWidgetVisibility(mExtraWidgetVisibility);
if (mExtraWidgetOnClickListener != null) {
setExtraWidgetOnClickListener(mExtraWidgetOnClickListener);
}
}
public void setExtraWidgetVisibility(int visibility) {
mExtraWidgetVisibility = visibility;
if (mExtraWidget == null || mExtraWidgetDivider == null) {
return;
}
if (visibility == EXTRA_WIDGET_VISIBILITY_GONE) {
mExtraWidget.setClickable(false);
mExtraWidget.setVisibility(View.GONE);
mExtraWidgetDivider.setVisibility(View.GONE);
} else {
mExtraWidget.setClickable(true);
mExtraWidget.setVisibility(View.VISIBLE);
mExtraWidgetDivider.setVisibility(View.VISIBLE);
if (mExtraWidgetVisibility == EXTRA_WIDGET_VISIBILITY_INFO) {
mExtraWidget.setImageResource(R.drawable.ic_settings_about);
mExtraWidget.setContentDescription(
getContext().getResources().getText(R.string.information_label));
} else if (mExtraWidgetVisibility == EXTRA_WIDGET_VISIBILITY_SETTING) {
mExtraWidget.setImageResource(R.drawable.ic_settings_accent);
mExtraWidget.setContentDescription(
getContext().getResources().getText(R.string.settings_label));
}
}
}
public void setExtraWidgetOnClickListener(View.OnClickListener listener) {
mExtraWidgetOnClickListener = listener;
if (mExtraWidget != null) {
mExtraWidget.setEnabled(true);
mExtraWidget.setOnClickListener(listener);
}
}
}

View File

@@ -1,110 +0,0 @@
/*
* 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 static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.RadioButton;
import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
import com.android.settings.notification.zen.ZenCustomRadioButtonPreference;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class ZenCustomRadioButtonPreferenceTest {
private Context mContext;
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
}
@Test
public void createNewPreference_shouldSetLayout() {
final ZenCustomRadioButtonPreference preference
= new ZenCustomRadioButtonPreference(mContext);
assertThat(preference.getLayoutResource()).isEqualTo(R.layout.preference_two_target_radio);
assertThat(preference.getWidgetLayoutResource())
.isEqualTo(R.layout.preference_widget_gear);
}
@Test
public void setChecked_shouldUpdateButtonCheckedState() {
final ZenCustomRadioButtonPreference preference =
new ZenCustomRadioButtonPreference(mContext);
final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
LayoutInflater.from(mContext).inflate(
R.layout.preference_two_target_radio, null));
final RadioButton toggle = (RadioButton) holder.findViewById(android.R.id.checkbox);
preference.onBindViewHolder(holder);
preference.setChecked(true);
assertThat(toggle.isChecked()).isTrue();
preference.setChecked(false);
assertThat(toggle.isChecked()).isFalse();
}
@Test
public void clickRadioButton_shouldNotifyRadioButtonClicked() {
final ZenCustomRadioButtonPreference preference
= new ZenCustomRadioButtonPreference(mContext);
final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
LayoutInflater.from(mContext).inflate(R.layout.preference_two_target_radio, null));
final View toggle = holder.findViewById(R.id.checkbox_frame);
ZenCustomRadioButtonPreference.OnRadioButtonClickListener l = mock(
ZenCustomRadioButtonPreference.OnRadioButtonClickListener.class);
preference.setOnRadioButtonClickListener(l);
preference.onBindViewHolder(holder);
toggle.performClick();
verify(l).onRadioButtonClick(preference);
}
@Test
public void clickWidgetView_shouldNotifyWidgetClicked() {
final ZenCustomRadioButtonPreference preference =
new ZenCustomRadioButtonPreference(mContext);
final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
LayoutInflater.from(mContext).inflate(R.layout.preference_two_target_radio, null));
final View widgetView = holder.findViewById(android.R.id.widget_frame);
ZenCustomRadioButtonPreference.OnGearClickListener l = mock(
ZenCustomRadioButtonPreference.OnGearClickListener.class);
preference.setOnGearClickListener(l);
preference.onBindViewHolder(holder);
widgetView.performClick();
verify(l).onGearClick(preference);
}
}

View File

@@ -40,11 +40,9 @@ import android.content.Context;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.notification.zen.ZenCustomRadioButtonPreference;
import com.android.settings.notification.zen.ZenModeBackend;
import com.android.settings.notification.zen.ZenModeVisEffectsAllPreferenceController;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -63,7 +61,7 @@ public class ZenModeVisEffectsAllPreferenceControllerTest {
@Mock @Mock
private ZenModeBackend mBackend; private ZenModeBackend mBackend;
@Mock @Mock
private ZenCustomRadioButtonPreference mockPref; private RadioButtonPreference mPref;
private Context mContext; private Context mContext;
private FakeFeatureFactory mFeatureFactory; private FakeFeatureFactory mFeatureFactory;
@Mock @Mock
@@ -86,7 +84,7 @@ public class ZenModeVisEffectsAllPreferenceControllerTest {
mContext, mock(Lifecycle.class), PREF_KEY); mContext, mock(Lifecycle.class), PREF_KEY);
ReflectionHelpers.setField(mController, "mBackend", mBackend); ReflectionHelpers.setField(mController, "mBackend", mBackend);
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPref);
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
} }
@@ -98,9 +96,9 @@ public class ZenModeVisEffectsAllPreferenceControllerTest {
@Test @Test
public void updateState_notChecked() { public void updateState_notChecked() {
mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 1); mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 1);
mController.updateState(mockPref); mController.updateState(mPref);
verify(mockPref).setChecked(false); verify(mPref).setChecked(false);
} }
@Test @Test
@@ -115,9 +113,9 @@ public class ZenModeVisEffectsAllPreferenceControllerTest {
| SUPPRESSED_EFFECT_PEEK | SUPPRESSED_EFFECT_PEEK
| SUPPRESSED_EFFECT_NOTIFICATION_LIST; | SUPPRESSED_EFFECT_NOTIFICATION_LIST;
mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, allSuppressed); mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, allSuppressed);
mController.updateState(mockPref); mController.updateState(mPref);
verify(mockPref).setChecked(true); verify(mPref).setChecked(true);
} }
@Test @Test
@@ -132,7 +130,7 @@ public class ZenModeVisEffectsAllPreferenceControllerTest {
| SUPPRESSED_EFFECT_PEEK | SUPPRESSED_EFFECT_PEEK
| SUPPRESSED_EFFECT_NOTIFICATION_LIST; | SUPPRESSED_EFFECT_NOTIFICATION_LIST;
mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 1); mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 1);
mController.onRadioButtonClick(mockPref); mController.onRadioButtonClicked(mPref);
verify(mBackend).saveVisualEffectsPolicy(allSuppressed, true); verify(mBackend).saveVisualEffectsPolicy(allSuppressed, true);
verify(mFeatureFactory.metricsFeatureProvider).action(eq(mContext), verify(mFeatureFactory.metricsFeatureProvider).action(eq(mContext),
eq(ACTION_ZEN_SOUND_AND_VIS_EFFECTS), eq(ACTION_ZEN_SOUND_AND_VIS_EFFECTS),

View File

@@ -38,11 +38,9 @@ import android.content.Context;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.notification.zen.ZenCustomRadioButtonPreference;
import com.android.settings.notification.zen.ZenModeBackend;
import com.android.settings.notification.zen.ZenModeVisEffectsCustomPreferenceController;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -61,7 +59,7 @@ public class ZenModeVisEffectsCustomPreferenceControllerTest {
@Mock @Mock
private ZenModeBackend mBackend; private ZenModeBackend mBackend;
@Mock @Mock
private ZenCustomRadioButtonPreference mockPref; private RadioButtonPreference mPref;
private Context mContext; private Context mContext;
@Mock @Mock
private PreferenceScreen mScreen; private PreferenceScreen mScreen;
@@ -83,7 +81,7 @@ public class ZenModeVisEffectsCustomPreferenceControllerTest {
mContext, mock(Lifecycle.class), PREF_KEY); mContext, mock(Lifecycle.class), PREF_KEY);
ReflectionHelpers.setField(mController, "mBackend", mBackend); ReflectionHelpers.setField(mController, "mBackend", mBackend);
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPref);
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
} }
@@ -102,9 +100,9 @@ public class ZenModeVisEffectsCustomPreferenceControllerTest {
@Test @Test
public void updateState_notChecked_noVisEffects() { public void updateState_notChecked_noVisEffects() {
mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 0); mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 0);
mController.updateState(mockPref); mController.updateState(mPref);
verify(mockPref).setChecked(false); verify(mPref).setChecked(false);
} }
@Test @Test
@@ -119,25 +117,25 @@ public class ZenModeVisEffectsCustomPreferenceControllerTest {
| SUPPRESSED_EFFECT_PEEK | SUPPRESSED_EFFECT_PEEK
| SUPPRESSED_EFFECT_NOTIFICATION_LIST; | SUPPRESSED_EFFECT_NOTIFICATION_LIST;
mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, allSuppressed); mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, allSuppressed);
mController.updateState(mockPref); mController.updateState(mPref);
verify(mockPref).setChecked(false); verify(mPref).setChecked(false);
} }
@Test @Test
public void updateState_checked() { public void updateState_checked() {
mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 2); mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 2);
mController.updateState(mockPref); mController.updateState(mPref);
verify(mockPref).setChecked(true); verify(mPref).setChecked(true);
} }
@Test @Test
public void updateState_listeners() { public void updateState_listeners() {
mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 2); mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 2);
mController.updateState(mockPref); mController.updateState(mPref);
verify(mockPref).setOnGearClickListener(any()); verify(mPref).setExtraWidgetOnClickListener(any());
verify(mockPref).setOnRadioButtonClickListener(any()); verify(mPref).setOnClickListener(any());
} }
} }

View File

@@ -40,11 +40,9 @@ import android.content.Context;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.notification.zen.ZenCustomRadioButtonPreference;
import com.android.settings.notification.zen.ZenModeBackend;
import com.android.settings.notification.zen.ZenModeVisEffectsNonePreferenceController;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -63,7 +61,7 @@ public class ZenModeVisEffectsNonePreferenceControllerTest {
@Mock @Mock
private ZenModeBackend mBackend; private ZenModeBackend mBackend;
@Mock @Mock
private ZenCustomRadioButtonPreference mockPref; private RadioButtonPreference mMockPref;
private Context mContext; private Context mContext;
private FakeFeatureFactory mFeatureFactory; private FakeFeatureFactory mFeatureFactory;
@Mock @Mock
@@ -86,7 +84,7 @@ public class ZenModeVisEffectsNonePreferenceControllerTest {
mContext, mock(Lifecycle.class), PREF_KEY); mContext, mock(Lifecycle.class), PREF_KEY);
ReflectionHelpers.setField(mController, "mBackend", mBackend); ReflectionHelpers.setField(mController, "mBackend", mBackend);
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mMockPref);
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
} }
@@ -98,17 +96,17 @@ public class ZenModeVisEffectsNonePreferenceControllerTest {
@Test @Test
public void updateState_notChecked() { public void updateState_notChecked() {
mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 1); mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 1);
mController.updateState(mockPref); mController.updateState(mMockPref);
verify(mockPref).setChecked(false); verify(mMockPref).setChecked(false);
} }
@Test @Test
public void updateState_checked() { public void updateState_checked() {
mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 0); mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 0);
mController.updateState(mockPref); mController.updateState(mMockPref);
verify(mockPref).setChecked(true); verify(mMockPref).setChecked(true);
} }
@Test @Test
@@ -123,7 +121,7 @@ public class ZenModeVisEffectsNonePreferenceControllerTest {
| SUPPRESSED_EFFECT_PEEK | SUPPRESSED_EFFECT_PEEK
| SUPPRESSED_EFFECT_NOTIFICATION_LIST; | SUPPRESSED_EFFECT_NOTIFICATION_LIST;
mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 1); mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 1);
mController.onRadioButtonClick(mockPref); mController.onRadioButtonClicked(mMockPref);
verify(mBackend).saveVisualEffectsPolicy(allSuppressed, false); verify(mBackend).saveVisualEffectsPolicy(allSuppressed, false);
verify(mFeatureFactory.metricsFeatureProvider).action(nullable(Context.class), verify(mFeatureFactory.metricsFeatureProvider).action(nullable(Context.class),
eq(ACTION_ZEN_SOUND_ONLY), eq(ACTION_ZEN_SOUND_ONLY),

View File

@@ -27,6 +27,7 @@ import android.service.notification.ZenPolicy;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -47,7 +48,7 @@ public class ZenRuleCustomPolicyPreferenceControllerTest extends
@Mock @Mock
private NotificationManager mNotificationManager; private NotificationManager mNotificationManager;
@Mock @Mock
private ZenCustomRadioButtonPreference mockPref; private RadioButtonPreference mMockPref;
@Mock @Mock
private PreferenceScreen mScreen; private PreferenceScreen mScreen;
@@ -70,21 +71,21 @@ public class ZenRuleCustomPolicyPreferenceControllerTest extends
PREF_KEY); PREF_KEY);
ReflectionHelpers.setField(mController, "mBackend", mBackend); ReflectionHelpers.setField(mController, "mBackend", mBackend);
when(mBackend.getAutomaticZenRule(RULE_ID)).thenReturn(mRule); when(mBackend.getAutomaticZenRule(RULE_ID)).thenReturn(mRule);
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mMockPref);
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
} }
@Test @Test
public void updateState_nullZenPolicy() { public void updateState_nullZenPolicy() {
updateControllerZenPolicy(null); updateControllerZenPolicy(null);
mController.updateState(mockPref); mController.updateState(mMockPref);
verify(mockPref).setChecked(false); verify(mMockPref).setChecked(false);
} }
@Test @Test
public void updateState_hasZenPolicy() { public void updateState_hasZenPolicy() {
updateControllerZenPolicy(new ZenPolicy.Builder().build()); updateControllerZenPolicy(new ZenPolicy.Builder().build());
mController.updateState(mockPref); mController.updateState(mMockPref);
verify(mockPref).setChecked(true); verify(mMockPref).setChecked(true);
} }
} }

View File

@@ -27,6 +27,7 @@ import android.service.notification.ZenPolicy;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -47,7 +48,7 @@ public class ZenRuleDefaultPolicyPreferenceControllerTest extends
@Mock @Mock
private NotificationManager mNotificationManager; private NotificationManager mNotificationManager;
@Mock @Mock
private ZenCustomRadioButtonPreference mockPref; private RadioButtonPreference mMockPref;
@Mock @Mock
private PreferenceScreen mScreen; private PreferenceScreen mScreen;
@@ -70,21 +71,21 @@ public class ZenRuleDefaultPolicyPreferenceControllerTest extends
PREF_KEY); PREF_KEY);
ReflectionHelpers.setField(mController, "mBackend", mBackend); ReflectionHelpers.setField(mController, "mBackend", mBackend);
when(mBackend.getAutomaticZenRule(RULE_ID)).thenReturn(mRule); when(mBackend.getAutomaticZenRule(RULE_ID)).thenReturn(mRule);
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mMockPref);
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
} }
@Test @Test
public void updateState_nullZenPolicy() { public void updateState_nullZenPolicy() {
updateControllerZenPolicy(null); updateControllerZenPolicy(null);
mController.updateState(mockPref); mController.updateState(mMockPref);
verify(mockPref).setChecked(true); verify(mMockPref).setChecked(true);
} }
@Test @Test
public void updateState_hasZenPolicy() { public void updateState_hasZenPolicy() {
updateControllerZenPolicy(new ZenPolicy.Builder().build()); updateControllerZenPolicy(new ZenPolicy.Builder().build());
mController.updateState(mockPref); mController.updateState(mMockPref);
verify(mockPref).setChecked(false); verify(mMockPref).setChecked(false);
} }
} }

View File

@@ -28,10 +28,8 @@ import android.content.Context;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.notification.zen.AbstractZenCustomRulePreferenceController;
import com.android.settings.notification.zen.ZenCustomRadioButtonPreference;
import com.android.settings.notification.zen.ZenModeBackend;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -51,7 +49,7 @@ public class ZenRulePreferenceControllerTest {
@Mock @Mock
private NotificationManager mNotificationManager; private NotificationManager mNotificationManager;
@Mock @Mock
private ZenCustomRadioButtonPreference mockPref; private RadioButtonPreference mMockPref;
@Mock @Mock
private PreferenceScreen mScreen; private PreferenceScreen mScreen;
@@ -67,7 +65,7 @@ public class ZenRulePreferenceControllerTest {
mContext = RuntimeEnvironment.application; mContext = RuntimeEnvironment.application;
mController = new TestablePreferenceController(mContext,"test", mock(Lifecycle.class)); mController = new TestablePreferenceController(mContext,"test", mock(Lifecycle.class));
ReflectionHelpers.setField(mController, "mBackend", mBackend); ReflectionHelpers.setField(mController, "mBackend", mBackend);
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mMockPref);
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
} }

View File

@@ -27,6 +27,7 @@ import android.service.notification.ZenPolicy;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -47,7 +48,7 @@ public class ZenRuleVisEffectsAllPreferenceControllerTest extends
@Mock @Mock
private NotificationManager mNotificationManager; private NotificationManager mNotificationManager;
@Mock @Mock
private ZenCustomRadioButtonPreference mockPref; private RadioButtonPreference mMockPref;
@Mock @Mock
private PreferenceScreen mScreen; private PreferenceScreen mScreen;
@@ -69,7 +70,7 @@ public class ZenRuleVisEffectsAllPreferenceControllerTest extends
PREF_KEY); PREF_KEY);
ReflectionHelpers.setField(mController, "mBackend", mBackend); ReflectionHelpers.setField(mController, "mBackend", mBackend);
when(mBackend.getAutomaticZenRule(RULE_ID)).thenReturn(mRule); when(mBackend.getAutomaticZenRule(RULE_ID)).thenReturn(mRule);
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mMockPref);
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
} }
@@ -78,8 +79,8 @@ public class ZenRuleVisEffectsAllPreferenceControllerTest extends
updateControllerZenPolicy(new ZenPolicy.Builder() updateControllerZenPolicy(new ZenPolicy.Builder()
.hideAllVisualEffects() .hideAllVisualEffects()
.build()); .build());
mController.updateState(mockPref); mController.updateState(mMockPref);
verify(mockPref).setChecked(false); verify(mMockPref).setChecked(false);
} }
@Test @Test
@@ -87,8 +88,8 @@ public class ZenRuleVisEffectsAllPreferenceControllerTest extends
updateControllerZenPolicy(new ZenPolicy.Builder() updateControllerZenPolicy(new ZenPolicy.Builder()
.showAllVisualEffects() .showAllVisualEffects()
.build()); .build());
mController.updateState(mockPref); mController.updateState(mMockPref);
verify(mockPref).setChecked(true); verify(mMockPref).setChecked(true);
} }
@Test @Test
@@ -97,8 +98,8 @@ public class ZenRuleVisEffectsAllPreferenceControllerTest extends
.showPeeking(true) .showPeeking(true)
.showBadges(false) .showBadges(false)
.build()); .build());
mController.updateState(mockPref); mController.updateState(mMockPref);
verify(mockPref).setChecked(false); verify(mMockPref).setChecked(false);
} }
} }

View File

@@ -27,6 +27,7 @@ import android.service.notification.ZenPolicy;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -47,7 +48,7 @@ public class ZenRuleVisEffectsCustomPreferenceControllerTest extends
@Mock @Mock
private NotificationManager mNotificationManager; private NotificationManager mNotificationManager;
@Mock @Mock
private ZenCustomRadioButtonPreference mockPref; private RadioButtonPreference mMockPref;
@Mock @Mock
private PreferenceScreen mScreen; private PreferenceScreen mScreen;
@@ -69,7 +70,7 @@ public class ZenRuleVisEffectsCustomPreferenceControllerTest extends
PREF_KEY); PREF_KEY);
ReflectionHelpers.setField(mController, "mBackend", mBackend); ReflectionHelpers.setField(mController, "mBackend", mBackend);
when(mBackend.getAutomaticZenRule(RULE_ID)).thenReturn(mRule); when(mBackend.getAutomaticZenRule(RULE_ID)).thenReturn(mRule);
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mMockPref);
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
} }
@@ -78,8 +79,8 @@ public class ZenRuleVisEffectsCustomPreferenceControllerTest extends
updateControllerZenPolicy(new ZenPolicy.Builder() updateControllerZenPolicy(new ZenPolicy.Builder()
.hideAllVisualEffects() .hideAllVisualEffects()
.build()); .build());
mController.updateState(mockPref); mController.updateState(mMockPref);
verify(mockPref).setChecked(false); verify(mMockPref).setChecked(false);
} }
@Test @Test
@@ -87,8 +88,8 @@ public class ZenRuleVisEffectsCustomPreferenceControllerTest extends
updateControllerZenPolicy(new ZenPolicy.Builder() updateControllerZenPolicy(new ZenPolicy.Builder()
.showAllVisualEffects() .showAllVisualEffects()
.build()); .build());
mController.updateState(mockPref); mController.updateState(mMockPref);
verify(mockPref).setChecked(false); verify(mMockPref).setChecked(false);
} }
@Test @Test
@@ -97,8 +98,8 @@ public class ZenRuleVisEffectsCustomPreferenceControllerTest extends
.showPeeking(true) .showPeeking(true)
.showBadges(false) .showBadges(false)
.build()); .build());
mController.updateState(mockPref); mController.updateState(mMockPref);
verify(mockPref).setChecked(true); verify(mMockPref).setChecked(true);
} }
} }

View File

@@ -27,6 +27,7 @@ import android.service.notification.ZenPolicy;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.RadioButtonPreference;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -47,7 +48,7 @@ public class ZenRuleVisEffectsNonePreferenceControllerTest extends
@Mock @Mock
private NotificationManager mNotificationManager; private NotificationManager mNotificationManager;
@Mock @Mock
private ZenCustomRadioButtonPreference mockPref; private RadioButtonPreference mMockPref;
@Mock @Mock
private PreferenceScreen mScreen; private PreferenceScreen mScreen;
@@ -69,7 +70,7 @@ public class ZenRuleVisEffectsNonePreferenceControllerTest extends
PREF_KEY); PREF_KEY);
ReflectionHelpers.setField(mController, "mBackend", mBackend); ReflectionHelpers.setField(mController, "mBackend", mBackend);
when(mBackend.getAutomaticZenRule(RULE_ID)).thenReturn(mRule); when(mBackend.getAutomaticZenRule(RULE_ID)).thenReturn(mRule);
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mMockPref);
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
} }
@@ -78,8 +79,8 @@ public class ZenRuleVisEffectsNonePreferenceControllerTest extends
updateControllerZenPolicy(new ZenPolicy.Builder() updateControllerZenPolicy(new ZenPolicy.Builder()
.hideAllVisualEffects() .hideAllVisualEffects()
.build()); .build());
mController.updateState(mockPref); mController.updateState(mMockPref);
verify(mockPref).setChecked(true); verify(mMockPref).setChecked(true);
} }
@Test @Test
@@ -87,8 +88,8 @@ public class ZenRuleVisEffectsNonePreferenceControllerTest extends
updateControllerZenPolicy(new ZenPolicy.Builder() updateControllerZenPolicy(new ZenPolicy.Builder()
.showAllVisualEffects() .showAllVisualEffects()
.build()); .build());
mController.updateState(mockPref); mController.updateState(mMockPref);
verify(mockPref).setChecked(false); verify(mMockPref).setChecked(false);
} }
@Test @Test
@@ -97,8 +98,8 @@ public class ZenRuleVisEffectsNonePreferenceControllerTest extends
.showPeeking(true) .showPeeking(true)
.showBadges(false) .showBadges(false)
.build()); .build());
mController.updateState(mockPref); mController.updateState(mMockPref);
verify(mockPref).setChecked(false); verify(mMockPref).setChecked(false);
} }
} }

View File

@@ -1,140 +0,0 @@
/*
* Copyright (C) 2019 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.widget;
import static com.android.settings.widget.RadioButtonPreferenceWithExtraWidget.EXTRA_WIDGET_VISIBILITY_GONE;
import static com.android.settings.widget.RadioButtonPreferenceWithExtraWidget.EXTRA_WIDGET_VISIBILITY_INFO;
import static com.android.settings.widget.RadioButtonPreferenceWithExtraWidget.EXTRA_WIDGET_VISIBILITY_SETTING;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals;
import android.app.Application;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class RadioButtonPreferenceWithExtraWidgetTest {
private Application mContext;
private RadioButtonPreferenceWithExtraWidget mPreference;
private TextView mSummary;
private ImageView mExtraWidget;
private View mExtraWidgetDivider;
private boolean mIsClickListenerCalled = false;
private View.OnClickListener mClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
mIsClickListenerCalled = true;
}
};
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
mPreference = new RadioButtonPreferenceWithExtraWidget(mContext);
mPreference.setSummary("test summary");
View view = LayoutInflater.from(mContext)
.inflate(R.layout.preference_radio_with_extra_widget, null);
PreferenceViewHolder preferenceViewHolder =
PreferenceViewHolder.createInstanceForTests(view);
mPreference.onBindViewHolder(preferenceViewHolder);
mSummary = view.findViewById(android.R.id.summary);
mExtraWidget = view.findViewById(R.id.radio_extra_widget);
mExtraWidgetDivider = view.findViewById(R.id.radio_extra_widget_divider);
}
@Test
public void shouldHaveRadioPreferenceWithExtraWidgetLayout() {
assertThat(mPreference.getLayoutResource())
.isEqualTo(R.layout.preference_radio_with_extra_widget);
}
@Test
public void iconSpaceReservedShouldBeFalse() {
assertThat(mPreference.isIconSpaceReserved()).isFalse();
}
@Test
public void summaryShouldBeVisible() {
assertEquals(View.VISIBLE, mSummary.getVisibility());
}
@Test
public void testSetExtraWidgetVisibility_gone() {
mPreference.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_GONE);
assertEquals(View.GONE, mExtraWidget.getVisibility());
assertEquals(View.GONE, mExtraWidgetDivider.getVisibility());
assertThat(mExtraWidget.isClickable()).isFalse();
}
@Test
public void testSetExtraWidgetVisibility_info() {
mPreference.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_INFO);
assertEquals(View.VISIBLE, mExtraWidget.getVisibility());
assertEquals(View.VISIBLE, mExtraWidgetDivider.getVisibility());
assertThat(mExtraWidget.isClickable()).isTrue();
assertEquals(mContext.getResources().getText(R.string.information_label),
mExtraWidget.getContentDescription());
}
@Test
public void testSetExtraWidgetVisibility_setting() {
mPreference.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_SETTING);
assertEquals(View.VISIBLE, mExtraWidget.getVisibility());
assertEquals(View.VISIBLE, mExtraWidgetDivider.getVisibility());
assertThat(mExtraWidget.isClickable()).isTrue();
assertEquals(mContext.getResources().getText(R.string.settings_label),
mExtraWidget.getContentDescription());
}
@Test
public void testSetExtraWidgetOnClickListener() {
mPreference.setExtraWidgetOnClickListener(mClickListener);
assertThat(mIsClickListenerCalled).isFalse();
mExtraWidget.callOnClick();
assertThat(mIsClickListenerCalled).isTrue();
}
@Test
public void extraWidgetStaysEnabledWhenPreferenceIsDisabled() {
mPreference.setEnabled(false);
mExtraWidget.setEnabled(false);
assertThat(mExtraWidget.isEnabled()).isFalse();
mPreference.setExtraWidgetOnClickListener(mClickListener);
assertThat(mExtraWidget.isEnabled()).isTrue();
}
}