From 45a7b7d53bdcf7909a08b9d79c9e2e25e4631791 Mon Sep 17 00:00:00 2001 From: Nerixyz Date: Fri, 7 Jul 2023 19:37:51 +0200 Subject: [PATCH] feat: add session only checkbox --- src/widgets/settingspages/GeneralPageView.cpp | 22 +++++++++++++++++++ src/widgets/settingspages/GeneralPageView.hpp | 4 ++++ 2 files changed, 26 insertions(+) diff --git a/src/widgets/settingspages/GeneralPageView.cpp b/src/widgets/settingspages/GeneralPageView.cpp index 0d1ab0b25a4..486a58a34b9 100644 --- a/src/widgets/settingspages/GeneralPageView.cpp +++ b/src/widgets/settingspages/GeneralPageView.cpp @@ -125,6 +125,28 @@ QCheckBox *GeneralPageView::addCheckbox(const QString &text, return check; } +QCheckBox *GeneralPageView::addSessionCheckbox( + const QString &text, bool initialValue, std::function onUpdated, + QString toolTipText) +{ + auto *check = new QCheckBox(text); + this->addToolTip(*check, std::move(toolTipText)); + check->setChecked(initialValue); + + // update setting on toggle + QObject::connect(check, &QCheckBox::toggled, this, + [onUpdated = std::move(onUpdated)](bool state) { + onUpdated(state); + }); + + this->addWidget(check); + + // groups + this->groups_.back().widgets.push_back({check, {text}}); + + return check; +} + ComboBox *GeneralPageView::addDropdown(const QString &text, const QStringList &list, QString toolTipText) diff --git a/src/widgets/settingspages/GeneralPageView.hpp b/src/widgets/settingspages/GeneralPageView.hpp index 101b0b7b9cd..5153ab822e0 100644 --- a/src/widgets/settingspages/GeneralPageView.hpp +++ b/src/widgets/settingspages/GeneralPageView.hpp @@ -103,6 +103,10 @@ class GeneralPageView : public QWidget /// @param inverse Inverses true to false and vice versa QCheckBox *addCheckbox(const QString &text, BoolSetting &setting, bool inverse = false, QString toolTipText = {}); + /// Adds a checkbox that only keeps its state for the current session + QCheckBox *addSessionCheckbox(const QString &text, bool initialValue, + std::function onUpdated, + QString toolTipText = {}); ComboBox *addDropdown(const QString &text, const QStringList &items, QString toolTipText = {}); ComboBox *addDropdown(const QString &text, const QStringList &items,