From 6d26d10fb3e5e2e491d1da0881eda192d30eec04 Mon Sep 17 00:00:00 2001 From: John Spurlock Date: Wed, 23 Apr 2014 11:37:27 -0400 Subject: [PATCH] Notification settings: update lockscreen option language. When device is locked: - Show all notification content - Hide sensitive notification content Change-Id: I641bca5f1b5f0ab1b2dc381fc0af7f32a9f2bc6d --- res/values/strings.xml | 6 +- res/xml/notification_settings.xml | 4 +- .../notification/DropDownPreference.java | 110 ++++++++++++++++++ .../notification/NotificationSettings.java | 24 ++-- .../notification/ZenModeSettings.java | 82 +------------ 5 files changed, 132 insertions(+), 94 deletions(-) create mode 100644 src/com/android/settings/notification/DropDownPreference.java diff --git a/res/values/strings.xml b/res/values/strings.xml index dd980f9567b..094f44f3393 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -5030,15 +5030,15 @@ - Show on lock screen + When device is locked - Unless content is sensitive + Hide sensitive notification content - All notifications + Show all notification content Do not disturb diff --git a/res/xml/notification_settings.xml b/res/xml/notification_settings.xml index 51b153e838d..8cc10694340 100644 --- a/res/xml/notification_settings.xml +++ b/res/xml/notification_settings.xml @@ -36,11 +36,9 @@ android:title="@string/heads_up_enabled_title" android:persistent="false" /> - mAdapter; + private final Spinner mSpinner; + + private Callback mCallback; + + public DropDownPreference(Context context) { + this(context, null); + } + + public DropDownPreference(Context context, AttributeSet attrs) { + super(context, attrs); + mContext = context; + mAdapter = new ArrayAdapter(mContext, + android.R.layout.simple_spinner_dropdown_item); + + mSpinner = new Spinner(mContext); + + mSpinner.setVisibility(View.INVISIBLE); + mSpinner.setAdapter(mAdapter); + mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parent, View v, int position, long id) { + setSelectedItem(position); + } + + @Override + public void onNothingSelected(AdapterView parent) { + // noop + } + }); + setPersistent(false); + setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + mSpinner.performClick(); + return true; + } + }); + } + + public void setDropDownWidth(int dimenResId) { + mSpinner.setDropDownWidth(mContext.getResources().getDimensionPixelSize(dimenResId)); + } + + public void setCallback(Callback callback) { + mCallback = callback; + } + + public void setSelectedItem(int position) { + if (mCallback != null && !mCallback.onItemSelected(position)) { + return; + } + mSpinner.setSelection(position); + setSummary(mAdapter.getItem(position)); + final boolean disableDependents = position == 0; + notifyDependencyChange(disableDependents); + } + + public void addItem(int resId) { + mAdapter.add(mContext.getResources().getString(resId)); + } + + @Override + protected void onBindView(View view) { + super.onBindView(view); + if (view.equals(mSpinner.getParent())) return; + if (mSpinner.getParent() != null) { + ((ViewGroup)mSpinner.getParent()).removeView(mSpinner); + } + final ViewGroup vg = (ViewGroup)view; + vg.addView(mSpinner, 0); + final ViewGroup.LayoutParams lp = mSpinner.getLayoutParams(); + lp.width = 0; + mSpinner.setLayoutParams(lp); + } + + public interface Callback { + boolean onItemSelected(int pos); + } +} \ No newline at end of file diff --git a/src/com/android/settings/notification/NotificationSettings.java b/src/com/android/settings/notification/NotificationSettings.java index 24863cda183..2d613e4d248 100644 --- a/src/com/android/settings/notification/NotificationSettings.java +++ b/src/com/android/settings/notification/NotificationSettings.java @@ -57,7 +57,7 @@ public class NotificationSettings extends SettingsPreferenceFragment implements private Preference mNotificationSoundPreference; private Preference mNotificationAccess; - private TwoStatePreference mLockscreenNotifications; + private DropDownPreference mLockscreenNotifications; private TwoStatePreference mHeadsUp; private TwoStatePreference mNotificationPulse; @@ -113,12 +113,24 @@ public class NotificationSettings extends SettingsPreferenceFragment implements refreshNotificationListeners(); mLockscreenNotifications - = (TwoStatePreference) root.findPreference(KEY_LOCK_SCREEN_NOTIFICATIONS); + = (DropDownPreference) root.findPreference(KEY_LOCK_SCREEN_NOTIFICATIONS); if (mLockscreenNotifications != null) { if (!getDeviceLockscreenNotificationsEnabled()) { root.removePreference(mLockscreenNotifications); } else { - mLockscreenNotifications.setChecked(getLockscreenAllowPrivateNotifications()); + mLockscreenNotifications.addItem(R.string.lock_screen_notifications_summary_show); + mLockscreenNotifications.addItem(R.string.lock_screen_notifications_summary_hide); + final int pos = getLockscreenAllowPrivateNotifications() ? 0 : 1; + mLockscreenNotifications.setSelectedItem(pos); + mLockscreenNotifications.setCallback(new DropDownPreference.Callback() { + @Override + public boolean onItemSelected(int pos) { + final int val = pos == 0 ? 1 : 0; + Settings.Secure.putInt(getContentResolver(), + Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, val); + return true; + } + }); } } @@ -164,11 +176,7 @@ public class NotificationSettings extends SettingsPreferenceFragment implements public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { final String key = preference.getKey(); - if (KEY_LOCK_SCREEN_NOTIFICATIONS.equals(key)) { - Settings.Secure.putInt(getContentResolver(), - Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, - mLockscreenNotifications.isChecked() ? 1 : 0); - } else if (KEY_HEADS_UP.equals(key)) { + if (KEY_HEADS_UP.equals(key)) { setHeadsUpMode(getContentResolver(), mHeadsUp.isChecked()); } else if (KEY_NOTIFICATION_PULSE.equals(key)) { Settings.System.putInt(getContentResolver(), diff --git a/src/com/android/settings/notification/ZenModeSettings.java b/src/com/android/settings/notification/ZenModeSettings.java index d7d25cf1087..050d2e9d87f 100644 --- a/src/com/android/settings/notification/ZenModeSettings.java +++ b/src/com/android/settings/notification/ZenModeSettings.java @@ -47,12 +47,8 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.AdapterView.OnItemSelectedListener; -import android.widget.ArrayAdapter; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; -import android.widget.Spinner; import android.widget.Switch; import android.widget.TextView; import android.widget.TimePicker; @@ -144,6 +140,7 @@ public class ZenModeSettings extends SettingsPreferenceFragment implements Index mStarred = new DropDownPreference(mContext); mStarred.setEnabled(false); mStarred.setTitle(R.string.zen_mode_from); + mStarred.setDropDownWidth(R.dimen.zen_mode_dropdown_width); mStarred.addItem(R.string.zen_mode_from_anyone); mStarred.addItem(R.string.zen_mode_from_starred); mStarred.addItem(R.string.zen_mode_from_contacts); @@ -168,6 +165,7 @@ public class ZenModeSettings extends SettingsPreferenceFragment implements Index mWhen = new DropDownPreference(mContext); mWhen.setKey(KEY_WHEN); mWhen.setTitle(R.string.zen_mode_when); + mWhen.setDropDownWidth(R.dimen.zen_mode_dropdown_width); mWhen.addItem(R.string.zen_mode_when_never); mWhen.addItem(R.string.zen_mode_when_every_night); mWhen.addItem(R.string.zen_mode_when_weeknights); @@ -462,80 +460,4 @@ public class ZenModeSettings extends SettingsPreferenceFragment implements Index boolean onSetTime(int hour, int minute); } } - - private static class DropDownPreference extends Preference { - private final Context mContext; - private final ArrayAdapter mAdapter; - private final Spinner mSpinner; - - private Callback mCallback; - - public DropDownPreference(Context context) { - super(context); - mContext = context; - mAdapter = new ArrayAdapter(mContext, - android.R.layout.simple_spinner_dropdown_item); - - mSpinner = new Spinner(mContext); - mSpinner.setDropDownWidth(mContext.getResources() - .getDimensionPixelSize(R.dimen.zen_mode_dropdown_width)); - mSpinner.setVisibility(View.INVISIBLE); - mSpinner.setAdapter(mAdapter); - mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View v, int position, long id) { - setSelectedItem(position); - } - - @Override - public void onNothingSelected(AdapterView parent) { - // noop - } - }); - setPersistent(false); - setOnPreferenceClickListener(new OnPreferenceClickListener() { - @Override - public boolean onPreferenceClick(Preference preference) { - mSpinner.performClick(); - return true; - } - }); - } - - public void setCallback(Callback callback) { - mCallback = callback; - } - - public void setSelectedItem(int position) { - if (mCallback != null && !mCallback.onItemSelected(position)) { - return; - } - mSpinner.setSelection(position); - setSummary(mAdapter.getItem(position)); - final boolean disableDependents = position == 0; - notifyDependencyChange(disableDependents); - } - - public void addItem(int resId) { - mAdapter.add(mContext.getResources().getString(resId)); - } - - @Override - protected void onBindView(View view) { - super.onBindView(view); - if (view.equals(mSpinner.getParent())) return; - if (mSpinner.getParent() != null) { - ((ViewGroup)mSpinner.getParent()).removeView(mSpinner); - } - final ViewGroup vg = (ViewGroup)view; - vg.addView(mSpinner, 0); - final ViewGroup.LayoutParams lp = mSpinner.getLayoutParams(); - lp.width = 0; - mSpinner.setLayoutParams(lp); - } - - public interface Callback { - boolean onItemSelected(int pos); - } - } }