#pragma once #include #include #include namespace chatterino { class ThemeManager; class BaseWindow; class BaseWidget : public QWidget { Q_OBJECT public: explicit BaseWidget(QWidget *parent, Qt::WindowFlags f = Qt::WindowFlags()); virtual ~BaseWidget() override; virtual float getScale() const; pajlada::Signals::Signal scaleChanged; void setOverrideScale(boost::optional); boost::optional getOverrideScale() const; QSize getScaleIndependantSize() const; int getScaleIndependantWidth() const; int getScaleIndependantHeight() const; void setScaleIndependantSize(int width, int height); void setScaleIndependantSize(QSize); void setScaleIndependantWidth(int value); void setScaleIndependantHeight(int value); protected: void childEvent(QChildEvent *) override; virtual void scaleChangedEvent(float newScale); virtual void themeRefreshEvent(); virtual void showEvent(QShowEvent *) override; void setScale(float value); ThemeManager *themeManager; private: void init(); float scale = 1.f; boost::optional overrideScale = boost::none; QSize scaleIndependantSize; std::vector widgets; pajlada::Signals::Connection themeConnection; friend class BaseWindow; }; } // namespace chatterino