From: sukhyungkang <35091460+sukhyungkang@users.noreply.github.com> Date: Mon, 7 Oct 2024 00:48:31 +0000 (+0900) Subject: [Notification] Add PairingType for do not disturb app (#6391) X-Git-Tag: submit/tizen/20241007.150911~1^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=24f7eeb3d84e7f5ce02575a9c139547bd147867f;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git [Notification] Add PairingType for do not disturb app (#6391) Signed-off-by: SukhyungKang Co-authored-by: pjh9216 --- diff --git a/src/Tizen.Applications.Notification/Interop/Interop.Notification.cs b/src/Tizen.Applications.Notification/Interop/Interop.Notification.cs index 44e6f7e6e..46988c4ce 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 partial class Interop [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 019ea0a9a..e5b573b2b 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 @@ namespace Tizen.Applications.Notifications [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 b847e6917..750914b16 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 @@ namespace Tizen.Applications.Notifications { 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 @@ namespace Tizen.Applications.Notifications BindSafeHandleTag(notification); BindSafeHandleAction(notification); BindSafeHandleCheckBox(notification); + BindSafeHandlePairingType(notification); } private static void BindNotificationSafeHandle(Notification notification) @@ -250,5 +256,18 @@ namespace Tizen.Applications.Notifications 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 aadca4ec6..2474f7b97 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 @@ namespace Tizen.Applications.Notifications 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 @@ namespace Tizen.Applications.Notifications 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 @@ namespace Tizen.Applications.Notifications 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"); + } + } } }