From 3af0d9021bf1cbd53142ad9303cab21754f667fe Mon Sep 17 00:00:00 2001 From: Kirill Zhdanovich Date: Fri, 16 Aug 2013 17:25:49 +0300 Subject: [PATCH] [api]New Parameter added. If parameter added to url, it allows open app with balloon click. --- map/framework.hpp | 1 + map/map_tests/mwm_url_tests.cpp | 24 ++++++++++++++++++++++++ map/mwm_url.cpp | 9 +++++++-- map/mwm_url.hpp | 2 ++ 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/map/framework.hpp b/map/framework.hpp index 679c51e0c7..77507aa8c5 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -465,6 +465,7 @@ public: m2::RectD GetMapApiViewportRect() const; bool IsValidMapApi() const { return m_ParsedMapApi.IsValid(); } string GenerateApiBackUrl(url_scheme::ApiPoint const & point); + bool GoBackOnBalloonClick() const { return m_ParsedMapApi.GoBackOnBalloonClick(); } //@} /// @name Map updates diff --git a/map/map_tests/mwm_url_tests.cpp b/map/map_tests/mwm_url_tests.cpp index dd2ecdb0e4..2d6e32a679 100644 --- a/map/map_tests/mwm_url_tests.cpp +++ b/map/map_tests/mwm_url_tests.cpp @@ -291,3 +291,27 @@ UNIT_TEST(MWMApiZoomLevelTest) m2::RectD const rEqualToR1 = ParsedMapApi(Uri("mwm://map?ll=0,0&z=-23.43")).GetLatLonRect(); TEST_EQUAL(r1, rEqualToR1, ()); } + +UNIT_TEST(MWMApiBalloonActionDefaultTest) +{ + { + Uri uri("mapswithme://map?ll=38.970559,-9.419289&ignoreThisParam=Yes&z=17&n=Point%20Name"); + ParsedMapApi api(uri); + TEST(!api.GoBackOnBalloonClick(), ("")); + } + { + Uri uri("mapswithme://map?ll=38.970559,-9.419289&ignoreThisParam=Yes&z=17&n=Point%20Name&balloonAction=false"); + ParsedMapApi api(uri); + TEST(api.GoBackOnBalloonClick(), ("")); + } + { + Uri uri("mapswithme://map?ll=38.970559,-9.419289&ignoreThisParam=Yes&z=17&n=Point%20Name&balloonAction=true"); + ParsedMapApi api(uri); + TEST(api.GoBackOnBalloonClick(), ("")); + } + { + Uri uri("mapswithme://map?ll=38.970559,-9.419289&ignoreThisParam=Yes&z=17&n=Point%20Name&balloonAction="); + ParsedMapApi api(uri); + TEST(api.GoBackOnBalloonClick(), ("")); + } +} diff --git a/map/mwm_url.cpp b/map/mwm_url.cpp index eea9f97ceb..7794708884 100644 --- a/map/mwm_url.cpp +++ b/map/mwm_url.cpp @@ -23,11 +23,11 @@ bool IsInvalidApiPoint(ApiPoint const & p) { return p.m_lat == INVALID_LAT_VALUE } // unnames namespace -ParsedMapApi::ParsedMapApi() : m_version(0), m_zoomLevel(0.0) +ParsedMapApi::ParsedMapApi() : m_version(0), m_zoomLevel(0.0), m_goBackOnBalloonClick(false) { } -ParsedMapApi::ParsedMapApi(Uri const & uri) : m_version(0), m_zoomLevel(0.0) +ParsedMapApi::ParsedMapApi(Uri const & uri) : m_version(0), m_zoomLevel(0.0), m_goBackOnBalloonClick(false) { if (!Parse(uri)) Reset(); @@ -132,6 +132,10 @@ void ParsedMapApi::AddKeyValue(string key, string const & value) { m_appTitle = value; } + else if (key == "balloonaction") + { + m_goBackOnBalloonClick = true; + } } void ParsedMapApi::Reset() @@ -142,6 +146,7 @@ void ParsedMapApi::Reset() m_version = 0; m_showRect = m2::RectD(); m_zoomLevel = 0.0; + m_goBackOnBalloonClick = false; } bool ParsedMapApi::GetViewport(m2::PointD & pt, double & zoom) const diff --git a/map/mwm_url.hpp b/map/mwm_url.hpp index 6394ddec71..4b4e88439d 100644 --- a/map/mwm_url.hpp +++ b/map/mwm_url.hpp @@ -29,6 +29,7 @@ public: int GetApiVersion() const { return m_version; } m2::RectD GetLatLonRect() const { return m_showRect; } void Reset(); + bool GoBackOnBalloonClick() const { return m_goBackOnBalloonClick; } /// @name Used in settings map viewport after invoking API. //@{ @@ -48,6 +49,7 @@ private: /// Zoom level in OSM format (e.g. from 1.0 to 20.0) /// Taken into an account when calculating viewport rect, but only if points count is == 1 double m_zoomLevel; + bool m_goBackOnBalloonClick; }; }