From: WonYoung Choi Date: Wed, 27 May 2015 00:19:58 +0000 (+0900) Subject: Apply changed manifest-parser APIs. X-Git-Tag: accepted/tizen/mobile/20151006.042140~73 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c3a42e43a0205f03e6628082f75430baed6648e3;p=platform%2Fframework%2Fweb%2Fcrosswalk-tizen.git Apply changed manifest-parser APIs. - changed NavigationInfo to AllowedNavigationInfo - Add localized string for name, short_name, description Change-Id: Ia65de2a9adff32c9fb2f00745d9aac79094418ef --- diff --git a/src/common/application_data.cc b/src/common/application_data.cc index 827ddd4..f9917b9 100644 --- a/src/common/application_data.cc +++ b/src/common/application_data.cc @@ -99,7 +99,7 @@ std::shared_ptr return meta_data_info_; } -std::shared_ptr +std::shared_ptr ApplicationData::navigation_info() const { return navigation_info_; } @@ -218,7 +218,7 @@ bool ApplicationData::LoadManifestData() { handlers[ManifestHandlerType::META_DATA_HANDLER]->Key())); navigation_info_ = - std::static_pointer_cast( + std::static_pointer_cast( manifest_parser.GetManifestData( handlers[ManifestHandlerType::NAVIGATION_HANDLER]->Key())); diff --git a/src/common/application_data.h b/src/common/application_data.h index 3a0c87e..8a13e72 100755 --- a/src/common/application_data.h +++ b/src/common/application_data.h @@ -44,7 +44,7 @@ class ApplicationData { ime_info() const; std::shared_ptr meta_data_info() const; - std::shared_ptr + std::shared_ptr navigation_info() const; std::shared_ptr permissions_info() const; @@ -76,7 +76,7 @@ class ApplicationData { ime_info_; std::shared_ptr meta_data_info_; - std::shared_ptr + std::shared_ptr navigation_info_; std::shared_ptr permissions_info_; diff --git a/src/common/locale_manager.cc b/src/common/locale_manager.cc index 83e2d22..e26fef0 100755 --- a/src/common/locale_manager.cc +++ b/src/common/locale_manager.cc @@ -97,4 +97,27 @@ void LocaleManager::UpdateSystemLocale() { } } +std::string LocaleManager::GetLocalizedString(const StringMap& strmap) { + if (strmap.empty()) { + return std::string(); + } + + // find string with system locales + for (auto& locale : system_locales_) { + auto it = strmap.find(locale); + if (it != strmap.end()) { + return it->second; + } + } + + // find string with empty locale + auto it = strmap.find(""); + if (it != strmap.end()) { + return it->second; + } + + // If localized string is not found, return first string. + return strmap.begin()->second; +} + } // namespace wrt diff --git a/src/common/locale_manager.h b/src/common/locale_manager.h index 2dde3fa..650d329 100755 --- a/src/common/locale_manager.h +++ b/src/common/locale_manager.h @@ -7,11 +7,14 @@ #include #include +#include namespace wrt { class LocaleManager { public: + typedef std::map StringMap; + LocaleManager(); virtual ~LocaleManager(); void SetDefaultLocale(const std::string& locale); @@ -20,6 +23,8 @@ class LocaleManager { const std::list& system_locales() const { return system_locales_; } + std::string GetLocalizedString(const StringMap& strmap); + private: std::string default_locale_; std::list system_locales_; diff --git a/src/extension/widget/widget.cc b/src/extension/widget/widget.cc index f4cf6a6..b71b3e6 100755 --- a/src/extension/widget/widget.cc +++ b/src/extension/widget/widget.cc @@ -14,10 +14,11 @@ #include "extension/xwalk/XW_Extension_Runtime.h" #include "extension/xwalk/XW_Extension_SyncMessage.h" -#include "common/logger.h" #include "extension/widget/picojson.h" +#include "common/logger.h" #include "common/app_db.h" #include "common/application_data.h" +#include "common/locale_manager.h" #include "common/string_utils.h" XW_Extension g_xw_extension = 0; @@ -153,11 +154,19 @@ static void InitHandler(const picojson::value& /*args*/, } out->insert(std::make_pair("status", picojson::value("success"))); + wrt::LocaleManager locale_manager; + if (!widget_info->default_locale().empty()) { + locale_manager.SetDefaultLocale(widget_info->default_locale()); + } + // TODO(sngn.lee): should be returned localized string obj["author"] = picojson::value(widget_info->author()); - obj["description"] = picojson::value(widget_info->description()); - obj["name"] = picojson::value(widget_info->name()); - obj["shortName"] = picojson::value(widget_info->short_name()); + obj["description"] = picojson::value( + locale_manager.GetLocalizedString(widget_info->description_set())); + obj["name"] = picojson::value( + locale_manager.GetLocalizedString(widget_info->name_set())); + obj["shortName"] = picojson::value( + locale_manager.GetLocalizedString(widget_info->short_name_set())); obj["version"] = picojson::value(widget_info->version()); obj["id"] = picojson::value(widget_info->id()); obj["authorEmail"] = picojson::value(widget_info->author_email());