File indexing completed on 2025-02-16 04:56:07
0001 /* 0002 SPDX-FileCopyrightText: 2017-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "vacationmailactionwidget.h" 0008 #include "autocreatescripts/autocreatescriptutil_p.h" 0009 #include "widgets/abstractselectemaillineedit.h" 0010 #include "widgets/moveimapfolderwidget.h" 0011 #include <KPluginFactory> 0012 #include <QHBoxLayout> 0013 #include <QStackedWidget> 0014 0015 using namespace KSieveUi; 0016 0017 VacationMailActionWidget::VacationMailActionWidget(QWidget *parent) 0018 : QWidget(parent) 0019 { 0020 auto mainLayout = new QHBoxLayout(this); 0021 mainLayout->setObjectName(QLatin1StringView("mainlayout")); 0022 mainLayout->setContentsMargins({}); 0023 0024 mStackedWidget = new QStackedWidget(this); 0025 mStackedWidget->setObjectName(QLatin1StringView("stackedWidget")); 0026 mainLayout->addWidget(mStackedWidget); 0027 0028 mMailActionRecipient = new QWidget(this); 0029 mMailActionRecipient->setObjectName(QLatin1StringView("mailActionRecipient")); 0030 0031 mStackedWidget->addWidget(mMailActionRecipient); 0032 0033 mMoveImapFolderWidget = AutoCreateScriptUtil::createImapFolderWidget(); 0034 connect(mMoveImapFolderWidget, &AbstractMoveImapFolderWidget::textChanged, this, &VacationMailActionWidget::wasChanged); 0035 0036 mMoveImapFolderWidget->setObjectName(QLatin1StringView("moveImapFolderWidget")); 0037 mStackedWidget->addWidget(mMoveImapFolderWidget); 0038 0039 mSelectEmailLineEdit = AutoCreateScriptUtil::createSelectEmailsWidget(); 0040 connect(mSelectEmailLineEdit, &AbstractSelectEmailLineEdit::valueChanged, this, &VacationMailActionWidget::wasChanged); 0041 mSelectEmailLineEdit->setObjectName(QLatin1StringView("selectEmailLineEdit")); 0042 mSelectEmailLineEdit->setMultiSelection(false); 0043 mStackedWidget->addWidget(mSelectEmailLineEdit); 0044 0045 mStackedWidget->setCurrentIndex(0); 0046 setEnabled(false); 0047 } 0048 0049 VacationMailActionWidget::~VacationMailActionWidget() = default; 0050 0051 void VacationMailActionWidget::setSieveImapAccountSettings(const KSieveCore::SieveImapAccountSettings &account) 0052 { 0053 mMoveImapFolderWidget->setSieveImapAccountSettings(account); 0054 } 0055 0056 void VacationMailActionWidget::mailActionChanged(KSieveCore::VacationUtils::MailAction action) 0057 { 0058 bool enable = (action == KSieveCore::VacationUtils::CopyTo || action == KSieveCore::VacationUtils::Sendto); 0059 setEnabled(enable); 0060 selectMailActionWidget(action); 0061 } 0062 0063 void VacationMailActionWidget::selectMailActionWidget(KSieveCore::VacationUtils::MailAction action) 0064 { 0065 if (action == KSieveCore::VacationUtils::CopyTo) { 0066 mStackedWidget->setCurrentWidget(mMoveImapFolderWidget); 0067 } else if (action == KSieveCore::VacationUtils::Sendto) { 0068 mStackedWidget->setCurrentWidget(mSelectEmailLineEdit); 0069 } else { 0070 mStackedWidget->setCurrentWidget(mMailActionRecipient); 0071 } 0072 } 0073 0074 void VacationMailActionWidget::setMailAction(KSieveCore::VacationUtils::MailAction action, const QString &recipient) 0075 { 0076 selectMailActionWidget(action); 0077 setText(recipient); 0078 } 0079 0080 void VacationMailActionWidget::setText(const QString &recipient) 0081 { 0082 if (mStackedWidget->currentWidget() == mMoveImapFolderWidget) { 0083 mMoveImapFolderWidget->setText(recipient); 0084 } else if (mStackedWidget->currentWidget() == mSelectEmailLineEdit) { 0085 mSelectEmailLineEdit->setText(recipient); 0086 } 0087 } 0088 0089 QString VacationMailActionWidget::mailActionRecipient(bool &valid) const 0090 { 0091 if (mStackedWidget->currentWidget() == mMoveImapFolderWidget) { 0092 return mMoveImapFolderWidget->text(); 0093 } else if (mStackedWidget->currentWidget() == mSelectEmailLineEdit) { 0094 valid = mSelectEmailLineEdit->isValid(); 0095 return mSelectEmailLineEdit->text(); 0096 } else { 0097 return {}; 0098 } 0099 } 0100 0101 #include "moc_vacationmailactionwidget.cpp"