/* SPDX-FileCopyrightText: 2016 Marco Martin SPDX-License-Identifier: LGPL-2.0-or-later */ #pragma once #include #include #include #include #include #include #include class ScreenPool : public QObject, public QAbstractNativeEventFilter { Q_OBJECT public: explicit ScreenPool(const KSharedConfig::Ptr &config, QObject *parent = nullptr); void load(); ~ScreenPool() override; QString primaryConnector() const; void setPrimaryConnector(const QString &primary); void insertScreenMapping(int id, const QString &connector); int id(const QString &connector) const; QString connector(int id) const; int firstAvailableId() const; // all ids that are known, included screens not enabled at the moment QList knownIds() const; protected: bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) override; private: void save(); KConfigGroup m_configGroup; QString m_primaryConnector; // order is important QMap m_connectorForId; QHash m_idForConnector; QTimer m_configSaveTimer; int m_xrandrExtensionOffset; };