2 * Copyright (c) 2023 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include <dali/public-api/adaptor-framework/application.h>
22 #include <dali/integration-api/debug.h>
23 #include <dali/public-api/object/object-registry.h>
26 #include <dali/internal/adaptor/common/application-impl.h>
30 Application Application::New()
32 return New(NULL, NULL);
35 Application Application::New(int* argc, char** argv[])
37 Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
40 // pre-initialized application
41 internal->SetCommandLineOptions(argc, argv);
45 WindowData windowData;
46 windowData.SetTransparency(false);
48 internal = Internal::Adaptor::Application::New(argc, argv, "", Internal::Adaptor::Framework::NORMAL, false, windowData);
50 return Application(internal.Get());
53 Application Application::New(int* argc, char** argv[], const std::string& stylesheet)
55 Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
58 // pre-initialized application
59 internal->SetCommandLineOptions(argc, argv);
60 internal->SetStyleSheet(stylesheet);
64 WindowData windowData;
65 windowData.SetTransparency(false);
67 internal = Internal::Adaptor::Application::New(argc, argv, stylesheet, Internal::Adaptor::Framework::NORMAL, false, windowData);
69 return Application(internal.Get());
72 Application Application::New(int* argc, char** argv[], const std::string& stylesheet, WINDOW_MODE windowMode)
74 Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
77 // pre-initialized application
78 internal->SetCommandLineOptions(argc, argv);
79 internal->SetStyleSheet(stylesheet);
81 internal->GetWindow().SetTransparency((windowMode == Application::TRANSPARENT));
85 WindowData windowData;
86 windowData.SetTransparency(windowMode == Application::TRANSPARENT);
88 internal = Internal::Adaptor::Application::New(argc, argv, stylesheet, Internal::Adaptor::Framework::NORMAL, false, windowData);
90 return Application(internal.Get());
93 Application Application::New(int* argc, char** argv[], const std::string& stylesheet, Application::WINDOW_MODE windowMode, PositionSize positionSize)
95 Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
98 // pre-initialized application
99 internal->SetCommandLineOptions(argc, argv);
100 internal->SetStyleSheet(stylesheet);
102 internal->GetWindow().SetTransparency(windowMode == Application::TRANSPARENT);
104 // Store only the value before adaptor is created
105 internal->StoreWindowPositionSize(positionSize);
109 WindowData windowData;
110 windowData.SetPositionSize(positionSize);
111 windowData.SetTransparency(windowMode == Application::TRANSPARENT);
113 internal = Internal::Adaptor::Application::New(argc, argv, stylesheet, Internal::Adaptor::Framework::NORMAL, false, windowData);
115 return Application(internal.Get());
118 Application Application::New(int* argc, char** argv[], const std::string& stylesheet, Application::WINDOW_MODE windowMode, PositionSize positionSize, bool useUiThread)
120 Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
123 // pre-initialized application
124 internal->SetCommandLineOptions(argc, argv);
125 internal->SetStyleSheet(stylesheet);
127 internal->GetWindow().SetTransparency(windowMode == Application::TRANSPARENT);
129 // Store only the value before adaptor is created
130 internal->StoreWindowPositionSize(positionSize);
134 WindowData windowData;
135 windowData.SetPositionSize(positionSize);
136 windowData.SetTransparency(windowMode == Application::TRANSPARENT);
138 internal = Internal::Adaptor::Application::New(argc, argv, stylesheet, Internal::Adaptor::Framework::NORMAL, useUiThread, windowData);
140 return Application(internal.Get());
143 Application Application::New(int* argc, char** argv[], const std::string& stylesheet, bool useUiThread, WindowData& windowData)
145 Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
148 // pre-initialized application
149 internal->SetCommandLineOptions(argc, argv);
150 internal->SetStyleSheet(stylesheet);
152 // Set defaut Window type
153 internal->SetDefaultWindowType(windowData.GetWindowType());
154 internal->GetWindow().SetTransparency(windowData.GetTransparency());
156 // Store only the value before adaptor is created
157 internal->StoreWindowPositionSize(windowData.GetPositionSize());
161 internal = Internal::Adaptor::Application::New(argc, argv, stylesheet, Internal::Adaptor::Framework::NORMAL, useUiThread, windowData);
163 return Application(internal.Get());
166 Application::~Application()
170 Application::Application()
174 Application::Application(const Application& copy) = default;
176 Application& Application::operator=(const Application& rhs) = default;
178 Application::Application(Application&& rhs) noexcept = default;
180 Application& Application::operator=(Application&& rhs) noexcept = default;
182 void Application::MainLoop()
184 Internal::Adaptor::GetImplementation(*this).MainLoop();
187 void Application::Lower()
189 Internal::Adaptor::GetImplementation(*this).Lower();
192 void Application::Quit()
194 Internal::Adaptor::GetImplementation(*this).Quit();
197 bool Application::AddIdle(CallbackBase* callback)
199 return Internal::Adaptor::GetImplementation(*this).AddIdle(callback, false);
202 Window Application::GetWindow()
204 return Internal::Adaptor::GetImplementation(*this).GetWindow();
207 std::string Application::GetResourcePath()
209 return Internal::Adaptor::Application::GetResourcePath();
212 std::string Application::GetRegion() const
214 return Internal::Adaptor::GetImplementation(*this).GetRegion();
217 std::string Application::GetLanguage() const
219 return Internal::Adaptor::GetImplementation(*this).GetLanguage();
222 ObjectRegistry Application::GetObjectRegistry() const
224 return Internal::Adaptor::GetImplementation(*this).GetObjectRegistry();
227 Application::AppSignalType& Application::InitSignal()
229 return Internal::Adaptor::GetImplementation(*this).InitSignal();
232 Application::AppSignalType& Application::TerminateSignal()
234 return Internal::Adaptor::GetImplementation(*this).TerminateSignal();
237 Application::AppSignalType& Application::PauseSignal()
239 return Internal::Adaptor::GetImplementation(*this).PauseSignal();
242 Application::AppSignalType& Application::ResumeSignal()
244 return Internal::Adaptor::GetImplementation(*this).ResumeSignal();
247 Application::AppSignalType& Application::ResetSignal()
249 return Internal::Adaptor::GetImplementation(*this).ResetSignal();
252 Application::AppControlSignalType& Application::AppControlSignal()
254 return Internal::Adaptor::GetImplementation(*this).AppControlSignal();
257 Application::AppSignalType& Application::LanguageChangedSignal()
259 return Internal::Adaptor::GetImplementation(*this).LanguageChangedSignal();
262 Application::AppSignalType& Application::RegionChangedSignal()
264 return Internal::Adaptor::GetImplementation(*this).RegionChangedSignal();
267 Application::LowBatterySignalType& Application::LowBatterySignal()
269 return Internal::Adaptor::GetImplementation(*this).LowBatterySignal();
272 Application::LowMemorySignalType& Application::LowMemorySignal()
274 return Internal::Adaptor::GetImplementation(*this).LowMemorySignal();
277 Application::DeviceOrientationChangedSignalType& Application::DeviceOrientationChangedSignal()
279 return Internal::Adaptor::GetImplementation(*this).DeviceOrientationChangedSignal();
282 Application::AppSignalType& Application::TaskInitSignal()
284 return Internal::Adaptor::GetImplementation(*this).TaskInitSignal();
287 Application::AppSignalType& Application::TaskTerminateSignal()
289 return Internal::Adaptor::GetImplementation(*this).TaskTerminateSignal();
292 Application::AppControlSignalType& Application::TaskAppControlSignal()
294 return Internal::Adaptor::GetImplementation(*this).TaskAppControlSignal();
297 Application::AppSignalType& Application::TaskLanguageChangedSignal()
299 return Internal::Adaptor::GetImplementation(*this).TaskLanguageChangedSignal();
302 Application::AppSignalType& Application::TaskRegionChangedSignal()
304 return Internal::Adaptor::GetImplementation(*this).TaskRegionChangedSignal();
307 Application::LowBatterySignalType& Application::TaskLowBatterySignal()
309 return Internal::Adaptor::GetImplementation(*this).TaskLowBatterySignal();
312 Application::LowMemorySignalType& Application::TaskLowMemorySignal()
314 return Internal::Adaptor::GetImplementation(*this).TaskLowMemorySignal();
317 Application::DeviceOrientationChangedSignalType& Application::TaskDeviceOrientationChangedSignal()
319 return Internal::Adaptor::GetImplementation(*this).TaskDeviceOrientationChangedSignal();
322 Application::Application(Internal::Adaptor::Application* application)
323 : BaseHandle(application)