libosmscout 1.1.1
Loading...
Searching...
No Matches
SearchModule.h
Go to the documentation of this file.
1#ifndef OSMSCOUT_CLIENT_QT_SEARCHMODULE_H
2#define OSMSCOUT_CLIENT_QT_SEARCHMODULE_H
3
4/*
5 OSMScout - a Qt backend for libosmscout and libosmscout-map
6 Copyright (C) 2017 Lukas Karas
7
8 This library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Lesser General Public
10 License as published by the Free Software Foundation; either
11 version 2.1 of the License, or (at your option) any later version.
12
13 This library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public
19 License along with this library; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 */
22
23#include <osmscoutclient/DBThread.h>
24
26
27#ifdef OSMSCOUT_HAVE_LIB_MARISA
29#endif
30
32
33#include <QObject>
34#include <QThread>
35#include <QRunnable>
36#include <QElapsedTimer>
37
38namespace osmscout {
39
40class SearchModule;
41
45class OSMSCOUT_CLIENT_QT_API SearchRunnable : public QRunnable {
46
47protected:
49 DBInstanceRef db;
53 int limit;
55 std::map<osmscout::FileOffset,osmscout::AdminRegionRef> adminRegionMap;
56 std::promise<bool> promise;
57
58public:
60 DBInstanceRef &db,
61 const QString &searchPattern,
62 int limit,
64
65 std::future<bool> getFuture();
66
67protected:
68 bool GetObjectDetails(const osmscout::ObjectFileRef& object,
69 const std::string &searchKey,
70 QString &typeName,
71 QString &name,
72 QString &altName,
73 osmscout::GeoCoord& coordinates,
74 osmscout::GeoBox& bbox);
75
76 bool GetObjectDetails(const std::vector<osmscout::ObjectFileRef>& objects,
77 const std::string &searchKey,
78 QString &typeName,
79 QString &name,
80 QString &altName,
81 osmscout::GeoCoord& coordinates,
82 osmscout::GeoBox& bbox);
83
84 void GetObjectNames(const FeatureValueBuffer &features,
85 QString &typeName,
86 QString &name,
87 QString &altName);
88};
89
94
95private:
96 AdminRegionInfoRef defaultRegionInfo;
97
98public:
100 DBInstanceRef &db,
101 const QString &searchPattern,
102 int limit,
104 AdminRegionInfoRef &defaultRegion);
105
106 void run() override;
107
108private:
109 bool SearchLocations(DBInstanceRef &db,
110 const QString &searchPattern,
111 const osmscout::AdminRegionRef &defaultRegion,
112 int limit,
114 std::map<osmscout::FileOffset,osmscout::AdminRegionRef> &adminRegionMap);
115
116 bool BuildLocationEntry(const osmscout::LocationSearchResult::Entry &entry,
117 std::map<osmscout::FileOffset,osmscout::AdminRegionRef> &adminRegionMap,
118 QList<LocationEntry> &locations);
119};
120
125
126public:
128 DBInstanceRef &db,
129 const QString &searchPattern,
130 int limit,
132
133 void run() override;
134
135private:
136 bool FreeTextSearch(DBInstanceRef &db,
137 const QString &searchPattern,
138 int limit,
139 std::map<osmscout::FileOffset,osmscout::AdminRegionRef> &adminRegionMap);
140
148 bool BuildLocationEntry(const osmscout::ObjectFileRef& object,
149 const std::string &searchKey,
150 std::map<osmscout::FileOffset,osmscout::AdminRegionRef> &adminRegionMap,
151 QList<LocationEntry> &locations);
152};
153
158 Q_OBJECT
159
160private:
161 QThread *thread;
162 DBThreadRef dbThread;
163 LookupModule *lookupModule;
164
165signals:
166 void searchResult(const QString searchPattern, const QList<LocationEntry>);
167 void searchFinished(const QString searchPattern, bool error);
168
169public slots:
170
186 void SearchForLocations(const QString searchPattern,
187 int limit,
188 osmscout::GeoCoord,
189 AdminRegionInfoRef defaultRegion,
190 osmscout::BreakerRef breaker);
191
192public:
193 SearchModule(QThread *thread,DBThreadRef dbThread,LookupModule *lookupModule);
194 virtual ~SearchModule();
195
196};
197
198}
199
200#endif /* OSMSCOUT_CLIENT_QT_SEARCHMODULE_H */
#define OSMSCOUT_CLIENT_QT_API
Definition ClientQtImportExport.h:45
FreeTextSearchRunnable(SearchModule *searchModule, DBInstanceRef &db, const QString &searchPattern, int limit, osmscout::BreakerRef &breaker)
Definition LocationService.h:237
Definition LookupModule.h:47
SearchLocationsRunnable(SearchModule *searchModule, DBInstanceRef &db, const QString &searchPattern, int limit, osmscout::BreakerRef &breaker, AdminRegionInfoRef &defaultRegion)
Definition SearchModule.h:157
void searchResult(const QString searchPattern, const QList< LocationEntry >)
void SearchForLocations(const QString searchPattern, int limit, osmscout::GeoCoord, AdminRegionInfoRef defaultRegion, osmscout::BreakerRef breaker)
SearchModule(QThread *thread, DBThreadRef dbThread, LookupModule *lookupModule)
void searchFinished(const QString searchPattern, bool error)
SearchRunnable(SearchModule *searchModule, DBInstanceRef &db, const QString &searchPattern, int limit, osmscout::BreakerRef &breaker)
SearchModule * searchModule
Definition SearchModule.h:48
std::map< osmscout::FileOffset, osmscout::AdminRegionRef > adminRegionMap
Definition SearchModule.h:55
std::promise< bool > promise
Definition SearchModule.h:56
bool GetObjectDetails(const osmscout::ObjectFileRef &object, const std::string &searchKey, QString &typeName, QString &name, QString &altName, osmscout::GeoCoord &coordinates, osmscout::GeoBox &bbox)
QString searchPattern
Definition SearchModule.h:52
NameFeatureValueReader nameReader
Definition SearchModule.h:50
std::future< bool > getFuture()
void GetObjectNames(const FeatureValueBuffer &features, QString &typeName, QString &name, QString &altName)
NameAltFeatureValueReader altNameReader
Definition SearchModule.h:51
bool GetObjectDetails(const std::vector< osmscout::ObjectFileRef > &objects, const std::string &searchKey, QString &typeName, QString &name, QString &altName, osmscout::GeoCoord &coordinates, osmscout::GeoBox &bbox)
int limit
Definition SearchModule.h:53
osmscout::BreakerRef breaker
Definition SearchModule.h:54
DBInstanceRef db
Definition SearchModule.h:49
Definition Area.h:39
FeatureValueReader< NameFeature, NameFeatureValue > NameFeatureValueReader
Definition NameFeature.h:97
std::shared_ptr< Breaker > BreakerRef
Definition Breaker.h:64
FeatureValueReader< NameAltFeature, NameAltFeatureValue > NameAltFeatureValueReader
Definition NameAltFeature.h:97
std::shared_ptr< AdminRegion > AdminRegionRef
Definition Location.h:83