Added zen settings messages and calls preferences.
- Made ZenModeSettings and ZenModeBehaviorSettings a DashboardFragment - Switches in ZenModeBehaviorSettings all have their own preference controllers - Instead of a dropdown, messages & calls have their own pages & preference controllers - Added basic turn on/off DND button in settings (dialog not yet implemented) Bug: 63077372 Fixes: 69057767 Test: make -j40 RunSettingsRoboTests Change-Id: I1c70f77053713f66f873ee578477f23cfd7985bb
This commit is contained in:
@@ -16,8 +16,6 @@
|
||||
|
||||
package com.android.settings.notification;
|
||||
|
||||
import android.app.AutomaticZenRule;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.Context;
|
||||
import android.database.ContentObserver;
|
||||
import android.net.Uri;
|
||||
@@ -26,17 +24,11 @@ import android.os.Handler;
|
||||
import android.os.UserManager;
|
||||
import android.provider.Settings;
|
||||
import android.provider.Settings.Global;
|
||||
import android.service.notification.ZenModeConfig;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.settings.RestrictedSettingsFragment;
|
||||
import com.android.settings.dashboard.RestrictedDashboardFragment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
abstract public class ZenModeSettingsBase extends RestrictedSettingsFragment {
|
||||
abstract public class ZenModeSettingsBase extends RestrictedDashboardFragment {
|
||||
protected static final String TAG = "ZenModeSettings";
|
||||
protected static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
|
||||
|
||||
@@ -44,30 +36,33 @@ abstract public class ZenModeSettingsBase extends RestrictedSettingsFragment {
|
||||
private final SettingsObserver mSettingsObserver = new SettingsObserver();
|
||||
|
||||
protected Context mContext;
|
||||
protected Set<Map.Entry<String, AutomaticZenRule>> mRules;
|
||||
protected int mZenMode;
|
||||
|
||||
abstract protected void onZenModeChanged();
|
||||
abstract protected void onZenModeConfigChanged();
|
||||
protected ZenModeBackend mBackend;
|
||||
|
||||
protected void onZenModeConfigChanged() {};
|
||||
|
||||
public ZenModeSettingsBase() {
|
||||
super(UserManager.DISALLOW_ADJUST_VOLUME);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getLogTag() {
|
||||
return TAG;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
mContext = getActivity();
|
||||
mBackend = ZenModeBackend.getInstance(mContext);
|
||||
super.onCreate(icicle);
|
||||
updateZenMode(false /*fireChanged*/);
|
||||
maybeRefreshRules(true, false /*fireChanged*/);
|
||||
if (DEBUG) Log.d(TAG, "Loaded mRules=" + mRules);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
updateZenMode(true /*fireChanged*/);
|
||||
maybeRefreshRules(true, true /*fireChanged*/);
|
||||
mSettingsObserver.register();
|
||||
if (isUiRestricted()) {
|
||||
if (isUiRestrictedByOnlyAdmin()) {
|
||||
@@ -89,56 +84,7 @@ abstract public class ZenModeSettingsBase extends RestrictedSettingsFragment {
|
||||
final int zenMode = Settings.Global.getInt(getContentResolver(), Global.ZEN_MODE, mZenMode);
|
||||
if (zenMode == mZenMode) return;
|
||||
mZenMode = zenMode;
|
||||
if (DEBUG) Log.d(TAG, "updateZenMode mZenMode=" + mZenMode);
|
||||
if (fireChanged) {
|
||||
onZenModeChanged();
|
||||
}
|
||||
}
|
||||
|
||||
protected String addZenRule(AutomaticZenRule rule) {
|
||||
try {
|
||||
String id = NotificationManager.from(mContext).addAutomaticZenRule(rule);
|
||||
final AutomaticZenRule savedRule =
|
||||
NotificationManager.from(mContext).getAutomaticZenRule(id);
|
||||
maybeRefreshRules(savedRule != null, true);
|
||||
return id;
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean setZenRule(String id, AutomaticZenRule rule) {
|
||||
final boolean success =
|
||||
NotificationManager.from(mContext).updateAutomaticZenRule(id, rule);
|
||||
maybeRefreshRules(success, true);
|
||||
return success;
|
||||
}
|
||||
|
||||
protected boolean removeZenRule(String id) {
|
||||
final boolean success =
|
||||
NotificationManager.from(mContext).removeAutomaticZenRule(id);
|
||||
maybeRefreshRules(success, true);
|
||||
return success;
|
||||
}
|
||||
|
||||
protected void maybeRefreshRules(boolean success, boolean fireChanged) {
|
||||
if (success) {
|
||||
mRules = getZenModeRules();
|
||||
if (DEBUG) Log.d(TAG, "Refreshed mRules=" + mRules);
|
||||
if (fireChanged) {
|
||||
onZenModeConfigChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void setZenMode(int zenMode, Uri conditionId) {
|
||||
NotificationManager.from(mContext).setZenMode(zenMode, conditionId, TAG);
|
||||
}
|
||||
|
||||
private Set<Map.Entry<String, AutomaticZenRule>> getZenModeRules() {
|
||||
Map<String, AutomaticZenRule> ruleMap
|
||||
= NotificationManager.from(mContext).getAutomaticZenRules();
|
||||
return ruleMap.entrySet();
|
||||
if (DEBUG) Log.d(TAG, "updateZenMode mZenMode=" + mZenMode + " " + fireChanged);
|
||||
}
|
||||
|
||||
private final class SettingsObserver extends ContentObserver {
|
||||
@@ -165,7 +111,8 @@ abstract public class ZenModeSettingsBase extends RestrictedSettingsFragment {
|
||||
updateZenMode(true /*fireChanged*/);
|
||||
}
|
||||
if (ZEN_MODE_CONFIG_ETAG_URI.equals(uri)) {
|
||||
maybeRefreshRules(true, true /*fireChanged*/);
|
||||
mBackend.updatePolicy();
|
||||
onZenModeConfigChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user