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
path: root/map
diff options
context:
space:
mode:
authorAlex Zolotarev <deathbaba@gmail.com>2011-05-13 19:22:08 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:17:17 +0300
commitfd4578cea975d83ded8869adb127f353d1a541e5 (patch)
treea125d79c392d741fea0f13a80ea43b9c3986d88e /map
parent5ec42868508a0f2dc2f82fea19ae478fa274924b (diff)
[qt] Simple search by viewport
Diffstat (limited to 'map')
-rw-r--r--map/framework.cpp26
-rw-r--r--map/framework.hpp5
2 files changed, 31 insertions, 0 deletions
diff --git a/map/framework.cpp b/map/framework.cpp
index c8143fb3ba..12ee82438c 100644
--- a/map/framework.cpp
+++ b/map/framework.cpp
@@ -1056,4 +1056,30 @@ void FrameWork<TModel>::AddRedrawCommandSure()
UpdateNow();
}
+ class SearchProcessor
+ {
+ string const & m_text;
+ SearchCallbackT & m_callback;
+
+ public:
+ SearchProcessor(string const & textToSearch, SearchCallbackT & callback)
+ : m_text(textToSearch), m_callback(callback) {}
+ bool operator() (FeatureType const & f) const
+ {
+ // @TODO search for all languages
+ string name;
+ f.GetName(name);
+ if (!name.empty() && name.find(m_text) != string::npos)
+ m_callback(name, f.GetLimitRect(16)); //@TODO hardcoded scale
+ return true;
+ }
+ };
+
+ template<typename TModel>
+ void FrameWork<TModel>::Search(string const & text, SearchCallbackT callback) const
+ {
+ SearchProcessor doClass(text, callback);
+ m_model.ForEachFeature(m_navigator.Screen().GlobalRect(), doClass);
+ }
+
template class FrameWork<model::FeaturesFetcher>;
diff --git a/map/framework.hpp b/map/framework.hpp
index 9265d1783b..58f8cf3803 100644
--- a/map/framework.hpp
+++ b/map/framework.hpp
@@ -51,6 +51,8 @@ class redraw_operation_cancelled {};
struct BenchmarkRectProvider;
+typedef boost::function<void (string const &, m2::RectD const &)> SearchCallbackT;
+
namespace fwork
{
class DrawProcessor
@@ -218,6 +220,9 @@ public:
public:
+ /// @note Stop search if text is empty
+ void Search(string const & text, SearchCallbackT callback) const;
+
void SetMaxWorldRect();
void UpdateNow();
void Invalidate();