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

0001 /*
0002  *   SPDX-FileCopyrightText: 2015-2016 Ivan Cukic <ivan.cukic@kde.org>
0003  *
0004  *   SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 #include <Config.h>
0008 
0009 #include <functional>
0010 
0011 #include <QStandardPaths>
0012 
0013 #include <KDirWatch>
0014 
0015 #include <utils/d_ptr_implementation.h>
0016 
0017 class Config::Private
0018 {
0019 public:
0020     Private(Config *parent)
0021         : q(parent)
0022         , mainConfigFile(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + QStringLiteral("/kactivitymanagerdrc"))
0023         , pluginConfigFile(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + QStringLiteral("/kactivitymanagerd-pluginsrc"))
0024     {
0025         using namespace std::placeholders;
0026 
0027         watcher.addFile(mainConfigFile);
0028         watcher.addFile(pluginConfigFile);
0029 
0030         QObject::connect(&watcher, &KDirWatch::created, q, std::bind(&Private::configFileChanged, this, _1));
0031         QObject::connect(&watcher, &KDirWatch::dirty, q, std::bind(&Private::configFileChanged, this, _1));
0032     }
0033 
0034     void configFileChanged(const QString &file)
0035     {
0036         if (file == pluginConfigFile) {
0037             Q_EMIT q->pluginConfigChanged();
0038         } else {
0039             Q_EMIT q->mainConfigChanged();
0040         }
0041     }
0042 
0043     KDirWatch watcher;
0044 
0045 private:
0046     Config *const q;
0047 
0048     const QString mainConfigFile;
0049     const QString pluginConfigFile;
0050 };
0051 
0052 Config::Config(QObject *parent)
0053     : Module(QStringLiteral("config"), parent)
0054     , d(this)
0055 {
0056 }
0057 
0058 Config::~Config()
0059 {
0060 }
0061 
0062 #include "moc_Config.cpp"