2014-11-13 19:30:51 +02:00
|
|
|
/*
|
|
|
|
* Copyright 2007 Aaron Seigo <aseigo@kde.org>
|
|
|
|
* Copyright 2007-2008 Sebastian Kuegler <sebas@kde.org>
|
|
|
|
* CopyRight 2007 Maor Vanmak <mvanmak1@gmail.com>
|
|
|
|
* Copyright 2008 Dario Freddi <drf54321@gmail.com>
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU Library General Public License version 2 as
|
|
|
|
* published by the Free Software Foundation
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Library General Public
|
|
|
|
* License along with this program; if not, write to the
|
|
|
|
* Free Software Foundation, Inc.,
|
|
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "powermanagementengine.h"
|
2023-09-02 19:12:16 +03:00
|
|
|
#include "powermanagementservice.h"
|
2014-11-13 19:30:51 +02:00
|
|
|
|
2023-09-02 19:12:16 +03:00
|
|
|
#include <QDBusConnectionInterface>
|
|
|
|
#include <QDBusConnection>
|
|
|
|
#include <QDBusMetaType>
|
2014-11-13 19:30:51 +02:00
|
|
|
|
|
|
|
#include <KDebug>
|
|
|
|
#include <KLocale>
|
|
|
|
#include <KStandardDirs>
|
|
|
|
#include <KIdleTime>
|
2023-09-02 19:12:16 +03:00
|
|
|
#include <Solid/PowerManagement>
|
2014-11-13 19:30:51 +02:00
|
|
|
#include <Plasma/DataContainer>
|
|
|
|
|
|
|
|
typedef QMap< QString, QString > StringStringMap;
|
|
|
|
Q_DECLARE_METATYPE(StringStringMap)
|
|
|
|
|
|
|
|
PowermanagementEngine::PowermanagementEngine(QObject* parent, const QVariantList& args)
|
2023-09-02 19:12:16 +03:00
|
|
|
: Plasma::DataEngine(parent, args)
|
2014-11-13 19:30:51 +02:00
|
|
|
{
|
2023-09-02 19:12:16 +03:00
|
|
|
qDBusRegisterMetaType<StringStringMap>();
|
2014-11-13 19:30:51 +02:00
|
|
|
|
2023-09-02 19:12:16 +03:00
|
|
|
m_sources << "Sleep States" << "PowerDevil";
|
|
|
|
}
|
2014-11-13 19:30:51 +02:00
|
|
|
|
|
|
|
void PowermanagementEngine::init()
|
|
|
|
{
|
2022-04-20 02:23:07 +03:00
|
|
|
if (QDBusConnection::sessionBus().interface()->isServiceRegistered("org.freedesktop.PowerManagement")) {
|
2014-11-13 19:30:51 +02:00
|
|
|
sourceRequestEvent("PowerDevil");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
QStringList PowermanagementEngine::sources() const
|
|
|
|
{
|
|
|
|
return m_sources;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool PowermanagementEngine::sourceRequestEvent(const QString &name)
|
|
|
|
{
|
2023-09-02 19:12:16 +03:00
|
|
|
if (name == "Sleep States") {
|
|
|
|
const QSet<Solid::PowerManagement::SleepState> sleepstates = Solid::PowerManagement::supportedSleepStates();
|
2014-11-13 19:30:51 +02:00
|
|
|
// We first set all possible sleepstates to false, then enable the ones that are available
|
|
|
|
setData("Sleep States", "Suspend", false);
|
|
|
|
setData("Sleep States", "Hibernate", false);
|
2022-12-01 23:54:21 +02:00
|
|
|
setData("Sleep States", "Hybrid Suspend", false);
|
2014-11-13 19:30:51 +02:00
|
|
|
|
|
|
|
foreach (const Solid::PowerManagement::SleepState &sleepstate, sleepstates) {
|
2022-12-01 23:54:21 +02:00
|
|
|
if (sleepstate == Solid::PowerManagement::SuspendState) {
|
2014-11-13 19:30:51 +02:00
|
|
|
setData("Sleep States", "Suspend", true);
|
|
|
|
} else if (sleepstate == Solid::PowerManagement::HibernateState) {
|
|
|
|
setData("Sleep States", "Hibernate", true);
|
2022-12-01 23:54:21 +02:00
|
|
|
} else if (sleepstate == Solid::PowerManagement::HybridSuspendState) {
|
|
|
|
setData("Sleep States", "Hybrid Suspend", true);
|
2014-11-13 19:30:51 +02:00
|
|
|
}
|
|
|
|
//kDebug() << "Sleepstate \"" << sleepstate << "\" supported.";
|
|
|
|
}
|
|
|
|
} else if (name == "PowerDevil") {
|
2022-04-20 02:23:07 +03:00
|
|
|
;
|
2014-11-13 19:30:51 +02:00
|
|
|
//any info concerning lock screen/screensaver goes here
|
|
|
|
} else if (name == "UserActivity") {
|
|
|
|
setData("UserActivity", "IdleTime", KIdleTime::instance()->idleTime());
|
|
|
|
} else {
|
|
|
|
kDebug() << "Data for '" << name << "' not found";
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool PowermanagementEngine::updateSourceEvent(const QString &source)
|
|
|
|
{
|
|
|
|
if (source == "UserActivity") {
|
|
|
|
setData("UserActivity", "IdleTime", KIdleTime::instance()->idleTime());
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return Plasma::DataEngine::updateSourceEvent(source);
|
|
|
|
}
|
|
|
|
|
|
|
|
Plasma::Service* PowermanagementEngine::serviceForSource(const QString &source)
|
|
|
|
{
|
|
|
|
if (source == "PowerDevil") {
|
|
|
|
return new PowerManagementService(this);
|
|
|
|
}
|
2023-09-02 19:12:16 +03:00
|
|
|
return nullptr;
|
2014-11-13 19:30:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
K_EXPORT_PLASMA_DATAENGINE(powermanagement, PowermanagementEngine)
|
|
|
|
|
2015-02-27 09:28:46 +00:00
|
|
|
#include "moc_powermanagementengine.cpp"
|