#pragma once #include #include #include #include namespace chatterino { class Theme; class BaseWindow; class BaseWidget : public QWidget { Q_OBJECT public: explicit BaseWidget(QWidget *parent, Qt::WindowFlags f = Qt::WindowFlags()); virtual float scale() const; pajlada::Signals::Signal scaleChanged; boost::optional overrideScale() const; void setOverrideScale(boost::optional); QSize scaleIndependantSize() const; int scaleIndependantWidth() const; int scaleIndependantHeight() const; void setScaleIndependantSize(int width, int height); void setScaleIndependantSize(QSize); void setScaleIndependantWidth(int value); void setScaleIndependantHeight(int value); float qtFontScale() const; protected: virtual void childEvent(QChildEvent *) override; virtual void showEvent(QShowEvent *) override; virtual void scaleChangedEvent(float newScale); virtual void themeChangedEvent(); void setScale(float value); Theme *theme; private: float scale_{1.f}; boost::optional overrideScale_; QSize scaleIndependantSize_; std::vector widgets_; pajlada::Signals::SignalHolder signalHolder_; friend class BaseWindow; }; } // namespace chatterino