2 * Copyright (c) 2022 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);
42 if(argc && (*argc > 0))
44 internal->GetWindow().SetClass((*argv)[0], "");
49 internal = Internal::Adaptor::Application::New(argc, argv, "", OPAQUE, PositionSize(), Internal::Adaptor::Framework::NORMAL, WindowType::NORMAL, false);
51 return Application(internal.Get());
54 Application Application::New(int* argc, char** argv[], const std::string& stylesheet)
56 Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
59 // pre-initialized application
60 internal->SetCommandLineOptions(argc, argv);
61 if(argc && (*argc > 0))
63 internal->GetWindow().SetClass((*argv)[0], "");
65 internal->SetStyleSheet(stylesheet);
69 internal = Internal::Adaptor::Application::New(argc, argv, stylesheet, OPAQUE, PositionSize(), Internal::Adaptor::Framework::NORMAL, WindowType::NORMAL, false);
71 return Application(internal.Get());
74 Application Application::New(int* argc, char** argv[], const std::string& stylesheet, WINDOW_MODE windowMode)
76 Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
79 // pre-initialized application
80 internal->SetCommandLineOptions(argc, argv);
81 if(argc && (*argc > 0))
83 internal->GetWindow().SetClass((*argv)[0], "");
85 internal->SetStyleSheet(stylesheet);
87 internal->GetWindow().SetTransparency((windowMode == Application::OPAQUE ? false : true));
91 internal = Internal::Adaptor::Application::New(argc, argv, stylesheet, windowMode, PositionSize(), Internal::Adaptor::Framework::NORMAL, WindowType::NORMAL, false);
93 return Application(internal.Get());
96 Application Application::New(int* argc, char** argv[], const std::string& stylesheet, Application::WINDOW_MODE windowMode, PositionSize positionSize)
98 Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
101 // pre-initialized application
102 internal->SetCommandLineOptions(argc, argv);
103 if(argc && (*argc > 0))
105 internal->GetWindow().SetClass((*argv)[0], "");
107 internal->SetStyleSheet(stylesheet);
109 internal->GetWindow().SetTransparency((windowMode == Application::OPAQUE ? false : true));
111 //Store only the value before adaptor is created
112 internal->StoreWindowPositionSize(positionSize);
116 internal = Internal::Adaptor::Application::New(argc, argv, stylesheet, windowMode, positionSize, Internal::Adaptor::Framework::NORMAL, WindowType::NORMAL, false);
118 return Application(internal.Get());
121 Application Application::New(int* argc, char** argv[], const std::string& stylesheet, Application::WINDOW_MODE windowMode, PositionSize positionSize, bool useUiThread)
123 Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
126 // pre-initialized application
127 internal->SetCommandLineOptions(argc, argv);
128 if(argc && (*argc > 0))
130 internal->GetWindow().SetClass((*argv)[0], "");
132 internal->SetStyleSheet(stylesheet);
134 internal->GetWindow().SetTransparency((windowMode == Application::OPAQUE ? false : true));
136 //Store only the value before adaptor is created
137 internal->StoreWindowPositionSize(positionSize);
141 internal = Internal::Adaptor::Application::New(argc, argv, stylesheet, windowMode, positionSize, Internal::Adaptor::Framework::NORMAL, WindowType::NORMAL, useUiThread);
143 return Application(internal.Get());
146 Application::~Application()
150 Application::Application()
154 Application::Application(const Application& copy) = default;
156 Application& Application::operator=(const Application& rhs) = default;
158 Application::Application(Application&& rhs) = default;
160 Application& Application::operator=(Application&& rhs) = default;
162 void Application::MainLoop()
164 Internal::Adaptor::GetImplementation(*this).MainLoop();
167 void Application::Lower()
169 Internal::Adaptor::GetImplementation(*this).Lower();
172 void Application::Quit()
174 Internal::Adaptor::GetImplementation(*this).Quit();
177 bool Application::AddIdle(CallbackBase* callback)
179 return Internal::Adaptor::GetImplementation(*this).AddIdle(callback, false);
182 Window Application::GetWindow()
184 return Internal::Adaptor::GetImplementation(*this).GetWindow();
187 std::string Application::GetResourcePath()
189 return Internal::Adaptor::Application::GetResourcePath();
192 std::string Application::GetRegion() const
194 return Internal::Adaptor::GetImplementation(*this).GetRegion();
197 std::string Application::GetLanguage() const
199 return Internal::Adaptor::GetImplementation(*this).GetLanguage();
202 ObjectRegistry Application::GetObjectRegistry() const
204 return Internal::Adaptor::GetImplementation(*this).GetObjectRegistry();
207 Application::AppSignalType& Application::InitSignal()
209 return Internal::Adaptor::GetImplementation(*this).InitSignal();
212 Application::AppSignalType& Application::TerminateSignal()
214 return Internal::Adaptor::GetImplementation(*this).TerminateSignal();
217 Application::AppSignalType& Application::PauseSignal()
219 return Internal::Adaptor::GetImplementation(*this).PauseSignal();
222 Application::AppSignalType& Application::ResumeSignal()
224 return Internal::Adaptor::GetImplementation(*this).ResumeSignal();
227 Application::AppSignalType& Application::ResetSignal()
229 return Internal::Adaptor::GetImplementation(*this).ResetSignal();
232 Application::AppControlSignalType& Application::AppControlSignal()
234 return Internal::Adaptor::GetImplementation(*this).AppControlSignal();
237 Application::AppSignalType& Application::LanguageChangedSignal()
239 return Internal::Adaptor::GetImplementation(*this).LanguageChangedSignal();
242 Application::AppSignalType& Application::RegionChangedSignal()
244 return Internal::Adaptor::GetImplementation(*this).RegionChangedSignal();
247 Application::LowBatterySignalType& Application::LowBatterySignal()
249 return Internal::Adaptor::GetImplementation(*this).LowBatterySignal();
252 Application::LowMemorySignalType& Application::LowMemorySignal()
254 return Internal::Adaptor::GetImplementation(*this).LowMemorySignal();
257 Application::AppSignalType& Application::TaskInitSignal()
259 return Internal::Adaptor::GetImplementation(*this).TaskInitSignal();
262 Application::AppSignalType& Application::TaskTerminateSignal()
264 return Internal::Adaptor::GetImplementation(*this).TaskTerminateSignal();
267 Application::AppControlSignalType& Application::TaskAppControlSignal()
269 return Internal::Adaptor::GetImplementation(*this).TaskAppControlSignal();
272 Application::AppSignalType& Application::TaskLanguageChangedSignal()
274 return Internal::Adaptor::GetImplementation(*this).TaskLanguageChangedSignal();
277 Application::AppSignalType& Application::TaskRegionChangedSignal()
279 return Internal::Adaptor::GetImplementation(*this).TaskRegionChangedSignal();
282 Application::LowBatterySignalType& Application::TaskLowBatterySignal()
284 return Internal::Adaptor::GetImplementation(*this).TaskLowBatterySignal();
287 Application::LowMemorySignalType& Application::TaskLowMemorySignal()
289 return Internal::Adaptor::GetImplementation(*this).TaskLowMemorySignal();
292 Application::Application(Internal::Adaptor::Application* application)
293 : BaseHandle(application)