Loading src/com/android/settings/notification/AppNotificationSettings.java +1 −1 Original line number Diff line number Diff line Loading @@ -161,7 +161,7 @@ public class AppNotificationSettings extends NotificationSettingsBase { final NotificationChannel channel = channels.get(i); MasterSwitchPreference channelPref = new MasterSwitchPreference( getPrefContext()); channelPref.setDisabledByAdmin(mSuspendedAppsAdmin); channelPref.setSwitchEnabled(mSuspendedAppsAdmin == null && !mAppRow.systemApp); channelPref.setKey(channel.getId()); channelPref.setTitle(channel.getName()); channelPref.setChecked(channel.getImportance() != IMPORTANCE_NONE); Loading src/com/android/settings/notification/ChannelNotificationSettings.java +2 −4 Original line number Diff line number Diff line Loading @@ -177,9 +177,7 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { mRingtone.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { Uri ringtone = Uri.parse((String) newValue); mRingtone.setRingtone(ringtone); mChannel.setSound(ringtone, mChannel.getAudioAttributes()); mChannel.setSound((Uri) newValue, mChannel.getAudioAttributes()); mChannel.lockFields(NotificationChannel.USER_LOCKED_SOUND); mBackend.updateChannel(mPkg, mUid, mChannel); return false; Loading Loading @@ -240,7 +238,7 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { mImportance.setEntryValues(values.toArray(new String[0])); mImportance.setEntries(summaries.toArray(new String[0])); mImportance.setValue(String.valueOf(mChannel.getImportance())); mImportance.setSummary("%s"); mImportance.setSummary(getImportanceSummary(mChannel.getImportance())); if (mAppRow.lockedImportance) { mImportance.setEnabled(false); } else { Loading src/com/android/settings/notification/NotificationSoundPreference.java +13 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ package com.android.settings.notification; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.media.Ringtone; import android.media.RingtoneManager; import android.net.Uri; Loading @@ -25,9 +26,21 @@ public class NotificationSoundPreference extends RingtonePreference { public void setRingtone(Uri ringtone) { mRingtone = ringtone; setSummary("\u00A0"); updateRingtoneName(mRingtone); } @Override public boolean onActivityResult(int requestCode, int resultCode, Intent data) { if (data != null) { Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); setRingtone(uri); callChangeListener(uri); } return true; } private void updateRingtoneName(final Uri uri) { AsyncTask ringtoneNameTask = new AsyncTask<Object, Void, CharSequence>() { @Override Loading src/com/android/settings/widget/MasterSwitchPreference.java +7 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ public class MasterSwitchPreference extends TwoTargetPreference { private Switch mSwitch; private boolean mChecked; private boolean mEnableSwitch = true; public MasterSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { Loading Loading @@ -67,6 +68,9 @@ public class MasterSwitchPreference extends TwoTargetPreference { widgetView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mSwitch != null && !mSwitch.isEnabled()) { return; } setChecked(!mChecked); if (!callChangeListener(mChecked)) { setChecked(!mChecked); Loading @@ -76,9 +80,11 @@ public class MasterSwitchPreference extends TwoTargetPreference { } }); } mSwitch = (Switch) holder.findViewById(R.id.switchWidget); if (mSwitch != null) { mSwitch.setChecked(mChecked); mSwitch.setEnabled(mEnableSwitch); } } Loading @@ -94,6 +100,7 @@ public class MasterSwitchPreference extends TwoTargetPreference { } public void setSwitchEnabled(boolean enabled) { mEnableSwitch = enabled; if (mSwitch != null) { mSwitch.setEnabled(enabled); } Loading tests/robotests/src/com/android/settings/widget/MasterSwitchPreferenceTest.java +29 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,19 @@ public class MasterSwitchPreferenceTest { assertThat(toggle.isEnabled()).isFalse(); } @Test public void setSwitchEnabled_shouldUpdateButtonEnabledState_beforeViewBound() { final MasterSwitchPreference preference = new MasterSwitchPreference(mContext); final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests( LayoutInflater.from(mContext).inflate( R.layout.preference_widget_master_switch, null)); final Switch toggle = (Switch) holder.findViewById(R.id.switchWidget); preference.setSwitchEnabled(false); preference.onBindViewHolder(holder); assertThat(toggle.isEnabled()).isFalse(); } @Test public void clickWidgetView_shouldToggleButton() { final MasterSwitchPreference preference = new MasterSwitchPreference(mContext); Loading @@ -108,6 +121,22 @@ public class MasterSwitchPreferenceTest { assertThat(toggle.isChecked()).isFalse(); } @Test public void clickWidgetView_shouldNotToggleButtonIfDisabled() { final MasterSwitchPreference preference = new MasterSwitchPreference(mContext); final LayoutInflater inflater = LayoutInflater.from(mContext); final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests( inflater.inflate(R.layout.preference_two_target, null)); final LinearLayout widgetView = holder.itemView.findViewById(android.R.id.widget_frame); inflater.inflate(R.layout.preference_widget_master_switch, widgetView, true); final Switch toggle = (Switch) holder.findViewById(R.id.switchWidget); preference.onBindViewHolder(holder); toggle.setEnabled(false); widgetView.performClick(); assertThat(toggle.isChecked()).isFalse(); } @Test public void clickWidgetView_shouldNotifyPreferenceChanged() { final MasterSwitchPreference preference = new MasterSwitchPreference(mContext); Loading Loading
src/com/android/settings/notification/AppNotificationSettings.java +1 −1 Original line number Diff line number Diff line Loading @@ -161,7 +161,7 @@ public class AppNotificationSettings extends NotificationSettingsBase { final NotificationChannel channel = channels.get(i); MasterSwitchPreference channelPref = new MasterSwitchPreference( getPrefContext()); channelPref.setDisabledByAdmin(mSuspendedAppsAdmin); channelPref.setSwitchEnabled(mSuspendedAppsAdmin == null && !mAppRow.systemApp); channelPref.setKey(channel.getId()); channelPref.setTitle(channel.getName()); channelPref.setChecked(channel.getImportance() != IMPORTANCE_NONE); Loading
src/com/android/settings/notification/ChannelNotificationSettings.java +2 −4 Original line number Diff line number Diff line Loading @@ -177,9 +177,7 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { mRingtone.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { Uri ringtone = Uri.parse((String) newValue); mRingtone.setRingtone(ringtone); mChannel.setSound(ringtone, mChannel.getAudioAttributes()); mChannel.setSound((Uri) newValue, mChannel.getAudioAttributes()); mChannel.lockFields(NotificationChannel.USER_LOCKED_SOUND); mBackend.updateChannel(mPkg, mUid, mChannel); return false; Loading Loading @@ -240,7 +238,7 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { mImportance.setEntryValues(values.toArray(new String[0])); mImportance.setEntries(summaries.toArray(new String[0])); mImportance.setValue(String.valueOf(mChannel.getImportance())); mImportance.setSummary("%s"); mImportance.setSummary(getImportanceSummary(mChannel.getImportance())); if (mAppRow.lockedImportance) { mImportance.setEnabled(false); } else { Loading
src/com/android/settings/notification/NotificationSoundPreference.java +13 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ package com.android.settings.notification; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.media.Ringtone; import android.media.RingtoneManager; import android.net.Uri; Loading @@ -25,9 +26,21 @@ public class NotificationSoundPreference extends RingtonePreference { public void setRingtone(Uri ringtone) { mRingtone = ringtone; setSummary("\u00A0"); updateRingtoneName(mRingtone); } @Override public boolean onActivityResult(int requestCode, int resultCode, Intent data) { if (data != null) { Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); setRingtone(uri); callChangeListener(uri); } return true; } private void updateRingtoneName(final Uri uri) { AsyncTask ringtoneNameTask = new AsyncTask<Object, Void, CharSequence>() { @Override Loading
src/com/android/settings/widget/MasterSwitchPreference.java +7 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ public class MasterSwitchPreference extends TwoTargetPreference { private Switch mSwitch; private boolean mChecked; private boolean mEnableSwitch = true; public MasterSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { Loading Loading @@ -67,6 +68,9 @@ public class MasterSwitchPreference extends TwoTargetPreference { widgetView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mSwitch != null && !mSwitch.isEnabled()) { return; } setChecked(!mChecked); if (!callChangeListener(mChecked)) { setChecked(!mChecked); Loading @@ -76,9 +80,11 @@ public class MasterSwitchPreference extends TwoTargetPreference { } }); } mSwitch = (Switch) holder.findViewById(R.id.switchWidget); if (mSwitch != null) { mSwitch.setChecked(mChecked); mSwitch.setEnabled(mEnableSwitch); } } Loading @@ -94,6 +100,7 @@ public class MasterSwitchPreference extends TwoTargetPreference { } public void setSwitchEnabled(boolean enabled) { mEnableSwitch = enabled; if (mSwitch != null) { mSwitch.setEnabled(enabled); } Loading
tests/robotests/src/com/android/settings/widget/MasterSwitchPreferenceTest.java +29 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,19 @@ public class MasterSwitchPreferenceTest { assertThat(toggle.isEnabled()).isFalse(); } @Test public void setSwitchEnabled_shouldUpdateButtonEnabledState_beforeViewBound() { final MasterSwitchPreference preference = new MasterSwitchPreference(mContext); final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests( LayoutInflater.from(mContext).inflate( R.layout.preference_widget_master_switch, null)); final Switch toggle = (Switch) holder.findViewById(R.id.switchWidget); preference.setSwitchEnabled(false); preference.onBindViewHolder(holder); assertThat(toggle.isEnabled()).isFalse(); } @Test public void clickWidgetView_shouldToggleButton() { final MasterSwitchPreference preference = new MasterSwitchPreference(mContext); Loading @@ -108,6 +121,22 @@ public class MasterSwitchPreferenceTest { assertThat(toggle.isChecked()).isFalse(); } @Test public void clickWidgetView_shouldNotToggleButtonIfDisabled() { final MasterSwitchPreference preference = new MasterSwitchPreference(mContext); final LayoutInflater inflater = LayoutInflater.from(mContext); final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests( inflater.inflate(R.layout.preference_two_target, null)); final LinearLayout widgetView = holder.itemView.findViewById(android.R.id.widget_frame); inflater.inflate(R.layout.preference_widget_master_switch, widgetView, true); final Switch toggle = (Switch) holder.findViewById(R.id.switchWidget); preference.onBindViewHolder(holder); toggle.setEnabled(false); widgetView.performClick(); assertThat(toggle.isChecked()).isFalse(); } @Test public void clickWidgetView_shouldNotifyPreferenceChanged() { final MasterSwitchPreference preference = new MasterSwitchPreference(mContext); Loading