diff options
author | vng <viktor.govako@gmail.com> | 2013-02-12 23:34:41 +0400 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 01:50:48 +0300 |
commit | 51e13fc2e8f21b1681899306355806760f8dc9ef (patch) | |
tree | 8011b80db24beffa3072f8b51ecfff046163566b /android | |
parent | 393cd94d36a0aa97fd5ff96b435b3bdcff941121 (diff) |
[android] [bookmarks] Save previous category name and bookmark type (color).
Diffstat (limited to 'android')
-rw-r--r-- | android/jni/com/mapswithme/maps/Framework.cpp | 45 | ||||
-rw-r--r-- | android/jni/com/mapswithme/maps/Framework.hpp | 12 | ||||
-rw-r--r-- | android/jni/com/mapswithme/maps/bookmarks/data/Bookmark.cpp | 30 |
3 files changed, 60 insertions, 27 deletions
diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index 7fe8a1e8dc..3a4ce1c131 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -57,6 +57,9 @@ namespace android size_t const measurementsCount = 5; m_sensors[0].SetCount(measurementsCount); m_sensors[1].SetCount(measurementsCount); + + m_bmCategory = m_work.GetStringsBundle().GetString("my_places"); + m_bmType = "placemark-red"; } Framework::~Framework() @@ -676,24 +679,26 @@ namespace android { BookmarkBalloon * balloon = GetBookmarkBalloon(); - BookmarkAndCategory bac = m_work.GetBookmark(m_work.GtoP(balloon->glbPivot())); + BookmarkAndCategory bac = m_work.GetBookmark(m_work.GtoP(balloon->getBookmarkPivot())); if (ValidateBookmarkAndCategory(bac)) { - m_balloonClickListener(bac); + // add new bookmark + Bookmark bm(balloon->glbPivot(), balloon->bookmarkName(), m_bmType); + bac = AddBookmark(bm); } else { BookmarkCategory * cat; if (m_work.GetBmCategoriesCount() == 0) { - m_work.AddBookmark(m_work.GetStringsBundle().GetString("my_places"), Bookmark(balloon->glbPivot(), balloon->bookmarkName(), "placemark-red")); + m_work.AddBookmark(m_work.GetStringsBundle().GetString("my_places"), Bookmark(balloon->getBookmarkPivot(), balloon->getBookmarkName(), "placemark-red")); cat = m_work.GetBmCategory(m_work.GetBmCategoriesCount()-1); } else { cat = m_work.GetBmCategory(m_work.GetBmCategoriesCount()-1); - Bookmark bm(balloon->glbPivot(), balloon->bookmarkName(), "placemark-red"); - m_work.AddBookmark(cat->GetName(), bm); + LOG(LDEBUG,("Paladin", (balloon->getBookmarkPivot(), balloon->getBookmarkName(), "placemark-red"))); + m_work.AddBookmark(cat->GetName(), Bookmark(balloon->getBookmarkPivot(), balloon->getBookmarkName(), "placemark-red")); } cat->SaveToKMLFile(); int catSize = cat->GetBookmarksCount() - 1; @@ -715,13 +720,6 @@ namespace android m_balloonClickListener.clear(); } - BookmarkBalloon * Framework::GetBookmarkBalloon() - { - if (!m_bmBaloon) - CreateBookmarkBalloon(); - return m_bmBaloon.get(); - } - void Framework::CreateBookmarkBalloon() { CHECK(m_work.GetGuiController(), ()); @@ -748,4 +746,27 @@ namespace android m_bmBaloon->setOnClickListener(bind(&Framework::OnBalloonClick, this, _1)); m_work.GetGuiController()->AddElement(m_bmBaloon); } + + gui::BookmarkBalloon * Framework::GetBookmarkBalloon() + { + if (!m_bmBaloon) + CreateBookmarkBalloon(); + return m_bmBaloon.get(); + } + + BookmarkAndCategory Framework::AddBookmark(Bookmark const & bm) + { + BookmarkAndCategory const bac = m_work.AddBookmarkEx(m_bmCategory, bm); + BookmarkCategory * cat = m_work.GetBmCategory(bac.first); + cat->SetVisible(true); + cat->SaveToKMLFile(); + return bac; + } + + void Framework::AddBookmark(string const & category, Bookmark const & bm) + { + m_bmCategory = category; + m_bmType = bm.GetType(); + (void) AddBookmark(bm); + } } diff --git a/android/jni/com/mapswithme/maps/Framework.hpp b/android/jni/com/mapswithme/maps/Framework.hpp index 2272488230..a2316cc74f 100644 --- a/android/jni/com/mapswithme/maps/Framework.hpp +++ b/android/jni/com/mapswithme/maps/Framework.hpp @@ -75,11 +75,14 @@ namespace android return (bac.first > -1 && bac.second > -1); } - shared_ptr<BookmarkBalloon> m_bmBaloon; + shared_ptr<gui::BookmarkBalloon> m_bmBaloon; + string m_bmCategory; + string m_bmType; void OnBalloonClick(gui::Element * e); void CreateBookmarkBalloon(); - BookmarkBalloon * GetBookmarkBalloon(); + gui::BookmarkBalloon * GetBookmarkBalloon(); + BookmarkAndCategory AddBookmark(Bookmark const & bm); public: Framework(); @@ -137,11 +140,12 @@ namespace android void Scale(double k); - void AddBalloonClickListener(TOnBalloonClickListener const & l); void RemoveBalloonClickListener(); - void DeactivatePopup(); + + void AddBookmark(string const & category, Bookmark const & bm); + ::Framework * NativeFramework(); }; } diff --git a/android/jni/com/mapswithme/maps/bookmarks/data/Bookmark.cpp b/android/jni/com/mapswithme/maps/bookmarks/data/Bookmark.cpp index dbc3c66b91..794939bb65 100644 --- a/android/jni/com/mapswithme/maps/bookmarks/data/Bookmark.cpp +++ b/android/jni/com/mapswithme/maps/bookmarks/data/Bookmark.cpp @@ -43,11 +43,10 @@ extern "C" Java_com_mapswithme_maps_bookmarks_data_Bookmark_nSetBookmarkDescription( JNIEnv * env, jobject thiz, jint cat, jlong bmk, jstring newDescr) { - Bookmark b(*getBookmark(cat, bmk)); - b.SetDescription(jni::ToNativeString(env, newDescr)); - string name = frm()->GetBmCategory(cat)->GetName(); - frm()->AddBookmark(name, b); - frm()->GetBmCategory(name)->SaveToKMLFile(); + // do edit bookmark's description without AddBookmark routine + Bookmark * pBM = const_cast<Bookmark *>(getBookmark(cat, bmk)); + pBM->SetDescription(jni::ToNativeString(env, newDescr)); + frm()->GetBmCategory(cat)->SaveToKMLFile(); } JNIEXPORT jstring JNICALL @@ -77,15 +76,25 @@ extern "C" Java_com_mapswithme_maps_bookmarks_data_Bookmark_nChangeBookmark( JNIEnv * env, jobject thiz, jdouble x, jdouble y, jstring cat, jstring name, jstring type) { + // get existing bookmark under point BookmarkAndCategory bac = frm()->GetBookmark(frm()->GtoP(m2::PointD(x, y))); - Bookmark b(m2::PointD(x, y), jni::ToNativeString(env, name), jni::ToNativeString(env, type)); + + // initialize new bookmark + Bookmark bm(m2::PointD(x, y), jni::ToNativeString(env, name), jni::ToNativeString(env, type)); if (bac.first > -1 && bac.second > -1) + bm.SetDescription(getBookmark(bac.first, bac.second)->GetDescription()); + + // add new bookmark + string const category = jni::ToNativeString(env, cat); + g_framework->AddBookmark(category, bm); + + // save old bookmark's category + if (bac.first > -1) { - b.SetDescription(getBookmark(bac.first, bac.second)->GetDescription()); + BookmarkCategory * pCat = frm()->GetBmCategory(bac.first); + if (pCat->GetName() != category) + pCat->SaveToKMLFile(); } - frm()->AddBookmark(jni::ToNativeString(env, cat), b)->SaveToKMLFile(); - if (bac.first >= 0) - frm()->GetBmCategory(bac.first)->SaveToKMLFile(); } JNIEXPORT jobject JNICALL @@ -122,5 +131,4 @@ extern "C" { return jni::GetNewParcelablePointD(env, getBookmark(cat, bmk)->GetOrg()); } - } |