From e9ce334b610757bfbee9e2404c0f29e73cdc02c8 Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Sun, 2 Sep 2012 23:20:57 +0300 Subject: [PATCH] [bookmarks] Autosave bookmarks on delete/add operations in cross-platform code --- map/bookmark.cpp | 3 +++ map/framework.cpp | 10 ++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/map/bookmark.cpp b/map/bookmark.cpp index 7cd34ebf0a..eff1a87573 100644 --- a/map/bookmark.cpp +++ b/map/bookmark.cpp @@ -36,6 +36,9 @@ void BookmarkCategory::DeleteBookmark(size_t index) { delete m_bookmarks[index]; m_bookmarks.erase(m_bookmarks.begin() + index); + // Save updated file + if (!m_file.empty()) + (void)SaveToKMLFileAtPath(m_file); } } diff --git a/map/framework.cpp b/map/framework.cpp index b07a2ad6aa..2d28404838 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -298,7 +298,10 @@ void Framework::LoadBookmarks() void Framework::AddBookmark(string const & category, Bookmark const & bm) { - GetBmCategory(category)->AddBookmark(bm); + BookmarkCategory * cat = GetBmCategory(category); + cat->AddBookmark(bm); + // Autosave added bookmark + (void)cat->SaveToKMLFileAtPath(GetPlatform().WritableDir()); } namespace @@ -339,7 +342,10 @@ bool Framework::DeleteBmCategory(size_t index) { if (index < m_bookmarks.size()) { - delete m_bookmarks[index]; + // Delete category file + BookmarkCategory * cat = m_bookmarks[index]; + FileWriter::DeleteFileX(cat->GetFileName()); + delete cat; m_bookmarks.erase(m_bookmarks.begin() + index); return true; }