File indexing completed on 2024-04-21 16:17:09

0001 /*
0002 *  Copyright 2018  Michail Vourlakos <mvourlakos@gmail.com>
0003 *
0004 *  This file is part of Latte-Dock
0005 *
0006 *  Latte-Dock is free software; you can redistribute it and/or
0007 *  modify it under the terms of the GNU General Public License as
0008 *  published by the Free Software Foundation; either version 2 of
0009 *  the License, or (at your option) any later version.
0010 *
0011 *  Latte-Dock is distributed in the hope that it will be useful,
0012 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
0013 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0014 *  GNU General Public License for more details.
0015 *
0016 *  You should have received a copy of the GNU General Public License
0017 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
0018 */
0019 
0020 #ifndef PLASMASCREENPOOL_H
0021 #define PLASMASCREENPOOL_H
0022 
0023 // Qt
0024 #include <QHash>
0025 #include <QMap>
0026 #include <QObject>
0027 
0028 // KDE
0029 #include <KConfigGroup>
0030 
0031 namespace Latte {
0032 namespace PlasmaExtended {
0033 
0034 class ScreenPool: public QObject
0035 {
0036     Q_OBJECT
0037 
0038 public:
0039     ScreenPool(QObject *parent = nullptr);
0040     ~ScreenPool() override;
0041 
0042     int id(const QString &connector) const;
0043     QString connector(int id) const;
0044 
0045 signals:
0046     void idsChanged();
0047 
0048 private slots:
0049     void load();
0050     void insertScreenMapping(int id, const QString &connector);
0051 
0052 private:
0053     QHash<int, QString> m_screens;
0054 
0055     //order is important
0056     QMap<int, QString> m_connectorForId;
0057     QHash<QString, int> m_idForConnector;
0058 
0059     KConfigGroup m_screensGroup;
0060 };
0061 
0062 }
0063 }
0064 
0065 
0066 #endif