forked from organicmaps/organicmaps
[core] notify if active bookmark of bookmark category deleted
This commit is contained in:
parent
4886b1d86f
commit
3b8f933575
5 changed files with 24 additions and 4 deletions
|
@ -128,6 +128,13 @@ void BookmarkCategory::DeleteBookmark(size_t index)
|
|||
ASSERT_LESS(index, c.GetUserMarkCount(), ());
|
||||
UserMark const * markForDelete = c.GetUserMark(index);
|
||||
|
||||
if (m_framework.GetBookmarkManager().IsUserMarkActive(markForDelete))
|
||||
{
|
||||
PinClickManager & clickManager = m_framework.GetBalloonManager();
|
||||
clickManager.RemovePin();
|
||||
clickManager.Dismiss();
|
||||
}
|
||||
|
||||
int animIndex = -1;
|
||||
for (size_t i = 0; i < m_anims.size(); ++i)
|
||||
{
|
||||
|
|
|
@ -287,9 +287,13 @@ void BookmarkManager::DrawItems(shared_ptr<PaintEvent> const & e) const
|
|||
|
||||
void BookmarkManager::DeleteBmCategory(CategoryIter i)
|
||||
{
|
||||
m_selection.ActivateMark(0, false);
|
||||
|
||||
BookmarkCategory * cat = *i;
|
||||
if (m_selection.m_container == cat)
|
||||
{
|
||||
PinClickManager & clikManager = m_framework.GetBalloonManager();
|
||||
clikManager.RemovePin();
|
||||
clikManager.Dismiss();
|
||||
}
|
||||
|
||||
FileWriter::DeleteFileX(cat->GetFileName());
|
||||
|
||||
|
@ -319,6 +323,15 @@ bool BookmarkManager::UserMarkHasActive() const
|
|||
return m_selection.IsActive();
|
||||
}
|
||||
|
||||
bool BookmarkManager::IsUserMarkActive(UserMark const * mark) const
|
||||
{
|
||||
if (mark == nullptr)
|
||||
return false;
|
||||
|
||||
return (m_selection.m_container == mark->GetContainer() &&
|
||||
m_selection.m_ptOrg.EqualDxDy(mark->GetOrg(), 1.0E-4));
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
class BestUserMarkFinder
|
||||
|
|
|
@ -7,7 +7,6 @@ class Framework;
|
|||
class PaintEvent;
|
||||
namespace graphics { class Screen; }
|
||||
|
||||
|
||||
class BookmarkManager : private noncopyable
|
||||
{
|
||||
vector<BookmarkCategory *> m_categories;
|
||||
|
@ -62,6 +61,7 @@ public:
|
|||
|
||||
void ActivateMark(UserMark const * mark, bool needAnim);
|
||||
bool UserMarkHasActive() const;
|
||||
bool IsUserMarkActive(UserMark const * container) const;
|
||||
class TouchRectHolder
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -333,7 +333,6 @@ bool SelectionContainer::IsActive() const
|
|||
return m_container != NULL;
|
||||
}
|
||||
|
||||
|
||||
void SelectionContainer::StartActivationAnim()
|
||||
{
|
||||
m_animTask.reset(new PinAnimation(m_fm));
|
||||
|
|
|
@ -153,6 +153,7 @@ private:
|
|||
shared_ptr<anim::Task> m_animTask;
|
||||
|
||||
private:
|
||||
friend class BookmarkManager;
|
||||
UserMarkContainer const * m_container;
|
||||
m2::PointD m_ptOrg;
|
||||
Framework & m_fm;
|
||||
|
|
Loading…
Add table
Reference in a new issue