From 037ac826868939e861860b1d70f01d1574fcefdb Mon Sep 17 00:00:00 2001 From: ExMix Date: Wed, 18 Jun 2014 11:55:09 +0300 Subject: [PATCH] [core] hide place page on second click --- iphone/Maps/Classes/MapViewController.mm | 5 ++++- map/bookmark_manager.cpp | 5 +++++ map/bookmark_manager.hpp | 1 + map/framework.cpp | 5 +++++ map/framework.hpp | 1 + map/user_mark_container.cpp | 5 +++++ map/user_mark_container.hpp | 1 + 7 files changed, 22 insertions(+), 1 deletion(-) diff --git a/iphone/Maps/Classes/MapViewController.mm b/iphone/Maps/Classes/MapViewController.mm index f2b41db361..512a4d1a23 100644 --- a/iphone/Maps/Classes/MapViewController.mm +++ b/iphone/Maps/Classes/MapViewController.mm @@ -248,7 +248,10 @@ const long long LITE_IDL = 431183278L; m2::PointD pxClicked(point.x * scaleFactor, point.y * scaleFactor); Framework & f = GetFramework(); - f.GetBalloonManager().OnShowMark(f.GetUserMark(m2::PointD(pxClicked.x, pxClicked.y), isLongClick)); + if (f.HasActiveUserMark()) + f.GetBalloonManager().Dismiss(); + else + f.GetBalloonManager().OnShowMark(f.GetUserMark(m2::PointD(pxClicked.x, pxClicked.y), isLongClick)); } - (void)onSingleTap:(NSValue *)point diff --git a/map/bookmark_manager.cpp b/map/bookmark_manager.cpp index b4de0ee2c6..941dc7bf95 100644 --- a/map/bookmark_manager.cpp +++ b/map/bookmark_manager.cpp @@ -313,6 +313,11 @@ void BookmarkManager::ActivateMark(UserMark const * mark, bool needAnim) m_selection.ActivateMark(mark, needAnim); } +bool BookmarkManager::UserMarkHasActive() const +{ + return m_selection.IsActive(); +} + namespace { class BestUserMarkFinder diff --git a/map/bookmark_manager.hpp b/map/bookmark_manager.hpp index 35d8cbae0c..53092f8204 100644 --- a/map/bookmark_manager.hpp +++ b/map/bookmark_manager.hpp @@ -61,6 +61,7 @@ public: bool DeleteBmCategory(size_t index); void ActivateMark(UserMark const * mark, bool needAnim); + bool UserMarkHasActive() const; UserMark const * FindNearestUserMark(m2::AnyRectD const & rect) const; /// Additional layer methods diff --git a/map/framework.cpp b/map/framework.cpp index e49728800e..438e7774cd 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -1605,6 +1605,11 @@ void Framework::ActivateUserMark(UserMark const * mark, bool needAnim) m_bmManager.ActivateMark(mark, needAnim); } +bool Framework::HasActiveUserMark() const +{ + return m_bmManager.UserMarkHasActive(); +} + UserMark const * Framework::GetUserMark(m2::PointD const & pxPoint, bool isLongPress) { DisconnectMyPositionUpdate(); diff --git a/map/framework.hpp b/map/framework.hpp index 328abbbda8..eda144d3e4 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -438,6 +438,7 @@ public: shared_ptr const & GetLocationState() const; void ActivateUserMark(UserMark const * mark, bool needAnim = true); + bool HasActiveUserMark() const; UserMark const * GetUserMark(m2::PointD const & pxPoint, bool isLongPress); PoiMarkPoint * GetAddressMark(m2::PointD const & globalPoint) const; BookmarkAndCategory FindBookmark(UserMark const * mark) const; diff --git a/map/user_mark_container.cpp b/map/user_mark_container.cpp index 7330154323..05e6f52d24 100644 --- a/map/user_mark_container.cpp +++ b/map/user_mark_container.cpp @@ -305,6 +305,11 @@ void SelectionContainer::Draw(const PaintOverlayEvent & e, UserMarkDLCache * cac } } +bool SelectionContainer::IsActive() const +{ + return m_container != NULL; +} + void SelectionContainer::StartActivationAnim() { diff --git a/map/user_mark_container.hpp b/map/user_mark_container.hpp index 4e969bd9e7..22c3baf867 100644 --- a/map/user_mark_container.hpp +++ b/map/user_mark_container.hpp @@ -139,6 +139,7 @@ public: void ActivateMark(UserMark const * userMark, bool needAnim); void Draw(PaintOverlayEvent const & e, UserMarkDLCache * cache) const; + bool IsActive() const; private: /// animation support