parent
b8845db050
commit
eb4d32da60
6 changed files with 7 additions and 266 deletions
@ -1,211 +0,0 @@ |
|||||||
/*
|
|
||||||
SPDX-FileCopyrightText: 2020 Laurent Montel <montel@kde.org> |
|
||||||
|
|
||||||
SPDX-License-Identifier: GPL-2.0-or-later |
|
||||||
*/ |
|
||||||
|
|
||||||
#include "collectionviewwidget.h" |
|
||||||
#include "kmail_debug.h" |
|
||||||
#include <QVBoxLayout> |
|
||||||
#include <KLocalizedString> |
|
||||||
|
|
||||||
#include <MessageList/AggregationComboBox> |
|
||||||
#include <MessageList/AggregationConfigButton> |
|
||||||
#include <MessageList/ThemeComboBox> |
|
||||||
#include <MessageList/ThemeConfigButton> |
|
||||||
#include <Akonadi/KMime/MessageFolderAttribute> |
|
||||||
|
|
||||||
#include <MessageViewer/Viewer> |
|
||||||
|
|
||||||
#include <QLabel> |
|
||||||
#include <QComboBox> |
|
||||||
#include <QGroupBox> |
|
||||||
#include <QCheckBox> |
|
||||||
#include <QRadioButton> |
|
||||||
|
|
||||||
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<Akonadi::MessageFolderAttribute>()) { |
|
||||||
const bool outboundFolder = col.attribute<Akonadi::MessageFolderAttribute>()->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::MessageFolderAttribute>(Akonadi::Collection::AddIfMissing); |
|
||||||
messageFolder->setOutboundFolder(false); |
|
||||||
} else if (currentIndex == 2) { |
|
||||||
Akonadi::MessageFolderAttribute *messageFolder = col.attribute<Akonadi::MessageFolderAttribute>(Akonadi::Collection::AddIfMissing); |
|
||||||
messageFolder->setOutboundFolder(true); |
|
||||||
} else { |
|
||||||
col.removeAttribute<Akonadi::MessageFolderAttribute>(); |
|
||||||
} |
|
||||||
} |
|
||||||
// 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()); |
|
||||||
} |
|
||||||
@ -1,49 +0,0 @@ |
|||||||
/*
|
|
||||||
SPDX-FileCopyrightText: 2020 Laurent Montel <montel@kde.org> |
|
||||||
|
|
||||||
SPDX-License-Identifier: GPL-2.0-or-later |
|
||||||
*/ |
|
||||||
|
|
||||||
#ifndef COLLECTIONVIEWWIDGET_H |
|
||||||
#define COLLECTIONVIEWWIDGET_H |
|
||||||
|
|
||||||
#include <QSharedPointer> |
|
||||||
#include <QWidget> |
|
||||||
#include <MailCommon/FolderSettings> |
|
||||||
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<MailCommon::FolderSettings> 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
|
|
||||||
Loading…
Reference in new issue