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.
67 * Invoked when the application is to be initialised.
74 * Invoked when the application is to be terminated.
76 virtual void OnTerminate()
81 * Invoked when the application is to be paused.
83 virtual void OnPause()
88 * Invoked when the application is to be resumed.
90 virtual void OnResume()
95 * Invoked when the application is to be reset.
97 virtual void OnReset()
102 * Invoked when the AppControl message is received.
103 * @param[in] The bundle data of AppControl message.
105 virtual void OnAppControl(void*)
109 #ifdef APPCORE_WATCH_AVAILABLE
111 * Invoked at every second
113 virtual void OnTimeTick(WatchTime&)
118 * Invoked at every second in ambient mode
120 virtual void OnAmbientTick(WatchTime&)
125 * Invoked when the device enters or exits ambient mode
127 virtual void OnAmbientChanged(bool ambient)
133 * Invoked when the language of the device is changed.
135 virtual void OnLanguageChanged()
140 * Invoked when the region is changed.
142 virtual void OnRegionChanged()
147 * Invoked when the battery level of the device is low.
149 virtual void OnBatteryLow(Dali::DeviceStatus::Battery::Status status)
154 * Invoked when the memory level of the device is low.
156 virtual void OnMemoryLow(Dali::DeviceStatus::Memory::Status status)
161 * Invoked when the platform surface is created.
163 virtual void OnSurfaceCreated(Any newSurface)
168 * Invoked when the platform surface is destroyed.
170 virtual void OnSurfaceDestroyed(Any newSurface)
174 #ifdef COMPONENT_APPLICATION_SUPPORT
176 * Invoked when the component application is created.
178 virtual Any OnCreate()
188 * @param[in] observer The observer of the Framework.
189 * @param[in] argc A pointer to the number of arguments.
190 * @param[in] argv A pointer the the argument list.
191 * @param[in] type The type of application
193 Framework(Observer& observer, int* argc, char*** argv, Type type = NORMAL);
202 * Runs the main loop of framework
207 * Quits the main loop
212 * Checks whether the main loop of the framework is running.
213 * @return true, if the main loop is running, false otherwise.
215 bool IsMainLoopRunning();
218 * If the main loop aborts unexpectedly, then the connected callback function is called.
219 * @param[in] callBack The function to call.
220 * @note Only one callback can be registered. The last callback to be set will be called on abort.
221 * @note The ownership of callback is passed onto this class.
223 void AddAbortCallback(CallbackBase* callback);
226 * Gets bundle name which was passed in app_reset callback.
228 std::string GetBundleName() const;
231 * Gets bundle id which was passed in app_reset callback.
233 std::string GetBundleId() const;
236 * Sets a command line options.
237 * This is used in case of the preinitialized application.
238 * @param[in] argc A pointer to the number of arguments
239 * @param[in] argv A pointer to the argument list
241 void SetCommandLineOptions(int* argc, char** argv[])
248 * Gets the path at which application resources are stored.
250 static std::string GetResourcePath();
253 * Gets the path at which application data are stored.
255 static std::string GetDataPath();
258 * Sets system language.
260 void SetLanguage(const std::string& language);
263 * Sets system region.
265 void SetRegion(const std::string& region);
268 * Gets system language.
270 std::string GetLanguage() const;
273 * Gets system region.
275 std::string GetRegion() const;
278 * Called by the App framework when an application lifecycle event occurs.
279 * @param[in] type The type of event occurred.
280 * @param[in] data The data of event occurred.
282 bool AppStatusHandler(int type, void* data);
285 * Called by the adaptor when an idle callback is added.
286 * @param[in] timeout The timeout of the callback.
287 * @param[in] data The data of of the callback.
288 * @param[in] callback The callback.
289 * @return The callback id.
291 unsigned int AddIdle(int timeout, void* data, bool (*callback)(void* data));
294 * Called by the adaptor when an idle callback is removed.
295 * @param[in] id The callback id.
297 void RemoveIdle(unsigned int id);
301 Framework(const Framework&);
302 Framework& operator=(Framework&);
306 * Called when the application is created.
311 * Called app_reset callback was called with bundle.
313 void SetBundleName(const std::string& name);
316 * Called app_reset callback was called with bundle.
318 void SetBundleId(const std::string& id);
321 * Called if the application is aborted.
323 void AbortCallback();
326 * Called for initializing on specified backend. (X11 or Wayland)
337 std::string mBundleName;
338 std::string mBundleId;
339 AbortHandler mAbortHandler;
341 private: // impl members
346 } // namespace Adaptor
348 } // namespace Internal
352 #endif // DALI_INTERNAL_FRAMEWORK_H