File indexing completed on 2024-04-14 05:24:21

0001 /*
0002     SPDX-FileCopyrightText: 2021 Michail Vourlakos <mvourlakos@gmail.com>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #ifndef SCREENDATA_H
0007 #define SCREENDATA_H
0008 
0009 //! local
0010 #include "genericdata.h"
0011 #include "generictable.h"
0012 
0013 //! Qt
0014 #include <QMetaType>
0015 #include <QRect>
0016 #include <QString>
0017 
0018 namespace Latte {
0019 namespace Data {
0020 
0021 class Screen : public Generic
0022 {
0023 public:
0024     static constexpr const char* SERIALIZESPLITTER = ":::";
0025     static const int ONPRIMARYID = 0;
0026     static const int ONALLSCREENSID = -100;
0027     static const int ONALLSECONDARYSCREENSID = -101;
0028     static constexpr const char* ONPRIMARYNAME = "{primary-screen}";
0029     static constexpr const char* ONALLSCREENSNAME = "{all-screens}";
0030     static constexpr const char* ONALLSECONDARYSCREENSNAME = "{all-secondary-screens}";
0031 
0032     Screen();
0033     Screen(Screen &&o);
0034     Screen(const Screen &o);
0035     Screen(const QString &screenId, const QString &serialized);
0036 
0037     //! Screen data
0038     bool hasExplicitViews{false};
0039     bool isActive{false};
0040     bool isRemovable{false};
0041     bool isSelected{false};
0042     QRect geometry;
0043 
0044     //! Operators
0045     Screen &operator=(const Screen &rhs);
0046     Screen &operator=(Screen &&rhs);
0047     bool operator==(const Screen &rhs) const;
0048     bool operator!=(const Screen &rhs) const;
0049 
0050     bool isScreensGroup() const;
0051 
0052     void init(const QString &screenId, const QString &serialized);
0053     QString serialize() const;
0054 
0055 };
0056 
0057 typedef GenericTable<Screen> ScreensTable;
0058 
0059 }
0060 }
0061 
0062 Q_DECLARE_METATYPE(Latte::Data::Screen)
0063 Q_DECLARE_METATYPE(Latte::Data::ScreensTable)
0064 
0065 #endif