1 #ifndef DALI_INTERNAL_FRAMEWORK_H
2 #define DALI_INTERNAL_FRAMEWORK_H
5 * Copyright (c) 2021 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.
22 #include <dali/public-api/signals/callback.h>
24 #ifdef APPCORE_WATCH_AVAILABLE
25 #include <dali/public-api/watch/watch-application.h>
29 #include <dali/internal/system/common/abort-handler.h>
30 #include <dali/public-api/adaptor-framework/device-status.h>
31 #ifdef COMPONENT_APPLICATION_SUPPORT
32 #include <dali/devel-api/adaptor-framework/component-application.h>
42 * The Framework class is ideally placed to provide key API required by Applications.
44 * The class is also used to register callbacks with the TIZEN platform so that
45 * we know when any of the application lifecycle events occur. This includes events
46 * like when our application is to be initialised, terminated, paused, resumed etc.
54 NORMAL, ///< normal appFramework
55 WATCH, ///< watch appFramework
56 WIDGET, ///< widget appFramework
57 COMPONENT ///< component appFramework
61 * Observer class for the framework.
62 * @brief When the UI thread is enabled, the events are emitted on the UI thread.
63 * When it is disabled, the events are emitted on the main thread.
69 * Invoked when the application is to be initialised.
76 * Invoked when the application is to be terminated.
78 virtual void OnTerminate()
83 * Invoked when the application is to be paused.
85 virtual void OnPause()
90 * Invoked when the application is to be resumed.
92 virtual void OnResume()
97 * Invoked when the application is to be reset.
99 virtual void OnReset()
104 * Invoked when the AppControl message is received.
105 * @param[in] The bundle data of AppControl message.
107 virtual void OnAppControl(void*)
111 #ifdef APPCORE_WATCH_AVAILABLE
113 * Invoked at every second
115 virtual void OnTimeTick(WatchTime&)
120 * Invoked at every second in ambient mode
122 virtual void OnAmbientTick(WatchTime&)
127 * Invoked when the device enters or exits ambient mode
129 virtual void OnAmbientChanged(bool ambient)
135 * Invoked when the language of the device is changed.
137 virtual void OnLanguageChanged()
142 * Invoked when the region is changed.
144 virtual void OnRegionChanged()
149 * Invoked when the battery level of the device is low.
151 virtual void OnBatteryLow(Dali::DeviceStatus::Battery::Status status)
156 * Invoked when the memory level of the device is low.
158 virtual void OnMemoryLow(Dali::DeviceStatus::Memory::Status status)
163 * Invoked when the platform surface is created.
165 virtual void OnSurfaceCreated(Any newSurface)
170 * Invoked when the platform surface is destroyed.
172 virtual void OnSurfaceDestroyed(Any newSurface)
176 #ifdef COMPONENT_APPLICATION_SUPPORT
178 * Invoked when the component application is created.
180 virtual Any OnCreate()
188 * TaskObserver class for the framework.
189 * @brief This is used only when UiThread is enabled. the events are emitted on the main thread.
195 * Invoked when the application is to be initialised.
197 virtual void OnTaskInit()
202 * Invoked when the application is to be terminated.
204 virtual void OnTaskTerminate()
209 * Invoked when the AppControl message is received.
210 * @param[in] The bundle data of AppControl message.
212 virtual void OnTaskAppControl(void*)
217 * Invoked when the language of the device is changed.
219 virtual void OnTaskLanguageChanged()
224 * Invoked when the region is changed.
226 virtual void OnTaskRegionChanged()
231 * Invoked when the battery level of the device is low.
233 virtual void OnTaskBatteryLow(Dali::DeviceStatus::Battery::Status status)
238 * Invoked when the memory level of the device is low.
240 virtual void OnTaskMemoryLow(Dali::DeviceStatus::Memory::Status status)
248 * @param[in] observer The observer of the Framework.
249 * @param[in] taskObserver The task observer of the Framework.
250 * @param[in] argc A pointer to the number of arguments.
251 * @param[in] argv A pointer the the argument list.
252 * @param[in] type The type of application
253 * @param[in] useUiThread True if the application would create a UI thread
255 Framework(Observer& observer, TaskObserver& taskObserver, int* argc, char*** argv, Type type, bool useUiThread);
264 * Runs the main loop of framework
269 * Quits the main loop
274 * Checks whether the main loop of the framework is running.
275 * @return true, if the main loop is running, false otherwise.
277 bool IsMainLoopRunning();
280 * If the main loop aborts unexpectedly, then the connected callback function is called.
281 * @param[in] callBack The function to call.
282 * @note Only one callback can be registered. The last callback to be set will be called on abort.
283 * @note The ownership of callback is passed onto this class.
285 void AddAbortCallback(CallbackBase* callback);
288 * Gets bundle name which was passed in app_reset callback.
290 std::string GetBundleName() const;
293 * Gets bundle id which was passed in app_reset callback.
295 std::string GetBundleId() const;
298 * Sets a command line options.
299 * This is used in case of the preinitialized application.
300 * @param[in] argc A pointer to the number of arguments
301 * @param[in] argv A pointer to the argument list
303 void SetCommandLineOptions(int* argc, char** argv[])
310 * Gets the path at which application resources are stored.
312 static std::string GetResourcePath();
315 * Gets the path at which application data are stored.
317 static std::string GetDataPath();
320 * Sets system language.
322 void SetLanguage(const std::string& language);
325 * Sets system region.
327 void SetRegion(const std::string& region);
330 * Gets system language.
332 std::string GetLanguage() const;
335 * Gets system region.
337 std::string GetRegion() const;
340 * Called by the App framework when an application lifecycle event occurs.
341 * @param[in] type The type of event occurred.
342 * @param[in] data The data of event occurred.
344 bool AppStatusHandler(int type, void* data);
347 * Called by the adaptor when an idle callback is added.
348 * @param[in] timeout The timeout of the callback.
349 * @param[in] data The data of of the callback.
350 * @param[in] callback The callback.
351 * @return The callback id.
353 unsigned int AddIdle(int timeout, void* data, bool (*callback)(void* data));
356 * Called by the adaptor when an idle callback is removed.
357 * @param[in] id The callback id.
359 void RemoveIdle(unsigned int id);
363 Framework(const Framework&);
364 Framework& operator=(Framework&);
368 * Called when the application is created.
373 * Called app_reset callback was called with bundle.
375 void SetBundleName(const std::string& name);
378 * Called app_reset callback was called with bundle.
380 void SetBundleId(const std::string& id);
383 * Called if the application is aborted.
385 void AbortCallback();
388 * Called for initializing on specified backend. (X11 or Wayland)
394 TaskObserver& mTaskObserver;
400 std::string mBundleName;
401 std::string mBundleId;
402 AbortHandler mAbortHandler;
404 private: // impl members
409 } // namespace Adaptor
411 } // namespace Internal
415 #endif // DALI_INTERNAL_FRAMEWORK_H