| /* |
| * Copyright (C) 2014 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; |
| |
| import android.app.NotificationManager; |
| import android.app.NotificationManager.Policy; |
| import android.os.Bundle; |
| import android.support.v7.preference.Preference; |
| import android.support.v7.preference.PreferenceScreen; |
| import android.view.Menu; |
| import android.view.MenuInflater; |
| import android.view.MenuItem; |
| |
| import com.android.internal.logging.MetricsProto.MetricsEvent; |
| import com.android.settings.R; |
| import com.android.settings.SettingsActivity; |
| |
| public class ZenModeSettings extends ZenModeSettingsBase { |
| private static final String KEY_PRIORITY_SETTINGS = "priority_settings"; |
| private static final String KEY_VISUAL_SETTINGS = "visual_interruptions_settings"; |
| |
| private Preference mPrioritySettings; |
| private Preference mVisualSettings; |
| private Policy mPolicy; |
| |
| @Override |
| public void onCreate(Bundle savedInstanceState) { |
| super.onCreate(savedInstanceState); |
| |
| addPreferencesFromResource(R.xml.zen_mode_settings); |
| final PreferenceScreen root = getPreferenceScreen(); |
| |
| mPrioritySettings = root.findPreference(KEY_PRIORITY_SETTINGS); |
| mVisualSettings = root.findPreference(KEY_VISUAL_SETTINGS); |
| mPolicy = NotificationManager.from(mContext).getNotificationPolicy(); |
| } |
| |
| @Override |
| public void onResume() { |
| super.onResume(); |
| if (isUiRestricted()) { |
| return; |
| } |
| } |
| |
| @Override |
| protected int getMetricsCategory() { |
| return MetricsEvent.NOTIFICATION_ZEN_MODE; |
| } |
| |
| @Override |
| protected void onZenModeChanged() { |
| updateControls(); |
| } |
| |
| @Override |
| protected void onZenModeConfigChanged() { |
| mPolicy = NotificationManager.from(mContext).getNotificationPolicy(); |
| updateControls(); |
| } |
| |
| private void updateControls() { |
| updatePrioritySettingsSummary(); |
| updateVisualSettingsSummary(); |
| } |
| |
| private void updatePrioritySettingsSummary() { |
| String s = getResources().getString(R.string.zen_mode_alarms); |
| s = appendLowercase(s, isCategoryEnabled(mPolicy, Policy.PRIORITY_CATEGORY_REMINDERS), |
| R.string.zen_mode_reminders); |
| s = appendLowercase(s, isCategoryEnabled(mPolicy, Policy.PRIORITY_CATEGORY_EVENTS), |
| R.string.zen_mode_events); |
| if (isCategoryEnabled(mPolicy, Policy.PRIORITY_CATEGORY_MESSAGES)) { |
| if (mPolicy.priorityMessageSenders == Policy.PRIORITY_SENDERS_ANY) { |
| s = appendLowercase(s, true, R.string.zen_mode_all_messages); |
| } else { |
| s = appendLowercase(s, true, R.string.zen_mode_selected_messages); |
| } |
| } |
| if (isCategoryEnabled(mPolicy, Policy.PRIORITY_CATEGORY_CALLS)) { |
| if (mPolicy.priorityCallSenders == Policy.PRIORITY_SENDERS_ANY) { |
| s = appendLowercase(s, true, R.string.zen_mode_all_callers); |
| } else { |
| s = appendLowercase(s, true, R.string.zen_mode_selected_callers); |
| } |
| } else if (isCategoryEnabled(mPolicy, Policy.PRIORITY_CATEGORY_REPEAT_CALLERS)) { |
| s = appendLowercase(s, true, R.string.zen_mode_repeat_callers); |
| } |
| mPrioritySettings.setSummary(s); |
| } |
| |
| private void updateVisualSettingsSummary() { |
| String s = getString(R.string.zen_mode_all_visual_interruptions); |
| if (isEffectSuppressed(Policy.SUPPRESSED_EFFECT_SCREEN_ON) |
| && isEffectSuppressed(Policy.SUPPRESSED_EFFECT_SCREEN_OFF)) { |
| s = getString(R.string.zen_mode_no_visual_interruptions); |
| } else if (isEffectSuppressed(Policy.SUPPRESSED_EFFECT_SCREEN_ON)) { |
| s = getString(R.string.zen_mode_screen_on_visual_interruptions); |
| } else if (isEffectSuppressed(Policy.SUPPRESSED_EFFECT_SCREEN_OFF)) { |
| s = getString(R.string.zen_mode_screen_off_visual_interruptions); |
| } |
| mVisualSettings.setSummary(s); |
| } |
| |
| private boolean isEffectSuppressed(int effect) { |
| return (mPolicy.suppressedVisualEffects & effect) != 0; |
| } |
| |
| private boolean isCategoryEnabled(Policy policy, int categoryType) { |
| return (policy.priorityCategories & categoryType) != 0; |
| } |
| |
| private String appendLowercase(String s, boolean condition, int resId) { |
| if (condition) { |
| return getResources().getString(R.string.join_many_items_middle, s, |
| getResources().getString(resId).toLowerCase()); |
| } |
| return s; |
| } |
| |
| @Override |
| protected int getHelpResource() { |
| return R.string.help_uri_interruptions; |
| } |
| } |