#pragma once #include "lts_screen_base.h" #include #include #include 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 }; QWidget *m_secondaryWidget { nullptr }; 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 slotChildDestroyed(); }; }