File indexing completed on 2025-03-09 04:54:31

0001 /*
0002    SPDX-FileCopyrightText: 2019-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "dkimrulewidget.h"
0008 #include "dkimmanagerulescombobox.h"
0009 #include <KLocalizedString>
0010 #include <QCheckBox>
0011 #include <QFormLayout>
0012 #include <QLineEdit>
0013 #include <QSpinBox>
0014 
0015 using namespace MessageViewer;
0016 DKIMRuleWidget::DKIMRuleWidget(QWidget *parent)
0017     : QWidget(parent)
0018     , mEnabled(new QCheckBox(i18n("Enabled"), this))
0019     , mDomain(new QLineEdit(this))
0020     , mSignatureDomainIdentifier(new QLineEdit(this))
0021     , mFrom(new QLineEdit(this))
0022     , mListId(new QLineEdit(this))
0023     , mPriority(new QSpinBox(this))
0024     , mRuleType(new DKIMManageRulesComboBox(this))
0025 {
0026     auto layout = new QFormLayout(this);
0027     layout->setObjectName(QLatin1StringView("layout"));
0028     layout->setContentsMargins({});
0029 
0030     mEnabled->setObjectName(QLatin1StringView("enabled"));
0031     mEnabled->setChecked(true);
0032     layout->addWidget(mEnabled);
0033 
0034     mDomain->setObjectName(QLatin1StringView("domain"));
0035     mDomain->setClearButtonEnabled(true);
0036     layout->addRow(i18n("Domain:"), mDomain);
0037     connect(mDomain, &QLineEdit::textChanged, this, &DKIMRuleWidget::updateOkButton);
0038 
0039     mListId->setObjectName(QLatin1StringView("listid"));
0040     mListId->setClearButtonEnabled(true);
0041     layout->addRow(i18n("List-Id:"), mListId);
0042 
0043     mFrom->setObjectName(QLatin1StringView("from"));
0044     mFrom->setClearButtonEnabled(true);
0045     layout->addRow(i18n("From:"), mFrom);
0046     mFrom->setPlaceholderText(i18n("Use '*' to specify all emails from domain"));
0047     connect(mFrom, &QLineEdit::textChanged, this, &DKIMRuleWidget::updateOkButton);
0048 
0049     mSignatureDomainIdentifier->setObjectName(QLatin1StringView("signaturedomainidentifier"));
0050     mSignatureDomainIdentifier->setClearButtonEnabled(true);
0051     layout->addRow(i18n("SDID:"), mSignatureDomainIdentifier);
0052 
0053     mRuleType->setObjectName(QLatin1StringView("ruletype"));
0054     layout->addRow(i18n("Rule:"), mRuleType);
0055 
0056     mPriority->setObjectName(QLatin1StringView("priority"));
0057     mPriority->setMinimum(1);
0058     mPriority->setMaximum(9999);
0059     mPriority->setValue(1000); // Default Value
0060     layout->addRow(i18n("Priority:"), mPriority);
0061 }
0062 
0063 DKIMRuleWidget::~DKIMRuleWidget() = default;
0064 
0065 void DKIMRuleWidget::updateOkButton()
0066 {
0067     Q_EMIT updateOkButtonRequested(!mFrom->text().trimmed().isEmpty() && !mDomain->text().trimmed().isEmpty());
0068 }
0069 
0070 void DKIMRuleWidget::loadRule(const MessageViewer::DKIMRule &rule)
0071 {
0072     mEnabled->setChecked(rule.enabled());
0073     mDomain->setText(rule.domain());
0074     mSignatureDomainIdentifier->setText(rule.signedDomainIdentifier().join(QLatin1Char(' ')));
0075     mFrom->setText(rule.from());
0076     mListId->setText(rule.listId());
0077     mRuleType->setRuleType(rule.ruleType());
0078     mPriority->setValue(rule.priority());
0079 }
0080 
0081 MessageViewer::DKIMRule DKIMRuleWidget::rule() const
0082 {
0083     MessageViewer::DKIMRule rule;
0084     rule.setEnabled(mEnabled->isChecked());
0085     rule.setDomain(mDomain->text());
0086     rule.setSignedDomainIdentifier(mSignatureDomainIdentifier->text().split(QLatin1Char(' ')));
0087     rule.setFrom(mFrom->text());
0088     rule.setListId(mListId->text());
0089     rule.setRuleType(mRuleType->ruleType());
0090     rule.setPriority(mPriority->value());
0091     return rule;
0092 }
0093 
0094 #include "moc_dkimrulewidget.cpp"