1 #ifndef __DALI_WATCH_APPLICATION_H__
2 #define __DALI_WATCH_APPLICATION_H__
5 * Copyright (c) 2016 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/callback.h>
27 #include <public-api/adaptor-framework/application.h>
28 #include "watch-time.h"
33 * @addtogroup dali_adaptor_framework
36 namespace Internal DALI_INTERNAL
40 class WatchApplication;
45 * @brief A WatchApplication class object should be created by every watch application
46 * that wishes to use Dali.
48 * It provides a means for initialising the resources required by the Dali::Core.
49 * Like Application class, the WatchApplication class manages Tizen watch application life cycle.
51 * The WatchApplication class emits additional signals which are availalble only in the watch application
52 * (TimeTick, AmbientTick, AmbientChanged)
54 * This feature is supported in wearable applications only.
56 * WatchApplication should follow the example below:
59 * class ExampleController: public ConnectionTracker
62 * ExampleController( WatchApplication& application )
63 * : mApplication( application )
65 * mApplication.InitSignal().Connect( this, &ExampleController::Create );
68 * void Create( Application& application )
70 * // Create Dali components...
74 * WatchApplication& mApplication;
77 * int DALI_EXPORT_API main (int argc, char **argv)
79 * WatchApplication app = WatchApplication::New(&argc, &argv);
80 * ExampleController example( app );
85 * If required, you can also connect class member functions to a signal:
89 * app.ResumeSignal().Connect(&app, &MyApplication::Resume);
92 * When the above options are found, they are stripped from argv, and argc is updated appropriately.
96 class DALI_IMPORT_API WatchApplication : public Application
99 typedef Signal< void (Application&, const WatchTime &) > WatchTimeSignal; ///< Watch pointer signal callback type @SINCE_1_1.37
100 typedef Signal< void (Application&, bool) > WatchBoolSignal; ///< Watch bool signal callback type @SINCE_1_1.37
105 * @brief This is the constructor for applications without an argument list.
108 static WatchApplication New();
111 * @brief This is the constructor for applications.
114 * @param[in,out] argc A pointer to the number of arguments
115 * @param[in,out] argv A pointer the the argument list
117 static WatchApplication New( int* argc, char **argv[] );
120 * @brief This is the constructor for applications with a name
123 * @param[in,out] argc A pointer to the number of arguments
124 * @param[in,out] argv A pointer the the argument list
125 * @param[in] stylesheet The path to user defined theme file
127 static WatchApplication New( int* argc, char **argv[], const std::string& stylesheet );
130 * @brief Construct an empty handle
136 * @brief Copy Constructor
139 WatchApplication( const WatchApplication& implementation );
142 * @brief Assignment operator
145 WatchApplication& operator=( const WatchApplication& applicaton );
150 * This is non-virtual since derived Handle types must not contain data or virtual methods.
157 * @brief This signal is emitted at every second
158 * A callback of the following type may be connected:
160 * void YourCallbackName(Application& application, WatchTimeSignal &time);
162 * time(watch time handle) will not be available after returning this callback. It will be freed by the framework.
165 WatchTimeSignal& TimeTickSignal();
168 * @brief This signal is emitted at every second in ambient mode
169 * A callback of the following type may be connected:
171 * void YourCallbackName(Application& application, WatchTimeSignal &time);
173 * time(watch time handle) will not be available after returning this callback. It will be freed by the framework.
176 WatchTimeSignal& AmbientTickSignal();
179 * @brief This signal is emitted when the device enters or exits ambient mode
180 * A callback of the following type may be connected:
182 * void YourCallbackName(Application& application, bool ambient);
184 * ambient_mode If true the device enters the ambient mode, otherwise false
187 WatchBoolSignal& AmbientChangedSignal();
189 public: // Not intended for application developers
191 * @brief Internal constructor
194 explicit DALI_INTERNAL WatchApplication(Internal::Adaptor::WatchApplication* implementation);
202 #endif // __DALI_WATCH_APPLICATION_H__