Support for many different icons for menu item. 38/162838/6
authorPawel Kurowski <p.kurowski2@samsung.com>
Tue, 5 Dec 2017 13:07:07 +0000 (14:07 +0100)
committerPawel Kurowski <p.kurowski2@samsung.com>
Fri, 8 Dec 2017 10:41:17 +0000 (11:41 +0100)
Change-Id: I34c812d0eb98f8893487ebba9b216b846163e60a

src/MenuBuilder.cpp

index fe3e42f..3f6dea0 100644 (file)
@@ -34,7 +34,7 @@ enum class RepetitionPolicy : bool {
 class MenuItemImplementation : public MenuItem, public std::enable_shared_from_this<MenuItem>
 {
 public:
-       MenuItemImplementation(std::vector<std::string> names = {}, std::string iconPath = {}, std::string activityType = {},
+       MenuItemImplementation(std::vector<std::string> names = {}, std::vector<std::string> iconPaths = {}, std::string activityType = {},
                                                   std::string subMenuLabel = {}, std::string showingStateVconfKey = {},
                                                   RepetitionPolicy repetitionPolicy = RepetitionPolicy::single);
 
@@ -47,7 +47,7 @@ public:
 
 protected:
        std::vector<std::string> names;
-       std::string iconPath;
+       std::vector<std::string> iconPaths;
        std::string activityType;
        std::string subMenuLabel;
        std::string showingStateVconfKey;
@@ -57,10 +57,11 @@ protected:
 class VconfTypeMenuItem : public MenuItemImplementation
 {
 public:
-       VconfTypeMenuItem(std::vector<std::string> names, std::string iconPath, std::string activityType,
+       VconfTypeMenuItem(std::vector<std::string> names, std::vector<std::string> iconPaths, std::string activityType,
                                          std::string subMenuLabel, std::string showingStateVconfKey, RepetitionPolicy repetitionPolicy);
 
        std::string getName() const override;
+       std::string getIconPath() const override;
 
        void vconfChangeCb();
        virtual size_t getIndex() const = 0;
@@ -72,7 +73,7 @@ public:
 class VconfIntTypeMenuItem : public VconfTypeMenuItem
 {
 public:
-       VconfIntTypeMenuItem(std::vector<std::string> names, std::string iconPath, std::string activityType,
+       VconfIntTypeMenuItem(std::vector<std::string> names, std::vector<std::string> iconPaths, std::string activityType,
                                                 std::string vconfStateKey, std::string subMenuLabel = {}, std::string showingStateVconfKey = {},
                                                 RepetitionPolicy repetitionPolicy = RepetitionPolicy::single);
 
@@ -84,7 +85,7 @@ public:
 class VconfBoolTypeMenuItem : public VconfTypeMenuItem
 {
 public:
-       VconfBoolTypeMenuItem(std::vector<std::string> names, std::string iconPath, std::string activityType,
+       VconfBoolTypeMenuItem(std::vector<std::string> names, std::vector<std::string> iconPaths, std::string activityType,
                                                  std::vector<std::string> vconfStateKeys, std::string subMenuLabel = {},
                                                  std::string showingStateVconfKey = {}, RepetitionPolicy repetitionPolicy = RepetitionPolicy::single);
 
@@ -96,9 +97,10 @@ public:
 class QuickpanelTypeMenuItem : public MenuItemImplementation
 {
 public:
-       QuickpanelTypeMenuItem(std::vector<std::string> names, std::string iconPath, std::string activityType);
+       QuickpanelTypeMenuItem(std::vector<std::string> names, std::vector<std::string> iconPaths, std::string activityType);
 
        std::string getName() const override;
+       std::string getIconPath() const override;
 };
 
 class MenuImplementation : public Menu
@@ -129,9 +131,9 @@ private:
        std::unordered_map<std::string, std::shared_ptr<Menu>> map;
 };
 
-MenuItemImplementation::MenuItemImplementation(std::vector<std::string> names, std::string iconPath, std::string activityType,
+MenuItemImplementation::MenuItemImplementation(std::vector<std::string> names, std::vector<std::string> iconPaths, std::string activityType,
                std::string subMenuLabel, std::string showingStateVconfKey, RepetitionPolicy repetitionPolicy)
-       : names(std::move(names)), iconPath(std::move(iconPath)), activityType(std::move(activityType)),
+       : names(std::move(names)), iconPaths(std::move(iconPaths)), activityType(std::move(activityType)),
          subMenuLabel(std::move(subMenuLabel)), showingStateVconfKey(std::move(showingStateVconfKey)), repetitionPolicy(repetitionPolicy) {}
 
 std::string MenuItemImplementation::getName() const
@@ -141,7 +143,7 @@ std::string MenuItemImplementation::getName() const
 
 std::string MenuItemImplementation::getIconPath() const
 {
-       return iconPath;
+       return iconPaths.empty() ? std::string() : iconPaths[0];
 }
 
 std::string MenuItemImplementation::getActivityType() const
@@ -164,9 +166,9 @@ bool MenuItemImplementation::isRepeatable() const
        return static_cast<bool>(repetitionPolicy);
 }
 
-VconfTypeMenuItem::VconfTypeMenuItem(std::vector<std::string> names, std::string iconPath, std::string activityType,
+VconfTypeMenuItem::VconfTypeMenuItem(std::vector<std::string> names, std::vector<std::string> iconPaths, std::string activityType,
                                                                         std::string subMenuLabel, std::string showingStateVconfKey, RepetitionPolicy repetitionPolicy)
-       : MenuItemImplementation(std::move(names), std::move(iconPath), std::move(activityType), std::move(subMenuLabel), std::move(showingStateVconfKey), repetitionPolicy),
+       : MenuItemImplementation(std::move(names), std::move(iconPaths), std::move(activityType), std::move(subMenuLabel), std::move(showingStateVconfKey), repetitionPolicy),
          index(0)
 {
        ASSERT(!this->names.empty(), "Forbidden VconfTypeMenuItem");
@@ -174,7 +176,12 @@ VconfTypeMenuItem::VconfTypeMenuItem(std::vector<std::string> names, std::string
 
 std::string VconfTypeMenuItem::getName() const
 {
-       return gettext(names[index].c_str());
+       return names.empty() ? std::string() : gettext(names[index].c_str());
+}
+
+std::string VconfTypeMenuItem::getIconPath() const
+{
+       return iconPaths.empty() ? std::string() : iconPaths[index < iconPaths.size() ? index : 0];
 }
 
 void VconfTypeMenuItem::vconfChangeCb()
@@ -183,9 +190,9 @@ void VconfTypeMenuItem::vconfChangeCb()
        notify(shared_from_this());
 }
 
-VconfIntTypeMenuItem::VconfIntTypeMenuItem(std::vector<std::string> names, std::string iconPath, std::string activityType,
+VconfIntTypeMenuItem::VconfIntTypeMenuItem(std::vector<std::string> names, std::vector<std::string> iconPaths, std::string activityType,
                std::string vconfStateKey, std::string subMenuLabel, std::string showingStateVconfKey, RepetitionPolicy repetitionPolicy)
-       : VconfTypeMenuItem(std::move(names), std::move(iconPath), std::move(activityType), std::move(subMenuLabel), std::move(showingStateVconfKey), repetitionPolicy),
+       : VconfTypeMenuItem(std::move(names), std::move(iconPaths), std::move(activityType), std::move(subMenuLabel), std::move(showingStateVconfKey), repetitionPolicy),
          vconfStateKey(std::move(vconfStateKey))
 {
        index = getIndex();
@@ -204,10 +211,10 @@ size_t VconfIntTypeMenuItem::getIndex() const
        return static_cast<size_t>(idx);
 }
 
-VconfBoolTypeMenuItem::VconfBoolTypeMenuItem(std::vector<std::string> names, std::string iconPath, std::string activityType,
+VconfBoolTypeMenuItem::VconfBoolTypeMenuItem(std::vector<std::string> names, std::vector<std::string> iconPaths, std::string activityType,
                std::vector<std::string> vconfStateKeys,
                std::string subMenuLabel, std::string showingStateVconfKey, RepetitionPolicy repetitionPolicy)
-       : VconfTypeMenuItem(std::move(names), std::move(iconPath), std::move(activityType), std::move(subMenuLabel), std::move(showingStateVconfKey), repetitionPolicy),
+       : VconfTypeMenuItem(std::move(names), std::move(iconPaths), std::move(activityType), std::move(subMenuLabel), std::move(showingStateVconfKey), repetitionPolicy),
          vconfStateKeys(std::move(vconfStateKeys))
 {
        index = getIndex();
@@ -231,15 +238,22 @@ size_t VconfBoolTypeMenuItem::getIndex() const
        return static_cast<size_t>(idx);
 }
 
-QuickpanelTypeMenuItem::QuickpanelTypeMenuItem(std::vector<std::string> names, std::string iconPath, std::string activityType)
-       : MenuItemImplementation(std::move(names), std::move(iconPath), std::move(activityType))
+QuickpanelTypeMenuItem::QuickpanelTypeMenuItem(std::vector<std::string> names, std::vector<std::string> iconPaths, std::string activityType)
+       : MenuItemImplementation(std::move(names), std::move(iconPaths), std::move(activityType))
 {}
 
 std::string QuickpanelTypeMenuItem::getName() const
 {
        auto window =  Singleton<UniversalSwitch>::instance().getMainWindow();
        ASSERT(window, "NULL Window");
-       return gettext(names[window->getQuickpanel()->isVisible() ? 1 : 0].c_str());
+       return names.empty() ? std::string() : gettext(names[window->getQuickpanel()->isVisible() && names.size() > 1 ? 1 : 0].c_str());
+}
+
+std::string QuickpanelTypeMenuItem::getIconPath() const
+{
+       auto window =  Singleton<UniversalSwitch>::instance().getMainWindow();
+       ASSERT(window, "NULL Window");
+       return iconPaths.empty() ? std::string() : iconPaths[window->getQuickpanel()->isVisible() && iconPaths.size() > 1 ? 1 : 0].c_str();
 }
 
 MenuImplementation::MenuImplementation(std::vector<std::shared_ptr<MenuItem>> menuItems, Alignment alignment, NavigateToSuperMenu navigateToSuperMenu)
@@ -272,73 +286,73 @@ MenuBuilderImplementation::MenuBuilderImplementation()
 
        auto tap                                        =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_TAP"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "TAP");
        auto homeScreen                         =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_HOME_SCREEN"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "START_HOME_SCREEN",
                                                                                std::string {},
                                                                                VCONF_KEY_SHOW_HOME_SCREEN_MENU_ITEM);
        auto back                                       =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_BACK"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "BACK",
                                                                                std::string {},
                                                                                VCONF_KEY_SHOW_BACK_MENU_ITEM);
        auto openCloseNotifications     =       std::make_shared<QuickpanelTypeMenuItem>(
                                                                                std::vector<std::string> {"IDS_OPEN_NOTI_PANEL", "IDS_CLOSE_NOTI_PANEL"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg}, //TODO add two icons
                                                                                "TOGGLE_QUICKPANEL");
        auto recentApps                         =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_RECENT_APPS"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "START_TASK_MGR",
                                                                                std::string {},
                                                                                VCONF_KEY_SHOW_RECENT_APPS_MENU_ITEM);
        auto accept                                     =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_ACCEPT"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "ACCEPT_INCOMMING_CALL");
        auto reject                                     =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_REJECT"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "REJECT_INCOMMING_CALL");
        auto endCall                            =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_END_CALL"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "END_CALL");
        auto leftPage                           =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_LEFT_PAGE"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "LEFT_PAGE",
                                                                                std::string {},
                                                                                std::string {},
                                                                                RepetitionPolicy::multiple);
        auto rightPage                          =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_RIGHT_PAGE"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "RIGHT_PAGE",
                                                                                std::string {},
                                                                                std::string {},
                                                                                RepetitionPolicy::multiple);
        auto increase                           =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_INCREASE"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                std::string {"INCREASE_UI_ELEMENT_VALUE"},
                                                                                std::string {},
                                                                                std::string {},
                                                                                RepetitionPolicy::multiple);
        auto decrease                           =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_DECREASE"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                std::string {"DECREASE_UI_ELEMENT_VALUE"},
                                                                                std::string {},
                                                                                std::string {},
                                                                                RepetitionPolicy::multiple);
        auto textEditionMode            =       std::make_shared<VconfIntTypeMenuItem>(
                                                                                std::vector<std::string> {"IDS_SELECTION_MODE", "IDS_EDITION_MODE"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg}, //TODO add two icons
                                                                                std::string {"CHANGE_TEXT_EDITION_MODE"},
                                                                                std::string {VCONF_KEY_TEXT_EDITION_MODE},
                                                                                std::string {},
@@ -346,14 +360,14 @@ MenuBuilderImplementation::MenuBuilderImplementation()
                                                                                RepetitionPolicy::multiple);
        auto selectAll                          =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_SELECT_ALL"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "SELECT_ALL",
                                                                                std::string {},
                                                                                std::string {},
                                                                                RepetitionPolicy::multiple);
        auto previous                           =       std::make_shared<VconfIntTypeMenuItem>(
                                                                                std::vector<std::string> { "IDS_PREVIOUS_CHARACTER", "IDS_PREVIOUS_WORD", "IDS_PREVIOUS_LINE", "IDS_PREVIOUS_PARAGRAPH"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg}, //TODO add four icons
                                                                                "PREV_GRANLUARITY_UNIT",
                                                                                std::string {VCONF_KEY_GRANULARITY_UNIT},
                                                                                std::string {},
@@ -361,7 +375,7 @@ MenuBuilderImplementation::MenuBuilderImplementation()
                                                                                RepetitionPolicy::multiple);
        auto next                                       =       std::make_shared<VconfIntTypeMenuItem>(
                                                                                std::vector<std::string> { "IDS_NEXT_CHARACTER", "IDS_NEXT_WORD", "IDS_NEXT_LINE", "IDS_NEXT_PARAGRAPH"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg}, //TODO add four icons
                                                                                "NEXT_GRANLUARITY_UNIT",
                                                                                std::string {VCONF_KEY_GRANULARITY_UNIT},
                                                                                std::string {},
@@ -369,44 +383,44 @@ MenuBuilderImplementation::MenuBuilderImplementation()
                                                                                RepetitionPolicy::multiple);
        auto copy                                       =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_COPY"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "COPY");
        auto paste                                      =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_PASTE"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "PASTE");
        auto cut                                        =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_CUT"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "CUT");
        auto touchHold                          =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_TOUCH_AND_HOLD"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "TOUCH_AND_HOLD");
        auto touchHoldThenDrag          =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_TOUCH_AND_HOLD_THEN_DRAG"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                std::string {},
                                                                                "IDS_MENU_FOR_TOUCH_AND_HOLD_THEN_DRAG");
        auto swipeUp                            =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_SWIPE_UP"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "SWIPE_UP");
        auto swipeDown                          =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_SWIPE_DOWN"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "SWIPE_DOWN");
        auto swipeLeft                          =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_SWIPE_LEFT"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "SWIPE_LEFT");
        auto swipeRight                         =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_SWIPE_RIGHT"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "SWIPE_RIGHT");
        auto turnOnOffAutoScroll        =       std::make_shared<VconfBoolTypeMenuItem>(
                                                                                std::vector<std::string> {"IDS_TURN_ON_AUTO_SCROLL", "IDS_TURN_OFF_AUTO_SCROLL"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg}, //TODO add two icons
                                                                                "TOGGLE_AUTO_SCROLL_ENABLED_ACTIVITY",
                                                                                std::vector<std::string> {VCONF_KEY_AUTO_SCROLL_ENABLED},
                                                                                std::string {},
@@ -414,67 +428,67 @@ MenuBuilderImplementation::MenuBuilderImplementation()
                                                                                RepetitionPolicy::multiple);
        auto speedUpAutoScroll          =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_SPEED_UP_AUTO_SCROLL"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "SCROLL_SPEED_UP",
                                                                                std::string {},
                                                                                std::string {},
                                                                                RepetitionPolicy::multiple);
        auto slowDownAutoScroll         =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_SLOW_DOWN_AUTO_SCROLL"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "SCROLL_SLOW_DOWN",
                                                                                std::string {},
                                                                                std::string {},
                                                                                RepetitionPolicy::multiple);
        auto scrollUp                           =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_SCROLL_UP"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "SCROLL_PAGE_UP",
                                                                                std::string {},
                                                                                std::string {},
                                                                                RepetitionPolicy::multiple);
        auto scrollDown                         =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_SCROLL_DOWN"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "SCROLL_PAGE_DOWN",
                                                                                std::string {},
                                                                                std::string {},
                                                                                RepetitionPolicy::multiple);
        auto scrollTop                          =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_SCROLL_TOP"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "SCROLL_TO_TOP",
                                                                                std::string {},
                                                                                std::string {},
                                                                                RepetitionPolicy::multiple);
        auto drag                                       =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_DRAG"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                std::string {},
                                                                                "IDS_MENU_FOR_DRAG");
        auto dragDone                           =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_DONE"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "DRAG");
        auto touchHoldThenDragDone      =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_DONE"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "TOUCH_AND_HOLD_THEN_DRAG");
        auto cancel                                     =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_CANCEL"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "CANCEL");
        auto zoomIn                                     =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_ZOOM_IN"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "ZOOM_IN");
        auto zoomOut                            =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_ZOOM_OUT"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "ZOOM_OUT");
        auto soundVibrationMute         =       std::make_shared<VconfBoolTypeMenuItem>(
                                                                                std::vector<std::string> {"IDS_SOUND", "IDS_VIBRATION", "IDS_MUTE"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},  //TODO add three icons
                                                                                "CHANGE_SOUND_PROFILE_ACTIVITY",
                                                                                std::vector<std::string> {VCONF_KEY_SOUND_ENABLED, VCONF_KEY_VIBRATION_ENABLED},
                                                                                std::string {},
@@ -482,175 +496,175 @@ MenuBuilderImplementation::MenuBuilderImplementation()
                                                                                RepetitionPolicy::multiple);
        auto lock                                       =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_LOCK"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "START_LOCK_SCREEN");
        auto captureScreenshot          =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_CAPTURE_SCREENSHOT"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "SCREENSHOT");
        auto rotateLeft                         =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_ROTATE_LEFT"},
-                                                                               defaultImg);
+                                                                               std::vector<std::string> {defaultImg});
        auto rotateRight                        =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_ROTATE_RIGHT"},
-                                                                               defaultImg);
+                                                                               std::vector<std::string> {defaultImg});
        auto rotateToPortrait           =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_ROTATE_TO_PORTRAIT"},
-                                                                               defaultImg);
+                                                                               std::vector<std::string> {defaultImg});
        auto speedUpScaning                     =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_SPEED_UP_SCANING"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                std::string{"SPEED_UP_AUTO_SCAN_ACTIVITY"},
                                                                                std::string {},
                                                                                std::string {},
                                                                                RepetitionPolicy::multiple);
        auto slowDownScaning            =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_SLOW_DOWN_SCANING"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                std::string{"SLOW_DOWN_AUTO_SCAN_ACTIVITY"},
                                                                                std::string {},
                                                                                std::string {},
                                                                                RepetitionPolicy::multiple);
        auto scanMethod                         =       std::make_shared<VconfIntTypeMenuItem>(
                                                                                std::vector<std::string> {"IDS_ROW_SCAN", "IDS_POINT_SCAN"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},  //TODO add two icons
                                                                                std::string {"CHANGE_SCANNING_METHOD"},
                                                                                std::string {VCONF_KEY_SCAN_METHOD});
        auto scanVerticalDirection      =       std::make_shared<VconfIntTypeMenuItem>(
                                                                                std::vector<std::string> {"IDS_BOTTOM_TO_TOP", "IDS_TOP_TO_BOTTOM"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg}, //TODO add two icons
                                                                                "CHANGE_SCANNING_DIRECTION_MODE",
                                                                                std::string {VCONF_KEY_SCAN_DIRECTION_VERTICAL});
        auto turnOnOffVoice                     =       std::make_shared<VconfBoolTypeMenuItem>(
                                                                                std::vector<std::string> {"IDS_TURN_ON_VOICE", "IDS_TURN_OFF_VOICE"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},  //TODO add two icons
                                                                                std::string {"TOGGLE_VOICE_FEEDBACK_ENABLED_ACTIVITY"},
                                                                                std::vector<std::string> {VCONF_KEY_FEEDBACK_VOICE_ENABLED});
        auto turnOnOffSound                     =       std::make_shared<VconfBoolTypeMenuItem>(
                                                                                std::vector<std::string> {"IDS_TURN_ON_SOUND", "IDS_TURN_OFF_SOUND"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg}, //TODO add two icons
                                                                                std::string {"TOGGLE_SOUND_FEEDBACK_ENABLED_ACTIVITY"},
                                                                                std::vector<std::string> {VCONF_KEY_FEEDBACK_SOUND_ENABLED});
        auto moreSettings                       =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_MORE_SETTINGS"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "START_SETTINGS");
        auto character                          =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_CHARACTER"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                std::string {"CHARACTER"},
                                                                                std::string {"PREVIOUS_MENU"});
        auto word                                       =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_WORD"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                std::string {"WORD"},
                                                                                std::string {"PREVIOUS_MENU"});
        auto line                                       =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_LINE"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                std::string {"LINE"},
                                                                                std::string {"PREVIOUS_MENU"});
        auto paragraph                          =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_PARAGRAPH"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                std::string {"PARAGRAPH"},
                                                                                std::string {"PREVIOUS_MENU"});
        auto ringtoneVolIncrease        =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_RINGTONE_VOLUME_INC"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "INCREASE_RINGTONE_VOLUME",
                                                                                std::string {},
                                                                                std::string {},
                                                                                RepetitionPolicy::multiple);
        auto ringtoneVolDecrease        =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_RINGTONE_VOLUME_DEC"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "DECREASE_RINGTONE_VOLUME",
                                                                                std::string {},
                                                                                std::string {},
                                                                                RepetitionPolicy::multiple);
        auto mediaVolumeIncrease        =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_MEDIA_VOLUME_INC"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "INCREASE_MEDIA_VOLUME",
                                                                                std::string {},
                                                                                std::string {},
                                                                                RepetitionPolicy::multiple);
        auto mediaVolumeDecrease        =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_MEDIA_VOLUME_DEC"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "DECREASE_MEDIA_VOLUME",
                                                                                std::string {},
                                                                                std::string {},
                                                                                RepetitionPolicy::multiple);
        auto tapHomeButtonx2            =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_TAP_HOME_BUTTON_X2"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "HOME_BUTTON_X2");
        auto tapHomeButtonx3            =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_TAP_HOME_BUTTON_X3"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "HOME_BUTTON_X3");
        auto viewPowerKeyMenu           =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_VIEW_POWER_KEY_MENU"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "POWER_KEY_MENU");
        auto notiVolumeIncrease         =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_NOTI_VOLUME_INC"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "INCREASE_NOTIFICATIONS_VOLUME",
                                                                                std::string {},
                                                                                std::string {},
                                                                                RepetitionPolicy::multiple);
        auto notiVolumeDecrease         =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_NOTI_VOLUME_DEC"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                "DECREASE_NOTIFICATIONS_VOLUME",
                                                                                std::string {},
                                                                                std::string {},
                                                                                RepetitionPolicy::multiple);
        auto autoScroll                         =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_AUTO_SCROLL"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                std::string {},
                                                                                "IDS_MENU_AUTO_SCROLL");
        auto ScreenRotation                     =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_SCREEN_ROTATION"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                std::string {},
                                                                                "IDS_MENU_ROTATE_SCREEN");
        auto gestures                           =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_GESTURES"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                std::string {},
                                                                                "IDS_MENU_GESTURES",
                                                                                VCONF_KEY_SHOW_GESTURES_MENU_ITEM);
        auto actions                            =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_ACTIONS"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                std::string {},
                                                                                "IDS_MENU_ACTIONS",
                                                                                VCONF_KEY_SHOW_ACTIONS_MENU_ITEM);
        auto settings                           =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_SETTINGS"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                std::string {},
                                                                                "IDS_MENU_SETTINGS",
                                                                                VCONF_KEY_SHOW_SETTINGS_MENU_ITEM);
        auto buttonsAndKeys                     =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_BUTTONS_AND_KEYS"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                std::string {},
                                                                                "IDS_MENU_BUTTONS_KEYS",
                                                                                VCONF_KEY_SHOW_BUTTONS_AND_KEYS_MENU_ITEM);
        auto editText                           =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_EDIT_TEXT"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                std::string {},
                                                                                "IDS_MENU_EDIT_TEXT");
        auto granularitySettings        =       std::make_shared<MenuItemImplementation>(
                                                                                std::vector<std::string> {"IDS_GRANULARITY_SETTINGS"},
-                                                                               defaultImg,
+                                                                               std::vector<std::string> {defaultImg},
                                                                                std::string {},
                                                                                "IDS_MENU_GRANULARITY");
        auto emptyItem                          =       std::make_shared<MenuItemImplementation>();