diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index 51a0403d88..3427515121 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -57,8 +57,6 @@ namespace android size_t const measurementsCount = 5; m_sensors[0].SetCount(measurementsCount); m_sensors[1].SetCount(measurementsCount); - - m_work.GetBookmarkBalloon()->setOnClickListener(bind(&Framework::OnBalloonClick, this, _1)); } Framework::~Framework() @@ -603,6 +601,7 @@ namespace android ActivatePopupWithAddressInfo(m_work.PtoG(point), adInfo); } + /* void Framework::ToCamelCase(string & s) { if (s.length() > 0) @@ -618,6 +617,7 @@ namespace android } } } + */ void Framework::ActivatePopupWithAddressInfo(m2::PointD const & bmkPosition, ::Framework::AddressInfo const & adInfo) { @@ -654,7 +654,8 @@ namespace android void Framework::ActivatePopup(m2::PointD const & bmkPosition, string const & name) { - gui::BookmarkBalloon * b = m_work.GetBookmarkBalloon(); + gui::BookmarkBalloon * b = GetBookmarkBalloon(); + m_work.DisablePlacemark(); b->setBookmarkPivot(bmkPosition); b->setBookmarkName(name); @@ -664,7 +665,7 @@ namespace android void Framework::DeactivatePopup() { - gui::BookmarkBalloon * b = m_work.GetBookmarkBalloon(); + gui::BookmarkBalloon * b = GetBookmarkBalloon(); b->setIsVisible(false); m_work.DisablePlacemark(); m_work.Invalidate(); @@ -672,7 +673,8 @@ namespace android void Framework::OnBalloonClick(gui::Element * e) { - gui::BookmarkBalloon * balloon = static_cast(e); + gui::BookmarkBalloon * balloon = GetBookmarkBalloon(); + BookmarkAndCategory bac = m_work.GetBookmark(m_work.GtoP(balloon->getBookmarkPivot())); if (ValidateBookmarkAndCategory(bac)) { @@ -706,8 +708,36 @@ namespace android { m_balloonClickListener = l; } + void Framework::RemoveBalloonClickListener() { m_balloonClickListener.clear(); } + + void Framework::CreateBookmarkBalloon() + { + CHECK(m_work.GetGuiController(), ()); + CHECK(m_work.GetRenderPolicy(), ()); + + gui::Balloon::Params bp; + + bp.m_position = graphics::EPosAbove; + bp.m_depth = graphics::maxDepth; + bp.m_pivot = m2::PointD(0, 0); + bp.m_imageMarginBottom = 10; + bp.m_imageMarginLeft = 10; + bp.m_imageMarginRight = 10; + bp.m_imageMarginTop = 10; + bp.m_textMarginBottom = 10; + bp.m_textMarginLeft = 10; + bp.m_textMarginRight = 10; + bp.m_textMarginTop = 10; + bp.m_image = graphics::Image::Info("arrow.png", m_work.GetRenderPolicy()->Density()); + bp.m_text = "Bookmark"; + + m_bmBaloon.reset(new gui::BookmarkBalloon(bp, &m_work)); + m_bmBaloon->setIsVisible(false); + m_bmBaloon->setOnClickListener(bind(&Framework::OnBalloonClick, this, _1)); + m_work.GetGuiController()->AddElement(m_bmBaloon); + } } diff --git a/android/jni/com/mapswithme/maps/Framework.hpp b/android/jni/com/mapswithme/maps/Framework.hpp index e2389338c3..34e328588c 100644 --- a/android/jni/com/mapswithme/maps/Framework.hpp +++ b/android/jni/com/mapswithme/maps/Framework.hpp @@ -3,9 +3,9 @@ #include #include "../../../../../map/framework.hpp" -#include "../../../../../map/drawer.hpp" -#include "../../../../../map/window_handle.hpp" -#include "../../../../../map/feature_vec_model.hpp" +#include "../../../../../map/bookmark_balloon.hpp" + +#include "../../../../../search/result.hpp" #include "../../../../../geometry/avg_vector.hpp" @@ -13,10 +13,11 @@ #include "../../../../../base/scheduled_task.hpp" #include "../../../../../base/strings_bundle.hpp" -#include "../../../../../search/result.hpp" +#include "../../../../../std/shared_ptr.hpp" #include "../../../nv_event/nv_event.hpp" + class CountryStatusDisplay; namespace android @@ -31,7 +32,7 @@ namespace android void CallRepaint(); TOnBalloonClickListener m_balloonClickListener; - boost::shared_ptr m_scheduledTask; + shared_ptr m_scheduledTask; int m_onClickFnsHandler; NVMultiTouchEventType m_eventType; //< multitouch action @@ -66,12 +67,23 @@ namespace android bool AdditionalHandlingForLongClick(double x, double y); void ActivatePopup(m2::PointD const & bmkPosition, string const & name); void ActivatePopupWithAddressInfo(m2::PointD const & bmkPosition, ::Framework::AddressInfo const & adInfo); - void OnBalloonClick(gui::Element * e); + void ToCamelCase(string & c); - inline bool ValidateBookmarkAndCategory(BookmarkAndCategory const & bac) + static inline bool ValidateBookmarkAndCategory(BookmarkAndCategory const & bac) { - return bac.first > -1 && bac.second > -1; + return (bac.first > -1 && bac.second > -1); + } + + shared_ptr m_bmBaloon; + + void OnBalloonClick(gui::Element * e); + void CreateBookmarkBalloon(); + inline gui::BookmarkBalloon * GetBookmarkBalloon() + { + if (!m_bmBaloon) + CreateBookmarkBalloon(); + return m_bmBaloon.get(); } public: diff --git a/map/bookmark_balloon.cpp b/map/bookmark_balloon.cpp index 6203a86e19..06efde8fec 100644 --- a/map/bookmark_balloon.cpp +++ b/map/bookmark_balloon.cpp @@ -5,7 +5,7 @@ namespace gui { - BookmarkBalloon::BookmarkBalloon(Params const & p, Framework * framework) + BookmarkBalloon::BookmarkBalloon(Params const & p, Framework const * framework) : Balloon(p), m_framework(framework) { diff --git a/map/bookmark_balloon.hpp b/map/bookmark_balloon.hpp index 147bb928c4..0c34333be6 100644 --- a/map/bookmark_balloon.hpp +++ b/map/bookmark_balloon.hpp @@ -11,10 +11,12 @@ namespace gui private: void update(); m2::PointD m_bookmarkPivot; - Framework * m_framework; + Framework const * m_framework; std::string m_bookmarkName; + public: - BookmarkBalloon(Params const & p, Framework * framework); + BookmarkBalloon(Params const & p, Framework const * framework); + void setBookmarkPivot(m2::PointD const & pivot); m2::PointD const getBookmarkPivot(); void setBookmarkName(std::string const & name); diff --git a/map/framework.cpp b/map/framework.cpp index 41ebadbec0..4154a059cc 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -156,11 +156,6 @@ CountryStatusDisplay * Framework::GetCountryStatusDisplay() const return m_informationDisplay.countryStatusDisplay().get(); } -gui::BookmarkBalloon * Framework::GetBookmarkBalloon() const -{ - return m_informationDisplay.bookmarkBalloon().get(); -} - static void GetResourcesMaps(vector & outMaps) { Platform & pl = GetPlatform(); diff --git a/map/framework.hpp b/map/framework.hpp index dcd4e4d1b8..24e35b56dd 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -239,7 +239,6 @@ public: InformationDisplay & GetInformationDisplay(); CountryStatusDisplay * GetCountryStatusDisplay() const; - gui::BookmarkBalloon * GetBookmarkBalloon() const; void PrepareToShutdown(); diff --git a/map/information_display.cpp b/map/information_display.cpp index de88d296e1..6ca449d820 100644 --- a/map/information_display.cpp +++ b/map/information_display.cpp @@ -75,25 +75,6 @@ InformationDisplay::InformationDisplay(Framework * framework) m_locationState.reset(new location::State(lsp)); - gui::Balloon::Params bp; - - bp.m_position = graphics::EPosAbove; - bp.m_depth = graphics::maxDepth; - bp.m_pivot = m2::PointD(0, 0); - bp.m_imageMarginBottom = 10; - bp.m_imageMarginLeft = 10; - bp.m_imageMarginRight = 10; - bp.m_imageMarginTop = 10; - bp.m_textMarginBottom = 10; - bp.m_textMarginLeft = 10; - bp.m_textMarginRight = 10; - bp.m_textMarginTop = 10; - bp.m_image = graphics::Image::Info("arrow.png"); - bp.m_text = "Bookmark"; - - m_bookmarkBalloon.reset(new gui::BookmarkBalloon(bp, framework)); - m_bookmarkBalloon->setIsVisible(false); - enableDebugPoints(false); enableRuler(false); enableCenter(false); @@ -116,7 +97,6 @@ void InformationDisplay::setController(gui::Controller *controller) m_controller->AddElement(m_compassArrow); m_controller->AddElement(m_locationState); m_controller->AddElement(m_ruler); - m_controller->AddElement(m_bookmarkBalloon); } void InformationDisplay::setScreen(ScreenBase const & screen) @@ -499,11 +479,6 @@ shared_ptr const & InformationDisplay::countryStatusDispla return m_countryStatusDisplay; } -shared_ptr const & InformationDisplay::bookmarkBalloon() const -{ - return m_bookmarkBalloon; -} - shared_ptr const & InformationDisplay::locationState() const { return m_locationState; diff --git a/map/information_display.hpp b/map/information_display.hpp index 35f89ade17..7a06ca6b1c 100644 --- a/map/information_display.hpp +++ b/map/information_display.hpp @@ -6,7 +6,6 @@ #include "../storage/index.hpp" #include "../gui/button.hpp" -#include "../map/bookmark_balloon.hpp" #include "../geometry/point2d.hpp" #include "../geometry/rect2d.hpp" @@ -90,7 +89,6 @@ private: shared_ptr m_countryStatusDisplay; shared_ptr m_compassArrow; shared_ptr m_locationState; - shared_ptr m_bookmarkBalloon; public: @@ -144,7 +142,7 @@ public: void setEmptyCountryIndex(storage::TIndex const & idx); shared_ptr const & countryStatusDisplay() const; - shared_ptr const & bookmarkBalloon() const; + shared_ptr const & bookmarkBalloon(Framework const * p) const; shared_ptr const & ruler() const;