File indexing completed on 2025-03-09 04:54:44
0001 /* 0002 SPDX-FileCopyrightText: 2009 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.net 0003 SPDX-FileCopyrightText: 2009 Andras Mantia <andras@kdab.net> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "configurewidget.h" 0009 #include "messageviewer_debug.h" 0010 #include "settings/messageviewersettings.h" 0011 #include "ui_settings.h" 0012 #include <MimeTreeParser/NodeHelper> 0013 0014 #include "MessageCore/MessageCoreSettings" 0015 0016 #include <KLocalizedString> 0017 0018 using namespace MessageViewer; 0019 0020 class MessageViewer::ConfigureWidgetPrivate 0021 { 0022 public: 0023 ConfigureWidgetPrivate() = default; 0024 0025 ~ConfigureWidgetPrivate() 0026 { 0027 delete mSettingsUi; 0028 mSettingsUi = nullptr; 0029 } 0030 0031 Ui_Settings *mSettingsUi = nullptr; 0032 }; 0033 0034 ConfigureWidget::ConfigureWidget(QWidget *parent) 0035 : QWidget(parent) 0036 , d(new MessageViewer::ConfigureWidgetPrivate) 0037 { 0038 d->mSettingsUi = new Ui_Settings; 0039 d->mSettingsUi->setupUi(this); 0040 layout()->setContentsMargins({}); 0041 0042 QStringList encodings = MimeTreeParser::NodeHelper::supportedEncodings(false); 0043 encodings.prepend(i18n("Auto")); 0044 d->mSettingsUi->overrideCharacterEncoding->addItems(encodings); 0045 d->mSettingsUi->overrideCharacterEncoding->setCurrentIndex(0); 0046 0047 d->mSettingsUi->overrideCharacterEncoding->setWhatsThis(MessageCore::MessageCoreSettings::self()->overrideCharacterEncodingItem()->whatsThis()); 0048 d->mSettingsUi->kcfg_ShrinkQuotes->setWhatsThis(MessageViewer::MessageViewerSettings::self()->shrinkQuotesItem()->whatsThis()); 0049 d->mSettingsUi->kcfg_ShowExpandQuotesMark->setWhatsThis(MessageViewer::MessageViewerSettings::self()->showExpandQuotesMarkItem()->whatsThis()); 0050 connect(d->mSettingsUi->overrideCharacterEncoding, &QComboBox::currentIndexChanged, this, &ConfigureWidget::settingsChanged); 0051 } 0052 0053 ConfigureWidget::~ConfigureWidget() = default; 0054 0055 void ConfigureWidget::readConfig() 0056 { 0057 readCurrentOverrideCodec(); 0058 d->mSettingsUi->kcfg_CollapseQuoteLevelSpin->setEnabled(MessageViewer::MessageViewerSettings::self()->showExpandQuotesMark()); 0059 } 0060 0061 void ConfigureWidget::writeConfig() 0062 { 0063 MessageCore::MessageCoreSettings::self()->setOverrideCharacterEncoding( 0064 d->mSettingsUi->overrideCharacterEncoding->currentIndex() == 0 0065 ? QString() 0066 : MimeTreeParser::NodeHelper::encodingForName(d->mSettingsUi->overrideCharacterEncoding->currentText())); 0067 } 0068 0069 void ConfigureWidget::readCurrentOverrideCodec() 0070 { 0071 const QString ¤tOverrideEncoding = MessageCore::MessageCoreSettings::self()->overrideCharacterEncoding(); 0072 if (currentOverrideEncoding.isEmpty()) { 0073 d->mSettingsUi->overrideCharacterEncoding->setCurrentIndex(0); 0074 return; 0075 } 0076 QStringList encodings = MimeTreeParser::NodeHelper::supportedEncodings(false); 0077 encodings.prepend(i18n("Auto")); 0078 QStringList::ConstIterator it(encodings.constBegin()); 0079 const QStringList::ConstIterator end(encodings.constEnd()); 0080 int i = 0; 0081 for (; it != end; ++it) { 0082 if (MimeTreeParser::NodeHelper::encodingForName(*it) == currentOverrideEncoding) { 0083 d->mSettingsUi->overrideCharacterEncoding->setCurrentIndex(i); 0084 break; 0085 } 0086 ++i; 0087 } 0088 if (i == encodings.size()) { 0089 // the current value of overrideCharacterEncoding is an unknown encoding => reset to Auto 0090 qCWarning(MESSAGEVIEWER_LOG) << "Unknown override character encoding" << currentOverrideEncoding << ". Resetting to Auto."; 0091 d->mSettingsUi->overrideCharacterEncoding->setCurrentIndex(0); 0092 MessageCore::MessageCoreSettings::self()->setOverrideCharacterEncoding(QString()); 0093 } 0094 } 0095 0096 #include "moc_configurewidget.cpp"