forked from organicmaps/organicmaps
Check if a bookmark category is editable.
This commit is contained in:
parent
0f74c09455
commit
6fb8894efa
4 changed files with 80 additions and 3 deletions
|
@ -495,6 +495,28 @@ Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeIsUsedCategoryName
|
|||
ToNativeString(env, name)));
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeIsEditableBookmark(
|
||||
JNIEnv * env, jobject thiz, jlong bmkId)
|
||||
{
|
||||
return static_cast<jboolean>(frm()->GetBookmarkManager().IsEditableBookmark(static_cast<kml::MarkId>(bmkId)));
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeIsEditableTrack(
|
||||
JNIEnv * env, jobject thiz, jlong trackId)
|
||||
{
|
||||
return static_cast<jboolean>(frm()->GetBookmarkManager().IsEditableTrack(static_cast<kml::TrackId>(trackId)));
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeIsEditableCategory(
|
||||
JNIEnv * env, jobject thiz, jlong catId)
|
||||
{
|
||||
return static_cast<jboolean>(frm()->GetBookmarkManager().IsEditableCategory(static_cast<kml::MarkGroupId>(catId)));
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeAreAllCategoriesVisible(
|
||||
JNIEnv * env, jobject thiz)
|
||||
|
|
|
@ -369,6 +369,12 @@ public enum BookmarkManager
|
|||
return nativeIsUsedCategoryName(name);
|
||||
}
|
||||
|
||||
public boolean isEditableBookmark(long bmkId) { return nativeIsEditableBookmark(bmkId); }
|
||||
|
||||
public boolean isEditableTrack(long trackId) { return nativeIsEditableTrack(trackId); }
|
||||
|
||||
public boolean isEditableCategory(long catId) { return nativeIsEditableCategory(catId); }
|
||||
|
||||
public boolean areAllCategoriesVisible()
|
||||
{
|
||||
return nativeAreAllCategoriesVisible();
|
||||
|
@ -535,6 +541,12 @@ public enum BookmarkManager
|
|||
|
||||
private static native boolean nativeIsUsedCategoryName(@NonNull String name);
|
||||
|
||||
private static native boolean nativeIsEditableBookmark(long bmkId);
|
||||
|
||||
private static native boolean nativeIsEditableTrack(long trackId);
|
||||
|
||||
private static native boolean nativeIsEditableCategory(long catId);
|
||||
|
||||
private static native boolean nativeAreAllCategoriesVisible();
|
||||
|
||||
private static native boolean nativeAreAllCategoriesInvisible();
|
||||
|
|
|
@ -1721,6 +1721,30 @@ bool BookmarkManager::IsCategoryEmpty(kml::MarkGroupId categoryId) const
|
|||
return GetBmCategory(categoryId)->IsEmpty();
|
||||
}
|
||||
|
||||
bool BookmarkManager::IsEditableBookmark(kml::MarkId bmId) const
|
||||
{
|
||||
CHECK_THREAD_CHECKER(m_threadChecker, ());
|
||||
auto const * mark = GetBookmark(bmId);
|
||||
if (mark->GetGroupId() != kml::kInvalidMarkGroupId)
|
||||
return !IsCategoryFromCatalog(mark->GetGroupId());
|
||||
return true;
|
||||
}
|
||||
|
||||
bool BookmarkManager::IsEditableTrack(kml::TrackId trackId) const
|
||||
{
|
||||
CHECK_THREAD_CHECKER(m_threadChecker, ());
|
||||
auto const * track = GetTrack(trackId);
|
||||
if (track->GetGroupId() != kml::kInvalidMarkGroupId)
|
||||
return !IsCategoryFromCatalog(track->GetGroupId());
|
||||
return true;
|
||||
}
|
||||
|
||||
bool BookmarkManager::IsEditableCategory(kml::MarkGroupId groupId) const
|
||||
{
|
||||
CHECK_THREAD_CHECKER(m_threadChecker, ());
|
||||
return !IsCategoryFromCatalog(groupId);
|
||||
}
|
||||
|
||||
bool BookmarkManager::IsUsedCategoryName(std::string const & name) const
|
||||
{
|
||||
CHECK_THREAD_CHECKER(m_threadChecker, ());
|
||||
|
@ -2286,6 +2310,7 @@ Bookmark * BookmarkManager::EditSession::CreateBookmark(kml::BookmarkData && bmD
|
|||
|
||||
Bookmark * BookmarkManager::EditSession::CreateBookmark(kml::BookmarkData && bmData, kml::MarkGroupId groupId)
|
||||
{
|
||||
CHECK(m_bmManager.IsEditableCategory(groupId), ());
|
||||
return m_bmManager.CreateBookmark(std::move(bmData), groupId);
|
||||
}
|
||||
|
||||
|
@ -2294,9 +2319,10 @@ Track * BookmarkManager::EditSession::CreateTrack(kml::TrackData && trackData)
|
|||
return m_bmManager.CreateTrack(std::move(trackData));
|
||||
}
|
||||
|
||||
Bookmark * BookmarkManager::EditSession::GetBookmarkForEdit(kml::MarkId markId)
|
||||
Bookmark * BookmarkManager::EditSession::GetBookmarkForEdit(kml::MarkId bmId)
|
||||
{
|
||||
return m_bmManager.GetBookmarkForEdit(markId);
|
||||
CHECK(m_bmManager.IsEditableBookmark(bmId), ());
|
||||
return m_bmManager.GetBookmarkForEdit(bmId);
|
||||
}
|
||||
|
||||
void BookmarkManager::EditSession::DeleteUserMark(kml::MarkId markId)
|
||||
|
@ -2306,16 +2332,20 @@ void BookmarkManager::EditSession::DeleteUserMark(kml::MarkId markId)
|
|||
|
||||
void BookmarkManager::EditSession::DeleteBookmark(kml::MarkId bmId)
|
||||
{
|
||||
CHECK(m_bmManager.IsEditableBookmark(bmId), ());
|
||||
m_bmManager.DeleteBookmark(bmId);
|
||||
}
|
||||
|
||||
void BookmarkManager::EditSession::DeleteTrack(kml::TrackId trackId)
|
||||
{
|
||||
CHECK(m_bmManager.IsEditableTrack(trackId), ());
|
||||
m_bmManager.DeleteTrack(trackId);
|
||||
}
|
||||
|
||||
void BookmarkManager::EditSession::ClearGroup(kml::MarkGroupId groupId)
|
||||
{
|
||||
if (m_bmManager.IsBookmarkCategory(groupId))
|
||||
CHECK(m_bmManager.IsEditableCategory(groupId), ());
|
||||
m_bmManager.ClearGroup(groupId);
|
||||
}
|
||||
|
||||
|
@ -2327,36 +2357,45 @@ void BookmarkManager::EditSession::SetIsVisible(kml::MarkGroupId groupId, bool v
|
|||
void BookmarkManager::EditSession::MoveBookmark(
|
||||
kml::MarkId bmID, kml::MarkGroupId curGroupID, kml::MarkGroupId newGroupID)
|
||||
{
|
||||
CHECK(m_bmManager.IsEditableCategory(curGroupID), ());
|
||||
CHECK(m_bmManager.IsEditableCategory(newGroupID), ());
|
||||
|
||||
m_bmManager.MoveBookmark(bmID, curGroupID, newGroupID);
|
||||
}
|
||||
|
||||
void BookmarkManager::EditSession::UpdateBookmark(kml::MarkId bmId, kml::BookmarkData const & bm)
|
||||
{
|
||||
CHECK(m_bmManager.IsEditableBookmark(bmId), ());
|
||||
return m_bmManager.UpdateBookmark(bmId, bm);
|
||||
}
|
||||
|
||||
void BookmarkManager::EditSession::AttachBookmark(kml::MarkId bmId, kml::MarkGroupId groupId)
|
||||
{
|
||||
CHECK(m_bmManager.IsEditableCategory(groupId), ());
|
||||
m_bmManager.AttachBookmark(bmId, groupId);
|
||||
}
|
||||
|
||||
void BookmarkManager::EditSession::DetachBookmark(kml::MarkId bmId, kml::MarkGroupId groupId)
|
||||
{
|
||||
CHECK(m_bmManager.IsEditableCategory(groupId), ());
|
||||
m_bmManager.DetachBookmark(bmId, groupId);
|
||||
}
|
||||
|
||||
void BookmarkManager::EditSession::AttachTrack(kml::TrackId trackId, kml::MarkGroupId groupId)
|
||||
{
|
||||
CHECK(m_bmManager.IsEditableCategory(groupId), ());
|
||||
m_bmManager.AttachTrack(trackId, groupId);
|
||||
}
|
||||
|
||||
void BookmarkManager::EditSession::DetachTrack(kml::TrackId trackId, kml::MarkGroupId groupId)
|
||||
{
|
||||
CHECK(m_bmManager.IsEditableCategory(groupId), ());
|
||||
m_bmManager.DetachTrack(trackId, groupId);
|
||||
}
|
||||
|
||||
void BookmarkManager::EditSession::SetCategoryName(kml::MarkGroupId categoryId, std::string const & name)
|
||||
{
|
||||
CHECK(m_bmManager.IsEditableCategory(categoryId), ());
|
||||
m_bmManager.SetCategoryName(categoryId, name);
|
||||
}
|
||||
|
||||
|
|
|
@ -97,7 +97,7 @@ public:
|
|||
return m_bmManager.GetMarkForEdit<UserMarkT>(markId);
|
||||
}
|
||||
|
||||
Bookmark * GetBookmarkForEdit(kml::MarkId markId);
|
||||
Bookmark * GetBookmarkForEdit(kml::MarkId bmId);
|
||||
|
||||
template <typename UserMarkT, typename F>
|
||||
void DeleteUserMarks(UserMark::Type type, F && deletePredicate)
|
||||
|
@ -246,6 +246,10 @@ public:
|
|||
|
||||
bool IsCategoryEmpty(kml::MarkGroupId categoryId) const;
|
||||
|
||||
bool IsEditableBookmark(kml::MarkId bmId) const;
|
||||
bool IsEditableTrack(kml::TrackId trackId) const;
|
||||
bool IsEditableCategory(kml::MarkGroupId groupId) const;
|
||||
|
||||
bool IsUsedCategoryName(std::string const & name) const;
|
||||
bool AreAllCategoriesVisible() const;
|
||||
bool AreAllCategoriesInvisible() const;
|
||||
|
|
Loading…
Add table
Reference in a new issue