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