1 #ifndef __DALI_TIMER_H__
2 #define __DALI_TIMER_H__
5 * Copyright (c) 2015 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
23 #include <dali/public-api/object/base-handle.h>
24 #include <dali/public-api/signals/dali-signal.h>
29 * @addtogroup dali_adaptor_framework
33 namespace Internal DALI_INTERNAL
42 * @brief Mechanism to issue simple periodic or one-shot events.
44 * Timer is provided for application developers to be able to issue
45 * simple periodic or one-shot events. Please note that timer
46 * callback functions should return as soon as possible, because they
47 * block the next SignalTick. Please note that timer signals are not
48 * in sync with Dali's render timer.
50 * This class is a handle class so it can be stack allocated and used
54 class DALI_IMPORT_API Timer : public BaseHandle
56 public: // Signal typedefs
58 typedef Signal< bool () > TimerSignalType; ///< Timer finished signal callback type @SINCE_1_0.0
63 * @brief Constructor, creates an uninitialized timer.
65 * Call New to fully construct a timer.
71 * @brief Create an tick Timer that emits periodic signal.
74 * @param[in] milliSec Interval in milliseconds.
77 static Timer New( unsigned int milliSec );
80 * @brief Copy constructor.
83 * @param[in] timer The handle to copy. The copied handle will point at the same implementation
85 Timer( const Timer& timer );
88 * @brief Assignment operator.
91 * @param[in] timer The handle to copy. This handle will point at the same implementation
92 * as the copied handle.
93 * @return Reference to this timer handle
95 Timer& operator=( const Timer& timer );
100 * This is non-virtual since derived Handle types must not contain data or virtual methods.
106 * @brief Downcast an Object handle to Timer handle.
108 * If handle points to a Timer object the downcast produces a valid
109 * handle. If not the returned handle is left uninitialized.
112 * @param[in] handle to An object
113 * @return handle to a Timer object or an uninitialized handle
115 static Timer DownCast( BaseHandle handle );
118 * @brief Start timer.
120 * In case a Timer is already running it's time is reset and timer is restarted.
132 * @brief Sets a new interval on the timer and starts the timer.
134 * Cancels the previous timer.
136 * @param milliSec Interval in milliseconds.
138 void SetInterval( unsigned int milliSec );
141 * @brief Get the interval of timer.
142 * @returns Interval in milliseconds.
145 unsigned int GetInterval() const;
148 * @brief Tells whether timer is running.
150 * @return Whether Timer is started or not.
152 bool IsRunning() const;
157 * @brief Signal emitted after specified time interval.
159 * The return of the callback decides whether signal emission stops or continues.
160 * If the callback function returns false emission will stop, if true it will continue
161 * This return value is ignored for one-shot events, which will always stop after the first execution.
162 * @returns The signal to Connect() with.
165 TimerSignalType& TickSignal();
167 public: // Not intended for application developers
168 explicit DALI_INTERNAL Timer(Internal::Adaptor::Timer* timer);
176 #endif // __DALI_TIMER_H__