Search in sources :

Example 6 with EventInfo

use of android.service.notification.ZenModeConfig.EventInfo in project android_frameworks_base by DirtyUnicorns.

the class EventConditionProvider method evaluateSubscriptionsW.

private void evaluateSubscriptionsW() {
    if (DEBUG)
        Slog.d(TAG, "evaluateSubscriptions");
    if (!mBootComplete) {
        if (DEBUG)
            Slog.d(TAG, "Skipping evaluate before boot complete");
        return;
    }
    final long now = System.currentTimeMillis();
    List<Condition> conditionsToNotify = new ArrayList<>();
    synchronized (mSubscriptions) {
        for (int i = 0; i < mTrackers.size(); i++) {
            mTrackers.valueAt(i).setCallback(mSubscriptions.isEmpty() ? null : mTrackerCallback);
        }
        setRegistered(!mSubscriptions.isEmpty());
        long reevaluateAt = 0;
        for (Uri conditionId : mSubscriptions) {
            final EventInfo event = ZenModeConfig.tryParseEventConditionId(conditionId);
            if (event == null) {
                conditionsToNotify.add(createCondition(conditionId, Condition.STATE_FALSE));
                continue;
            }
            CheckEventResult result = null;
            if (event.calendar == null) {
                // event could exist on any tracker
                for (int i = 0; i < mTrackers.size(); i++) {
                    final CalendarTracker tracker = mTrackers.valueAt(i);
                    final CheckEventResult r = tracker.checkEvent(event, now);
                    if (result == null) {
                        result = r;
                    } else {
                        result.inEvent |= r.inEvent;
                        result.recheckAt = Math.min(result.recheckAt, r.recheckAt);
                    }
                }
            } else {
                // event should exist on one tracker
                final int userId = EventInfo.resolveUserId(event.userId);
                final CalendarTracker tracker = mTrackers.get(userId);
                if (tracker == null) {
                    Slog.w(TAG, "No calendar tracker found for user " + userId);
                    conditionsToNotify.add(createCondition(conditionId, Condition.STATE_FALSE));
                    continue;
                }
                result = tracker.checkEvent(event, now);
            }
            if (result.recheckAt != 0 && (reevaluateAt == 0 || result.recheckAt < reevaluateAt)) {
                reevaluateAt = result.recheckAt;
            }
            if (!result.inEvent) {
                conditionsToNotify.add(createCondition(conditionId, Condition.STATE_FALSE));
                continue;
            }
            conditionsToNotify.add(createCondition(conditionId, Condition.STATE_TRUE));
        }
        rescheduleAlarm(now, reevaluateAt);
    }
    for (Condition condition : conditionsToNotify) {
        if (condition != null) {
            notifyCondition(condition);
        }
    }
    if (DEBUG)
        Slog.d(TAG, "evaluateSubscriptions took " + (System.currentTimeMillis() - now));
}
Also used : Condition(android.service.notification.Condition) EventInfo(android.service.notification.ZenModeConfig.EventInfo) ArrayList(java.util.ArrayList) Uri(android.net.Uri) CheckEventResult(com.android.server.notification.CalendarTracker.CheckEventResult)

Example 7 with EventInfo

use of android.service.notification.ZenModeConfig.EventInfo in project android_frameworks_base by ResurrectionRemix.

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);
}
Also used : AutomaticZenRule(android.app.AutomaticZenRule) ZenRule(android.service.notification.ZenModeConfig.ZenRule) EventInfo(android.service.notification.ZenModeConfig.EventInfo)

Example 8 with EventInfo

use of android.service.notification.ZenModeConfig.EventInfo in project android_frameworks_base by ResurrectionRemix.

the class EventConditionProvider method evaluateSubscriptionsW.

private void evaluateSubscriptionsW() {
    if (DEBUG)
        Slog.d(TAG, "evaluateSubscriptions");
    if (!mBootComplete) {
        if (DEBUG)
            Slog.d(TAG, "Skipping evaluate before boot complete");
        return;
    }
    final long now = System.currentTimeMillis();
    List<Condition> conditionsToNotify = new ArrayList<>();
    synchronized (mSubscriptions) {
        for (int i = 0; i < mTrackers.size(); i++) {
            mTrackers.valueAt(i).setCallback(mSubscriptions.isEmpty() ? null : mTrackerCallback);
        }
        setRegistered(!mSubscriptions.isEmpty());
        long reevaluateAt = 0;
        for (Uri conditionId : mSubscriptions) {
            final EventInfo event = ZenModeConfig.tryParseEventConditionId(conditionId);
            if (event == null) {
                conditionsToNotify.add(createCondition(conditionId, Condition.STATE_FALSE));
                continue;
            }
            CheckEventResult result = null;
            if (event.calendar == null) {
                // event could exist on any tracker
                for (int i = 0; i < mTrackers.size(); i++) {
                    final CalendarTracker tracker = mTrackers.valueAt(i);
                    final CheckEventResult r = tracker.checkEvent(event, now);
                    if (result == null) {
                        result = r;
                    } else {
                        result.inEvent |= r.inEvent;
                        result.recheckAt = Math.min(result.recheckAt, r.recheckAt);
                    }
                }
            } else {
                // event should exist on one tracker
                final int userId = EventInfo.resolveUserId(event.userId);
                final CalendarTracker tracker = mTrackers.get(userId);
                if (tracker == null) {
                    Slog.w(TAG, "No calendar tracker found for user " + userId);
                    conditionsToNotify.add(createCondition(conditionId, Condition.STATE_FALSE));
                    continue;
                }
                result = tracker.checkEvent(event, now);
            }
            if (result.recheckAt != 0 && (reevaluateAt == 0 || result.recheckAt < reevaluateAt)) {
                reevaluateAt = result.recheckAt;
            }
            if (!result.inEvent) {
                conditionsToNotify.add(createCondition(conditionId, Condition.STATE_FALSE));
                continue;
            }
            conditionsToNotify.add(createCondition(conditionId, Condition.STATE_TRUE));
        }
        rescheduleAlarm(now, reevaluateAt);
    }
    for (Condition condition : conditionsToNotify) {
        if (condition != null) {
            notifyCondition(condition);
        }
    }
    if (DEBUG)
        Slog.d(TAG, "evaluateSubscriptions took " + (System.currentTimeMillis() - now));
}
Also used : Condition(android.service.notification.Condition) EventInfo(android.service.notification.ZenModeConfig.EventInfo) ArrayList(java.util.ArrayList) Uri(android.net.Uri) CheckEventResult(com.android.server.notification.CalendarTracker.CheckEventResult)

Example 9 with EventInfo

use of android.service.notification.ZenModeConfig.EventInfo in project android_frameworks_base by crdroidandroid.

the class EventConditionProvider method evaluateSubscriptionsW.

private void evaluateSubscriptionsW() {
    if (DEBUG)
        Slog.d(TAG, "evaluateSubscriptions");
    if (!mBootComplete) {
        if (DEBUG)
            Slog.d(TAG, "Skipping evaluate before boot complete");
        return;
    }
    final long now = System.currentTimeMillis();
    List<Condition> conditionsToNotify = new ArrayList<>();
    synchronized (mSubscriptions) {
        for (int i = 0; i < mTrackers.size(); i++) {
            mTrackers.valueAt(i).setCallback(mSubscriptions.isEmpty() ? null : mTrackerCallback);
        }
        setRegistered(!mSubscriptions.isEmpty());
        long reevaluateAt = 0;
        for (Uri conditionId : mSubscriptions) {
            final EventInfo event = ZenModeConfig.tryParseEventConditionId(conditionId);
            if (event == null) {
                conditionsToNotify.add(createCondition(conditionId, Condition.STATE_FALSE));
                continue;
            }
            CheckEventResult result = null;
            if (event.calendar == null) {
                // event could exist on any tracker
                for (int i = 0; i < mTrackers.size(); i++) {
                    final CalendarTracker tracker = mTrackers.valueAt(i);
                    final CheckEventResult r = tracker.checkEvent(event, now);
                    if (result == null) {
                        result = r;
                    } else {
                        result.inEvent |= r.inEvent;
                        result.recheckAt = Math.min(result.recheckAt, r.recheckAt);
                    }
                }
            } else {
                // event should exist on one tracker
                final int userId = EventInfo.resolveUserId(event.userId);
                final CalendarTracker tracker = mTrackers.get(userId);
                if (tracker == null) {
                    Slog.w(TAG, "No calendar tracker found for user " + userId);
                    conditionsToNotify.add(createCondition(conditionId, Condition.STATE_FALSE));
                    continue;
                }
                result = tracker.checkEvent(event, now);
            }
            if (result.recheckAt != 0 && (reevaluateAt == 0 || result.recheckAt < reevaluateAt)) {
                reevaluateAt = result.recheckAt;
            }
            if (!result.inEvent) {
                conditionsToNotify.add(createCondition(conditionId, Condition.STATE_FALSE));
                continue;
            }
            conditionsToNotify.add(createCondition(conditionId, Condition.STATE_TRUE));
        }
        rescheduleAlarm(now, reevaluateAt);
    }
    for (Condition condition : conditionsToNotify) {
        if (condition != null) {
            notifyCondition(condition);
        }
    }
    if (DEBUG)
        Slog.d(TAG, "evaluateSubscriptions took " + (System.currentTimeMillis() - now));
}
Also used : Condition(android.service.notification.Condition) EventInfo(android.service.notification.ZenModeConfig.EventInfo) ArrayList(java.util.ArrayList) Uri(android.net.Uri) CheckEventResult(com.android.server.notification.CalendarTracker.CheckEventResult)

Example 10 with EventInfo

use of android.service.notification.ZenModeConfig.EventInfo 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);
}
Also used : AutomaticZenRule(android.app.AutomaticZenRule) ZenRule(android.service.notification.ZenModeConfig.ZenRule) EventInfo(android.service.notification.ZenModeConfig.EventInfo)

Aggregations

EventInfo (android.service.notification.ZenModeConfig.EventInfo)10 AutomaticZenRule (android.app.AutomaticZenRule)5 Uri (android.net.Uri)5 Condition (android.service.notification.Condition)5 ZenRule (android.service.notification.ZenModeConfig.ZenRule)5 CheckEventResult (com.android.server.notification.CalendarTracker.CheckEventResult)5 ArrayList (java.util.ArrayList)5