on 0bcac19 help sign in
133 lines 4.2 kB history raw
1#ifndef SCREEN_H
2#define SCREEN_H
4#include <qtmir/screen.h>
5#include <QScopedPointer>
6#include <QPointer>
8#include "WorkspaceModel.h"
10class ScreenProxy;
11class ScreenAttached;
13class ScreenInterface: public QObject
15 Q_OBJECT
17 Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged)
19 Q_PROPERTY(bool used READ used NOTIFY usedChanged)
20 Q_PROPERTY(QString name READ name NOTIFY nameChanged)
21 Q_PROPERTY(qtmir::OutputTypes outputType READ outputType NOTIFY outputTypeChanged)
22 Q_PROPERTY(float scale READ scale NOTIFY scaleChanged)
23 Q_PROPERTY(qtmir::FormFactor formFactor READ formFactor NOTIFY formFactorChanged)
24 Q_PROPERTY(MirPowerMode powerMode READ powerMode NOTIFY powerModeChanged)
25 Q_PROPERTY(Qt::ScreenOrientation orientation READ orientation NOTIFY orientationChanged)
26 Q_PROPERTY(QPoint position READ position NOTIFY positionChanged)
27 Q_PROPERTY(uint currentModeIndex READ currentModeIndex NOTIFY currentModeIndexChanged)
28 Q_PROPERTY(QQmlListProperty<qtmir::ScreenMode> availableModes READ availableModes NOTIFY availableModesChanged)
29 Q_PROPERTY(QSizeF physicalSize READ physicalSize NOTIFY physicalSizeChanged)
30 Q_PROPERTY(QString outputTypeName READ outputTypeName NOTIFY outputTypeChanged)
32 Q_PROPERTY(WorkspaceModel* workspaces READ workspaces CONSTANT)
33 Q_PROPERTY(Workspace* currentWorkspace READ currentWorkspace WRITE setCurrentWorkspace NOTIFY currentWorkspaceChanged)
34public:
35 // From qtmir::Screen
36 qtmir::OutputId outputId() const;
37 bool used() const;
38 QString name() const;
39 float scale() const;
40 QSizeF physicalSize() const;
41 qtmir::FormFactor formFactor() const;
42 qtmir::OutputTypes outputType() const;
43 MirPowerMode powerMode() const;
44 Qt::ScreenOrientation orientation() const;
45 QPoint position() const;
46 QQmlListProperty<qtmir::ScreenMode> availableModes();
47 uint currentModeIndex() const;
48 bool isActive() const;
49 void setActive(bool active);
50 QScreen* qscreen() const;
51 qtmir::ScreenConfiguration *beginConfiguration() const;
52 bool applyConfiguration(qtmir::ScreenConfiguration *configuration);
53 QString outputTypeName() const;
55 virtual WorkspaceModel* workspaces() const = 0;
56 virtual Workspace *currentWorkspace() const = 0;
57 virtual void setCurrentWorkspace(Workspace* workspace) = 0;
59 void sync(ScreenInterface* proxy);
61 qtmir::Screen* wrapped() const { return m_wrapped; }
63public Q_SLOTS:
64 void activate();
66Q_SIGNALS:
67 void usedChanged();
68 void nameChanged();
69 void outputTypeChanged();
70 void scaleChanged();
71 void formFactorChanged();
72 void powerModeChanged();
73 void orientationChanged();
74 void positionChanged();
75 void currentModeIndexChanged();
76 void physicalSizeChanged();
77 void availableModesChanged();
78 void activeChanged(bool active);
79 void currentWorkspaceChanged(Workspace*);
81protected:
82 ScreenInterface(QObject* parent = 0);
84 void connectToScreen(qtmir::Screen* screen);
86protected:
87 QPointer<qtmir::Screen> m_wrapped;
88};
91class Screen : public ScreenInterface
93 Q_OBJECT
94public:
95 explicit Screen(qtmir::Screen*const wrapped);
97 // From qtmir::Screen
98 WorkspaceModel* workspaces() const override;
99 Workspace *currentWorkspace() const override;
100 void setCurrentWorkspace(Workspace* workspace) override;
102 static ScreenAttached *qmlAttachedProperties(QObject *owner);
104protected:
105 void resetCurrentWorkspace();
107 const QScopedPointer<WorkspaceModel> m_workspaces;
108 QPointer<Workspace> m_currentWorspace;
109};
111class ScreenProxy : public ScreenInterface
113 Q_OBJECT
114public:
115 explicit ScreenProxy(ScreenInterface*const screen);
117 // From qtmir::Screen
118 WorkspaceModel* workspaces() const override;
119 Workspace *currentWorkspace() const override;
120 void setCurrentWorkspace(Workspace* workspace) override;
122 ScreenInterface* proxyObject() const { return m_original.data(); }
124public Q_SLOTS:
125 void addWorkspace();
127private:
128 const QScopedPointer<WorkspaceModel> m_workspaces;
129 const QPointer<ScreenInterface> m_original;
130 QPointer<Workspace> m_currentWorspace;
131};
133#endif // SCREEN_H