LeechCraft 0.6.70-17609-g3dde4097dd
Modular cross-platform feature rich live environment.
Loading...
Searching...
No Matches
ianemitter.h
Go to the documentation of this file.
1/**********************************************************************
2 * LeechCraft - modular cross-platform feature rich internet client.
3 * Copyright (C) 2006-2014 Georg Rudoy
4 *
5 * Distributed under the Boost Software License, Version 1.0.
6 * (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7 **********************************************************************/
8
9#pragma once
10
11#include <variant>
12#include <QtPlugin>
13#include <QVariant>
14#include <QStringList>
15
16namespace LC::AN
17{
28 struct FieldData
29 {
35 QString ID_;
36
41 QString Name_;
42
48 QString Description_;
49
59 QMetaType::Type Type_ = QMetaType::UnknownType;
60
67 QStringList EventTypes_;
68
78 QVariantList AllowedValues_ = {};
79 };
80
84 {
87 bool IsSet_;
88
89 auto operator<=> (const BoolFieldValue&) const = default;
90 };
91
95 {
99
103 {
106 OGreater = 0x01,
107
110 OLess = 0x02,
111
114 OEqual = 0x04
115 };
116
117 Q_DECLARE_FLAGS (Operations, Operation)
118
119
123 Operations Ops_;
124
125 bool operator== (const IntFieldValue&) const = default;
126 };
127
129 {
130 QString Pattern_;
131 bool operator== (const Substring&) const = default;
132 };
133
134 struct Wildcard
135 {
136 QString Pattern_;
137 QRegularExpression Compiled_ = QRegularExpression::fromWildcard (Pattern_);
138
139 bool operator== (const Wildcard&) const = default;
140 };
141
142 struct StringMatcher : std::variant<Substring, Wildcard, QRegularExpression>
143 {
144 using variant::variant;
145 };
146
150 {
154
161
168 StringFieldValue (QRegularExpression rx, bool contains)
169 : Rx_ { std::move (rx) }
170 , Contains_ { contains }
171 {
172 }
173
184 StringFieldValue (const QString& str, bool contains = true)
185 : Rx_ { Substring { str } }
186 , Contains_ { contains }
187 {
188 }
189
190 bool operator== (const StringFieldValue&) const = default;
191 };
192
195 using FieldValue = std::variant<BoolFieldValue, IntFieldValue, StringFieldValue>;
196}
197
212class Q_DECL_EXPORT IANEmitter
213{
214public:
215 virtual ~IANEmitter () = default;
216
233};
234
235Q_DECLARE_INTERFACE (IANEmitter, "org.Deviant.LeechCraft.IANEmitter/1.0")
236Q_DECLARE_METATYPE (LC::AN::FieldData)
239
240Q_DECLARE_OPERATORS_FOR_FLAGS (LC::AN::IntFieldValue::Operations)
Interface for plugins emitting AdvancedNotifications entries.
Definition ianemitter.h:213
virtual ~IANEmitter()=default
virtual QList< LC::AN::FieldData > GetANFields() const =0
Returns the list of additional fields.
auto operator==(const T &left, const T &right)
Definition common.h:38
Q_DECLARE_FLAGS(NotifyFlags, NotifyFlag)
std::variant< BoolFieldValue, IntFieldValue, StringFieldValue > FieldValue
A combination of all possible descriptions.
Definition ianemitter.h:195
Definition constants.h:15
Describes a field with boolean values.
Definition ianemitter.h:84
bool IsSet_
Whether the field should be set.
Definition ianemitter.h:87
auto operator<=>(const BoolFieldValue &) const =default
A single additional AdvancedNotifications field.
Definition ianemitter.h:29
QString ID_
The field ID.
Definition ianemitter.h:35
QStringList EventTypes_
The types of the event that contain this field.
Definition ianemitter.h:67
QMetaType::Type Type_
The type of this field.
Definition ianemitter.h:59
QString Name_
The name of the field.
Definition ianemitter.h:41
QString Description_
The description of the field.
Definition ianemitter.h:48
QVariantList AllowedValues_
The allowed values of this field.
Definition ianemitter.h:78
Describes a field with integer values.
Definition ianemitter.h:95
int Boundary_
The boundary of the field.
Definition ianemitter.h:98
Operation
Describes the elementary semantics of Boundary_.
Definition ianemitter.h:103
@ OGreater
The value should be greater than Boundary_.
Definition ianemitter.h:106
@ OEqual
The value should be equal to Boundary_.
Definition ianemitter.h:114
@ OLess
The value should be less than Boundary_.
Definition ianemitter.h:110
Operations Ops_
Describe the semantics of Boundary_.
Definition ianemitter.h:123
bool operator==(const IntFieldValue &) const =default
StringMatcher Rx_
The pattern the values should (not) match.
Definition ianemitter.h:153
StringFieldValue(const QString &str, bool contains=true)
Constructs the field matcher for the given str.
Definition ianemitter.h:184
StringFieldValue(QRegularExpression rx, bool contains)
Constructs the field matcher.
Definition ianemitter.h:168
bool Contains_
Whether the values should match or not match Rx_.
Definition ianemitter.h:160
QRegularExpression Compiled_
Definition ianemitter.h:137
Q_DECLARE_METATYPE(QVariantList *)