From 689ca54a269fe1bb85c1a2d58abf4e5b797cf6c4 Mon Sep 17 00:00:00 2001 From: Daria Volvenkova Date: Wed, 14 Feb 2018 05:14:39 +0300 Subject: [PATCH] Fixed Android after bookmarks refactoring. --- android/jni/CMakeLists.txt | 1 - android/jni/com/mapswithme/maps/Framework.cpp | 32 +-- android/jni/com/mapswithme/maps/Framework.hpp | 4 +- .../com/mapswithme/maps/UserMarkHelper.cpp | 12 +- .../maps/bookmarks/data/Bookmark.cpp | 44 ++-- .../maps/bookmarks/data/BookmarkCategory.cpp | 121 --------- .../maps/bookmarks/data/BookmarkManager.cpp | 235 ++++++++++++++---- .../maps/bookmarks/data/BookmarkManager.hpp | 7 - .../maps/DownloadResourcesLegacyActivity.java | 2 +- .../src/com/mapswithme/maps/Framework.java | 4 +- .../src/com/mapswithme/maps/MwmActivity.java | 14 +- .../com/mapswithme/maps/MwmApplication.java | 2 +- .../BaseBookmarkCategoryAdapter.java | 7 +- .../bookmarks/BookmarkCategoriesAdapter.java | 15 +- .../bookmarks/BookmarkCategoriesFragment.java | 35 +-- .../maps/bookmarks/BookmarkListAdapter.java | 33 ++- .../maps/bookmarks/BookmarksListFragment.java | 25 +- .../ChooseBookmarkCategoryAdapter.java | 5 +- .../ChooseBookmarkCategoryFragment.java | 21 +- .../maps/bookmarks/data/Bookmark.java | 59 ++--- .../maps/bookmarks/data/BookmarkCategory.java | 84 ------- .../maps/bookmarks/data/BookmarkManager.java | 220 ++++++++++++---- .../mapswithme/maps/bookmarks/data/Track.java | 10 +- .../placepage/EditBookmarkFragment.java | 26 +- .../maps/widget/placepage/PlacePageView.java | 9 +- .../util/sharing/SharingHelper.java | 4 +- 26 files changed, 551 insertions(+), 480 deletions(-) delete mode 100644 android/jni/com/mapswithme/maps/bookmarks/data/BookmarkCategory.cpp delete mode 100644 android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.hpp delete mode 100644 android/src/com/mapswithme/maps/bookmarks/data/BookmarkCategory.java diff --git a/android/jni/CMakeLists.txt b/android/jni/CMakeLists.txt index 47e72ba534..4dc08a2983 100644 --- a/android/jni/CMakeLists.txt +++ b/android/jni/CMakeLists.txt @@ -40,7 +40,6 @@ set( com/mapswithme/core/logging.cpp com/mapswithme/maps/bookmarks/data/Bookmark.cpp com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp - com/mapswithme/maps/bookmarks/data/BookmarkCategory.cpp com/mapswithme/maps/discovery/DiscoveryManager.cpp com/mapswithme/maps/discovery/Locals.cpp com/mapswithme/maps/DisplayedCategories.cpp diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index f60b3c0c49..d874e0f9d1 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -1,7 +1,6 @@ #include "com/mapswithme/maps/Framework.hpp" #include "com/mapswithme/core/jni_helper.hpp" #include "com/mapswithme/maps/UserMarkHelper.hpp" -#include "com/mapswithme/maps/bookmarks/data/BookmarkManager.hpp" #include "com/mapswithme/opengl/androidoglcontextfactory.hpp" #include "com/mapswithme/platform/Platform.hpp" #include "com/mapswithme/util/NetworkPolicy.hpp" @@ -375,12 +374,12 @@ void Framework::RemoveLocalMaps() void Framework::ReplaceBookmark(df::MarkID markId, BookmarkData & bm) { - m_work.ReplaceBookmark(markId, ind.m_bookmarkIndex, bm); + m_work.GetBookmarkManager().GetEditSession().UpdateBookmark(markId, bm); } -size_t Framework::ChangeBookmarkCategory(df::MarkID markId, df::MarkGroupID newCat) +void Framework::MoveBookmark(df::MarkID markId, df::MarkGroupID curCat, df::MarkGroupID newCat) { - return m_work.MoveBookmark(markId, newCat); + m_work.GetBookmarkManager().GetEditSession().MoveBookmark(markId, curCat, newCat); } bool Framework::ShowMapForURL(string const & url) @@ -415,9 +414,9 @@ string Framework::GetOutdatedCountriesString() return res; } -void Framework::ShowTrack(int category, int track) +void Framework::ShowTrack(df::LineID track) { - Track const * nTrack = NativeFramework()->GetBmCategory(category)->GetTrack(track); + Track const * nTrack = NativeFramework()->GetBookmarkManager().GetTrack(track); NativeFramework()->ShowTrack(*nTrack); } @@ -679,8 +678,7 @@ Java_com_mapswithme_maps_Framework_nativeGetNameAndAddress(JNIEnv * env, jclass JNIEXPORT void JNICALL Java_com_mapswithme_maps_Framework_nativeClearApiPoints(JNIEnv * env, jclass clazz) { - UserMarkNotificationGuard guard(frm()->GetBookmarkManager(), UserMark::Type::API); - guard.m_controller.Clear(); + frm()->GetBookmarkManager().GetEditSession().ClearGroup(UserMark::Type::API); } JNIEXPORT jint JNICALL @@ -903,9 +901,9 @@ Java_com_mapswithme_maps_Framework_nativeGetScreenRectCenter(JNIEnv * env, jclas } JNIEXPORT void JNICALL -Java_com_mapswithme_maps_Framework_nativeShowTrackRect(JNIEnv * env, jclass, jint cat, jint track) +Java_com_mapswithme_maps_Framework_nativeShowTrackRect(JNIEnv * env, jclass, jlong track) { - g_framework->ShowTrack(cat, track); + g_framework->ShowTrack(static_cast(track)); } JNIEXPORT jstring JNICALL @@ -1415,20 +1413,22 @@ JNIEXPORT jobject JNICALL Java_com_mapswithme_maps_Framework_nativeDeleteBookmarkFromMapObject(JNIEnv * env, jclass) { place_page::Info & info = g_framework->GetPlacePageInfo(); - auto const bac = info.GetBookmarkAndCategory(); - BookmarkCategory * category = frm()->GetBmCategory(bac.m_categoryIndex); - frm()->ResetBookmarkInfo(*static_cast(category->GetUserMark(bac.m_bookmarkIndex)), info); - bookmarks_helper::RemoveBookmark(bac.m_categoryIndex, bac.m_bookmarkIndex); + auto const bookmarkId = info.GetBookmarkId(); + frm()->ResetBookmarkInfo(*frm()->GetBookmarkManager().GetBookmark(bookmarkId), info); + frm()->GetBookmarkManager().GetEditSession().DeleteBookmark(bookmarkId); + // TODO(darina): Save to KML here return usermark_helper::CreateMapObject(env, info); } JNIEXPORT void JNICALL -Java_com_mapswithme_maps_Framework_nativeOnBookmarkCategoryChanged(JNIEnv * env, jclass, jint cat, jint bmk) +Java_com_mapswithme_maps_Framework_nativeOnBookmarkCategoryChanged(JNIEnv * env, jclass, jlong cat, jlong bmk) { place_page::Info & info = g_framework->GetPlacePageInfo(); ASSERT_GREATER_OR_EQUAL(bmk, 0, ()); ASSERT_GREATER_OR_EQUAL(cat, 0, ()); - info.SetBac({static_cast(bmk), static_cast(cat)}); + info.SetBookmarkCategoryId(static_cast(cat)); + info.SetBookmarkId(static_cast(bmk)); + info.SetBookmarkCategoryName(frm()->GetBookmarkManager().GetCategoryName(static_cast(cat))); } JNIEXPORT void JNICALL diff --git a/android/jni/com/mapswithme/maps/Framework.hpp b/android/jni/com/mapswithme/maps/Framework.hpp index 3c8f0bf657..7753daccb4 100644 --- a/android/jni/com/mapswithme/maps/Framework.hpp +++ b/android/jni/com/mapswithme/maps/Framework.hpp @@ -139,7 +139,7 @@ namespace android void Scale(m2::PointD const & centerPt, int targetZoom, bool animate); void ReplaceBookmark(df::MarkID markId, BookmarkData & bm); - size_t ChangeBookmarkCategory(df::MarkID markId, df::MarkGroupID newCat); + void MoveBookmark(df::MarkID markId, df::MarkGroupID curCat, df::MarkGroupID newCat); ::Framework * NativeFramework(); @@ -151,7 +151,7 @@ namespace android std::string GetOutdatedCountriesString(); - void ShowTrack(int category, int track); + void ShowTrack(df::LineID track); void SetMyPositionModeListener(location::TMyPositionModeChanged const & fn); location::EMyPositionMode GetMyPositionMode(); diff --git a/android/jni/com/mapswithme/maps/UserMarkHelper.cpp b/android/jni/com/mapswithme/maps/UserMarkHelper.cpp index e18ea73500..6f59b89cd1 100644 --- a/android/jni/com/mapswithme/maps/UserMarkHelper.cpp +++ b/android/jni/com/mapswithme/maps/UserMarkHelper.cpp @@ -111,14 +111,14 @@ jobject CreateMapObject(JNIEnv * env, place_page::Info const & info) if (info.IsBookmark()) { // public Bookmark(@NonNull FeatureId featureId, - // @IntRange(from = 0) int categoryId, @IntRange(from = 0) int bookmarkId, + // @IntRange(from = 0) long categoryId, @IntRange(from = 0) long bookmarkId, // String title, @Nullable String secondaryTitle, @Nullable String objectTitle, // @Nullable Banner[] banners, boolean reachableByTaxi, // @Nullable String bookingSearchUrl, @Nullable LocalAdInfo localAdInfo, // @Nullable RoutePointInfo routePointInfo) static jmethodID const ctorId = jni::GetConstructorID(env, g_bookmarkClazz, - "(Lcom/mapswithme/maps/bookmarks/data/FeatureId;IILjava/lang/String;" + "(Lcom/mapswithme/maps/bookmarks/data/FeatureId;JJLjava/lang/String;" "Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;" "[Lcom/mapswithme/maps/ads/Banner;[ILjava/lang/String;" "Lcom/mapswithme/maps/ads/LocalAdInfo;" @@ -127,8 +127,8 @@ jobject CreateMapObject(JNIEnv * env, place_page::Info const & info) static jmethodID const featureCtorId = jni::GetConstructorID(env, g_featureIdClazz, "(Ljava/lang/String;JI)V"); - auto const & bac = info.GetBookmarkAndCategory(); - BookmarkCategory * cat = g_framework->NativeFramework()->GetBmCategory(bac.m_categoryIndex); + auto const bookmarkId = info.GetBookmarkId(); + auto const categoryId = info.GetBookmarkCategoryId(); BookmarkData const & data = info.GetBookmarkData(); jni::TScopedLocalRef jMwmName(env, jni::ToJavaString(env, info.GetID().GetMwmName())); jni::TScopedLocalRef jFeatureId( @@ -142,8 +142,8 @@ jobject CreateMapObject(JNIEnv * env, place_page::Info const & info) jni::TScopedLocalRef jBookingSearchUrl(env, jni::ToJavaString(env, info.GetBookingSearchUrl())); jobject mapObject = env->NewObject( - g_bookmarkClazz, ctorId, jFeatureId.get(), static_cast(bac.m_categoryIndex), - static_cast(bac.m_bookmarkIndex), jTitle.get(), jSecondaryTitle.get(), jSubtitle.get(), + g_bookmarkClazz, ctorId, jFeatureId.get(), static_cast(categoryId), + static_cast(bookmarkId), jTitle.get(), jSecondaryTitle.get(), jSubtitle.get(), jAddress.get(), jbanners.get(), jTaxiTypes.get(), jBookingSearchUrl.get(), localAdInfo.get(), routingPointInfo.get(), info.IsPreviewExtended(), info.ShouldShowUGC(), info.CanBeRated(), info.CanBeReviewed(), jratings.get()); diff --git a/android/jni/com/mapswithme/maps/bookmarks/data/Bookmark.cpp b/android/jni/com/mapswithme/maps/bookmarks/data/Bookmark.cpp index 1174cd2ece..e79cfe0c86 100644 --- a/android/jni/com/mapswithme/maps/bookmarks/data/Bookmark.cpp +++ b/android/jni/com/mapswithme/maps/bookmarks/data/Bookmark.cpp @@ -7,11 +7,10 @@ namespace { ::Framework * frm() { return g_framework->NativeFramework(); } -Bookmark const * getBookmark(jint c, jlong b) +Bookmark const * getBookmark(jlong bokmarkId) { - BookmarkCategory const * pCat = frm()->GetBmCategory(c); - ASSERT(pCat, ("Category not found", c)); - Bookmark const * pBmk = static_cast(pCat->GetUserMark(b)); + Bookmark const * pBmk = frm()->GetBookmarkManager().GetBookmark(static_cast(bokmarkId)); + ASSERT(pBmk, ("Bookmark not found, id", bokmarkId)); return pBmk; } } @@ -20,65 +19,66 @@ extern "C" { JNIEXPORT jstring JNICALL Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeGetName( - JNIEnv * env, jobject thiz, jint cat, jlong bmk) + JNIEnv * env, jobject thiz, jlong bmk) { - return jni::ToJavaString(env, getBookmark(cat, bmk)->GetName()); + return jni::ToJavaString(env, getBookmark(bmk)->GetName()); } JNIEXPORT jstring JNICALL Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeGetBookmarkDescription( - JNIEnv * env, jobject thiz, jint cat, jlong bmk) + JNIEnv * env, jobject thiz, jlong bmk) { - return jni::ToJavaString(env, getBookmark(cat, bmk)->GetDescription()); + return jni::ToJavaString(env, getBookmark(bmk)->GetDescription()); } JNIEXPORT jstring JNICALL Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeGetIcon( - JNIEnv * env, jobject thiz, jint cat, jlong bmk) + JNIEnv * env, jobject thiz, jlong bmk) { - return jni::ToJavaString(env, getBookmark(cat, bmk)->GetType()); + return jni::ToJavaString(env, getBookmark(bmk)->GetType()); } JNIEXPORT void JNICALL Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeSetBookmarkParams( - JNIEnv * env, jobject thiz, jint cat, jlong bmk, + JNIEnv * env, jobject thiz, jlong bmk, jstring name, jstring type, jstring descr) { - Bookmark const * p = getBookmark(cat, bmk); + Bookmark const * p = getBookmark(bmk); // initialize new bookmark BookmarkData bm(jni::ToNativeString(env, name), jni::ToNativeString(env, type)); bm.SetDescription(descr ? jni::ToNativeString(env, descr) : p->GetDescription()); - g_framework->ReplaceBookmark(BookmarkAndCategory(bmk, cat), bm); + g_framework->ReplaceBookmark(static_cast(bmk), bm); } -JNIEXPORT jint JNICALL +JNIEXPORT void JNICALL Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeChangeCategory( - JNIEnv * env, jobject thiz, jint oldCat, jint newCat, jlong bmk) + JNIEnv * env, jobject thiz, jlong oldCat, jlong newCat, jlong bmk) { - return g_framework->ChangeBookmarkCategory(BookmarkAndCategory(bmk, oldCat), newCat); + g_framework->MoveBookmark(static_cast(bmk), static_cast(oldCat), + static_cast(newCat)); } JNIEXPORT jobject JNICALL Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeGetXY( - JNIEnv * env, jobject thiz, jint cat, jlong bmk) + JNIEnv * env, jobject thiz, jlong bmk) { - return jni::GetNewParcelablePointD(env, getBookmark(cat, bmk)->GetPivot()); + return jni::GetNewParcelablePointD(env, getBookmark(bmk)->GetPivot()); } JNIEXPORT jdouble JNICALL Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeGetScale( - JNIEnv * env, jobject thiz, jint cat, jlong bmk) + JNIEnv * env, jobject thiz, jlong bmk) { - return getBookmark(cat, bmk)->GetScale(); + return getBookmark(bmk)->GetScale(); } JNIEXPORT jstring JNICALL Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeEncode2Ge0Url( - JNIEnv * env, jobject thiz, jint cat, jlong bmk, jboolean addName) + JNIEnv * env, jobject thiz, jlong bmk, jboolean addName) { - return jni::ToJavaString(env, frm()->CodeGe0url(getBookmark(cat, bmk), addName)); + return jni::ToJavaString(env, frm()->CodeGe0url(getBookmark(bmk), addName)); } } // extern "C" diff --git a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkCategory.cpp b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkCategory.cpp deleted file mode 100644 index 61ee05131a..0000000000 --- a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkCategory.cpp +++ /dev/null @@ -1,121 +0,0 @@ -#include "com/mapswithme/maps/Framework.hpp" -#include "com/mapswithme/maps/UserMarkHelper.hpp" -#include "com/mapswithme/core/jni_helper.hpp" - -#include "map/place_page_info.hpp" -#include "platform/measurement_utils.hpp" - -namespace -{ -::Framework * frm() { return g_framework->NativeFramework(); } - -BookmarkCategory * getBmCategory(jint c) -{ - BookmarkCategory * pCat = frm()->GetBmCategory(c); - ASSERT(pCat, ("Category not found", c)); - return pCat; -} -} - -extern "C" -{ -JNIEXPORT jboolean JNICALL -Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_nativeIsVisible( - JNIEnv * env, jobject thiz, jint id) -{ - return getBmCategory(id)->IsVisible(); -} - -JNIEXPORT void JNICALL -Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_nativeSetVisibility( - JNIEnv * env, jobject thiz, jint id, jboolean b) -{ - BookmarkCategory * pCat = getBmCategory(id); - pCat->SetIsVisible(b); - pCat->NotifyChanges(); - pCat->SaveToKMLFile(); -} - -JNIEXPORT void JNICALL -Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_nativeSetName( - JNIEnv * env, jobject thiz, jint id, jstring n) -{ - BookmarkCategory * pCat = getBmCategory(id); - pCat->SetName(jni::ToNativeString(env, n)); - pCat->SaveToKMLFile(); -} - -JNIEXPORT jstring JNICALL -Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_nativeGetName( - JNIEnv * env, jobject thiz, jint id) -{ - return jni::ToJavaString(env, getBmCategory(id)->GetName()); -} - -JNIEXPORT jint JNICALL -Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_nativeGetSize( - JNIEnv * env, jobject thiz, jint id) -{ - BookmarkCategory * category = getBmCategory(id); - return category->GetUserMarkCount() + category->GetTracksCount(); -} - -JNIEXPORT jint JNICALL -Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_nativeGetBookmarksCount( - JNIEnv * env, jobject thiz, jint id) -{ - return getBmCategory(id)->GetUserMarkCount(); -} - -JNIEXPORT jint JNICALL -Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_nativeGetTracksCount( - JNIEnv * env, jobject thiz, jint id) -{ - return getBmCategory(id)->GetTracksCount(); -} - -// TODO(AlexZ): Get rid of UserMarks completely in UI code. -// TODO(yunikkk): Refactor java code to get all necessary info without Bookmark wrapper, and without hierarchy. -// If bookmark information is needed in the BookmarkManager, it does not relate in any way to Place Page info -// and should be passed separately via simple name string and lat lon to calculate a distance. -JNIEXPORT jobject JNICALL -Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_nativeGetBookmark( - JNIEnv * env, jobject thiz, jint catId, jint bmkId) -{ - BookmarkCategory * category = getBmCategory(catId); - place_page::Info info; - frm()->FillBookmarkInfo(*static_cast(category->GetUserMark(bmkId)), - {static_cast(bmkId), static_cast(catId)}, info); - return usermark_helper::CreateMapObject(env, info); -} - -static uint32_t shift(uint32_t v, uint8_t bitCount) { return v << bitCount; } - -JNIEXPORT jobject JNICALL -Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_nativeGetTrack( - JNIEnv * env, jobject thiz, jint id, jint bmkId, jclass trackClazz) -{ - // Track(int trackId, int categoryId, String name, String lengthString, int color) - static jmethodID const cId = jni::GetConstructorID(env, trackClazz, - "(IILjava/lang/String;Ljava/lang/String;I)V"); - - BookmarkCategory * category = getBmCategory(id); - Track const * nTrack = category->GetTrack(bmkId); - - ASSERT(nTrack, ("Track must not be null with index:)", bmkId)); - - std::string formattedLength; - measurement_utils::FormatDistance(nTrack->GetLengthMeters(), formattedLength); - - dp::Color nColor = nTrack->GetColor(0); - - jint androidColor = shift(nColor.GetAlpha(), 24) + - shift(nColor.GetRed(), 16) + - shift(nColor.GetGreen(), 8) + - nColor.GetBlue(); - - return env->NewObject(trackClazz, cId, - bmkId, id, jni::ToJavaString(env, nTrack->GetName()), - jni::ToJavaString(env, formattedLength), androidColor); -} -} // extern "C" diff --git a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp index 018f9dfbcd..2938c39bdc 100644 --- a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp +++ b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp @@ -1,5 +1,3 @@ -#include "BookmarkManager.hpp" - #include "com/mapswithme/core/jni_helper.hpp" #include "com/mapswithme/maps/Framework.hpp" #include "com/mapswithme/maps/UserMarkHelper.hpp" @@ -83,30 +81,15 @@ void OnAsyncLoadingFileError(JNIEnv * env, std::string const & fileName, bool is } } // namespace -namespace bookmarks_helper -{ -void RemoveBookmark(int cat, int bmk) -{ - BookmarkCategory * pCat = frm()->GetBmCategory(cat); - if (pCat) - { - pCat->DeleteUserMark(bmk); - pCat->NotifyChanges(); - pCat->SaveToKMLFile(); - } -} -} // namespace bookmarks_helper - extern "C" { using namespace jni; JNIEXPORT void JNICALL Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeShowBookmarkOnMap( - JNIEnv * env, jobject thiz, jint c, jint b) + JNIEnv * env, jobject thiz, jlong bmkId) { - BookmarkAndCategory bnc = BookmarkAndCategory(b, c); - frm()->ShowBookmark(bnc); + frm()->ShowBookmark(static_cast(bmkId)); } JNIEXPORT void JNICALL @@ -126,51 +109,71 @@ Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeLoadBookmarks(JNIE JNIEXPORT jint JNICALL Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetCategoriesCount(JNIEnv * env, jobject thiz) { - return frm()->GetBmCategoriesCount(); + return frm()->GetBookmarkManager().GetBmGroupsIdList().size(); } JNIEXPORT jint JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetCategoryPositionById( + JNIEnv * env, jobject thiz, jlong catId) +{ + auto & ids = frm()->GetBookmarkManager().GetBmGroupsIdList(); + jint position = 0; + while (position < ids.size() && ids[position] != catId) + ++position; + return position; +} + +JNIEXPORT jlong JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetCategoryIdByPosition( + JNIEnv * env, jobject thiz, jint position) +{ + auto & ids = frm()->GetBookmarkManager().GetBmGroupsIdList(); + // TODO(darina): use kInvalidCategoryId + return position < ids.size() ? static_cast(ids[position]) : 0; +} + +JNIEXPORT jlong JNICALL Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeCreateCategory( JNIEnv * env, jobject thiz, jstring name) { - return frm()->AddCategory(ToNativeString(env, name)); + return static_cast(frm()->GetBookmarkManager().CreateBookmarkCategory(ToNativeString(env, name))); } JNIEXPORT jboolean JNICALL Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeDeleteCategory( - JNIEnv * env, jobject thiz, jint index) + JNIEnv * env, jobject thiz, jlong catId) { - return frm()->DeleteBmCategory(index); + auto const categoryId = static_cast(catId); + return static_cast(frm()->GetBookmarkManager().GetEditSession().DeleteBmCategory(categoryId)); } JNIEXPORT void JNICALL -Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeDeleteBookmark(JNIEnv *, jobject, jint cat, jint bmk) +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeDeleteBookmark(JNIEnv *, jobject, jint cat, jint bmkId) { - bookmarks_helper::RemoveBookmark(cat, bmk); + // TODO(darina): verify + //bookmarks_helper::RemoveBookmark(cat, bmk); + frm()->GetBookmarkManager().GetEditSession().DeleteBookmark(static_cast(bmkId)); } JNIEXPORT void JNICALL Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeDeleteTrack( - JNIEnv * env, jobject thiz, jint cat, jint trk) + JNIEnv * env, jobject thiz, jlong trkId) { - BookmarkCategory * pCat = frm()->GetBmCategory(cat); - if (pCat) - { - pCat->DeleteTrack(trk); - pCat->NotifyChanges(); - pCat->SaveToKMLFile(); - } + frm()->GetBookmarkManager().GetEditSession().DeleteTrack(static_cast(trkId)); + // TODO(darina): + //pCat->SaveToKMLFile(); } JNIEXPORT jstring JNICALL Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeSaveToKmzFile( - JNIEnv * env, jobject thiz, jint catID, jstring tmpPath) + JNIEnv * env, jobject thiz, jlong catId, jstring tmpPath) { - BookmarkCategory * pCat = frm()->GetBmCategory(catID); - if (pCat) + auto const categoryId = static_cast(catId); + if (frm()->GetBookmarkManager().HasBmCategory(categoryId)) { - std::string const name = pCat->GetName(); - if (CreateZipFromPathDeflatedAndDefaultCompression(pCat->GetFileName(), ToNativeString(env, tmpPath) + name + ".kmz")) + std::string const name = frm()->GetBookmarkManager().GetCategoryName(categoryId); + std::string const fileName = frm()->GetBookmarkManager().GetCategoryFileName(categoryId); + if (CreateZipFromPathDeflatedAndDefaultCompression(fileName, ToNativeString(env, tmpPath) + name + ".kmz")) return ToJavaString(env, name); } @@ -181,33 +184,32 @@ JNIEXPORT jobject JNICALL Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeAddBookmarkToLastEditedCategory( JNIEnv * env, jobject thiz, jstring name, double lat, double lon) { + BookmarkManager & bmMng = frm()->GetBookmarkManager(); + m2::PointD const glbPoint(MercatorBounds::FromLatLon(lat, lon)); - ::Framework * f = frm(); - BookmarkData bmkData(ToNativeString(env, name), f->LastEditedBMType()); - size_t const lastEditedCategory = f->LastEditedBMCategory(); - size_t const createdBookmarkIndex = f->AddBookmark(lastEditedCategory, glbPoint, bmkData); + BookmarkData bmkData(ToNativeString(env, name), frm()->LastEditedBMType()); + auto const lastEditedCategory = frm()->LastEditedBMCategory(); + + auto const * createdBookmark = bmMng.GetEditSession().CreateBookmark(glbPoint, bmkData, lastEditedCategory); place_page::Info & info = g_framework->GetPlacePageInfo(); - BookmarkCategory * category = f->GetBmCategory(lastEditedCategory); - f->FillBookmarkInfo(*static_cast(category->GetUserMark(createdBookmarkIndex)), - {static_cast(createdBookmarkIndex), - static_cast(lastEditedCategory)}, info); + frm()->FillBookmarkInfo(*createdBookmark, info); return usermark_helper::CreateMapObject(env, info); } -JNIEXPORT jint JNICALL +JNIEXPORT jlong JNICALL Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetLastEditedCategory( JNIEnv * env, jobject thiz) { - return frm()->LastEditedBMCategory(); + return static_cast(frm()->LastEditedBMCategory()); } JNIEXPORT jstring JNICALL Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGenerateUniqueFileName(JNIEnv * env, jclass thiz, jstring jBaseName) { std::string baseName = ToNativeString(env, jBaseName); - std::string bookmarkFileName = BookmarkCategory::GenerateUniqueFileName(GetPlatform().SettingsDir(), baseName); + std::string bookmarkFileName = BookmarkManager::GenerateUniqueFileName(GetPlatform().SettingsDir(), baseName); return ToJavaString(env, bookmarkFileName); } @@ -230,4 +232,139 @@ Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeIsAsyncBookmarksLo return static_cast(frm()->GetBookmarkManager().IsAsyncLoadingInProgress()); } +JNIEXPORT jboolean JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeIsVisible( + JNIEnv * env, jobject thiz, jlong catId) +{ + return static_cast(frm()->GetBookmarkManager().IsVisible(static_cast(catId))); +} + +JNIEXPORT void JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeSetVisibility( + JNIEnv * env, jobject thiz, jlong catId, jboolean isVisible) +{ + frm()->GetBookmarkManager().GetEditSession().SetIsVisible(static_cast(catId), isVisible); + // TODO(darina): + //pCat->SaveToKMLFile(); +} + +JNIEXPORT void JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeSetCategoryName( + JNIEnv * env, jobject thiz, jlong catId, jstring name) +{ + frm()->GetBookmarkManager().SetCategoryName(static_cast(catId), + jni::ToNativeString(env, name)); + // TODO(darina): + //pCat->SaveToKMLFile(); +} + +JNIEXPORT jstring JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetCategoryName( + JNIEnv * env, jobject thiz, jlong catId) +{ + return ToJavaString(env, frm()->GetBookmarkManager().GetCategoryName(static_cast(catId))); +} + +JNIEXPORT jint JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetBookmarksCount( + JNIEnv * env, jobject thiz, jlong catId) +{ + return frm()->GetBookmarkManager().GetUserMarkIds(static_cast(catId)).size(); +} + +JNIEXPORT jint JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetTracksCount( + JNIEnv * env, jobject thiz, jlong catId) +{ + return frm()->GetBookmarkManager().GetTrackIds(static_cast(catId)).size(); +} + +// TODO(AlexZ): Get rid of UserMarks completely in UI code. +// TODO(yunikkk): Refactor java code to get all necessary info without Bookmark wrapper, and without hierarchy. +// If bookmark information is needed in the BookmarkManager, it does not relate in any way to Place Page info +// and should be passed separately via simple name string and lat lon to calculate a distance. +JNIEXPORT jobject JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetBookmark( + JNIEnv * env, jobject thiz, jlong bmkId) +{ + auto const * mark = frm()->GetBookmarkManager().GetBookmark(static_cast(bmkId)); + place_page::Info info; + frm()->FillBookmarkInfo(*mark, info); + return usermark_helper::CreateMapObject(env, info); +} + +JNIEXPORT jlong JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetBookmarkIdByPosition( + JNIEnv * env, jobject thiz, jlong catId, jint positionInCategory) +{ + auto & ids = frm()->GetBookmarkManager().GetUserMarkIds(static_cast(catId)); + // TODO(darina): use kInvalidMarkId + if (positionInCategory >= ids.size()) + return 0; + auto it = ids.begin(); + std::advance(it, positionInCategory); + return static_cast(*it); +} + +static uint32_t shift(uint32_t v, uint8_t bitCount) { return v << bitCount; } + +JNIEXPORT jobject JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetTrack( + JNIEnv * env, jobject thiz, jlong trackId, jclass trackClazz) +{ + // Track(int trackId, int categoryId, String name, String lengthString, int color) + static jmethodID const cId = jni::GetConstructorID(env, trackClazz, + "(IILjava/lang/String;Ljava/lang/String;I)V"); + auto const * nTrack = frm()->GetBookmarkManager().GetTrack(static_cast(trackId)); + + ASSERT(nTrack, ("Track must not be null with id:)", trackId)); + + std::string formattedLength; + measurement_utils::FormatDistance(nTrack->GetLengthMeters(), formattedLength); + + dp::Color nColor = nTrack->GetColor(0); + + jint androidColor = shift(nColor.GetAlpha(), 24) + + shift(nColor.GetRed(), 16) + + shift(nColor.GetGreen(), 8) + + nColor.GetBlue(); + + return env->NewObject(trackClazz, cId, + trackId, nTrack->GetGroupId(), jni::ToJavaString(env, nTrack->GetName()), + jni::ToJavaString(env, formattedLength), androidColor); +} + +JNIEXPORT jlong JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetTrackIdByPosition( + JNIEnv * env, jobject thiz, jlong catId, jint positionInCategory) +{ + auto & ids = frm()->GetBookmarkManager().GetTrackIds(static_cast(catId)); + // TODO(darina): use kInvalidMarkId + if (positionInCategory >= ids.size()) + return 0; + auto it = ids.begin(); + std::advance(it, positionInCategory); + return static_cast(*it); +} + +JNIEXPORT void JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeSetCloudEnabled( + JNIEnv * env, jobject thiz, jboolean enabled) +{ + frm()->GetBookmarkManager().SetCloudEnabled(enabled); +} + +JNIEXPORT jboolean JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeIsCloudEnabled( + JNIEnv * env, jobject thiz) +{ + return static_cast(frm()->GetBookmarkManager().IsCloudEnabled()); +} + +JNIEXPORT jlong JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetLastSynchronizationTimestamp( + JNIEnv * env, jobject thiz) +{ + return static_cast(frm()->GetBookmarkManager().GetLastSynchronizationTimestamp()); +} } // extern "C" diff --git a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.hpp b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.hpp deleted file mode 100644 index c70c22329b..0000000000 --- a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.hpp +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -namespace bookmarks_helper -{ -void RemoveBookmark(int cat, int bmk); -} // namespace bookmarks_helper - diff --git a/android/src/com/mapswithme/maps/DownloadResourcesLegacyActivity.java b/android/src/com/mapswithme/maps/DownloadResourcesLegacyActivity.java index 73fc11645f..f9f71cc1d4 100644 --- a/android/src/com/mapswithme/maps/DownloadResourcesLegacyActivity.java +++ b/android/src/com/mapswithme/maps/DownloadResourcesLegacyActivity.java @@ -799,7 +799,7 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity if (path != null) { LOGGER.d(TAG, "Loading bookmarks file from: " + path); - BookmarkManager.nativeLoadKmzFile(path, isTemporaryFile); + BookmarkManager.loadKmzFile(path, isTemporaryFile); } else LOGGER.w(TAG, "Can't get bookmarks file from URI: " + mData); diff --git a/android/src/com/mapswithme/maps/Framework.java b/android/src/com/mapswithme/maps/Framework.java index 13b8d4b792..b4586499b6 100644 --- a/android/src/com/mapswithme/maps/Framework.java +++ b/android/src/com/mapswithme/maps/Framework.java @@ -170,7 +170,7 @@ public class Framework nativeLogLocalAdsEvent(type, lat, lon, accuracy); } - public static native void nativeShowTrackRect(int category, int track); + public static native void nativeShowTrackRect(long track); public static native int nativeGetDrawScale(); @@ -345,7 +345,7 @@ public class Framework public static native MapObject nativeDeleteBookmarkFromMapObject(); // TODO remove that hack after bookmarks will be refactored completely - public static native void nativeOnBookmarkCategoryChanged(int cat, int bmk); + public static native void nativeOnBookmarkCategoryChanged(long cat, long bmk); public static native void nativeZoomToPoint(double lat, double lon, int zoom, boolean animate); diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java index 7a27c2f2ca..39441bbaec 100644 --- a/android/src/com/mapswithme/maps/MwmActivity.java +++ b/android/src/com/mapswithme/maps/MwmActivity.java @@ -2368,10 +2368,10 @@ public class MwmActivity extends BaseMwmFragmentActivity { private static final long serialVersionUID = 1L; - final int mCategoryId; - final int mId; + final long mCategoryId; + final long mId; - BaseUserMarkTask(int categoryId, int id) + BaseUserMarkTask(long categoryId, long id) { mCategoryId = categoryId; mId = id; @@ -2380,7 +2380,7 @@ public class MwmActivity extends BaseMwmFragmentActivity public static class ShowBookmarkTask extends BaseUserMarkTask { - public ShowBookmarkTask(int categoryId, int bookmarkId) + public ShowBookmarkTask(long categoryId, long bookmarkId) { super(categoryId, bookmarkId); } @@ -2388,14 +2388,14 @@ public class MwmActivity extends BaseMwmFragmentActivity @Override public boolean run(MwmActivity target) { - BookmarkManager.INSTANCE.nativeShowBookmarkOnMap(mCategoryId, mId); + BookmarkManager.INSTANCE.showBookmarkOnMap(mId); return true; } } public static class ShowTrackTask extends BaseUserMarkTask { - public ShowTrackTask(int categoryId, int trackId) + public ShowTrackTask(long categoryId, long trackId) { super(categoryId, trackId); } @@ -2403,7 +2403,7 @@ public class MwmActivity extends BaseMwmFragmentActivity @Override public boolean run(MwmActivity target) { - Framework.nativeShowTrackRect(mCategoryId, mId); + Framework.nativeShowTrackRect(mId); return true; } } diff --git a/android/src/com/mapswithme/maps/MwmApplication.java b/android/src/com/mapswithme/maps/MwmApplication.java index 7f5ad12e02..d3303a583b 100644 --- a/android/src/com/mapswithme/maps/MwmApplication.java +++ b/android/src/com/mapswithme/maps/MwmApplication.java @@ -270,7 +270,7 @@ public class MwmApplication extends Application MapManager.nativeSubscribe(mStorageCallbacks); initNativeStrings(); - BookmarkManager.nativeLoadBookmarks(); + BookmarkManager.loadBookmarks(); TtsPlayer.INSTANCE.init(this); ThemeSwitcher.restart(false); LocationHelper.INSTANCE.initialize(); diff --git a/android/src/com/mapswithme/maps/bookmarks/BaseBookmarkCategoryAdapter.java b/android/src/com/mapswithme/maps/bookmarks/BaseBookmarkCategoryAdapter.java index 64ce481159..95a95d81c0 100644 --- a/android/src/com/mapswithme/maps/bookmarks/BaseBookmarkCategoryAdapter.java +++ b/android/src/com/mapswithme/maps/bookmarks/BaseBookmarkCategoryAdapter.java @@ -4,7 +4,6 @@ import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; -import com.mapswithme.maps.bookmarks.data.BookmarkCategory; import com.mapswithme.maps.bookmarks.data.BookmarkManager; public abstract class BaseBookmarkCategoryAdapter extends RecyclerView.Adapter @@ -26,11 +25,11 @@ public abstract class BaseBookmarkCategoryAdapter { - BookmarkManager.INSTANCE.toggleCategoryVisibility(holder.getAdapterPosition()); - holder.setVisibilityState(set.isVisible()); + BookmarkManager.INSTANCE.toggleCategoryVisibility(catId); + holder.setVisibilityState(bmManager.isVisible(catId)); }); } diff --git a/android/src/com/mapswithme/maps/bookmarks/BookmarkCategoriesFragment.java b/android/src/com/mapswithme/maps/bookmarks/BookmarkCategoriesFragment.java index b654c6e294..829b18bbc3 100644 --- a/android/src/com/mapswithme/maps/bookmarks/BookmarkCategoriesFragment.java +++ b/android/src/com/mapswithme/maps/bookmarks/BookmarkCategoriesFragment.java @@ -13,8 +13,8 @@ import android.view.View; import com.mapswithme.maps.R; import com.mapswithme.maps.auth.Authorizer; import com.mapswithme.maps.base.BaseMwmRecyclerFragment; +import com.mapswithme.maps.bookmarks.data.Bookmark; import com.mapswithme.maps.bookmarks.data.BookmarkBackupController; -import com.mapswithme.maps.bookmarks.data.BookmarkCategory; import com.mapswithme.maps.bookmarks.data.BookmarkManager; import com.mapswithme.maps.dialog.EditTextDialogFragment; import com.mapswithme.maps.widget.PlaceholderView; @@ -32,7 +32,7 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment BookmarkManager.BookmarksLoadingListener, Authorizer.Callback, BookmarkBackupController.BackupListener { - private int mSelectedPosition; + private long mSelectedCatId; @Nullable private View mLoadingPlaceholder; @@ -89,7 +89,7 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment private void updateResultsPlaceholder() { - boolean showLoadingPlaceholder = BookmarkManager.nativeIsAsyncBookmarksLoadingInProgress(); + boolean showLoadingPlaceholder = BookmarkManager.isAsyncBookmarksLoadingInProgress(); boolean showPlaceHolder = !showLoadingPlaceholder && (getAdapter() == null || getAdapter().getItemCount() == 0); if (getAdapter() != null) @@ -104,7 +104,7 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment { if (mLoadingPlaceholder != null) { - boolean showLoadingPlaceholder = BookmarkManager.nativeIsAsyncBookmarksLoadingInProgress(); + boolean showLoadingPlaceholder = BookmarkManager.isAsyncBookmarksLoadingInProgress(); if (getAdapter() != null && getAdapter().getItemCount() != 0) showLoadingPlaceholder = false; @@ -145,8 +145,7 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment @Override public void onSaveText(String text) { - final BookmarkCategory category = BookmarkManager.INSTANCE.getCategory(mSelectedPosition); - category.setName(text); + BookmarkManager.INSTANCE.setCategoryName(mSelectedCatId, text); if (getAdapter() != null) getAdapter().notifyDataSetChanged(); } @@ -157,24 +156,24 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment switch (item.getItemId()) { case R.id.set_show: - BookmarkManager.INSTANCE.toggleCategoryVisibility(mSelectedPosition); + BookmarkManager.INSTANCE.toggleCategoryVisibility(mSelectedCatId); if (getAdapter() != null) getAdapter().notifyDataSetChanged(); break; case R.id.set_share: - SharingHelper.shareBookmarksCategory(getActivity(), mSelectedPosition); + SharingHelper.shareBookmarksCategory(getActivity(), mSelectedCatId); break; case R.id.set_delete: - BookmarkManager.INSTANCE.nativeDeleteCategory(mSelectedPosition); + BookmarkManager.INSTANCE.deleteCategory(mSelectedCatId); if (getAdapter() != null) getAdapter().notifyDataSetChanged(); break; case R.id.set_edit: EditTextDialogFragment.show(getString(R.string.bookmark_set_name), - BookmarkManager.INSTANCE.getCategory(mSelectedPosition).getName(), + BookmarkManager.INSTANCE.getCategoryName(mSelectedCatId), getString(R.string.rename), getString(R.string.cancel), this); break; } @@ -185,17 +184,19 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment @Override public void onLongItemClick(View v, int position) { - mSelectedPosition = position; + final BookmarkManager bmManager = BookmarkManager.INSTANCE; + mSelectedCatId = bmManager.getCategoryIdByPosition(position); - BookmarkCategory category = BookmarkManager.INSTANCE.getCategory(mSelectedPosition); - BottomSheetHelper.Builder bs = BottomSheetHelper.create(getActivity(), category.getName()) + final String name = bmManager.getCategoryName(mSelectedCatId); + BottomSheetHelper.Builder bs = BottomSheetHelper.create(getActivity(), name) .sheet(R.menu.menu_bookmark_categories) .listener(this); MenuItem show = bs.getMenu().getItem(0); - show.setIcon(category.isVisible() ? R.drawable.ic_hide - : R.drawable.ic_show); - show.setTitle(category.isVisible() ? R.string.hide - : R.string.show); + final boolean isVisible = bmManager.isVisible(mSelectedCatId); + show.setIcon(isVisible ? R.drawable.ic_hide + : R.drawable.ic_show); + show.setTitle(isVisible ? R.string.hide + : R.string.show); bs.tint().show(); } diff --git a/android/src/com/mapswithme/maps/bookmarks/BookmarkListAdapter.java b/android/src/com/mapswithme/maps/bookmarks/BookmarkListAdapter.java index 6cf232b820..328fda4773 100644 --- a/android/src/com/mapswithme/maps/bookmarks/BookmarkListAdapter.java +++ b/android/src/com/mapswithme/maps/bookmarks/BookmarkListAdapter.java @@ -15,7 +15,7 @@ import java.util.List; import com.mapswithme.maps.R; import com.mapswithme.maps.bookmarks.data.Bookmark; -import com.mapswithme.maps.bookmarks.data.BookmarkCategory; +import com.mapswithme.maps.bookmarks.data.BookmarkManager; import com.mapswithme.maps.bookmarks.data.DistanceAndAzimut; import com.mapswithme.maps.bookmarks.data.Track; import com.mapswithme.maps.location.LocationHelper; @@ -26,7 +26,7 @@ import com.mapswithme.util.Graphics; public class BookmarkListAdapter extends BaseAdapter { private final Activity mActivity; - private final BookmarkCategory mCategory; + private final long mCategoryId; // view types static final int TYPE_TRACK = 0; @@ -45,10 +45,10 @@ public class BookmarkListAdapter extends BaseAdapter } }; - public BookmarkListAdapter(Activity activity, BookmarkCategory cat) + public BookmarkListAdapter(Activity activity, long catId) { mActivity = activity; - mCategory = cat; + mCategoryId = catId; } public void startLocationUpdate() @@ -128,19 +128,26 @@ public class BookmarkListAdapter extends BaseAdapter @Override public int getCount() { - return mCategory.getSize() - + (isSectionEmpty(SECTION_TRACKS) ? 0 : 1) - + (isSectionEmpty(SECTION_BMKS) ? 0 : 1); + return BookmarkManager.INSTANCE.getCategorySize(mCategoryId) + + (isSectionEmpty(SECTION_TRACKS) ? 0 : 1) + + (isSectionEmpty(SECTION_BMKS) ? 0 : 1); } @Override public Object getItem(int position) { if (getItemViewType(position) == TYPE_TRACK) - return mCategory.nativeGetTrack(position - 1); + { + final long trackId = BookmarkManager.INSTANCE.getTrackIdByPosition(mCategoryId, position - 1); + return BookmarkManager.INSTANCE.getTrack(trackId); + } else - return mCategory.getBookmark(position - 1 - - (isSectionEmpty(SECTION_TRACKS) ? 0 : mCategory.getTracksCount() + 1)); + { + final int pos = position - 1 + - (isSectionEmpty(SECTION_TRACKS) ? 0 : BookmarkManager.INSTANCE.getTracksCount(mCategoryId) + 1); + final long bookmarkId = BookmarkManager.INSTANCE.getBookmarkIdByPosition(mCategoryId, pos); + return BookmarkManager.INSTANCE.getBookmark(bookmarkId); + } } @Override @@ -228,7 +235,7 @@ public class BookmarkListAdapter extends BaseAdapter if (isSectionEmpty(SECTION_BMKS)) return -1; - return mCategory.getTracksCount() + return BookmarkManager.INSTANCE.getTracksCount(mCategoryId) + (isSectionEmpty(SECTION_TRACKS) ? 0 : 1); } @@ -253,9 +260,9 @@ public class BookmarkListAdapter extends BaseAdapter private boolean isSectionEmpty(int section) { if (section == SECTION_TRACKS) - return mCategory.getTracksCount() == 0; + return BookmarkManager.INSTANCE.getTracksCount(mCategoryId) == 0; if (section == SECTION_BMKS) - return mCategory.getBookmarksCount() == 0; + return BookmarkManager.INSTANCE.getBookmarksCount(mCategoryId) == 0; throw new IllegalArgumentException("There is no section with index " + section); } diff --git a/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java b/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java index fd1cdd5f8f..9d01c0b766 100644 --- a/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java +++ b/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java @@ -20,7 +20,6 @@ import com.mapswithme.maps.MwmActivity; import com.mapswithme.maps.R; import com.mapswithme.maps.base.BaseMwmListFragment; import com.mapswithme.maps.bookmarks.data.Bookmark; -import com.mapswithme.maps.bookmarks.data.BookmarkCategory; import com.mapswithme.maps.bookmarks.data.BookmarkManager; import com.mapswithme.maps.bookmarks.data.Track; import com.mapswithme.maps.widget.placepage.EditBookmarkFragment; @@ -35,8 +34,8 @@ public class BookmarksListFragment extends BaseMwmListFragment { public static final String TAG = BookmarksListFragment.class.getSimpleName(); - private BookmarkCategory mCategory; - private int mCategoryIndex; + private int mCategoryPosition; + private long mCategoryId; private int mSelectedPosition; @Nullable private BookmarkListAdapter mAdapter; @@ -46,8 +45,8 @@ public class BookmarksListFragment extends BaseMwmListFragment public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mCategoryIndex = getArguments().getInt(ChooseBookmarkCategoryFragment.CATEGORY_ID, -1); - mCategory = BookmarkManager.INSTANCE.getCategory(mCategoryIndex); + mCategoryPosition = getArguments().getInt(ChooseBookmarkCategoryFragment.CATEGORY_ID, 0); + mCategoryId = BookmarkManager.INSTANCE.getCategoryIdByPosition(mCategoryPosition); } @Override @@ -65,7 +64,7 @@ public class BookmarksListFragment extends BaseMwmListFragment setHasOptionsMenu(true); ActionBar bar = ((AppCompatActivity) getActivity()).getSupportActionBar(); if (bar != null) - bar.setTitle(mCategory.getName()); + bar.setTitle(BookmarkManager.INSTANCE.getCategoryName(mCategoryId)); } @Override @@ -90,7 +89,7 @@ public class BookmarksListFragment extends BaseMwmListFragment private void initList() { - mAdapter = new BookmarkListAdapter(getActivity(), mCategory); + mAdapter = new BookmarkListAdapter(getActivity(), mCategoryId); mAdapter.startLocationUpdate(); setListAdapter(mAdapter); getListView().setOnItemLongClickListener(this); @@ -110,7 +109,7 @@ public class BookmarksListFragment extends BaseMwmListFragment case BookmarkListAdapter.TYPE_BOOKMARK: final Bookmark bookmark = (Bookmark) mAdapter.getItem(position); i.putExtra(MwmActivity.EXTRA_TASK, - new MwmActivity.ShowBookmarkTask(mCategoryIndex, bookmark.getBookmarkId())); + new MwmActivity.ShowBookmarkTask(bookmark.getCategoryId(), bookmark.getBookmarkId())); break; case BookmarkListAdapter.TYPE_TRACK: final Track track = (Track) mAdapter.getItem(position); @@ -161,7 +160,7 @@ public class BookmarksListFragment extends BaseMwmListFragment @Override public boolean onMenuItemClick(MenuItem menuItem) { - BookmarkManager.INSTANCE.deleteTrack((Track) item); + BookmarkManager.INSTANCE.deleteTrack(((Track) item).getTrackId()); mAdapter.notifyDataSetChanged(); return false; } @@ -195,11 +194,11 @@ public class BookmarksListFragment extends BaseMwmListFragment break; case R.id.edit: - EditBookmarkFragment.editBookmark(mCategory.getId(), item.getBookmarkId(), getActivity(), + EditBookmarkFragment.editBookmark(mCategoryPosition, item.getBookmarkId(), getActivity(), getChildFragmentManager(), new EditBookmarkFragment.EditBookmarkListener() { @Override - public void onBookmarkSaved(int categoryId, int bookmarkId) + public void onBookmarkSaved(long bookmarkId) { mAdapter.notifyDataSetChanged(); } @@ -207,7 +206,7 @@ public class BookmarksListFragment extends BaseMwmListFragment break; case R.id.delete: - BookmarkManager.INSTANCE.deleteBookmark(item); + BookmarkManager.INSTANCE.deleteBookmark(item.getBookmarkId()); mAdapter.notifyDataSetChanged(); break; } @@ -225,7 +224,7 @@ public class BookmarksListFragment extends BaseMwmListFragment { if (item.getItemId() == R.id.set_share) { - SharingHelper.shareBookmarksCategory(getActivity(), mCategory.getId()); + SharingHelper.shareBookmarksCategory(getActivity(), mCategoryId); return true; } diff --git a/android/src/com/mapswithme/maps/bookmarks/ChooseBookmarkCategoryAdapter.java b/android/src/com/mapswithme/maps/bookmarks/ChooseBookmarkCategoryAdapter.java index f9182966a6..f15c9c5ac9 100644 --- a/android/src/com/mapswithme/maps/bookmarks/ChooseBookmarkCategoryAdapter.java +++ b/android/src/com/mapswithme/maps/bookmarks/ChooseBookmarkCategoryAdapter.java @@ -9,6 +9,7 @@ import android.widget.RadioButton; import android.widget.TextView; import com.mapswithme.maps.R; +import com.mapswithme.maps.bookmarks.data.BookmarkManager; public class ChooseBookmarkCategoryAdapter extends BaseBookmarkCategoryAdapter { @@ -19,7 +20,7 @@ public class ChooseBookmarkCategoryAdapter extends BaseBookmarkCategoryAdapter= 0) ? nativeGetIcon(mCategoryId, mBookmarkId) : ""); + // TODO(darina): fix check + return BookmarkManager.getIconByType((mCategoryId >= 0) ? nativeGetIcon(mBookmarkId) : ""); } public Icon getIcon() @@ -109,21 +110,15 @@ public class Bookmark extends MapObject public String getCategoryName() { - return getCategory().getName(); + return BookmarkManager.INSTANCE.getCategoryName(mCategoryId); } - @NonNull - private BookmarkCategory getCategory() - { - return BookmarkManager.INSTANCE.getCategory(mCategoryId); - } - - public void setCategoryId(@IntRange(from = 0) int catId) + public void setCategoryId(@IntRange(from = 0) long catId) { if (catId == mCategoryId) return; - mBookmarkId = nativeChangeCategory(mCategoryId, catId, mBookmarkId); + nativeChangeCategory(mCategoryId, catId, mBookmarkId); mCategoryId = catId; } @@ -134,29 +129,29 @@ public class Bookmark extends MapObject if (!title.equals(getTitle()) || icon != mIcon || !description.equals(getBookmarkDescription())) { - nativeSetBookmarkParams(mCategoryId, mBookmarkId, title, icon != null ? icon.getType() : "", + nativeSetBookmarkParams(mBookmarkId, title, icon != null ? icon.getType() : "", description); } } - public int getCategoryId() + public long getCategoryId() { return mCategoryId; } - public int getBookmarkId() + public long getBookmarkId() { return mBookmarkId; } public String getBookmarkDescription() { - return nativeGetBookmarkDescription(mCategoryId, mBookmarkId); + return nativeGetBookmarkDescription(mBookmarkId); } public String getGe0Url(boolean addName) { - return nativeEncode2Ge0Url(mCategoryId, mBookmarkId, addName); + return nativeEncode2Ge0Url(mBookmarkId, addName); } public String getHttpGe0Url(boolean addName) @@ -164,17 +159,17 @@ public class Bookmark extends MapObject return getGe0Url(addName).replaceFirst(Constants.Url.GE0_PREFIX, Constants.Url.HTTP_GE0_PREFIX); } - private native String nativeGetBookmarkDescription(@IntRange(from = 0) int categoryId, @IntRange(from = 0) long bookmarkId); + private native String nativeGetBookmarkDescription(@IntRange(from = 0) long bookmarkId); - private native ParcelablePointD nativeGetXY(@IntRange(from = 0) int catId, @IntRange(from = 0) long bookmarkId); + private native ParcelablePointD nativeGetXY(@IntRange(from = 0) long bookmarkId); - private native String nativeGetIcon(@IntRange(from = 0) int catId, @IntRange(from = 0) long bookmarkId); + private native String nativeGetIcon(@IntRange(from = 0) long bookmarkId); - private native double nativeGetScale(@IntRange(from = 0) int catId, @IntRange(from = 0) long bookmarkId); + private native double nativeGetScale(@IntRange(from = 0) long bookmarkId); - private native String nativeEncode2Ge0Url(@IntRange(from = 0) int catId, @IntRange(from = 0) long bookmarkId, boolean addName); + private native String nativeEncode2Ge0Url(@IntRange(from = 0) long bookmarkId, boolean addName); - private native void nativeSetBookmarkParams(@IntRange(from = 0) int catId, @IntRange(from = 0) long bookmarkId, String name, String type, String descr); + private native void nativeSetBookmarkParams(@IntRange(from = 0) long bookmarkId, String name, String type, String descr); - private native int nativeChangeCategory(@IntRange(from = 0) int oldCatId, @IntRange(from = 0) int newCatId, @IntRange(from = 0) long bookmarkId); + private native void nativeChangeCategory(@IntRange(from = 0) long oldCatId, @IntRange(from = 0) long newCatId, @IntRange(from = 0) long bookmarkId); } diff --git a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkCategory.java b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkCategory.java deleted file mode 100644 index 51cbc9ace3..0000000000 --- a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkCategory.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.mapswithme.maps.bookmarks.data; - -public class BookmarkCategory -{ - private final int mId; - private String mName; - - BookmarkCategory(int id) - { - mId = id; - } - - public int getId() - { - return mId; - } - - public String getName() - { - return (mName == null ? nativeGetName(mId) : mName); - } - - public void setName(String name) - { - nativeSetName(mId, name); - mName = name; - } - - public boolean isVisible() - { - return nativeIsVisible(mId); - } - - public void setVisibility(boolean visible) - { - nativeSetVisibility(mId, visible); - } - - /** - * @return total count - tracks + bookmarks - */ - public int getSize() - { - return nativeGetSize(mId); - } - - public int getBookmarksCount() - { - return nativeGetBookmarksCount(mId); - } - - public int getTracksCount() - { - return nativeGetTracksCount(mId); - } - - public Bookmark getBookmark(int bookmarkId) - { - return nativeGetBookmark(mId, bookmarkId); - } - - public Track nativeGetTrack(int trackId) - { - return nativeGetTrack(mId, trackId, Track.class); - } - - private native int nativeGetBookmarksCount(int id); - - private native int nativeGetTracksCount(int id); - - private native int nativeGetSize(int id); - - private native Bookmark nativeGetBookmark(int catId, int bmkId); - - private native Track nativeGetTrack(int catId, int bmkId, Class trackClazz); - - private native boolean nativeIsVisible(int id); - - private native void nativeSetVisibility(int id, boolean visible); - - private native String nativeGetName(int id); - - private native void nativeSetName(int id, String n); -} diff --git a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java index 8550b08e32..860f881c96 100644 --- a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java +++ b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java @@ -45,33 +45,10 @@ public enum BookmarkManager return ICONS.get(0); } - public void deleteBookmark(Bookmark bmk) + public void toggleCategoryVisibility(long catId) { - nativeDeleteBookmark(bmk.getCategoryId(), bmk.getBookmarkId()); - } - - public void deleteTrack(Track track) - { - nativeDeleteTrack(track.getCategoryId(), track.getTrackId()); - } - - public @NonNull BookmarkCategory getCategory(int catId) - { - if (catId < nativeGetCategoriesCount()) - return new BookmarkCategory(catId); - - throw new IndexOutOfBoundsException("Invalid category ID!"); - } - - public void toggleCategoryVisibility(int catId) - { - BookmarkCategory category = getCategory(catId); - category.setVisibility(!category.isVisible()); - } - - public Bookmark getBookmark(int catId, int bmkId) - { - return getCategory(catId).getBookmark(bmkId); + boolean isVisible = isVisible(catId); + setVisibility(catId, !isVisible); } public Bookmark addNewBookmark(String name, double lat, double lon) @@ -124,39 +101,198 @@ public enum BookmarkManager listener.onBookmarksFileLoaded(success); } - public static native void nativeLoadBookmarks(); + public boolean isVisible(long catId) + { + return nativeIsVisible(catId); + } - private native void nativeDeleteTrack(int catId, int trackId); + public void setVisibility(long catId, boolean visible) + { + nativeSetVisibility(catId, visible); + } - private native void nativeDeleteBookmark(int cat, int bmkId); + public String getCategoryName(long catId) + { + return nativeGetCategoryName(catId); + } - public native int nativeGetCategoriesCount(); - - public native boolean nativeDeleteCategory(int catId); + public void setCategoryName(long catId, String name) + { + nativeSetCategoryName(catId, name); + } /** - * @return category Id + * @return total count - tracks + bookmarks */ - public native int nativeCreateCategory(String name); + public int getCategorySize(long catId) + { + return nativeGetBookmarksCount(catId) + nativeGetTracksCount(catId); + } - public native void nativeShowBookmarkOnMap(int catId, int bmkId); + public int getCategoriesCount() { return nativeGetCategoriesCount(); } + + public int getCategoryPositionById(long catId) + { + return nativeGetCategoryPositionById(catId); + } + + public long getCategoryIdByPosition(int position) + { + return nativeGetCategoryIdByPosition(position); + } + + public int getBookmarksCount(long catId) + { + return nativeGetBookmarksCount(catId); + } + + public int getTracksCount(long catId) + { + return nativeGetTracksCount(catId); + } + + public Bookmark getBookmark(long bmkId) + { + return nativeGetBookmark(bmkId); + } + + public long getBookmarkIdByPosition(long catId, int positionInCategory) + { + return nativeGetBookmarkIdByPosition(catId, positionInCategory); + } + + public Track getTrack(long trackId) + { + return nativeGetTrack(trackId, Track.class); + } + + public long getTrackIdByPosition(long catId, int positionInCategory) + { + return nativeGetTrackIdByPosition(catId, positionInCategory); + } + + public static void loadBookmarks() { nativeLoadBookmarks(); } + + public void deleteCategory(long catId) { nativeDeleteCategory(catId); } + + public void deleteTrack(long trackId) + { + nativeDeleteTrack(trackId); + } + + public void deleteBookmark(long bmkId) + { + nativeDeleteBookmark(bmkId); + } + + public long createCategory(String name) { return nativeCreateCategory(name); } + + public void showBookmarkOnMap(long bmkId) { nativeShowBookmarkOnMap(bmkId); } /** * @return null, if wrong category is passed. */ - public native @Nullable String nativeSaveToKmzFile(int catId, String tmpPath); + public @Nullable String saveToKmzFile(long catId, String tmpPath) + { + return nativeSaveToKmzFile(catId, tmpPath); + } - public native Bookmark nativeAddBookmarkToLastEditedCategory(String name, double lat, double lon); + public Bookmark addBookmarkToLastEditedCategory(String name, double lat, double lon) + { + return nativeAddBookmarkToLastEditedCategory(name, lat, lon); + } - public native int nativeGetLastEditedCategory(); + public long getLastEditedCategory() { return nativeGetLastEditedCategory(); } - public static native String nativeGenerateUniqueFileName(String baseName); + public static String generateUniqueFileName(String baseName) + { + return nativeGenerateUniqueFileName(baseName); + } - public static native void nativeLoadKmzFile(@NonNull String path, boolean isTemporaryFile); + public void setCloudEnabled(boolean enabled) { nativeSetCloudEnabled(enabled); } - public static native String nativeFormatNewBookmarkName(); + public boolean isCloudEnabled() { return nativeIsCloudEnabled(); } - public static native boolean nativeIsAsyncBookmarksLoadingInProgress(); + public long getLastSynchronizationTimestamp() { return nativeGetLastSynchronizationTimestamp(); } + + public static void loadKmzFile(@NonNull String path, boolean isTemporaryFile) + { + nativeLoadKmzFile(path, isTemporaryFile); + } + + public static String formatNewBookmarkName() + { + return nativeFormatNewBookmarkName(); + } + + public static boolean isAsyncBookmarksLoadingInProgress() + { + return nativeIsAsyncBookmarksLoadingInProgress(); + } + + private native int nativeGetCategoriesCount(); + + private native int nativeGetCategoryPositionById(long catId); + + private native long nativeGetCategoryIdByPosition(int position); + + private native int nativeGetBookmarksCount(long catId); + + private native int nativeGetTracksCount(long catId); + + private native Bookmark nativeGetBookmark(long bmkId); + + private native long nativeGetBookmarkIdByPosition(long catId, int position); + + private native Track nativeGetTrack(long trackId, Class trackClazz); + + private native long nativeGetTrackIdByPosition(long catId, int position); + + private native boolean nativeIsVisible(long catId); + + private native void nativeSetVisibility(long catId, boolean visible); + + private native String nativeGetCategoryName(long catId); + + private native void nativeSetCategoryName(long catId, String n); + + private static native void nativeLoadBookmarks(); + + private native boolean nativeDeleteCategory(long catId); + + private native void nativeDeleteTrack(long trackId); + + private native void nativeDeleteBookmark(long bmkId); + + /** + * @return category Id + */ + private native long nativeCreateCategory(String name); + + private native void nativeShowBookmarkOnMap(long bmkId); + + /** + * @return null, if wrong category is passed. + */ + private native @Nullable String nativeSaveToKmzFile(long catId, String tmpPath); + + private native Bookmark nativeAddBookmarkToLastEditedCategory(String name, double lat, double lon); + + private native long nativeGetLastEditedCategory(); + + private native void nativeSetCloudEnabled(boolean enabled); + + private native boolean nativeIsCloudEnabled(); + + private native long nativeGetLastSynchronizationTimestamp(); + + private static native String nativeGenerateUniqueFileName(String baseName); + + private static native void nativeLoadKmzFile(@NonNull String path, boolean isTemporaryFile); + + private static native String nativeFormatNewBookmarkName(); + + private static native boolean nativeIsAsyncBookmarksLoadingInProgress(); public interface BookmarksLoadingListener { diff --git a/android/src/com/mapswithme/maps/bookmarks/data/Track.java b/android/src/com/mapswithme/maps/bookmarks/data/Track.java index 1e736f7eaa..55f74b1ab2 100644 --- a/android/src/com/mapswithme/maps/bookmarks/data/Track.java +++ b/android/src/com/mapswithme/maps/bookmarks/data/Track.java @@ -2,13 +2,13 @@ package com.mapswithme.maps.bookmarks.data; public class Track { - private final int mTrackId; - private final int mCategoryId; + private final long mTrackId; + private final long mCategoryId; private final String mName; private final String mLengthString; private final int mColor; - Track(int trackId, int categoryId, String name, String lengthString, int color) + Track(long trackId, long categoryId, String name, String lengthString, int color) { mTrackId = trackId; mCategoryId = categoryId; @@ -23,7 +23,7 @@ public class Track public int getColor() { return mColor; } - public int getTrackId() { return mTrackId; } + public long getTrackId() { return mTrackId; } - public int getCategoryId() { return mCategoryId; } + public long getCategoryId() { return mCategoryId; } } diff --git a/android/src/com/mapswithme/maps/widget/placepage/EditBookmarkFragment.java b/android/src/com/mapswithme/maps/widget/placepage/EditBookmarkFragment.java index 9972ebb66c..5d8fa9c55c 100644 --- a/android/src/com/mapswithme/maps/widget/placepage/EditBookmarkFragment.java +++ b/android/src/com/mapswithme/maps/widget/placepage/EditBookmarkFragment.java @@ -35,7 +35,8 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. private EditText mEtName; private TextView mTvBookmarkGroup; private ImageView mIvColor; - private int mCategoryId; + private int mCategoryPosition; + private long mCategoryId; @Nullable private Icon mIcon; @Nullable @@ -45,16 +46,16 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. public interface EditBookmarkListener { - void onBookmarkSaved(int categoryId, int bookmarkId); + void onBookmarkSaved(long bookmarkId); } - public static void editBookmark(int categoryId, int bookmarkId, @NonNull Context context, + public static void editBookmark(int categoryPosition, long bookmarkId, @NonNull Context context, @NonNull FragmentManager manager, @Nullable EditBookmarkListener listener) { final Bundle args = new Bundle(); - args.putInt(EXTRA_CATEGORY_ID, categoryId); - args.putInt(EXTRA_BOOKMARK_ID, bookmarkId); + args.putInt(EXTRA_CATEGORY_ID, categoryPosition); + args.putLong(EXTRA_BOOKMARK_ID, bookmarkId); String name = EditBookmarkFragment.class.getName(); final EditBookmarkFragment fragment = (EditBookmarkFragment) Fragment.instantiate(context, name, args); fragment.setArguments(args); @@ -81,9 +82,10 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { final Bundle args = getArguments(); - mCategoryId = args.getInt(EXTRA_CATEGORY_ID); - int bookmarkId = args.getInt(EXTRA_BOOKMARK_ID); - mBookmark = BookmarkManager.INSTANCE.getBookmark(mCategoryId, bookmarkId); + mCategoryPosition = args.getInt(EXTRA_CATEGORY_ID); + mCategoryId = BookmarkManager.INSTANCE.getCategoryIdByPosition(mCategoryPosition); + long bookmarkId = args.getLong(EXTRA_BOOKMARK_ID); + mBookmark = BookmarkManager.INSTANCE.getBookmark(bookmarkId); mIcon = mBookmark.getIcon(); mEtName = (EditText) view.findViewById(R.id.et__bookmark_name); mEtDescription = (EditText) view.findViewById(R.id.et__description); @@ -135,7 +137,7 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. mBookmark.setParams(mEtName.getText().toString(), mIcon, mEtDescription.getText().toString()); if (mListener != null) - mListener.onBookmarkSaved(mBookmark.getCategoryId(), mBookmark.getBookmarkId()); + mListener.onBookmarkSaved(mBookmark.getBookmarkId()); dismiss(); } @@ -159,7 +161,7 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. return; final Bundle args = new Bundle(); - args.putInt(ChooseBookmarkCategoryFragment.CATEGORY_ID, mCategoryId); + args.putInt(ChooseBookmarkCategoryFragment.CATEGORY_ID, mCategoryPosition); final ChooseBookmarkCategoryFragment fragment = (ChooseBookmarkCategoryFragment) Fragment.instantiate(getActivity(), ChooseBookmarkCategoryFragment.class.getName(), args); fragment.show(getChildFragmentManager(), null); } @@ -202,7 +204,7 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. private void refreshCategory() { - mTvBookmarkGroup.setText(BookmarkManager.INSTANCE.getCategory(mCategoryId).getName()); + mTvBookmarkGroup.setText(BookmarkManager.INSTANCE.getCategoryName(mCategoryId)); } private void refreshBookmark() @@ -220,7 +222,7 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. } @Override - public void onCategoryChanged(int newCategoryId) + public void onCategoryChanged(long newCategoryId) { mCategoryId = newCategoryId; refreshCategory(); diff --git a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java index dfd4592f17..93f99bc58d 100644 --- a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java +++ b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java @@ -1829,7 +1829,8 @@ public class PlacePageView extends RelativeLayout return; } Bookmark bookmark = (Bookmark) mMapObject; - EditBookmarkFragment.editBookmark(bookmark.getCategoryId(), bookmark.getBookmarkId(), + final int categoryPosition = BookmarkManager.INSTANCE.getCategoryPositionById(bookmark.getCategoryId()); + EditBookmarkFragment.editBookmark(categoryPosition, bookmark.getBookmarkId(), getActivity(), getActivity().getSupportFragmentManager(), this); break; @@ -1890,7 +1891,7 @@ public class PlacePageView extends RelativeLayout if (MapObject.isOfType(MapObject.BOOKMARK, mapObject)) setMapObject(Framework.nativeDeleteBookmarkFromMapObject(), true, null); else - setMapObject(BookmarkManager.INSTANCE.addNewBookmark(BookmarkManager.nativeFormatNewBookmarkName(), + setMapObject(BookmarkManager.INSTANCE.addNewBookmark(BookmarkManager.formatNewBookmarkName(), mapObject.getLat(), mapObject.getLon()), true, null); post(new Runnable() { @@ -2092,9 +2093,9 @@ public class PlacePageView extends RelativeLayout } @Override - public void onBookmarkSaved(int categoryId, int bookmarkId) + public void onBookmarkSaved(long bookmarkId) { - setMapObject(BookmarkManager.INSTANCE.getBookmark(categoryId, bookmarkId), true, null); + setMapObject(BookmarkManager.INSTANCE.getBookmark(bookmarkId), true, null); } public boolean isBannerTouched(@NonNull MotionEvent event) diff --git a/android/src/com/mapswithme/util/sharing/SharingHelper.java b/android/src/com/mapswithme/util/sharing/SharingHelper.java index e0c40bc938..bea3b99b13 100644 --- a/android/src/com/mapswithme/util/sharing/SharingHelper.java +++ b/android/src/com/mapswithme/util/sharing/SharingHelper.java @@ -213,10 +213,10 @@ public final class SharingHelper save(); } - public static void shareBookmarksCategory(Activity context, int id) + public static void shareBookmarksCategory(Activity context, long id) { final String path = MwmApplication.get().getTempPath() + "/"; - String name = BookmarkManager.INSTANCE.nativeSaveToKmzFile(id, path); + String name = BookmarkManager.INSTANCE.saveToKmzFile(id, path); if (name == null) return;