summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJackLivio <jack@livio.io>2018-05-02 11:41:29 -0400
committerJackLivio <jack@livio.io>2018-05-02 11:41:29 -0400
commit47d09114d7a71c871b1b697c8f807de338995e0f (patch)
treedbfae256962edc901e674accd0b4042b04aaf35d
parent90962a664990f3d6bbd96c5b3cf387328ef3315d (diff)
downloadsdl_core-47d09114d7a71c871b1b697c8f807de338995e0f.tar.gz
Upadte Color Via Set Display Layout and add Reject Logic
-rw-r--r--src/components/application_manager/include/application_manager/application.h3
-rw-r--r--src/components/application_manager/include/application_manager/application_data_impl.h3
-rw-r--r--src/components/application_manager/include/application_manager/smart_object_keys.h1
-rw-r--r--src/components/application_manager/src/application_data_impl.cc9
-rw-r--r--src/components/application_manager/src/commands/mobile/set_display_layout_request.cc48
-rw-r--r--src/components/application_manager/src/smart_object_keys.cc1
6 files changed, 63 insertions, 2 deletions
diff --git a/src/components/application_manager/include/application_manager/application.h b/src/components/application_manager/include/application_manager/application.h
index aa607449a2..01e3bf6b56 100644
--- a/src/components/application_manager/include/application_manager/application.h
+++ b/src/components/application_manager/include/application_manager/application.h
@@ -191,6 +191,7 @@ class DynamicApplicationData {
virtual const smart_objects::SmartObject* menu_icon() const = 0;
virtual const smart_objects::SmartObject* day_color_scheme() const = 0;
virtual const smart_objects::SmartObject* night_color_scheme() const = 0;
+ virtual const std::string& display_layout() const = 0;
virtual void load_global_properties(const smart_objects::SmartObject& so) = 0;
virtual void set_help_prompt(
@@ -226,6 +227,8 @@ class DynamicApplicationData {
const smart_objects::SmartObject& color_scheme) = 0;
virtual void set_night_color_scheme(
const smart_objects::SmartObject& color_scheme) = 0;
+
+ virtual void set_display_layout(const std::string& layout) = 0;
/**
* @brief Checks if application is media, voice communication or navigation
* @return true if application is media, voice communication or navigation,
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 6d47ba4736..dc9be4e1d8 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
@@ -98,6 +98,7 @@ class DynamicApplicationDataImpl : public virtual Application {
const smart_objects::SmartObject* menu_icon() const;
const smart_objects::SmartObject* day_color_scheme() const;
const smart_objects::SmartObject* night_color_scheme() const;
+ const std::string& display_layout() const;
void load_global_properties(const smart_objects::SmartObject& properties_so);
void set_help_prompt(const smart_objects::SmartObject& help_prompt);
@@ -114,6 +115,7 @@ class DynamicApplicationDataImpl : public virtual Application {
void set_menu_icon(const smart_objects::SmartObject& menu_icon);
void set_day_color_scheme(const smart_objects::SmartObject& color_scheme);
void set_night_color_scheme(const smart_objects::SmartObject& color_scheme);
+ void set_display_layout(const std::string& layout);
/*
* @brief Adds a command to the in application menu
*/
@@ -270,6 +272,7 @@ class DynamicApplicationDataImpl : public virtual Application {
smart_objects::SmartObject* tbt_show_command_;
smart_objects::SmartObject* day_color_scheme_;
smart_objects::SmartObject* night_color_scheme_;
+ std::string display_layout_;
CommandsMap commands_;
mutable sync_primitives::Lock commands_lock_;
diff --git a/src/components/application_manager/include/application_manager/smart_object_keys.h b/src/components/application_manager/include/application_manager/smart_object_keys.h
index 8bcd69f896..4e12516280 100644
--- a/src/components/application_manager/include/application_manager/smart_object_keys.h
+++ b/src/components/application_manager/include/application_manager/smart_object_keys.h
@@ -186,6 +186,7 @@ extern const char* background_color;
extern const char* red;
extern const char* green;
extern const char* blue;
+extern const char* display_layout;
// PutFile
extern const char* sync_file_name;
diff --git a/src/components/application_manager/src/application_data_impl.cc b/src/components/application_manager/src/application_data_impl.cc
index a5c39455ba..5e31995b7d 100644
--- a/src/components/application_manager/src/application_data_impl.cc
+++ b/src/components/application_manager/src/application_data_impl.cc
@@ -175,6 +175,7 @@ DynamicApplicationDataImpl::DynamicApplicationDataImpl()
, tbt_show_command_(NULL)
, day_color_scheme_(NULL)
, night_color_scheme_(NULL)
+ , display_layout_("")
, commands_()
, commands_lock_(true)
, sub_menu_()
@@ -312,6 +313,10 @@ DynamicApplicationDataImpl::night_color_scheme() const {
return night_color_scheme_;
}
+const std::string& DynamicApplicationDataImpl::display_layout() const {
+ return display_layout_;
+}
+
void DynamicApplicationDataImpl::load_global_properties(
const smart_objects::SmartObject& properties_so) {
SetGlobalProperties(properties_so.getElement(strings::vr_help_title),
@@ -445,6 +450,10 @@ void DynamicApplicationDataImpl::set_night_color_scheme(
night_color_scheme_ = new smart_objects::SmartObject(color_scheme);
}
+void DynamicApplicationDataImpl::set_display_layout(const std::string& layout) {
+ display_layout_ = layout;
+}
+
void DynamicApplicationDataImpl::SetGlobalProperties(
const smart_objects::SmartObject& param,
void (DynamicApplicationData::*callback)(
diff --git a/src/components/application_manager/src/commands/mobile/set_display_layout_request.cc b/src/components/application_manager/src/commands/mobile/set_display_layout_request.cc
index 993e094647..e80912f2d9 100644
--- a/src/components/application_manager/src/commands/mobile/set_display_layout_request.cc
+++ b/src/components/application_manager/src/commands/mobile/set_display_layout_request.cc
@@ -60,12 +60,56 @@ void SetDisplayLayoutRequest::Run() {
const smart_objects::SmartObject& msg_params =
(*message_)[strings::msg_params];
+ std::string old_layout = app->display_layout();
+ std::string new_layout = "";
+ bool allow_color_change = true;
+
+ if (msg_params.keyExists(strings::display_layout)) {
+ new_layout = msg_params[strings::display_layout].asString();
+ }
+
+ if(new_layout != old_layout && !new_layout.empty()) { // Template switched, allow any color change
+ LOG4CXX_DEBUG(logger_, "SetDisplayLayoutRequest New Layout: " << new_layout);
+ app->set_display_layout(new_layout);
+ } else {
+ LOG4CXX_DEBUG(logger_, "SetDisplayLayoutRequest No Layout Change");
+ // Template layout is the same as previous layout
+ // Reject message if colors are set
+ if ((msg_params.keyExists(strings::day_color_scheme) && app->day_color_scheme() != NULL)) {
+ if(!(msg_params[strings::day_color_scheme] == *(app->day_color_scheme())) ) {
+ //Color scheme param exists and has been previously set, do not allow color change
+ LOG4CXX_DEBUG(logger_, "Reject Day Color Scheme Change");
+ allow_color_change = false;
+ }
+
+ }
+
+ if ((msg_params.keyExists(strings::night_color_scheme) && app->night_color_scheme() != NULL)) {
+ if(!(msg_params[strings::night_color_scheme] == *(app->night_color_scheme())) ) {
+ //Color scheme param exists and has been previously set, do not allow color change
+ LOG4CXX_DEBUG(logger_, "Reject Night Color Scheme Change");
+ allow_color_change = false;
+ }
+ }
+ }
+
if (msg_params.keyExists(strings::day_color_scheme)) {
- app->set_day_color_scheme(msg_params[strings::day_color_scheme]);
+ if(allow_color_change) {
+ LOG4CXX_DEBUG(logger_, "Allow Day Color Scheme Change");
+ app->set_day_color_scheme(msg_params[strings::day_color_scheme]);
+ }
}
if (msg_params.keyExists(strings::night_color_scheme)) {
- app->set_night_color_scheme(msg_params[strings::night_color_scheme]);
+ if(allow_color_change) {
+ LOG4CXX_DEBUG(logger_, "Allow Night Color Scheme Change");
+ app->set_night_color_scheme(msg_params[strings::night_color_scheme]);
+ }
+ }
+
+ if (!allow_color_change) {
+ SendResponse(false, mobile_apis::Result::REJECTED);
+ return;
}
(*message_)[strings::msg_params][strings::app_id] = app->app_id();
diff --git a/src/components/application_manager/src/smart_object_keys.cc b/src/components/application_manager/src/smart_object_keys.cc
index 88ec5986f4..788f8d28fc 100644
--- a/src/components/application_manager/src/smart_object_keys.cc
+++ b/src/components/application_manager/src/smart_object_keys.cc
@@ -150,6 +150,7 @@ const char* background_color = "backgroundColor";
const char* red = "red";
const char* green = "green";
const char* blue = "blue";
+const char* display_layout = "displayLayout";
// PutFile
const char* sync_file_name = "syncFileName";