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); }
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); }
public AppleNotificationEventArgs(NotificationSourceData source, NotificationAttributeCollection notificationAttributes) { NotificationSource = source; NotificationAttributes = notificationAttributes; }