1 | /* |
2 | SPDX-FileCopyrightText: 2020-2023 Alexander Lohnau <alexander.lohnau@gmx.de> |
3 | SPDX-License-Identifier: LGPL-2.0-or-later |
4 | */ |
5 | #include "abstractrunner.h" |
6 | #include "runnersyntax.h" |
7 | #include <QReadWriteLock> |
8 | #include <QRegularExpression> |
9 | #include <optional> |
10 | |
11 | namespace KRunner |
12 | { |
13 | class AbstractRunnerPrivate |
14 | { |
15 | public: |
16 | explicit AbstractRunnerPrivate(AbstractRunner *r, const KPluginMetaData &data) |
17 | : runnerDescription(data) |
18 | , translatedName(data.name()) |
19 | , runner(r) |
20 | , minLetterCount(data.value(QStringLiteral("X-Plasma-Runner-Min-Letter-Count" ), defaultValue: 0)) |
21 | , hasUniqueResults(data.value(QStringLiteral("X-Plasma-Runner-Unique-Results" ), defaultValue: false)) |
22 | , hasWeakResults(data.value(QStringLiteral("X-Plasma-Runner-Weak-Results" ), defaultValue: false)) |
23 | { |
24 | if (const QString regexStr = data.value(QStringLiteral("X-Plasma-Runner-Match-Regex" )); !regexStr.isEmpty()) { |
25 | matchRegex = QRegularExpression(regexStr); |
26 | hasMatchRegex = matchRegex.isValid() && !matchRegex.pattern().isEmpty(); |
27 | } |
28 | } |
29 | |
30 | QReadWriteLock lock; |
31 | const KPluginMetaData runnerDescription; |
32 | // We can easily call this a few hundred times for a few queries. Thus just reuse the value and not do a lookup of the translated string every time |
33 | const QString translatedName; |
34 | const AbstractRunner *runner; |
35 | QList<RunnerSyntax> syntaxes; |
36 | std::optional<bool> suspendMatching; |
37 | int minLetterCount = 0; |
38 | QRegularExpression matchRegex; |
39 | bool hasMatchRegex = false; |
40 | const bool hasUniqueResults = false; |
41 | const bool hasWeakResults = false; |
42 | }; |
43 | } |
44 | |