172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock/* 272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * Copyright (C) 2014 The Android Open Source Project 372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * 472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * Licensed under the Apache License, Version 2.0 (the "License"); 572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * you may not use this file except in compliance with the License. 672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * You may obtain a copy of the License at 772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * 872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * http://www.apache.org/licenses/LICENSE-2.0 972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * 1072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * Unless required by applicable law or agreed to in writing, software 1172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * distributed under the License is distributed on an "AS IS" BASIS, 1272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * See the License for the specific language governing permissions and 1472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * limitations under the License. 1572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock */ 1672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 174a35051565b0ce6d29313c3e4ffe19e1dde78db0John Spurlockpackage com.android.settings.notification; 1872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 1972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.content.Context; 20019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglioimport android.content.res.Resources; 2172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.os.Bundle; 22cc819a67f49ab4bfb42e51454bec54c03dd4f595John Spurlockimport android.preference.Preference; 23cc819a67f49ab4bfb42e51454bec54c03dd4f595John Spurlockimport android.preference.PreferenceScreen; 24ac1c42f5dcf43b4b7092d4d6ca0c9dbd4f9fbfdeJohn Spurlockimport android.util.SparseArray; 254a35051565b0ce6d29313c3e4ffe19e1dde78db0John Spurlock 268a963babe2e36b7a41f77b8d2598c97658196e58Chris Wrenimport com.android.internal.logging.MetricsLogger; 274a35051565b0ce6d29313c3e4ffe19e1dde78db0John Spurlockimport com.android.settings.R; 28cc819a67f49ab4bfb42e51454bec54c03dd4f595John Spurlockimport com.android.settings.search.BaseSearchIndexProvider; 29019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglioimport com.android.settings.search.Indexable; 30019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglioimport com.android.settings.search.SearchIndexableRaw; 3172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 32019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglioimport java.util.ArrayList; 33019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglioimport java.util.List; 34019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 35beff087b3ac3aae4eb120feef81274d7caeafb58John Spurlockpublic class ZenModeSettings extends ZenModeSettingsBase implements Indexable { 3648bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock private static final String KEY_PRIORITY_SETTINGS = "priority_settings"; 37d8b36835707edbeeb9c9fbc30eba855a0b6231c6John Spurlock private static final String KEY_AUTOMATION_SETTINGS = "automation_settings"; 38c9afadb04b00598f5988101681089290cf14f79cJohn Spurlock 39d8b36835707edbeeb9c9fbc30eba855a0b6231c6John Spurlock private Preference mPrioritySettings; 4007f7efba67a5f261fca31890a1b60f23021325f5John Spurlock 41b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock @Override 42b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock public void onCreate(Bundle savedInstanceState) { 43b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock super.onCreate(savedInstanceState); 44b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock 45b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock addPreferencesFromResource(R.xml.zen_mode_settings); 46b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock final PreferenceScreen root = getPreferenceScreen(); 47b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock 48b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock mPrioritySettings = root.findPreference(KEY_PRIORITY_SETTINGS); 4945fa140b8c6846b4546fdeabebf989ae9102cebbJohn Spurlock if (!isScheduleSupported(mContext)) { 50b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock removePreference(KEY_AUTOMATION_SETTINGS); 51b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock } 52b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock } 53b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock 54b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock @Override 55b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock public void onResume() { 56b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock super.onResume(); 57b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock updateControls(); 58ac1c42f5dcf43b4b7092d4d6ca0c9dbd4f9fbfdeJohn Spurlock } 59ac1c42f5dcf43b4b7092d4d6ca0c9dbd4f9fbfdeJohn Spurlock 607f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock @Override 618a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren protected int getMetricsCategory() { 628a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren return MetricsLogger.NOTIFICATION_ZEN_MODE; 638a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren } 648a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren 658a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren @Override 6648bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock protected void onZenModeChanged() { 67b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock updateControls(); 6848bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock } 6948bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock 7048bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock @Override 71b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock protected void onZenModeConfigChanged() { 72b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock updateControls(); 73b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock } 74cc819a67f49ab4bfb42e51454bec54c03dd4f595John Spurlock 75b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock private void updateControls() { 7648bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock updatePrioritySettingsSummary(); 777f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 787f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 7948bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock private void updatePrioritySettingsSummary() { 8035fba3eeafe47ccd900b3e18b6b64a16ad677462John Spurlock final boolean callers = mConfig.allowCalls || mConfig.allowRepeatCallers; 8148bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock String s = getResources().getString(R.string.zen_mode_alarms); 8248bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock s = appendLowercase(s, mConfig.allowReminders, R.string.zen_mode_reminders); 8348bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock s = appendLowercase(s, mConfig.allowEvents, R.string.zen_mode_events); 8435fba3eeafe47ccd900b3e18b6b64a16ad677462John Spurlock s = appendLowercase(s, callers, R.string.zen_mode_selected_callers); 85fcfcb5ddc49c8b4f6fb7b632a99437e8db74fab9John Spurlock s = appendLowercase(s, mConfig.allowMessages, R.string.zen_mode_selected_messages); 8648bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock mPrioritySettings.setSummary(s); 8748bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock } 8848bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock 8948bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock private String appendLowercase(String s, boolean condition, int resId) { 9048bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock if (condition) { 9148bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock return getResources().getString(R.string.join_many_items_middle, s, 9248bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock getResources().getString(resId).toLowerCase()); 9348bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock } 9448bbd5d1e414abfa7efe21d10f6848f4916d8162John Spurlock return s; 95de99ccf18b6f8810f2743b5b9fef513304d0ed4fJohn Spurlock } 96de99ccf18b6f8810f2743b5b9fef513304d0ed4fJohn Spurlock 97b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock private static SparseArray<String> allKeyTitles(Context context) { 98b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock final SparseArray<String> rt = new SparseArray<String>(); 99b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock rt.put(R.string.zen_mode_priority_settings_title, KEY_PRIORITY_SETTINGS); 100b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock rt.put(R.string.zen_mode_automation_settings_title, KEY_AUTOMATION_SETTINGS); 101b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock return rt; 102b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock } 103b47b2c3f6af650441f8069b87d0d82549913f7c5John Spurlock 10423acc2bb8af7da000d72a8c1d8c28a2792200348Jason Monk @Override 10523acc2bb8af7da000d72a8c1d8c28a2792200348Jason Monk protected int getHelpResource() { 10623acc2bb8af7da000d72a8c1d8c28a2792200348Jason Monk return R.string.help_uri_interruptions; 10723acc2bb8af7da000d72a8c1d8c28a2792200348Jason Monk } 10823acc2bb8af7da000d72a8c1d8c28a2792200348Jason Monk 109cc819a67f49ab4bfb42e51454bec54c03dd4f595John Spurlock // Enable indexing of searchable data 110cc819a67f49ab4bfb42e51454bec54c03dd4f595John Spurlock public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = 111cc819a67f49ab4bfb42e51454bec54c03dd4f595John Spurlock new BaseSearchIndexProvider() { 112f68bc6459352cf585b2cbb1c9e0c9b54e1936daaJohn Spurlock 113cc819a67f49ab4bfb42e51454bec54c03dd4f595John Spurlock @Override 114cc819a67f49ab4bfb42e51454bec54c03dd4f595John Spurlock public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) { 11557c713d1d92f64a558115e5aff212ebc54a19151John Spurlock final SparseArray<String> keyTitles = allKeyTitles(context); 11657c713d1d92f64a558115e5aff212ebc54a19151John Spurlock final int N = keyTitles.size(); 117ac1c42f5dcf43b4b7092d4d6ca0c9dbd4f9fbfdeJohn Spurlock final List<SearchIndexableRaw> result = new ArrayList<SearchIndexableRaw>(N); 118cc819a67f49ab4bfb42e51454bec54c03dd4f595John Spurlock final Resources res = context.getResources(); 119ac1c42f5dcf43b4b7092d4d6ca0c9dbd4f9fbfdeJohn Spurlock for (int i = 0; i < N; i++) { 120ac1c42f5dcf43b4b7092d4d6ca0c9dbd4f9fbfdeJohn Spurlock final SearchIndexableRaw data = new SearchIndexableRaw(context); 12157c713d1d92f64a558115e5aff212ebc54a19151John Spurlock data.key = keyTitles.valueAt(i); 12257c713d1d92f64a558115e5aff212ebc54a19151John Spurlock data.title = res.getString(keyTitles.keyAt(i)); 123ac1c42f5dcf43b4b7092d4d6ca0c9dbd4f9fbfdeJohn Spurlock data.screenTitle = res.getString(R.string.zen_mode_settings_title); 124ac1c42f5dcf43b4b7092d4d6ca0c9dbd4f9fbfdeJohn Spurlock result.add(data); 125ac1c42f5dcf43b4b7092d4d6ca0c9dbd4f9fbfdeJohn Spurlock } 126ac1c42f5dcf43b4b7092d4d6ca0c9dbd4f9fbfdeJohn Spurlock return result; 127cc819a67f49ab4bfb42e51454bec54c03dd4f595John Spurlock } 128f68bc6459352cf585b2cbb1c9e0c9b54e1936daaJohn Spurlock 129f68bc6459352cf585b2cbb1c9e0c9b54e1936daaJohn Spurlock @Override 130f68bc6459352cf585b2cbb1c9e0c9b54e1936daaJohn Spurlock public List<String> getNonIndexableKeys(Context context) { 131f68bc6459352cf585b2cbb1c9e0c9b54e1936daaJohn Spurlock final ArrayList<String> rt = new ArrayList<String>(); 13245fa140b8c6846b4546fdeabebf989ae9102cebbJohn Spurlock if (!isScheduleSupported(context)) { 133d8b36835707edbeeb9c9fbc30eba855a0b6231c6John Spurlock rt.add(KEY_AUTOMATION_SETTINGS); 134f68bc6459352cf585b2cbb1c9e0c9b54e1936daaJohn Spurlock } 135f68bc6459352cf585b2cbb1c9e0c9b54e1936daaJohn Spurlock return rt; 136f68bc6459352cf585b2cbb1c9e0c9b54e1936daaJohn Spurlock } 137cc819a67f49ab4bfb42e51454bec54c03dd4f595John Spurlock }; 13872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock} 139