diff --git a/src/ksieveui/vacation/autotests/vacationmailactionwidgettest.cpp b/src/ksieveui/vacation/autotests/vacationmailactionwidgettest.cpp index 95b0f75..848b665 100644 --- a/src/ksieveui/vacation/autotests/vacationmailactionwidgettest.cpp +++ b/src/ksieveui/vacation/autotests/vacationmailactionwidgettest.cpp @@ -1,95 +1,98 @@ /* Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "vacationmailactionwidgettest.h" #include "../vacationmailactionwidget.h" #include #include #include #include #include +#include QTEST_MAIN(VacationMailActionWidgetTest) VacationMailActionWidgetTest::VacationMailActionWidgetTest(QObject *parent) : QObject(parent) { } void VacationMailActionWidgetTest::shouldHaveDefaultValue() { KSieveUi::VacationMailActionWidget w; QHBoxLayout *mainLayout = w.findChild(QStringLiteral("mainlayout")); QVERIFY(mainLayout); QCOMPARE(mainLayout->margin(), 0); QStackedWidget *mStackedWidget = w.findChild(QStringLiteral("stackedWidget")); QVERIFY(mStackedWidget); - QCOMPARE(mStackedWidget->count(), 2); + QCOMPARE(mStackedWidget->count(), 3); QWidget *mMailActionRecipient = mStackedWidget->widget(0); QVERIFY(mMailActionRecipient); QLineEdit *lineEdit = dynamic_cast(mMailActionRecipient); QVERIFY(lineEdit); QCOMPARE(lineEdit->objectName(), QStringLiteral("mailActionRecipient")); QVERIFY(!lineEdit->isEnabled()); QVERIFY(lineEdit->isClearButtonEnabled()); QCOMPARE(mStackedWidget->currentIndex(), 0); QWidget *mMoveImapFolderWidget = mStackedWidget->widget(1); QVERIFY(mMoveImapFolderWidget); KSieveUi::AbstractMoveImapFolderWidget *abstractMoveImapFolderWidget = dynamic_cast(mMoveImapFolderWidget); QVERIFY(abstractMoveImapFolderWidget); QCOMPARE(abstractMoveImapFolderWidget->objectName(), QStringLiteral("moveImapFolderWidget")); + QWidget *mSelectEmailLineEdit = mStackedWidget->widget(2); + QVERIFY(mSelectEmailLineEdit); + + KSieveUi::AbstractSelectEmailLineEdit *abstractSelectEmailWidget = dynamic_cast(mSelectEmailLineEdit); + QVERIFY(abstractSelectEmailWidget); + QCOMPARE(abstractSelectEmailWidget->objectName(), QStringLiteral("selectEmailLineEdit")); + QVERIFY(w.mailActionRecipient().isEmpty()); } void VacationMailActionWidgetTest::shouldSwitchComponents() { KSieveUi::VacationMailActionWidget w; QStackedWidget *mStackedWidget = w.findChild(QStringLiteral("stackedWidget")); - QWidget *mMailActionRecipient = mStackedWidget->widget(0); - QLineEdit *lineEdit = dynamic_cast(mMailActionRecipient); - - QWidget *mMoveImapFolderWidget = mStackedWidget->widget(1); - KSieveUi::AbstractMoveImapFolderWidget *abstractMoveImapFolderWidget = dynamic_cast(mMoveImapFolderWidget); w.mailActionChanged(KSieveUi::VacationUtils::Keep); QCOMPARE(mStackedWidget->currentIndex(), 0); QVERIFY(w.mailActionRecipient().isEmpty()); QVERIFY(!w.isEnabled()); w.mailActionChanged(KSieveUi::VacationUtils::CopyTo); QCOMPARE(mStackedWidget->currentIndex(), 1); QVERIFY(w.mailActionRecipient().isEmpty()); QVERIFY(w.isEnabled()); w.mailActionChanged(KSieveUi::VacationUtils::Discard); QCOMPARE(mStackedWidget->currentIndex(), 0); QVERIFY(w.mailActionRecipient().isEmpty()); QVERIFY(!w.isEnabled()); w.mailActionChanged(KSieveUi::VacationUtils::Sendto); - QCOMPARE(mStackedWidget->currentIndex(), 0); + QCOMPARE(mStackedWidget->currentIndex(), 2); QVERIFY(w.mailActionRecipient().isEmpty()); QVERIFY(w.isEnabled()); } diff --git a/src/ksieveui/vacation/vacationmailactionwidget.cpp b/src/ksieveui/vacation/vacationmailactionwidget.cpp index a573072..48e392b 100644 --- a/src/ksieveui/vacation/vacationmailactionwidget.cpp +++ b/src/ksieveui/vacation/vacationmailactionwidget.cpp @@ -1,103 +1,115 @@ /* Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "vacationmailactionwidget.h" #include "widgets/moveimapfolderwidget.h" +#include "widgets/abstractselectemaillineedit.h" #include "autocreatescripts/autocreatescriptutil_p.h" #include #include #include #include #include using namespace KSieveUi; VacationMailActionWidget::VacationMailActionWidget(QWidget *parent) : QWidget(parent) { QHBoxLayout *mainLayout = new QHBoxLayout(this); mainLayout->setObjectName(QStringLiteral("mainlayout")); mainLayout->setMargin(0); mStackedWidget = new QStackedWidget(this); mStackedWidget->setObjectName(QStringLiteral("stackedWidget")); mainLayout->addWidget(mStackedWidget); mMailActionRecipient = new QLineEdit(this); mMailActionRecipient->setObjectName(QStringLiteral("mailActionRecipient")); mMailActionRecipient->setClearButtonEnabled(true); mStackedWidget->addWidget(mMailActionRecipient); mMoveImapFolderWidget = AutoCreateScriptUtil::createImapFolderWidget(); mMoveImapFolderWidget->setObjectName(QStringLiteral("moveImapFolderWidget")); mStackedWidget->addWidget(mMoveImapFolderWidget); + + mSelectEmailLineEdit = AutoCreateScriptUtil::createSelectEmailsWidget(); + mSelectEmailLineEdit->setObjectName(QStringLiteral("selectEmailLineEdit")); + mStackedWidget->addWidget(mSelectEmailLineEdit); + mStackedWidget->setCurrentIndex(0); setEnabled(false); } VacationMailActionWidget::~VacationMailActionWidget() { } void VacationMailActionWidget::setSieveImapAccountSettings(const KSieveUi::SieveImapAccountSettings &account) { mMoveImapFolderWidget->setSieveImapAccountSettings(account); } void VacationMailActionWidget::mailActionChanged(KSieveUi::VacationUtils::MailAction action) { bool enable = (action == VacationUtils::CopyTo || action == VacationUtils::Sendto); setEnabled(enable); selectMailActionWidget(action); } void VacationMailActionWidget::selectMailActionWidget(VacationUtils::MailAction action) { if (action == VacationUtils::CopyTo) { mStackedWidget->setCurrentWidget(mMoveImapFolderWidget); + } else if (action == VacationUtils::Sendto) { + mStackedWidget->setCurrentWidget(mSelectEmailLineEdit); } else { mStackedWidget->setCurrentWidget(mMailActionRecipient); } } void VacationMailActionWidget::setMailAction(VacationUtils::MailAction action, const QString &recipient) { selectMailActionWidget(action); mMailActionRecipient->setText(recipient); } void VacationMailActionWidget::setText(const QString &recipient) { if (mStackedWidget->currentWidget() == mMoveImapFolderWidget) { mMoveImapFolderWidget->setText(recipient); + } else if (mStackedWidget->currentWidget() == mSelectEmailLineEdit) { + mSelectEmailLineEdit->setText(recipient); } else { mMailActionRecipient->setText(recipient); } } QString VacationMailActionWidget::mailActionRecipient() const { if (mStackedWidget->currentWidget() == mMoveImapFolderWidget) { return mMoveImapFolderWidget->text(); + } else if (mStackedWidget->currentWidget() == mSelectEmailLineEdit) { + return mSelectEmailLineEdit->text(); } else { return mMailActionRecipient->text(); } } diff --git a/src/ksieveui/vacation/vacationmailactionwidget.h b/src/ksieveui/vacation/vacationmailactionwidget.h index 975c39c..b719390 100644 --- a/src/ksieveui/vacation/vacationmailactionwidget.h +++ b/src/ksieveui/vacation/vacationmailactionwidget.h @@ -1,53 +1,55 @@ /* Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef VACATIONMAILACTIONWIDGET_H #define VACATIONMAILACTIONWIDGET_H #include #include "vacation/vacationutils.h" class QStackedWidget; class QLineEdit; namespace KSieveUi { class AbstractMoveImapFolderWidget; class SieveImapAccountSettings; +class AbstractSelectEmailLineEdit; class VacationMailActionWidget : public QWidget { Q_OBJECT public: explicit VacationMailActionWidget(QWidget *parent = nullptr); ~VacationMailActionWidget(); void setSieveImapAccountSettings(const KSieveUi::SieveImapAccountSettings &account); void mailActionChanged(KSieveUi::VacationUtils::MailAction action); QString mailActionRecipient() const; void setMailAction(VacationUtils::MailAction action, const QString &recipient); private: void selectMailActionWidget(VacationUtils::MailAction action); void setText(const QString &recipient); QStackedWidget *mStackedWidget = nullptr; AbstractMoveImapFolderWidget *mMoveImapFolderWidget = nullptr; + AbstractSelectEmailLineEdit *mSelectEmailLineEdit = nullptr; QLineEdit *mMailActionRecipient = nullptr; }; } #endif // VACATIONMAILACTIONWIDGET_H