2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
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.
17 * @file application.cpp
18 * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com)
20 * @brief This file is the implementation file of MVC application support
23 #include <dpl/application.h>
24 #include <dpl/log/log.h>
26 namespace // anonymous
28 static DPL::Application *g_application = NULL;
29 } // namespace anonymous
32 bool Application::app_create(void *data)
34 Application *This = static_cast<Application *>(data);
39 void Application::app_terminate(void *data)
41 Application *This = static_cast<Application *>(data);
45 void Application::app_pause(void *data)
47 Application *This = static_cast<Application *>(data);
51 void Application::app_resume(void *data)
53 Application *This = static_cast<Application *>(data);
57 void Application::app_control(app_control_h app_control, void *data)
59 Application *This = static_cast<Application *>(data);
61 // convert app_control to bundle
63 app_control_to_bundle(app_control, &b);
68 Application::Application(int argc, char** argv,
69 const std::string& applicationName,
70 bool showMainWindow) :
73 m_applicationName(applicationName),
74 m_mainWindowVisible(showMainWindow)
76 if (g_application != NULL) {
77 ThrowMsg(Exception::TooManyInstances,
78 "Only single instance of Application allowed at one time!");
84 Application::~Application()
89 int Application::Exec()
91 LogPedantic("Starting application framework...");
93 ui_app_lifecycle_callback_s callback;
94 callback.create = app_create;
95 callback.terminate = app_terminate;
96 callback.pause = app_pause;
97 callback.resume = app_resume;
98 callback.app_control = app_control;
100 int result = ui_app_main(m_argc, m_argv, &callback, this);
102 LogPedantic("Exited application framework");
107 void Application::OnCreate()
109 LogPedantic("On application create");
112 void Application::OnStart()
114 LogPedantic("On application start");
117 void Application::OnStop()
119 LogPedantic("On application stop");
122 void Application::OnResume()
124 LogPedantic("On application resume");
127 void Application::OnPause()
129 LogPedantic("On application pause");
132 void Application::OnRelaunch()
134 LogPedantic("On application relaunch");
137 void Application::OnReset(bundle *b)
140 LogPedantic("On application reset");
143 void Application::OnTerminate()
145 LogPedantic("On application terminate");
148 void Application::OnLowMemory()
150 LogPedantic("On application low memory");
153 void Application::OnLowBattery()
155 LogPedantic("On application low battery");
158 void Application::OnLanguageChanged()
160 LogPedantic("On application language changed");
163 void Application::Quit()
168 DPL::Atomic ApplicationExt::m_useCount(0);
170 ApplicationExt::ApplicationExt(int argc,
172 const std::string& applicationName,
173 bool showMainWindow) :
174 Application(argc, argv, applicationName, showMainWindow)
177 ApplicationExt::~ApplicationExt()
180 int ApplicationExt::Exec()
182 if (0 == m_useCount.CompareAndExchange(0, 1)) {
183 return Application::Exec();
190 void ApplicationExt::Quit()