File indexing completed on 2024-04-28 15:25:35

0001 /*
0002     SPDX-FileCopyrightText: 2021 David Edmundson <davidedmundson@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 #pragma once
0007 
0008 #include "abstractsystempoller.h"
0009 
0010 #include <QHash>
0011 #include <memory>
0012 
0013 class IdleManagerKwin;
0014 class IdleManagerExt;
0015 
0016 class IdleTimeout;
0017 
0018 class Poller : public AbstractSystemPoller
0019 {
0020     Q_OBJECT
0021     Q_PLUGIN_METADATA(IID "org.kde.kidletime.AbstractSystemPoller" FILE "wayland.json")
0022     Q_INTERFACES(AbstractSystemPoller)
0023 
0024 public:
0025     explicit Poller(QObject *parent = nullptr);
0026     ~Poller() override;
0027 
0028     bool isAvailable() override;
0029     bool setUpPoller() override {
0030         return true;
0031     }
0032     void unloadPoller() override {}
0033 
0034 public Q_SLOTS:
0035     void addTimeout(int nextTimeout) override;
0036     void removeTimeout(int nextTimeout) override;
0037     QList<int> timeouts() const override;
0038     int forcePollRequest() override;
0039     void catchIdleEvent() override;
0040     void stopCatchingIdleEvents() override;
0041     void simulateUserActivity() override;
0042 
0043 private:
0044     bool initWayland();
0045     IdleTimeout* createTimeout(int timeout);
0046 
0047     QScopedPointer<IdleManagerKwin> m_idleManagerKwin;
0048     QScopedPointer<IdleManagerExt> m_idleManagerExt;
0049     QHash<int, QSharedPointer<IdleTimeout>> m_timeouts;
0050     QScopedPointer<IdleTimeout> m_catchResumeTimeout;
0051 
0052 };