diff --git a/qt/draw_widget.cpp b/qt/draw_widget.cpp index 90af8f7c4e..1adec192ad 100644 --- a/qt/draw_widget.cpp +++ b/qt/draw_widget.cpp @@ -8,10 +8,10 @@ #include "qt/routing_settings_dialog.hpp" #include "qt/screenshoter.hpp" -#include "map/framework.hpp" - #include "generator/borders.hpp" +#include "map/framework.hpp" + #include "search/result.hpp" #include "search/reverse_geocoder.hpp" @@ -32,22 +32,19 @@ #include "base/assert.hpp" #include "base/file_name_utils.hpp" -#include -#include +#include "defines.hpp" -#include +#include +#include #include - +#include #include #include #include #include -#include -#include -#include - -#include "defines.hpp" +#include +#include using namespace qt::common; @@ -96,14 +93,20 @@ DrawWidget::DrawWidget(Framework & framework, bool apiOpenGLES3, std::unique_ptr m_framework.SetPlacePageListeners([this]() { ShowPlacePage(); }, {} /* onClose */, {} /* onUpdate */); - m_framework.GetRoutingManager().SetRouteBuildingListener( - [](routing::RouterResultCode, storage::CountriesSet const &) {}); + auto & routingManager = m_framework.GetRoutingManager(); - m_framework.GetRoutingManager().SetRouteRecommendationListener( - [this](RoutingManager::Recommendation r) - { - OnRouteRecommendation(r); - }); + routingManager.SetRouteBuildingListener( + [&routingManager, this](routing::RouterResultCode, storage::CountriesSet const &) { + auto & drapeApi = m_framework.GetDrapeApi(); + + m_turnsVisualizer.ClearTurns(drapeApi); + + if (RoutingSettings::TurnsEnabled()) + m_turnsVisualizer.Visualize(routingManager, drapeApi); + }); + + routingManager.SetRouteRecommendationListener( + [this](RoutingManager::Recommendation r) { OnRouteRecommendation(r); }); m_framework.SetCurrentCountryChangedListener([this](storage::CountryId const & countryId) { m_countryId = countryId; @@ -578,7 +581,9 @@ void DrawWidget::SubmitRoutingPoint(m2::PointD const & pt) routingManager.AddRoutePoint(std::move(point)); if (routingManager.GetRoutePoints().size() >= 2) + { routingManager.BuildRoute(); + } } void DrawWidget::SubmitBookmark(m2::PointD const & pt) @@ -626,6 +631,8 @@ void DrawWidget::ClearRoute() else if (style == MapStyle::MapStyleVehicleDark) SetMapStyle(MapStyle::MapStyleDark); } + + m_turnsVisualizer.ClearTurns(m_framework.GetDrapeApi()); } void DrawWidget::OnRouteRecommendation(RoutingManager::Recommendation recommendation) diff --git a/qt/draw_widget.hpp b/qt/draw_widget.hpp index 43e8136709..8276995284 100644 --- a/qt/draw_widget.hpp +++ b/qt/draw_widget.hpp @@ -1,6 +1,7 @@ #pragma once #include "qt/qt_common/map_widget.hpp" +#include "qt/routing_turns_visualizer.hpp" #include "qt/ruler.hpp" #include "map/everywhere_search_params.hpp" @@ -11,9 +12,10 @@ #include "routing/router.hpp" +#include "drape_frontend/drape_engine.hpp" #include "drape_frontend/gui/skin.hpp" -#include "drape_frontend/drape_engine.hpp" +#include #include #include @@ -22,8 +24,6 @@ #include #include -#include - class Framework; namespace qt @@ -150,5 +150,6 @@ private: std::unique_ptr m_screenshoter; Ruler m_ruler; + RoutingTurnsVisualizer m_turnsVisualizer; }; } // namespace qt