File indexing completed on 2024-04-21 04:58:16

0001 /* This file is part of the KDE project
0002     SPDX-FileCopyrightText: 2000 Carsten Pfeiffer <pfeiffer@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 // Own
0008 #include "konqhistorysettings.h"
0009 
0010 // KDE
0011 #include <kconfig.h>
0012 #include <ksharedconfig.h>
0013 #include <kconfiggroup.h>
0014 
0015 class KonqHistorySettingsSingleton {
0016 public:
0017     KonqHistorySettings self;
0018 };
0019 
0020 Q_GLOBAL_STATIC(KonqHistorySettingsSingleton, globalHistorySettings)
0021 KonqHistorySettings *KonqHistorySettings::self()
0022 {
0023     return &globalHistorySettings->self;
0024 }
0025 
0026 KonqHistorySettings::KonqHistorySettings()
0027     : QObject(nullptr)
0028 {
0029     m_fontOlderThan.setItalic(true);   // default
0030 
0031     new KonqHistorySettingsAdaptor(this);
0032     const QString dbusPath = QStringLiteral("/KonqHistorySettings");
0033     const QString dbusInterface = QStringLiteral("org.kde.Konqueror.SidebarHistorySettings");
0034     QDBusConnection dbus = QDBusConnection::sessionBus();
0035     dbus.registerObject(dbusPath, this);
0036     dbus.connect(QString(), dbusPath, dbusInterface, QStringLiteral("notifySettingsChanged"), this, SLOT(slotSettingsChanged()));
0037 
0038     readSettings(false);
0039 }
0040 
0041 KonqHistorySettings::~KonqHistorySettings()
0042 {
0043 }
0044 
0045 void KonqHistorySettings::readSettings(bool reparse)
0046 {
0047     KSharedConfigPtr config = KSharedConfig::openConfig(); // read konquerorrc
0048 
0049     if (reparse) {
0050         config->reparseConfiguration();
0051     }
0052 
0053     const KConfigGroup cg(config, "HistorySettings");
0054 
0055     int defaultAction = cg.readEntry("Default Action", 0);
0056     m_defaultAction = defaultAction <= static_cast<int>(Action::OpenNewWindow) ? static_cast<Action>(defaultAction) : Action::Auto;
0057 
0058     m_valueYoungerThan = cg.readEntry("Value youngerThan", 1);
0059     m_valueOlderThan = cg.readEntry("Value olderThan", 2);
0060 
0061     const QString days = QStringLiteral("days");
0062     const QString metricY = cg.readEntry("Metric youngerThan", days);
0063     m_metricYoungerThan = (metricY == days) ? DAYS : MINUTES;
0064     const QString metricO = cg.readEntry("Metric olderThan", days);
0065     m_metricOlderThan = (metricO == days) ? DAYS : MINUTES;
0066 
0067     m_fontYoungerThan = cg.readEntry("Font youngerThan", m_fontYoungerThan);
0068     m_fontOlderThan   = cg.readEntry("Font olderThan", m_fontOlderThan);
0069 
0070     m_detailedTips = cg.readEntry("Detailed Tooltips", true);
0071     m_sortsByName = cg.readEntry("SortHistory", "byDate") == QLatin1String("byName");
0072 }
0073 
0074 void KonqHistorySettings::applySettings()
0075 {
0076     KConfigGroup config(KSharedConfig::openConfig(), "HistorySettings"); // write to konquerorrc
0077 
0078     config.writeEntry("Default Action", static_cast<int>(m_defaultAction));
0079 
0080     config.writeEntry("Value youngerThan", m_valueYoungerThan);
0081     config.writeEntry("Value olderThan", m_valueOlderThan);
0082 
0083     const QString minutes = QStringLiteral("minutes");
0084     const QString days = QStringLiteral("days");
0085     config.writeEntry("Metric youngerThan", m_metricYoungerThan == DAYS ?  days : minutes);
0086     config.writeEntry("Metric olderThan", m_metricOlderThan == DAYS ?  days : minutes);
0087 
0088     config.writeEntry("Font youngerThan", m_fontYoungerThan);
0089     config.writeEntry("Font olderThan", m_fontOlderThan);
0090 
0091     config.writeEntry("Detailed Tooltips", m_detailedTips);
0092     config.writeEntry("SortHistory", m_sortsByName ? "byName" : "byDate");
0093 
0094     // notify konqueror instances about the new configuration
0095     emit notifySettingsChanged();
0096 }
0097 
0098 void KonqHistorySettings::slotSettingsChanged()
0099 {
0100     readSettings(true /*reparse*/);
0101     emit settingsChanged();
0102 }
0103