diff --git a/src/collectionpage/collectiontemplatespage.cpp b/src/collectionpage/collectiontemplatespage.cpp index ac00ccf07..b8793cca9 100644 --- a/src/collectionpage/collectiontemplatespage.cpp +++ b/src/collectionpage/collectiontemplatespage.cpp @@ -5,6 +5,7 @@ */ #include "collectiontemplatespage.h" +#include "collectiontemplateswidget.h" #include #include @@ -13,8 +14,6 @@ #include #include -#include -#include using namespace Akonadi; using namespace MailCommon; @@ -40,78 +39,18 @@ bool CollectionTemplatesPage::canHandle(const Collection &collection) const void CollectionTemplatesPage::init() { QVBoxLayout *topLayout = new QVBoxLayout(this); - QHBoxLayout *topItems = new QHBoxLayout; - topItems->setContentsMargins(0, 0, 0, 0); - topLayout->addLayout(topItems); - - mCustom = new QCheckBox(i18n("&Use custom message templates in this folder"), this); - connect(mCustom, &QCheckBox::clicked, this, &CollectionTemplatesPage::slotChanged); - topItems->addWidget(mCustom, Qt::AlignLeft); - - mWidget = new TemplateParser::TemplatesConfiguration(this, QStringLiteral("folder-templates")); - connect(mWidget, &TemplateParser::TemplatesConfiguration::changed, this, &CollectionTemplatesPage::slotChanged); - mWidget->setEnabled(false); - - // Move the help label outside of the templates configuration widget, - // so that the help can be read even if the widget is not enabled. - topItems->addStretch(9); - topItems->addWidget(mWidget->helpLabel(), Qt::AlignRight); - - topLayout->addWidget(mWidget); - - QHBoxLayout *btns = new QHBoxLayout(); - QPushButton *copyGlobal = new QPushButton(i18n("&Copy Global Templates"), this); - copyGlobal->setEnabled(false); - btns->addWidget(copyGlobal); - topLayout->addLayout(btns); - - connect(mCustom, &QCheckBox::toggled, mWidget, &TemplateParser::TemplatesConfiguration::setEnabled); - connect(mCustom, &QCheckBox::toggled, copyGlobal, &QPushButton::setEnabled); - - connect(copyGlobal, &QPushButton::clicked, this, &CollectionTemplatesPage::slotCopyGlobal); + topLayout->setContentsMargins({}); + mCollectionTemplateWidget = new CollectionTemplatesWidget(this); + topLayout->addWidget(mCollectionTemplateWidget); } void CollectionTemplatesPage::load(const Collection &col) { - const QSharedPointer fd = FolderSettings::forCollection(col, false); - if (!fd) { - return; - } - - mCollectionId = QString::number(col.id()); - - TemplateParser::Templates t(mCollectionId); - - mCustom->setChecked(t.useCustomTemplates()); - - mIdentity = fd->identity(); - - mWidget->loadFromFolder(mCollectionId, mIdentity); - mChanged = false; -} - -void CollectionTemplatesPage::save(Collection &) -{ - if (mChanged && !mCollectionId.isEmpty()) { - TemplateParser::Templates t(mCollectionId); - //qCDebug(KMAIL_LOG) << "use custom templates for folder" << fid <<":" << mCustom->isChecked(); - t.setUseCustomTemplates(mCustom->isChecked()); - t.save(); - - mWidget->saveToFolder(mCollectionId); - } + mCollectionTemplateWidget->load(col); } -void CollectionTemplatesPage::slotCopyGlobal() +void CollectionTemplatesPage::save(Collection &col) { - if (mIdentity) { - mWidget->loadFromIdentity(mIdentity); - } else { - mWidget->loadFromGlobal(); - } + mCollectionTemplateWidget->save(col); } -void CollectionTemplatesPage::slotChanged() -{ - mChanged = true; -} diff --git a/src/collectionpage/collectiontemplatespage.h b/src/collectionpage/collectiontemplatespage.h index a7bf0817d..084c80801 100644 --- a/src/collectionpage/collectiontemplatespage.h +++ b/src/collectionpage/collectiontemplatespage.h @@ -8,11 +8,7 @@ #define COLLECTIONTEMPLATESPAGE_H #include -class QCheckBox; -namespace TemplateParser { -class TemplatesConfiguration; -} - +class CollectionTemplatesWidget; template class QSharedPointer; class CollectionTemplatesPage : public Akonadi::CollectionPropertiesPage @@ -30,11 +26,7 @@ private: void slotCopyGlobal(); void slotChanged(); void init(); - QCheckBox *mCustom = nullptr; - TemplateParser::TemplatesConfiguration *mWidget = nullptr; - QString mCollectionId; - uint mIdentity = 0; - bool mChanged = false; + CollectionTemplatesWidget *mCollectionTemplateWidget = nullptr; }; AKONADI_COLLECTION_PROPERTIES_PAGE_FACTORY(CollectionTemplatesPageFactory, CollectionTemplatesPage) diff --git a/src/collectionpage/collectiontemplateswidget.cpp b/src/collectionpage/collectiontemplateswidget.cpp index 2f50577fd..95c7c0b53 100644 --- a/src/collectionpage/collectiontemplateswidget.cpp +++ b/src/collectionpage/collectiontemplateswidget.cpp @@ -9,7 +9,9 @@ #include #include "templatesconfiguration_kfg.h" +#include #include +#include #include #include @@ -53,7 +55,7 @@ CollectionTemplatesWidget::~CollectionTemplatesWidget() } -void CollectionTemplatesWidget::save(const Akonadi::Collection &collection) +void CollectionTemplatesWidget::save(const Akonadi::Collection &) { if (mChanged && !mCollectionId.isEmpty()) { TemplateParser::Templates t(mCollectionId); @@ -78,3 +80,22 @@ void CollectionTemplatesWidget::slotChanged() { mChanged = true; } + +void CollectionTemplatesWidget::load(const Akonadi::Collection &col) +{ + const QSharedPointer fd = MailCommon::FolderSettings::forCollection(col, false); + if (!fd) { + return; + } + + mCollectionId = QString::number(col.id()); + + TemplateParser::Templates t(mCollectionId); + + mCustom->setChecked(t.useCustomTemplates()); + + mIdentity = fd->identity(); + + mWidget->loadFromFolder(mCollectionId, mIdentity); + mChanged = false; +} diff --git a/src/collectionpage/collectiontemplateswidget.h b/src/collectionpage/collectiontemplateswidget.h index 9767a1918..d4c695d47 100644 --- a/src/collectionpage/collectiontemplateswidget.h +++ b/src/collectionpage/collectiontemplateswidget.h @@ -21,7 +21,8 @@ class CollectionTemplatesWidget : public QWidget public: explicit CollectionTemplatesWidget(QWidget *parent = nullptr); ~CollectionTemplatesWidget(); - void save(const Akonadi::Collection &collection); + void save(const Akonadi::Collection &); + void load(const Akonadi::Collection &col); private: void slotCopyGlobal(); void slotChanged();