/// <summary> /// Returns the notification list. /// </summary> /// <exception cref="UnauthorizedAccessException"> Thrown in case of a permission is denied.</exception> /// <exception cref="InvalidOperationException">Thrown in case of any internal error.</exception> /// <privilege>http://tizen.org/privilege/notification</privilege> /// <since_tizen> 4 </since_tizen> public static IList <NotificationEventArgs> GetList() { Interop.NotificationEventListener.ErrorCode err; IntPtr notificationList = IntPtr.Zero; IntPtr currentList = IntPtr.Zero; IList <NotificationEventArgs> list = new List <NotificationEventArgs>(); err = Interop.NotificationEventListener.GetList(NotificationType.None, -1, out notificationList); if (err != Interop.NotificationEventListener.ErrorCode.None) { throw NotificationEventListenerErrorFactory.GetException(err, "unable to get notification list"); } if (notificationList != IntPtr.Zero) { currentList = notificationList; while (currentList != IntPtr.Zero) { IntPtr notification; NotificationEventArgs eventargs = new NotificationEventArgs(); notification = Interop.NotificationEventListener.GetData(currentList); eventargs = NotificationEventArgsBinder.BindObject(notification, false); list.Add(eventargs); currentList = Interop.NotificationEventListener.GetNext(currentList); } Interop.NotificationEventListener.NotificationListFree(notificationList); } return(list); }
public static NotificationEventArgs GetNotificationEventArgs(int uniqueNumber) { if (uniqueNumber <= 0) { throw NotificationEventListenerErrorFactory.GetException(Interop.NotificationEventListener.ErrorCode.InvalidParameter, "Invalid parameter"); } IntPtr notificationPtr = Interop.NotificationEventListener.LoadNotification(null, uniqueNumber); if (notificationPtr == IntPtr.Zero) { int err = Tizen.Internals.Errors.ErrorFacts.GetLastResult(); if (err.Equals((int)Interop.NotificationEventListener.ErrorCode.DbError)) { throw NotificationEventListenerErrorFactory.GetException(Interop.NotificationEventListener.ErrorCode.InvalidParameter, "Not exist"); } else { throw NotificationEventListenerErrorFactory.GetException((Interop.NotificationEventListener.ErrorCode)err, "failed to get NotificationEventArgs"); } } NotificationEventArgs eventArgs = new NotificationEventArgs(); eventArgs = NotificationEventArgsBinder.BindObject(notificationPtr, false); return(eventArgs); }
private static void ChangedEvent(IntPtr userData, NotificationType type, IntPtr operationList, int num) { IntPtr operationType; IntPtr uniqueNumber; IntPtr notification; NotificationEventArgs eventargs; NotificationDeleteEventArgs deleteargs; for (int i = 0; i < num; i++) { uniqueNumber = IntPtr.Zero; operationType = IntPtr.Zero; notification = IntPtr.Zero; Interop.NotificationEventListener.GetOperationData(operationList + (i * Marshal.SizeOf <NotificationOperation>()), NotificationOperationDataType.Type, out operationType); Interop.NotificationEventListener.GetOperationData(operationList + (i * Marshal.SizeOf <NotificationOperation>()), NotificationOperationDataType.UniqueNumber, out uniqueNumber); Interop.NotificationEventListener.GetOperationData(operationList + (i * Marshal.SizeOf <NotificationOperation>()), NotificationOperationDataType.Notification, out notification); if (operationType == IntPtr.Zero) { Log.Error(LogTag, "unable to get operationType"); continue; } Log.Info(LogTag, "type : " + ((int)operationType).ToString()); Log.Info(LogTag, "Add : " + (AddEventHandler == null ? "0" : AddEventHandler.GetInvocationList().Length.ToString())); Log.Info(LogTag, "update: " + (UpdateEventHandler == null ? "0" : UpdateEventHandler.GetInvocationList().Length.ToString())); Log.Info(LogTag, "delete : " + (DeleteEventHandler == null ? "0" : DeleteEventHandler.GetInvocationList().Length.ToString())); switch ((int)operationType) { case (int)NotificationOperationType.Insert: if (notification != IntPtr.Zero) { try { eventargs = NotificationEventArgsBinder.BindObject(notification, false); AddEventHandler?.Invoke(null, eventargs); } catch (Exception e) { Log.Error(LogTag, e.Message); } } break; case (int)NotificationOperationType.Update: if (notification != IntPtr.Zero) { try { eventargs = NotificationEventArgsBinder.BindObject(notification, false); UpdateEventHandler?.Invoke(null, eventargs); } catch (Exception e) { Log.Error(LogTag, e.Message); } } break; case (int)NotificationOperationType.Delete: if (uniqueNumber != IntPtr.Zero) { try { deleteargs = NotificationDeleteEventArgsBinder.BindObject((int)uniqueNumber); DeleteEventHandler?.Invoke(null, deleteargs); } catch (Exception e) { Log.Error(LogTag, e.Message); } } break; default: Log.Info(LogTag, "Event : " + (int)operationType); break; } } }