From eeb28747bf094db806c043470b8fabec0e5d77f5 Mon Sep 17 00:00:00 2001 From: Montel Laurent Date: Sat, 20 Aug 2016 09:37:25 +0200 Subject: [PATCH 1/5] GIT_SILENT: Prepare 5.3.1 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ed40da..caeded3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) include(ECMQtDeclareLoggingCategory) include(ECMAddTests) -set(PIM_VERSION "5.3.0") +set(PIM_VERSION "5.3.1") set(MAILCOMMON_LIB_VERSION ${PIM_VERSION}) set(AKONADIMIME_LIB_VERSION "5.3.0") set(MESSAGELIB_LIB_VERSION "5.3.0") From 1068ab1bc3aa5174c0a9d7e4c24aa5a85cd3705d Mon Sep 17 00:00:00 2001 From: Montel Laurent Date: Sun, 21 Aug 2016 15:31:58 +0200 Subject: [PATCH 2/5] GIT_SILENT: Prepare 5.3.1. --- CMakeLists.txt | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index caeded3..2a774dd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,17 +20,17 @@ include(ECMAddTests) set(PIM_VERSION "5.3.1") set(MAILCOMMON_LIB_VERSION ${PIM_VERSION}) -set(AKONADIMIME_LIB_VERSION "5.3.0") -set(MESSAGELIB_LIB_VERSION "5.3.0") +set(AKONADIMIME_LIB_VERSION "5.3.1") +set(MESSAGELIB_LIB_VERSION "5.3.1") set(QT_REQUIRED_VERSION "5.5.0") -set(KMIME_LIB_VERSION "5.3.0") -set(KMAILTRANSPORT_LIB_VERSION "5.3.0") -set(KLDAP_LIB_VERSION "5.3.0") -set(MAILIMPORTER_LIB_VERSION "5.3.0") -set(LIBKDEPIM_LIB_VERSION "5.3.0") -set(PIMCOMMON_LIB_VERSION "5.3.0") - -set(AKONADI_VERSION "5.3.0") +set(KMIME_LIB_VERSION "5.3.1") +set(KMAILTRANSPORT_LIB_VERSION "5.3.1") +set(KLDAP_LIB_VERSION "5.3.1") +set(MAILIMPORTER_LIB_VERSION "5.3.1") +set(LIBKDEPIM_LIB_VERSION "5.3.1") +set(PIMCOMMON_LIB_VERSION "5.3.1") + +set(AKONADI_VERSION "5.3.1") find_package(Qt5 ${QT_REQUIRED_VERSION} CONFIG REQUIRED Widgets DBus Test Xml) From 4e319c135394166f8e1451ea154b9119f91fc41e Mon Sep 17 00:00:00 2001 From: Montel Laurent Date: Tue, 23 Aug 2016 08:29:42 +0200 Subject: [PATCH 3/5] Start to clean up layout --- .../filteractionmissingargumentdialog.cpp | 35 ++++++++----------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/src/filter/dialog/filteractionmissingargumentdialog.cpp b/src/filter/dialog/filteractionmissingargumentdialog.cpp index 15aff69..df0ca65 100644 --- a/src/filter/dialog/filteractionmissingargumentdialog.cpp +++ b/src/filter/dialog/filteractionmissingargumentdialog.cpp @@ -49,10 +49,10 @@ FilterActionMissingCollectionDialog::FilterActionMissingCollectionDialog( { setModal(true); setWindowTitle(i18n("Select Folder")); - QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + QVBoxLayout *mainLayout = new QVBoxLayout(this); + + QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this); QWidget *mainWidget = new QWidget(this); - QVBoxLayout *mainLayout = new QVBoxLayout; - setLayout(mainLayout); mainLayout->addWidget(mainWidget); mOkButton = buttonBox->button(QDialogButtonBox::Ok); mOkButton->setDefault(true); @@ -209,12 +209,12 @@ FilterActionMissingIdentityDialog::FilterActionMissingIdentityDialog(const QStri { setModal(true); setWindowTitle(i18n("Select Identity")); + QVBoxLayout *mainLayout = new QVBoxLayout(this); + QWidget *mainWidget = new QWidget(this); - QVBoxLayout *mainLayout = new QVBoxLayout; - setLayout(mainLayout); mainLayout->addWidget(mainWidget); - QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + 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); @@ -266,12 +266,11 @@ FilterActionMissingTransportDialog::FilterActionMissingTransportDialog(const QSt { setModal(true); setWindowTitle(i18n("Select Transport")); + QVBoxLayout *mainLayout = new QVBoxLayout(this); QWidget *mainWidget = new QWidget(this); - QVBoxLayout *mainLayout = new QVBoxLayout; - setLayout(mainLayout); mainLayout->addWidget(mainWidget); - QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + 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); @@ -323,12 +322,11 @@ FilterActionMissingTemplateDialog::FilterActionMissingTemplateDialog( { setModal(true); setWindowTitle(i18n("Select Template")); + QVBoxLayout *mainLayout = new QVBoxLayout(this); QWidget *mainWidget = new QWidget(this); - QVBoxLayout *mainLayout = new QVBoxLayout; - setLayout(mainLayout); mainLayout->addWidget(mainWidget); - QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + 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); @@ -386,9 +384,8 @@ FilterActionMissingAccountDialog::FilterActionMissingAccountDialog(const QString { setModal(true); setWindowTitle(i18n("Select Account")); + QVBoxLayout *mainLayout = new QVBoxLayout(this); QWidget *mainWidget = new QWidget(this); - QVBoxLayout *mainLayout = new QVBoxLayout; - setLayout(mainLayout); mainLayout->addWidget(mainWidget); QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); @@ -468,12 +465,11 @@ FilterActionMissingTagDialog::FilterActionMissingTagDialog( { setModal(true); setWindowTitle(i18n("Select Tag")); + QVBoxLayout *mainLayout = new QVBoxLayout(this); QWidget *mainWidget = new QWidget(this); - QVBoxLayout *mainLayout = new QVBoxLayout; - setLayout(mainLayout); mainLayout->addWidget(mainWidget); - QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + 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); @@ -556,12 +552,11 @@ FilterActionMissingSoundUrlDialog::FilterActionMissingSoundUrlDialog(const QStri : QDialog(parent) { setModal(true); + QVBoxLayout *mainLayout = new QVBoxLayout(this); QWidget *mainWidget = new QWidget(this); - QVBoxLayout *mainLayout = new QVBoxLayout; - setLayout(mainLayout); mainLayout->addWidget(mainWidget); - QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + 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); From 4c0e7157f9853e7a75b2449a06dc34020d36cd18 Mon Sep 17 00:00:00 2001 From: Montel Laurent Date: Tue, 23 Aug 2016 08:37:48 +0200 Subject: [PATCH 4/5] Move in own files --- src/CMakeLists.txt | 12 ++- src/filter/autotests/CMakeLists.txt | 2 +- .../filteractionmissingargumentdialog.cpp | 62 ------------ .../filteractionmissingargumentdialog.h | 17 ---- .../filteractionmissingsoundurldialog.cpp | 94 +++++++++++++++++++ .../filteractionmissingsoundurldialog.h | 44 +++++++++ .../filteractions/filteractionplaysound.cpp | 4 +- 7 files changed, 150 insertions(+), 85 deletions(-) create mode 100644 src/filter/dialog/filteractionmissingsoundurldialog.cpp create mode 100644 src/filter/dialog/filteractionmissingsoundurldialog.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1ad43b7..8c39d11 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -20,7 +20,6 @@ set(libmailcommon_filter_SRCS filter/filteractions/filteractiondict.cpp filter/filteractions/filteractionexec.cpp filter/filteractions/filteractionforward.cpp - filter/dialog/filteractionmissingargumentdialog.cpp filter/filteractions/filteractionmove.cpp filter/filteractions/filteractionpipethrough.cpp filter/filteractions/filteractionplaysound.cpp @@ -59,11 +58,17 @@ set(libmailcommon_filter_SRCS filter/itemcontext.cpp filter/kmfilterdialog.cpp filter/mailfilter.cpp - filter/dialog/selectthunderbirdfilterfilesdialog.cpp - filter/dialog/selectthunderbirdfilterfileswidget.cpp filter/mdnadvicedialog.cpp ) +set(libmailcommon_filter_dialog + filter/dialog/selectthunderbirdfilterfilesdialog.cpp + filter/dialog/selectthunderbirdfilterfileswidget.cpp + filter/dialog/filteractionmissingargumentdialog.cpp + filter/dialog/filteractionmissingsoundurldialog.cpp + ) + + set(libmailcommon_invalidfilters filter/invalidfilters/invalidfilterdialog.cpp filter/invalidfilters/invalidfilterlistview.cpp @@ -154,6 +159,7 @@ set(libmailcommon_util_SRCS set(libmailcommon_SRCS kernel/mailkernel.cpp + ${libmailcommon_filter_dialog} ${libmailcommon_util_SRCS} ${libmailcommon_mdn_SRCS} ${libmailcommon_invalidfilters} diff --git a/src/filter/autotests/CMakeLists.txt b/src/filter/autotests/CMakeLists.txt index be297c2..d5a601d 100644 --- a/src/filter/autotests/CMakeLists.txt +++ b/src/filter/autotests/CMakeLists.txt @@ -111,7 +111,7 @@ add_mailcommon_filter_test(filteractionplaysoundtest ../filteractions/filteractionwithtest.cpp ../filteractions/filteractionplaysound.cpp ../soundtestwidget.cpp - ../dialog/filteractionmissingargumentdialog.cpp + ../dialog/filteractionmissingsoundurldialog.cpp ../kmfilteraccountlist.cpp ${filter_common_SRCS} ) diff --git a/src/filter/dialog/filteractionmissingargumentdialog.cpp b/src/filter/dialog/filteractionmissingargumentdialog.cpp index df0ca65..a3a82d6 100644 --- a/src/filter/dialog/filteractionmissingargumentdialog.cpp +++ b/src/filter/dialog/filteractionmissingargumentdialog.cpp @@ -546,65 +546,3 @@ void FilterActionMissingTagDialog::slotAddTag() delete dlg; } -FilterActionMissingSoundUrlDialog::FilterActionMissingSoundUrlDialog(const QString &filtername, - const QString &argStr, - QWidget *parent) - : QDialog(parent) -{ - setModal(true); - 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); - QPushButton *user1Button = new QPushButton; - buttonBox->addButton(user1Button, QDialogButtonBox::ActionRole); - connect(buttonBox, &QDialogButtonBox::accepted, this, &FilterActionMissingSoundUrlDialog::accept); - connect(buttonBox, &QDialogButtonBox::rejected, this, &FilterActionMissingSoundUrlDialog::reject); - mainLayout->addWidget(buttonBox); - okButton->setDefault(true); - setWindowTitle(i18n("Select sound")); - QVBoxLayout *lay = new QVBoxLayout(mainWidget); - QLabel *label = new QLabel(i18n("Sound file was \"%1\".", argStr)); - lay->addWidget(label); - - label = new QLabel(this); - label->setText(i18n("Sound file is missing. " - "Please select a sound to use with filter \"%1\"", - filtername)); - label->setWordWrap(true); - lay->addWidget(label); - mUrlWidget = new KUrlRequester(this); - lay->addWidget(mUrlWidget); - readConfig(); -} - -FilterActionMissingSoundUrlDialog::~FilterActionMissingSoundUrlDialog() -{ - writeConfig(); -} - -QString FilterActionMissingSoundUrlDialog::soundUrl() const -{ - return mUrlWidget->url().path(); -} - -void FilterActionMissingSoundUrlDialog::readConfig() -{ - KConfigGroup group(KernelIf->config(), "FilterActionMissingSoundUrlDialog"); - - const QSize size = group.readEntry("Size", QSize(500, 300)); - if (size.isValid()) { - resize(size); - } -} - -void FilterActionMissingSoundUrlDialog::writeConfig() -{ - KConfigGroup group(KernelIf->config(), "FilterActionMissingSoundUrlDialog"); - group.writeEntry("Size", size()); -} - diff --git a/src/filter/dialog/filteractionmissingargumentdialog.h b/src/filter/dialog/filteractionmissingargumentdialog.h index 02b6756..529b24e 100644 --- a/src/filter/dialog/filteractionmissingargumentdialog.h +++ b/src/filter/dialog/filteractionmissingargumentdialog.h @@ -172,22 +172,5 @@ private: }; QListWidget *mTagList; }; - -class FilterActionMissingSoundUrlDialog : public QDialog -{ - Q_OBJECT -public: - explicit FilterActionMissingSoundUrlDialog(const QString &filtername, - const QString &argStr, - QWidget *parent = Q_NULLPTR); - ~FilterActionMissingSoundUrlDialog(); - QString soundUrl() const; - -private: - void readConfig(); - void writeConfig(); - KUrlRequester *mUrlWidget; -}; - #endif /* FILTERACTIONMISSINGARGUMENTDIALOG_H */ diff --git a/src/filter/dialog/filteractionmissingsoundurldialog.cpp b/src/filter/dialog/filteractionmissingsoundurldialog.cpp new file mode 100644 index 0000000..29f264e --- /dev/null +++ b/src/filter/dialog/filteractionmissingsoundurldialog.cpp @@ -0,0 +1,94 @@ +/* + 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 "filteractionmissingsoundurldialog.h" +#include "kernel/mailkernel.h" + +#include +#include +#include +#include +#include +#include +#include + +using namespace MailCommon; + +FilterActionMissingSoundUrlDialog::FilterActionMissingSoundUrlDialog(const QString &filtername, + const QString &argStr, + QWidget *parent) + : QDialog(parent) +{ + setModal(true); + 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); + QPushButton *user1Button = new QPushButton; + buttonBox->addButton(user1Button, QDialogButtonBox::ActionRole); + connect(buttonBox, &QDialogButtonBox::accepted, this, &FilterActionMissingSoundUrlDialog::accept); + connect(buttonBox, &QDialogButtonBox::rejected, this, &FilterActionMissingSoundUrlDialog::reject); + mainLayout->addWidget(buttonBox); + okButton->setDefault(true); + setWindowTitle(i18n("Select sound")); + QVBoxLayout *lay = new QVBoxLayout(mainWidget); + QLabel *label = new QLabel(i18n("Sound file was \"%1\".", argStr)); + lay->addWidget(label); + + label = new QLabel(this); + label->setText(i18n("Sound file is missing. " + "Please select a sound to use with filter \"%1\"", + filtername)); + label->setWordWrap(true); + lay->addWidget(label); + mUrlWidget = new KUrlRequester(this); + lay->addWidget(mUrlWidget); + readConfig(); +} + +FilterActionMissingSoundUrlDialog::~FilterActionMissingSoundUrlDialog() +{ + writeConfig(); +} + +QString FilterActionMissingSoundUrlDialog::soundUrl() const +{ + return mUrlWidget->url().path(); +} + +void FilterActionMissingSoundUrlDialog::readConfig() +{ + KConfigGroup group(KernelIf->config(), "FilterActionMissingSoundUrlDialog"); + + const QSize size = group.readEntry("Size", QSize(500, 300)); + if (size.isValid()) { + resize(size); + } +} + +void FilterActionMissingSoundUrlDialog::writeConfig() +{ + KConfigGroup group(KernelIf->config(), "FilterActionMissingSoundUrlDialog"); + group.writeEntry("Size", size()); +} + diff --git a/src/filter/dialog/filteractionmissingsoundurldialog.h b/src/filter/dialog/filteractionmissingsoundurldialog.h new file mode 100644 index 0000000..b02bf0c --- /dev/null +++ b/src/filter/dialog/filteractionmissingsoundurldialog.h @@ -0,0 +1,44 @@ +/* + 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 FILTERACTIONMISSINGSOUNDURLDIALOG_H +#define FILTERACTIONMISSINGSOUNDURLDIALOG_H + +#include +class KUrlRequester; +namespace MailCommon +{ +class FilterActionMissingSoundUrlDialog : public QDialog +{ + Q_OBJECT +public: + explicit FilterActionMissingSoundUrlDialog(const QString &filtername, + const QString &argStr, + QWidget *parent = Q_NULLPTR); + ~FilterActionMissingSoundUrlDialog(); + QString soundUrl() const; + +private: + void readConfig(); + void writeConfig(); + KUrlRequester *mUrlWidget; +}; +} + +#endif // FILTERACTIONMISSINGSOUNDURLDIALOG_H diff --git a/src/filter/filteractions/filteractionplaysound.cpp b/src/filter/filteractions/filteractionplaysound.cpp index 67ab467..df5b535 100644 --- a/src/filter/filteractions/filteractionplaysound.cpp +++ b/src/filter/filteractions/filteractionplaysound.cpp @@ -19,7 +19,7 @@ #include "filteractionplaysound.h" -#include "filter/dialog/filteractionmissingargumentdialog.h" +#include "filter/dialog/filteractionmissingsoundurldialog.h" #include @@ -75,7 +75,7 @@ bool FilterActionPlaySound::argsFromStringInteractive(const QString &argsStr, co bool needUpdate = false; argsFromString(argsStr); if (!QFile(mParameter).exists()) { - QPointer dlg = new FilterActionMissingSoundUrlDialog(filterName, argsStr); + QPointer dlg = new MailCommon::FilterActionMissingSoundUrlDialog(filterName, argsStr); if (dlg->exec()) { mParameter = dlg->soundUrl(); needUpdate = true; From 22fce9dea6e274e6ca0cf61626b47cebce9c8016 Mon Sep 17 00:00:00 2001 From: Montel Laurent Date: Tue, 23 Aug 2016 08:43:37 +0200 Subject: [PATCH 5/5] continue to split class in own files --- src/CMakeLists.txt | 1 + .../filteractionmissingargumentdialog.cpp | 89 ------------- .../filteractionmissingargumentdialog.h | 23 ---- .../dialog/filteractionmissingtagdialog.cpp | 124 ++++++++++++++++++ .../dialog/filteractionmissingtagdialog.h | 51 +++++++ .../filteractions/filteractionaddtag.cpp | 4 +- 6 files changed, 178 insertions(+), 114 deletions(-) create mode 100644 src/filter/dialog/filteractionmissingtagdialog.cpp create mode 100644 src/filter/dialog/filteractionmissingtagdialog.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8c39d11..c5c63c1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -66,6 +66,7 @@ set(libmailcommon_filter_dialog filter/dialog/selectthunderbirdfilterfileswidget.cpp filter/dialog/filteractionmissingargumentdialog.cpp filter/dialog/filteractionmissingsoundurldialog.cpp + filter/dialog/filteractionmissingtagdialog.cpp ) diff --git a/src/filter/dialog/filteractionmissingargumentdialog.cpp b/src/filter/dialog/filteractionmissingargumentdialog.cpp index a3a82d6..1e711e3 100644 --- a/src/filter/dialog/filteractionmissingargumentdialog.cpp +++ b/src/filter/dialog/filteractionmissingargumentdialog.cpp @@ -457,92 +457,3 @@ bool FilterActionMissingAccountDialog::allAccountExist(const QStringList &lst) } return true; } - -FilterActionMissingTagDialog::FilterActionMissingTagDialog( - const QMap &tagList, const QString &filtername, - const QString &argsStr, QWidget *parent) - : QDialog(parent) -{ - setModal(true); - setWindowTitle(i18n("Select Tag")); - 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); - QPushButton *user1Button = new QPushButton; - buttonBox->addButton(user1Button, QDialogButtonBox::ActionRole); - connect(buttonBox, &QDialogButtonBox::accepted, this, &FilterActionMissingTagDialog::accept); - connect(buttonBox, &QDialogButtonBox::rejected, this, &FilterActionMissingTagDialog::reject); - mainLayout->addWidget(buttonBox); - okButton->setDefault(true); - user1Button->setText(i18n("Add Tag...")); - QVBoxLayout *lay = new QVBoxLayout(mainWidget); - QLabel *label = new QLabel(i18n("Tag was \"%1\".", argsStr)); - lay->addWidget(label); - - label = new QLabel(this); - label->setText(i18n("Filter tag is missing. " - "Please select a tag to use with filter \"%1\"", - filtername)); - label->setWordWrap(true); - lay->addWidget(label); - mTagList = new QListWidget(this); - - QMapIterator map(tagList); - while (map.hasNext()) { - map.next(); - QListWidgetItem *item = new QListWidgetItem(map.value()); - item->setData(UrlData, map.key().toString()); - mTagList->addItem(item); - } - - connect(user1Button, &QPushButton::clicked, this, &FilterActionMissingTagDialog::slotAddTag); - connect(mTagList, &QListWidget::itemDoubleClicked, this, &FilterActionMissingTagDialog::accept); - lay->addWidget(mTagList); - readConfig(); -} - -FilterActionMissingTagDialog::~FilterActionMissingTagDialog() -{ - writeConfig(); -} - -void FilterActionMissingTagDialog::readConfig() -{ - KConfigGroup group(KernelIf->config(), "FilterActionMissingTagDialog"); - - const QSize size = group.readEntry("Size", QSize(500, 300)); - if (size.isValid()) { - resize(size); - } -} - -void FilterActionMissingTagDialog::writeConfig() -{ - KConfigGroup group(KernelIf->config(), "FilterActionMissingTagDialog"); - group.writeEntry("Size", size()); -} - -QString FilterActionMissingTagDialog::selectedTag() const -{ - if (mTagList->currentItem()) { - return mTagList->currentItem()->data(UrlData).toString(); - } - return QString(); -} - -void FilterActionMissingTagDialog::slotAddTag() -{ - QPointer dlg = new MailCommon::AddTagDialog(QList(), this); - if (dlg->exec()) { - QListWidgetItem *item = new QListWidgetItem(dlg->label()); - item->setData(UrlData, dlg->tag().url().url()); - mTagList->addItem(item); - } - delete dlg; -} - diff --git a/src/filter/dialog/filteractionmissingargumentdialog.h b/src/filter/dialog/filteractionmissingargumentdialog.h index 529b24e..5c3edd4 100644 --- a/src/filter/dialog/filteractionmissingargumentdialog.h +++ b/src/filter/dialog/filteractionmissingargumentdialog.h @@ -149,28 +149,5 @@ private: MailCommon::KMFilterAccountList *mAccountList; }; -class FilterActionMissingTagDialog : public QDialog -{ - Q_OBJECT -public: - explicit FilterActionMissingTagDialog(const QMap &templateList, - const QString &filtername, - const QString &argsStr, - QWidget *parent = Q_NULLPTR); - ~FilterActionMissingTagDialog(); - QString selectedTag() const; - -private Q_SLOTS: - void slotAddTag(); - -private: - void readConfig(); - void writeConfig(); - - enum TypeData { - UrlData = Qt::UserRole + 1 - }; - QListWidget *mTagList; -}; #endif /* FILTERACTIONMISSINGARGUMENTDIALOG_H */ diff --git a/src/filter/dialog/filteractionmissingtagdialog.cpp b/src/filter/dialog/filteractionmissingtagdialog.cpp new file mode 100644 index 0000000..ff8ea03 --- /dev/null +++ b/src/filter/dialog/filteractionmissingtagdialog.cpp @@ -0,0 +1,124 @@ +/* + 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 "filteractionmissingtagdialog.h" +#include + +#include "tag/addtagdialog.h" +#include "kernel/mailkernel.h" + +#include +#include +#include +#include +#include +#include +#include + +using namespace MailCommon; + +FilterActionMissingTagDialog::FilterActionMissingTagDialog( + const QMap &tagList, const QString &filtername, + const QString &argsStr, QWidget *parent) + : QDialog(parent) +{ + setModal(true); + setWindowTitle(i18n("Select Tag")); + 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); + QPushButton *user1Button = new QPushButton; + buttonBox->addButton(user1Button, QDialogButtonBox::ActionRole); + connect(buttonBox, &QDialogButtonBox::accepted, this, &FilterActionMissingTagDialog::accept); + connect(buttonBox, &QDialogButtonBox::rejected, this, &FilterActionMissingTagDialog::reject); + mainLayout->addWidget(buttonBox); + okButton->setDefault(true); + user1Button->setText(i18n("Add Tag...")); + QVBoxLayout *lay = new QVBoxLayout(mainWidget); + QLabel *label = new QLabel(i18n("Tag was \"%1\".", argsStr)); + lay->addWidget(label); + + label = new QLabel(this); + label->setText(i18n("Filter tag is missing. " + "Please select a tag to use with filter \"%1\"", + filtername)); + label->setWordWrap(true); + lay->addWidget(label); + mTagList = new QListWidget(this); + + QMapIterator map(tagList); + while (map.hasNext()) { + map.next(); + QListWidgetItem *item = new QListWidgetItem(map.value()); + item->setData(UrlData, map.key().toString()); + mTagList->addItem(item); + } + + connect(user1Button, &QPushButton::clicked, this, &FilterActionMissingTagDialog::slotAddTag); + connect(mTagList, &QListWidget::itemDoubleClicked, this, &FilterActionMissingTagDialog::accept); + lay->addWidget(mTagList); + readConfig(); +} + +FilterActionMissingTagDialog::~FilterActionMissingTagDialog() +{ + writeConfig(); +} + +void FilterActionMissingTagDialog::readConfig() +{ + KConfigGroup group(KernelIf->config(), "FilterActionMissingTagDialog"); + + const QSize size = group.readEntry("Size", QSize(500, 300)); + if (size.isValid()) { + resize(size); + } +} + +void FilterActionMissingTagDialog::writeConfig() +{ + KConfigGroup group(KernelIf->config(), "FilterActionMissingTagDialog"); + group.writeEntry("Size", size()); +} + +QString FilterActionMissingTagDialog::selectedTag() const +{ + if (mTagList->currentItem()) { + return mTagList->currentItem()->data(UrlData).toString(); + } + return QString(); +} + +void FilterActionMissingTagDialog::slotAddTag() +{ + QPointer dlg = new MailCommon::AddTagDialog(QList(), this); + if (dlg->exec()) { + QListWidgetItem *item = new QListWidgetItem(dlg->label()); + item->setData(UrlData, dlg->tag().url().url()); + mTagList->addItem(item); + } + delete dlg; +} + diff --git a/src/filter/dialog/filteractionmissingtagdialog.h b/src/filter/dialog/filteractionmissingtagdialog.h new file mode 100644 index 0000000..96a9261 --- /dev/null +++ b/src/filter/dialog/filteractionmissingtagdialog.h @@ -0,0 +1,51 @@ +/* + 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 FILTERACTIONMISSINGTAGDIALOG_H +#define FILTERACTIONMISSINGTAGDIALOG_H + +#include +class QListWidget; +namespace MailCommon { +class FilterActionMissingTagDialog : public QDialog +{ + Q_OBJECT +public: + explicit FilterActionMissingTagDialog(const QMap &templateList, + const QString &filtername, + const QString &argsStr, + QWidget *parent = Q_NULLPTR); + ~FilterActionMissingTagDialog(); + QString selectedTag() const; + +private Q_SLOTS: + void slotAddTag(); + +private: + void readConfig(); + void writeConfig(); + + enum TypeData { + UrlData = Qt::UserRole + 1 + }; + QListWidget *mTagList; +}; + +} +#endif // FILTERACTIONMISSINGTAGDIALOG_H diff --git a/src/filter/filteractions/filteractionaddtag.cpp b/src/filter/filteractions/filteractionaddtag.cpp index d5a7890..73bd1f1 100644 --- a/src/filter/filteractions/filteractionaddtag.cpp +++ b/src/filter/filteractions/filteractionaddtag.cpp @@ -19,7 +19,7 @@ #include "filteractionaddtag.h" #include "filter/filtermanager.h" -#include "filter/dialog/filteractionmissingargumentdialog.h" +#include "filter/dialog/filteractionmissingtagdialog.h" #include "PimCommon/MinimumComboBox" #include @@ -108,7 +108,7 @@ bool FilterActionAddTag::argsFromStringInteractive(const QString &argsStr, const } const bool index = mList.contains(QUrl(mParameter)); if (!index) { - QPointer dlg = new FilterActionMissingTagDialog(mList, filterName, argsStr); + QPointer dlg = new MailCommon::FilterActionMissingTagDialog(mList, filterName, argsStr); if (dlg->exec()) { mParameter = dlg->selectedTag(); needUpdate = true;