2 * Copyright(c) 2017 Samsung Electronics Co., Ltd.
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.Runtime.InteropServices;
19 using Tizen.Applications;
24 /// Widget object should be created by WidgetApplication.
26 public class Widget : BaseHandle
28 private global::System.Runtime.InteropServices.HandleRef swigCPtr;
30 internal Widget(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicManualPINVOKE.Widget_SWIGUpcast(cPtr), cMemoryOwn)
32 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
35 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(Widget obj)
37 return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
41 /// To make Widget instance be disposed.
43 protected override void Dispose(DisposeTypes type)
50 if(type == DisposeTypes.Explicit)
53 //Release your own managed resources here.
54 //You should release all of your own disposable objects here.
57 //Release your own unmanaged resources here.
58 //You should not access any managed member here except static instance.
59 //because the execution order of Finalizes is non-deterministic.
61 if (swigCPtr.Handle != global::System.IntPtr.Zero)
66 NDalicManualPINVOKE.delete_Widget(swigCPtr);
68 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
75 /// This is the constructor for Widget.
77 /// <param name="id">for widget instance</param>
78 /// <since_tizen> 4 </since_tizen>
79 public Widget(string id) : this(NDalicManualPINVOKE.Widget_New(id), true)
81 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
84 internal Widget(Widget widget) : this(NDalicManualPINVOKE.new_Widget__SWIG_1(Widget.getCPtr(widget)), true)
86 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
89 internal Widget Assign(Widget widget)
91 Widget ret = new Widget(NDalicManualPINVOKE.Widget_Assign(swigCPtr, Widget.getCPtr(widget)), false);
92 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
97 /// Event arguments that passed via KeyEvent signal.
99 public class CreateEventArgs : EventArgs
104 /// <since_tizen> 4 </since_tizen>
105 public WidgetData WidgetData
114 /// <since_tizen> 4 </since_tizen>
115 public SWIGTYPE_p_bundle Bundle
124 /// <since_tizen> 4 </since_tizen>
125 public Size2D WindowSize
132 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
133 private delegate void CreateCallbackType(IntPtr widgetData, IntPtr bundle, IntPtr windowSize);
134 private CreateCallbackType _createCallback;
135 private EventHandler<CreateEventArgs> _createEventHandler;
140 /// <since_tizen> 4 </since_tizen>
141 public event EventHandler<CreateEventArgs> Create
145 if (_createEventHandler == null)
147 _createCallback = OnCreate;
148 CreateSignal().Connect(_createCallback);
151 _createEventHandler += value;
156 _createEventHandler -= value;
158 if (_createEventHandler == null && CreateSignal().Empty() == false)
160 CreateSignal().Disconnect(_createCallback);
165 private void OnCreate(IntPtr widgetData, IntPtr bundle, IntPtr windowSize)
167 CreateEventArgs e = new CreateEventArgs();
168 if (widgetData != null)
170 e.WidgetData = WidgetData.GetWidgetDataFromPtr(widgetData);
174 e.Bundle = new SWIGTYPE_p_bundle(bundle, false);
176 if (windowSize != null)
178 var val = new Uint16Pair(windowSize, false);
183 _createEventHandler?.Invoke(this, e);
186 internal WidgetInstanceCreateSignalType CreateSignal()
188 WidgetInstanceCreateSignalType ret = new WidgetInstanceCreateSignalType(NDalicManualPINVOKE.Widget_CreateSignal(swigCPtr), false);
189 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
194 /// Event arguments that passed via terminate event signal.
196 public class TerminateEventArgs : EventArgs
201 /// <since_tizen> 4 </since_tizen>
202 public WidgetData WidgetData
211 /// <since_tizen> 4 </since_tizen>
212 public SWIGTYPE_p_bundle Bundle
219 /// widget terminate type.
221 /// <since_tizen> 4 </since_tizen>
222 public WidgetTerminateType WidgetTerminateType
229 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
230 private delegate void TerminateCallbackType(IntPtr widgetData, IntPtr bundle, WidgetTerminateType widgetTerminateType);
231 private TerminateCallbackType _terminateCallback;
232 private EventHandler<TerminateEventArgs> _terminateEventHandler;
237 /// <since_tizen> 4 </since_tizen>
238 public event EventHandler<TerminateEventArgs> Terminate
242 if (_terminateEventHandler == null)
244 _terminateCallback = OnTerminate;
245 TerminateSignal().Connect(_terminateCallback);
248 _terminateEventHandler += value;
253 _terminateEventHandler -= value;
255 if (_terminateEventHandler == null && TerminateSignal().Empty() == false)
257 TerminateSignal().Disconnect(_terminateCallback);
262 private void OnTerminate(IntPtr widgetData, IntPtr bundle, WidgetTerminateType widgetTerminateType)
264 TerminateEventArgs e = new TerminateEventArgs();
265 if (widgetData != null)
267 e.WidgetData = WidgetData.GetWidgetDataFromPtr(widgetData);
271 e.Bundle = new SWIGTYPE_p_bundle(bundle, false);
274 e.WidgetTerminateType = widgetTerminateType;
275 _terminateEventHandler?.Invoke(this, e);
278 internal WidgetInstanceTerminateSignalType TerminateSignal()
280 WidgetInstanceTerminateSignalType ret = new WidgetInstanceTerminateSignalType(NDalicManualPINVOKE.Widget_TerminateSignal(swigCPtr), false);
281 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
286 /// Event arguments that passed via pause event signal.
288 public class PauseEventArgs : EventArgs
293 /// <since_tizen> 4 </since_tizen>
294 public WidgetData WidgetData
301 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
302 private delegate void PauseCallbackType(IntPtr widgetData);
303 private PauseCallbackType _pauseCallback;
304 private EventHandler<PauseEventArgs> _pauseEventHandler;
309 /// <since_tizen> 4 </since_tizen>
310 public event EventHandler<PauseEventArgs> Pause
314 if (_pauseEventHandler == null)
316 _pauseCallback = OnPause;
317 PauseSignal().Connect(_pauseCallback);
320 _pauseEventHandler += value;
325 _pauseEventHandler -= value;
327 if (_pauseEventHandler == null && PauseSignal().Empty() == false)
329 PauseSignal().Disconnect(_pauseCallback);
334 private void OnPause(IntPtr widgetData)
336 PauseEventArgs e = new PauseEventArgs();
337 if (widgetData != null)
339 e.WidgetData = WidgetData.GetWidgetDataFromPtr(widgetData);
342 _pauseEventHandler?.Invoke(this, e);
345 internal WidgetInstancePauseOrResumeSignalType PauseSignal()
347 WidgetInstancePauseOrResumeSignalType ret = new WidgetInstancePauseOrResumeSignalType(NDalicManualPINVOKE.Widget_PauseSignal(swigCPtr), false);
348 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
353 /// Event arguments that passed via pause event signal.
355 public class ResumeEventArgs : EventArgs
360 /// <since_tizen> 4 </since_tizen>
361 public WidgetData WidgetData
368 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
369 private delegate void ResumeCallbackType(IntPtr widgetData);
370 private ResumeCallbackType _resumeCallback;
371 private EventHandler<ResumeEventArgs> _resumeEventHandler;
376 /// <since_tizen> 4 </since_tizen>
377 public event EventHandler<ResumeEventArgs> Resume
381 if (_resumeEventHandler == null)
383 _resumeCallback = OnResume;
384 ResumeSignal().Connect(_resumeCallback);
387 _resumeEventHandler += value;
392 _resumeEventHandler -= value;
394 if (_resumeEventHandler == null && ResumeSignal().Empty() == false)
396 ResumeSignal().Disconnect(_resumeCallback);
401 private void OnResume(IntPtr widgetData)
403 ResumeEventArgs e = new ResumeEventArgs();
404 if (widgetData != null)
406 e.WidgetData = WidgetData.GetWidgetDataFromPtr(widgetData);
409 _resumeEventHandler?.Invoke(this, e);
412 internal WidgetInstancePauseOrResumeSignalType ResumeSignal()
414 WidgetInstancePauseOrResumeSignalType ret = new WidgetInstancePauseOrResumeSignalType(NDalicManualPINVOKE.Widget_ResumeSignal(swigCPtr), false);
415 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
420 /// Event arguments that passed via resize signal.
422 public class ResizeEventArgs : EventArgs
427 /// <since_tizen> 4 </since_tizen>
428 public WidgetData WidgetData
437 /// <since_tizen> 4 </since_tizen>
438 public Size2D WindowSize
445 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
446 private delegate void ResizeCallbackType(IntPtr widgetData, IntPtr windowSize);
447 private ResizeCallbackType _resizeCallback;
448 private EventHandler<ResizeEventArgs> _resizeEventHandler;
453 /// <since_tizen> 4 </since_tizen>
454 public event EventHandler<ResizeEventArgs> Resize
458 if (_resizeEventHandler == null)
460 _resizeCallback = OnResize;
461 ResizeSignal().Connect(_resizeCallback);
464 _resizeEventHandler += value;
469 _resizeEventHandler -= value;
471 if (_resizeEventHandler == null && ResizeSignal().Empty() == false)
473 ResizeSignal().Disconnect(_resizeCallback);
478 private void OnResize(IntPtr widgetData, IntPtr windowSize)
480 ResizeEventArgs e = new ResizeEventArgs();
481 if (widgetData != null)
483 e.WidgetData = WidgetData.GetWidgetDataFromPtr(widgetData);
485 if (windowSize != null)
487 var val = new Uint16Pair(windowSize, false);
492 _resizeEventHandler?.Invoke(this, e);
495 internal WidgetInstanceResizeSignalType ResizeSignal()
497 WidgetInstanceResizeSignalType ret = new WidgetInstanceResizeSignalType(NDalicManualPINVOKE.Widget_ResizeSignal(swigCPtr), false);
498 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
503 /// Event arguments that passed via update event signal.
505 public class UpdateEventArgs : EventArgs
510 /// <since_tizen> 4 </since_tizen>
511 public WidgetData WidgetData
520 /// <since_tizen> 4 </since_tizen>
521 public SWIGTYPE_p_bundle Bundle
528 /// It means several steps.
532 /// 1 -> force but do something
535 /// <since_tizen> 4 </since_tizen>
543 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
544 private delegate void UpdateCallbackType(IntPtr widgetData, IntPtr bundle, int force);
545 private UpdateCallbackType _updateCallback;
546 private EventHandler<UpdateEventArgs> _updateEventHandler;
551 /// <since_tizen> 4 </since_tizen>
552 public event EventHandler<UpdateEventArgs> Update
556 if (_updateEventHandler == null)
558 _updateCallback = OnUpdate;
559 UpdateSignal().Connect(_updateCallback);
562 _updateEventHandler += value;
567 _updateEventHandler -= value;
569 if (_updateEventHandler == null && UpdateSignal().Empty() == false)
571 UpdateSignal().Disconnect(_updateCallback);
576 private void OnUpdate(IntPtr widgetData, IntPtr bundle, int force)
578 UpdateEventArgs e = new UpdateEventArgs();
579 if (widgetData != null)
581 e.WidgetData = WidgetData.GetWidgetDataFromPtr(widgetData);
585 e.Bundle = new SWIGTYPE_p_bundle(bundle, false);
589 _updateEventHandler?.Invoke(this, e);
592 internal WidgetInstanceUpdateSignalType UpdateSignal()
594 WidgetInstanceUpdateSignalType ret = new WidgetInstanceUpdateSignalType(NDalicManualPINVOKE.Widget_UpdateSignal(swigCPtr), false);
595 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
600 /// Enumeration for terminate type of widget instance.
602 /// <since_tizen> 4 </since_tizen>
603 public enum WidgetTerminateType
606 /// User deleted this widget from the viewer
610 /// Widget is deleted because of other reasons (e.g. widget process is terminated temporarily by the system)
616 /// Enumeration for lifecycle event type of widget instance.
618 /// <since_tizen> 4 </since_tizen>
619 public enum WidgetLifecycleEventType
622 /// The widget is dead.
626 /// The widget is dead.
630 /// The widget is destroyed.
634 /// The widget is paused.
638 /// The widget is resumed.