diff options
-rw-r--r-- | policy_manager/policy_manager.cpp | 30 | ||||
-rw-r--r-- | src/util.cpp | 36 | ||||
-rw-r--r-- | src/util.hpp | 4 | ||||
-rw-r--r-- | src/wm_layer_control.cpp | 11 |
4 files changed, 49 insertions, 32 deletions
diff --git a/policy_manager/policy_manager.cpp b/policy_manager/policy_manager.cpp index 1c6995b..90256bb 100644 --- a/policy_manager/policy_manager.cpp +++ b/policy_manager/policy_manager.cpp @@ -1,5 +1,6 @@ /* * Copyright (c) 2018 TOYOTA MOTOR CORPORATION + * Copyright (c) 2018 Konsulko Group * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -729,20 +730,7 @@ int PolicyManager::setStateTransitionProcessToSystemd(int event_id, uint64_t del int PolicyManager::loadRoleDb() { - std::string file_name; - - // Get afm application installed dir - char const *afm_app_install_dir = getenv("AFM_APP_INSTALL_DIR"); - HMI_DEBUG("afm_app_install_dir:%s", afm_app_install_dir); - - if (!afm_app_install_dir) - { - HMI_ERROR("AFM_APP_INSTALL_DIR is not defined"); - } - else - { - file_name = std::string(afm_app_install_dir) + std::string("/etc/roles.db"); - } + std::string file_name(get_file_path("roles.db")); // Load roles.db json_object *json_obj; @@ -832,19 +820,7 @@ int PolicyManager::loadStateDb() { HMI_DEBUG("Call"); - // Get afm application installed dir - char const *afm_app_install_dir = getenv("AFM_APP_INSTALL_DIR"); - HMI_DEBUG("afm_app_install_dir:%s", afm_app_install_dir); - - std::string file_name; - if (!afm_app_install_dir) - { - HMI_ERROR("AFM_APP_INSTALL_DIR is not defined"); - } - else - { - file_name = std::string(afm_app_install_dir) + std::string("/etc/states.db"); - } + std::string file_name(get_file_path("states.db")); // Load states.db json_object *json_obj; diff --git a/src/util.cpp b/src/util.cpp index eb6425d..f26a4a1 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1,5 +1,6 @@ /* * Copyright (c) 2017 TOYOTA MOTOR CORPORATION + * Copyright (c) 2018 Konsulko Group * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +21,7 @@ #include <stdio.h> #include <stdarg.h> #include <stdlib.h> +#include <fstream> #include <unistd.h> @@ -140,3 +142,37 @@ void _DUMP(enum LOG_LEVEL level, const char *log, ...) va_end(args); free(message); } + +std::string get_file_path(const char *file_name, const char *root_path) +{ + char const *default_base_path = root_path; + std::string path(""); + + if(!file_name) { + return path; + } + + if (!default_base_path) { + default_base_path = getenv("AFM_APP_INSTALL_DIR"); + if (!default_base_path) { + HMI_ERROR("AFM_APP_INSTALL_DIR is not defined"); + } + } + if (default_base_path) { + path = default_base_path; + path.append("/etc/"); + path.append(file_name); + } + + // Check for over-ride in /etc/xdg/windowmanager + std::string override_path("/etc/xdg/windowmanager/"); + override_path.append(file_name); + std::ifstream i(override_path); + if (i.good()) { + path = override_path; + } + i.close(); + + HMI_INFO("Using %s", path.c_str()); + return path; +} diff --git a/src/util.hpp b/src/util.hpp index 65b29e0..36e556c 100644 --- a/src/util.hpp +++ b/src/util.hpp @@ -1,5 +1,6 @@ /* * Copyright (c) 2017 TOYOTA MOTOR CORPORATION + * Copyright (c) 2018 Konsulko Group * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -117,4 +118,7 @@ class rectangle long _bottom; }; +// Configuration file path helper +std::string get_file_path(const char *file_name, const char *root_path = NULL); + #endif // !WM_UTIL_HPP diff --git a/src/wm_layer_control.cpp b/src/wm_layer_control.cpp index 17443de..6c9aa6c 100644 --- a/src/wm_layer_control.cpp +++ b/src/wm_layer_control.cpp @@ -1,5 +1,6 @@ /* * Copyright (c) 2017 TOYOTA MOTOR CORPORATION + * Copyright (c) 2018 Konsulko Group * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,8 +22,8 @@ #include "request.hpp" #include "json_helper.hpp" -#define LC_AREA_PATH "/etc/areas.json" -#define LC_LAYER_SETTING_PATH "/etc/layers.json" +#define LC_AREA_FILE "areas.json" +#define LC_LAYER_SETTING_FILE "layers.json" #define LC_DEFAULT_AREA "fullscreen" #define BACK_GROUND_LAYER "BackGroundLayer" @@ -58,8 +59,8 @@ static void layerCallback_static(t_ilm_layer layer, LayerControl::LayerControl(const std::string& root) { - string area_path = root + LC_AREA_PATH; - string layer_path= root + LC_LAYER_SETTING_PATH; + string area_path(get_file_path(LC_AREA_FILE, root.c_str())); + string layer_path(get_file_path(LC_LAYER_SETTING_FILE, root.c_str())); // load layers.setting.json WMError ret = this->loadLayerSetting(layer_path); assert(ret == WMError::SUCCESS); @@ -640,4 +641,4 @@ bool LayerControl::moveForeGround(const shared_ptr<WMClient> client) return ret; } -} // namespace wm
\ No newline at end of file +} // namespace wm |