8#include "rulewidgethandlermanager.h"
9#include "attachmentwidgethandler.h"
10#include "daterulewidgethandler.h"
11#include "encryptionwidgethandler.h"
12#include "headersrulerwidgethandler.h"
13#include "interfaces/rulewidgethandler.h"
14#include "invitationwidgethandler.h"
15#include "messagerulewidgethandler.h"
16#include "numericdoublerulewidgethandler.h"
17#include "numericrulewidgethandler.h"
18#include "statusrulewidgethandler.h"
19#include "tagrulewidgethandler.h"
20#include "textrulerwidgethandler.h"
22#include <MessageViewer/Stl_Util>
25#include <QStackedWidget>
35MailCommon::RuleWidgetHandlerManager::RuleWidgetHandlerManager()
37 registerHandler(
new MailCommon::TagRuleWidgetHandler());
38 registerHandler(
new MailCommon::DateRuleWidgetHandler());
39 registerHandler(
new MailCommon::NumericRuleWidgetHandler());
40 registerHandler(
new MailCommon::StatusRuleWidgetHandler());
41 registerHandler(
new MailCommon::MessageRuleWidgetHandler());
42 registerHandler(
new MailCommon::NumericDoubleRuleWidgetHandler());
43 registerHandler(
new MailCommon::HeadersRuleWidgetHandler());
44 registerHandler(
new MailCommon::EncryptionWidgetHandler());
45 registerHandler(
new MailCommon::AttachmentWidgetHandler());
46 registerHandler(
new MailCommon::InvitationWidgetHandler());
49 registerHandler(
new MailCommon::TextRuleWidgetHandler());
52MailCommon::RuleWidgetHandlerManager::~RuleWidgetHandlerManager()
54 for_each(mHandlers.begin(), mHandlers.end(), MessageViewer::DeleteAndSetToZero<RuleWidgetHandler>());
57void MailCommon::RuleWidgetHandlerManager::setIsAkonadiSearch(
bool isBalooSearch)
59 mIsBalooSearch = isBalooSearch;
62void MailCommon::RuleWidgetHandlerManager::registerHandler(
const RuleWidgetHandler *handler)
67 unregisterHandler(handler);
68 mHandlers.push_back(handler);
71void MailCommon::RuleWidgetHandlerManager::unregisterHandler(
const RuleWidgetHandler *handler)
74 mHandlers.erase(
remove(mHandlers.begin(), mHandlers.end(), handler), mHandlers.end());
83int childCount(
const QObject *parent,
const QString &objName)
87 for (QObject *item : list) {
88 if (item->objectName() == objName) {
96void MailCommon::RuleWidgetHandlerManager::createWidgets(QStackedWidget *functionStack, QStackedWidget *valueStack,
const QObject *receiver)
const
98 const_iterator
end(mHandlers.constEnd());
99 for (const_iterator it = mHandlers.constBegin(); it != end; ++it) {
100 QWidget *w =
nullptr;
101 for (
int i = 0; (w = (*it)->createFunctionWidget(i, functionStack, receiver, mIsBalooSearch)); ++i) {
102 if (childCount(functionStack, w->
objectName()) < 2) {
111 for (
int i = 0; (w = (*it)->createValueWidget(i, valueStack, receiver)); ++i) {
112 if (childCount(valueStack, w->
objectName()) < 2) {
124SearchRule::Function MailCommon::RuleWidgetHandlerManager::function(
const QByteArray &field,
const QStackedWidget *functionStack)
const
126 const_iterator
end(mHandlers.constEnd());
127 for (const_iterator it = mHandlers.constBegin(); it != end; ++it) {
129 if (func != SearchRule::FuncNone) {
133 return SearchRule::FuncNone;
136QString MailCommon::RuleWidgetHandlerManager::value(
const QByteArray &field,
const QStackedWidget *functionStack,
const QStackedWidget *valueStack)
const
138 const_iterator
end(mHandlers.constEnd());
139 for (const_iterator it = mHandlers.constBegin(); it != end; ++it) {
140 const QString val = (*it)->value(field, functionStack, valueStack);
148QString MailCommon::RuleWidgetHandlerManager::prettyValue(
const QByteArray &field,
const QStackedWidget *functionStack,
const QStackedWidget *valueStack)
const
150 const_iterator
end(mHandlers.constEnd());
151 for (const_iterator it = mHandlers.constBegin(); it != end; ++it) {
152 const QString val = (*it)->prettyValue(field, functionStack, valueStack);
160void MailCommon::RuleWidgetHandlerManager::reset(QStackedWidget *functionStack, QStackedWidget *valueStack)
const
162 const_iterator
end(mHandlers.constEnd());
163 for (const_iterator it = mHandlers.constBegin(); it != end; ++it) {
164 (*it)->reset(functionStack, valueStack);
166 update(
"", functionStack, valueStack);
169void MailCommon::RuleWidgetHandlerManager::setRule(QStackedWidget *functionStack, QStackedWidget *valueStack,
const SearchRule::Ptr rule)
const
172 reset(functionStack, valueStack);
173 const_iterator
end(mHandlers.constEnd());
174 for (const_iterator it = mHandlers.constBegin(); it != end; ++it) {
175 if ((*it)->setRule(functionStack, valueStack, rule, mIsBalooSearch)) {
181void MailCommon::RuleWidgetHandlerManager::update(
const QByteArray &field, QStackedWidget *functionStack, QStackedWidget *valueStack)
const
183 const_iterator
end(mHandlers.constEnd());
184 for (const_iterator it = mHandlers.constBegin(); it != end; ++it) {
185 if ((*it)->update(field, functionStack, valueStack)) {
std::shared_ptr< SearchRule > Ptr
Defines a pointer to a search rule.
Function
Describes operators for comparison of field and contents.
void update(Part *part, const QByteArray &data, qint64 dataSize)
QAction * end(const QObject *recvr, const char *slot, QObject *parent)
KIOCORE_EXPORT QStringList list(const QString &fileClass)
const QObjectList & children() const const
bool isEmpty() const const