/**
* @file core_module.cpp
* @author Przemyslaw Ciezkowski (p.ciezkowski@samsung.com)
+ * @author Andrzej Surdej (a.surdej@samsung.com)
* @version 1.0
* @brief File contains definitions of wrt core module.
*/
#include "runnable_widget_object.h"
#include <string>
#include <main_thread.h>
-#include <global_context.h>
#include <dpl/log/log.h>
#include <dpl/assert.h>
#include <dpl/exception.h>
-#include <dpl/popup/popup_controller.h>
-#include <libxml/parser.h>
+#include <dpl/singleton_impl.h>
+#include <dpl/optional_typedefs.h>
#include "localization_setting.h"
#include <dpl/wrt-dao-ro/global_config.h>
#include <profiling_util.h>
#include <widget_deserialize_model.h>
#include <dpl/wrt-dao-ro/widget_dao_read_only.h>
+#include <dpl/wrt-dao-ro/global_dao_read_only.h>
-namespace { //Anonymous
+IMPLEMENT_SINGLETON(WRT::CoreModule)
+
+namespace {
+const char* const TEXT_DOMAIN = "wrt";
+const char* const TEXT_LOCALE_PATH = "/usr/share/wrt-engine/locale";
std::string cutOffFileName(const std::string& path)
{
bool if_ok = true;
if_ok &= (isDir(cutOffFileName(GetWrtDatabaseFilePath())));
- if (!if_ok) {
- LogError("Path <" << GetWrtDatabaseFilePath() << "> does not exist.");
- }
-
if_ok &= (isDir(GetDevicePluginPath()));
- if (!if_ok) {
- LogError("Path <" << GetDevicePluginPath() << "> does not exist.");
+ if_ok &= (isDir(GetUserInstalledWidgetPath()));
+ return if_ok;
+}
+} // namespace anonymous
+
+namespace WRT {
+class CoreModuleImpl
+{
+ public:
+
+ CoreModuleImpl() : m_initialized(false)
+ {
+ LogDebug("enter");
}
- if_ok &= (isDir(GetFactoryInstalledWidgetPath()));
- if (!if_ok) {
- LogError("Path <" << GetFactoryInstalledWidgetPath() <<
- "> does not exist.");
+ ~CoreModuleImpl()
+ {
+ LogDebug("Core module implementation destroyed");
}
- if_ok &= (isDir(GetUserInstalledWidgetPath()));
- if (!if_ok) {
- LogError("Path <" << GetUserInstalledWidgetPath() <<
- "> does not exist.");
+ bool Init()
+ {
+ if (!m_initialized) {
+ ADD_PROFILING_POINT("CoreModule::Init", "point");
+ DPL::Log::LogSystemSingleton::Instance().SetTag("WRT");
+ LogDebug("Initialize");
+ if (!checkPaths()) {
+ LogError("Required path does not exist");
+ return false;
+ }
+ Try
+ {
+ ADD_PROFILING_POINT("attach databases", "start");
+ MainThreadSingleton::Instance().AttachDatabases();
+ ADD_PROFILING_POINT("attach databases", "stop");
+ LogDebug("Initialize finished");
+ } catch (const DPL::Exception& ex) {
+ LogError("Internal Error during screen preparation:");
+ DPL::Exception::DisplayKnownException(ex);
+ /* TODO:
+ * Do deinitialization: check on which step exception occured
+ * and deinitialize only initialized parts.
+ */
+ return false;
+ }
+ bindtextdomain(TEXT_DOMAIN, TEXT_LOCALE_PATH);
+ m_initialized = true;
+ }
+ return true;
}
- return if_ok;
-}
-}// namespace anonymous
-namespace WRT {
+ void Terminate()
+ {
+ MainThreadSingleton::Instance().DetachDatabases();
+ m_initialized = false;
+ }
-namespace CoreModule {
+ RunnableWidgetObjectPtr getRunnableWidgetObject(
+ const std::string& tizenId)
+ {
+ try {
+ RunnableWidgetObjectPtr runnable;
+ WidgetModelPtr model =
+ Domain::deserializeWidgetModel(tizenId);
+ if (!!model) {
+ runnable.reset(new RunnableWidgetObject(model));
+ }
+ return runnable;
+ } catch (WrtDB::WidgetDAOReadOnly::Exception::WidgetNotExist) {
+ LogDebug("Widget not found.");
+ return RunnableWidgetObjectPtr();
+ }
+ }
-bool Init()
-{
- DPL::Log::LogSystemSingleton::Instance().SetTag("WRT");
- LogDebug("Initialize");
- if (!checkPaths()) {
- LogError("Required path does not exist");
- return false;
+ CoreModule::NetworkAccessMode homeNetworkAccess()
+ {
+ switch (WrtDB::GlobalDAOReadOnly::GetHomeNetworkDataUsage()) {
+ case WrtDB::GlobalDAOReadOnly::NEVER_CONNECT:
+ return CoreModule::NEVER_CONNECT;
+ case WrtDB::GlobalDAOReadOnly::ALWAYS_ASK:
+ return CoreModule::ALWAYS_ASK;
+ case WrtDB::GlobalDAOReadOnly::CONNECT_AUTOMATICALLY:
+ return CoreModule::CONNECT_AUTOMATICALLY;
+ default:
+ break;
+ }
+ LogWarning("using default value");
+ return CoreModule::ALWAYS_ASK;
}
- Try
+
+ CoreModule::NetworkAccessMode roamingNetworkAccess()
{
- GlobalContext::TouchArchitecture();
-
- ADD_PROFILING_POINT("attach databases", "start");
- MainThreadSingleton::Instance().AttachDatabases();
- ADD_PROFILING_POINT("attach databases", "stop");
-
- ADD_PROFILING_POINT("xml_parser_init", "start");
- xmlInitParser();
- ADD_PROFILING_POINT("xml_parser_init", "stop");
-
- // Initialize popup manager
- ADD_PROFILING_POINT("popup_manager_init", "start");
- DPL::Popup::PopupManagerSingleton::Instance().Initialize(
- DPL::Popup::PopupRendererPtr(new DPL::Popup::PopupRenderer));
- ADD_PROFILING_POINT("popup_manager_init", "stop");
-
- // Initialize Language Subtag registry
- ADD_PROFILING_POINT("language_rst_init", "start");
- LocalizationSetting::Initialize();
- ADD_PROFILING_POINT("language_rst_init", "stop");
-
- LogDebug("Initialize finished");
- } catch (const DPL::Exception& ex) {
- LogError("Internal Error during screen preparation:");
- DPL::Exception::DisplayKnownException(ex);
- /* TODO:
- * Do deinitialization: check on which step exception occured
- * and deinitialize only initialized parts.
- */
- return false;
+ switch (WrtDB::GlobalDAOReadOnly::GetRoamingDataUsage()) {
+ case WrtDB::GlobalDAOReadOnly::NEVER_CONNECT:
+ return CoreModule::NEVER_CONNECT;
+ case WrtDB::GlobalDAOReadOnly::ALWAYS_ASK:
+ return CoreModule::ALWAYS_ASK;
+ case WrtDB::GlobalDAOReadOnly::CONNECT_AUTOMATICALLY:
+ return CoreModule::CONNECT_AUTOMATICALLY;
+ default:
+ break;
+ }
+ LogWarning("using default value");
+ return CoreModule::ALWAYS_ASK;
}
- return true;
-}
-void Terminate()
+ private:
+ bool m_initialized;
+};
+
+CoreModule::CoreModule() : m_impl(new CoreModuleImpl())
+{}
+
+CoreModule::~CoreModule()
+{}
+
+bool CoreModule::Init()
{
- MainThreadSingleton::Instance().DetachDatabases();
- // Deinitialize popup manager
- DPL::Popup::PopupManagerSingleton::Instance().Deinitialize();
+ return m_impl->Init();
+}
- LogInfo("Cleanup libxml2 global values.");
- xmlCleanupParser();
+void CoreModule::Terminate()
+{
+ return m_impl->Terminate();
}
-RunnableWidgetObjectPtr getRunnableWidgetObject(
- const WidgetHandle& handle)
+RunnableWidgetObjectPtr CoreModule::getRunnableWidgetObject(
+ const std::string& tizenId)
{
- RunnableWidgetObjectPtr runnable;
- WidgetModelPtr model = Domain::deserializeWidgetModel(handle);
- if (!!model) {
- runnable.reset(new RunnableWidgetObject(model));
- }
- return runnable;
+ return m_impl->getRunnableWidgetObject(tizenId);
}
-RunnableWidgetObjectPtr getRunnableWidgetObject(const std::string& packageName)
+CoreModule::NetworkAccessMode CoreModule::homeNetworkAccess()
{
- DPL::OptionalString pkgName(DPL::FromUTF8String(packageName));
- try {
- return CoreModule::getRunnableWidgetObject(
- WrtDB::WidgetDAOReadOnly::getHandle(pkgName));
- } catch (WrtDB::WidgetDAOReadOnly::Exception::WidgetNotExist) {
- LogDebug("Widget not found.");
- return RunnableWidgetObjectPtr();
- }
+ return m_impl->homeNetworkAccess();
}
-} //namespace CoreModule
+CoreModule::NetworkAccessMode CoreModule::roamingNetworkAccess()
+{
+ return m_impl->roamingNetworkAccess();
+}
} /* namespace WRT */