diff --git a/src/Tizen.Applications.Notification/Interop/Interop.Notification.cs b/src/Tizen.Applications.Notification/Interop/Interop.Notification.cs
index 44e6f7e6e19..46988c4ce1d 100644
--- a/src/Tizen.Applications.Notification/Interop/Interop.Notification.cs
+++ b/src/Tizen.Applications.Notification/Interop/Interop.Notification.cs
@@ -238,6 +238,21 @@ internal static class Notification
[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;
diff --git a/src/Tizen.Applications.Notification/Tizen.Applications.Notifications/Notification.cs b/src/Tizen.Applications.Notification/Tizen.Applications.Notifications/Notification.cs
index 019ea0a9a7e..e5b573b2bd0 100755
--- a/src/Tizen.Applications.Notification/Tizen.Applications.Notifications/Notification.cs
+++ b/src/Tizen.Applications.Notification/Tizen.Applications.Notifications/Notification.cs
@@ -212,6 +212,9 @@ public int Count
[EditorBrowsable(EditorBrowsableState.Never)]
public bool CheckedValue { get; set; } = false;
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public bool PairingType { get; set; } = false;
+
///
/// Gets or sets NotificationSafeHandle.
///
diff --git a/src/Tizen.Applications.Notification/Tizen.Applications.Notifications/NotificationBinder.cs b/src/Tizen.Applications.Notification/Tizen.Applications.Notifications/NotificationBinder.cs
index b847e6917a3..750914b164e 100755
--- a/src/Tizen.Applications.Notification/Tizen.Applications.Notifications/NotificationBinder.cs
+++ b/src/Tizen.Applications.Notification/Tizen.Applications.Notifications/NotificationBinder.cs
@@ -62,6 +62,11 @@ internal static void BindObject(Notification notification)
{
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)
@@ -91,6 +96,7 @@ internal static void BindSafeHandle(Notification notification)
BindSafeHandleTag(notification);
BindSafeHandleAction(notification);
BindSafeHandleCheckBox(notification);
+ BindSafeHandlePairingType(notification);
}
private static void BindNotificationSafeHandle(Notification notification)
@@ -250,5 +256,18 @@ private static void BindSafeHandleCheckBox(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;
+ }
}
}
diff --git a/src/Tizen.Applications.Notification/Tizen.Applications.Notifications/NotificationManager.cs b/src/Tizen.Applications.Notification/Tizen.Applications.Notifications/NotificationManager.cs
index aadca4ec6b9..2474f7b97a0 100644
--- a/src/Tizen.Applications.Notification/Tizen.Applications.Notifications/NotificationManager.cs
+++ b/src/Tizen.Applications.Notification/Tizen.Applications.Notifications/NotificationManager.cs
@@ -29,6 +29,10 @@ public static class NotificationManager
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;
@@ -48,6 +52,12 @@ private static void ResponseEventCallback(IntPtr ptr, int type, IntPtr userData)
ResponseEventHandler?.Invoke(null, eventArgs);
}
+ // for disturb app
+ private static void DisturbCallback(IntPtr userData)
+ {
+ ResponseDisturbHandler?.Invoke(null, EventArgs.Empty);
+ }
+
///
/// The event handler for receiving a response event from the notification viewers
///
@@ -559,5 +569,56 @@ public static Notification MakeNotification(NotificationSafeHandle handle)
return notification;
}
+
+ ///
+ /// The event handler to get
+ ///
+ /// 12
+ [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;
+ }
+ }
+ }
+
+ ///
+ /// Register do not disturb app
+ ///
+ /// 12
+ [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");
+ }
+ }
}
}