#pragma once #include "widgets/settingspages/CustomWidgets.hpp" #include #include #include #include #include #include #include #include #include namespace chatterino { class SettingsDialogTab; class SettingsPage : public QFrame { Q_OBJECT public: SettingsPage(); virtual bool filterElements(const QString &query); SettingsDialogTab *tab() const; void setTab(SettingsDialogTab *tab); QCheckBox *createCheckBox(const QString &text, pajlada::Settings::Setting &setting, const QString &toolTipText = {}); QComboBox *createComboBox(const QStringList &items, pajlada::Settings::Setting &setting); QSpinBox *createSpinBox(pajlada::Settings::Setting &setting, int min = 0, int max = 2500); template SLabel *createLabel(const std::function &makeText, pajlada::Settings::Setting &setting) { auto *label = new SLabel(); setting.connect( [label, makeText](const T &value, auto) { label->setText(makeText(value)); }, this->managedConnections_); return label; } virtual void onShow() { } protected: SettingsDialogTab *tab_{}; pajlada::Signals::SignalHolder managedConnections_; }; } // namespace chatterino