digiKam
Loading...
Searching...
No Matches
rule.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2010-05-01
7 * Description : an abstract rule class
8 *
9 * SPDX-FileCopyrightText: 2009-2012 by Andi Clemens <andi dot clemens at gmail dot com>
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 * ============================================================ */
14
15#pragma once
16
17// Local includes
18
19#include "parseresults.h"
20#include "parsesettings.h"
21#include "token.h"
22
23class QAction;
24class QMenu;
25class QPushButton;
26class QString;
27
28namespace Digikam
29{
30
31class Rule : public QObject
32{
33 Q_OBJECT
34
35public:
36
38 {
39 Action = 0,
40 Dialog
41 };
42
43public:
44
45 explicit Rule(const QString& name);
46 Rule(const QString& name, const QString& icon);
47 ~Rule() override;
48
69 QRegularExpression& regExp() const;
70
71 QString description() const;
72 QPixmap icon(Rule::IconType type = Rule::Action) const;
73
77 TokenList& tokens() const;
78
86 QPushButton* registerButton(QWidget* parent);
87
95 QAction* registerMenu(QMenu* parent);
96
100 bool useTokenMenu() const;
101
106 bool isValid() const;
107
111 virtual void reset();
112
119 static QString escapeToken(const QString& token);
120
122
123Q_SIGNALS:
124
125 void signalTokenTriggered(const QString&);
126
127protected:
128
135 virtual QString parseOperation(ParseSettings& settings,
136 const QRegularExpressionMatch& match) = 0;
137
145 bool addToken(const QString& id, const QString& description, const QString& actionName = QString());
146
147 void setRegExp(const QRegularExpression& regExp);
148 void setDescription(const QString& desc);
149 void setIcon(const QString& pixmap);
150
157 void setUseTokenMenu(bool value);
158
159protected Q_SLOTS:
160
161 virtual void slotTokenTriggered(const QString&);
162
163private:
164
165 QPushButton* createButton(const QString& name, const QIcon& icon);
166
167private:
168
169 // Disable
170 Rule(QObject*) = delete;
171 Rule(const Rule&) = delete;
172 Rule& operator=(const Rule&) = delete;
173
174private:
175
176 class Private;
177 Private* const d = nullptr;
178};
179
180typedef QList<Rule*> RulesList;
181
182} // namespace Digikam
Definition parseresults.h:27
Definition parsesettings.h:33
Definition rule.h:32
bool addToken(const QString &id, const QString &description, const QString &actionName=QString())
Definition rule.cpp:191
virtual void slotTokenTriggered(const QString &)
Definition rule.cpp:228
void signalTokenTriggered(const QString &)
void setUseTokenMenu(bool value)
Definition rule.cpp:213
TokenList & tokens() const
Definition rule.cpp:223
QAction * registerMenu(QMenu *parent)
Definition rule.cpp:159
QPixmap icon(Rule::IconType type=Rule::Action) const
Definition rule.cpp:74
void setRegExp(const QRegularExpression &regExp)
Definition rule.cpp:111
virtual QString parseOperation(ParseSettings &settings, const QRegularExpressionMatch &match)=0
QRegularExpression & regExp() const
Definition rule.cpp:106
virtual void reset()
Definition rule.cpp:242
static QString escapeToken(const QString &token)
Definition rule.cpp:246
IconType
Definition rule.h:38
@ Dialog
Definition rule.h:40
@ Action
Definition rule.h:39
bool isValid() const
Definition rule.cpp:233
QPushButton * registerButton(QWidget *parent)
Definition rule.cpp:128
~Rule() override
Definition rule.cpp:61
void setIcon(const QString &pixmap)
Definition rule.cpp:69
void setDescription(const QString &desc)
Definition rule.cpp:96
ParseResults parse(ParseSettings &settings)
Definition rule.cpp:263
bool useTokenMenu() const
Definition rule.cpp:218
QString description() const
Definition rule.cpp:101
qulonglong value
Definition itemviewutilities.cpp:585
Definition datefolderview.cpp:34
QList< Token * > TokenList
Definition token.h:109
QList< Rule * > RulesList
Definition rule.h:180