2 * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 using System.Collections.Generic;
19 using System.Runtime.InteropServices;
21 using Tizen.Applications;
22 using Tizen.Applications.NotificationEventListener;
24 internal static partial class Interop
26 internal static class NotificationEventListener
28 internal delegate void ChangedCallback(IntPtr userData, NotificationType type, IntPtr operationList, int num);
30 internal enum ErrorCode
32 None = Tizen.Internals.Errors.ErrorCode.None,
33 InvalidParameter = Tizen.Internals.Errors.ErrorCode.InvalidParameter,
34 OutOfMemory = Tizen.Internals.Errors.ErrorCode.OutOfMemory,
35 IoError = Tizen.Internals.Errors.ErrorCode.IoError,
36 DbError = -0x01140000 | 0x01,
37 AlreadyExists = -0x01140000 | 0x02,
38 DBusError = -0x01140000 | 0x03,
39 DoesnotExist = -0x01140000 | 0x04,
40 ServiceError = -0x01140000 | 0x05,
41 PermissionDenied = Tizen.Internals.Errors.ErrorCode.PermissionDenied,
42 InvalidOperation = Tizen.Internals.Errors.ErrorCode.InvalidOperation
45 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_free")]
46 internal static extern ErrorCode Destroy(IntPtr handle);
48 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_id")]
49 internal static extern ErrorCode GetID(NotificationSafeHandle handle, out int groupId, out int privateId);
51 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_pkgname")]
52 internal static extern ErrorCode GetAppIdReferenceType(NotificationSafeHandle handle, out IntPtr appid);
54 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_text")]
55 internal static extern ErrorCode GetTextReferenceType(NotificationSafeHandle handle, NotificationText type, out IntPtr text);
57 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_image")]
58 internal static extern ErrorCode GetImageReferenceType(NotificationSafeHandle handle, NotificationImage type, out IntPtr text);
60 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_insert_time")]
61 internal static extern ErrorCode GetInsertTime(NotificationSafeHandle handle, out int time);
63 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_time")]
64 internal static extern ErrorCode GetTime(NotificationSafeHandle handle, out int time);
66 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_sound")]
67 internal static extern ErrorCode GetSoundReferenceType(NotificationSafeHandle handle, out AccessoryOption type, out IntPtr path);
69 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_vibration")]
70 internal static extern ErrorCode GetVibrationReferenceType(NotificationSafeHandle handle, out AccessoryOption type, out IntPtr path);
72 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_led")]
73 internal static extern ErrorCode GetLed(NotificationSafeHandle handle, out AccessoryOption type, out int color);
75 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_led_time_period")]
76 internal static extern ErrorCode GetLedTime(NotificationSafeHandle handle, out int onMilliSeconds, out int offMilliSeconds);
78 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_tag")]
79 internal static extern ErrorCode GetTagReferenceType(NotificationSafeHandle handle, out IntPtr tag);
81 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_display_applist")]
82 internal static extern ErrorCode GetStyleList(NotificationSafeHandle handle, out int styleList);
84 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_auto_remove")]
85 internal static extern ErrorCode GetAutoRemove(NotificationSafeHandle handle, out bool autoRemove);
87 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_text_input_max_length")]
88 internal static extern ErrorCode GetPlaceHolderLength(NotificationSafeHandle handle, out int max);
90 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_launch_option")]
91 internal static extern ErrorCode GetAppControl(NotificationSafeHandle handle, LaunchOption type, out SafeAppControlHandle appControlHandle);
93 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_event_handler")]
94 internal static extern ErrorCode GetEventHandler(NotificationSafeHandle handle, int type, out SafeAppControlHandle appControlHandle);
96 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_register_detailed_changed_cb")]
97 internal static extern ErrorCode SetChangedCallback(ChangedCallback callback, IntPtr userData);
99 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_unregister_detailed_changed_cb")]
100 internal static extern ErrorCode UnsetChangedCallback(ChangedCallback callback);
102 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_op_get_data")]
103 internal static extern ErrorCode GetOperationData(IntPtr operationList, NotificationOperationDataType type, out IntPtr userData);
105 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_list_get_data")]
106 internal static extern IntPtr GetData(IntPtr notificationList);
108 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_list_get_next")]
109 internal static extern IntPtr GetNext(IntPtr notificationList);
111 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_delete_by_priv_id")]
112 internal static extern ErrorCode Delete(string appId, NotificationType type, int uniqueNumber);
114 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_clear")]
115 internal static extern ErrorCode DeleteAll(int type);
117 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_list")]
118 internal static extern ErrorCode GetList(NotificationType type, int count, out IntPtr notification);
120 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_send_event_by_priv_id")]
121 internal static extern ErrorCode SendEvent(int uniqueNumber, int evnetType);
123 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_layout")]
124 internal static extern ErrorCode GetLayout(NotificationSafeHandle handle, out NotificationLayout type);
126 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_type")]
127 internal static extern ErrorCode GetType(NotificationSafeHandle handle, out NotificationType type);
129 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_ongoing_value_type")]
130 internal static extern ErrorCode GetOngoingType(NotificationSafeHandle handle, out ProgressCategory category);
132 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_size")]
133 internal static extern ErrorCode GetProgressSize(NotificationSafeHandle handle, out double value);
135 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_progress")]
136 internal static extern ErrorCode GetProgress(NotificationSafeHandle handle, out double value);
138 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_property")]
139 internal static extern ErrorCode GetProperties(NotificationSafeHandle handle, out int flags);
141 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_extention_data")]
142 internal static extern ErrorCode GetExtender(NotificationSafeHandle handle, string key, out SafeBundleHandle value);
144 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_clone")]
145 internal static extern ErrorCode GetClone(IntPtr handle, out IntPtr value);
147 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_free_list")]
148 internal static extern ErrorCode NotificationListFree(IntPtr list);
150 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_args")]
151 internal static extern ErrorCode GetExtentionBundle(NotificationSafeHandle handle, out IntPtr args, out IntPtr groupArgs);
153 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_hide_timeout")]
154 internal static extern ErrorCode GetHideTimeout(NotificationSafeHandle handle, out int timeout);
156 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_delete_timeout")]
157 internal static extern ErrorCode GetDeleteTimeout(NotificationSafeHandle handle, out int timeout);
159 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_event_flag")]
160 internal static extern ErrorCode GetEventFlag(NotificationSafeHandle handle, out bool eventFlag);
162 [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_default_button")]
163 internal static extern ErrorCode GetDefaultButton(NotificationSafeHandle handle, out int index);
165 internal static ErrorCode GetAppId(NotificationSafeHandle handle, out string appid)
169 err = GetAppIdReferenceType(handle, out ptr);
171 if (ptr == IntPtr.Zero)
177 appid = Marshal.PtrToStringAnsi(ptr);
183 internal static ErrorCode GetText(NotificationSafeHandle handle, NotificationText type, out string text)
187 err = GetTextReferenceType(handle, type, out ptr);
189 if (ptr == IntPtr.Zero)
195 text = Marshal.PtrToStringAnsi(ptr);
201 internal static ErrorCode GetImage(NotificationSafeHandle handle, NotificationImage type, out string text)
205 err = GetImageReferenceType(handle, type, out ptr);
207 if (ptr == IntPtr.Zero)
213 text = Marshal.PtrToStringAnsi(ptr);
219 internal static ErrorCode GetSound(NotificationSafeHandle handle, out AccessoryOption type, out string path)
223 err = GetSoundReferenceType(handle, out type, out ptr);
225 if (ptr == IntPtr.Zero)
231 path = Marshal.PtrToStringAnsi(ptr);
237 internal static ErrorCode GetVibration(NotificationSafeHandle handle, out AccessoryOption type, out string path)
241 err = GetVibrationReferenceType(handle, out type, out ptr);
243 if (ptr == IntPtr.Zero)
249 path = Marshal.PtrToStringAnsi(ptr);
255 internal static ErrorCode GetTag(NotificationSafeHandle handle, out string tag)
259 err = GetTagReferenceType(handle, out ptr);
261 if (ptr == IntPtr.Zero)
267 tag = Marshal.PtrToStringAnsi(ptr);
273 internal sealed class NotificationSafeHandle : SafeHandle
275 public NotificationSafeHandle()
276 : base(IntPtr.Zero, true)
280 internal NotificationSafeHandle(IntPtr existingHandle, bool ownsHandle) : base(IntPtr.Zero, ownsHandle)
282 SetHandle(existingHandle);
285 public override bool IsInvalid
287 get { return this.handle == IntPtr.Zero; }
290 protected override bool ReleaseHandle()
292 NotificationEventListener.Destroy(this.handle);
293 this.SetHandle(IntPtr.Zero);