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"