Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
IScreenProvider.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 fuddlesworth
2// SPDX-License-Identifier: LGPL-2.1-or-later
3
4#pragma once
5
7#include "phosphorscreenscore_export.h"
8
9#include <QObject>
10#include <QVector>
11
12namespace Phosphor::Screens {
13
32class PHOSPHORSCREENSCORE_EXPORT IScreenProvider : public QObject
33{
34 Q_OBJECT
35public:
36 explicit IScreenProvider(QObject* parent = nullptr)
37 : QObject(parent)
38 {
39 // PhysicalScreen rides this interface's signals — register it so a
40 // queued connection or QSignalSpy can marshal it. qRegisterMetaType
41 // is idempotent, so paying it per provider construction is harmless.
42 qRegisterMetaType<PhysicalScreen>();
43 }
44 ~IScreenProvider() override = default;
45
47 virtual QVector<PhysicalScreen> screens() const = 0;
48
50 virtual PhysicalScreen primaryScreen() const = 0;
51
52Q_SIGNALS:
56 void screenAdded(const PhysicalScreen& screen);
57
60 void screenRemoved(const PhysicalScreen& screen);
61
66};
67
68} // namespace Phosphor::Screens
Pluggable source of the connected-output set and its lifecycle.
Definition IScreenProvider.h:33
void screenGeometryChanged(const PhysicalScreen &screen)
A connected output's geometry changed (move, resize, rotate, scale).
~IScreenProvider() override=default
void screenAdded(const PhysicalScreen &screen)
A new output connected.
void screenRemoved(const PhysicalScreen &screen)
An output disconnected.
virtual PhysicalScreen primaryScreen() const =0
The primary output, or an invalid PhysicalScreen if there is none.
IScreenProvider(QObject *parent=nullptr)
Definition IScreenProvider.h:36
virtual QVector< PhysicalScreen > screens() const =0
Every currently-connected output. Order is not significant.
Definition IWindowTrackingService.h:26
A physical output as ScreenManager sees it — decoupled from QScreen.
Definition PhysicalScreen.h:37