From eb1efa49ef1d185f4ad3892a1bd6dd5ded1ef441 Mon Sep 17 00:00:00 2001 From: vng Date: Thu, 28 Mar 2013 19:58:49 +0300 Subject: [PATCH] [desktop] Correct distance in search results. --- qt/draw_widget.cpp | 20 ++++++++++++++++++++ qt/draw_widget.hpp | 1 + qt/search_panel.cpp | 17 ++--------------- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/qt/draw_widget.cpp b/qt/draw_widget.cpp index 760d17fadb..1c96f878ee 100644 --- a/qt/draw_widget.cpp +++ b/qt/draw_widget.cpp @@ -4,6 +4,8 @@ #include "../map/render_policy.hpp" +#include "../search/result.hpp" + #include "../gui/controller.hpp" #include "../graphics/opengl/opengl.hpp" @@ -11,6 +13,8 @@ #include "../platform/settings.hpp" #include "../platform/platform.hpp" +#include + #include #include #include @@ -501,9 +505,25 @@ namespace qt if (m_framework->GetCurrentPosition(lat, lon)) params.SetPosition(lat, lon); + /// @todo This stuff doesn't work (QT4xx bug). Probably in QT5 ... + //QLocale loc = QApplication::keyboardInputLocale(); + //params.SetInputLanguage(loc.name().toAscii().data()); + return m_framework->Search(params); } + string DrawWidget::GetDistance(search::Result const & res) const + { + string dist; + double lat, lon; + if (m_framework->GetCurrentPosition(lat, lon)) + { + double dummy; + (void) m_framework->GetDistanceAndAzimut(res.GetFeatureCenter(), lat, lon, -1.0, dist, dummy); + } + return dist; + } + void DrawWidget::ShowSearchResult(search::Result const & res) { m_framework->ShowSearchResult(res); diff --git a/qt/draw_widget.hpp b/qt/draw_widget.hpp index c0c815cc9b..e64354f94e 100644 --- a/qt/draw_widget.hpp +++ b/qt/draw_widget.hpp @@ -83,6 +83,7 @@ namespace qt void SetScaleControl(QScaleSlider * pScale); bool Search(search::SearchParams params); + string GetDistance(search::Result const & res) const; void ShowSearchResult(search::Result const & res); void CloseSearch(); diff --git a/qt/search_panel.cpp b/qt/search_panel.cpp index 185e134826..84d5acbc1f 100644 --- a/qt/search_panel.cpp +++ b/qt/search_panel.cpp @@ -148,22 +148,9 @@ void SearchPanel::OnSearchResult(ResultsT * res) Bookmark bm(e.GetFeatureCenter(), e.GetString(), "placemark-red"); frm.AdditionalPoiLayerAddPoi(bm); - m_pTable->setItem(rowCount, 0, - create_item(QString::fromUtf8(e.GetFeatureType()))); + m_pTable->setItem(rowCount, 0, create_item(QString::fromUtf8(e.GetFeatureType()))); - string strDist; - bool const drawDir = MeasurementUtils::FormatDistance(e.GetDistanceFromCenter(), strDist); - m_pTable->setItem(rowCount, 3, create_item(strDist.c_str())); - - if (drawDir) - { - /* - QTableWidgetItem * item = - new QTableWidgetItem(draw_direction(e.GetDirectionFromCenter()), QString()); - item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - m_pTable->setItem(rowCount, 4, item); - */ - } + m_pTable->setItem(rowCount, 3, create_item(m_pDrawWidget->GetDistance(e).c_str())); } m_results.push_back(e);