Files
qt5-legatus-legacy/Lts/Common/LtsMultiMonitor/lts_screen_base.h
T
2026-08-13 18:33:10 +02:00

60 lines
1.6 KiB
C++
Executable File

#pragma once
#include "lts_multi_monitor_export.h"
#include <QWidget>
#include <QRect>
class QSplitter;
class QHBoxLayout;
namespace LtsUtils { class Promise; }
namespace LtsMultiMonitor
{
class LtsScreenContainer;
// controller class, manages the underlying screen widget
// hides from System Menu + Parent for QDialogs
class LTSMULTIMONITOR_EXPORT LtsScreenBase : public QObject
{
Q_OBJECT
public:
enum WidgetType
{
MainWidget,
SecondaryWidget,
None,
};
LtsScreenBase(QRect screenGeo, int screenId, bool debugMargins, const QString &serial);
const QRect &screenRect() const { return m_screenRect; }
int screenId() const { return m_screenId; }
const QString serialNumber() const { return m_serial; }
QWidget *screenDialog() const { return m_screenDialog; }
virtual int screenType() const = 0;
virtual int containerIdOfWidget(QWidget *widget) const noexcept(false) = 0;
virtual LtsScreenContainer *putWidget(QWidget *widget, int screenPart = -1 /* unspecified */) noexcept(false) = 0;
virtual LtsScreenContainer *containerOfWidget(QWidget *widget) noexcept(false) = 0;
virtual bool isEmpty() const = 0;
virtual bool isIrreplaceable() const = 0;
virtual void check() {}
virtual bool hasWidget(QWidget *widget) const = 0; // NOTE: ignores active widget - checks for main & secondary
virtual void switchToTemp(WidgetType /*widgetType*/) {}
virtual void finalizeSwitch() {}
virtual void revertSwitch() {}
protected:
QWidget *m_screenDialog;
private:
int m_screenId;
QString m_serial;
QRect m_screenRect;
};
} // namespace LtsMultiMonitor