MenuBuilder will return vector of MenuItems in same order as they will be displayed 54/153854/8
authorPawel Kurowski <p.kurowski2@samsung.com>
Sun, 1 Oct 2017 17:49:13 +0000 (19:49 +0200)
committerLukasz Oleksak <l.oleksak@samsung.com>
Wed, 4 Oct 2017 14:08:27 +0000 (14:08 +0000)
Limited number of copy constructor calls.

Change-Id: I6fb0c906fe60c1f2000901f49c48e3d021b4b1eb

src/MenuBuilder.cpp
src/SelectActivity.cpp
tests/no-ui-scenarios/TranslationsTests.cpp
tests/ui-scenarios/MenuBuilderTests.cpp

index 1a23082..07e776b 100644 (file)
@@ -93,7 +93,7 @@ public:
        std::vector<std::shared_ptr<MenuItem>> find(std::string) override;
 
 private:
-       void addToMap(std::string, std::vector<std::shared_ptr<MenuItem>>);
+       void addToMap(const std::string &, const std::vector<std::shared_ptr<MenuItem>> &);
 
        std::multimap<std::string, std::shared_ptr<MenuItem>> map;
 };
@@ -621,12 +621,10 @@ std::vector<std::shared_ptr<MenuItem>> MenuMapImplementation::find(std::string m
        return foundMenuItems;
 }
 
-void MenuMapImplementation::addToMap(std::string menuLabel, std::vector<std::shared_ptr<MenuItem>> menuItems)
+void MenuMapImplementation::addToMap(const std::string &menuLabel, const std::vector<std::shared_ptr<MenuItem>> &menuItems)
 {
-       while (!menuItems.empty()) {
-               map.insert(std::make_pair(menuLabel, menuItems.back()));
-               menuItems.pop_back();
-       }
+       for (auto &menuItem : menuItems)
+               map.emplace(menuLabel, std::move(menuItem));
 }
 
 template<>
index 9c33a44..1f9ce42 100644 (file)
@@ -412,14 +412,12 @@ int SelectActivity::addItemsToMenu(Evas_Object *gengrid, const std::string &comp
 
        auto menuItems = Singleton<MenuMap>::instance().find(completeLabelOfMenu);
        auto numberOfItems = menuItems.size();
-       while (!menuItems.empty()) {
-               menuItems.back()->attach(std::dynamic_pointer_cast<SelectActivity>(shared_from_this()), std::make_shared<ConditionAll<MenuItem>>());
-               auto object = elm_gengrid_item_append(gengrid, gic, menuItems.back().get(), gengridItemSelectedCb, this);
-               gengridItemsData.push_back(std::make_pair(menuItems.back(), object));
-               if (object && menuItems.back()->getName().empty())
+       for (auto &menuItem : menuItems) {
+               menuItem->attach(std::dynamic_pointer_cast<SelectActivity>(shared_from_this()), std::make_shared<ConditionAll<MenuItem>>());
+               auto object = elm_gengrid_item_append(gengrid, gic, menuItem.get(), gengridItemSelectedCb, this);
+               if (object && menuItem->getName().empty())
                        elm_atspi_accessible_can_highlight_set(object, EINA_FALSE);
-
-               menuItems.pop_back();
+               gengridItemsData.emplace_back(std::move(menuItem), object);
        }
 
        elm_gengrid_item_class_free(gic);
index 556150b..862c67d 100644 (file)
@@ -6,7 +6,7 @@
 
 TEST(Translations, testTranslations)
 {
-       auto menuItem = Singleton<MenuMap>::instance().find("IDS_MENU_MAIN_NORMAL").back();
+       auto menuItem = Singleton<MenuMap>::instance().find("IDS_MENU_MAIN_NORMAL").front();
        EXPECT_EQ(menuItem->getName(), "IDS_TAP");
        bindtextdomain(PROJECT_NAME, LOCALE_DIR);
        textdomain(PROJECT_NAME);
index 5b2b112..56717a8 100644 (file)
@@ -92,8 +92,7 @@ public:
                ASSERT_EQ(actualMenuItems.size(), expectedMenuItemsNames.size());
 
                for (auto ii = 0u; ii < actualMenuItems.size(); ++ii) {
-                       auto idxForExpectedMenuItems = actualMenuItems.size() - 1 - ii;
-                       EXPECT_EQ(actualMenuItems[ii]->getName(), expectedMenuItemsNames[idxForExpectedMenuItems]);
+                       EXPECT_EQ(actualMenuItems[ii]->getName(), expectedMenuItemsNames[ii]);
                }
        }
 
@@ -332,35 +331,35 @@ TEST_F(MenuBuilderTest, testMenuItemsStates)
 {
        auto actualMenuItems = Singleton<MenuMap>::instance().find("IDS_MENU_EDIT_TEXT");
 
-       auto next = actualMenuItems[4]; //Named variables are created here to increase test readability
+       auto next = actualMenuItems[3]; //Named variables are created here to increase test readability
        testVconfIntTypeMenuItemStates(next.get(), VCONF_KEY_GRANULARITY_UNIT,
        {"IDS_NEXT_CHARACTER", "IDS_NEXT_WORD", "IDS_NEXT_LINE", "IDS_NEXT_PARAGRAPH"});
 
-       auto prev = actualMenuItems[5];
+       auto prev = actualMenuItems[2];
        testVconfIntTypeMenuItemStates(prev.get(), VCONF_KEY_GRANULARITY_UNIT,
        {"IDS_PREVIOUS_CHARACTER", "IDS_PREVIOUS_WORD", "IDS_PREVIOUS_LINE", "IDS_PREVIOUS_PARAGRAPH"});
 
        actualMenuItems = Singleton<MenuMap>::instance().find("IDS_MENU_AUTO_SCROLL_ON");
 
-       auto turnOnOffAutoScroll = actualMenuItems[2];
+       auto turnOnOffAutoScroll = actualMenuItems[0];
        testVconfBoolTypeMenuItemStates(turnOnOffAutoScroll.get(), VCONF_KEY_AUTO_SCROLL_ENABLED,
        {"IDS_TURN_ON_AUTO_SCROLL", "IDS_TURN_OFF_AUTO_SCROLL"});
 
        actualMenuItems = Singleton<MenuMap>::instance().find("IDS_MENU_SETTINGS_AUTO_SCAN_ON");
 
-       auto turnOnOffSound = actualMenuItems[1];
-       testVconfBoolTypeMenuItemStates(turnOnOffSound.get(), VCONF_KEY_FEEDBACK_SOUND_ENABLED,
-       {"IDS_TURN_ON_SOUND", "IDS_TURN_OFF_SOUND"});
-
-       auto turnOnOffVoice = actualMenuItems[2];
-       testVconfBoolTypeMenuItemStates(turnOnOffVoice.get(), VCONF_KEY_FEEDBACK_VOICE_ENABLED,
-       {"IDS_TURN_ON_VOICE", "IDS_TURN_OFF_VOICE"});
+       auto scanMethod = actualMenuItems[2];
+       testVconfIntTypeMenuItemStates(scanMethod.get(), VCONF_KEY_SCAN_METHOD,
+       {"IDS_ROW_SCAN", "IDS_POINT_SCAN"});
 
        auto scanVerticalDirection = actualMenuItems[3];
        testVconfIntTypeMenuItemStates(scanVerticalDirection.get(), VCONF_KEY_SCAN_DIRECTION_VERTICAL,
        {"IDS_BOTTOM_TO_TOP", "IDS_TOP_TO_BOTTOM"});
 
-       auto scanMethod = actualMenuItems[4];
-       testVconfIntTypeMenuItemStates(scanMethod.get(), VCONF_KEY_SCAN_METHOD,
-       {"IDS_ROW_SCAN", "IDS_POINT_SCAN"});
+       auto turnOnOffVoice = actualMenuItems[4];
+       testVconfBoolTypeMenuItemStates(turnOnOffVoice.get(), VCONF_KEY_FEEDBACK_VOICE_ENABLED,
+       {"IDS_TURN_ON_VOICE", "IDS_TURN_OFF_VOICE"});
+
+       auto turnOnOffSound = actualMenuItems[5];
+       testVconfBoolTypeMenuItemStates(turnOnOffSound.get(), VCONF_KEY_FEEDBACK_SOUND_ENABLED,
+       {"IDS_TURN_ON_SOUND", "IDS_TURN_OFF_SOUND"});
 }
\ No newline at end of file