File indexing completed on 2024-04-21 14:56:11

0001 /*
0002     Copyright 2006-2007 Kevin Ottens <ervin@kde.org>
0003 
0004     This library is free software; you can redistribute it and/or
0005     modify it under the terms of the GNU Lesser General Public
0006     License as published by the Free Software Foundation; either
0007     version 2.1 of the License, or (at your option) version 3, or any
0008     later version accepted by the membership of KDE e.V. (or its
0009     successor approved by the membership of KDE e.V.), which shall
0010     act as a proxy defined in Section 6 of version 3 of the license.
0011 
0012     This library is distributed in the hope that it will be useful,
0013     but WITHOUT ANY WARRANTY; without even the implied warranty of
0014     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0015     Lesser General Public License for more details.
0016 
0017     You should have received a copy of the GNU Lesser General Public
0018     License along with this library. If not, see <http://www.gnu.org/licenses/>.
0019 */
0020 
0021 #ifndef SOLID_POWERMANAGEMENT_P_H
0022 #define SOLID_POWERMANAGEMENT_P_H
0023 
0024 #include "powermanagement.h"
0025 
0026 #include "inhibitinterface.h"
0027 #include "powermanagementinterface.h"
0028 #include "policyagentinterface.h"
0029 
0030 #include <QDBusServiceWatcher>
0031 
0032 namespace Solid
0033 {
0034 class PowerManagementPrivate : public PowerManagement::Notifier
0035 {
0036     Q_OBJECT
0037 public:
0038     enum RequiredPolicy {
0039         None = 0,
0040         InterruptSession = 1,
0041         ChangeProfile = 2,
0042         ChangeScreenSettings = 4
0043     };
0044 
0045     PowerManagementPrivate();
0046     ~PowerManagementPrivate() override;
0047 
0048 public Q_SLOTS:
0049     void slotCanSuspendChanged(bool newState);
0050     void slotCanHibernateChanged(bool newState);
0051     void slotCanHybridSuspendChanged(bool newState);
0052     void slotPowerSaveStatusChanged(bool newState);
0053     void slotServiceRegistered(const QString &serviceName);
0054     void slotServiceUnregistered(const QString &serviceName);
0055 
0056 public:
0057     OrgFreedesktopPowerManagementInterface managerIface;
0058     OrgKdeSolidPowerManagementPolicyAgentInterface policyAgentIface;
0059     OrgFreedesktopPowerManagementInhibitInterface inhibitIface;
0060     QDBusServiceWatcher serviceWatcher;
0061 
0062     bool powerSaveStatus;
0063     QSet<Solid::PowerManagement::SleepState> supportedSleepStates;
0064     QHash<uint, uint> screensaverCookiesForPowerDevilCookies;
0065 };
0066 }
0067 
0068 #endif