Beispiel #1
0
        // Generates predicates from the characteristic-value map and adds them to the pending conditions.
        public void UpdatePredicates()
        {
            foreach (var kvp  in conditionValueMap)
            {
                HMCharacteristic characteristic = kvp.Key;
                NSObject         value          = kvp.Value;
                NSPredicate      predicate      = HMEventTrigger.CreatePredicateForEvaluatingTrigger(characteristic, NSPredicateOperatorType.EqualTo, value);
                AddCondition(predicate);
            }

            conditionValueMap.Clear();
        }
        public static HMLocationEvent LocationEvent(this HMEventTrigger self)
        {
            foreach (var e in self.Events)
            {
                var locationEvent = e as HMLocationEvent;
                if (locationEvent != null)
                {
                    return(locationEvent);
                }
            }

            return(null);
        }
        void SaveAndDismiss(UIBarButtonItem sender)
        {
            NSPredicate predicate = null;

            switch (timeType)
            {
            case TimeConditionType.Time:
                switch (order)
                {
                case TimeConditionOrder.Before:
                    predicate = HMEventTrigger.CreatePredicateForEvaluatingTriggerOccurringBeforeDate(dateComponents);
                    break;

                case TimeConditionOrder.After:
                    predicate = HMEventTrigger.CreatePredicateForEvaluatingTriggerOccurringAfterDate(dateComponents);
                    break;

                case TimeConditionOrder.At:
                    predicate = HMEventTrigger.CreatePredicateForEvaluatingTriggerOccurringOnDate(dateComponents);
                    break;
                }
                break;

            case TimeConditionType.Sun:
                var significantEventString = (sunState == TimeConditionSunState.Sunrise) ? HMSignificantEvent.Sunrise : HMSignificantEvent.Sunset;
                switch (order)
                {
                case TimeConditionOrder.Before:
                    predicate = HMEventTrigger.CreatePredicateForEvaluatingTriggerOccurringBeforeSignificantEvent(significantEventString, null);
                    break;

                case TimeConditionOrder.After:
                    predicate = HMEventTrigger.CreatePredicateForEvaluatingTriggerOccurringAfterSignificantEvent(significantEventString, null);
                    break;

                // Significant events must be specified 'before' or 'after'.
                case TimeConditionOrder.At:
                    break;
                }
                break;
            }
            var triggerCreator = TriggerCreator;

            if (predicate != null && triggerCreator != null)
            {
                triggerCreator.AddCondition(predicate);
            }

            DismissViewController(true, null);
        }
 public static HMCharacteristicEvent[] CharacteristicEvents(this HMEventTrigger self)
 {
     return(self.Events.OfType <HMCharacteristicEvent> ().ToArray());
 }
 // returns:  `true` if the trigger contains a location event, `false` otherwise.
 public static bool IsLocationEvent(this HMEventTrigger trigger)
 {
     return(trigger.Events.Any(e => e is HMLocationEvent));
 }