diff --git a/shared/qt/idian/include/Idian/Row.hpp b/shared/qt/idian/include/Idian/Row.hpp index f93a7a753..074dc42a1 100644 --- a/shared/qt/idian/include/Idian/Row.hpp +++ b/shared/qt/idian/include/Idian/Row.hpp @@ -179,11 +179,17 @@ public: void setCheckable(bool check); bool isCheckable() { return checkable; } + void setChecked(bool checked); + bool isChecked() { return toggleSwitch->isChecked(); }; + virtual void setTitle(const QString &title) override; virtual void setDescription(const QString &description) override; void addRow(GenericRow *actionRow); +signals: + void toggled(bool checked); + private: void toggleVisibility(); diff --git a/shared/qt/idian/widgets/Row.cpp b/shared/qt/idian/widgets/Row.cpp index e7c1c758d..e4628fcc2 100644 --- a/shared/qt/idian/widgets/Row.cpp +++ b/shared/qt/idian/widgets/Row.cpp @@ -300,7 +300,6 @@ CollapsibleRow::CollapsibleRow(QWidget *parent) : GenericRow(parent) actionRow->setFocusProxy(expandButton); connect(expandButton, &QAbstractButton::clicked, this, &CollapsibleRow::toggleVisibility); - connect(actionRow, &Row::clicked, expandButton, &QAbstractButton::click); } @@ -316,6 +315,7 @@ void CollapsibleRow::setCheckable(bool check) actionRow->setSuffix(toggleSwitch, false); connect(toggleSwitch, &ToggleSwitch::toggled, propertyList, &PropertiesList::setEnabled); + connect(toggleSwitch, &ToggleSwitch::toggled, this, &CollapsibleRow::toggled); } if (!checkable && toggleSwitch) { @@ -326,6 +326,15 @@ void CollapsibleRow::setCheckable(bool check) } } +void CollapsibleRow::setChecked(bool checked) +{ + if (!isCheckable()) { + throw std::logic_error("Called setChecked on a non-checkable row."); + } + + toggleSwitch->setChecked(checked); +} + void CollapsibleRow::setTitle(const QString &name) { actionRow->setTitle(name);