diff --git a/map/bookmark.cpp b/map/bookmark.cpp index edda1f5cad..c0813075fa 100644 --- a/map/bookmark.cpp +++ b/map/bookmark.cpp @@ -26,9 +26,9 @@ #include "../std/algorithm.hpp" #include "../std/auto_ptr.hpp" -UserMarkCopy * Bookmark::Copy() const +unique_ptr Bookmark::Copy() const { - return new UserMarkCopy(this, false); + return unique_ptr(new UserMarkCopy(this, false)); } graphics::DisplayList * Bookmark::GetDisplayList(UserMarkDLCache * cache) const diff --git a/map/bookmark.hpp b/map/bookmark.hpp index fde150be50..2d3dd5d4e5 100644 --- a/map/bookmark.hpp +++ b/map/bookmark.hpp @@ -108,7 +108,7 @@ public: double GetScale() const { return m_data.GetScale(); } void SetScale(double scale) { m_data.SetScale(scale); } - virtual UserMarkCopy * Copy() const; + unique_ptr Copy() const override; virtual graphics::DisplayList * GetDisplayList(UserMarkDLCache * cache) const; virtual double GetAnimScaleFactor() const; diff --git a/map/pin_click_manager.cpp b/map/pin_click_manager.cpp index f95d844ead..54597b12e9 100644 --- a/map/pin_click_manager.cpp +++ b/map/pin_click_manager.cpp @@ -28,7 +28,7 @@ void PinClickManager::Hide() void PinClickManager::OnShowMark(UserMark const * mark) { if (mark != NULL) - OnActivateUserMark(mark->Copy()); + m_userMarkListener(mark->Copy()); SetBalloonVisible(mark != NULL); } @@ -57,11 +57,6 @@ void PinClickManager::ClearListeners() m_dismissListener = TDismissListener(); } -void PinClickManager::OnActivateUserMark(UserMarkCopy * mark) -{ - m_userMarkListener(mark); -} - void PinClickManager::OnDismiss() { // Can be called before the listeners will be attached (clearing on activity start). diff --git a/map/pin_click_manager.hpp b/map/pin_click_manager.hpp index 8f9a5d0e66..ae990f1cfc 100644 --- a/map/pin_click_manager.hpp +++ b/map/pin_click_manager.hpp @@ -5,8 +5,9 @@ #include "../geometry/point2d.hpp" -#include "../std/shared_ptr.hpp" #include "../std/function.hpp" +#include "../std/shared_ptr.hpp" +#include "../std/unique_ptr.hpp" class Framework; @@ -19,7 +20,6 @@ class PinClickManager { Framework & m_f; - void OnActivateUserMark(UserMarkCopy * mark); void OnDismiss(); void SetBalloonVisible(bool isVisible); @@ -41,7 +41,7 @@ private: /// @name Platform dependent listeners to show special activities. //@{ // You must delete UserMarkCopy obtained by this callback - typedef function TUserMarkListener; + typedef function)> TUserMarkListener; TUserMarkListener m_userMarkListener; typedef function TDismissListener; TDismissListener m_dismissListener; diff --git a/map/user_mark.hpp b/map/user_mark.hpp index 5bf34c0db3..0218bcb019 100644 --- a/map/user_mark.hpp +++ b/map/user_mark.hpp @@ -6,8 +6,9 @@ #include "../search/result.hpp" -#include "../std/string.hpp" #include "../std/noncopyable.hpp" +#include "../std/string.hpp" +#include "../std/unique_ptr.hpp" class UserMarkContainer; class PaintOverlayEvent; @@ -40,7 +41,7 @@ public: void GetLatLon(double & lat, double & lon) const; virtual bool IsCustomDrawable() const { return false;} virtual Type GetMarkType() const = 0; - virtual UserMarkCopy * Copy() const = 0; + virtual unique_ptr Copy() const = 0; protected: m2::PointD m_ptOrg; @@ -95,9 +96,10 @@ public: string const & GetID() const { return m_id; } void SetID(string const & id) { m_id = id; } - virtual UserMarkCopy * Copy() const + unique_ptr Copy() const override { - return new UserMarkCopy(new ApiMarkPoint(m_name, m_id, m_ptOrg, m_container)); + return unique_ptr( + new UserMarkCopy(new ApiMarkPoint(m_name, m_id, m_ptOrg, m_container))); } private: @@ -129,9 +131,10 @@ public: feature::FeatureMetadata const & GetMetadata() const { return m_metadata; } void SetMetadata(feature::FeatureMetadata const & metadata) { m_metadata = metadata; } - virtual UserMarkCopy * Copy() const + unique_ptr Copy() const override { - return new UserMarkCopy(new SearchMarkPoint(m_info, m_ptOrg, m_container)); + return unique_ptr( + new UserMarkCopy(new SearchMarkPoint(m_info, m_ptOrg, m_container))); } protected: @@ -146,9 +149,9 @@ public: : SearchMarkPoint(m2::PointD(0.0, 0.0), container) {} UserMark::Type GetMarkType() const { return POI; } - virtual UserMarkCopy * Copy() const + unique_ptr Copy() const override { - return new UserMarkCopy(this, false); + return unique_ptr(new UserMarkCopy(this, false)); } void SetPtOrg(m2::PointD const & ptOrg) { m_ptOrg = ptOrg; } diff --git a/qt/draw_widget.cpp b/qt/draw_widget.cpp index 304ecd6691..ade5771a95 100644 --- a/qt/draw_widget.cpp +++ b/qt/draw_widget.cpp @@ -359,7 +359,7 @@ namespace qt GetBalloonManager().OnShowMark(m_framework->GetUserMark(pt, m_wasLongClick)); } - void DrawWidget::OnActivateMark(UserMarkCopy * pCopy) + void DrawWidget::OnActivateMark(unique_ptr pCopy) { UserMark const * pMark = pCopy->GetUserMark(); m_framework->ActivateUserMark(pMark); diff --git a/qt/draw_widget.hpp b/qt/draw_widget.hpp index 136aa8be93..c4f1b49f7c 100644 --- a/qt/draw_widget.hpp +++ b/qt/draw_widget.hpp @@ -112,7 +112,7 @@ namespace qt void StartPressTask(m2::PointD const & pt, unsigned ms); bool KillPressTask(); void OnPressTaskEvent(m2::PointD const & pt, unsigned ms); - void OnActivateMark(UserMarkCopy * pCopy); + void OnActivateMark(unique_ptr pCopy); protected: /// @name Overriden from base_type.