From a8ce8181d744420f1230c2d6f372dfd1ffda7434 Mon Sep 17 00:00:00 2001 From: Yuri Gorshenin Date: Tue, 3 Feb 2015 17:38:37 +0300 Subject: [PATCH] Revert "Merge pull request #224 from gorshenin/fixed-bookmarks-order" This reverts commit 52cf31897f2b3d3f48e46ecb7ef155180f605004, reversing changes made to 7be1c7d93f09cd70963815b5289d28e8a8102437. --- map/bookmark.cpp | 3 +-- map/map_tests/bookmarks_test.cpp | 32 +++++++++++++--------------- map/map_tests/kmz_unarchive_test.cpp | 4 ++-- map/map_tests/mwm_url_tests.cpp | 15 ++++++------- map/user_mark_container.cpp | 29 ++++++++++++++++--------- map/user_mark_container.hpp | 5 +---- 6 files changed, 45 insertions(+), 43 deletions(-) diff --git a/map/bookmark.cpp b/map/bookmark.cpp index 82f1f422b1..f42292aff2 100644 --- a/map/bookmark.cpp +++ b/map/bookmark.cpp @@ -705,8 +705,7 @@ void BookmarkCategory::SaveToKML(ostream & s) for (size_t i = 0; i < GetBookmarksCount(); ++i) { - const size_t ix = GetBookmarksCount() - i - 1; - Bookmark const * bm = GetBookmark(ix); + Bookmark const * bm = GetBookmark(i); s << " \n"; s << " "; SaveStringWithCDATA(s, bm->GetName()); diff --git a/map/map_tests/bookmarks_test.cpp b/map/map_tests/bookmarks_test.cpp index 6b0b75f8e0..a179ae4e2a 100644 --- a/map/map_tests/bookmarks_test.cpp +++ b/map/map_tests/bookmarks_test.cpp @@ -120,19 +120,19 @@ char const * kmlString = { TEST_EQUAL(cat.GetBookmarksCount(), 4, ()); - Bookmark const * bm = cat.GetBookmark(3); + Bookmark const * bm = cat.GetBookmark(0); TEST_EQUAL(bm->GetName(), "Nebraska", ()); TEST_EQUAL(bm->GetType(), "placemark-red", ()); TEST_EQUAL(bm->GetDescription(), "", ()); TEST_EQUAL(bm->GetTimeStamp(), my::INVALID_TIME_STAMP, ()); - bm = cat.GetBookmark(2); + bm = cat.GetBookmark(1); TEST_EQUAL(bm->GetName(), "Monongahela National Forest", ()); TEST_EQUAL(bm->GetType(), "placemark-pink", ()); TEST_EQUAL(bm->GetDescription(), "Huttonsville, WV 26273
", ()); TEST_EQUAL(bm->GetTimeStamp(), 524214643, ()); - bm = cat.GetBookmark(1); + bm = cat.GetBookmark(2); m2::PointD org = bm->GetOrg(); TEST_ALMOST_EQUAL(MercatorBounds::XToLon(org.x), 27.566765, ()); TEST_ALMOST_EQUAL(MercatorBounds::YToLat(org.y), 53.900047, ()); @@ -141,7 +141,7 @@ char const * kmlString = TEST_EQUAL(bm->GetDescription(), "", ()); TEST_EQUAL(bm->GetTimeStamp(), 888888888, ()); - bm = cat.GetBookmark(0); + bm = cat.GetBookmark(3); org = bm->GetOrg(); TEST_ALMOST_EQUAL(MercatorBounds::XToLon(org.x), 27.551532, ()); TEST_ALMOST_EQUAL(MercatorBounds::YToLat(org.y), 53.89306, ()); @@ -286,11 +286,11 @@ UNIT_TEST(Bookmarks_Timestamp) fm.AddCategory(arrCat[1]); fm.AddBookmark(1, orgPoint, b3); - TEST_EQUAL(fm.GetBmCategory(0)->GetBookmark(1)->GetName(), "name", ()); - TEST_EQUAL(fm.GetBmCategory(0)->GetBookmark(1)->GetType(), "type", ()); + TEST_EQUAL(fm.GetBmCategory(0)->GetBookmark(0)->GetName(), "name", ()); + TEST_EQUAL(fm.GetBmCategory(0)->GetBookmark(0)->GetType(), "type", ()); - TEST_EQUAL(fm.GetBmCategory(0)->GetBookmark(0)->GetName(), "newName", ()); - TEST_EQUAL(fm.GetBmCategory(0)->GetBookmark(0)->GetType(), "newType", ()); + TEST_EQUAL(fm.GetBmCategory(0)->GetBookmark(1)->GetName(), "newName", ()); + TEST_EQUAL(fm.GetBmCategory(0)->GetBookmark(1)->GetType(), "newType", ()); TEST_EQUAL(fm.GetBmCategory(1)->GetBookmark(0)->GetName(), "newName", ()); TEST_EQUAL(fm.GetBmCategory(1)->GetBookmark(0)->GetType(), "newType", ()); @@ -356,11 +356,9 @@ UNIT_TEST(Bookmarks_Getting) mark = GetBookmark(fm, m2::PointD(41, 40)); cat = GetCategory(mark); - - // Should find last added valid result, there two results with the - // same coordinates 3 and 4, but 4 was added later. - TEST_EQUAL(mark->GetName(), "4", ()); - TEST_EQUAL(mark->GetType(), "placemark-blue", ()); + //should find first valid result, there two results with the same coordinates 3 and 4 + TEST_EQUAL(mark->GetName(), "3", ()); + TEST_EQUAL(mark->GetType(), "placemark-red", ()); TEST_EQUAL(cat->GetBookmarksCount(), 2, ()); @@ -506,8 +504,8 @@ UNIT_TEST(Bookmarks_AddingMoving) mark = GetBookmarkPxPoint(fm, pixelPoint); cat = GetCategory(mark); TEST_EQUAL(cat->GetName(), arrCat[0], ()); - TEST_EQUAL(mark->GetName(), "name2", ()); - TEST_EQUAL(mark->GetType(), "placemark-blue", ()); + TEST_EQUAL(mark->GetName(), "name", ()); + TEST_EQUAL(mark->GetType(), "placemark-red", ()); // Edit name, type and category of bookmark bm = BookmarkData("name3", "placemark-green"); @@ -520,8 +518,8 @@ UNIT_TEST(Bookmarks_AddingMoving) TEST_EQUAL(cat->GetName(), arrCat[0], ()); TEST_EQUAL(fm.GetBmCategory(0)->GetBookmarksCount(), 2, ("Bookmark wasn't moved from one category to another")); - TEST_EQUAL(mark->GetName(), "name2", ()); - TEST_EQUAL(mark->GetType(), "placemark-blue", ()); + TEST_EQUAL(mark->GetName(), "name", ()); + TEST_EQUAL(mark->GetType(), "placemark-red", ()); DeleteCategoryFiles(arrCat); } diff --git a/map/map_tests/kmz_unarchive_test.cpp b/map/map_tests/kmz_unarchive_test.cpp index 879c7fb3f6..f3c5a0d408 100644 --- a/map/map_tests/kmz_unarchive_test.cpp +++ b/map/map_tests/kmz_unarchive_test.cpp @@ -40,7 +40,7 @@ UNIT_TEST(Open_KMZ_Test) TEST_EQUAL(cat.GetBookmarksCount(), 6, ("Category wrong number of bookmarks")); { - Bookmark const * bm = cat.GetBookmark(5); + Bookmark const * bm = cat.GetBookmark(0); TEST_EQUAL(bm->GetName(), ("Lahaina Breakwall"), ("KML wrong name!")); TEST_EQUAL(bm->GetType(), "placemark-red", ("KML wrong type!")); TEST_ALMOST_EQUAL(bm->GetOrg().x, -156.6777046791284, ("KML wrong org x!")); @@ -48,7 +48,7 @@ UNIT_TEST(Open_KMZ_Test) TEST_EQUAL(bm->GetScale(), -1, ("KML wrong scale!")); } { - Bookmark const * bm = cat.GetBookmark(4); + Bookmark const * bm = cat.GetBookmark(1); TEST_EQUAL(bm->GetName(), ("Seven Sacred Pools, Kipahulu"), ("KML wrong name!")); TEST_EQUAL(bm->GetType(), "placemark-red", ("KML wrong type!")); TEST_ALMOST_EQUAL(bm->GetOrg().x, -156.0405130750025, ("KML wrong org x!")); diff --git a/map/map_tests/mwm_url_tests.cpp b/map/map_tests/mwm_url_tests.cpp index 1c7cc117c7..260552328d 100644 --- a/map/map_tests/mwm_url_tests.cpp +++ b/map/map_tests/mwm_url_tests.cpp @@ -142,12 +142,12 @@ UNIT_TEST(MapApiMultiplePoints) ApiTest api("mwm://map?ll=1.1,1.2&n=A&LL=2.1,2.2&ll=-3.1,-3.2&n=C"); TEST(api.IsValid(), ()); TEST_EQUAL(api.GetPointCount(), 3, ()); - TEST(api.TestLatLon(2, 1.1, 1.2), ()); - TEST(api.TestName(2, "A"), ()); + TEST(api.TestLatLon(0, 1.1, 1.2), ()); + TEST(api.TestName(0, "A"), ()); TEST(api.TestLatLon(1, 2.1, 2.2), ()); TEST(api.TestName(1, ""), ()); - TEST(api.TestLatLon(0, -3.1, -3.2), ()); - TEST(api.TestName(0, "C"), ()); + TEST(api.TestLatLon(2, -3.1, -3.2), ()); + TEST(api.TestName(2, "C"), ()); } UNIT_TEST(MapApiInvalidPointLatLonButValidOtherParts) @@ -298,10 +298,9 @@ void generateRandomTest(size_t numberOfPoints, size_t stringLength) double lat = vect[i].m_lat; double lon = vect[i].m_lon; ToMercatoToLatLon(lat, lon); - const size_t ix = vect.size() - i - 1; - TEST(api.TestLatLon(ix, lat, lon), ()); - TEST(api.TestName(ix, vect[i].m_name), ()); - TEST(api.TestID(ix, vect[i].m_id), ()); + TEST(api.TestLatLon(i, lat, lon), ()); + TEST(api.TestName(i, vect[i].m_name), ()); + TEST(api.TestID(i, vect[i].m_id), ()); } TEST_EQUAL(api.GetApiVersion(), 1, ()); } diff --git a/map/user_mark_container.cpp b/map/user_mark_container.cpp index 33a53b7c7b..6ed109aba5 100644 --- a/map/user_mark_container.cpp +++ b/map/user_mark_container.cpp @@ -202,9 +202,8 @@ MyPositionMarkPoint * UserMarkContainer::UserMarkForMyPostion() UserMark * UserMarkContainer::CreateUserMark(m2::PointD const & ptOrg) { - unique_ptr mark(AllocateUserMark(ptOrg)); - m_userMarks.push_front(mark.get()); - return mark.release(); + m_userMarks.push_back(AllocateUserMark(ptOrg)); + return m_userMarks.back(); } size_t UserMarkContainer::GetUserMarkCount() const @@ -224,23 +223,33 @@ UserMark * UserMarkContainer::GetUserMark(size_t index) return m_userMarks[index]; } -void UserMarkContainer::DeleteUserMark(size_t index) +namespace { - ASSERT_LESS(index, m_userMarks.size(), ()); - if (index < m_userMarks.size()) + +template void DeleteItem(vector & v, size_t i) +{ + if (i < v.size()) { - delete m_userMarks[index]; - m_userMarks.erase(m_userMarks.begin() + index); + delete v[i]; + v.erase(v.begin() + i); } else { - LOG(LWARNING, ("Trying to delete non-existing item at index", index)); + LOG(LWARNING, ("Trying to delete non-existing item at index", i)); } } +} + +void UserMarkContainer::DeleteUserMark(size_t index) +{ + ASSERT_LESS(index, m_userMarks.size(), ()); + DeleteItem(m_userMarks, index); +} + void UserMarkContainer::DeleteUserMark(UserMark const * mark) { - UserMarksList::iterator it = find(m_userMarks.begin(), m_userMarks.end(), mark); + vector::iterator it = find(m_userMarks.begin(), m_userMarks.end(), mark); if (it != m_userMarks.end()) DeleteUserMark(distance(m_userMarks.begin(), it)); } diff --git a/map/user_mark_container.hpp b/map/user_mark_container.hpp index 6dc55e974e..becfc3cd38 100644 --- a/map/user_mark_container.hpp +++ b/map/user_mark_container.hpp @@ -7,7 +7,6 @@ #include "../geometry/point2d.hpp" #include "../geometry/rect2d.hpp" -#include "../std/deque.hpp" #include "../std/noncopyable.hpp" class Framework; @@ -26,8 +25,6 @@ namespace graphics class UserMarkContainer : private noncopyable { public: - using UserMarksList = deque; - class Controller { public: @@ -109,7 +106,7 @@ private: bool m_isVisible; bool m_isDrawable; double m_layerDepth; - UserMarksList m_userMarks; + vector m_userMarks; }; class SearchUserMarkContainer : public UserMarkContainer