File indexing completed on 2024-04-14 03:49:47
0001 /* 0002 This file is part of the KDE Project 0003 SPDX-FileCopyrightText: 2008 Sebastian Trueg <trueg@kde.org> 0004 SPDX-FileCopyrightText: 2010-15 Vishesh Handa <vhanda@kde.org> 0005 0006 SPDX-License-Identifier: LGPL-2.0-or-later 0007 */ 0008 0009 #include "powerstatemonitor.h" 0010 0011 #include <QDBusConnection> 0012 #include <QDBusMessage> 0013 #include <QDBusPendingCallWatcher> 0014 #include <QDBusPendingReply> 0015 0016 using namespace Baloo; 0017 0018 PowerStateMonitor::PowerStateMonitor(QObject* parent) 0019 : QObject(parent) 0020 , m_isOnBattery(true) 0021 { 0022 // monitor the powermanagement to not drain the battery 0023 QDBusConnection::sessionBus().connect(QStringLiteral("org.freedesktop.PowerManagement"), 0024 QStringLiteral("/org/freedesktop/PowerManagement"), 0025 QStringLiteral("org.freedesktop.PowerManagement"), 0026 QStringLiteral("PowerSaveStatusChanged"), 0027 this, SLOT(slotPowerManagementStatusChanged(bool))); 0028 0029 QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.PowerManagement"), 0030 QStringLiteral("/org/freedesktop/PowerManagement"), 0031 QStringLiteral("org.freedesktop.PowerManagement"), 0032 QStringLiteral("GetPowerSaveStatus")); 0033 0034 QDBusPendingCall call = QDBusConnection::sessionBus().asyncCall(msg); 0035 QDBusPendingCallWatcher* watcher = new QDBusPendingCallWatcher(call, this); 0036 connect(watcher, &QDBusPendingCallWatcher::finished, [&](QDBusPendingCallWatcher* watch) { 0037 QDBusPendingReply<bool> reply = *watch; 0038 if (!reply.isError()) { 0039 bool onBattery = reply.argumentAt<0>(); 0040 slotPowerManagementStatusChanged(onBattery); 0041 } else { 0042 slotPowerManagementStatusChanged(false); 0043 } 0044 watch->deleteLater(); 0045 }); 0046 } 0047 0048 void PowerStateMonitor::slotPowerManagementStatusChanged(bool conserveResources) 0049 { 0050 if (m_isOnBattery != conserveResources) { 0051 m_isOnBattery = conserveResources; 0052 Q_EMIT powerManagementStatusChanged(conserveResources); 0053 } 0054 } 0055 0056 #include "moc_powerstatemonitor.cpp"