1 /** Copyright (c) 2017 Samsung Electronics Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
7 * http://www.apache.org/licenses/LICENSE-2.0
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
17 using System.Runtime.InteropServices;
18 using Tizen.Applications;
23 /// Widget object should be created by WidgetApplication.
25 public class Widget : BaseHandle
27 private global::System.Runtime.InteropServices.HandleRef swigCPtr;
29 internal Widget(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicManualPINVOKE.Widget_SWIGUpcast(cPtr), cMemoryOwn)
31 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
34 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(Widget obj)
36 return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
40 /// To make Widget instance be disposed.
42 protected override void Dispose(DisposeTypes type)
49 if(type == DisposeTypes.Explicit)
52 //Release your own managed resources here.
53 //You should release all of your own disposable objects here.
56 //Release your own unmanaged resources here.
57 //You should not access any managed member here except static instance.
58 //because the execution order of Finalizes is non-deterministic.
60 if (swigCPtr.Handle != global::System.IntPtr.Zero)
65 NDalicManualPINVOKE.delete_Widget(swigCPtr);
67 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
74 /// This is the constructor for Widget.
76 /// <param name="id">for widget instance</param>
77 /// <since_tizen> 4 </since_tizen>
78 public Widget(string id) : this(NDalicManualPINVOKE.Widget_New(id), true)
80 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
83 internal Widget(Widget widget) : this(NDalicManualPINVOKE.new_Widget__SWIG_1(Widget.getCPtr(widget)), true)
85 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
88 internal Widget Assign(Widget widget)
90 Widget ret = new Widget(NDalicManualPINVOKE.Widget_Assign(swigCPtr, Widget.getCPtr(widget)), false);
91 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
96 /// Event arguments that passed via KeyEvent signal.
98 public class CreateEventArgs : EventArgs
103 /// <since_tizen> 4 </since_tizen>
104 public WidgetData WidgetData
113 /// <since_tizen> 4 </since_tizen>
114 public SWIGTYPE_p_bundle Bundle
123 /// <since_tizen> 4 </since_tizen>
124 public Size2D WindowSize
131 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
132 private delegate void CreateCallbackType(IntPtr widgetData, IntPtr bundle, IntPtr windowSize);
133 private CreateCallbackType _createCallback;
134 private EventHandler<CreateEventArgs> _createEventHandler;
139 /// <since_tizen> 4 </since_tizen>
140 public event EventHandler<CreateEventArgs> Create
144 if (_createEventHandler == null)
146 _createCallback = OnCreate;
147 CreateSignal().Connect(_createCallback);
150 _createEventHandler += value;
155 _createEventHandler -= value;
157 if (_createEventHandler == null && CreateSignal().Empty() == false)
159 CreateSignal().Disconnect(_createCallback);
164 private void OnCreate(IntPtr widgetData, IntPtr bundle, IntPtr windowSize)
166 CreateEventArgs e = new CreateEventArgs();
167 if (widgetData != null)
169 e.WidgetData = WidgetData.GetWidgetDataFromPtr(widgetData);
173 e.Bundle = new SWIGTYPE_p_bundle(bundle, false);
175 if (windowSize != null)
177 var val = new Uint16Pair(windowSize, false);
182 _createEventHandler?.Invoke(this, e);
185 internal WidgetInstanceCreateSignalType CreateSignal()
187 WidgetInstanceCreateSignalType ret = new WidgetInstanceCreateSignalType(NDalicManualPINVOKE.Widget_CreateSignal(swigCPtr), false);
188 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
193 /// Event arguments that passed via terminate event signal.
195 public class TerminateEventArgs : EventArgs
200 /// <since_tizen> 4 </since_tizen>
201 public WidgetData WidgetData
210 /// <since_tizen> 4 </since_tizen>
211 public SWIGTYPE_p_bundle Bundle
218 /// widget terminate type.
220 /// <since_tizen> 4 </since_tizen>
221 public WidgetTerminateType WidgetTerminateType
228 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
229 private delegate void TerminateCallbackType(IntPtr widgetData, IntPtr bundle, WidgetTerminateType widgetTerminateType);
230 private TerminateCallbackType _terminateCallback;
231 private EventHandler<TerminateEventArgs> _terminateEventHandler;
236 /// <since_tizen> 4 </since_tizen>
237 public event EventHandler<TerminateEventArgs> Terminate
241 if (_terminateEventHandler == null)
243 _terminateCallback = OnTerminate;
244 TerminateSignal().Connect(_terminateCallback);
247 _terminateEventHandler += value;
252 _terminateEventHandler -= value;
254 if (_terminateEventHandler == null && TerminateSignal().Empty() == false)
256 TerminateSignal().Disconnect(_terminateCallback);
261 private void OnTerminate(IntPtr widgetData, IntPtr bundle, WidgetTerminateType widgetTerminateType)
263 TerminateEventArgs e = new TerminateEventArgs();
264 if (widgetData != null)
266 e.WidgetData = WidgetData.GetWidgetDataFromPtr(widgetData);
270 e.Bundle = new SWIGTYPE_p_bundle(bundle, false);
273 e.WidgetTerminateType = widgetTerminateType;
274 _terminateEventHandler?.Invoke(this, e);
277 internal WidgetInstanceTerminateSignalType TerminateSignal()
279 WidgetInstanceTerminateSignalType ret = new WidgetInstanceTerminateSignalType(NDalicManualPINVOKE.Widget_TerminateSignal(swigCPtr), false);
280 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
285 /// Event arguments that passed via pause event signal.
287 public class PauseEventArgs : EventArgs
292 /// <since_tizen> 4 </since_tizen>
293 public WidgetData WidgetData
300 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
301 private delegate void PauseCallbackType(IntPtr widgetData);
302 private PauseCallbackType _pauseCallback;
303 private EventHandler<PauseEventArgs> _pauseEventHandler;
308 /// <since_tizen> 4 </since_tizen>
309 public event EventHandler<PauseEventArgs> Pause
313 if (_pauseEventHandler == null)
315 _pauseCallback = OnPause;
316 PauseSignal().Connect(_pauseCallback);
319 _pauseEventHandler += value;
324 _pauseEventHandler -= value;
326 if (_pauseEventHandler == null && PauseSignal().Empty() == false)
328 PauseSignal().Disconnect(_pauseCallback);
333 private void OnPause(IntPtr widgetData)
335 PauseEventArgs e = new PauseEventArgs();
336 if (widgetData != null)
338 e.WidgetData = WidgetData.GetWidgetDataFromPtr(widgetData);
341 _pauseEventHandler?.Invoke(this, e);
344 internal WidgetInstancePauseOrResumeSignalType PauseSignal()
346 WidgetInstancePauseOrResumeSignalType ret = new WidgetInstancePauseOrResumeSignalType(NDalicManualPINVOKE.Widget_PauseSignal(swigCPtr), false);
347 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
352 /// Event arguments that passed via pause event signal.
354 public class ResumeEventArgs : EventArgs
359 /// <since_tizen> 4 </since_tizen>
360 public WidgetData WidgetData
367 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
368 private delegate void ResumeCallbackType(IntPtr widgetData);
369 private ResumeCallbackType _resumeCallback;
370 private EventHandler<ResumeEventArgs> _resumeEventHandler;
375 /// <since_tizen> 4 </since_tizen>
376 public event EventHandler<ResumeEventArgs> Resume
380 if (_resumeEventHandler == null)
382 _resumeCallback = OnResume;
383 ResumeSignal().Connect(_resumeCallback);
386 _resumeEventHandler += value;
391 _resumeEventHandler -= value;
393 if (_resumeEventHandler == null && ResumeSignal().Empty() == false)
395 ResumeSignal().Disconnect(_resumeCallback);
400 private void OnResume(IntPtr widgetData)
402 ResumeEventArgs e = new ResumeEventArgs();
403 if (widgetData != null)
405 e.WidgetData = WidgetData.GetWidgetDataFromPtr(widgetData);
408 _resumeEventHandler?.Invoke(this, e);
411 internal WidgetInstancePauseOrResumeSignalType ResumeSignal()
413 WidgetInstancePauseOrResumeSignalType ret = new WidgetInstancePauseOrResumeSignalType(NDalicManualPINVOKE.Widget_ResumeSignal(swigCPtr), false);
414 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
419 /// Event arguments that passed via resize signal.
421 public class ResizeEventArgs : EventArgs
426 /// <since_tizen> 4 </since_tizen>
427 public WidgetData WidgetData
436 /// <since_tizen> 4 </since_tizen>
437 public Size2D WindowSize
444 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
445 private delegate void ResizeCallbackType(IntPtr widgetData, IntPtr windowSize);
446 private ResizeCallbackType _resizeCallback;
447 private EventHandler<ResizeEventArgs> _resizeEventHandler;
452 /// <since_tizen> 4 </since_tizen>
453 public event EventHandler<ResizeEventArgs> Resize
457 if (_resizeEventHandler == null)
459 _resizeCallback = OnResize;
460 ResizeSignal().Connect(_resizeCallback);
463 _resizeEventHandler += value;
468 _resizeEventHandler -= value;
470 if (_resizeEventHandler == null && ResizeSignal().Empty() == false)
472 ResizeSignal().Disconnect(_resizeCallback);
477 private void OnResize(IntPtr widgetData, IntPtr windowSize)
479 ResizeEventArgs e = new ResizeEventArgs();
480 if (widgetData != null)
482 e.WidgetData = WidgetData.GetWidgetDataFromPtr(widgetData);
484 if (windowSize != null)
486 var val = new Uint16Pair(windowSize, false);
491 _resizeEventHandler?.Invoke(this, e);
494 internal WidgetInstanceResizeSignalType ResizeSignal()
496 WidgetInstanceResizeSignalType ret = new WidgetInstanceResizeSignalType(NDalicManualPINVOKE.Widget_ResizeSignal(swigCPtr), false);
497 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
502 /// Event arguments that passed via update event signal.
504 public class UpdateEventArgs : EventArgs
509 /// <since_tizen> 4 </since_tizen>
510 public WidgetData WidgetData
519 /// <since_tizen> 4 </since_tizen>
520 public SWIGTYPE_p_bundle Bundle
527 /// It means several steps.
531 /// 1 -> force but do someting
534 /// <since_tizen> 4 </since_tizen>
542 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
543 private delegate void UpdateCallbackType(IntPtr widgetData, IntPtr bundle, int force);
544 private UpdateCallbackType _updateCallback;
545 private EventHandler<UpdateEventArgs> _updateEventHandler;
550 /// <since_tizen> 4 </since_tizen>
551 public event EventHandler<UpdateEventArgs> Update
555 if (_updateEventHandler == null)
557 _updateCallback = OnUpdate;
558 UpdateSignal().Connect(_updateCallback);
561 _updateEventHandler += value;
566 _updateEventHandler -= value;
568 if (_updateEventHandler == null && UpdateSignal().Empty() == false)
570 UpdateSignal().Disconnect(_updateCallback);
575 private void OnUpdate(IntPtr widgetData, IntPtr bundle, int force)
577 UpdateEventArgs e = new UpdateEventArgs();
578 if (widgetData != null)
580 e.WidgetData = WidgetData.GetWidgetDataFromPtr(widgetData);
584 e.Bundle = new SWIGTYPE_p_bundle(bundle, false);
588 _updateEventHandler?.Invoke(this, e);
591 internal WidgetInstanceUpdateSignalType UpdateSignal()
593 WidgetInstanceUpdateSignalType ret = new WidgetInstanceUpdateSignalType(NDalicManualPINVOKE.Widget_UpdateSignal(swigCPtr), false);
594 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
599 /// Enumeration for terminate type of widget instance.
601 /// <since_tizen> 4 </since_tizen>
602 public enum WidgetTerminateType
605 /// User deleted this widget from the viewer
609 /// Widget is deleted because of other reasons (e.g. widget process is terminated temporarily by the system)
615 /// Enumeration for lifecycle event type of widget instance.
617 /// <since_tizen> 4 </since_tizen>
618 public enum WidgetLifecycleEventType
621 /// The widget is dead.
625 /// The widget is dead.
629 /// The widget is destroyed.
633 /// The widget is paused.
637 /// The widget is resumed.