diff options
author | Yuta Doi <yuta-d@witz-inc.co.jp> | 2017-11-10 11:42:36 +0900 |
---|---|---|
committer | Jan-Simon Moeller <jsmoeller@linuxfoundation.org> | 2017-11-10 11:57:08 +0000 |
commit | 0b1d9ca2550bdb877d065a74e4debcc95c4e7b98 (patch) | |
tree | 5aafb6e7fa8c6cfac071038fd21088e895c1e34b | |
parent | 2b97202f86c492be91de83a93b513384871f321d (diff) |
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 <yuta-d@witz-inc.co.jp>
-rw-r--r-- | src/app.cpp | 10 | ||||
-rw-r--r-- | 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<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); } 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<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 |