diff options
Diffstat (limited to 'src/components/application_manager/src/application_data_impl.cc')
-rw-r--r-- | src/components/application_manager/src/application_data_impl.cc | 60 |
1 files changed, 41 insertions, 19 deletions
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_); |