1 #ifndef DALI_INTERNAL_FRAMEWORK_H
2 #define DALI_INTERNAL_FRAMEWORK_H
5 * Copyright (c) 2019 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/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>
45 * The Framework class is ideally placed to provide key API required by Applications.
47 * The class is also used to register callbacks with the TIZEN platform so that
48 * we know when any of the application lifecycle events occur. This includes events
49 * like when our application is to be initialised, terminated, paused, resumed etc.
58 NORMAL, ///< normal appFramework
59 WATCH, ///< watch appFramework
60 WIDGET, ///< widget appFramework
61 COMPONENT ///< component appFramework
65 * Observer class for the framework.
72 * Invoked when the application is to be initialised.
74 virtual void OnInit() {}
77 * Invoked when the application is to be terminated.
79 virtual void OnTerminate() {}
82 * Invoked when the application is to be paused.
84 virtual void OnPause() {}
87 * Invoked when the application is to be resumed.
89 virtual void OnResume() {}
92 * Invoked when the application is to be reset.
94 virtual void OnReset() {}
97 * Invoked when the AppControl message is received.
98 * @param[in] The bundle data of AppControl message.
100 virtual void OnAppControl(void *) {}
102 #ifdef APPCORE_WATCH_AVAILABLE
104 * Invoked at every second
106 virtual void OnTimeTick(WatchTime&) {}
109 * Invoked at every second in ambient mode
111 virtual void OnAmbientTick(WatchTime&) {}
114 * Invoked when the device enters or exits ambient mode
116 virtual void OnAmbientChanged(bool ambient) {}
120 * Invoked when the language of the device is changed.
122 virtual void OnLanguageChanged() {}
125 * Invoked when the region is changed.
127 virtual void OnRegionChanged() {}
130 * Invoked when the battery level of the device is low.
132 virtual void OnBatteryLow( Dali::DeviceStatus::Battery::Status status ) {}
135 * Invoked when the memory level of the device is low.
137 virtual void OnMemoryLow( Dali::DeviceStatus::Memory::Status status ) {}
140 * Invoked when the platform surface is created.
142 virtual void OnSurfaceCreated( Any newSurface ) {}
145 * Invoked when the platform surface is destroyed.
147 virtual void OnSurfaceDestroyed( Any newSurface ) {}
149 #ifdef COMPONENT_APPLICATION_SUPPORT
151 * Invoked when the component application is created.
153 virtual Any OnCreate() { return nullptr; }
161 * @param[in] observer The observer of the Framework.
162 * @param[in] argc A pointer to the number of arguments.
163 * @param[in] argv A pointer the the argument list.
164 * @param[in] type The type of application
166 Framework( Observer& observer, int* argc, char ***argv, Type type = NORMAL );
176 * Runs the main loop of framework
181 * Quits the main loop
186 * Checks whether the main loop of the framework is running.
187 * @return true, if the main loop is running, false otherwise.
189 bool IsMainLoopRunning();
192 * If the main loop aborts unexpectedly, then the connected callback function is called.
193 * @param[in] callBack The function to call.
194 * @note Only one callback can be registered. The last callback to be set will be called on abort.
195 * @note The ownership of callback is passed onto this class.
197 void AddAbortCallback( CallbackBase* callback );
200 * Gets bundle name which was passed in app_reset callback.
202 std::string GetBundleName() const;
205 * Gets bundle id which was passed in app_reset callback.
207 std::string GetBundleId() const;
210 * Sets a command line options.
211 * This is used in case of the preinitialized application.
212 * @param[in] argc A pointer to the number of arguments
213 * @param[in] argv A pointer to the argument list
215 void SetCommandLineOptions( int* argc, char **argv[] )
223 * Gets the path at which application resources are stored.
225 static std::string GetResourcePath();
228 * Gets the path at which application data are stored.
230 static std::string GetDataPath();
233 * Sets system language.
235 void SetLanguage( const std::string& language );
238 * Sets system region.
240 void SetRegion( const std::string& region );
243 * Gets system language.
245 std::string GetLanguage() const;
248 * Gets system region.
250 std::string GetRegion() const;
253 * Called by the App framework when an application lifecycle event occurs.
254 * @param[in] type The type of event occurred.
255 * @param[in] data The data of event occurred.
257 bool AppStatusHandler(int type, void* data);
260 * Called by the adaptor when an idle callback is added.
261 * @param[in] timeout The timeout of the callback.
262 * @param[in] data The data of of the callback.
263 * @param[in] callback The callback.
264 * @return The callback id.
266 unsigned int AddIdle( int timeout, void* data, bool ( *callback )( void *data ) );
269 * Called by the adaptor when an idle callback is removed.
270 * @param[in] id The callback id.
272 void RemoveIdle( unsigned int id );
277 Framework(const Framework&);
278 Framework& operator=(Framework&);
283 * Called when the application is created.
288 * Called app_reset callback was called with bundle.
290 void SetBundleName(const std::string& name);
293 * Called app_reset callback was called with bundle.
295 void SetBundleId(const std::string& id);
298 * Called if the application is aborted.
300 void AbortCallback();
303 * Called for initializing on specified backend. (X11 or Wayland)
314 std::string mBundleName;
315 std::string mBundleId;
316 AbortHandler mAbortHandler;
318 private: // impl members
324 } // namespace Adaptor
326 } // namespace Internal
330 #endif // DALI_INTERNAL_FRAMEWORK_H