Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuri Gorshenin <y@maps.me>2017-04-10 14:09:00 +0300
committerVladimir Byko-Ianko <bykoianko@gmail.com>2017-04-11 18:03:48 +0300
commit5d7c0d9b27a30b2c7c93f65bbcc5f13efd3be630 (patch)
treefce3097aefefb000131e32e24758b78a3402bf6a
parentd6aad155470e6e937438166a15666b9f05320524 (diff)
[assessment-tool] Added buttons that display user position and viewport.beta-745
-rw-r--r--map/framework.cpp4
-rw-r--r--map/framework.hpp2
-rw-r--r--search/search_quality/assessment_tool/context.cpp2
-rw-r--r--search/search_quality/assessment_tool/main_model.cpp23
-rw-r--r--search/search_quality/assessment_tool/main_model.hpp2
-rw-r--r--search/search_quality/assessment_tool/main_view.cpp20
-rw-r--r--search/search_quality/assessment_tool/main_view.hpp3
-rw-r--r--search/search_quality/assessment_tool/model.hpp2
-rw-r--r--search/search_quality/assessment_tool/sample_view.cpp42
-rw-r--r--search/search_quality/assessment_tool/sample_view.hpp7
-rw-r--r--search/search_quality/assessment_tool/view.hpp3
11 files changed, 90 insertions, 20 deletions
diff --git a/map/framework.cpp b/map/framework.cpp
index 1218330628..7ac9bf3bbb 100644
--- a/map/framework.cpp
+++ b/map/framework.cpp
@@ -1590,7 +1590,7 @@ bool Framework::QueryMayBeSkipped(SearchIntent const & intent, search::SearchPar
return true;
}
-void Framework::ShowSearchResult(search::Result const & res)
+void Framework::ShowSearchResult(search::Result const & res, bool animation)
{
CancelAllSearches();
StopLocationFollow();
@@ -1619,7 +1619,7 @@ void Framework::ShowSearchResult(search::Result const & res)
}
m2::PointD const center = info.GetMercator();
- CallDrapeFunction(bind(&df::DrapeEngine::SetModelViewCenter, _1, center, scale, true));
+ CallDrapeFunction(bind(&df::DrapeEngine::SetModelViewCenter, _1, center, scale, animation));
UserMarkContainer::UserMarkForPoi()->SetPtOrg(center);
ActivateMapSelection(false, df::SelectionShape::OBJECT_POI, info);
diff --git a/map/framework.hpp b/map/framework.hpp
index d18b3194ad..dfd97456b0 100644
--- a/map/framework.hpp
+++ b/map/framework.hpp
@@ -549,7 +549,7 @@ public:
bool GetCurrentPosition(double & lat, double & lon) const;
- void ShowSearchResult(search::Result const & res);
+ void ShowSearchResult(search::Result const & res, bool animation = true);
size_t ShowSearchResults(search::Results const & results);
list<TSearchRequest> const & GetLastSearchQueries() const { return m_searchQuerySaver.Get(); }
diff --git a/search/search_quality/assessment_tool/context.cpp b/search/search_quality/assessment_tool/context.cpp
index 4aa2cc6dd4..862db33e68 100644
--- a/search/search_quality/assessment_tool/context.cpp
+++ b/search/search_quality/assessment_tool/context.cpp
@@ -99,6 +99,8 @@ void ContextList::Resize(size_t size)
for (size_t i = size; i < oldSize; ++i)
m_contexts[i].Clear();
+ if (size < m_contexts.size())
+ m_contexts.erase(m_contexts.begin() + size, m_contexts.end());
m_hasChanges.resize(size);
for (size_t i = oldSize; i < size; ++i)
diff --git a/search/search_quality/assessment_tool/main_model.cpp b/search/search_quality/assessment_tool/main_model.cpp
index 19fa98c002..ace0f95bbc 100644
--- a/search/search_quality/assessment_tool/main_model.cpp
+++ b/search/search_quality/assessment_tool/main_model.cpp
@@ -184,6 +184,29 @@ void MainModel::OnResultSelected(int index)
m_view->MoveViewportToResult(results.GetResult(index));
}
+void MainModel::OnShowViewportClicked()
+{
+ CHECK(m_selectedSample != kInvalidIndex, ());
+ CHECK(m_selectedSample < m_contexts.Size(), ());
+
+ auto const & context = m_contexts[m_selectedSample];
+ m_view->MoveViewportToRect(context.m_sample.m_viewport);
+}
+
+void MainModel::OnShowPositionClicked()
+{
+ CHECK(m_selectedSample != kInvalidIndex, ());
+ CHECK(m_selectedSample < m_contexts.Size(), ());
+
+ static int constexpr kViewportAroundPositionSizeM = 100;
+
+ auto const & context = m_contexts[m_selectedSample];
+ auto const & position = context.m_sample.m_pos;
+ auto const rect =
+ MercatorBounds::RectByCenterXYAndSizeInMeters(position, kViewportAroundPositionSizeM);
+ m_view->MoveViewportToRect(rect);
+}
+
bool MainModel::HasChanges() { return m_contexts.HasChanges(); }
void MainModel::OnUpdate(size_t index, Edits::Update const & update)
diff --git a/search/search_quality/assessment_tool/main_model.hpp b/search/search_quality/assessment_tool/main_model.hpp
index 839d35bb14..cbff49574d 100644
--- a/search/search_quality/assessment_tool/main_model.hpp
+++ b/search/search_quality/assessment_tool/main_model.hpp
@@ -32,6 +32,8 @@ public:
void OnSampleSelected(int index) override;
void OnResultSelected(int index) override;
+ void OnShowViewportClicked() override;
+ void OnShowPositionClicked() override;
bool HasChanges() override;
private:
diff --git a/search/search_quality/assessment_tool/main_view.cpp b/search/search_quality/assessment_tool/main_view.cpp
index 8b70b52bb5..d5b2bbc7fc 100644
--- a/search/search_quality/assessment_tool/main_view.cpp
+++ b/search/search_quality/assessment_tool/main_view.cpp
@@ -60,7 +60,7 @@ void MainView::SetSamples(ContextList::SamplesSlice const & samples)
void MainView::ShowSample(size_t index, search::Sample const & sample, bool hasEdits)
{
- m_framework.ShowRect(sample.m_viewport, -1 /* maxScale */, false /* animation */);
+ MoveViewportToRect(sample.m_viewport);
m_sampleView->SetContents(sample);
m_sampleView->show();
@@ -75,7 +75,12 @@ void MainView::ShowResults(search::Results::Iter begin, search::Results::Iter en
void MainView::MoveViewportToResult(search::Result const & result)
{
- m_framework.ShowSearchResult(result);
+ m_framework.ShowSearchResult(result, false /* animation */);
+}
+
+void MainView::MoveViewportToRect(m2::RectD const & rect)
+{
+ m_framework.ShowRect(rect, -1 /* maxScale */, false /* animation */);
}
void MainView::OnSampleChanged(size_t index, Edits::Update const & update, bool hasEdits)
@@ -222,8 +227,7 @@ void MainView::InitDocks()
{
auto * model = m_samplesView->selectionModel();
- connect(model, SIGNAL(selectionChanged(QItemSelection const &, QItemSelection const &)), this,
- SLOT(OnSampleSelected(QItemSelection const &)));
+ connect(model, &QItemSelectionModel::selectionChanged, this, &MainView::OnSampleSelected);
}
m_samplesDock = CreateDock(*m_samplesView);
@@ -232,10 +236,14 @@ void MainView::InitDocks()
m_sampleView = new SampleView(this /* parent */);
+ connect(m_sampleView, &SampleView::OnShowViewportClicked,
+ [this]() { m_model->OnShowViewportClicked(); });
+ connect(m_sampleView, &SampleView::OnShowPositionClicked,
+ [this]() { m_model->OnShowPositionClicked(); });
+
{
auto * model = m_sampleView->GetResultsView().selectionModel();
- connect(model, SIGNAL(selectionChanged(QItemSelection const &, QItemSelection const &)), this,
- SLOT(OnResultSelected(QItemSelection const &)));
+ connect(model, &QItemSelectionModel::selectionChanged, this, &MainView::OnResultSelected);
}
m_sampleDock = CreateDock(*m_sampleView);
diff --git a/search/search_quality/assessment_tool/main_view.hpp b/search/search_quality/assessment_tool/main_view.hpp
index ae57b708fa..16d26fcefd 100644
--- a/search/search_quality/assessment_tool/main_view.hpp
+++ b/search/search_quality/assessment_tool/main_view.hpp
@@ -32,6 +32,7 @@ public:
void ShowResults(search::Results::Iter begin, search::Results::Iter end) override;
void MoveViewportToResult(search::Result const & result) override;
+ void MoveViewportToRect(m2::RectD const & rect) override;
void OnSampleChanged(size_t index, Edits::Update const & update, bool hasEdits) override;
void EnableSampleEditing(size_t index, Edits & edits) override;
@@ -45,7 +46,7 @@ protected:
// QMainWindow overrides:
void closeEvent(QCloseEvent * event) override;
-private Q_SLOTS:
+private slots:
void OnSampleSelected(QItemSelection const & current);
void OnResultSelected(QItemSelection const & current);
diff --git a/search/search_quality/assessment_tool/model.hpp b/search/search_quality/assessment_tool/model.hpp
index 8c09f9c14b..11ff4df73f 100644
--- a/search/search_quality/assessment_tool/model.hpp
+++ b/search/search_quality/assessment_tool/model.hpp
@@ -17,6 +17,8 @@ public:
virtual void OnSampleSelected(int index) = 0;
virtual void OnResultSelected(int index) = 0;
+ virtual void OnShowViewportClicked() = 0;
+ virtual void OnShowPositionClicked() = 0;
virtual bool HasChanges() = 0;
protected:
diff --git a/search/search_quality/assessment_tool/sample_view.cpp b/search/search_quality/assessment_tool/sample_view.cpp
index a8fada841e..9a4004defd 100644
--- a/search/search_quality/assessment_tool/sample_view.cpp
+++ b/search/search_quality/assessment_tool/sample_view.cpp
@@ -15,16 +15,28 @@
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
+#include <QtWidgets/QPushButton>
#include <QtWidgets/QVBoxLayout>
+namespace
+{
+template <typename Layout>
+Layout * BuildSubLayout(QLayout & mainLayout, QWidget & parent)
+{
+ auto * box = new QWidget(&parent);
+ auto * subLayout = BuildLayoutWithoutMargins<Layout>(box /* parent */);
+ box->setLayout(subLayout);
+ mainLayout.addWidget(box);
+ return subLayout;
+}
+} // namespace
+
SampleView::SampleView(QWidget * parent) : QWidget(parent)
{
auto * mainLayout = BuildLayoutWithoutMargins<QVBoxLayout>(this /* parent */);
{
- auto * box = new QWidget(this /* parent */);
- auto * layout = BuildLayoutWithoutMargins<QHBoxLayout>(box /* parent */);
- box->setLayout(layout);
+ auto * layout = BuildSubLayout<QHBoxLayout>(*mainLayout, *this /* parent */);
m_query = new QLineEdit(this /* parent */);
m_query->setToolTip(tr("Query text"));
@@ -41,21 +53,27 @@ SampleView::SampleView(QWidget * parent) : QWidget(parent)
// will be ready.
m_langs->setEnabled(false);
layout->addWidget(m_langs);
+ }
- mainLayout->addWidget(box);
+ {
+ auto * layout = BuildSubLayout<QHBoxLayout>(*mainLayout, *this /* parent */);
+
+ m_showViewport = new QPushButton(tr("Show viewport"), this /* parent */);
+ connect(m_showViewport, &QPushButton::clicked, [this]() { emit OnShowViewportClicked(); });
+ layout->addWidget(m_showViewport);
+
+ m_showPosition = new QPushButton(tr("Show position"), this /* parent */);
+ connect(m_showPosition, &QPushButton::clicked, [this]() { emit OnShowPositionClicked(); });
+ layout->addWidget(m_showPosition);
}
{
- auto * box = new QWidget(this /* parent */);
- auto * layout = BuildLayoutWithoutMargins<QVBoxLayout>(box /* parent */);
- box->setLayout(layout);
+ auto * layout = BuildSubLayout<QVBoxLayout>(*mainLayout, *this /* parent */);
layout->addWidget(new QLabel(tr("Found results")));
- m_results = new ResultsView(*box /* parent */);
+ m_results = new ResultsView(*this /* parent */);
layout->addWidget(m_results);
-
- mainLayout->addWidget(box);
}
setLayout(mainLayout);
@@ -69,6 +87,8 @@ void SampleView::SetContents(search::Sample const & sample)
m_query->home(false /* mark */);
m_langs->Select(sample.m_locale);
+ m_showViewport->setEnabled(true);
+ m_showPosition->setEnabled(true);
m_results->Clear();
}
@@ -95,6 +115,8 @@ void SampleView::Clear()
{
m_query->setText(QString());
m_langs->Select("default");
+ m_showViewport->setEnabled(false);
+ m_showPosition->setEnabled(false);
m_results->Clear();
m_edits = nullptr;
}
diff --git a/search/search_quality/assessment_tool/sample_view.hpp b/search/search_quality/assessment_tool/sample_view.hpp
index 251bbf5d36..f4c52cc2f5 100644
--- a/search/search_quality/assessment_tool/sample_view.hpp
+++ b/search/search_quality/assessment_tool/sample_view.hpp
@@ -8,6 +8,7 @@
class LanguagesList;
class QLineEdit;
+class QPushButton;
class ResultsView;
class SampleView : public QWidget
@@ -29,9 +30,15 @@ public:
ResultsView & GetResultsView() { return *m_results; }
+signals:
+ void OnShowViewportClicked();
+ void OnShowPositionClicked();
+
private:
QLineEdit * m_query = nullptr;
LanguagesList * m_langs = nullptr;
+ QPushButton * m_showViewport = nullptr;
+ QPushButton * m_showPosition = nullptr;
ResultsView * m_results = nullptr;
Edits * m_edits = nullptr;
diff --git a/search/search_quality/assessment_tool/view.hpp b/search/search_quality/assessment_tool/view.hpp
index 677b72615f..77b7affb75 100644
--- a/search/search_quality/assessment_tool/view.hpp
+++ b/search/search_quality/assessment_tool/view.hpp
@@ -4,6 +4,8 @@
#include "search/search_quality/assessment_tool/context.hpp"
#include "search/search_quality/assessment_tool/edits.hpp"
+#include "geometry/rect2d.hpp"
+
#include <cstddef>
#include <string>
#include <vector>
@@ -23,6 +25,7 @@ public:
virtual void ShowResults(search::Results::Iter begin, search::Results::Iter end) = 0;
virtual void MoveViewportToResult(search::Result const & result) = 0;
+ virtual void MoveViewportToRect(m2::RectD const & rect) = 0;
virtual void OnSampleChanged(size_t index, Edits::Update const & update, bool hasEdits) = 0;
virtual void EnableSampleEditing(size_t index, Edits & edits) = 0;