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"