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

69 lines
1.6 KiB
C++
Executable File

#pragma once
#include "lts_screen_base.h" // enum WidgetType
#include <lts_multi_monitor_export.h> // TODO: export needed?
#include <QWidget>
#include <QRect>
class QHBoxLayout;
namespace LtsMultiMonitor
{
class LTSMULTIMONITOR_EXPORT LtsScreenContainer : public QWidget
{
Q_OBJECT
public:
LtsScreenContainer(QRect screenGeo);
bool isIrreplaceable() const;
bool isEmpty() const;
bool hasMainWidget();
bool hasSecondaryWidget();
void setWidget(QWidget *widget);
bool hasWidget(QWidget *widget) const;
QWidget *widget() noexcept(false);
QWidget *stealWidget() noexcept(false);
void switchToTemp(LtsScreenBase::WidgetType widgetType);
void finalizeSwitch();
void revertSwitch();
bool mainAndSecondaryOccupied() const;
QIcon mainWindowIcon() const;
QIcon secondaryWindowIcon() const;
LtsScreenBase::WidgetType activeWidgetType() const;
bool isInactiveWidgetOccupied() const;
signals:
void check();
void signalSetCornerIcons();
private:
QHBoxLayout *m_layout { nullptr };
QWidget *m_mainWidget { nullptr }; // TODO C++17: to optional :(
QWidget *m_secondaryWidget { nullptr }; // TODO C++17: to optional :(
QWidget **m_activeWidget { nullptr };
QWidget **m_oldActiveWidget { nullptr };
bool m_nullSwitchActive { false };
QRect m_screenGeo;
QString geoStr() const;
bool tryPutDummyUnmanaged(QWidget *widget);
void vanish();
void reappear();
QWidget *activeWidget() const;
QWidget **activeWidgetPtr();
public slots:
void toggle();
private slots:
//void slotOverlayDestroyed();
void slotChildDestroyed();
};
} // namespace LtsMultiMonitor