File indexing completed on 2025-02-09 04:22:49
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 "kabstractidletimepoller_p.h" 0009 0010 #include <QHash> 0011 #include <memory> 0012 0013 class IdleManagerKwin; 0014 class IdleManagerExt; 0015 0016 class IdleTimeout; 0017 0018 class Poller : public KAbstractIdleTimePoller 0019 { 0020 Q_OBJECT 0021 Q_PLUGIN_METADATA(IID KAbstractIdleTimePoller_iid FILE "wayland.json") 0022 Q_INTERFACES(KAbstractIdleTimePoller) 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 };