|
20 | 20 | #include <QtConcurrent> |
21 | 21 | #include <functional> |
22 | 22 |
|
| 23 | +const QList<QString> QgsLocator::CORE_FILTERS = QList<QString>() << QStringLiteral( "actions" ) |
| 24 | + << QStringLiteral( "processing_alg" ) |
| 25 | + << QStringLiteral( "layertree" ) |
| 26 | + << QStringLiteral( "layouts" ) |
| 27 | + << QStringLiteral( "features" ) |
| 28 | + << QStringLiteral( "calculator" ) |
| 29 | + << QStringLiteral( "bookmarks" ); |
| 30 | + |
23 | 31 | QgsLocator::QgsLocator( QObject *parent ) |
24 | 32 | : QObject( parent ) |
25 | 33 | { |
@@ -52,32 +60,48 @@ QMap<QString, QgsLocatorFilter *> QgsLocator::prefixedFilters() const |
52 | 60 | return mPrefixedFilters; |
53 | 61 | } |
54 | 62 |
|
| 63 | +void QgsLocator::setCustomPrefix( QgsLocatorFilter *filter, const QString &prefix ) |
| 64 | +{ |
| 65 | + if ( filter ) |
| 66 | + { |
| 67 | + QgsSettings().setValue( QStringLiteral( "locator_filters/prefix_%1" ).arg( filter->name() ), prefix, QgsSettings::Section::Gui ); |
| 68 | + QString oldPrefix = mPrefixedFilters.key( filter ); |
| 69 | + if ( !oldPrefix.isEmpty() ) |
| 70 | + mPrefixedFilters.remove( oldPrefix ); |
| 71 | + |
| 72 | + mPrefixedFilters.insert( prefix, filter ); |
| 73 | + } |
| 74 | +} |
| 75 | + |
| 76 | +QString QgsLocator::customPrefix( QgsLocatorFilter *filter ) const |
| 77 | +{ |
| 78 | + return mPrefixedFilters.key( filter, QString() ); |
| 79 | +} |
| 80 | + |
55 | 81 | void QgsLocator::registerFilter( QgsLocatorFilter *filter ) |
56 | 82 | { |
57 | 83 | mFilters.append( filter ); |
58 | 84 | filter->setParent( this ); |
59 | 85 |
|
60 | | - if ( !filter->prefix().isEmpty() ) |
| 86 | + // restore settings |
| 87 | + QgsSettings settings; |
| 88 | + bool enabled = settings.value( QStringLiteral( "locator_filters/enabled_%1" ).arg( filter->name() ), true, QgsSettings::Section::Gui ).toBool(); |
| 89 | + bool byDefault = settings.value( QStringLiteral( "locator_filters/default_%1" ).arg( filter->name() ), filter->useWithoutPrefix(), QgsSettings::Section::Gui ).toBool(); |
| 90 | + QString customPrefix = settings.value( QStringLiteral( "locator_filters/prefix_%1" ).arg( filter->name() ), filter->prefix(), QgsSettings::Section::Gui ).toString(); |
| 91 | + |
| 92 | + if ( !customPrefix.isEmpty() ) |
61 | 93 | { |
62 | | - if ( filter->name() == QStringLiteral( "actions" ) || filter->name() == QStringLiteral( "processing_alg" ) |
63 | | - || filter->name() == QStringLiteral( "layertree" ) || filter->name() == QStringLiteral( "layouts" ) |
64 | | - || filter->name() == QStringLiteral( "features" ) || filter->name() == QStringLiteral( "calculator" ) |
65 | | - || filter->name() == QStringLiteral( "bookmarks" ) ) |
| 94 | + if ( CORE_FILTERS.contains( filter->name() ) ) |
66 | 95 | { |
67 | 96 | //inbuilt filter, no prefix check |
68 | | - mPrefixedFilters.insert( filter->prefix(), filter ); |
| 97 | + mPrefixedFilters.insert( customPrefix, filter ); |
69 | 98 | } |
70 | | - else if ( filter->prefix().length() >= 3 ) |
| 99 | + else if ( customPrefix.length() >= 3 || customPrefix != filter->prefix() ) |
71 | 100 | { |
72 | | - mPrefixedFilters.insert( filter->prefix(), filter ); |
| 101 | + mPrefixedFilters.insert( customPrefix, filter ); |
73 | 102 | } |
74 | 103 | } |
75 | 104 |
|
76 | | - // restore settings |
77 | | - QgsSettings settings; |
78 | | - bool enabled = settings.value( QStringLiteral( "locator_filters/enabled_%1" ).arg( filter->name() ), true, QgsSettings::Section::Gui ).toBool(); |
79 | | - bool byDefault = settings.value( QStringLiteral( "locator_filters/default_%1" ).arg( filter->name() ), filter->useWithoutPrefix(), QgsSettings::Section::Gui ).toBool(); |
80 | | - |
81 | 105 | filter->setEnabled( enabled ); |
82 | 106 | filter->setUseWithoutPrefix( byDefault ); |
83 | 107 | } |
|
0 commit comments