ui: Added toggle for advanced settings

This commit is contained in:
Eberhard Graether
2016-03-08 14:40:28 +01:00
parent 8cc8f5d534
commit 20fbfa18be
2 changed files with 49 additions and 2 deletions
@@ -1,9 +1,14 @@
#include "qt/window/project_wizzard/QtProjectWizzardContentSummary.h" #include "qt/window/project_wizzard/QtProjectWizzardContentSummary.h"
#include <QCheckBox>
QtProjectWizzardContentSummary::QtProjectWizzardContentSummary( QtProjectWizzardContentSummary::QtProjectWizzardContentSummary(
ProjectSettings* settings, QtProjectWizzardWindow* window ProjectSettings* settings, QtProjectWizzardWindow* window
) )
: QtProjectWizzardContent(settings, window) : QtProjectWizzardContent(settings, window)
, m_layout(nullptr)
, m_checkBox(nullptr)
, m_checkBoxRow(0)
, m_isForm(false) , m_isForm(false)
{ {
} }
@@ -93,13 +98,21 @@ void QtProjectWizzardContentSummary::populateForm(QGridLayout* layout, int& row)
layout->addWidget(separator, row++, 0, 1, -1); layout->addWidget(separator, row++, 0, 1, -1);
QLabel* advancedLabel = createFormLabel("ADVANCED"); 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->setRowMinimumHeight(row, 10);
layout->setRowStretch(row, 1); layout->setRowStretch(row, 1);
advancedToggled(false);
} }
void QtProjectWizzardContentSummary::load() void QtProjectWizzardContentSummary::load()
@@ -135,3 +148,26 @@ bool QtProjectWizzardContentSummary::isScrollAble() const
{ {
return true; 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);
}
}
}
}
@@ -3,9 +3,13 @@
#include "qt/window/project_wizzard/QtProjectWizzardContent.h" #include "qt/window/project_wizzard/QtProjectWizzardContent.h"
class QCheckBox;
class QtProjectWizzardContentSummary class QtProjectWizzardContentSummary
: public QtProjectWizzardContent : public QtProjectWizzardContent
{ {
Q_OBJECT
private: private:
struct Element struct Element
{ {
@@ -31,9 +35,16 @@ protected:
virtual bool isScrollAble() const override; virtual bool isScrollAble() const override;
private slots:
void advancedToggled(bool checked);
private: private:
std::vector<Element> m_elements; std::vector<Element> m_elements;
QGridLayout* m_layout;
QCheckBox* m_checkBox;
int m_checkBoxRow;
bool m_isForm; bool m_isForm;
}; };