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