[DllImport(Libraries.Notification, EntryPoint = "notification_get_check_box")]
internal static extern NotificationError GetCheckBox(NotificationSafeHandle handle, out bool flag, out bool checkedValue);
+ /* apis for do not disturb app */
+ internal delegate void DisturbCallback(IntPtr userData);
+
+ [DllImport(Libraries.Notification, EntryPoint = "notification_register_do_not_disturb_app")]
+ internal static extern NotificationError RegisterDndApp(DisturbCallback cb, IntPtr userData);
+
+ [DllImport(Libraries.Notification, EntryPoint = "notification_unregister_do_not_disturb_app")]
+ internal static extern NotificationError UnRegisterDndApp();
+
+ [DllImport(Libraries.Notification, EntryPoint = "notification_set_pairing_type")]
+ internal static extern NotificationError SetPairingType(NotificationSafeHandle handle, bool pairing);
+
+ [DllImport(Libraries.Notification, EntryPoint = "notification_get_pairing_type")]
+ internal static extern NotificationError GetPairingType(NotificationSafeHandle handle, out bool pairing);
+
internal static NotificationError GetText(NotificationSafeHandle handle, NotificationText type, out string text)
{
NotificationError ret;
[EditorBrowsable(EditorBrowsableState.Never)]
public bool CheckedValue { get; set; } = false;
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public bool PairingType { get; set; } = false;
+
/// <summary>
/// Gets or sets NotificationSafeHandle.
/// </summary>
{
Interop.Notification.SetCheckBox(notification.Handle, notification.CheckBox, notification.CheckedValue);
}
+
+ if (notification.PairingType == true)
+ {
+ Interop.Notification.SetPairingType(notification.Handle, notification.PairingType);
+ }
}
internal static void BindSafeHandle(Notification notification)
BindSafeHandleTag(notification);
BindSafeHandleAction(notification);
BindSafeHandleCheckBox(notification);
+ BindSafeHandlePairingType(notification);
}
private static void BindNotificationSafeHandle(Notification notification)
notification.CheckBox = checkbox;
notification.CheckedValue = checkedValue;
}
+
+ private static void BindSafeHandlePairingType(Notification notification)
+ {
+ NotificationError ret;
+ bool pairingType= false;
+
+ ret = Interop.Notification.GetPairingType(notification.Handle, out pairingType);
+ if (ret != NotificationError.None) {
+ Log.Error(Notification.LogTag, "Failed to get paring type info");
+ }
+
+ notification.PairingType = pairingType;
+ }
}
}
private static Interop.Notification.ResponseEventCallback responseEventCallback;
+ // for disturb app
+ private static event EventHandler ResponseDisturbHandler;
+ private static Interop.Notification.DisturbCallback disturbCallback;
+
private static void ResponseEventCallback(IntPtr ptr, int type, IntPtr userData)
{
IntPtr cloned;
ResponseEventHandler?.Invoke(null, eventArgs);
}
+ // for disturb app
+ private static void DisturbCallback(IntPtr userData)
+ {
+ ResponseDisturbHandler?.Invoke(null, EventArgs.Empty);
+ }
+
/// <summary>
/// The event handler for receiving a response event from the notification viewers
/// </summary>
return notification;
}
+
+ /// <summary>
+ /// The event handler to get
+ /// </summary>
+ /// <since_tizen> 12 </since_tizen>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public static event EventHandler DisturbReceived
+ {
+ add
+ {
+ if (disturbCallback == null)
+ {
+ disturbCallback = new Interop.Notification.DisturbCallback(DisturbCallback);
+ }
+
+ ResponseDisturbHandler += value;
+ }
+
+ remove
+ {
+ if (ResponseDisturbHandler != null && ResponseDisturbHandler.GetInvocationList().Length > 0)
+ {
+ NotificationError ret = Interop.Notification.UnRegisterDndApp();
+ if (ret != NotificationError.None)
+ {
+ throw NotificationErrorFactory.GetException(ret, "register do not disturb app failed");
+ }
+
+ ResponseDisturbHandler -= value;
+ }
+ }
+ }
+
+ /// <summary>
+ /// Register do not disturb app
+ /// </summary>
+ /// <since_tizen> 12 </since_tizen>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public static void RegisterDoNotDisturbApp()
+ {
+ if (ResponseDisturbHandler != null && ResponseDisturbHandler.GetInvocationList().Length > 0)
+ {
+ NotificationError ret = Interop.Notification.RegisterDndApp(disturbCallback, IntPtr.Zero);
+ if (ret != NotificationError.None)
+ {
+ throw NotificationErrorFactory.GetException(ret, "register do not disturb app failed");
+ }
+ } else {
+ throw NotificationErrorFactory.GetException(NotificationError.InvalidOperation, "Disturb callback not exist");
+ }
+ }
}
}