コード例 #1
0
        private async void DataSource_NotificationAttributesReceived(NotificationAttributeCollection attributes)
        {
            // Is it a known notification?
            if (Notifications.ContainsKey(attributes.NotificationUID) == false)
            {
                return;
            }

            ApplicationAttributeCollection applicationAttributes;

            if (attributes.ContainsKey(NotificationAttributeID.AppIdentifier))
            {
                string appIdentifier = attributes[NotificationAttributeID.AppIdentifier];

                if (Applications.ContainsKey(appIdentifier) == false)
                {
                    // Enque notifications
                    if (ApplicationNotificationQueue.ContainsKey(appIdentifier) == false)
                    {
                        ApplicationNotificationQueue.Add(appIdentifier, new Queue <NotificationAttributeCollection>());
                    }
                    ApplicationNotificationQueue[appIdentifier].Enqueue(attributes);

                    List <AppAttributeID> requestAppAttributes = new List <AppAttributeID>();
                    requestAppAttributes.Add(AppAttributeID.DisplayName);

                    try
                    {
                        var commStatus = await ControlPoint.GetAppAttributesAsync(attributes[NotificationAttributeID.AppIdentifier], requestAppAttributes);
                    }
                    catch (Exception e)
                    {
                        System.Diagnostics.Debug.WriteLine("Bad get app attributes request");
                    }
                    return;
                }

                applicationAttributes = Applications[appIdentifier];
            }

            RaiseNotificationEvent(attributes);
        }
コード例 #2
0
        private void RaiseNotificationEvent(NotificationAttributeCollection attributes)
        {
            NotificationSourceData sourceData = Notifications[attributes.NotificationUID];

            switch (sourceData.EventId)
            {
            case EventID.NotificationAdded:
                NotificationAdded?.Invoke(this, new AppleNotificationEventArgs(sourceData, attributes));
                break;

            case EventID.NotificationModified:
                NotificationModified?.Invoke(this, new AppleNotificationEventArgs(sourceData, attributes));
                break;

            case EventID.NotificationRemoved:
                // Has been handled, but just in case..
                NotificationRemoved?.Invoke(this, sourceData);
                break;
            }

            // Remove the notification from the list
            Notifications.Remove(sourceData.NotificationUID);
        }
コード例 #3
0
 public AppleNotificationEventArgs(NotificationSourceData source, NotificationAttributeCollection notificationAttributes)
 {
     NotificationSource     = source;
     NotificationAttributes = notificationAttributes;
 }