X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2FTizen.NUI%2Fsrc%2Fpublic%2FTimer.cs;h=cfae067899d0356f5b28fa8314c82d323790f6a1;hb=3110643f59915f11c4a793a6d2c01357292b4efd;hp=41c9b7a87f28d8c1d6c8e6149b052937c39df380;hpb=b7023e85022f6250d042fe1f0fc5881d4f52e8fe;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git diff --git a/src/Tizen.NUI/src/public/Timer.cs b/src/Tizen.NUI/src/public/Timer.cs index 41c9b7a..cfae067 100755 --- a/src/Tizen.NUI/src/public/Timer.cs +++ b/src/Tizen.NUI/src/public/Timer.cs @@ -1,39 +1,43 @@ -/** Copyright (c) 2017 Samsung Electronics Co., Ltd. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -* -*/ +/* + * Copyright(c) 2017 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +using System; +using System.Runtime.InteropServices; +using System.ComponentModel; +using System.Threading; namespace Tizen.NUI { - - using System; - using System.Runtime.InteropServices; - /// - /// Mechanism to issue simple periodic or one-shot events.
+ /// Mechanism to issue simple periodic or one-shot events.
/// Timer is provided for application developers to be able to issue - /// simple periodic or one-shot events. Please note that timer - /// callback functions should return as soon as possible, because they - /// block the next SignalTick. Please note that timer signals are not - /// in sync with Dali's render timer.
+ /// simple periodic or one-shot events. Please note that the timer + /// callback functions should return as soon as possible because they + /// block the next SignalTick. Please note that timer signals are not + /// in sync with DALi's render timer.
/// This class is a handle class so it can be stack allocated and used - /// as a member.
+ /// as a member.
///
+ /// 3 public class Timer : BaseHandle { private global::System.Runtime.InteropServices.HandleRef swigCPtr; + private bool played = false; + internal Timer(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicPINVOKE.Timer_SWIGUpcast(cPtr), cMemoryOwn) { swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr); @@ -44,14 +48,18 @@ namespace Tizen.NUI return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; } + /// + /// Dispose. + /// + /// 3 protected override void Dispose(DisposeTypes type) { - if(disposed) + if (disposed) { return; } - if(type == DisposeTypes.Explicit) + if (type == DisposeTypes.Explicit) { //Called by User //Release your own managed resources here. @@ -62,6 +70,11 @@ namespace Tizen.NUI //You should not access any managed member here except static instance. //because the execution order of Finalizes is non-deterministic. + if (_timerTickCallbackDelegate != null) + { + TickSignal().Disconnect(_timerTickCallbackDelegate); + } + if (swigCPtr.Handle != global::System.IntPtr.Zero) { if (swigCMemOwn) @@ -72,27 +85,29 @@ namespace Tizen.NUI swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); } + played = false; base.Dispose(type); } /// - /// Event arguments that passed via Tick event. + /// Event arguments that passed via the tick event. /// + /// 3 public class TickEventArgs : EventArgs { } [UnmanagedFunctionPointer(CallingConvention.StdCall)] - private delegate bool TickCallbackDelegate(IntPtr data); + private delegate bool TickCallbackDelegate(); private EventHandlerWithReturnType _timerTickEventHandler; private TickCallbackDelegate _timerTickCallbackDelegate; /// - /// brief Event for Ticked signal which can be used to subscribe/unsubscribe the event handler - /// (in the type of TickEventHandler-DaliEventHandlerWithReturnType).
- /// provided by the user. Ticked signal is emitted after specified time interval.
+ /// @brief Event for the ticked signal, which can be used to subscribe or unsubscribe the event handler + /// provided by the user. The ticked signal is emitted after specified time interval.
///
+ /// 3 public event EventHandlerWithReturnType Tick { add @@ -114,11 +129,16 @@ namespace Tizen.NUI } } - private bool OnTick(IntPtr data) + private bool OnTick() { TickEventArgs e = new TickEventArgs(); - if (_timerTickEventHandler != null) + if (played == false) + { + Tizen.Log.Fatal("NUI", $"({swigCPtr.Handle}) OnTick() is called even played is false!"); + } + + if (_timerTickEventHandler != null && played == true) { //here we send all data to user event handlers return _timerTickEventHandler(this, e); @@ -127,55 +147,92 @@ namespace Tizen.NUI } /// - /// Creates a tick Timer that emits periodic signal. + /// Creates a tick timer that emits periodic signal. /// - /// Interval in milliseconds - /// A new timer + /// Interval in milliseconds. + /// A new timer. + /// 3 public Timer(uint milliSec) : this(NDalicPINVOKE.Timer_New(milliSec), true) { if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + Tizen.Log.Error("NUI", $"({swigCPtr.Handle}) Timer({milliSec}) Constructor!"); } internal Timer(Timer timer) : this(NDalicPINVOKE.new_Timer__SWIG_1(Timer.getCPtr(timer)), true) { if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } - - [Obsolete("Please do not use! this will be deprecated")] + /// + /// Downcasts a handle to Timer handle. + /// + /// 3 + /// Please do not use! this will be deprecated! + /// Instead please use as keyword. + [Obsolete("Please do not use! This will be deprecated! Please use as keyword instead!")] + [EditorBrowsable(EditorBrowsableState.Never)] public static Timer DownCast(BaseHandle handle) { - Timer ret = Registry.GetManagedBaseHandleFromNativePtr(handle) as Timer; + Timer ret = Registry.GetManagedBaseHandleFromNativePtr(handle) as Timer; if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// - /// Starts timer.
- /// In case a Timer is already running, its time is reset and timer is restarted.
+ /// Starts the timer.
+ /// In case a timer is already running, its time is reset and the timer is restarted.
///
+ /// 3 public void Start() { + played = true; NDalicPINVOKE.Timer_Start(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// - /// Stops timer. + /// Stops the timer. /// + /// 3 public void Stop() { + played = false; NDalicPINVOKE.Timer_Stop(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// - /// Sets a new interval on the timer and starts the timer.
- /// Cancels the previous timer.
+ /// Gets/Sets the interval of the timer. + ///
+ /// For setter, this sets a new interval on the timer and starts the timer.
+ /// Cancels the previous timer. + ///
+ /// 4 + public uint Interval + { + get + { + return GetInterval(); + } + set + { + SetInterval(value); + } + } + + /// + /// Sets a new interval on the timer and starts the timer.
+ /// Cancels the previous timer.
///
- /// milliSec Interval in milliseconds + /// MilliSec interval in milliseconds. internal void SetInterval(uint milliSec) { + + Tizen.Log.Error("NUI", $"({swigCPtr.Handle}) SetInterval({milliSec})"); + played = true; + NDalicPINVOKE.Timer_SetInterval(swigCPtr, milliSec); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } @@ -184,13 +241,15 @@ namespace Tizen.NUI { uint ret = NDalicPINVOKE.Timer_GetInterval(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + Tizen.Log.Error("NUI", $"({swigCPtr.Handle})GetInterval({ret})"); return ret; } /// - /// Tells whether timer is running. + /// Tells whether the timer is running. /// - /// Whether Timer is started or not + /// Whether the timer is started or not. + /// 3 public bool IsRunning() { bool ret = NDalicPINVOKE.Timer_IsRunning(swigCPtr); @@ -208,3 +267,4 @@ namespace Tizen.NUI } } +