diff options
author | Collin <iCollin@users.noreply.github.com> | 2019-09-24 13:56:54 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-24 13:56:54 -0400 |
commit | c71d3570a1796e35078daccd9ee39fdd695596f1 (patch) | |
tree | 0bc4ebf508f0ef3fb4d2cc62334b5d5ae11b5c03 | |
parent | b454f5cbbe69741eaa266761787006c81a2c6da7 (diff) | |
download | sdl_core-c71d3570a1796e35078daccd9ee39fdd695596f1.tar.gz |
move MenuLayoutsAvailable to WindowCapability (#3043)
* move MenuLayoutsAvailable to WindowCapability
* cleanup
style script + make is_supported function const
* reverse comparables
rvalue on left side is good practice
* cleanup2
* main window can have window_id = 0
13 files changed, 67 insertions, 100 deletions
diff --git a/src/components/application_manager/include/application_manager/application.h b/src/components/application_manager/include/application_manager/application.h index 366396d90a..8e78874cdc 100644 --- a/src/components/application_manager/include/application_manager/application.h +++ b/src/components/application_manager/include/application_manager/application.h @@ -268,6 +268,13 @@ class DynamicApplicationData { virtual void remove_window_capability(const WindowID window_id) = 0; /** + * @brief checks whether a specific menu layout is supported + * @param menu layout to check + */ + virtual bool menu_layout_supported( + const mobile_apis::MenuLayout::eType layout) const = 0; + + /** * @brief Sets layout for application's specific window * @param window_id window id for which layout should be set * @param layout - layout to be set diff --git a/src/components/application_manager/include/application_manager/application_data_impl.h b/src/components/application_manager/include/application_manager/application_data_impl.h index dd093c9890..5c4f868fc9 100644 --- a/src/components/application_manager/include/application_manager/application_data_impl.h +++ b/src/components/application_manager/include/application_manager/application_data_impl.h @@ -147,6 +147,14 @@ class DynamicApplicationDataImpl : public virtual Application { void set_display_capabilities( const smart_objects::SmartObject& display_capabilities) OVERRIDE; void remove_window_capability(const WindowID window_id) OVERRIDE; + + /** + * @brief checks whether a specific menu layout is supported + * @param menu layout to check + */ + bool menu_layout_supported( + const mobile_apis::MenuLayout::eType layout) const OVERRIDE; + /* * @brief Adds a command to the in application menu */ diff --git a/src/components/application_manager/include/application_manager/hmi_capabilities_impl.h b/src/components/application_manager/include/application_manager/hmi_capabilities_impl.h index e17748a490..b4610f0375 100644 --- a/src/components/application_manager/include/application_manager/hmi_capabilities_impl.h +++ b/src/components/application_manager/include/application_manager/hmi_capabilities_impl.h @@ -453,14 +453,6 @@ class HMICapabilitiesImpl : public HMICapabilities { bool rc_supported() const OVERRIDE; /* - * @brief Retrieves whether HMI supports passed Menu Layout - * - * @return TRUE if it supported, otherwise FALSE - */ - bool menu_layout_supported( - mobile_apis::MenuLayout::eType layout) const OVERRIDE; - - /* * @brief Interface used to store information regarding * the navigation "System Capability" * diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/add_sub_menu_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/add_sub_menu_request.cc index d5ec8b8bb3..89ccfb8bd7 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/add_sub_menu_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/add_sub_menu_request.cc @@ -112,8 +112,7 @@ void AddSubMenuRequest::Run() { if (received_msg_params.keyExists(strings::menu_layout)) { auto menu_layout = static_cast<mobile_apis::MenuLayout::eType>( received_msg_params[strings::menu_layout].asUInt()); - if (application_manager_.hmi_capabilities().menu_layout_supported( - menu_layout)) { + if (app->menu_layout_supported(menu_layout)) { msg_params[strings::menu_layout] = received_msg_params[strings::menu_layout]; } else { diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc index c4bc5cb486..937d9d8a52 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc @@ -591,13 +591,6 @@ void FillUIRelatedFields(smart_objects::SmartObject& response_params, } if (hmi_capabilities.display_capabilities()->keyExists( - strings::menu_layouts_available)) { - display_caps[strings::menu_layouts_available] = - hmi_capabilities.display_capabilities()->getElement( - strings::menu_layouts_available); - } - - if (hmi_capabilities.display_capabilities()->keyExists( hmi_response::media_clock_formats)) { display_caps[hmi_response::media_clock_formats] = hmi_capabilities.display_capabilities()->getElement( diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_global_properties_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_global_properties_request.cc index e28566a44f..a567d1b32f 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_global_properties_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_global_properties_request.cc @@ -174,8 +174,7 @@ void SetGlobalPropertiesRequest::Run() { if (msg_params.keyExists(strings::menu_layout)) { auto menu_layout = static_cast<mobile_apis::MenuLayout::eType>( msg_params[strings::menu_layout].asUInt()); - if (application_manager_.hmi_capabilities().menu_layout_supported( - menu_layout)) { + if (app->menu_layout_supported(menu_layout)) { params[strings::menu_layout] = msg_params[strings::menu_layout]; } else { is_menu_layout_available_ = false; diff --git a/src/components/application_manager/src/application_data_impl.cc b/src/components/application_manager/src/application_data_impl.cc index f6b87d3a7e..2bef887901 100644 --- a/src/components/application_manager/src/application_data_impl.cc +++ b/src/components/application_manager/src/application_data_impl.cc @@ -555,26 +555,18 @@ void DynamicApplicationDataImpl::set_display_capabilities( return false; } - const auto find_res = std::find_if( - tmp_window_capabilities_arr->begin(), - tmp_window_capabilities_arr->end(), - [&window_id](const smart_objects::SmartObject& element) { - LOG4CXX_DEBUG(logger_, - "Searching for " - << window_id << " with element window id " - << element[strings::window_id].asInt()); - if ((!element.keyExists(strings::window_id)) && 0 == window_id) { - return true; - } - const auto current_window_id = element[strings::window_id].asInt(); - if (window_id == current_window_id) { - return true; - } - return false; - }); - - return find_res != tmp_window_capabilities_arr->end(); + for (auto element : *tmp_window_capabilities_arr) { + if (element.keyExists(strings::window_id)) { + if (window_id == element[strings::window_id].asInt()) + return true; + } else if (window_id == 0) { + return true; + } + } + + return false; }; + for (uint32_t i = 0; i < incoming_window_capabilities.length(); ++i) { const auto window_id = incoming_window_capabilities[i][strings::window_id].asInt(); @@ -612,6 +604,36 @@ void DynamicApplicationDataImpl::remove_window_capability( "No window id " << window_id << " found in display capabilities"); } +bool DynamicApplicationDataImpl::menu_layout_supported( + const mobile_apis::MenuLayout::eType layout) const { + if (!display_capabilities_) + return false; + + const auto tmp_window_capabilities_arr = + (*display_capabilities_)[0][strings::window_capabilities].asArray(); + + if (!tmp_window_capabilities_arr) + return false; + + for (auto element : *tmp_window_capabilities_arr) { + if ((!element.keyExists(strings::window_id) || + element[strings::window_id].asInt() == 0) && + element.keyExists(strings::menu_layouts_available)) { + for (uint32_t i = 0; + i < element[strings::menu_layouts_available].length(); + ++i) { + if (static_cast<mobile_apis::MenuLayout::eType>( + element[strings::menu_layouts_available][i].asUInt()) == + layout) { + return true; + } + } + } + } + + return false; +} + void DynamicApplicationDataImpl::set_window_layout(const WindowID window_id, const std::string& layout) { LOG4CXX_AUTO_TRACE(logger_); diff --git a/src/components/application_manager/src/hmi_capabilities_impl.cc b/src/components/application_manager/src/hmi_capabilities_impl.cc index e91f425770..6f95e43545 100644 --- a/src/components/application_manager/src/hmi_capabilities_impl.cc +++ b/src/components/application_manager/src/hmi_capabilities_impl.cc @@ -58,7 +58,6 @@ std::map<std::string, hmi_apis::Common_TextFieldName::eType> text_fields_enum_name; std::map<std::string, hmi_apis::Common_MediaClockFormat::eType> media_clock_enum_name; -std::map<std::string, hmi_apis::Common_MenuLayout::eType> menu_layout_enum; std::map<std::string, hmi_apis::Common_ImageType::eType> image_type_enum; std::map<std::string, hmi_apis::Common_SamplingRate::eType> sampling_rate_enum; std::map<std::string, hmi_apis::Common_BitsPerSample::eType> @@ -280,11 +279,6 @@ void InitCapabilities() { std::make_pair(std::string("CLOCKTEXT4"), hmi_apis::Common_MediaClockFormat::CLOCKTEXT4)); - menu_layout_enum.insert( - std::make_pair(std::string("LIST"), hmi_apis::Common_MenuLayout::LIST)); - menu_layout_enum.insert( - std::make_pair(std::string("TILES"), hmi_apis::Common_MenuLayout::TILES)); - image_type_enum.insert(std::make_pair(std::string("STATIC"), hmi_apis::Common_ImageType::STATIC)); image_type_enum.insert(std::make_pair(std::string("DYNAMIC"), @@ -895,26 +889,6 @@ bool HMICapabilitiesImpl::rc_supported() const { return is_rc_supported_; } -bool HMICapabilitiesImpl::menu_layout_supported( - mobile_apis::MenuLayout::eType layout) const { - if (!display_capabilities_ || - !display_capabilities_->keyExists(strings::menu_layouts_available)) - return false; - - auto menu_layouts = - display_capabilities_->getElement(strings::menu_layouts_available); - if (menu_layouts.getType() == smart_objects::SmartType_Array) { - for (uint32_t i = 0; i < menu_layouts.length(); ++i) { - if (layout == static_cast<mobile_apis::MenuLayout::eType>( - menu_layouts.getElement(i).asUInt())) { - return true; - } - } - } - - return false; -} - const smart_objects::SmartObject* HMICapabilitiesImpl::navigation_capability() const { return navigation_capability_; @@ -1096,25 +1070,6 @@ bool HMICapabilitiesImpl::load_capabilities_from_file() { } if (display_capabilities_so.keyExists( - strings::menu_layouts_available)) { - smart_objects::SmartObject menu_layouts_available_enum( - smart_objects::SmartType_Array); - auto menu_layouts_available_array = - display_capabilities_so[strings::menu_layouts_available]; - for (uint32_t i = 0, j = 0; i < menu_layouts_available_array.length(); - ++i) { - auto it = menu_layout_enum.find( - menu_layouts_available_array[i].asString()); - if (it != menu_layout_enum.end()) { - menu_layouts_available_enum[j++] = it->second; - } - } - display_capabilities_so.erase(strings::menu_layouts_available); - display_capabilities_so[strings::menu_layouts_available] = - menu_layouts_available_enum; - } - - if (display_capabilities_so.keyExists( hmi_response::image_capabilities)) { smart_objects::SmartObject& image_capabilities_array = display_capabilities_so[hmi_response::image_capabilities]; @@ -1178,6 +1133,7 @@ bool HMICapabilitiesImpl::load_capabilities_from_file() { soft_button_capabilities, soft_button_capabilities_so); set_soft_button_capabilities(soft_button_capabilities_so); } + if (check_existing_json_member(ui, "systemCapabilities")) { Json::Value system_capabilities = ui.get("systemCapabilities", ""); if (check_existing_json_member(system_capabilities, diff --git a/src/components/application_manager/test/include/application_manager/mock_application.h b/src/components/application_manager/test/include/application_manager/mock_application.h index c02cd5c392..e3617b46c3 100644 --- a/src/components/application_manager/test/include/application_manager/mock_application.h +++ b/src/components/application_manager/test/include/application_manager/mock_application.h @@ -425,6 +425,8 @@ class MockApplication : public ::application_manager::Application { application_manager::WindowID(const uint32_t button_id)); MOCK_METHOD1(remove_window_capability, void(const application_manager::WindowID window_id)); + MOCK_CONST_METHOD1(menu_layout_supported, + bool(const mobile_apis::MenuLayout::eType layout)); MOCK_METHOD1(set_user_location, void(const smart_objects::SmartObject& user_location)); MOCK_CONST_METHOD0(get_user_location, const smart_objects::SmartObject&()); diff --git a/src/components/application_manager/test/include/application_manager/mock_hmi_capabilities.h b/src/components/application_manager/test/include/application_manager/mock_hmi_capabilities.h index 2c3d7c267e..5e5f2eb4a4 100644 --- a/src/components/application_manager/test/include/application_manager/mock_hmi_capabilities.h +++ b/src/components/application_manager/test/include/application_manager/mock_hmi_capabilities.h @@ -168,9 +168,6 @@ class MockHMICapabilities : public ::application_manager::HMICapabilities { MOCK_CONST_METHOD0(rc_supported, bool()); MOCK_METHOD1(set_rc_supported, void(const bool supported)); - MOCK_CONST_METHOD1(menu_layout_supported, - bool(mobile_apis::MenuLayout::eType layout)); - MOCK_CONST_METHOD0(navigation_capability, const smart_objects::SmartObject*()); MOCK_METHOD1(set_navigation_capability, diff --git a/src/components/include/application_manager/hmi_capabilities.h b/src/components/include/application_manager/hmi_capabilities.h index ab8d5ba4e6..8e59bcc74d 100644 --- a/src/components/include/application_manager/hmi_capabilities.h +++ b/src/components/include/application_manager/hmi_capabilities.h @@ -455,14 +455,6 @@ class HMICapabilities { virtual bool rc_supported() const = 0; /* - * @brief Retrieves whether HMI supports passed Menu Layout - * - * @return TRUE if it supported, otherwise FALSE - */ - virtual bool menu_layout_supported( - mobile_apis::MenuLayout::eType layout) const = 0; - - /* * @brief Interface used to store information regarding * the navigation "System Capability" * diff --git a/src/components/interfaces/HMI_API.xml b/src/components/interfaces/HMI_API.xml index 6292d74ebe..8407d4aea4 100644 --- a/src/components/interfaces/HMI_API.xml +++ b/src/components/interfaces/HMI_API.xml @@ -2976,9 +2976,6 @@ <param name="numCustomPresetsAvailable" type="Integer" minvalue="1" maxvalue="100" mandatory="false"> <description>The number of on-screen custom presets available (if any); otherwise omitted.</description> </param> - <param name="menuLayoutsAvailable" type="Common.MenuLayout" array="true" minsize="1" maxsize="1000" mandatory="false"> - <description>An array of available menu layouts. If this parameter is not provided, only the `LIST` layout is assumed to be available</description> - </param> </struct> <struct name="SoftButtonCapabilities"> @@ -3531,6 +3528,9 @@ <param name="softButtonCapabilities" type="SoftButtonCapabilities" minsize="1" maxsize="100" array="true" mandatory="false"> <description>The number of soft buttons available on-window and the capabilities for each button.</description> </param> + <param name="menuLayoutsAvailable" type="Common.MenuLayout" array="true" minsize="1" maxsize="1000" mandatory="false"> + <description>An array of available menu layouts. If this parameter is not provided, only the `LIST` layout is assumed to be available</description> + </param> </struct> <struct name="DisplayCapability"> diff --git a/src/components/interfaces/MOBILE_API.xml b/src/components/interfaces/MOBILE_API.xml index a98652dc95..2307dada03 100644 --- a/src/components/interfaces/MOBILE_API.xml +++ b/src/components/interfaces/MOBILE_API.xml @@ -2284,9 +2284,6 @@ <param name="numCustomPresetsAvailable" type="Integer" minvalue="1" maxvalue="100" mandatory="false" since="3.0"> <description>The number of on-screen custom presets available (if any); otherwise omitted.</description> </param> - <param name="menuLayoutsAvailable" type="MenuLayout" array="true" minsize="1" maxsize="1000" mandatory="false" since="6.0"> - <description>An array of available menu layouts. If this parameter is not provided, only the `LIST` layout is assumed to be available</description> - </param> <!-- TODO: Add pixel density? --> </struct> @@ -2418,6 +2415,9 @@ <param name="softButtonCapabilities" type="SoftButtonCapabilities" minsize="1" maxsize="100" array="true" mandatory="false"> <description>The number of soft buttons available on-window and the capabilities for each button.</description> </param> + <param name="menuLayoutsAvailable" type="MenuLayout" array="true" minsize="1" maxsize="1000" mandatory="false" since="6.0"> + <description>An array of available menu layouts. If this parameter is not provided, only the `LIST` layout is assumed to be available</description> + </param> </struct> <struct name="WindowTypeCapabilities" since="6.0"> |