diff --git a/CMakeLists.txt b/CMakeLists.txt index 637e95419..6989e0277 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,7 +66,7 @@ option(KDEPIM_RUN_AKONADI_TEST "Enable autotest based on Akonadi." TRUE) find_package(Qt5 ${QT_REQUIRED_VERSION} CONFIG REQUIRED DBus Network Test Widgets WebEngine WebEngineWidgets) set(LIBGRAVATAR_VERSION "5.15.40") -set(MAILCOMMON_LIB_VERSION "5.15.44") +set(MAILCOMMON_LIB_VERSION "5.15.45") set(MESSAGELIB_LIB_VERSION "5.15.40") set(LIBKLEO_LIB_VERSION "5.15.40") set(PIMCOMMON_LIB_VERSION "5.15.40") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c63e14321..33f6dfad0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -48,7 +48,6 @@ set(kmailprivate_collectionpage_LIB_SRCS collectionpage/collectionquotawidget.cpp collectionpage/collectionmailinglistpage.cpp collectionpage/collectionshortcutpage.cpp - collectionpage/collectionviewwidget.cpp ) set(kmailprivate_configuredialog_LIB_SRCS configuredialog/configagentdelegate.cpp diff --git a/src/collectionpage/collectionviewpage.cpp b/src/collectionpage/collectionviewpage.cpp index c2ddc8812..f0ed5b5c1 100644 --- a/src/collectionpage/collectionviewpage.cpp +++ b/src/collectionpage/collectionviewpage.cpp @@ -19,7 +19,6 @@ #include #include #include -#include "collectionviewwidget.h" #include "kmail_debug.h" #include @@ -27,6 +26,7 @@ #include #include +#include #include using namespace MailCommon; @@ -98,7 +98,7 @@ void CollectionViewPage::init(const Akonadi::Collection &col) connect(mNormalIconButton, &KIconButton::iconChanged, this, &CollectionViewPage::slotChangeIcon); } - mCollectionViewWidget = new CollectionViewWidget(this); + mCollectionViewWidget = new MailCommon::CollectionViewWidget(this); topLayout->addWidget(mCollectionViewWidget); topLayout->addStretch(100); diff --git a/src/collectionpage/collectionviewpage.h b/src/collectionpage/collectionviewpage.h index 760d0db77..86ea7f1d3 100644 --- a/src/collectionpage/collectionviewpage.h +++ b/src/collectionpage/collectionviewpage.h @@ -24,7 +24,9 @@ class AggregationComboBox; class ThemeComboBox; } } - +namespace MailCommon { +class CollectionViewWidget; +} class CollectionViewPage : public Akonadi::CollectionPropertiesPage { Q_OBJECT @@ -39,7 +41,7 @@ private: void slotChangeIcon(const QString &icon); void init(const Akonadi::Collection &); - CollectionViewWidget *mCollectionViewWidget = nullptr; + MailCommon::CollectionViewWidget *mCollectionViewWidget = nullptr; QSharedPointer mFolderCollection; QCheckBox *mIconsCheckBox = nullptr; QLabel *mNormalIconLabel = nullptr; diff --git a/src/collectionpage/collectionviewwidget.cpp b/src/collectionpage/collectionviewwidget.cpp deleted file mode 100644 index 8700af871..000000000 --- a/src/collectionpage/collectionviewwidget.cpp +++ /dev/null @@ -1,211 +0,0 @@ -/* - SPDX-FileCopyrightText: 2020 Laurent Montel - - SPDX-License-Identifier: GPL-2.0-or-later -*/ - -#include "collectionviewwidget.h" -#include "kmail_debug.h" -#include -#include - -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include - -CollectionViewWidget::CollectionViewWidget(QWidget *parent) - : QWidget(parent) -{ - QVBoxLayout *topLayout = new QVBoxLayout(this); - topLayout->setObjectName(QStringLiteral("topLayout")); - topLayout->setContentsMargins({}); - - // sender or receiver column - const QString senderReceiverColumnTip = i18n("Show Sender/Receiver Column in List of Messages"); - - QLabel *senderReceiverColumnLabel = new QLabel(i18n("Sho&w column:"), this); - mShowSenderReceiverComboBox = new QComboBox(this); - mShowSenderReceiverComboBox->setToolTip(senderReceiverColumnTip); - senderReceiverColumnLabel->setBuddy(mShowSenderReceiverComboBox); - mShowSenderReceiverComboBox->insertItem(0, i18nc("@item:inlistbox Show default value.", "Default")); - mShowSenderReceiverComboBox->insertItem(1, i18nc("@item:inlistbox Show sender.", "Sender")); - mShowSenderReceiverComboBox->insertItem(2, i18nc("@item:inlistbox Show receiver.", "Receiver")); - - QHBoxLayout *senderReceiverColumnHLayout = new QHBoxLayout(); - senderReceiverColumnHLayout->addWidget(senderReceiverColumnLabel); - senderReceiverColumnHLayout->addWidget(mShowSenderReceiverComboBox); - topLayout->addLayout(senderReceiverColumnHLayout); - - // message list - QGroupBox *messageListGroup = new QGroupBox(i18n("Message List"), this); - QVBoxLayout *messageListGroupLayout = new QVBoxLayout(messageListGroup); - topLayout->addWidget(messageListGroup); - - // message list aggregation - mUseDefaultAggregationCheckBox = new QCheckBox(i18n("Use default aggregation"), messageListGroup); - messageListGroupLayout->addWidget(mUseDefaultAggregationCheckBox); - connect(mUseDefaultAggregationCheckBox, &QCheckBox::stateChanged, this, &CollectionViewWidget::slotAggregationCheckboxChanged); - - mAggregationComboBox = new MessageList::Utils::AggregationComboBox(messageListGroup); - - QLabel *aggregationLabel = new QLabel(i18n("Aggregation"), messageListGroup); - aggregationLabel->setBuddy(mAggregationComboBox); - - using MessageList::Utils::AggregationConfigButton; - AggregationConfigButton *aggregationConfigButton = new AggregationConfigButton(messageListGroup, mAggregationComboBox); - // Make sure any changes made in the aggregations configure dialog are reflected in the combo. - connect(aggregationConfigButton, &AggregationConfigButton::configureDialogCompleted, this, &CollectionViewWidget::slotSelectFolderAggregation); - - QHBoxLayout *aggregationLayout = new QHBoxLayout(); - aggregationLayout->addWidget(aggregationLabel, 1); - aggregationLayout->addWidget(mAggregationComboBox, 1); - aggregationLayout->addWidget(aggregationConfigButton, 0); - messageListGroupLayout->addLayout(aggregationLayout); - - // message list theme - mUseDefaultThemeCheckBox = new QCheckBox(i18n("Use default theme"), messageListGroup); - messageListGroupLayout->addWidget(mUseDefaultThemeCheckBox); - connect(mUseDefaultThemeCheckBox, &QCheckBox::stateChanged, this, &CollectionViewWidget::slotThemeCheckboxChanged); - - mThemeComboBox = new MessageList::Utils::ThemeComboBox(messageListGroup); - - QLabel *themeLabel = new QLabel(i18n("Theme"), messageListGroup); - themeLabel->setBuddy(mThemeComboBox); - - using MessageList::Utils::ThemeConfigButton; - ThemeConfigButton *themeConfigButton = new ThemeConfigButton(messageListGroup, mThemeComboBox); - // Make sure any changes made in the themes configure dialog are reflected in the combo. - connect(themeConfigButton, &ThemeConfigButton::configureDialogCompleted, this, &CollectionViewWidget::slotSelectFolderTheme); - - QHBoxLayout *themeLayout = new QHBoxLayout(); - themeLayout->addWidget(themeLabel, 1); - themeLayout->addWidget(mThemeComboBox, 1); - themeLayout->addWidget(themeConfigButton, 0); - messageListGroupLayout->addLayout(themeLayout); - - // Message Default Format - QGroupBox *messageFormatGroup = new QGroupBox(i18n("Message Default Format"), this); - QVBoxLayout *messageFormatGroupLayout = new QVBoxLayout(messageFormatGroup); - mPreferHtmlToText = new QRadioButton(i18n("Prefer HTML to text"), this); - messageFormatGroupLayout->addWidget(mPreferHtmlToText); - mPreferTextToHtml = new QRadioButton(i18n("Prefer text to HTML"), this); - messageFormatGroupLayout->addWidget(mPreferTextToHtml); - mUseGlobalSettings = new QRadioButton(i18n("Use Global Settings"), this); - messageFormatGroupLayout->addWidget(mUseGlobalSettings); - - topLayout->addWidget(messageFormatGroup); - - topLayout->addStretch(100); -} - -CollectionViewWidget::~CollectionViewWidget() -{ - -} - -void CollectionViewWidget::load(const Akonadi::Collection &col) -{ - mFolderCollection = MailCommon::FolderSettings::forCollection(col); - if (col.hasAttribute()) { - const bool outboundFolder = col.attribute()->isOutboundFolder(); - if (outboundFolder) { - mShowSenderReceiverComboBox->setCurrentIndex(2); - } else { - mShowSenderReceiverComboBox->setCurrentIndex(1); - } - } else { - mShowSenderReceiverComboBox->setCurrentIndex(0); - } - mShowSenderReceiverValue = mShowSenderReceiverComboBox->currentIndex(); - - // message list aggregation - slotSelectFolderAggregation(); - - // message list theme - slotSelectFolderTheme(); - - const MessageViewer::Viewer::DisplayFormatMessage formatMessage = mFolderCollection->formatMessage(); - switch (formatMessage) { - case MessageViewer::Viewer::Html: - mPreferHtmlToText->setChecked(true); - break; - case MessageViewer::Viewer::Text: - mPreferTextToHtml->setChecked(true); - break; - case MessageViewer::Viewer::UseGlobalSetting: - mUseGlobalSettings->setChecked(true); - break; - default: - qCDebug(KMAIL_LOG) << "No settings defined"; - break; - } -} - -void CollectionViewWidget::save(Akonadi::Collection &col) -{ - const int currentIndex = mShowSenderReceiverComboBox->currentIndex(); - if (mShowSenderReceiverValue != currentIndex) { - if (currentIndex == 1) { - Akonadi::MessageFolderAttribute *messageFolder = col.attribute(Akonadi::Collection::AddIfMissing); - messageFolder->setOutboundFolder(false); - } else if (currentIndex == 2) { - Akonadi::MessageFolderAttribute *messageFolder = col.attribute(Akonadi::Collection::AddIfMissing); - messageFolder->setOutboundFolder(true); - } else { - col.removeAttribute(); - } - } - // message list theme - const bool usePrivateTheme = !mUseDefaultThemeCheckBox->isChecked(); - mThemeComboBox->writeStorageModelConfig(QString::number(mCurrentCollection.id()), usePrivateTheme); - // message list aggregation - const bool usePrivateAggregation = !mUseDefaultAggregationCheckBox->isChecked(); - mAggregationComboBox->writeStorageModelConfig(QString::number(mCurrentCollection.id()), usePrivateAggregation); - - MessageViewer::Viewer::DisplayFormatMessage formatMessage = MessageViewer::Viewer::Unknown; - if (mPreferHtmlToText->isChecked()) { - formatMessage = MessageViewer::Viewer::Html; - } else if (mPreferTextToHtml->isChecked()) { - formatMessage = MessageViewer::Viewer::Text; - } else if (mUseGlobalSettings->isChecked()) { - formatMessage = MessageViewer::Viewer::UseGlobalSetting; - } else { - qCDebug(KMAIL_LOG) << "No settings defined"; - } - mFolderCollection->setFormatMessage(formatMessage); - mFolderCollection->writeConfig(); -} - -void CollectionViewWidget::slotSelectFolderAggregation() -{ - bool usesPrivateAggregation = false; - mAggregationComboBox->readStorageModelConfig(mCurrentCollection, usesPrivateAggregation); - mUseDefaultAggregationCheckBox->setChecked(!usesPrivateAggregation); -} - -void CollectionViewWidget::slotSelectFolderTheme() -{ - bool usesPrivateTheme = false; - mThemeComboBox->readStorageModelConfig(mCurrentCollection, usesPrivateTheme); - mUseDefaultThemeCheckBox->setChecked(!usesPrivateTheme); -} - -void CollectionViewWidget::slotAggregationCheckboxChanged() -{ - mAggregationComboBox->setEnabled(!mUseDefaultAggregationCheckBox->isChecked()); -} - -void CollectionViewWidget::slotThemeCheckboxChanged() -{ - mThemeComboBox->setEnabled(!mUseDefaultThemeCheckBox->isChecked()); -} diff --git a/src/collectionpage/collectionviewwidget.h b/src/collectionpage/collectionviewwidget.h deleted file mode 100644 index 3d829c9f8..000000000 --- a/src/collectionpage/collectionviewwidget.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - SPDX-FileCopyrightText: 2020 Laurent Montel - - SPDX-License-Identifier: GPL-2.0-or-later -*/ - -#ifndef COLLECTIONVIEWWIDGET_H -#define COLLECTIONVIEWWIDGET_H - -#include -#include -#include -class QCheckBox; -class QComboBox; -class QRadioButton; -namespace MessageList { -namespace Utils { -class AggregationComboBox; -class ThemeComboBox; -} -} -class CollectionViewWidget : public QWidget -{ - Q_OBJECT -public: - explicit CollectionViewWidget(QWidget *parent = nullptr); - ~CollectionViewWidget(); - void load(const Akonadi::Collection &col); - void save(Akonadi::Collection &col); -private: - void slotSelectFolderAggregation(); - void slotSelectFolderTheme(); - void slotThemeCheckboxChanged(); - void slotAggregationCheckboxChanged(); - QSharedPointer mFolderCollection; - QCheckBox *mIconsCheckBox = nullptr; - QComboBox *mShowSenderReceiverComboBox = nullptr; - QCheckBox *mUseDefaultAggregationCheckBox = nullptr; - MessageList::Utils::AggregationComboBox *mAggregationComboBox = nullptr; - QCheckBox *mUseDefaultThemeCheckBox = nullptr; - MessageList::Utils::ThemeComboBox *mThemeComboBox = nullptr; - QRadioButton *mPreferHtmlToText = nullptr; - QRadioButton *mPreferTextToHtml = nullptr; - QRadioButton *mUseGlobalSettings = nullptr; - Akonadi::Collection mCurrentCollection; - int mShowSenderReceiverValue = -1; -}; - -#endif // COLLECTIONVIEWWIDGET_H