Settings: Migrate calls & messages priority settings.

Bug: 18635172
Change-Id: Ib5fe3bc80590875bb4a1547013ac3444939ab6fd
This commit is contained in:
John Spurlock
2015-05-05 18:31:27 -04:00
parent faadcd60e7
commit 0d2a8d204b
3 changed files with 61 additions and 68 deletions

View File

@@ -6160,17 +6160,17 @@
<!-- [CHAR LIMIT=20] Zen mode settings: Messages option --> <!-- [CHAR LIMIT=20] Zen mode settings: Messages option -->
<string name="zen_mode_messages">Messages</string> <string name="zen_mode_messages">Messages</string>
<!-- [CHAR LIMIT=50] Zen mode settings: From option --> <!-- [CHAR LIMIT=40] Zen mode settings: Calls or messages option value: From anyone -->
<string name="zen_mode_from">Calls/messages from</string> <string name="zen_mode_from_anyone">From anyone</string>
<!-- [CHAR LIMIT=30] Zen mode settings: From option value: Anyone --> <!-- [CHAR LIMIT=40] Zen mode settings: Calls or messages option value: From contacts only -->
<string name="zen_mode_from_anyone">Anyone</string> <string name="zen_mode_from_contacts">From contacts only</string>
<!-- [CHAR LIMIT=30] Zen mode settings: From option value: Contacts --> <!-- [CHAR LIMIT=40] Zen mode settings: Calls or messages option value: From starred contacts only -->
<string name="zen_mode_from_contacts">Contacts only</string> <string name="zen_mode_from_starred">From starred contacts only</string>
<!-- [CHAR LIMIT=30] Zen mode settings: From option value: Starred contacts --> <!-- [CHAR LIMIT=40] Zen mode settings: Calls or messages option value: None -->
<string name="zen_mode_from_starred">Starred contacts only</string> <string name="zen_mode_from_none">None</string>
<!-- [CHAR LIMIT=50] Zen mode settings: Alarms option --> <!-- [CHAR LIMIT=50] Zen mode settings: Alarms option -->
<string name="zen_mode_alarms">Alarms</string> <string name="zen_mode_alarms">Alarms</string>

View File

@@ -46,25 +46,15 @@
android:switchTextOn="" /> android:switchTextOn="" />
<!-- Messages --> <!-- Messages -->
<SwitchPreference <com.android.settings.DropDownPreference
android:key="messages" android:key="messages"
android:title="@string/zen_mode_messages" android:title="@string/zen_mode_messages"
android:persistent="false" android:persistent="false" />
android:switchTextOff=""
android:switchTextOn="" />
<!-- Calls --> <!-- Calls -->
<SwitchPreference <com.android.settings.DropDownPreference
android:key="calls" android:key="calls"
android:title="@string/zen_mode_calls" android:title="@string/zen_mode_calls"
android:persistent="false"
android:switchTextOff=""
android:switchTextOn="" />
<!-- Messages/calls from -->
<com.android.settings.DropDownPreference
android:key="starred"
android:title="@string/zen_mode_from"
android:persistent="false" /> android:persistent="false" />
<!-- Repeat callers --> <!-- Repeat callers -->

View File

@@ -34,15 +34,15 @@ public class ZenModePrioritySettings extends ZenModeSettingsBase implements Inde
private static final String KEY_EVENTS = "events"; private static final String KEY_EVENTS = "events";
private static final String KEY_MESSAGES = "messages"; private static final String KEY_MESSAGES = "messages";
private static final String KEY_CALLS = "calls"; private static final String KEY_CALLS = "calls";
private static final String KEY_STARRED = "starred";
private static final String KEY_REPEAT_CALLERS = "repeat_callers"; private static final String KEY_REPEAT_CALLERS = "repeat_callers";
private static final int SOURCE_NONE = -1;
private boolean mDisableListeners; private boolean mDisableListeners;
private SwitchPreference mReminders; private SwitchPreference mReminders;
private SwitchPreference mEvents; private SwitchPreference mEvents;
private SwitchPreference mMessages; private DropDownPreference mMessages;
private SwitchPreference mCalls; private DropDownPreference mCalls;
private DropDownPreference mStarred;
private SwitchPreference mRepeatCallers; private SwitchPreference mRepeatCallers;
@Override @Override
@@ -79,48 +79,46 @@ public class ZenModePrioritySettings extends ZenModeSettingsBase implements Inde
} }
}); });
mMessages = (SwitchPreference) root.findPreference(KEY_MESSAGES); mMessages = (DropDownPreference) root.findPreference(KEY_MESSAGES);
mMessages.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { addSources(mMessages);
@Override mMessages.setCallback(new DropDownPreference.Callback() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (mDisableListeners) return true;
final boolean val = (Boolean) newValue;
if (val == mConfig.allowMessages) return true;
if (DEBUG) Log.d(TAG, "onPrefChange allowMessages=" + val);
final ZenModeConfig newConfig = mConfig.copy();
newConfig.allowMessages = val;
return setZenModeConfig(newConfig);
}
});
mCalls = (SwitchPreference) root.findPreference(KEY_CALLS);
mCalls.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (mDisableListeners) return true;
final boolean val = (Boolean) newValue;
if (val == mConfig.allowCalls) return true;
if (DEBUG) Log.d(TAG, "onPrefChange allowCalls=" + val);
final ZenModeConfig newConfig = mConfig.copy();
newConfig.allowCalls = val;
return setZenModeConfig(newConfig);
}
});
mStarred = (DropDownPreference) root.findPreference(KEY_STARRED);
mStarred.addItem(R.string.zen_mode_from_anyone, ZenModeConfig.SOURCE_ANYONE);
mStarred.addItem(R.string.zen_mode_from_contacts, ZenModeConfig.SOURCE_CONTACT);
mStarred.addItem(R.string.zen_mode_from_starred, ZenModeConfig.SOURCE_STAR);
mStarred.setCallback(new DropDownPreference.Callback() {
@Override @Override
public boolean onItemSelected(int pos, Object newValue) { public boolean onItemSelected(int pos, Object newValue) {
if (mDisableListeners) return true; if (mDisableListeners) return true;
final int val = (Integer) newValue; final int val = (Integer) newValue;
if (val == mConfig.allowFrom) return true; final boolean allowMessages = val != SOURCE_NONE;
if (DEBUG) Log.d(TAG, "onPrefChange allowFrom=" + final int allowMessagesFrom = val == SOURCE_NONE ? mConfig.allowMessagesFrom : val;
ZenModeConfig.sourceToString(val)); if (allowMessages == mConfig.allowMessages
&& allowMessagesFrom == mConfig.allowMessagesFrom) {
return true;
}
if (DEBUG) Log.d(TAG, "onPrefChange allowMessages=" + allowMessages
+ " allowMessagesFrom=" + ZenModeConfig.sourceToString(allowMessagesFrom));
final ZenModeConfig newConfig = mConfig.copy(); final ZenModeConfig newConfig = mConfig.copy();
newConfig.allowFrom = val; newConfig.allowMessages = allowMessages;
newConfig.allowMessagesFrom = allowMessagesFrom;
return setZenModeConfig(newConfig);
}
});
mCalls = (DropDownPreference) root.findPreference(KEY_CALLS);
addSources(mCalls);
mCalls.setCallback(new DropDownPreference.Callback() {
@Override
public boolean onItemSelected(int pos, Object newValue) {
if (mDisableListeners) return true;
final int val = (Integer) newValue;
final boolean allowCalls = val != SOURCE_NONE;
final int allowCallsFrom = val == SOURCE_NONE ? mConfig.allowCallsFrom : val;
if (allowCalls == mConfig.allowCalls
&& allowCallsFrom == mConfig.allowCallsFrom) {
return true;
}
if (DEBUG) Log.d(TAG, "onPrefChange allowCalls=" + allowCalls
+ " allowCallsFrom=" + ZenModeConfig.sourceToString(allowCallsFrom));
final ZenModeConfig newConfig = mConfig.copy();
newConfig.allowCalls = allowCalls;
newConfig.allowCallsFrom = allowCallsFrom;
return setZenModeConfig(newConfig); return setZenModeConfig(newConfig);
} }
}); });
@@ -158,16 +156,14 @@ public class ZenModePrioritySettings extends ZenModeSettingsBase implements Inde
private void updateControls() { private void updateControls() {
mDisableListeners = true; mDisableListeners = true;
if (mCalls != null) { if (mCalls != null) {
mCalls.setChecked(mConfig.allowCalls); mCalls.setSelectedValue(mConfig.allowCalls ? mConfig.allowCallsFrom : SOURCE_NONE);
} }
mMessages.setChecked(mConfig.allowMessages); mMessages.setSelectedValue(mConfig.allowMessages ? mConfig.allowMessagesFrom : SOURCE_NONE);
mStarred.setSelectedValue(mConfig.allowFrom);
mStarred.setEnabled(mConfig.allowCalls || mConfig.allowMessages);
mReminders.setChecked(mConfig.allowReminders); mReminders.setChecked(mConfig.allowReminders);
mEvents.setChecked(mConfig.allowEvents); mEvents.setChecked(mConfig.allowEvents);
mRepeatCallers.setChecked(mConfig.allowRepeatCallers); mRepeatCallers.setChecked(mConfig.allowRepeatCallers);
mRepeatCallers.setEnabled(!mConfig.allowCalls mRepeatCallers.setEnabled(!mConfig.allowCalls
|| mConfig.allowFrom != ZenModeConfig.SOURCE_ANYONE); || mConfig.allowCallsFrom != ZenModeConfig.SOURCE_ANYONE);
mDisableListeners = false; mDisableListeners = false;
} }
@@ -176,4 +172,11 @@ public class ZenModePrioritySettings extends ZenModeSettingsBase implements Inde
return MetricsLogger.NOTIFICATION_ZEN_MODE_PRIORITY; return MetricsLogger.NOTIFICATION_ZEN_MODE_PRIORITY;
} }
private static void addSources(DropDownPreference pref) {
pref.addItem(R.string.zen_mode_from_anyone, ZenModeConfig.SOURCE_ANYONE);
pref.addItem(R.string.zen_mode_from_contacts, ZenModeConfig.SOURCE_CONTACT);
pref.addItem(R.string.zen_mode_from_starred, ZenModeConfig.SOURCE_STAR);
pref.addItem(R.string.zen_mode_from_none, SOURCE_NONE);
}
} }