2 * Copyright (c) 2021 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.
19 using System.Runtime.InteropServices;
23 internal class WatchApplication : Application
25 internal WatchApplication(global::System.IntPtr cPtr, bool cMemoryOwn) : base(cPtr, cMemoryOwn)
29 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(WatchApplication obj)
31 return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.SwigCPtr;
34 protected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr)
36 Interop.Watch.DeleteWatchApplication(swigCPtr);
39 private void DisConnectFromSignals()
41 if (timeTickCallback != null)
43 this.TimeTickSignal().Disconnect(timeTickCallback);
45 if (ambientTickCallback != null)
47 this.AmbientTickSignal().Disconnect(ambientTickCallback);
49 if (ambientChangedCallback != null)
51 this.AmbientChangedSignal().Disconnect(ambientChangedCallback);
55 public static WatchApplication NewWatchApplication()
57 WatchApplication ret = New();
58 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
59 // we've got an application now connect the signals
64 public static WatchApplication NewWatchApplication(string[] args)
66 WatchApplication ret = New(args);
67 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
72 public static WatchApplication NewWatchApplication(string[] args, string stylesheet)
74 WatchApplication ret = New(args, stylesheet);
75 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
80 public new static WatchApplication New()
82 WatchApplication ret = new WatchApplication(Interop.Watch.WatchApplicationNew(), true);
83 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
87 public static WatchApplication New(string[] args)
89 int argc = args.Length;
90 string argvStr = string.Join(" ", args);
92 WatchApplication ret = new WatchApplication(Interop.Watch.WatchApplicationNew(argc, argvStr), true);
93 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
97 public static WatchApplication New(string[] args, string stylesheet)
99 int argc = args.Length;
100 string argvStr = string.Join(" ", args);
102 WatchApplication ret = new WatchApplication(Interop.Watch.WatchApplicationNew(argc, argvStr, stylesheet), true);
103 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
107 internal WatchApplication(WatchApplication implementation) : this(Interop.Watch.NewWatchApplication(WatchApplication.getCPtr(implementation)), true)
109 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
113 /// Event arguments that passed via time tick event signal.
115 public class TimeTickEventArgs : EventArgs
120 public Application Application
129 public WatchTime WatchTime
136 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
137 private delegate void TimeTickCallbackType(IntPtr application, IntPtr watchTime);
138 private TimeTickCallbackType timeTickCallback;
139 private DaliEventHandler<object, TimeTickEventArgs> timeTickEventHandler;
144 public event DaliEventHandler<object, TimeTickEventArgs> TimeTick
148 if (timeTickEventHandler == null)
150 timeTickCallback = new TimeTickCallbackType(OnTimeTick);
151 TimeTickSignal().Connect(timeTickCallback);
154 timeTickEventHandler += value;
159 timeTickEventHandler -= value;
161 if (timeTickEventHandler == null && TimeTickSignal().Empty() == false)
163 TimeTickSignal().Disconnect(timeTickCallback);
168 private void OnTimeTick(IntPtr application, IntPtr watchTime)
170 TimeTickEventArgs e = new TimeTickEventArgs();
171 e.Application = this;
172 e.WatchTime = WatchTime.GetWatchTimeFromPtr(watchTime);
174 timeTickEventHandler?.Invoke(this, e);
177 internal WatchTimeSignal TimeTickSignal()
179 WatchTimeSignal ret = new WatchTimeSignal(Interop.Watch.WatchApplicationTimeTickSignal(SwigCPtr), false);
180 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
185 /// Event arguments that passed via ambient tick event signal.
187 public class AmbientTickEventArgs : EventArgs
192 public Application Application
201 public WatchTime WatchTime
208 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
209 private delegate void AmbientTickCallbackType(IntPtr application, IntPtr watchTime);
210 private AmbientTickCallbackType ambientTickCallback;
211 private DaliEventHandler<object, AmbientTickEventArgs> ambientTickEventHandler;
214 /// AmbientTick event.
216 public event DaliEventHandler<object, AmbientTickEventArgs> AmbientTick
220 if (ambientTickEventHandler == null)
222 ambientTickCallback = new AmbientTickCallbackType(OnAmbientTick);
223 AmbientTickSignal().Connect(ambientTickCallback);
226 ambientTickEventHandler += value;
231 ambientTickEventHandler -= value;
233 if (ambientTickEventHandler == null && AmbientTickSignal().Empty() == false)
235 AmbientTickSignal().Disconnect(ambientTickCallback);
240 private void OnAmbientTick(IntPtr application, IntPtr watchTime)
242 AmbientTickEventArgs e = new AmbientTickEventArgs();
244 e.Application = this;
245 e.WatchTime = WatchTime.GetWatchTimeFromPtr(watchTime);
246 ambientTickEventHandler?.Invoke(this, e);
249 internal WatchTimeSignal AmbientTickSignal()
251 WatchTimeSignal ret = new WatchTimeSignal(Interop.Watch.WatchApplicationAmbientTickSignal(SwigCPtr), false);
252 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
257 /// Event arguments that passed via ambient tick event signal.
259 public class AmbientChangedEventArgs : EventArgs
264 public Application Application
280 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
281 private delegate void AmbientChangedCallbackType(IntPtr application, bool changed);
282 private AmbientChangedCallbackType ambientChangedCallback;
283 private DaliEventHandler<object, AmbientChangedEventArgs> ambientChangedEventHandler;
286 /// AmbientChanged event.
288 public event DaliEventHandler<object, AmbientChangedEventArgs> AmbientChanged
292 if (ambientChangedEventHandler == null)
294 ambientChangedCallback = new AmbientChangedCallbackType(OnAmbientChanged);
295 AmbientChangedSignal().Connect(ambientChangedCallback);
298 ambientChangedEventHandler += value;
303 ambientChangedEventHandler -= value;
305 if (ambientChangedEventHandler == null && AmbientChangedSignal().Empty() == false)
307 AmbientChangedSignal().Disconnect(ambientChangedCallback);
312 private void OnAmbientChanged(IntPtr application, bool changed)
314 AmbientChangedEventArgs e = new AmbientChangedEventArgs();
315 e.Application = this;
317 ambientChangedEventHandler?.Invoke(this, e);
320 internal WatchBoolSignal AmbientChangedSignal()
322 WatchBoolSignal ret = new WatchBoolSignal(Interop.Watch.WatchApplicationAmbientChangedSignal(SwigCPtr), false);
323 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();