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 public Widget(string id) : this(NDalicManualPINVOKE.Widget_New(id), true)
79 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
82 internal Widget(Widget widget) : this(NDalicManualPINVOKE.new_Widget__SWIG_1(Widget.getCPtr(widget)), true)
84 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
87 internal Widget Assign(Widget widget)
89 Widget ret = new Widget(NDalicManualPINVOKE.Widget_Assign(swigCPtr, Widget.getCPtr(widget)), false);
90 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
95 /// Event arguments that passed via KeyEvent signal.
97 public class CreateEventArgs : EventArgs
102 public WidgetData WidgetData
111 public SWIGTYPE_p_bundle Bundle
120 public Size2D WindowSize
127 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
128 private delegate void CreateCallbackType(IntPtr widgetData, IntPtr bundle, IntPtr windowSize);
129 private CreateCallbackType _createCallback;
130 private EventHandler<CreateEventArgs> _createEventHandler;
135 public event EventHandler<CreateEventArgs> Create
139 if (_createEventHandler == null)
141 _createCallback = OnCreate;
142 CreateSignal().Connect(_createCallback);
145 _createEventHandler += value;
150 _createEventHandler -= value;
152 if (_createEventHandler == null && CreateSignal().Empty() == false)
154 CreateSignal().Disconnect(_createCallback);
159 private void OnCreate(IntPtr widgetData, IntPtr bundle, IntPtr windowSize)
161 CreateEventArgs e = new CreateEventArgs();
162 if (widgetData != null)
164 e.WidgetData = WidgetData.GetWidgetDataFromPtr(widgetData);
168 e.Bundle = new SWIGTYPE_p_bundle(bundle, false);
170 if (windowSize != null)
172 var val = new Uint16Pair(windowSize, false);
177 _createEventHandler?.Invoke(this, e);
180 internal WidgetInstanceCreateSignalType CreateSignal()
182 WidgetInstanceCreateSignalType ret = new WidgetInstanceCreateSignalType(NDalicManualPINVOKE.Widget_CreateSignal(swigCPtr), false);
183 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
188 /// Event arguments that passed via terminate event signal.
190 public class TerminateEventArgs : EventArgs
195 public WidgetData WidgetData
204 public SWIGTYPE_p_bundle Bundle
211 /// widget terminate type.
213 public WidgetTerminateType WidgetTerminateType
220 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
221 private delegate void TerminateCallbackType(IntPtr widgetData, IntPtr bundle, WidgetTerminateType widgetTerminateType);
222 private TerminateCallbackType _terminateCallback;
223 private EventHandler<TerminateEventArgs> _terminateEventHandler;
228 public event EventHandler<TerminateEventArgs> Terminate
232 if (_terminateEventHandler == null)
234 _terminateCallback = OnTerminate;
235 TerminateSignal().Connect(_terminateCallback);
238 _terminateEventHandler += value;
243 _terminateEventHandler -= value;
245 if (_terminateEventHandler == null && TerminateSignal().Empty() == false)
247 TerminateSignal().Disconnect(_terminateCallback);
252 private void OnTerminate(IntPtr widgetData, IntPtr bundle, WidgetTerminateType widgetTerminateType)
254 TerminateEventArgs e = new TerminateEventArgs();
255 if (widgetData != null)
257 e.WidgetData = WidgetData.GetWidgetDataFromPtr(widgetData);
261 e.Bundle = new SWIGTYPE_p_bundle(bundle, false);
264 e.WidgetTerminateType = widgetTerminateType;
265 _terminateEventHandler?.Invoke(this, e);
268 internal WidgetInstanceTerminateSignalType TerminateSignal()
270 WidgetInstanceTerminateSignalType ret = new WidgetInstanceTerminateSignalType(NDalicManualPINVOKE.Widget_TerminateSignal(swigCPtr), false);
271 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
276 /// Event arguments that passed via pause event signal.
278 public class PauseEventArgs : EventArgs
283 public WidgetData WidgetData
290 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
291 private delegate void PauseCallbackType(IntPtr widgetData);
292 private PauseCallbackType _pauseCallback;
293 private EventHandler<PauseEventArgs> _pauseEventHandler;
298 public event EventHandler<PauseEventArgs> Pause
302 if (_pauseEventHandler == null)
304 _pauseCallback = OnPause;
305 PauseSignal().Connect(_pauseCallback);
308 _pauseEventHandler += value;
313 _pauseEventHandler -= value;
315 if (_pauseEventHandler == null && PauseSignal().Empty() == false)
317 PauseSignal().Disconnect(_pauseCallback);
322 private void OnPause(IntPtr widgetData)
324 PauseEventArgs e = new PauseEventArgs();
325 if (widgetData != null)
327 e.WidgetData = WidgetData.GetWidgetDataFromPtr(widgetData);
330 _pauseEventHandler?.Invoke(this, e);
333 internal WidgetInstancePauseOrResumeSignalType PauseSignal()
335 WidgetInstancePauseOrResumeSignalType ret = new WidgetInstancePauseOrResumeSignalType(NDalicManualPINVOKE.Widget_PauseSignal(swigCPtr), false);
336 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
341 /// Event arguments that passed via pause event signal.
343 public class ResumeEventArgs : EventArgs
348 public WidgetData WidgetData
355 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
356 private delegate void ResumeCallbackType(IntPtr widgetData);
357 private ResumeCallbackType _resumeCallback;
358 private EventHandler<ResumeEventArgs> _resumeEventHandler;
363 public event EventHandler<ResumeEventArgs> Resume
367 if (_resumeEventHandler == null)
369 _resumeCallback = OnResume;
370 ResumeSignal().Connect(_resumeCallback);
373 _resumeEventHandler += value;
378 _resumeEventHandler -= value;
380 if (_resumeEventHandler == null && ResumeSignal().Empty() == false)
382 ResumeSignal().Disconnect(_resumeCallback);
387 private void OnResume(IntPtr widgetData)
389 ResumeEventArgs e = new ResumeEventArgs();
390 if (widgetData != null)
392 e.WidgetData = WidgetData.GetWidgetDataFromPtr(widgetData);
395 _resumeEventHandler?.Invoke(this, e);
398 internal WidgetInstancePauseOrResumeSignalType ResumeSignal()
400 WidgetInstancePauseOrResumeSignalType ret = new WidgetInstancePauseOrResumeSignalType(NDalicManualPINVOKE.Widget_ResumeSignal(swigCPtr), false);
401 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
406 /// Event arguments that passed via resize signal.
408 public class ResizeEventArgs : EventArgs
413 public WidgetData WidgetData
422 public Size2D WindowSize
429 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
430 private delegate void ResizeCallbackType(IntPtr widgetData, IntPtr windowSize);
431 private ResizeCallbackType _resizeCallback;
432 private EventHandler<ResizeEventArgs> _resizeEventHandler;
437 public event EventHandler<ResizeEventArgs> Resize
441 if (_resizeEventHandler == null)
443 _resizeCallback = OnResize;
444 ResizeSignal().Connect(_resizeCallback);
447 _resizeEventHandler += value;
452 _resizeEventHandler -= value;
454 if (_resizeEventHandler == null && ResizeSignal().Empty() == false)
456 ResizeSignal().Disconnect(_resizeCallback);
461 private void OnResize(IntPtr widgetData, IntPtr windowSize)
463 ResizeEventArgs e = new ResizeEventArgs();
464 if (widgetData != null)
466 e.WidgetData = WidgetData.GetWidgetDataFromPtr(widgetData);
468 if (windowSize != null)
470 var val = new Uint16Pair(windowSize, false);
475 _resizeEventHandler?.Invoke(this, e);
478 internal WidgetInstanceResizeSignalType ResizeSignal()
480 WidgetInstanceResizeSignalType ret = new WidgetInstanceResizeSignalType(NDalicManualPINVOKE.Widget_ResizeSignal(swigCPtr), false);
481 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
486 /// Event arguments that passed via update event signal.
488 public class UpdateEventArgs : EventArgs
493 public WidgetData WidgetData
502 public SWIGTYPE_p_bundle Bundle
509 /// It means several steps.
513 /// 1 -> force but do someting
523 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
524 private delegate void UpdateCallbackType(IntPtr widgetData, IntPtr bundle, int force);
525 private UpdateCallbackType _updateCallback;
526 private EventHandler<UpdateEventArgs> _updateEventHandler;
531 public event EventHandler<UpdateEventArgs> Update
535 if (_updateEventHandler == null)
537 _updateCallback = OnUpdate;
538 UpdateSignal().Connect(_updateCallback);
541 _updateEventHandler += value;
546 _updateEventHandler -= value;
548 if (_updateEventHandler == null && UpdateSignal().Empty() == false)
550 UpdateSignal().Disconnect(_updateCallback);
555 private void OnUpdate(IntPtr widgetData, IntPtr bundle, int force)
557 UpdateEventArgs e = new UpdateEventArgs();
558 if (widgetData != null)
560 e.WidgetData = WidgetData.GetWidgetDataFromPtr(widgetData);
564 e.Bundle = new SWIGTYPE_p_bundle(bundle, false);
568 _updateEventHandler?.Invoke(this, e);
571 internal WidgetInstanceUpdateSignalType UpdateSignal()
573 WidgetInstanceUpdateSignalType ret = new WidgetInstanceUpdateSignalType(NDalicManualPINVOKE.Widget_UpdateSignal(swigCPtr), false);
574 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
579 /// Enumeration for terminate type of widget instance.
581 public enum WidgetTerminateType
584 /// User deleted this widget from the viewer
588 /// Widget is deleted because of other reasons (e.g. widget process is terminated temporarily by the system)
594 /// Enumeration for lifecycle event type of widget instance.
596 public enum WidgetLifecycleEventType
599 /// The widget is dead.
603 /// The widget is dead.
607 /// The widget is destroyed.
611 /// The widget is paused.
615 /// The widget is resumed.