From 55a238572c3e0cce2d6f1fc325bd3a0c39ce4299 Mon Sep 17 00:00:00 2001 From: Montel Laurent Date: Tue, 23 Aug 2016 13:47:30 +0200 Subject: [PATCH] Extract filteractionmissingtransportdialog --- src/CMakeLists.txt | 1 + src/filter/autotests/CMakeLists.txt | 2 +- .../filteractionmissingargumentdialog.cpp | 56 ------------ .../filteractionmissingargumentdialog.h | 16 ---- .../filteractionmissingtransportdialog.cpp | 89 +++++++++++++++++++ .../filteractionmissingtransportdialog.h | 47 ++++++++++ .../filteractionsettransport.cpp | 4 +- 7 files changed, 140 insertions(+), 75 deletions(-) create mode 100644 src/filter/dialog/filteractionmissingtransportdialog.cpp create mode 100644 src/filter/dialog/filteractionmissingtransportdialog.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7c55cbf..28f4fe6 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -69,6 +69,7 @@ set(libmailcommon_filter_dialog filter/dialog/filteractionmissingtagdialog.cpp filter/dialog/filteractionmissingaccountdialog.cpp filter/dialog/filteractionmissingtemplatedialog.cpp + filter/dialog/filteractionmissingtransportdialog.cpp ) diff --git a/src/filter/autotests/CMakeLists.txt b/src/filter/autotests/CMakeLists.txt index d04e373..50b6aaf 100644 --- a/src/filter/autotests/CMakeLists.txt +++ b/src/filter/autotests/CMakeLists.txt @@ -209,7 +209,7 @@ add_mailcommon_filter_test(filteractionsendreceipttest add_mailcommon_filter_test(filteractionsettransporttest filteractionsettransporttest.cpp ../filteractions/filteractionsettransport.cpp - ../dialog/filteractionmissingargumentdialog.cpp + ../dialog/filteractionmissingtransportdialog.cpp ../kmfilteraccountlist.cpp ${filter_common_SRCS} ) diff --git a/src/filter/dialog/filteractionmissingargumentdialog.cpp b/src/filter/dialog/filteractionmissingargumentdialog.cpp index af743cf..b4ad061 100644 --- a/src/filter/dialog/filteractionmissingargumentdialog.cpp +++ b/src/filter/dialog/filteractionmissingargumentdialog.cpp @@ -260,59 +260,3 @@ int FilterActionMissingIdentityDialog::selectedIdentity() const return mComboBoxIdentity->currentIdentity(); } -FilterActionMissingTransportDialog::FilterActionMissingTransportDialog(const QString &filtername, - QWidget *parent) - : QDialog(parent) -{ - setModal(true); - setWindowTitle(i18n("Select Transport")); - QVBoxLayout *mainLayout = new QVBoxLayout(this); - QWidget *mainWidget = new QWidget(this); - mainLayout->addWidget(mainWidget); - - QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this); - QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok); - okButton->setDefault(true); - okButton->setShortcut(Qt::CTRL | Qt::Key_Return); - connect(buttonBox, &QDialogButtonBox::accepted, this, &FilterActionMissingTransportDialog::accept); - connect(buttonBox, &QDialogButtonBox::rejected, this, &FilterActionMissingTransportDialog::reject); - mainLayout->addWidget(buttonBox); - okButton->setDefault(true); - QVBoxLayout *lay = new QVBoxLayout(mainWidget); - QLabel *label = new QLabel(this); - label->setText(i18n("Filter transport is missing. " - "Please select a transport to use with filter \"%1\"", - filtername)); - label->setWordWrap(true); - lay->addWidget(label); - mComboBoxTransport = new MailTransport::TransportComboBox(this); - lay->addWidget(mComboBoxTransport); - readConfig(); -} - -FilterActionMissingTransportDialog::~FilterActionMissingTransportDialog() -{ - writeConfig(); -} - -void FilterActionMissingTransportDialog::readConfig() -{ - KConfigGroup group(KernelIf->config(), "FilterActionMissingTransportDialog"); - - const QSize size = group.readEntry("Size", QSize(500, 300)); - if (size.isValid()) { - resize(size); - } -} - -void FilterActionMissingTransportDialog::writeConfig() -{ - KConfigGroup group(KernelIf->config(), "FilterActionMissingTransportDialog"); - group.writeEntry("Size", size()); -} - -int FilterActionMissingTransportDialog::selectedTransport() const -{ - return mComboBoxTransport->currentTransportId(); -} - diff --git a/src/filter/dialog/filteractionmissingargumentdialog.h b/src/filter/dialog/filteractionmissingargumentdialog.h index c40c349..ed8e83c 100644 --- a/src/filter/dialog/filteractionmissingargumentdialog.h +++ b/src/filter/dialog/filteractionmissingargumentdialog.h @@ -101,21 +101,5 @@ private: KIdentityManagement::IdentityCombo *mComboBoxIdentity; }; -class FilterActionMissingTransportDialog : public QDialog -{ - Q_OBJECT -public: - explicit FilterActionMissingTransportDialog(const QString &filtername, - QWidget *parent = Q_NULLPTR); - ~FilterActionMissingTransportDialog(); - int selectedTransport() const; - -private: - void writeConfig(); - void readConfig(); - MailTransport::TransportComboBox *mComboBoxTransport; -}; - - #endif /* FILTERACTIONMISSINGARGUMENTDIALOG_H */ diff --git a/src/filter/dialog/filteractionmissingtransportdialog.cpp b/src/filter/dialog/filteractionmissingtransportdialog.cpp new file mode 100644 index 0000000..7b09fdd --- /dev/null +++ b/src/filter/dialog/filteractionmissingtransportdialog.cpp @@ -0,0 +1,89 @@ +/* + Copyright (C) 2016 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 "filteractionmissingtransportdialog.h" +#include "kernel/mailkernel.h" + +#include + +#include +#include +#include +#include + +#include + +using namespace MailCommon; + +FilterActionMissingTransportDialog::FilterActionMissingTransportDialog(const QString &filtername, + QWidget *parent) + : QDialog(parent) +{ + setModal(true); + setWindowTitle(i18n("Select Transport")); + QVBoxLayout *mainLayout = new QVBoxLayout(this); + QWidget *mainWidget = new QWidget(this); + mainLayout->addWidget(mainWidget); + + QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this); + QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok); + okButton->setDefault(true); + okButton->setShortcut(Qt::CTRL | Qt::Key_Return); + connect(buttonBox, &QDialogButtonBox::accepted, this, &FilterActionMissingTransportDialog::accept); + connect(buttonBox, &QDialogButtonBox::rejected, this, &FilterActionMissingTransportDialog::reject); + mainLayout->addWidget(buttonBox); + okButton->setDefault(true); + QVBoxLayout *lay = new QVBoxLayout(mainWidget); + QLabel *label = new QLabel(this); + label->setText(i18n("Filter transport is missing. " + "Please select a transport to use with filter \"%1\"", + filtername)); + label->setWordWrap(true); + lay->addWidget(label); + mComboBoxTransport = new MailTransport::TransportComboBox(this); + lay->addWidget(mComboBoxTransport); + readConfig(); +} + +FilterActionMissingTransportDialog::~FilterActionMissingTransportDialog() +{ + writeConfig(); +} + +void FilterActionMissingTransportDialog::readConfig() +{ + KConfigGroup group(KernelIf->config(), "FilterActionMissingTransportDialog"); + + const QSize size = group.readEntry("Size", QSize(500, 300)); + if (size.isValid()) { + resize(size); + } +} + +void FilterActionMissingTransportDialog::writeConfig() +{ + KConfigGroup group(KernelIf->config(), "FilterActionMissingTransportDialog"); + group.writeEntry("Size", size()); +} + +int FilterActionMissingTransportDialog::selectedTransport() const +{ + return mComboBoxTransport->currentTransportId(); +} + diff --git a/src/filter/dialog/filteractionmissingtransportdialog.h b/src/filter/dialog/filteractionmissingtransportdialog.h new file mode 100644 index 0000000..1a74be6 --- /dev/null +++ b/src/filter/dialog/filteractionmissingtransportdialog.h @@ -0,0 +1,47 @@ +/* + Copyright (C) 2016 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 FILTERACTIONMISSINGTRANSPORTDIALOG_H +#define FILTERACTIONMISSINGTRANSPORTDIALOG_H + +#include +namespace MailTransport +{ +class TransportComboBox; +} + +namespace MailCommon +{ +class FilterActionMissingTransportDialog : public QDialog +{ + Q_OBJECT +public: + explicit FilterActionMissingTransportDialog(const QString &filtername, + QWidget *parent = Q_NULLPTR); + ~FilterActionMissingTransportDialog(); + int selectedTransport() const; + +private: + void writeConfig(); + void readConfig(); + MailTransport::TransportComboBox *mComboBoxTransport; +}; +} + +#endif // FILTERACTIONMISSINGTRANSPORTDIALOG_H diff --git a/src/filter/filteractions/filteractionsettransport.cpp b/src/filter/filteractions/filteractionsettransport.cpp index 6a4474b..3260989 100644 --- a/src/filter/filteractions/filteractionsettransport.cpp +++ b/src/filter/filteractions/filteractionsettransport.cpp @@ -19,7 +19,7 @@ #include "filteractionsettransport.h" -#include "filter/dialog/filteractionmissingargumentdialog.h" +#include "filter/dialog/filteractionmissingtransportdialog.h" #include #include @@ -57,7 +57,7 @@ bool FilterActionSetTransport::argsFromStringInteractive(const QString &argsStr, bool needUpdate = false; argsFromString(argsStr); if (!MailTransport::TransportManager::self()->transportById(mParameter, false)) { - QPointer dlg = new FilterActionMissingTransportDialog(filterName); + QPointer dlg = new MailCommon::FilterActionMissingTransportDialog(filterName); if (dlg->exec()) { mParameter = dlg->selectedTransport(); needUpdate = true;