From b0375c47907c07b0f34234dc0e93c30f7eba279a Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Fri, 30 Jun 2023 00:12:46 -0500 Subject: [PATCH] Update collapsible group interface for signals/slots --- .../source/scwx/qt/ui/collapsible_group.cpp | 30 +++++++------------ .../source/scwx/qt/ui/collapsible_group.hpp | 6 ++-- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/scwx-qt/source/scwx/qt/ui/collapsible_group.cpp b/scwx-qt/source/scwx/qt/ui/collapsible_group.cpp index 6207d4c5..a66d9703 100644 --- a/scwx-qt/source/scwx/qt/ui/collapsible_group.cpp +++ b/scwx-qt/source/scwx/qt/ui/collapsible_group.cpp @@ -15,7 +15,6 @@ public: ~CollapsibleGroupImpl() = default; void Initialize(); - void SetExpanded(bool expanded); const QIcon kCollapsedIcon_ { ":/res/icons/font-awesome-6/square-caret-right-regular.svg"}; @@ -60,10 +59,10 @@ void CollapsibleGroupImpl::Initialize() self_->ui->titleButton, &QAbstractButton::clicked, self_, - [this]() { SetExpanded(!expanded_); }, + [this]() { self_->SetExpanded(!expanded_); }, Qt::DirectConnection); - self_->Expand(); + self_->SetExpanded(true); } QLayout* CollapsibleGroup::GetContentsLayout() @@ -81,28 +80,21 @@ void CollapsibleGroup::SetTitle(const QString& title) ui->titleButton->setText(title); } -void CollapsibleGroup::Collapse() -{ - // Update the title frame - p->SetExpanded(false); -} - -void CollapsibleGroup::Expand() -{ - // Update the title frame - p->SetExpanded(true); -} - -void CollapsibleGroupImpl::SetExpanded(bool expanded) +void CollapsibleGroup::SetExpanded(bool expanded) { // Update icon - self_->ui->titleButton->setIcon(kIcon_.at(expanded)); + ui->titleButton->setIcon(p->kIcon_.at(expanded)); // Update contents visibility - self_->ui->contentsFrame->setVisible(expanded); + ui->contentsFrame->setVisible(expanded); // Update internal state - expanded_ = expanded; + if (p->expanded_ != expanded) + { + p->expanded_ = expanded; + + Q_EMIT StateChanged(expanded); + } } } // namespace ui diff --git a/scwx-qt/source/scwx/qt/ui/collapsible_group.hpp b/scwx-qt/source/scwx/qt/ui/collapsible_group.hpp index f10893b1..65966b48 100644 --- a/scwx-qt/source/scwx/qt/ui/collapsible_group.hpp +++ b/scwx-qt/source/scwx/qt/ui/collapsible_group.hpp @@ -30,8 +30,10 @@ public: void SetTitle(const QString& title); public slots: - void Collapse(); - void Expand(); + void SetExpanded(bool expanded); + +signals: + void StateChanged(bool expanded); private: friend class CollapsibleGroupImpl;