Change SafeHandle naming in NotificationEventListener
[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_extention_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 GetExtentionBundle(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         internal static ErrorCode GetAppId(NotificationSafeHandle handle, out string appid)
163         {
164             ErrorCode err;
165             IntPtr ptr;
166             err = GetAppIdReferenceType(handle, out ptr);
167
168             if (ptr == IntPtr.Zero)
169             {
170                 appid = null;
171             }
172             else
173             {
174                 appid = Marshal.PtrToStringAnsi(ptr);
175             }
176
177             return err;
178         }
179
180         internal static ErrorCode GetText(NotificationSafeHandle handle, NotificationText type, out string text)
181         {
182             ErrorCode err;
183             IntPtr ptr;
184             err = GetTextReferenceType(handle, type, out ptr);
185
186             if (ptr == IntPtr.Zero)
187             {
188                 text = null;
189             }
190             else
191             {
192                 text = Marshal.PtrToStringAnsi(ptr);
193             }
194
195             return err;
196         }
197
198         internal static ErrorCode GetImage(NotificationSafeHandle handle, NotificationImage type, out string text)
199         {
200             ErrorCode err;
201             IntPtr ptr;
202             err = GetImageReferenceType(handle, type, out ptr);
203
204             if (ptr == IntPtr.Zero)
205             {
206                 text = null;
207             }
208             else
209             {
210                 text = Marshal.PtrToStringAnsi(ptr);
211             }
212
213             return err;
214         }
215
216         internal static ErrorCode GetSound(NotificationSafeHandle handle, out AccessoryOption type, out string path)
217         {
218             ErrorCode err;
219             IntPtr ptr;
220             err = GetSoundReferenceType(handle, out type, out ptr);
221
222             if (ptr == IntPtr.Zero)
223             {
224                 path = null;
225             }
226             else
227             {
228                 path = Marshal.PtrToStringAnsi(ptr);
229             }
230
231             return err;
232         }
233
234         internal static ErrorCode GetVibration(NotificationSafeHandle handle, out AccessoryOption type, out string path)
235         {
236             ErrorCode err;
237             IntPtr ptr;
238             err = GetVibrationReferenceType(handle, out type, out ptr);
239
240             if (ptr == IntPtr.Zero)
241             {
242                 path = null;
243             }
244             else
245             {
246                 path = Marshal.PtrToStringAnsi(ptr);
247             }
248
249             return err;
250         }
251
252         internal static ErrorCode GetTag(NotificationSafeHandle handle, out string tag)
253         {
254             ErrorCode err;
255             IntPtr ptr;
256             err = GetTagReferenceType(handle, out ptr);
257
258             if (ptr == IntPtr.Zero)
259             {
260                 tag = null;
261             }
262             else
263             {
264                 tag = Marshal.PtrToStringAnsi(ptr);
265             }
266
267             return err;
268         }
269
270         internal sealed class NotificationSafeHandle : SafeHandle
271         {
272             public NotificationSafeHandle()
273                 : base(IntPtr.Zero, true)
274             {
275             }
276
277             internal NotificationSafeHandle(IntPtr existingHandle, bool ownsHandle) : base(IntPtr.Zero, ownsHandle)
278             {
279                 SetHandle(existingHandle);
280             }
281
282             public override bool IsInvalid
283             {
284                 get { return this.handle == IntPtr.Zero; }
285             }
286
287             protected override bool ReleaseHandle()
288             {
289                 NotificationEventListener.Destroy(this.handle);
290                 this.SetHandle(IntPtr.Zero);
291                 return true;
292             }
293         }
294     }
295 }