From 525dcd07aacf65ebb3d717d009ed5761087add55 Mon Sep 17 00:00:00 2001 From: Igor Khmurets Date: Tue, 20 May 2014 23:09:35 +0300 Subject: [PATCH] [core] Added MoveBookmark function --- map/bookmark_manager.cpp | 13 +++++++++++++ map/bookmark_manager.hpp | 4 +++- map/framework.cpp | 9 +++++++-- map/framework.hpp | 4 +++- 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/map/bookmark_manager.cpp b/map/bookmark_manager.cpp index 4c53b3bb9c..5bb922278a 100644 --- a/map/bookmark_manager.cpp +++ b/map/bookmark_manager.cpp @@ -192,6 +192,19 @@ size_t BookmarkManager::AddBookmark(size_t categoryIndex, const m2::PointD & ptO return (pCat->GetBookmarksCount() - 1); } +size_t BookmarkManager::MoveBookmark(size_t bmIndex, size_t curCatIndex, size_t newCatIndex) +{ + BookmarkCategory * cat = m_framework.GetBmCategory(curCatIndex); + + Bookmark * bm = cat->GetBookmark(bmIndex); + Bookmark bmCopy = Bookmark(*bm); + + cat->DeleteBookmark(bmIndex); + cat->SaveToKMLFile(); + + return m_framework.AddBookmark(newCatIndex, bmCopy); +} + void BookmarkManager::ReplaceBookmark(size_t catIndex, size_t bmIndex, BookmarkData const & bm) { BookmarkCategory * pCat = m_categories[catIndex]; diff --git a/map/bookmark_manager.hpp b/map/bookmark_manager.hpp index 16d3678ac3..48da54010d 100644 --- a/map/bookmark_manager.hpp +++ b/map/bookmark_manager.hpp @@ -40,7 +40,9 @@ public: void LoadBookmark(string const & filePath); /// Client should know where it adds bookmark - size_t AddBookmark(size_t categoryIndex, m2::PointD const & ptOrg, BookmarkData & bm); + size_t AddBookmark(size_t categoryIndex, BookmarkData & bm); + /// Client should know where it moves bookmark + size_t MoveBookmark(size_t bmIndex, size_t curCatIndex, size_t newCatIndex); void ReplaceBookmark(size_t catIndex, size_t bmIndex, BookmarkData const & bm); size_t LastEditedBMCategory(); diff --git a/map/framework.cpp b/map/framework.cpp index b8732c7734..e2460de1ce 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -1,4 +1,4 @@ -#include "framework.hpp" +#include "framework.hpp" #include "feature_processor.hpp" #include "drawer.hpp" #include "benchmark_provider.hpp" @@ -341,7 +341,12 @@ size_t Framework::AddBookmark(size_t categoryIndex, const m2::PointD & ptOrg, Bo return m_bmManager.AddBookmark(categoryIndex, ptOrg, bm); } -void Framework::ReplaceBookmark(size_t catIndex, size_t bmIndex, const BookmarkData & bm) +size_t Framework::MoveBookmark(size_t bmIndex, size_t curCatIndex, size_t newCatIndex) +{ + return m_bmManager.MoveBookmark(bmIndex, curCatIndex, newCatIndex); +} + +void Framework::ReplaceBookmark(size_t catIndex, size_t bmIndex, BookmarkData const & bm) { m_bmManager.ReplaceBookmark(catIndex, bmIndex, bm); } diff --git a/map/framework.hpp b/map/framework.hpp index ce3cc62543..3a3a91764b 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -179,7 +179,9 @@ public: void LoadBookmarks(); /// @return Created bookmark index in category. - size_t AddBookmark(size_t categoryIndex, m2::PointD const & ptOrg, BookmarkData & bm); + size_t AddBookmark(size_t categoryIndex, BookmarkData & bm); + /// @return New moved bookmark index in category. + size_t MoveBookmark(size_t bmIndex, size_t curCatIndex, size_t newCatIndex); void ReplaceBookmark(size_t catIndex, size_t bmIndex, BookmarkData const & bm); /// @return Created bookmark category index. size_t AddCategory(string const & categoryName);