use of android.service.notification.ZenModeConfig.ZenRule in project android_frameworks_base by crdroidandroid.
the class ZenModeControllerImpl method updateZenModeConfig.
private void updateZenModeConfig() {
final ZenModeConfig config = mNoMan.getZenModeConfig();
if (Objects.equals(config, mConfig))
return;
final ZenRule oldRule = mConfig != null ? mConfig.manualRule : null;
mConfig = config;
fireConfigChanged(config);
final ZenRule newRule = config != null ? config.manualRule : null;
if (Objects.equals(oldRule, newRule))
return;
fireManualRuleChanged(newRule);
}
use of android.service.notification.ZenModeConfig.ZenRule in project android_frameworks_base by crdroidandroid.
the class ZenModeConditions method evaluateConfig.
public void evaluateConfig(ZenModeConfig config, boolean processSubscriptions) {
if (config == null)
return;
if (config.manualRule != null && config.manualRule.condition != null && !config.manualRule.isTrueOrUnknown()) {
if (DEBUG)
Log.d(TAG, "evaluateConfig: clearing manual rule");
config.manualRule = null;
}
final ArraySet<Uri> current = new ArraySet<>();
evaluateRule(config.manualRule, current, processSubscriptions);
for (ZenRule automaticRule : config.automaticRules.values()) {
evaluateRule(automaticRule, current, processSubscriptions);
updateSnoozing(automaticRule);
}
synchronized (mSubscriptions) {
final int N = mSubscriptions.size();
for (int i = N - 1; i >= 0; i--) {
final Uri id = mSubscriptions.keyAt(i);
final ComponentName component = mSubscriptions.valueAt(i);
if (processSubscriptions) {
if (!current.contains(id)) {
mConditionProviders.unsubscribeIfNecessary(component, id);
mSubscriptions.removeAt(i);
}
}
}
}
mFirstEvaluation = false;
}
use of android.service.notification.ZenModeConfig.ZenRule in project android_frameworks_base by crdroidandroid.
the class ZenModeHelper method setManualZenMode.
private void setManualZenMode(int zenMode, Uri conditionId, String reason, String caller, boolean setRingerMode) {
ZenModeConfig newConfig;
synchronized (mConfig) {
if (mConfig == null)
return;
if (!Global.isValidZenMode(zenMode))
return;
if (DEBUG)
Log.d(TAG, "setManualZenMode " + Global.zenModeToString(zenMode) + " conditionId=" + conditionId + " reason=" + reason + " setRingerMode=" + setRingerMode);
newConfig = mConfig.copy();
if (zenMode == Global.ZEN_MODE_OFF) {
newConfig.manualRule = null;
for (ZenRule automaticRule : newConfig.automaticRules.values()) {
if (automaticRule.isAutomaticActive()) {
automaticRule.snoozing = true;
}
}
} else {
final ZenRule newRule = new ZenRule();
newRule.enabled = true;
newRule.zenMode = zenMode;
newRule.conditionId = conditionId;
newRule.enabler = caller;
newConfig.manualRule = newRule;
}
setConfigLocked(newConfig, reason, setRingerMode);
}
}
use of android.service.notification.ZenModeConfig.ZenRule in project android_frameworks_base by crdroidandroid.
the class ZenModeHelper method appendDefaultEventRules.
private void appendDefaultEventRules(ZenModeConfig config) {
if (config == null)
return;
final EventInfo events = new EventInfo();
// any calendar
events.calendar = null;
events.reply = EventInfo.REPLY_YES_OR_MAYBE;
final ZenRule rule = new ZenRule();
rule.enabled = false;
rule.name = mContext.getResources().getString(R.string.zen_mode_default_events_name);
rule.conditionId = ZenModeConfig.toEventConditionId(events);
rule.zenMode = Global.ZEN_MODE_ALARMS;
rule.component = EventConditionProvider.COMPONENT;
rule.id = ZenModeConfig.newRuleId();
rule.creationTime = System.currentTimeMillis();
config.automaticRules.put(rule.id, rule);
}
use of android.service.notification.ZenModeConfig.ZenRule in project android_frameworks_base by crdroidandroid.
the class ZenModeHelper method removeAutomaticZenRule.
public boolean removeAutomaticZenRule(String id, String reason) {
ZenModeConfig newConfig;
synchronized (mConfig) {
if (mConfig == null)
return false;
newConfig = mConfig.copy();
ZenRule rule = newConfig.automaticRules.get(id);
if (rule == null)
return false;
if (canManageAutomaticZenRule(rule)) {
newConfig.automaticRules.remove(id);
if (DEBUG)
Log.d(TAG, "removeZenRule zenRule=" + id + " reason=" + reason);
} else {
throw new SecurityException("Cannot delete rules not owned by your condition provider");
}
return setConfigLocked(newConfig, reason, true);
}
}
Aggregations