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;
22 /// Widget application
24 internal class WidgetApplication : BaseHandle
26 private global::System.Runtime.InteropServices.HandleRef swigCPtr;
28 internal WidgetApplication(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicManualPINVOKE.WidgetApplication_SWIGUpcast(cPtr), cMemoryOwn)
30 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
33 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(WidgetApplication obj)
35 return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
39 /// To make Window instance be disposed.
41 protected override void Dispose(DisposeTypes type)
48 if(type == DisposeTypes.Explicit)
51 //Release your own managed resources here.
52 //You should release all of your own disposable objects here.
55 //Release your own unmanaged resources here.
56 //You should not access any managed member here except static instance.
57 //because the execution order of Finalizes is non-deterministic.
59 if (_initCallback != null)
61 this.InitSignal().Disconnect(_initCallback);
63 if (_terminateCallback != null)
65 this.TerminateSignal().Disconnect(_terminateCallback);
67 if (_languageChangedCallback != null)
69 this.LanguageChangedSignal().Disconnect(_languageChangedCallback);;
71 if (_regionChangedCallback != null)
73 this.RegionChangedSignal().Disconnect(_regionChangedCallback);
75 if (_batteryLowCallback != null)
77 this.BatteryLowSignal().Disconnect(_batteryLowCallback);
79 if (_memoryLowCallback != null)
81 this.MemoryLowSignal().Disconnect(_memoryLowCallback);
84 if (swigCPtr.Handle != global::System.IntPtr.Zero)
89 NDalicManualPINVOKE.delete_WidgetApplication(swigCPtr);
91 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
97 internal static WidgetApplication GetWidgetApplicationFromPtr(global::System.IntPtr cPtr)
99 WidgetApplication ret = new WidgetApplication(cPtr, false);
100 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
104 public static WidgetApplication Instance
112 public static WidgetApplication NewWidgetApplication(string[] args, string stylesheet)
114 WidgetApplication ret = New(args, stylesheet);
115 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
121 public static WidgetApplication New(string[] args, string stylesheet)
123 int argc = args.Length;
124 string argvStr = string.Join(" ", args);
126 WidgetApplication ret = new WidgetApplication(NDalicManualPINVOKE.WidgetApplication_New(argc, argvStr, stylesheet), true);
127 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
131 internal WidgetApplication(WidgetApplication widgetApplication) : this(NDalicManualPINVOKE.new_WidgetApplication__SWIG_1(WidgetApplication.getCPtr(widgetApplication)), true)
133 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
136 internal WidgetApplication Assign(WidgetApplication widgetApplication)
138 WidgetApplication ret = new WidgetApplication(NDalicManualPINVOKE.WidgetApplication_Assign(swigCPtr, WidgetApplication.getCPtr(widgetApplication)), false);
139 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
144 /// This starts the application.
146 public void MainLoop()
148 NDalicManualPINVOKE.WidgetApplication_MainLoop(swigCPtr);
149 if (NDalicPINVOKE.SWIGPendingException.Pending)
151 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
156 /// This quits the application.
157 /// Tizen applications should use Lower to improve re-start performance unless they need to Quit completely.
161 NDalicManualPINVOKE.WidgetApplication_Quit(swigCPtr);
162 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
168 /// <returns> The window for widget instance.</returns>
169 public Window GetWindow()
171 Window ret = new Window(NDalicManualPINVOKE.WidgetApplication_GetWindow(swigCPtr), true);
172 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
177 /// Get path application resources are stored at.
179 /// <returns>The full path of the resources</returns>
180 public static string GetResourcePath()
182 string ret = NDalicManualPINVOKE.WidgetApplication_GetResourcePath();
183 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
188 /// Event arguments that passed via widget app event signal.
190 public class WidgetApplicationEventArgs : EventArgs
193 /// Widget application.
195 public WidgetApplication WidgetApplication
202 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
203 private delegate void InitCallbackType(IntPtr widgetApplication);
204 private InitCallbackType _initCallback;
205 private DaliEventHandler<object,WidgetApplicationEventArgs> _initEventHandler;
210 public event DaliEventHandler<object, WidgetApplicationEventArgs> Init
214 if (_initEventHandler == null)
216 _initCallback = new InitCallbackType( OnInit);
217 InitSignal().Connect(_initCallback);
220 _initEventHandler += value;
225 _initEventHandler -= value;
227 if (_initEventHandler == null && InitSignal().Empty() == false)
229 InitSignal().Disconnect(_initCallback);
234 private void OnInit(IntPtr widgetApplication)
236 WidgetApplicationEventArgs e = new WidgetApplicationEventArgs();
237 if (widgetApplication != null)
239 e.WidgetApplication = WidgetApplication.GetWidgetApplicationFromPtr(widgetApplication);
242 if (_initEventHandler != null)
244 _initEventHandler(this, e);
248 internal AppSignalType InitSignal()
250 AppSignalType ret = new AppSignalType(NDalicManualPINVOKE.WidgetApplication_InitSignal(swigCPtr), false);
251 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
255 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
256 private delegate void TerminateCallbackType(IntPtr widgetApplication);
257 private TerminateCallbackType _terminateCallback;
258 private DaliEventHandler<object, WidgetApplicationEventArgs> _terminateEventHandler;
263 public event DaliEventHandler<object, WidgetApplicationEventArgs> Terminate
267 if (_terminateEventHandler == null)
269 _terminateCallback = new TerminateCallbackType( OnTerminate);
270 TerminateSignal().Connect(_terminateCallback);
273 _terminateEventHandler += value;
278 _terminateEventHandler -= value;
280 if (_terminateEventHandler == null && TerminateSignal().Empty() == false)
282 TerminateSignal().Disconnect(_terminateCallback);
287 private void OnTerminate(IntPtr widgetApplication)
289 WidgetApplicationEventArgs e = new WidgetApplicationEventArgs();
291 if (widgetApplication != null)
293 e.WidgetApplication = WidgetApplication.GetWidgetApplicationFromPtr(widgetApplication);
296 if (_terminateEventHandler != null)
298 _terminateEventHandler(this, e);
302 internal AppSignalType TerminateSignal()
304 AppSignalType ret = new AppSignalType(NDalicManualPINVOKE.WidgetApplication_TerminateSignal(swigCPtr), false);
305 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
309 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
310 private delegate void LanguageChangedCallbackType(IntPtr widgetApplication);
311 private LanguageChangedCallbackType _languageChangedCallback;
312 private DaliEventHandler<object, WidgetApplicationEventArgs> _languageChangedEventHandler;
315 /// LanguageChanged event.
317 public event DaliEventHandler<object, WidgetApplicationEventArgs> LanguageChanged
321 if (_languageChangedEventHandler == null)
323 _languageChangedCallback = new LanguageChangedCallbackType( OnLanguageChanged);
324 LanguageChangedSignal().Connect(_languageChangedCallback);
327 _languageChangedEventHandler += value;
332 _languageChangedEventHandler -= value;
334 if (_languageChangedEventHandler == null && LanguageChangedSignal().Empty() == false)
336 LanguageChangedSignal().Disconnect(_languageChangedCallback);
341 private void OnLanguageChanged(IntPtr widgetApplication)
343 WidgetApplicationEventArgs e = new WidgetApplicationEventArgs();
345 if (widgetApplication != null)
347 e.WidgetApplication = WidgetApplication.GetWidgetApplicationFromPtr(widgetApplication);
350 if (_languageChangedEventHandler != null)
352 _languageChangedEventHandler(this, e);
356 internal AppSignalType LanguageChangedSignal()
358 AppSignalType ret = new AppSignalType(NDalicManualPINVOKE.WidgetApplication_LanguageChangedSignal(swigCPtr), false);
359 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
363 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
364 private delegate void RegionChangedCallbackType(IntPtr widgetApplication);
365 private RegionChangedCallbackType _regionChangedCallback;
366 private DaliEventHandler<object, WidgetApplicationEventArgs> _regionChangedEventHandler;
369 /// RegionChanged event.
371 public event DaliEventHandler<object, WidgetApplicationEventArgs> RegionChanged
375 if (_regionChangedEventHandler == null)
377 _regionChangedCallback = new RegionChangedCallbackType( OnRegionChanged );
378 RegionChangedSignal().Connect(_regionChangedCallback);
381 _regionChangedEventHandler += value;
386 _regionChangedEventHandler -= value;
388 if (_regionChangedEventHandler == null && RegionChangedSignal().Empty() == false)
390 RegionChangedSignal().Disconnect(_regionChangedCallback);
395 private void OnRegionChanged(IntPtr widgetApplication)
397 WidgetApplicationEventArgs e = new WidgetApplicationEventArgs();
399 if (widgetApplication != null)
401 e.WidgetApplication = WidgetApplication.GetWidgetApplicationFromPtr(widgetApplication);
404 if (_regionChangedEventHandler != null)
406 _regionChangedEventHandler(this, e);
410 internal AppSignalType RegionChangedSignal()
412 AppSignalType ret = new AppSignalType(NDalicManualPINVOKE.WidgetApplication_RegionChangedSignal(swigCPtr), false);
413 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
417 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
418 private delegate void BatteryLowCallbackType(IntPtr widgetApplication);
419 private BatteryLowCallbackType _batteryLowCallback;
420 private DaliEventHandler<object, WidgetApplicationEventArgs> _batteryLowEventHandler;
423 /// BatteryLow event.
425 public event DaliEventHandler<object, WidgetApplicationEventArgs> BatteryLow
429 if (_batteryLowEventHandler == null)
431 _batteryLowCallback = new BatteryLowCallbackType( OnBatteryLow );
432 BatteryLowSignal().Connect(_batteryLowCallback);
435 _batteryLowEventHandler += value;
440 _batteryLowEventHandler -= value;
442 if (_batteryLowEventHandler == null && BatteryLowSignal().Empty() == false)
444 BatteryLowSignal().Disconnect(_batteryLowCallback);
449 private void OnBatteryLow(IntPtr widgetApplication)
451 WidgetApplicationEventArgs e = new WidgetApplicationEventArgs();
453 if (widgetApplication != null)
455 e.WidgetApplication = WidgetApplication.GetWidgetApplicationFromPtr(widgetApplication);
458 if (_batteryLowEventHandler != null)
460 _batteryLowEventHandler(this, e);
464 internal AppSignalType BatteryLowSignal()
466 AppSignalType ret = new AppSignalType(NDalicManualPINVOKE.WidgetApplication_BatteryLowSignal(swigCPtr), false);
467 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
471 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
472 private delegate void MemoryLowCallbackType(IntPtr widgetApplication);
473 private MemoryLowCallbackType _memoryLowCallback;
474 private DaliEventHandler<object, WidgetApplicationEventArgs> _memoryLowEventHandler;
479 public event DaliEventHandler<object, WidgetApplicationEventArgs> MemoryLow
483 if (_memoryLowEventHandler == null)
485 _memoryLowCallback = new MemoryLowCallbackType (OnMemoryLow);
486 MemoryLowSignal().Connect(_memoryLowCallback);
489 _memoryLowEventHandler += value;
494 _memoryLowEventHandler -= value;
496 if (_memoryLowEventHandler == null && MemoryLowSignal().Empty() == false)
498 MemoryLowSignal().Disconnect(_memoryLowCallback);
503 private void OnMemoryLow(IntPtr widgetApplication)
505 WidgetApplicationEventArgs e = new WidgetApplicationEventArgs();
507 if (widgetApplication != null)
509 e.WidgetApplication = WidgetApplication.GetWidgetApplicationFromPtr(widgetApplication);
512 if (_memoryLowEventHandler != null)
514 _memoryLowEventHandler(this, e);
518 internal AppSignalType MemoryLowSignal()
520 AppSignalType ret = new AppSignalType(NDalicManualPINVOKE.WidgetApplication_MemoryLowSignal(swigCPtr), false);
521 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
525 private static WidgetApplication _instance; //singleton