#pragma once #include "lts_screen_base.h" #include "ltsmultimonitor_export.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(); }; } // namespace LtsMultiMonitor