From 20fbfa18be11d457c70b2ed5470a366b75f5b7b4 Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Tue, 8 Mar 2016 14:40:28 +0100 Subject: [PATCH] ui: Added toggle for advanced settings --- .../QtProjectWizzardContentSummary.cpp | 40 ++++++++++++++++++- .../QtProjectWizzardContentSummary.h | 11 +++++ 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentSummary.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentSummary.cpp index e8940010..4d0bbd7c 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentSummary.cpp +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentSummary.cpp @@ -1,9 +1,14 @@ #include "qt/window/project_wizzard/QtProjectWizzardContentSummary.h" +#include + QtProjectWizzardContentSummary::QtProjectWizzardContentSummary( ProjectSettings* settings, QtProjectWizzardWindow* window ) : QtProjectWizzardContent(settings, window) + , m_layout(nullptr) + , m_checkBox(nullptr) + , m_checkBoxRow(0) , m_isForm(false) { } @@ -93,13 +98,21 @@ void QtProjectWizzardContentSummary::populateForm(QGridLayout* layout, int& row) layout->addWidget(separator, row++, 0, 1, -1); QLabel* advancedLabel = createFormLabel("ADVANCED"); - layout->addWidget(advancedLabel, row++, QtProjectWizzardWindow::FRONT_COL, Qt::AlignTop); + layout->addWidget(advancedLabel, row, QtProjectWizzardWindow::FRONT_COL, Qt::AlignTop); - layout->setRowMinimumHeight(row++, 15); + m_layout = layout; + m_checkBoxRow = row; + m_checkBox = new QCheckBox("Show advanced settings"); + layout->addWidget(m_checkBox, row++, QtProjectWizzardWindow::BACK_COL); + connect(m_checkBox, SIGNAL(clicked(bool)), this, SLOT(advancedToggled(bool))); + + row++; } layout->setRowMinimumHeight(row, 10); layout->setRowStretch(row, 1); + + advancedToggled(false); } void QtProjectWizzardContentSummary::load() @@ -135,3 +148,26 @@ bool QtProjectWizzardContentSummary::isScrollAble() const { return true; } + +void QtProjectWizzardContentSummary::advancedToggled(bool checked) +{ + for (int row = m_checkBoxRow + 1; row < m_layout->rowCount() - 1; row++) + { + m_layout->setRowMinimumHeight(row, checked ? 15 : 0); + } + + for (int i = m_layout->count() - 1; i >= 0; i--) + { + int r, c, rs, cs; + m_layout->getItemPosition(i, &r, &c, &rs, &cs); + + if (r > m_checkBoxRow) + { + QLayoutItem *item = m_layout->itemAt(i); + if (item && item->widget()) + { + item->widget()->setVisible(checked); + } + } + } +} diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentSummary.h b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentSummary.h index 40ed3280..5d6709f0 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentSummary.h +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentSummary.h @@ -3,9 +3,13 @@ #include "qt/window/project_wizzard/QtProjectWizzardContent.h" +class QCheckBox; + class QtProjectWizzardContentSummary : public QtProjectWizzardContent { + Q_OBJECT + private: struct Element { @@ -31,9 +35,16 @@ protected: virtual bool isScrollAble() const override; +private slots: + void advancedToggled(bool checked); + private: std::vector m_elements; + QGridLayout* m_layout; + QCheckBox* m_checkBox; + int m_checkBoxRow; + bool m_isForm; };