File indexing completed on 2024-04-28 05:10:44
0001 /* 0002 This file is part of Akregator. 0003 SPDX-FileCopyrightText: 2008 Frank Osterfeld <osterfeld@kde.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0 0006 */ 0007 0008 #include "akregator_config_archive.h" 0009 #include "ui_settings_archive.h" 0010 #include <KAboutData> 0011 #include <KLocalizedString> 0012 #include <KPluginFactory> 0013 0014 #include <QButtonGroup> 0015 #include <QVBoxLayout> 0016 0017 using namespace Akregator; 0018 0019 K_PLUGIN_CLASS_WITH_JSON(KCMAkregatorArchiveConfig, "akregator_config_archive.json") 0020 0021 KCMAkregatorArchiveConfig::KCMAkregatorArchiveConfig(QObject *parent, const KPluginMetaData &data) 0022 : KCModule(parent, data) 0023 , m_widget(new QWidget(widget())) 0024 { 0025 Ui::SettingsArchive m_ui; 0026 m_ui.setupUi(m_widget); 0027 auto layout = new QVBoxLayout(widget()); 0028 layout->addWidget(m_widget); 0029 0030 connect(m_ui.rb_LimitArticleNumber, &QAbstractButton::toggled, m_ui.kcfg_MaxArticleNumber, &QWidget::setEnabled); 0031 connect(m_ui.rb_LimitArticleAge, &QAbstractButton::toggled, m_ui.kcfg_MaxArticleAge, &QWidget::setEnabled); 0032 0033 m_ui.kcfg_MaxArticleNumber->setSuffix(ki18ncp("Limit feed archive size to:", " article", " articles")); 0034 m_ui.kcfg_MaxArticleAge->setSuffix(ki18ncp("Delete articles older than:", " day", " days")); 0035 m_archiveModeGroup = new QButtonGroup(this); 0036 m_archiveModeGroup->addButton(m_ui.rb_KeepAllArticles, Settings::EnumArchiveMode::keepAllArticles); 0037 m_archiveModeGroup->addButton(m_ui.rb_LimitArticleNumber, Settings::EnumArchiveMode::limitArticleNumber); 0038 m_archiveModeGroup->addButton(m_ui.rb_LimitArticleAge, Settings::EnumArchiveMode::limitArticleAge); 0039 m_archiveModeGroup->addButton(m_ui.rb_DisableArchiving, Settings::EnumArchiveMode::disableArchiving); 0040 connect(m_archiveModeGroup, &QButtonGroup::buttonClicked, this, &KCMAkregatorArchiveConfig::markAsChanged); 0041 0042 addConfig(Settings::self(), m_widget); 0043 } 0044 0045 void KCMAkregatorArchiveConfig::load() 0046 { 0047 setArchiveMode(Settings::archiveMode()); 0048 KCModule::load(); 0049 } 0050 0051 void KCMAkregatorArchiveConfig::save() 0052 { 0053 Settings::setArchiveMode(archiveMode()); 0054 KCModule::save(); 0055 } 0056 0057 void KCMAkregatorArchiveConfig::setArchiveMode(int mode) 0058 { 0059 QAbstractButton *const b = m_archiveModeGroup->button(mode); 0060 if (b) { 0061 b->setChecked(true); 0062 } else { 0063 qWarning() << QStringLiteral("No button for %1 registered, ignoring call").arg(mode); 0064 } 0065 } 0066 0067 int KCMAkregatorArchiveConfig::archiveMode() const 0068 { 0069 const int id = m_archiveModeGroup->checkedId(); 0070 if (id < 0 || id >= Settings::EnumArchiveMode::COUNT) { 0071 return Settings::EnumArchiveMode::keepAllArticles; 0072 } 0073 return id; 0074 } 0075 0076 #include "akregator_config_archive.moc" 0077 0078 #include "moc_akregator_config_archive.cpp"