QGIS API Documentation 3.39.0-Master (3aed037ce22)
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
41 QgsLocatorResult() = default;
42
46 QgsLocatorResult( QgsLocatorFilter *filter, const QString &displayString, const QVariant &userData = QVariant() )
47 : filter( filter )
48 , displayString( displayString )
49 , mUserData( userData )
50 {}
51
57 QVariant userData() const SIP_PYNAME( _userData );
58
64 void setUserData( const QVariant &userData );
65
69 QgsLocatorFilter *filter = nullptr;
70
74 QString displayString;
75
79 QString description;
80
84 QIcon icon;
85
89 double score = 0.5;
90
98 QString group;
99
106 struct CORE_EXPORT ResultAction
107 {
108 public:
109
110 ResultAction() = default;
111
118 ResultAction( int id, QString text, QString iconPath = QString() )
119 : id( id )
120 , text( text )
121 , iconPath( iconPath )
122 {}
123 int id = -1;
124 QString text;
125 QString iconPath;
126 };
127
134 QList<QgsLocatorResult::ResultAction> actions;
135
136 private:
137
141 QVariant mUserData;
142
143
144};
145
147
148
149
157class CORE_EXPORT QgsLocatorFilter : public QObject
158{
159 Q_OBJECT
160
161 public:
162
165 {
170 Lowest
171 };
172 Q_ENUM( Priority )
173
174
175 enum Flag SIP_ENUM_BASETYPE( IntFlag )
176 {
177 FlagFast = 1 << 1,
178 };
179 Q_DECLARE_FLAGS( Flags, Flag )
180 Q_FLAG( Flags )
181
182
185 QgsLocatorFilter( QObject *parent = nullptr );
186
191 virtual QgsLocatorFilter *clone() const = 0 SIP_FACTORY;
192
197 virtual QString name() const = 0;
198
203 virtual QString displayName() const = 0;
204
209 virtual QString description() const { return QString(); }
210
214 virtual QgsLocatorFilter::Flags flags() const;
215
220 virtual Priority priority() const { return Medium; }
221
233 virtual QString prefix() const { return QString(); }
234
242 virtual QStringList prepare( const QString &string, const QgsLocatorContext &context ) { Q_UNUSED( string ) Q_UNUSED( context ); return QStringList();}
243
259 virtual void fetchResults( const QString &string, const QgsLocatorContext &context, QgsFeedback *feedback ) = 0;
260
269 virtual void triggerResult( const QgsLocatorResult &result ) = 0;
270
277 virtual void triggerResultFromAction( const QgsLocatorResult &result, const int actionId );
278
287 virtual void clearPreviousResults() {}
288
294 bool useWithoutPrefix() const;
295
301 void setUseWithoutPrefix( bool useWithoutPrefix );
302
309 QString activePrefix() const;
310
317 void setActivePrefix( const QString &activePrefix ) SIP_SKIP;
318
325 static bool stringMatches( const QString &candidate, const QString &search );
326
332 static double fuzzyScore( const QString &candidate, const QString &search );
333
338 bool enabled() const;
339
344 void setEnabled( bool enabled );
345
350 virtual bool hasConfigWidget() const;
351
358 virtual void openConfigWidget( QWidget *parent = nullptr );
359
366 void logMessage( const QString &message, Qgis::MessageLevel level = Qgis::MessageLevel::Info );
367
373 int fetchResultsDelay() const { return mFetchResultsDelay; }
374
381 void setFetchResultsDelay( int delay ) { mFetchResultsDelay = delay; }
382
383 signals:
384
388 void finished();
389
394 void resultFetched( const QgsLocatorResult &result );
395
396 private:
397
398 bool mEnabled = true;
399 bool mUseWithoutPrefix = true;
400 QString mActivePrefifx = QString();
401 int mFetchResultsDelay = 0;
402
403};
404
407
408
409#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.
QFlags< Flag > Flags
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.
QgsLocatorResult()=default
QgsLocatorResult(QgsLocatorFilter *filter, const QString &displayString, const QVariant &userData=QVariant())
Constructor for QgsLocatorResult.
#define SIP_ENUM_BASETYPE(type)
Definition qgis_sip.h:278
#define SIP_SKIP
Definition qgis_sip.h:126
#define SIP_PYNAME(name)
Definition qgis_sip.h:81
#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.