Add the fail-safe process for the configuration file 01/11801/2
authorYuta Doi <yuta-d@witz-inc.co.jp>
Fri, 10 Nov 2017 02:42:36 +0000 (11:42 +0900)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Fri, 10 Nov 2017 11:57:08 +0000 (11:57 +0000)
If the configuration file "layers.json" can not be opened,
windowmanager uses a default layer configuration.

Change-Id: I1b20f385c5e748a90be5e930a1775a6b3a4f39a5
Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
src/app.cpp
src/layers.hpp

index ba258b5..af552b5 100644 (file)
@@ -44,12 +44,16 @@ namespace {
 using nlohmann::json;
 
 result<json> file_to_json(char const *filename) {
+   json j;
    std::ifstream i(filename);
    if (i.fail()) {
-      return Err<json>("Could not open config file");
+      HMI_DEBUG("wm", "Could not open config file, so use default layer information");
+      j = default_layers_json;
    }
-   json j;
-   i >> j;
+   else {
+      i >> j;
+   }
+
    return Ok(j);
 }
 
index 5fee28a..268936b 100644 (file)
@@ -116,6 +116,49 @@ struct layer_map {
 
 struct result<struct layer_map> to_layer_map(nlohmann::json const &j);
 
+static const nlohmann::json default_layers_json = {
+   {"main_surface", {
+      {"surface_role", "HomeScreen"}
+   }},
+   {"mappings", {
+      {
+         {"role", "^HomeScreen$"},
+         {"name", "HomeScreen"},
+         {"layer_id", 1000},
+         {"area", {
+            {"type", "full"}
+         }}
+      },
+      {
+         {"role", "MediaPlayer|Radio|Phone|Navigation|HVAC|Settings|Dashboard|POI|Mixer"},
+         {"name", "apps"},
+         {"layer_id", 1001},
+         {"area", {
+            {"type", "rect"},
+            {"rect", {
+               {"x", 0},
+               {"y", 218},
+               {"width", -1},
+               {"height", -433}
+            }}
+         }}
+      },
+      {
+         {"role", "^OnScreen.*"},
+         {"name", "popups"},
+         {"layer_id", 9999},
+         {"area", {
+            {"type", "rect"},
+            {"rect", {
+               {"x", 0},
+               {"y", 760},
+               {"width", -1},
+               {"height", 400}
+            }}
+         }}
+      }
+   }}
+};
 }  // namespace wm
 
 #endif  // TMCAGLWM_LAYERS_H