From 0b1d9ca2550bdb877d065a74e4debcc95c4e7b98 Mon Sep 17 00:00:00 2001 From: Yuta Doi Date: Fri, 10 Nov 2017 11:42:36 +0900 Subject: [PATCH] Add the fail-safe process for the configuration file If the configuration file "layers.json" can not be opened, windowmanager uses a default layer configuration. Change-Id: I1b20f385c5e748a90be5e930a1775a6b3a4f39a5 Signed-off-by: Yuta Doi --- src/app.cpp | 10 +++++++--- src/layers.hpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 3 deletions(-) diff --git a/src/app.cpp b/src/app.cpp index ba258b5..af552b5 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -44,12 +44,16 @@ namespace { using nlohmann::json; result file_to_json(char const *filename) { + json j; std::ifstream i(filename); if (i.fail()) { - return Err("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); } diff --git a/src/layers.hpp b/src/layers.hpp index 5fee28a..268936b 100644 --- a/src/layers.hpp +++ b/src/layers.hpp @@ -116,6 +116,49 @@ struct layer_map { struct result 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 -- 2.16.6