QGIS API Documentation 3.36.0-Maidenhead (09951dc0acf)
Loading...
Searching...
No Matches
qgslocatorfilter.h
Go to the documentation of this file.
1/***************************************************************************
2 qgslocatorfilter.h
3 ------------------
4 begin : May 2017
5 copyright : (C) 2017 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSLOCATORFILTER_H
19#define QGSLOCATORFILTER_H
20
21#include <QIcon>
22#include <QString>
23#include <QVariant>
24
25#include "qgis_core.h"
26#include "qgslocatorcontext.h"
27#include "qgslogger.h"
28
29class QgsFeedback;
31
37class CORE_EXPORT QgsLocatorResult
38{
39 public:
40
44 QgsLocatorResult() = default;
45
49 QgsLocatorResult( QgsLocatorFilter *filter, const QString &displayString, const QVariant &userData = QVariant() )
50 : filter( filter )
51 , displayString( displayString )
52 , mUserData( userData )
53 {}
54
60 QVariant getUserData() const;
61
67 void setUserData( QVariant userData );
68
72 QgsLocatorFilter *filter = nullptr;
73
78
82 QString description;
83
87 QIcon icon;
88
92 double score = 0.5;
93
101 QString group;
102
109 struct CORE_EXPORT ResultAction
110 {
111 public:
113 ResultAction() = default;
114
121 ResultAction( int id, QString text, QString iconPath = QString() )
122 : id( id )
123 , text( text )
124 , iconPath( iconPath )
125 {}
126 int id = -1;
127 QString text;
128 QString iconPath;
129 };
130
137 QList<QgsLocatorResult::ResultAction> actions;
138
139#ifdef SIP_RUN
140 SIP_PROPERTY( name = userData, get = getUserData, set = setUserData )
141#endif
142
143 private:
144
148 QVariant mUserData;
149
150
151};
152
154
155
156
164class CORE_EXPORT QgsLocatorFilter : public QObject
165{
166 Q_OBJECT
167
168 public:
169
172 {
177 Lowest
178 };
179 Q_ENUM( Priority )
180
181
182 enum Flag SIP_ENUM_BASETYPE( IntFlag )
183 {
184 FlagFast = 1 << 1,
185 };
186 Q_DECLARE_FLAGS( Flags, Flag )
187 Q_FLAG( Flags )
188
189
192 QgsLocatorFilter( QObject *parent = nullptr );
193
198 virtual QgsLocatorFilter *clone() const = 0 SIP_FACTORY;
199
204 virtual QString name() const = 0;
205
210 virtual QString displayName() const = 0;
211
216 virtual QString description() const { return QString(); }
217
221 virtual QgsLocatorFilter::Flags flags() const;
222
227 virtual Priority priority() const { return Medium; }
228
240 virtual QString prefix() const { return QString(); }
241
249 virtual QStringList prepare( const QString &string, const QgsLocatorContext &context ) { Q_UNUSED( string ) Q_UNUSED( context ); return QStringList();}
250
266 virtual void fetchResults( const QString &string, const QgsLocatorContext &context, QgsFeedback *feedback ) = 0;
267
276 virtual void triggerResult( const QgsLocatorResult &result ) = 0;
277
284 virtual void triggerResultFromAction( const QgsLocatorResult &result, const int actionId );
285
294 virtual void clearPreviousResults() {}
295
301 bool useWithoutPrefix() const;
302
308 void setUseWithoutPrefix( bool useWithoutPrefix );
309
316 QString activePrefix() const;
317
324 void setActivePrefix( const QString &activePrefix ) SIP_SKIP;
325
332 static bool stringMatches( const QString &candidate, const QString &search );
333
339 static double fuzzyScore( const QString &candidate, const QString &search );
340
345 bool enabled() const;
346
351 void setEnabled( bool enabled );
352
357 virtual bool hasConfigWidget() const;
358
365 virtual void openConfigWidget( QWidget *parent = nullptr );
366
373 void logMessage( const QString &message, Qgis::MessageLevel level = Qgis::MessageLevel::Info );
374
380 int fetchResultsDelay() const { return mFetchResultsDelay; }
381
388 void setFetchResultsDelay( int delay ) { mFetchResultsDelay = delay; }
389
390 signals:
391
395 void finished();
396
401 void resultFetched( const QgsLocatorResult &result );
402
403 private:
404
405 bool mEnabled = true;
406 bool mUseWithoutPrefix = true;
407 QString mActivePrefifx = QString();
408 int mFetchResultsDelay = 0;
409
410};
411
413Q_DECLARE_OPERATORS_FOR_FLAGS( QgsLocatorFilter::Flags )
414
415
416#endif // QGSLOCATORFILTER_H
MessageLevel
Level for messages This will be used both for message log and message bar in application.
Definition qgis.h:99
@ Info
Information message.
Definition qgis.h:100
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition qgsfeedback.h:44
Encapsulates the properties relating to the context of a locator search.
Abstract base class for filters which collect locator results.
virtual QString prefix() const
Returns the search prefix character(s) for this filter.
Flag
Flags for locator behavior.
int fetchResultsDelay() const
Returns the delay (in milliseconds) for the filter to wait prior to fetching results.
Priority
Filter priority. Controls the order of results in the locator.
@ Low
Low priority.
@ Highest
Highest priority.
@ Medium
Medium priority.
@ High
High priority.
void setFetchResultsDelay(int delay)
Sets a delay (in milliseconds) for the filter to wait prior to fetching results.
virtual QString description() const
Returns a translated, description for the filter.
void finished()
Emitted when the filter finishes fetching results.
virtual QString displayName() const =0
Returns a translated, user-friendly name for the filter.
virtual Priority priority() const
Returns the priority for the filter, which controls how results are ordered in the locator.
virtual QString name() const =0
Returns the unique name for the filter.
virtual void triggerResult(const QgsLocatorResult &result)=0
Triggers a filter result from this filter.
virtual QgsLocatorFilter * clone() const =0
Creates a clone of the filter.
virtual void clearPreviousResults()
This method will be called on main thread on the original filter (not a clone) before fetching result...
void resultFetched(const QgsLocatorResult &result)
Should be emitted by filters whenever they encounter a matching result during within their fetchResul...
virtual void fetchResults(const QString &string, const QgsLocatorContext &context, QgsFeedback *feedback)=0
Retrieves the filter results for a specified search string.
virtual QStringList prepare(const QString &string, const QgsLocatorContext &context)
Prepares the filter instance for an upcoming search for the specified string.
Encapsulates properties of an individual matching result found by a QgsLocatorFilter.
QList< QgsLocatorResult::ResultAction > actions
Additional actions to be used in a locator widget for the given result.
QString description
Descriptive text for result.
QgsLocatorResult()=default
Constructor for QgsLocatorResult.
QString displayString
String displayed for result.
QString group
Group the results by categories If left as empty string, this means that results are all shown withou...
QIcon icon
Icon for result.
QgsLocatorResult(QgsLocatorFilter *filter, const QString &displayString, const QVariant &userData=QVariant())
Constructor for QgsLocatorResult.
#define SIP_PROPERTY(name, getter, setter)
Definition qgis_sip.h:283
#define SIP_ENUM_BASETYPE(type)
Definition qgis_sip.h:278
#define SIP_SKIP
Definition qgis_sip.h:126
#define SIP_FACTORY
Definition qgis_sip.h:76
Q_DECLARE_METATYPE(QgsDatabaseQueryLogEntry)
Q_DECLARE_OPERATORS_FOR_FLAGS(QgsTextRendererUtils::CurvedTextFlags)
The ResultAction stores basic information for additional actions to be used in a locator widget for t...
ResultAction(int id, QString text, QString iconPath=QString())
Constructor for ResultAction The id used to recognized the action when the result is triggered.
ResultAction()=default
Constructor for ResultAction.