Support splash screen 53/59353/14 accepted/tizen/ivi/20160218.083926 accepted/tizen/mobile/20160218.005905 accepted/tizen/tv/20160218.005918 accepted/tizen/wearable/20160218.005939 submit/tizen/20160217.221050 submit/tizen_common/20160218.142243
authorHwankyu Jhun <h.jhun@samsung.com>
Fri, 12 Feb 2016 11:49:30 +0000 (20:49 +0900)
committerHwanKyu Jhun <h.jhun@samsung.com>
Wed, 17 Feb 2016 07:00:36 +0000 (23:00 -0800)
Add <splash-screens> tag parsing in tpk manifest

Requires:
https://review.tizen.org/gerrit/#/c/59354/
https://review.tizen.org/gerrit/#/c/59363/

Change-Id: I111557eaae69f4472fbbb550ae3408accb66d317
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/common/step/step_parse_manifest.cc
src/common/step/step_parse_manifest.h

index 7364039..d24e2d3 100644 (file)
@@ -399,14 +399,18 @@ bool StepParseManifest::FillUIApplication(manifest_x* manifest) {
     ui_app->ui_gadget = strdup(application.app_info.uigadget().c_str());
     ui_app->process_pool = strdup(application.app_info.process_pool().c_str());
     ui_app->submode = strdup(application.app_info.submode().c_str());
-    ui_app->indicatordisplay =
-        strdup(application.app_info.indicator_display().c_str());
-    ui_app->effectimage_type =
-        strdup(application.app_info.effectimage_type().c_str());
-    ui_app->portraitimg =
-        strdup(application.app_info.portrait_image().c_str());
-    ui_app->landscapeimg =
-        strdup(application.app_info.landscape_image().c_str());
+    if (!application.app_info.indicator_display().empty())
+      ui_app->indicatordisplay =
+          strdup(application.app_info.indicator_display().c_str());
+    if (!application.app_info.effectimage_type().empty())
+      ui_app->effectimage_type =
+          strdup(application.app_info.effectimage_type().c_str());
+    if (!application.app_info.portrait_image().empty())
+      ui_app->portraitimg =
+          strdup(application.app_info.portrait_image().c_str());
+    if (!application.app_info.landscape_image().empty())
+      ui_app->landscapeimg =
+          strdup(application.app_info.landscape_image().c_str());
     ui_app->submode_mainid =
         strdup(application.app_info.submode_mainid().c_str());
     ui_app->hwacceleration =
@@ -449,6 +453,8 @@ bool StepParseManifest::FillUIApplication(manifest_x* manifest) {
       return false;
     if (!FillBackgroundCategoryInfo(ui_app, application.background_category))
       return false;
+    if (!FillSplashScreen(ui_app, application.app_splashscreens))
+      return false;
   }
   return true;
 }
@@ -563,6 +569,32 @@ bool StepParseManifest::FillCategories(application_x* manifest,
   return true;
 }
 
+template <typename T>
+bool StepParseManifest::FillSplashScreen(application_x* app,
+                                     const T& splashscreens_info) {
+  for (auto& splash_screen : splashscreens_info.splashscreens()) {
+    splashscreen_x* splashscreen =
+        static_cast<splashscreen_x*>(calloc(1, sizeof(splashscreen_x)));
+    if (context_->is_preload_request.get() == true)
+      splashscreen->src = strdup(splash_screen.src().c_str());
+    else
+      splashscreen->src = strdup((context_->root_application_path.get()
+        / app->package / "shared" / "res" / splash_screen.src()).c_str());
+
+    splashscreen->type = strdup(splash_screen.type().c_str());
+    if (!splash_screen.dpi().empty())
+      splashscreen->dpi = strdup(splash_screen.dpi().c_str());
+    splashscreen->orientation = strdup(splash_screen.orientation().c_str());
+    if (!splash_screen.indicatordisplay().empty())
+      splashscreen->indicatordisplay = strdup(
+          splash_screen.indicatordisplay().c_str());
+    else
+      splashscreen->indicatordisplay = strdup("true");
+    app->splashscreens = g_list_append(app->splashscreens, splashscreen);
+  }
+  return true;
+}
+
 bool StepParseManifest::FillImage(application_x* app,
                           const tpk::parse::ApplicationImagesInfo& image_list) {
   for (auto& app_image : image_list.images) {
index c6284ec..aa3f883 100644 (file)
@@ -89,6 +89,9 @@ class StepParseManifest : public common_installer::Step {
   template <typename T>
   bool FillBackgroundCategoryInfo(application_x* app,
       const T& background_category_data_list);
+  template <typename T>
+  bool FillSplashScreen(application_x* app,
+      const T& splashscreen_list);
   bool FillManifestX(manifest_x* manifest);
 
   std::unique_ptr<tpk::parse::TPKConfigParser> parser_;