File indexing completed on 2024-05-12 05:29:27

0001 /*
0002     SPDX-FileCopyrightText: 2023 Fushan Wen <qydwhotmail@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "gsd-xsettings-manager.h"
0008 
0009 #include <QDBusConnection>
0010 #include <QDateTime>
0011 
0012 #include "config_editor/settings_ini.h"
0013 #include "gsd_xsettings_manager_adaptor.h"
0014 
0015 namespace
0016 {
0017 inline constexpr QLatin1String GTK_SETTINGS_DBUS_PATH{"/org/gtk/Settings"};
0018 inline constexpr QLatin1String GTK_SETTINGS_DBUS_NAME{"org.gtk.Settings"};
0019 }
0020 
0021 GSDXSettingsManager::GSDXSettingsManager(QObject *parent)
0022     : QObject(parent)
0023 {
0024     new GSDXSettingsManagerAdaptor(this);
0025 
0026     QDBusConnection dbus = QDBusConnection::sessionBus();
0027     dbus.registerObject(GTK_SETTINGS_DBUS_PATH, this);
0028     dbus.registerService(GTK_SETTINGS_DBUS_NAME);
0029 }
0030 
0031 GSDXSettingsManager::~GSDXSettingsManager()
0032 {
0033 }
0034 
0035 void GSDXSettingsManager::modulesChanged()
0036 {
0037     QDBusMessage msg =
0038         QDBusMessage::createSignal(GTK_SETTINGS_DBUS_PATH, QStringLiteral("org.freedesktop.DBus.Properties"), QStringLiteral("PropertiesChanged"));
0039     QVariantList args{
0040         GTK_SETTINGS_DBUS_NAME,
0041         QVariantMap{{QStringLiteral("Modules"), Modules()}},
0042         QStringList(),
0043     };
0044     msg.setArguments(args);
0045     QDBusConnection::sessionBus().send(msg);
0046 }
0047 
0048 void GSDXSettingsManager::enableAnimationsChanged()
0049 {
0050     QDBusMessage msg =
0051         QDBusMessage::createSignal(GTK_SETTINGS_DBUS_PATH, QStringLiteral("org.freedesktop.DBus.Properties"), QStringLiteral("PropertiesChanged"));
0052     QVariantList args{
0053         GTK_SETTINGS_DBUS_NAME,
0054         QVariantMap{{QStringLiteral("EnableAnimations"), EnableAnimations()}},
0055         QStringList(),
0056     };
0057     msg.setArguments(args);
0058     QDBusConnection::sessionBus().send(msg);
0059 }
0060 
0061 qlonglong GSDXSettingsManager::FontconfigTimestamp() const
0062 {
0063     return QDateTime::currentSecsSinceEpoch();
0064 }
0065 
0066 QString GSDXSettingsManager::Modules() const
0067 {
0068     return SettingsIniEditor::value(QStringLiteral("gtk-modules"), 3);
0069 }
0070 
0071 bool GSDXSettingsManager::EnableAnimations() const
0072 {
0073     return SettingsIniEditor::value(QStringLiteral("gtk-enable-animations"), 3) == QLatin1String("true");
0074 }
0075 
0076 #include "moc_gsd-xsettings-manager.cpp"