File indexing completed on 2024-05-12 17:02:08

0001 /*
0002     SPDX-FileCopyrightText: 2020 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "session.h"
0010 
0011 #include <QDBusUnixFileDescriptor>
0012 
0013 namespace KWin
0014 {
0015 
0016 class ConsoleKitSession : public Session
0017 {
0018     Q_OBJECT
0019 
0020 public:
0021     static std::unique_ptr<ConsoleKitSession> create();
0022     ~ConsoleKitSession() override;
0023 
0024     bool isActive() const override;
0025     Capabilities capabilities() const override;
0026     QString seat() const override;
0027     uint terminal() const override;
0028     int openRestricted(const QString &fileName) override;
0029     void closeRestricted(int fileDescriptor) override;
0030     void switchTo(uint terminal) override;
0031 
0032 private Q_SLOTS:
0033     void handleResumeDevice(uint major, uint minor, QDBusUnixFileDescriptor fileDescriptor);
0034     void handlePauseDevice(uint major, uint minor, const QString &type);
0035     void handlePropertiesChanged(const QString &interfaceName, const QVariantMap &properties);
0036     void handlePrepareForSleep(bool sleep);
0037 
0038 private:
0039     explicit ConsoleKitSession(const QString &sessionPath);
0040 
0041     bool initialize();
0042     void updateActive(bool active);
0043 
0044     QString m_sessionPath;
0045     QString m_seatId;
0046     QString m_seatPath;
0047     uint m_terminal = 0;
0048     bool m_isActive = false;
0049 };
0050 
0051 } // namespace KWin