diff --git a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp index fc6d69818d..09d55a2fb6 100644 --- a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp +++ b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp @@ -1273,6 +1273,24 @@ Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetChildrenCollect return MakeCategories(env, ids); } +JNIEXPORT jboolean JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeIsBookmarkCompilation(JNIEnv *env, + jobject, + jlong id) +{ + auto const & bm = frm()->GetBookmarkManager(); + return static_cast(bm.IsBookmarkCompilation(static_cast(id))); +} + +JNIEXPORT jint JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetCompilationType(JNIEnv *env, + jobject, + jlong id) +{ + auto const & bm = frm()->GetBookmarkManager(); + return static_cast(bm.GetCompilationType(static_cast(id))); +} + JNIEXPORT jboolean JNICALL Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeHasLastSortingType( JNIEnv *, jobject, jlong catId) diff --git a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java index d619d745f0..b0b877adae 100644 --- a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java +++ b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java @@ -893,6 +893,9 @@ public enum BookmarkManager @NonNull native BookmarkCategory[] nativeGetChildrenCollections(long catId); + native boolean nativeIsBookmarkCompilation(long catId); + native int nativeGetCompilationType(long catId); + @NonNull public String getBookmarkName(@IntRange(from = 0) long bookmarkId) { diff --git a/map/bookmark_manager.cpp b/map/bookmark_manager.cpp index 58c4bd7eb4..5b61b52780 100644 --- a/map/bookmark_manager.cpp +++ b/map/bookmark_manager.cpp @@ -1368,11 +1368,13 @@ void BookmarkManager::OnTrackDeselected() kml::GroupIdCollection BookmarkManager::GetChildrenCategories(kml::MarkGroupId parentId) const { + CHECK_THREAD_CHECKER(m_threadChecker, ()); return GetCompilationOfType(parentId, kml::CompilationType::Category); } kml::GroupIdCollection BookmarkManager::GetChildrenCollections(kml::MarkGroupId parentId) const { + CHECK_THREAD_CHECKER(m_threadChecker, ()); return GetCompilationOfType(parentId, kml::CompilationType::Collection); } @@ -1391,6 +1393,21 @@ kml::GroupIdCollection BookmarkManager::GetCompilationOfType(kml::MarkGroupId pa return result; } +bool BookmarkManager::IsBookmarkCompilation(kml::MarkGroupId id) const +{ + CHECK_THREAD_CHECKER(m_threadChecker, ()); + return m_compilations.find(id) != m_compilations.cend(); +} + +kml::CompilationType BookmarkManager::GetCompilationType(kml::MarkGroupId id) const +{ + CHECK_THREAD_CHECKER(m_threadChecker, ()); + + auto const compilation = m_compilations.find(id); + CHECK(compilation != m_compilations.cend(), ()); + return compilation->second->GetCategoryData().m_type; +} + std::vector BookmarkManager::GetAllPaidCategoriesIds() const { return GetCategoriesFromCatalog([](kml::AccessRules accessRules) diff --git a/map/bookmark_manager.hpp b/map/bookmark_manager.hpp index 28ec35bc77..74282e027a 100644 --- a/map/bookmark_manager.hpp +++ b/map/bookmark_manager.hpp @@ -508,6 +508,9 @@ public: kml::GroupIdCollection GetChildrenCategories(kml::MarkGroupId parentCategoryId) const; kml::GroupIdCollection GetChildrenCollections(kml::MarkGroupId parentCategoryId) const; + bool IsBookmarkCompilation(kml::MarkGroupId id) const; + kml::CompilationType GetCompilationType(kml::MarkGroupId id) const; + std::vector GetAllPaidCategoriesIds() const; private: