[NotificationEventListener] Add method for get all count
[platform/core/csapi/tizenfx.git] / src / Tizen.Applications.NotificationEventListener / Interop / Interop.NotificationEventListener.cs
1 /*
2  * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 using System;
18 using System.Collections.Generic;
19 using System.Runtime.InteropServices;
20
21 using Tizen.Applications;
22 using Tizen.Applications.NotificationEventListener;
23
24 internal static partial class Interop
25 {
26     internal static class NotificationEventListener
27     {
28         internal delegate void ChangedCallback(IntPtr userData, NotificationType type, IntPtr operationList, int num);
29
30         internal enum ErrorCode
31         {
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
43         }
44
45         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_free")]
46         internal static extern ErrorCode Destroy(IntPtr handle);
47
48         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_id")]
49         internal static extern ErrorCode GetID(NotificationSafeHandle handle, out int groupId, out int privateId);
50
51         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_pkgname")]
52         internal static extern ErrorCode GetAppIdReferenceType(NotificationSafeHandle handle, out IntPtr appid);
53
54         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_text")]
55         internal static extern ErrorCode GetTextReferenceType(NotificationSafeHandle handle, NotificationText type, out IntPtr text);
56
57         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_image")]
58         internal static extern ErrorCode GetImageReferenceType(NotificationSafeHandle handle, NotificationImage type, out IntPtr text);
59
60         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_insert_time")]
61         internal static extern ErrorCode GetInsertTime(NotificationSafeHandle handle, out int time);
62
63         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_time")]
64         internal static extern ErrorCode GetTime(NotificationSafeHandle handle, out int time);
65
66         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_sound")]
67         internal static extern ErrorCode GetSoundReferenceType(NotificationSafeHandle handle, out AccessoryOption type, out IntPtr path);
68
69         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_vibration")]
70         internal static extern ErrorCode GetVibrationReferenceType(NotificationSafeHandle handle, out AccessoryOption type, out IntPtr path);
71
72         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_led")]
73         internal static extern ErrorCode GetLed(NotificationSafeHandle handle, out AccessoryOption type, out int color);
74
75         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_led_time_period")]
76         internal static extern ErrorCode GetLedTime(NotificationSafeHandle handle, out int onMilliSeconds, out int offMilliSeconds);
77
78         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_tag")]
79         internal static extern ErrorCode GetTagReferenceType(NotificationSafeHandle handle, out IntPtr tag);
80
81         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_display_applist")]
82         internal static extern ErrorCode GetStyleList(NotificationSafeHandle handle, out int styleList);
83
84         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_auto_remove")]
85         internal static extern ErrorCode GetAutoRemove(NotificationSafeHandle handle, out bool autoRemove);
86
87         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_text_input_max_length")]
88         internal static extern ErrorCode GetPlaceHolderLength(NotificationSafeHandle handle, out int max);
89
90         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_launch_option")]
91         internal static extern ErrorCode GetAppControl(NotificationSafeHandle handle, LaunchOption type, out SafeAppControlHandle appControlHandle);
92
93         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_event_handler")]
94         internal static extern ErrorCode GetEventHandler(NotificationSafeHandle handle, int type, out SafeAppControlHandle appControlHandle);
95
96         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_register_detailed_changed_cb")]
97         internal static extern ErrorCode SetChangedCallback(ChangedCallback callback, IntPtr userData);
98
99         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_unregister_detailed_changed_cb")]
100         internal static extern ErrorCode UnsetChangedCallback(ChangedCallback callback);
101
102         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_op_get_data")]
103         internal static extern ErrorCode GetOperationData(IntPtr operationList, NotificationOperationDataType type, out IntPtr userData);
104
105         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_list_get_data")]
106         internal static extern IntPtr GetData(IntPtr notificationList);
107
108         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_list_get_next")]
109         internal static extern IntPtr GetNext(IntPtr notificationList);
110
111         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_delete_by_priv_id")]
112         internal static extern ErrorCode Delete(string appId, NotificationType type, int uniqueNumber);
113
114         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_clear")]
115         internal static extern ErrorCode DeleteAll(int type);
116
117         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_list")]
118         internal static extern ErrorCode GetList(NotificationType type, int count, out IntPtr notification);
119
120         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_send_event_by_priv_id")]
121         internal static extern ErrorCode SendEvent(int uniqueNumber, int evnetType);
122
123         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_layout")]
124         internal static extern ErrorCode GetLayout(NotificationSafeHandle handle, out NotificationLayout type);
125
126         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_type")]
127         internal static extern ErrorCode GetType(NotificationSafeHandle handle, out NotificationType type);
128
129         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_ongoing_value_type")]
130         internal static extern ErrorCode GetOngoingType(NotificationSafeHandle handle, out ProgressCategory category);
131
132         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_size")]
133         internal static extern ErrorCode GetProgressSize(NotificationSafeHandle handle, out double value);
134
135         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_progress")]
136         internal static extern ErrorCode GetProgress(NotificationSafeHandle handle, out double value);
137
138         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_property")]
139         internal static extern ErrorCode GetProperties(NotificationSafeHandle handle, out int flags);
140
141         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_extension_data")]
142         internal static extern ErrorCode GetExtender(NotificationSafeHandle handle, string key, out SafeBundleHandle value);
143
144         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_clone")]
145         internal static extern ErrorCode GetClone(IntPtr handle, out IntPtr value);
146
147         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_free_list")]
148         internal static extern ErrorCode NotificationListFree(IntPtr list);
149
150         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_args")]
151         internal static extern ErrorCode GetExtensionBundle(NotificationSafeHandle handle, out IntPtr args, out IntPtr groupArgs);
152
153         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_hide_timeout")]
154         internal static extern ErrorCode GetHideTimeout(NotificationSafeHandle handle, out int timeout);
155
156         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_delete_timeout")]
157         internal static extern ErrorCode GetDeleteTimeout(NotificationSafeHandle handle, out int timeout);
158
159         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_event_flag")]
160         internal static extern ErrorCode GetEventFlag(NotificationSafeHandle handle, out bool eventFlag);
161
162         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_default_button")]
163         internal static extern ErrorCode GetDefaultButton(NotificationSafeHandle handle, out int index);
164
165         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_extension_event_handler")]
166         internal static extern ErrorCode GetExtensionAction(NotificationSafeHandle handle, UserEventType type, out SafeAppControlHandle appcontrol);
167
168         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_load")]
169         internal static extern IntPtr LoadNotification(string appID, int uniqueID);
170
171         [DllImport(Libraries.NotificationEventListener, EntryPoint = "notification_get_all_count")]
172         internal static extern ErrorCode GetAllCount(NotificationType type, out int count);
173
174         internal static ErrorCode GetAppId(NotificationSafeHandle handle, out string appid)
175         {
176             ErrorCode err;
177             IntPtr ptr;
178             err = GetAppIdReferenceType(handle, out ptr);
179
180             if (ptr == IntPtr.Zero)
181             {
182                 appid = null;
183             }
184             else
185             {
186                 appid = Marshal.PtrToStringAnsi(ptr);
187             }
188
189             return err;
190         }
191
192         internal static ErrorCode GetText(NotificationSafeHandle handle, NotificationText type, out string text)
193         {
194             ErrorCode err;
195             IntPtr ptr;
196             err = GetTextReferenceType(handle, type, out ptr);
197
198             if (ptr == IntPtr.Zero)
199             {
200                 text = null;
201             }
202             else
203             {
204                 text = Marshal.PtrToStringAnsi(ptr);
205             }
206
207             return err;
208         }
209
210         internal static ErrorCode GetImage(NotificationSafeHandle handle, NotificationImage type, out string text)
211         {
212             ErrorCode err;
213             IntPtr ptr;
214             err = GetImageReferenceType(handle, type, out ptr);
215
216             if (ptr == IntPtr.Zero)
217             {
218                 text = null;
219             }
220             else
221             {
222                 text = Marshal.PtrToStringAnsi(ptr);
223             }
224
225             return err;
226         }
227
228         internal static ErrorCode GetSound(NotificationSafeHandle handle, out AccessoryOption type, out string path)
229         {
230             ErrorCode err;
231             IntPtr ptr;
232             err = GetSoundReferenceType(handle, out type, out ptr);
233
234             if (ptr == IntPtr.Zero)
235             {
236                 path = null;
237             }
238             else
239             {
240                 path = Marshal.PtrToStringAnsi(ptr);
241             }
242
243             return err;
244         }
245
246         internal static ErrorCode GetVibration(NotificationSafeHandle handle, out AccessoryOption type, out string path)
247         {
248             ErrorCode err;
249             IntPtr ptr;
250             err = GetVibrationReferenceType(handle, out type, out ptr);
251
252             if (ptr == IntPtr.Zero)
253             {
254                 path = null;
255             }
256             else
257             {
258                 path = Marshal.PtrToStringAnsi(ptr);
259             }
260
261             return err;
262         }
263
264         internal static ErrorCode GetTag(NotificationSafeHandle handle, out string tag)
265         {
266             ErrorCode err;
267             IntPtr ptr;
268             err = GetTagReferenceType(handle, out ptr);
269
270             if (ptr == IntPtr.Zero)
271             {
272                 tag = null;
273             }
274             else
275             {
276                 tag = Marshal.PtrToStringAnsi(ptr);
277             }
278
279             return err;
280         }
281
282         internal sealed class NotificationSafeHandle : SafeHandle
283         {
284             public NotificationSafeHandle()
285                 : base(IntPtr.Zero, true)
286             {
287             }
288
289             internal NotificationSafeHandle(IntPtr existingHandle, bool ownsHandle) : base(IntPtr.Zero, ownsHandle)
290             {
291                 SetHandle(existingHandle);
292             }
293
294             public override bool IsInvalid
295             {
296                 get { return this.handle == IntPtr.Zero; }
297             }
298
299             protected override bool ReleaseHandle()
300             {
301                 NotificationEventListener.Destroy(this.handle);
302                 this.SetHandle(IntPtr.Zero);
303                 return true;
304             }
305         }
306     }
307 }