Apply changed manifest-parser APIs. 49/39949/3 accepted/tizen/common/20150528.081126 accepted/tizen/mobile/20150528.114805 accepted/tizen/tv/20150528.114753 submit/tizen/20150526.142430
authorWonYoung Choi <wy80.choi@samsung.com>
Wed, 27 May 2015 00:19:58 +0000 (09:19 +0900)
committerWonYoung Choi <wy80.choi@samsung.com>
Wed, 27 May 2015 01:06:00 +0000 (10:06 +0900)
- changed NavigationInfo to AllowedNavigationInfo
- Add localized string for name, short_name, description

Change-Id: Ia65de2a9adff32c9fb2f00745d9aac79094418ef

src/common/application_data.cc
src/common/application_data.h
src/common/locale_manager.cc
src/common/locale_manager.h
src/extension/widget/widget.cc

index 827ddd4..f9917b9 100644 (file)
@@ -99,7 +99,7 @@ std::shared_ptr<const wgt::parse::MetaDataInfo>
   return meta_data_info_;
 }
 
-std::shared_ptr<const wgt::parse::NavigationInfo>
+std::shared_ptr<const wgt::parse::AllowedNavigationInfo>
     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<const wgt::parse::NavigationInfo>(
+    std::static_pointer_cast<const wgt::parse::AllowedNavigationInfo>(
       manifest_parser.GetManifestData(
         handlers[ManifestHandlerType::NAVIGATION_HANDLER]->Key()));
 
index 3a0c87e..8a13e72 100755 (executable)
@@ -44,7 +44,7 @@ class ApplicationData {
     ime_info() const;
   std::shared_ptr<const wgt::parse::MetaDataInfo>
     meta_data_info() const;
-  std::shared_ptr<const wgt::parse::NavigationInfo>
+  std::shared_ptr<const wgt::parse::AllowedNavigationInfo>
     navigation_info() const;
   std::shared_ptr<const wgt::parse::PermissionsInfo>
     permissions_info() const;
@@ -76,7 +76,7 @@ class ApplicationData {
     ime_info_;
   std::shared_ptr<const wgt::parse::MetaDataInfo>
     meta_data_info_;
-  std::shared_ptr<const wgt::parse::NavigationInfo>
+  std::shared_ptr<const wgt::parse::AllowedNavigationInfo>
     navigation_info_;
   std::shared_ptr<const wgt::parse::PermissionsInfo>
     permissions_info_;
index 83e2d22..e26fef0 100755 (executable)
@@ -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
index 2dde3fa..650d329 100755 (executable)
@@ -7,11 +7,14 @@
 
 #include <string>
 #include <list>
+#include <map>
 
 namespace wrt {
 
 class LocaleManager {
  public:
+  typedef std::map<std::string, std::string> StringMap;
+
   LocaleManager();
   virtual ~LocaleManager();
   void SetDefaultLocale(const std::string& locale);
@@ -20,6 +23,8 @@ class LocaleManager {
   const std::list<std::string>& system_locales() const
     { return system_locales_; }
 
+  std::string GetLocalizedString(const StringMap& strmap);
+
  private:
   std::string default_locale_;
   std::list<std::string> system_locales_;
index f4cf6a6..b71b3e6 100755 (executable)
 #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());