diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/layers.cpp | 16 | ||||
-rw-r--r-- | src/util.cpp | 37 | ||||
-rw-r--r-- | src/util.hpp | 12 | ||||
-rw-r--r-- | src/window_manager.cpp | 28 | ||||
-rw-r--r-- | src/window_manager.hpp | 5 |
5 files changed, 54 insertions, 44 deletions
diff --git a/src/layers.cpp b/src/layers.cpp index bbe7c09..21d975d 100644 --- a/src/layers.cpp +++ b/src/layers.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. @@ -18,6 +19,7 @@ #include "layers.hpp" #include "json_helper.hpp" +#include "util.hpp" #include "hmi-debug.h" namespace wm @@ -210,19 +212,7 @@ int layer_map::loadAreaDb() { HMI_DEBUG("wm:lm", "Call"); - // Get afm application installed dir - char const *afm_app_install_dir = getenv("AFM_APP_INSTALL_DIR"); - HMI_DEBUG("wm:lm", "afm_app_install_dir:%s", afm_app_install_dir); - - std::string file_name; - if (!afm_app_install_dir) - { - HMI_ERROR("wm:lm", "AFM_APP_INSTALL_DIR is not defined"); - } - else - { - file_name = std::string(afm_app_install_dir) + std::string("/etc/areas.db"); - } + std::string file_name(get_file_path("areas.db")); // Load area.db json_object *json_obj; diff --git a/src/util.cpp b/src/util.cpp index 672b089..e4cc2ef 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. @@ -21,9 +22,12 @@ #include <cstdio> #include <cstdlib> #include <ctime> +#include <fstream> #include <unistd.h> +#include "hmi-debug.h" + #ifdef SCOPE_TRACING thread_local int ScopeTrace::indent = 0; ScopeTrace::ScopeTrace(char const *func) : f(func) @@ -93,3 +97,36 @@ void rectangle::set_aspect(double ratio) } } +std::string get_file_path(const char *file_name, const char *log_category) +{ + char const *default_base_path = getenv("AFM_APP_INSTALL_DIR"); + std::string path(""); + + if(!file_name) { + return path; + } + + if (!default_base_path) + { + HMI_ERROR(log_category, "AFM_APP_INSTALL_DIR is not defined"); + } + else + { + 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(log_category, "Using %s", path.c_str()); + return path; +} diff --git a/src/util.hpp b/src/util.hpp index 2f17845..8782353 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. @@ -20,16 +21,10 @@ #include <functional> #include <thread> #include <vector> +#include <string> #include <sys/poll.h> -#ifndef DO_NOT_USE_AFB -extern "C" -{ -#include <afb/afb-binding.h> -}; -#endif - #define CONCAT_(X, Y) X##Y #define CONCAT(X, Y) CONCAT_(X, Y) @@ -163,4 +158,7 @@ class rectangle long _bottom; }; +// Configuration file path helper +std::string get_file_path(const char *file_name, const char *log_category = "wm"); + #endif // !WM_UTIL_HPP diff --git a/src/window_manager.cpp b/src/window_manager.cpp index 42930dc..e9cc53a 100644 --- a/src/window_manager.cpp +++ b/src/window_manager.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. @@ -19,6 +20,7 @@ #include "window_manager.hpp" #include "json_helper.hpp" +#include "util.hpp" #include "applist.hpp" extern "C" @@ -123,17 +125,7 @@ WindowManager::WindowManager(wl::display *d) id_alloc{}, pending_events(false) { - char const *path_layers_json = getenv("AFM_APP_INSTALL_DIR"); - std::string path; - if (!path_layers_json) - { - HMI_ERROR("wm", "AFM_APP_INSTALL_DIR is not defined"); - path = std::string(path_layers_json); - } - else - { - path = std::string(path_layers_json) + std::string("/etc/layers.json"); - } + std::string path(get_file_path("layers.json")); try { @@ -1371,19 +1363,7 @@ const char* WindowManager::convertRoleOldToNew(char const *old_role) int WindowManager::loadOldRoleDb() { - // Get afm application installed dir - char const *afm_app_install_dir = getenv("AFM_APP_INSTALL_DIR"); - HMI_DEBUG("wm", "afm_app_install_dir:%s", afm_app_install_dir); - - std::string file_name; - if (!afm_app_install_dir) - { - HMI_ERROR("wm", "AFM_APP_INSTALL_DIR is not defined"); - } - else - { - file_name = std::string(afm_app_install_dir) + std::string("/etc/old_roles.db"); - } + std::string file_name(get_file_path("old_roles.db")); // Load old_role.db json_object* json_obj; diff --git a/src/window_manager.hpp b/src/window_manager.hpp index 6cbd355..967a87a 100644 --- a/src/window_manager.hpp +++ b/src/window_manager.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. @@ -29,6 +30,10 @@ #include "hmi-debug.h" #include "request.hpp" #include "wm_error.hpp" +extern "C" +{ +#include <afb/afb-binding.h> +} struct json_object; |