2 * Copyright (c) 2020 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], "");
47 return Application(internal.Get());
51 internal = Internal::Adaptor::Application::New(argc, argv, "", OPAQUE, PositionSize(), Internal::Adaptor::Framework::NORMAL);
52 return Application(internal.Get());
56 Application Application::New(int* argc, char** argv[], const std::string& stylesheet)
58 Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
61 // pre-initialized application
62 internal->SetCommandLineOptions(argc, argv);
63 if(argc && (*argc > 0))
65 internal->GetWindow().SetClass((*argv)[0], "");
67 internal->SetStyleSheet(stylesheet);
69 return Application(internal.Get());
73 internal = Internal::Adaptor::Application::New(argc, argv, stylesheet, OPAQUE, PositionSize(), Internal::Adaptor::Framework::NORMAL);
74 return Application(internal.Get());
78 Application Application::New(int* argc, char** argv[], const std::string& stylesheet, WINDOW_MODE windowMode)
80 Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
83 // pre-initialized application
84 internal->SetCommandLineOptions(argc, argv);
85 if(argc && (*argc > 0))
87 internal->GetWindow().SetClass((*argv)[0], "");
89 internal->SetStyleSheet(stylesheet);
91 internal->GetWindow().SetTransparency((windowMode == Application::OPAQUE ? false : true));
93 return Application(internal.Get());
97 internal = Internal::Adaptor::Application::New(argc, argv, stylesheet, windowMode, PositionSize(), Internal::Adaptor::Framework::NORMAL);
98 return Application(internal.Get());
102 Application Application::New(int* argc, char** argv[], const std::string& stylesheet, Application::WINDOW_MODE windowMode, PositionSize positionSize)
104 Internal::Adaptor::ApplicationPtr internal = Internal::Adaptor::Application::GetPreInitializedApplication();
107 // pre-initialized application
108 internal->SetCommandLineOptions(argc, argv);
109 if(argc && (*argc > 0))
111 internal->GetWindow().SetClass((*argv)[0], "");
113 internal->SetStyleSheet(stylesheet);
115 internal->GetWindow().SetTransparency((windowMode == Application::OPAQUE ? false : true));
116 internal->GetWindow().SetSize(Window::WindowSize(positionSize.width, positionSize.height));
117 internal->GetWindow().SetPosition(Window::WindowPosition(positionSize.x, positionSize.y));
119 return Application(internal.Get());
123 internal = Internal::Adaptor::Application::New(argc, argv, stylesheet, windowMode, positionSize, Internal::Adaptor::Framework::NORMAL);
124 return Application(internal.Get());
128 Application::~Application()
132 Application::Application()
136 Application::Application(const Application& copy) = default;
138 Application& Application::operator=(const Application& rhs) = default;
140 Application::Application(Application&& rhs) = default;
142 Application& Application::operator=(Application&& rhs) = default;
144 void Application::MainLoop()
146 Internal::Adaptor::GetImplementation(*this).MainLoop();
149 void Application::Lower()
151 Internal::Adaptor::GetImplementation(*this).Lower();
154 void Application::Quit()
156 Internal::Adaptor::GetImplementation(*this).Quit();
159 bool Application::AddIdle(CallbackBase* callback)
161 return Internal::Adaptor::GetImplementation(*this).AddIdle(callback, false);
164 Window Application::GetWindow()
166 return Internal::Adaptor::GetImplementation(*this).GetWindow();
169 std::string Application::GetResourcePath()
171 return Internal::Adaptor::Application::GetResourcePath();
174 std::string Application::GetRegion() const
176 return Internal::Adaptor::GetImplementation(*this).GetRegion();
179 std::string Application::GetLanguage() const
181 return Internal::Adaptor::GetImplementation(*this).GetLanguage();
184 ObjectRegistry Application::GetObjectRegistry() const
186 return Internal::Adaptor::GetImplementation(*this).GetObjectRegistry();
189 Application::AppSignalType& Application::InitSignal()
191 return Internal::Adaptor::GetImplementation(*this).InitSignal();
194 Application::AppSignalType& Application::TerminateSignal()
196 return Internal::Adaptor::GetImplementation(*this).TerminateSignal();
199 Application::AppSignalType& Application::PauseSignal()
201 return Internal::Adaptor::GetImplementation(*this).PauseSignal();
204 Application::AppSignalType& Application::ResumeSignal()
206 return Internal::Adaptor::GetImplementation(*this).ResumeSignal();
209 Application::AppSignalType& Application::ResetSignal()
211 return Internal::Adaptor::GetImplementation(*this).ResetSignal();
214 Application::AppControlSignalType& Application::AppControlSignal()
216 return Internal::Adaptor::GetImplementation(*this).AppControlSignal();
219 Application::AppSignalType& Application::LanguageChangedSignal()
221 return Internal::Adaptor::GetImplementation(*this).LanguageChangedSignal();
224 Application::AppSignalType& Application::RegionChangedSignal()
226 return Internal::Adaptor::GetImplementation(*this).RegionChangedSignal();
229 Application::LowBatterySignalType& Application::LowBatterySignal()
231 return Internal::Adaptor::GetImplementation(*this).LowBatterySignal();
234 Application::LowMemorySignalType& Application::LowMemorySignal()
236 return Internal::Adaptor::GetImplementation(*this).LowMemorySignal();
239 Graphics::Controller& Application::GetController()
241 return Internal::Adaptor::GetImplementation(*this).GetController();
244 Application::Application(Internal::Adaptor::Application* application)
245 : BaseHandle(application)