summaryrefslogtreecommitdiff
path: root/src/expanderwidget.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-06-17 03:12:49 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-07-02 10:10:17 -0400
commitab7f42dd97e5e6f6076877469a774213bfc3bf76 (patch)
treeb8c838a4a44c3670208f34331451f6612c9098f5 /src/expanderwidget.cpp
parent491b96c0528159f0830e439f5c5a55e3ff09ad1a (diff)
split ExpanderWidget into its own set of files
Diffstat (limited to 'src/expanderwidget.cpp')
-rw-r--r--src/expanderwidget.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/expanderwidget.cpp b/src/expanderwidget.cpp
new file mode 100644
index 00000000..2f47da5b
--- /dev/null
+++ b/src/expanderwidget.cpp
@@ -0,0 +1,54 @@
+#include "expanderwidget.h"
+
+ExpanderWidget::ExpanderWidget()
+ : m_button(nullptr), m_content(nullptr), opened_(false)
+{
+}
+
+ExpanderWidget::ExpanderWidget(QToolButton* button, QWidget* content)
+ : ExpanderWidget()
+{
+ set(button, content);
+}
+
+void ExpanderWidget::set(QToolButton* button, QWidget* content, bool o)
+{
+ m_button = button;
+ m_content = content;
+
+ m_button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
+ QObject::connect(m_button, &QToolButton::clicked, [&]{ toggle(); });
+
+ toggle(o);
+}
+
+void ExpanderWidget::toggle()
+{
+ if (opened()) {
+ toggle(false);
+ }
+ else {
+ toggle(true);
+ }
+}
+
+void ExpanderWidget::toggle(bool b)
+{
+ if (b) {
+ m_button->setArrowType(Qt::DownArrow);
+ m_content->show();
+ } else {
+ m_button->setArrowType(Qt::RightArrow);
+ m_content->hide();
+ }
+
+ // the state has to be remembered instead of using m_content's visibility
+ // because saving the state in saveConflictExpandersState() happens after the
+ // dialog is closed, which marks all the widgets hidden
+ opened_ = b;
+}
+
+bool ExpanderWidget::opened() const
+{
+ return opened_;
+}