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"