From 79dbd8747e5f2baf2ff274806e3700dd2fbefd99 Mon Sep 17 00:00:00 2001 From: Yuta Doi Date: Thu, 21 Jun 2018 14:40:06 +0900 Subject: OnScreen app can be displayed for pop_up role Change-Id: I53cdcd010c9e0b87cd4207d8bb81bb5784202f18 Signed-off-by: Yuta Doi --- layers.json | 2 +- src/app.cpp | 20 ++++++++++++----- src/db/app.db | 6 ++++- src/layout_manager/db/layout.db | 2 +- src/policy_manager/db/role.db | 4 ++-- src/policy_manager/zipc/dummy_stm.c | 45 +++++++++++++++++++++++++++++++++---- src/policy_manager/zipc/dummy_stm.h | 2 +- 7 files changed, 65 insertions(+), 16 deletions(-) diff --git a/layers.json b/layers.json index 94e34c4..c6c0916 100644 --- a/layers.json +++ b/layers.json @@ -43,7 +43,7 @@ "comment": "This layer is for restriction notification. This is used by restriction role" }, { - "role": "^OnScreen.*|on_screen.*", + "role": "^OnScreen.*|on_screen.*|pop_up|system_alert", "name": "popups", "layer_id": 9999, "area": { "type": "rect", "rect": { "x": 0, "y": 760, "width": -1, "height": 400 } }, diff --git a/src/app.cpp b/src/app.cpp index db95367..df59714 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -35,6 +35,7 @@ #include #include #include +#include namespace wm { @@ -476,16 +477,22 @@ void App::layout_commit() { } const char* App::convertDrawingNameToRole(char const *drawing_name) { - const char* role; - - if (this->drawingname2role.find(drawing_name) != this->drawingname2role.end()) { - // drawing_name is old role. So convert to new role. - role = this->drawingname2role[drawing_name].c_str(); + const char* role = nullptr; + + for (auto const &dr : this->drawingname2role) { + std::regex regex = std::regex(dr.first); + if (std::regex_match(drawing_name, regex)) { + // drawing_name is old role. So convert to new role. + role = dr.second.c_str(); + break; + } } - else { + + if (nullptr == role) { // drawing_name is new role. role = drawing_name; } + HMI_DEBUG("wm", "drawing_name:%s -> role: %s", drawing_name, role); return role; @@ -499,6 +506,7 @@ void App::allocateWindowResource(char const *event, char const *drawing_name, // Convert old role to new role if ((nullptr != drawing_name) && (0 != strcmp("", drawing_name))) { new_role = this->convertDrawingNameToRole(drawing_name); + HMI_DEBUG("wm", "new_role: %s", new_role); } if (0 == strcmp("activate", event)) { diff --git a/src/db/app.db b/src/db/app.db index 7ec632b..f1f937b 100644 --- a/src/db/app.db +++ b/src/db/app.db @@ -67,6 +67,10 @@ { "name": "Restriction", "role": "restriction" + }, + { + "name": "^OnScreen.*", + "role": "pop_up" } ] -} \ No newline at end of file +} diff --git a/src/layout_manager/db/layout.db b/src/layout_manager/db/layout.db index aa603f1..70523c5 100644 --- a/src/layout_manager/db/layout.db +++ b/src/layout_manager/db/layout.db @@ -6,7 +6,7 @@ "areas": [ { "name": "pop_up", - "category": "incomming_call" + "category": "pop_up" } ] }, diff --git a/src/policy_manager/db/role.db b/src/policy_manager/db/role.db index fc491b0..5fafd03 100644 --- a/src/policy_manager/db/role.db +++ b/src/policy_manager/db/role.db @@ -33,8 +33,8 @@ "description": "For ALS, role:video is included here", }, { - "category": "popup", - "role": "popup", + "category": "pop_up", + "role": "pop_up", "area": "on_screen", }, { diff --git a/src/policy_manager/zipc/dummy_stm.c b/src/policy_manager/zipc/dummy_stm.c index 146176f..0b2120a 100644 --- a/src/policy_manager/zipc/dummy_stm.c +++ b/src/policy_manager/zipc/dummy_stm.c @@ -43,7 +43,7 @@ const char* gStmCategoryName[] = { "map", "general", "splitable", - "popup", + "pop_up", "system_alert", "restriction", "system", @@ -66,7 +66,7 @@ const char* gStmAreaName[] = { "normal", "split.main", "split.sub", - "onscreen", + "pop_up", "restriction.normal", "restriction.split.main", "restriction.split.sub", @@ -78,7 +78,7 @@ const int gStmAreaNo[] = { STM_ARA_NO_NORMAL, STM_ARA_NO_SPLIT_MAIN, STM_ARA_NO_SPLIT_SUB, - STM_ARA_NO_ON_SCREEN, + STM_ARA_NO_POP_UP, STM_ARA_NO_RESTRICTION_NORMAL, STM_ARA_NO_RESTRICTION_SPLIT_MAIN, STM_ARA_NO_RESTRICTION_SPLIT_SUB, @@ -166,6 +166,7 @@ const char** gStmCarStateNameList[] = { stm_state_t g_crr_state; stm_state_t g_prv_state; +int g_prv_on_screen_state_car_stop = 0; int g_prv_restriction_state_car_stop = 0; int g_prv_apps_state_car_stop = 0; int g_map_is_activated = STM_FALSE; @@ -192,7 +193,7 @@ void stmInitialize() { int stmTransitionState(int event, stm_state_t* state) { int event_no, category_no, area_no; - int restriction_state, apps_state; + int on_screen_state, restriction_state, apps_state; int trans_gear_state, parking_brake_state, lightstatus_brake_state, accel_pedal_state, car_state, lamp_state, restriction_mode_state; event_no = event & STM_MSK_EVT_NO; @@ -203,6 +204,7 @@ int stmTransitionState(int event, stm_state_t* state) { g_prv_state = g_crr_state; // Get previous state + on_screen_state = g_prv_state.layer[gStmLayerNoOnScreen].state; restriction_state = g_prv_state.layer[gStmLayerNoRestriction].state; apps_state = g_prv_state.layer[gStmLayerNoApps].state; trans_gear_state = g_prv_state.car_element[gStmCarElementNoTransGear].state; @@ -329,6 +331,11 @@ int stmTransitionState(int event, stm_state_t* state) { g_crr_state.car_element[gStmCarElementNoRestrictionMode].state = gStmRestrictionModeStateNoOn; g_crr_state.car_element[gStmCarElementNoRestrictionMode].changed = STM_TRUE; + // Update on screen layer + g_prv_on_screen_state_car_stop = on_screen_state; + g_crr_state.layer[gStmLayerNoOnScreen].state = gStmLayoutNoNone; + g_crr_state.layer[gStmLayerNoOnScreen].changed = STM_TRUE; + // Update restriction layer g_prv_restriction_state_car_stop = restriction_state; g_crr_state.layer[gStmLayerNoRestriction].state = gStmLayoutNoNone; @@ -350,6 +357,10 @@ int stmTransitionState(int event, stm_state_t* state) { g_crr_state.car_element[gStmCarElementNoRestrictionMode].state = gStmRestrictionModeStateNoOff; g_crr_state.car_element[gStmCarElementNoRestrictionMode].changed = STM_TRUE; + // Update on screen layer + g_crr_state.layer[gStmLayerNoOnScreen].state = g_prv_on_screen_state_car_stop; + g_crr_state.layer[gStmLayerNoOnScreen].changed = STM_TRUE; + // Update restriction layer g_crr_state.layer[gStmLayerNoRestriction].state = g_prv_restriction_state_car_stop; g_crr_state.layer[gStmLayerNoRestriction].changed = STM_TRUE; @@ -669,6 +680,32 @@ int stmTransitionState(int event, stm_state_t* state) { } } + // Set on screen layer + if (STM_CTG_NO_POPUP == category_no) { + if (STM_EVT_NO_ACTIVATE == event_no) { + switch (on_screen_state) { + case gStmLayoutNoNone: + g_crr_state.layer[gStmLayerNoOnScreen].state = gStmLayoutNoPu; + g_crr_state.layer[gStmLayerNoOnScreen].changed = STM_TRUE; + break; + default: + // nop + break; + } + } + else if (STM_EVT_NO_DEACTIVATE == event_no) { + switch (on_screen_state) { + case gStmLayoutNoPu: + g_crr_state.layer[gStmLayerNoOnScreen].state = gStmLayoutNoNone; + g_crr_state.layer[gStmLayerNoOnScreen].changed = STM_TRUE; + break; + default: + // nop + break; + } + } + } + // Copy current state for return memcpy(state, &g_crr_state, sizeof(g_crr_state)); diff --git a/src/policy_manager/zipc/dummy_stm.h b/src/policy_manager/zipc/dummy_stm.h index 3c80310..d2893ca 100644 --- a/src/policy_manager/zipc/dummy_stm.h +++ b/src/policy_manager/zipc/dummy_stm.h @@ -56,7 +56,7 @@ #define STM_ARA_NO_NORMAL 0x030000 #define STM_ARA_NO_SPLIT_MAIN 0x040000 #define STM_ARA_NO_SPLIT_SUB 0x050000 -#define STM_ARA_NO_ON_SCREEN 0x060000 +#define STM_ARA_NO_POP_UP 0x060000 #define STM_ARA_NO_RESTRICTION_NORMAL 0x070000 #define STM_ARA_NO_RESTRICTION_SPLIT_MAIN 0x080000 #define STM_ARA_NO_RESTRICTION_SPLIT_SUB 0x090000 -- cgit 1.2.3-korg