Browse Source

shared/idian: Make checked status of collapsible rows public

Sebastian Beckmann 4 months ago
parent
commit
a9a506e984
2 changed files with 16 additions and 1 deletions
  1. 6 0
      shared/qt/idian/include/Idian/Row.hpp
  2. 10 1
      shared/qt/idian/widgets/Row.cpp

+ 6 - 0
shared/qt/idian/include/Idian/Row.hpp

@@ -179,11 +179,17 @@ public:
 	void setCheckable(bool check);
 	void setCheckable(bool check);
 	bool isCheckable() { return checkable; }
 	bool isCheckable() { return checkable; }
 
 
+	void setChecked(bool checked);
+	bool isChecked() { return toggleSwitch->isChecked(); };
+
 	virtual void setTitle(const QString &title) override;
 	virtual void setTitle(const QString &title) override;
 	virtual void setDescription(const QString &description) override;
 	virtual void setDescription(const QString &description) override;
 
 
 	void addRow(GenericRow *actionRow);
 	void addRow(GenericRow *actionRow);
 
 
+signals:
+	void toggled(bool checked);
+
 private:
 private:
 	void toggleVisibility();
 	void toggleVisibility();
 
 

+ 10 - 1
shared/qt/idian/widgets/Row.cpp

@@ -300,7 +300,6 @@ CollapsibleRow::CollapsibleRow(QWidget *parent) : GenericRow(parent)
 	actionRow->setFocusProxy(expandButton);
 	actionRow->setFocusProxy(expandButton);
 
 
 	connect(expandButton, &QAbstractButton::clicked, this, &CollapsibleRow::toggleVisibility);
 	connect(expandButton, &QAbstractButton::clicked, this, &CollapsibleRow::toggleVisibility);
-
 	connect(actionRow, &Row::clicked, expandButton, &QAbstractButton::click);
 	connect(actionRow, &Row::clicked, expandButton, &QAbstractButton::click);
 }
 }
 
 
@@ -316,6 +315,7 @@ void CollapsibleRow::setCheckable(bool check)
 
 
 		actionRow->setSuffix(toggleSwitch, false);
 		actionRow->setSuffix(toggleSwitch, false);
 		connect(toggleSwitch, &ToggleSwitch::toggled, propertyList, &PropertiesList::setEnabled);
 		connect(toggleSwitch, &ToggleSwitch::toggled, propertyList, &PropertiesList::setEnabled);
+		connect(toggleSwitch, &ToggleSwitch::toggled, this, &CollapsibleRow::toggled);
 	}
 	}
 
 
 	if (!checkable && toggleSwitch) {
 	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)
 void CollapsibleRow::setTitle(const QString &name)
 {
 {
 	actionRow->setTitle(name);
 	actionRow->setTitle(name);