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 internal = Internal::Adaptor::Application::New(argc, argv, "", OPAQUE, PositionSize(), Internal::Adaptor::Framework::NORMAL, WindowType::NORMAL, false);
47 return Application(internal.Get());
50 Application Application::New(int* argc, char** argv[], const std::string& stylesheet)
52 Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
55 // pre-initialized application
56 internal->SetCommandLineOptions(argc, argv);
57 internal->SetStyleSheet(stylesheet);
61 internal = Internal::Adaptor::Application::New(argc, argv, stylesheet, OPAQUE, PositionSize(), Internal::Adaptor::Framework::NORMAL, WindowType::NORMAL, false);
63 return Application(internal.Get());
66 Application Application::New(int* argc, char** argv[], const std::string& stylesheet, WINDOW_MODE windowMode)
68 Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
71 // pre-initialized application
72 internal->SetCommandLineOptions(argc, argv);
73 internal->SetStyleSheet(stylesheet);
75 internal->GetWindow().SetTransparency((windowMode == Application::OPAQUE ? false : true));
79 internal = Internal::Adaptor::Application::New(argc, argv, stylesheet, windowMode, PositionSize(), Internal::Adaptor::Framework::NORMAL, WindowType::NORMAL, false);
81 return Application(internal.Get());
84 Application Application::New(int* argc, char** argv[], const std::string& stylesheet, Application::WINDOW_MODE windowMode, PositionSize positionSize)
86 Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
89 // pre-initialized application
90 internal->SetCommandLineOptions(argc, argv);
91 internal->SetStyleSheet(stylesheet);
93 internal->GetWindow().SetTransparency((windowMode == Application::OPAQUE ? false : true));
95 //Store only the value before adaptor is created
96 internal->StoreWindowPositionSize(positionSize);
100 internal = Internal::Adaptor::Application::New(argc, argv, stylesheet, windowMode, positionSize, Internal::Adaptor::Framework::NORMAL, WindowType::NORMAL, false);
102 return Application(internal.Get());
105 Application Application::New(int* argc, char** argv[], const std::string& stylesheet, Application::WINDOW_MODE windowMode, PositionSize positionSize, bool useUiThread)
107 Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
110 // pre-initialized application
111 internal->SetCommandLineOptions(argc, argv);
112 internal->SetStyleSheet(stylesheet);
114 internal->GetWindow().SetTransparency((windowMode == Application::OPAQUE ? false : true));
116 //Store only the value before adaptor is created
117 internal->StoreWindowPositionSize(positionSize);
121 internal = Internal::Adaptor::Application::New(argc, argv, stylesheet, windowMode, positionSize, Internal::Adaptor::Framework::NORMAL, WindowType::NORMAL, useUiThread);
123 return Application(internal.Get());
126 Application Application::New(int* argc, char** argv[], const std::string& stylesheet, bool useUiThread, WindowData& windowData)
128 Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
131 // pre-initialized application
132 internal->SetCommandLineOptions(argc, argv);
133 internal->SetStyleSheet(stylesheet);
135 // Set defaut Window type
136 internal->SetDefaultWindowType(windowData.GetWindowType());
137 internal->GetWindow().SetTransparency(windowData.GetTransparency());
139 // Store only the value before adaptor is created
140 internal->StoreWindowPositionSize(windowData.GetPositionSize());
145 internal = Internal::Adaptor::Application::New(argc, argv, stylesheet,
146 windowData.GetTransparency() ? WINDOW_MODE::TRANSPARENT : WINDOW_MODE::OPAQUE,
147 windowData.GetPositionSize(), Internal::Adaptor::Framework::NORMAL,
148 windowData.GetWindowType(), useUiThread);
151 return Application(internal.Get());
154 Application::~Application()
158 Application::Application()
162 Application::Application(const Application& copy) = default;
164 Application& Application::operator=(const Application& rhs) = default;
166 Application::Application(Application&& rhs) noexcept = default;
168 Application& Application::operator=(Application&& rhs) noexcept = default;
170 void Application::MainLoop()
172 Internal::Adaptor::GetImplementation(*this).MainLoop();
175 void Application::Lower()
177 Internal::Adaptor::GetImplementation(*this).Lower();
180 void Application::Quit()
182 Internal::Adaptor::GetImplementation(*this).Quit();
185 bool Application::AddIdle(CallbackBase* callback)
187 return Internal::Adaptor::GetImplementation(*this).AddIdle(callback, false);
190 Window Application::GetWindow()
192 return Internal::Adaptor::GetImplementation(*this).GetWindow();
195 std::string Application::GetResourcePath()
197 return Internal::Adaptor::Application::GetResourcePath();
200 std::string Application::GetRegion() const
202 return Internal::Adaptor::GetImplementation(*this).GetRegion();
205 std::string Application::GetLanguage() const
207 return Internal::Adaptor::GetImplementation(*this).GetLanguage();
210 ObjectRegistry Application::GetObjectRegistry() const
212 return Internal::Adaptor::GetImplementation(*this).GetObjectRegistry();
215 Application::AppSignalType& Application::InitSignal()
217 return Internal::Adaptor::GetImplementation(*this).InitSignal();
220 Application::AppSignalType& Application::TerminateSignal()
222 return Internal::Adaptor::GetImplementation(*this).TerminateSignal();
225 Application::AppSignalType& Application::PauseSignal()
227 return Internal::Adaptor::GetImplementation(*this).PauseSignal();
230 Application::AppSignalType& Application::ResumeSignal()
232 return Internal::Adaptor::GetImplementation(*this).ResumeSignal();
235 Application::AppSignalType& Application::ResetSignal()
237 return Internal::Adaptor::GetImplementation(*this).ResetSignal();
240 Application::AppControlSignalType& Application::AppControlSignal()
242 return Internal::Adaptor::GetImplementation(*this).AppControlSignal();
245 Application::AppSignalType& Application::LanguageChangedSignal()
247 return Internal::Adaptor::GetImplementation(*this).LanguageChangedSignal();
250 Application::AppSignalType& Application::RegionChangedSignal()
252 return Internal::Adaptor::GetImplementation(*this).RegionChangedSignal();
255 Application::LowBatterySignalType& Application::LowBatterySignal()
257 return Internal::Adaptor::GetImplementation(*this).LowBatterySignal();
260 Application::LowMemorySignalType& Application::LowMemorySignal()
262 return Internal::Adaptor::GetImplementation(*this).LowMemorySignal();
265 Application::DeviceOrientationChangedSignalType& Application::DeviceOrientationChangedSignal()
267 return Internal::Adaptor::GetImplementation(*this).DeviceOrientationChangedSignal();
270 Application::AppSignalType& Application::TaskInitSignal()
272 return Internal::Adaptor::GetImplementation(*this).TaskInitSignal();
275 Application::AppSignalType& Application::TaskTerminateSignal()
277 return Internal::Adaptor::GetImplementation(*this).TaskTerminateSignal();
280 Application::AppControlSignalType& Application::TaskAppControlSignal()
282 return Internal::Adaptor::GetImplementation(*this).TaskAppControlSignal();
285 Application::AppSignalType& Application::TaskLanguageChangedSignal()
287 return Internal::Adaptor::GetImplementation(*this).TaskLanguageChangedSignal();
290 Application::AppSignalType& Application::TaskRegionChangedSignal()
292 return Internal::Adaptor::GetImplementation(*this).TaskRegionChangedSignal();
295 Application::LowBatterySignalType& Application::TaskLowBatterySignal()
297 return Internal::Adaptor::GetImplementation(*this).TaskLowBatterySignal();
300 Application::LowMemorySignalType& Application::TaskLowMemorySignal()
302 return Internal::Adaptor::GetImplementation(*this).TaskLowMemorySignal();
305 Application::DeviceOrientationChangedSignalType& Application::TaskDeviceOrientationChangedSignal()
307 return Internal::Adaptor::GetImplementation(*this).TaskDeviceOrientationChangedSignal();
310 Application::Application(Internal::Adaptor::Application* application)
311 : BaseHandle(application)