From 22fce9dea6e274e6ca0cf61626b47cebce9c8016 Mon Sep 17 00:00:00 2001 From: Montel Laurent Date: Tue, 23 Aug 2016 08:43:37 +0200 Subject: [PATCH] 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;