[NUI] Fixing the emtpy finalizers(CA1821)
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / WidgetView.cs
1 /*
2  * Copyright(c) 2017 Samsung Electronics Co., Ltd.
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.ComponentModel;
18
19 namespace Tizen.NUI
20 {
21     using System;
22     using System.Runtime.InteropServices;
23     using Tizen.NUI.BaseComponents;
24
25     /// <summary>
26     /// The WidgetView is a class for displaying the widget image and controlling the widget.<br />
27     /// Input events that the WidgetView gets are delivered to the widget.
28     /// </summary>
29     /// <since_tizen> 3 </since_tizen>
30     public class WidgetView : View
31     {
32         private EventHandler<WidgetViewEventArgs> _widgetAddedEventHandler;
33         private WidgetAddedEventCallbackType _widgetAddedEventCallback;
34         private EventHandler<WidgetViewEventArgs> _widgetContentUpdatedEventHandler;
35         private WidgetContentUpdatedEventCallbackType _widgetContentUpdatedEventCallback;
36         private EventHandler<WidgetViewEventArgs> _widgetDeletedEventHandler;
37         private WidgetDeletedEventCallbackType _widgetDeletedEventCallback;
38         private EventHandler<WidgetViewEventArgs> _widgetCreationAbortedEventHandler;
39         private WidgetCreationAbortedEventCallbackType _widgetCreationAbortedEventCallback;
40         private EventHandler<WidgetViewEventArgs> _widgetUpdatePeriodChangedEventHandler;
41         private WidgetUpdatePeriodChangedEventCallbackType _widgetUpdatePeriodChangedEventCallback;
42         private EventHandler<WidgetViewEventArgs> _widgetFaultedEventHandler;
43         private WidgetFaultedEventCallbackType _widgetFaultedEventCallback;
44         /// <summary>
45         /// Creates a new WidgetView.
46         /// </summary>
47         /// <since_tizen> 3 </since_tizen>
48         public WidgetView(string widgetId, string contentInfo, int width, int height, float updatePeriod) : this(Interop.WidgetView.New(widgetId, contentInfo, width, height, updatePeriod), true)
49         {
50             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
51
52         }
53
54         internal WidgetView(global::System.IntPtr cPtr, bool cMemoryOwn) : base(Interop.WidgetView.Upcast(cPtr), cMemoryOwn)
55         {
56         }
57         internal WidgetView(WidgetView handle) : this(Interop.WidgetView.NewWidgetView(WidgetView.getCPtr(handle)), true)
58         {
59             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
60         }
61
62         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
63         private delegate void WidgetAddedEventCallbackType(IntPtr data);
64         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
65         private delegate void WidgetContentUpdatedEventCallbackType(IntPtr data);
66         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
67         private delegate void WidgetDeletedEventCallbackType(IntPtr data);
68         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
69         private delegate void WidgetCreationAbortedEventCallbackType(IntPtr data);
70         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
71         private delegate void WidgetUpdatePeriodChangedEventCallbackType(IntPtr data);
72         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
73         private delegate void WidgetFaultedEventCallbackType(IntPtr data);
74
75         /// <summary>
76         /// An event for the ResourceReady signal which can be used to subscribe or unsubscribe the event handler.<br />
77         /// This signal is emitted after all resources required by a control are loaded and ready.<br />
78         /// Most resources are only loaded when the control is placed on the stage.<br />
79         /// </summary>
80         /// <since_tizen> 3 </since_tizen>
81         public event EventHandler<WidgetViewEventArgs> WidgetAdded
82         {
83             add
84             {
85                 if (_widgetAddedEventHandler == null)
86                 {
87                     _widgetAddedEventCallback = OnWidgetAdded;
88                     WidgetViewSignal widgetAdded = WidgetAddedSignal();
89                     widgetAdded?.Connect(_widgetAddedEventCallback);
90                     widgetAdded?.Dispose();
91                 }
92
93                 _widgetAddedEventHandler += value;
94             }
95
96             remove
97             {
98                 _widgetAddedEventHandler -= value;
99
100                 WidgetViewSignal widgetAdded = WidgetAddedSignal();
101                 if (_widgetAddedEventHandler == null && widgetAdded?.Empty() == false)
102                 {
103                     widgetAdded?.Disconnect(_widgetAddedEventCallback);
104                 }
105                 widgetAdded?.Dispose();
106             }
107         }
108
109         /// <summary>
110         /// An event for the ResourceReady signal which can be used to subscribe or unsubscribe the event handler.<br />
111         /// This signal is emitted after all resources required by a control are loaded and ready.<br />
112         /// Most resources are only loaded when the control is placed on the stage.<br />
113         /// </summary>
114         /// <since_tizen> 3 </since_tizen>
115         public event EventHandler<WidgetViewEventArgs> WidgetContentUpdated
116         {
117             add
118             {
119                 if (_widgetContentUpdatedEventHandler == null)
120                 {
121                     _widgetContentUpdatedEventCallback = OnWidgetContentUpdated;
122                     WidgetViewSignal widgetContentUpdated = WidgetContentUpdatedSignal();
123                     widgetContentUpdated?.Connect(_widgetContentUpdatedEventCallback);
124                     widgetContentUpdated?.Dispose();
125                 }
126
127                 _widgetContentUpdatedEventHandler += value;
128             }
129
130             remove
131             {
132                 _widgetContentUpdatedEventHandler -= value;
133
134                 WidgetViewSignal widgetContentUpdated = WidgetContentUpdatedSignal();
135                 if (_widgetContentUpdatedEventHandler == null && widgetContentUpdated?.Empty() == false)
136                 {
137                     widgetContentUpdated?.Disconnect(_widgetContentUpdatedEventCallback);
138                 }
139                 widgetContentUpdated?.Dispose();
140             }
141         }
142
143         /// <summary>
144         /// An event for the ResourceReady signal which can be used to subscribe or unsubscribe the event handler.<br />
145         /// This signal is emitted after all resources required by a control are loaded and ready.<br />
146         /// Most resources are only loaded when the control is placed on the stage.<br />
147         /// </summary>
148         /// <since_tizen> 3 </since_tizen>
149         public event EventHandler<WidgetViewEventArgs> WidgetDeleted
150         {
151             add
152             {
153                 if (_widgetDeletedEventHandler == null)
154                 {
155                     _widgetDeletedEventCallback = OnWidgetDeleted;
156                     WidgetViewSignal widgetDeleted = WidgetDeletedSignal();
157                     widgetDeleted?.Connect(_widgetDeletedEventCallback);
158                     widgetDeleted?.Dispose();
159                 }
160
161                 _widgetDeletedEventHandler += value;
162             }
163
164             remove
165             {
166                 _widgetDeletedEventHandler -= value;
167
168                 WidgetViewSignal widgetDeleted = WidgetDeletedSignal();
169                 if (_widgetDeletedEventHandler == null && widgetDeleted?.Empty() == false)
170                 {
171                     widgetDeleted?.Disconnect(_widgetDeletedEventCallback);
172                 }
173                 widgetDeleted?.Dispose();
174             }
175         }
176
177         /// <summary>
178         /// An event for the ResourceReady signal which can be used to subscribe or unsubscribe the event handler.<br />
179         /// This signal is emitted after all resources required by a control are loaded and ready.<br />
180         /// Most resources are only loaded when the control is placed on the stage.<br />
181         /// </summary>
182         /// <since_tizen> 3 </since_tizen>
183         public event EventHandler<WidgetViewEventArgs> WidgetCreationAborted
184         {
185             add
186             {
187                 if (_widgetCreationAbortedEventHandler == null)
188                 {
189                     _widgetCreationAbortedEventCallback = OnWidgetCreationAborted;
190                     WidgetViewSignal widgetCreationAborted = WidgetCreationAbortedSignal();
191                     widgetCreationAborted?.Connect(_widgetCreationAbortedEventCallback);
192                     widgetCreationAborted?.Dispose();
193                 }
194
195                 _widgetCreationAbortedEventHandler += value;
196             }
197
198             remove
199             {
200                 _widgetCreationAbortedEventHandler -= value;
201
202                 WidgetViewSignal widgetCreationAborted = WidgetCreationAbortedSignal();
203                 if (_widgetCreationAbortedEventHandler == null && widgetCreationAborted?.Empty() == false)
204                 {
205                     widgetCreationAborted?.Disconnect(_widgetCreationAbortedEventCallback);
206                 }
207                 widgetCreationAborted?.Dispose();
208             }
209         }
210
211         /// <summary>
212         /// An event for the ResourceReady signal which can be used to subscribe or unsubscribe the event handler.<br />
213         /// This signal is emitted after all resources required by a control are loaded and ready.<br />
214         /// Most resources are only loaded when the control is placed on the stage.<br />
215         /// </summary>
216         /// <since_tizen> 3 </since_tizen>
217         public event EventHandler<WidgetViewEventArgs> WidgetUpdatePeriodChanged
218         {
219             add
220             {
221                 if (_widgetUpdatePeriodChangedEventHandler == null)
222                 {
223                     _widgetUpdatePeriodChangedEventCallback = OnWidgetUpdatePeriodChanged;
224                     WidgetViewSignal widgetUpdatePeriodChanged = WidgetUpdatePeriodChangedSignal();
225                     widgetUpdatePeriodChanged?.Connect(_widgetUpdatePeriodChangedEventCallback);
226                     widgetUpdatePeriodChanged?.Dispose();
227                 }
228
229                 _widgetUpdatePeriodChangedEventHandler += value;
230             }
231
232             remove
233             {
234                 _widgetUpdatePeriodChangedEventHandler -= value;
235
236                 WidgetViewSignal widgetUpdatePeriodChanged = WidgetUpdatePeriodChangedSignal();
237                 if (_widgetUpdatePeriodChangedEventHandler == null && widgetUpdatePeriodChanged?.Empty() == false)
238                 {
239                     widgetUpdatePeriodChanged?.Disconnect(_widgetUpdatePeriodChangedEventCallback);
240                 }
241                 widgetUpdatePeriodChanged?.Dispose();
242             }
243         }
244
245         /// <summary>
246         /// An event for the ResourceReady signal which can be used to subscribe or unsubscribe the event handler.<br />
247         /// This signal is emitted after all resources required by a control are loaded and ready.<br />
248         /// Most resources are only loaded when the control is placed on the stage.<br />
249         /// </summary>
250         /// <since_tizen> 3 </since_tizen>
251         public event EventHandler<WidgetViewEventArgs> WidgetFaulted
252         {
253             add
254             {
255                 if (_widgetFaultedEventHandler == null)
256                 {
257                     _widgetFaultedEventCallback = OnWidgetFaulted;
258                     WidgetViewSignal widgetFaulted = WidgetFaultedSignal();
259                     widgetFaulted?.Connect(_widgetFaultedEventCallback);
260                     widgetFaulted?.Dispose();
261                 }
262
263                 _widgetFaultedEventHandler += value;
264             }
265
266             remove
267             {
268                 _widgetFaultedEventHandler -= value;
269
270                 WidgetViewSignal widgetFaulted = WidgetFaultedSignal();
271                 if (_widgetFaultedEventHandler == null && widgetFaulted?.Empty() == false)
272                 {
273                     widgetFaulted?.Disconnect(_widgetFaultedEventCallback);
274                 }
275                 widgetFaulted?.Dispose();
276             }
277         }
278
279         /// <summary>
280         /// Gets the ID of the widget.
281         /// </summary>
282         /// <since_tizen> 3 </since_tizen>
283         public string WidgetID
284         {
285             get
286             {
287                 string retValue = "";
288                 PropertyValue widgetId = GetProperty(WidgetView.Property.WidgetId);
289                 widgetId?.Get(out retValue);
290                 widgetId?.Dispose();
291                 return retValue;
292             }
293         }
294
295         /// <summary>
296         /// Gets the ID of the instance.
297         /// </summary>
298         /// <since_tizen> 3 </since_tizen>
299         public string InstanceID
300         {
301             get
302             {
303                 string retValue = "";
304                 PropertyValue instanceId = GetProperty(WidgetView.Property.InstanceId);
305                 instanceId?.Get(out retValue);
306                 instanceId?.Dispose();
307                 return retValue;
308             }
309         }
310
311         /// <summary>
312         /// Gets the content info.
313         /// </summary>
314         /// <since_tizen> 3 </since_tizen>
315         public string ContentInfo
316         {
317             get
318             {
319                 string retValue = "";
320                 PropertyValue contentInfo = GetProperty(WidgetView.Property.ContentInfo);
321                 contentInfo?.Get(out retValue);
322                 contentInfo?.Dispose();
323                 return retValue;
324             }
325         }
326
327         /// <summary>
328         /// Gets the title.
329         /// </summary>
330         /// <since_tizen> 3 </since_tizen>
331         public string Title
332         {
333             get
334             {
335                 string retValue = "";
336                 PropertyValue title = GetProperty(WidgetView.Property.TITLE);
337                 title?.Get(out retValue);
338                 title?.Dispose();
339                 return retValue;
340             }
341         }
342
343         /// <summary>
344         /// Gets the update peroid.
345         /// </summary>
346         /// <since_tizen> 3 </since_tizen>
347         public float UpdatePeriod
348         {
349             get
350             {
351                 float retValue = 0;
352                 PropertyValue updatePeriod = GetProperty(WidgetView.Property.UpdatePeriod);
353                 updatePeriod?.Get(out retValue);
354                 updatePeriod?.Dispose();
355                 return retValue;
356             }
357         }
358
359         /// <summary>
360         /// Gets or sets the preview.
361         /// </summary>
362         /// <since_tizen> 3 </since_tizen>
363         public bool Preview
364         {
365             get
366             {
367                 bool retValue = false;
368                 PropertyValue preview = GetProperty(WidgetView.Property.PREVIEW);
369                 preview?.Get(out retValue);
370                 preview?.Dispose();
371                 return retValue;
372             }
373             set
374             {
375                 PropertyValue setValue = new Tizen.NUI.PropertyValue(value);
376                 SetProperty(WidgetView.Property.PREVIEW, setValue);
377                 setValue?.Dispose();
378             }
379         }
380
381         /// <summary>
382         /// Gets or sets the loading text.
383         /// </summary>
384         /// <since_tizen> 3 </since_tizen>
385         public bool LoadingText
386         {
387             get
388             {
389                 bool retValue = false;
390                 PropertyValue loadingText = GetProperty(WidgetView.Property.LoadingText);
391                 loadingText?.Get(out retValue);
392                 loadingText?.Dispose();
393                 return retValue;
394             }
395             set
396             {
397                 PropertyValue setValue = new Tizen.NUI.PropertyValue(value);
398                 SetProperty(WidgetView.Property.LoadingText, setValue);
399                 setValue?.Dispose();
400             }
401         }
402
403         /// <summary>
404         /// Gets or sets whether the widget state is faulted or not.
405         /// </summary>
406         /// <since_tizen> 3 </since_tizen>
407         public bool WidgetStateFaulted
408         {
409             get
410             {
411                 bool retValue = false;
412                 PropertyValue widgetStateFaulted = GetProperty(WidgetView.Property.WidgetStateFaulted);
413                 widgetStateFaulted?.Get(out retValue);
414                 widgetStateFaulted?.Dispose();
415                 return retValue;
416             }
417             set
418             {
419                 PropertyValue setValue = new Tizen.NUI.PropertyValue(value);
420                 SetProperty(WidgetView.Property.WidgetStateFaulted, setValue);
421                 setValue?.Dispose();
422             }
423         }
424
425         /// <summary>
426         /// Gets or sets whether the widget is to delete permanently or not.
427         /// </summary>
428         /// <since_tizen> 3 </since_tizen>
429         public bool PermanentDelete
430         {
431             get
432             {
433                 bool retValue = false;
434                 PropertyValue permanentDelete = GetProperty(WidgetView.Property.PermanentDelete);
435                 permanentDelete?.Get(out retValue);
436                 permanentDelete?.Dispose();
437                 return retValue;
438             }
439             set
440             {
441                 PropertyValue setValue = new Tizen.NUI.PropertyValue(value);
442                 SetProperty(WidgetView.Property.PermanentDelete, setValue);
443                 setValue.Dispose();
444             }
445         }
446
447         /// <summary>
448         /// Gets or sets retry text.
449         /// </summary>
450         /// <since_tizen> 4 </since_tizen>
451         public PropertyMap RetryText
452         {
453             get
454             {
455                 PropertyMap retValue = new PropertyMap();
456                 PropertyValue retryText = GetProperty(WidgetView.Property.RetryText);
457                 retryText?.Get(retValue);
458                 retryText?.Dispose();
459                 return retValue;
460             }
461             set
462             {
463                 PropertyValue setValue = new Tizen.NUI.PropertyValue(value);
464                 SetProperty(WidgetView.Property.RetryText, setValue);
465                 setValue?.Dispose();
466             }
467         }
468
469         /// <summary>
470         /// Gets or sets effect.
471         /// </summary>
472         /// <since_tizen> 4 </since_tizen>
473         public PropertyMap Effect
474         {
475             get
476             {
477                 PropertyMap retValue = new PropertyMap();
478                 PropertyValue effect = GetProperty(WidgetView.Property.EFFECT);
479                 effect?.Get(retValue);
480                 effect?.Dispose();
481                 return retValue;
482             }
483             set
484             {
485                 PropertyValue setValue = new Tizen.NUI.PropertyValue(value);
486                 SetProperty(WidgetView.Property.EFFECT, setValue);
487                 setValue?.Dispose();
488             }
489         }
490
491         /// <summary>
492         /// Pauses a given widget.
493         /// </summary>
494         /// <returns>True on success, false otherwise.</returns>
495         /// <since_tizen> 3 </since_tizen>
496         public bool PauseWidget()
497         {
498             bool ret = Interop.WidgetView.PauseWidget(SwigCPtr);
499             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
500             return ret;
501         }
502
503         /// <summary>
504         /// Resumes a given widget.
505         /// </summary>
506         /// <returns>True on success, false otherwise.</returns>
507         /// <since_tizen> 3 </since_tizen>
508         public bool ResumeWidget()
509         {
510             bool ret = Interop.WidgetView.ResumeWidget(SwigCPtr);
511             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
512             return ret;
513         }
514
515         /// <summary>
516         /// Cancels the touch event procedure.
517         /// If you call this function after feed the touch down event, the widget will get ON_HOLD events.
518         ///  If a widget gets ON_HOLD event, it will not do anything even if you feed touch up event.
519         /// </summary>
520         /// <returns>True on success, false otherwise.</returns>
521         /// <since_tizen> 3 </since_tizen>
522         public bool CancelTouchEvent()
523         {
524             bool ret = Interop.WidgetView.CancelTouchEvent(SwigCPtr);
525             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
526             return ret;
527         }
528
529         /// <summary>
530         /// Activates a widget in the faulted state.
531         /// A widget in faulted state must be activated before adding the widget.
532         /// </summary>
533         /// <since_tizen> 3 </since_tizen>
534         public void ActivateFaultedWidget()
535         {
536             Interop.WidgetView.ActivateFaultedWidget(SwigCPtr);
537             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
538         }
539
540         /// <summary>
541         /// Terminate a widget instance.
542         /// </summary>
543         /// <returns>True on success, false otherwise</returns>
544         /// <since_tizen> 4 </since_tizen>
545         public bool TerminateWidget()
546         {
547             bool ret = Interop.WidgetView.TerminateWidget(SwigCPtr);
548             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
549             return ret;
550         }
551
552         internal static WidgetView DownCast(BaseHandle handle)
553         {
554             WidgetView ret = new WidgetView(Interop.WidgetView.DownCast(BaseHandle.getCPtr(handle)), true);
555             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
556             return ret;
557         }
558
559         internal static WidgetView GetWidgetViewFromPtr(global::System.IntPtr cPtr)
560         {
561             WidgetView ret = new WidgetView(cPtr, false);
562             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
563             return ret;
564         }
565
566         internal static global::System.Runtime.InteropServices.HandleRef getCPtr(WidgetView obj)
567         {
568             return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.SwigCPtr;
569         }
570
571         internal WidgetView Assign(WidgetView handle)
572         {
573             WidgetView ret = new WidgetView(Interop.WidgetView.Assign(SwigCPtr, WidgetView.getCPtr(handle)), false);
574             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
575             return ret;
576         }
577
578         internal WidgetViewSignal WidgetAddedSignal()
579         {
580             WidgetViewSignal ret = new WidgetViewSignal(Interop.WidgetView.WidgetAddedSignal(SwigCPtr), false);
581             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
582             return ret;
583         }
584
585         internal WidgetViewSignal WidgetDeletedSignal()
586         {
587             WidgetViewSignal ret = new WidgetViewSignal(Interop.WidgetView.WidgetDeletedSignal(SwigCPtr), false);
588             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
589             return ret;
590         }
591
592         internal WidgetViewSignal WidgetCreationAbortedSignal()
593         {
594             WidgetViewSignal ret = new WidgetViewSignal(Interop.WidgetView.WidgetCreationAbortedSignal(SwigCPtr), false);
595             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
596             return ret;
597         }
598
599         internal WidgetViewSignal WidgetContentUpdatedSignal()
600         {
601             WidgetViewSignal ret = new WidgetViewSignal(Interop.WidgetView.WidgetContentUpdatedSignal(SwigCPtr), false);
602             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
603             return ret;
604         }
605
606         internal WidgetViewSignal WidgetUpdatePeriodChangedSignal()
607         {
608             WidgetViewSignal ret = new WidgetViewSignal(Interop.WidgetView.WidgetUpdatePeriodChangedSignal(SwigCPtr), false);
609             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
610             return ret;
611         }
612
613         internal WidgetViewSignal WidgetFaultedSignal()
614         {
615             WidgetViewSignal ret = new WidgetViewSignal(Interop.WidgetView.WidgetFaultedSignal(SwigCPtr), false);
616             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
617             return ret;
618         }
619
620         /// <summary>
621         /// To make the Button instance be disposed.
622         /// </summary>
623         /// <since_tizen> 3 </since_tizen>
624         protected override void Dispose(DisposeTypes type)
625         {
626             if (disposed)
627             {
628                 return;
629             }
630
631             //Release your own unmanaged resources here.
632             //You should not access any managed member here except static instance.
633             //because the execution order of Finalizes is non-deterministic.
634
635             if (_widgetAddedEventCallback != null)
636             {
637                 WidgetViewSignal widgetAdded = this.WidgetAddedSignal();
638                 widgetAdded?.Disconnect(_widgetAddedEventCallback);
639                 widgetAdded?.Dispose();
640             }
641
642             if (_widgetContentUpdatedEventCallback != null)
643             {
644                 WidgetViewSignal widgetContentUpdated = this.WidgetContentUpdatedSignal();
645                 widgetContentUpdated?.Disconnect(_widgetContentUpdatedEventCallback);
646                 widgetContentUpdated?.Dispose();
647             }
648
649             if (_widgetCreationAbortedEventCallback != null)
650             {
651                 WidgetViewSignal widgetCreationAborted = this.WidgetCreationAbortedSignal();
652                 widgetCreationAborted?.Disconnect(_widgetCreationAbortedEventCallback);
653                 widgetCreationAborted?.Dispose();
654             }
655
656             if (_widgetDeletedEventCallback != null)
657             {
658                 WidgetViewSignal widgetDeleted = this.WidgetDeletedSignal();
659                 widgetDeleted?.Disconnect(_widgetDeletedEventCallback);
660                 widgetDeleted?.Dispose();
661             }
662
663             if (_widgetFaultedEventCallback != null)
664             {
665                 WidgetViewSignal widgetFaulted = this.WidgetFaultedSignal();
666                 widgetFaulted?.Disconnect(_widgetFaultedEventCallback);
667                 widgetFaulted?.Dispose();
668             }
669
670             if (_widgetUpdatePeriodChangedEventCallback != null)
671             {
672                 WidgetViewSignal widgetUpdatePeriodChanged = this.WidgetUpdatePeriodChangedSignal();
673                 widgetUpdatePeriodChanged?.Disconnect(_widgetUpdatePeriodChangedEventCallback);
674                 widgetUpdatePeriodChanged?.Dispose();
675             }
676
677             base.Dispose(type);
678         }
679
680         /// This will not be public opened.
681         [EditorBrowsable(EditorBrowsableState.Never)]
682         protected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr)
683         {
684             Interop.WidgetView.DeleteWidgetView(swigCPtr);
685         }
686
687         // Callback for WidgetView WidgetAdded signal
688         private void OnWidgetAdded(IntPtr data)
689         {
690             WidgetViewEventArgs e = new WidgetViewEventArgs();
691             if (data != null)
692             {
693                 e.WidgetView = WidgetView.GetWidgetViewFromPtr(data);
694             }
695
696             if (_widgetAddedEventHandler != null)
697             {
698                 _widgetAddedEventHandler(this, e);
699             }
700         }
701
702         // Callback for WidgetView WidgetDeleted signal
703         private void OnWidgetDeleted(IntPtr data)
704         {
705             WidgetViewEventArgs e = new WidgetViewEventArgs();
706             if (data != null)
707             {
708                 e.WidgetView = WidgetView.GetWidgetViewFromPtr(data);
709             }
710
711             if (_widgetDeletedEventHandler != null)
712             {
713                 _widgetDeletedEventHandler(this, e);
714             }
715         }
716
717         // Callback for WidgetView WidgetCreationAborted signal
718         private void OnWidgetCreationAborted(IntPtr data)
719         {
720             WidgetViewEventArgs e = new WidgetViewEventArgs();
721             if (data != null)
722             {
723                 e.WidgetView = WidgetView.GetWidgetViewFromPtr(data);
724             }
725
726             if (_widgetCreationAbortedEventHandler != null)
727             {
728                 _widgetCreationAbortedEventHandler(this, e);
729             }
730         }
731
732
733
734         // Callback for WidgetView WidgetContentUpdated signal
735         private void OnWidgetContentUpdated(IntPtr data)
736         {
737             WidgetViewEventArgs e = new WidgetViewEventArgs();
738             if (data != null)
739             {
740                 e.WidgetView = WidgetView.GetWidgetViewFromPtr(data);
741             }
742
743             if (_widgetContentUpdatedEventHandler != null)
744             {
745                 _widgetContentUpdatedEventHandler(this, e);
746             }
747         }
748
749         // Callback for WidgetView WidgetUpdatePeriodChanged signal
750         private void OnWidgetUpdatePeriodChanged(IntPtr data)
751         {
752             WidgetViewEventArgs e = new WidgetViewEventArgs();
753             if (data != null)
754             {
755                 e.WidgetView = WidgetView.GetWidgetViewFromPtr(data);
756             }
757
758             if (_widgetUpdatePeriodChangedEventHandler != null)
759             {
760                 _widgetUpdatePeriodChangedEventHandler(this, e);
761             }
762         }
763
764         // Callback for WidgetView WidgetFaulted signal
765         private void OnWidgetFaulted(IntPtr data)
766         {
767             WidgetViewEventArgs e = new WidgetViewEventArgs();
768             if (data != null)
769             {
770                 e.WidgetView = WidgetView.GetWidgetViewFromPtr(data);
771             }
772
773             if (_widgetFaultedEventHandler != null)
774             {
775                 _widgetFaultedEventHandler(this, e);
776             }
777         }
778
779         /// <summary>
780         /// Event arguments of the widget view.
781         /// </summary>
782         /// <since_tizen> 3 </since_tizen>
783         public class WidgetViewEventArgs : EventArgs
784         {
785             private WidgetView _widgetView;
786
787             /// <summary>
788             /// The widet view.
789             /// </summary>
790             /// <since_tizen> 3 </since_tizen>
791             public WidgetView WidgetView
792             {
793                 get
794                 {
795                     return _widgetView;
796                 }
797                 set
798                 {
799                     _widgetView = value;
800                 }
801             }
802         }
803
804         internal new class Property
805         {
806             internal static readonly int WidgetId = Interop.WidgetView.WidgetIdGet();
807             internal static readonly int InstanceId = Interop.WidgetView.InstanceIdGet();
808             internal static readonly int ContentInfo = Interop.WidgetView.ContentInfoGet();
809             internal static readonly int TITLE = Interop.WidgetView.TitleGet();
810             internal static readonly int UpdatePeriod = Interop.WidgetView.UpdatePeriodGet();
811             internal static readonly int PREVIEW = Interop.WidgetView.PreviewGet();
812             internal static readonly int LoadingText = Interop.WidgetView.LoadingTextGet();
813             internal static readonly int WidgetStateFaulted = Interop.WidgetView.WidgetStateFaultedGet();
814             internal static readonly int PermanentDelete = Interop.WidgetView.PermanentDeleteGet();
815             internal static readonly int RetryText = Interop.WidgetView.RetryTextGet();
816             internal static readonly int EFFECT = Interop.WidgetView.EffectGet();
817         }
818     }
819
820 }