* changed help texts * use help buttons instead of descriptions in dialogs * fixed show files button not up-to-date with directory list box * fixed source file extensions shown in cdb setup * refactored size and content setting for project content classes
177 lines
3.5 KiB
C++
177 lines
3.5 KiB
C++
#include "qt/window/project_wizzard/QtProjectWizzardContentSummary.h"
|
|
|
|
#include <QCheckBox>
|
|
|
|
QtProjectWizzardContentSummary::QtProjectWizzardContentSummary(
|
|
std::shared_ptr<ProjectSettings> settings, QtProjectWizzardWindow* window
|
|
)
|
|
: QtProjectWizzardContent(settings, window)
|
|
, m_layout(nullptr)
|
|
, m_checkBox(nullptr)
|
|
, m_checkBoxRow(0)
|
|
, m_isForm(false)
|
|
{
|
|
}
|
|
|
|
void QtProjectWizzardContentSummary::addContent(QtProjectWizzardContent* content, bool advanced, bool gapBefore)
|
|
{
|
|
Element element;
|
|
element.content = content;
|
|
element.advanced = advanced;
|
|
element.gapBefore = gapBefore;
|
|
m_elements.push_back(element);
|
|
|
|
content->setIsInForm(m_isForm);
|
|
}
|
|
|
|
void QtProjectWizzardContentSummary::setIsForm(bool isForm)
|
|
{
|
|
m_isForm = isForm;
|
|
}
|
|
|
|
void QtProjectWizzardContentSummary::populate(QGridLayout* layout, int& row)
|
|
{
|
|
if (m_isForm)
|
|
{
|
|
populateForm(layout, row);
|
|
return;
|
|
}
|
|
|
|
layout->setRowMinimumHeight(row++, 20);
|
|
|
|
for (const Element& element : m_elements)
|
|
{
|
|
if (element.advanced)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if (element.gapBefore)
|
|
{
|
|
layout->setRowMinimumHeight(row++, 20);
|
|
}
|
|
|
|
element.content->populate(layout, row);
|
|
}
|
|
|
|
layout->setRowMinimumHeight(row, 20);
|
|
layout->setRowStretch(row, 1);
|
|
}
|
|
|
|
void QtProjectWizzardContentSummary::populateForm(QGridLayout* layout, int& row)
|
|
{
|
|
layout->setRowMinimumHeight(row++, 10);
|
|
|
|
bool hasAdvanced = false;
|
|
for (int i = 0; i < 2; i++)
|
|
{
|
|
bool advanced = i > 0;
|
|
|
|
for (const Element& element : m_elements)
|
|
{
|
|
if (element.advanced != advanced)
|
|
{
|
|
hasAdvanced = true;
|
|
continue;
|
|
}
|
|
|
|
if (element.gapBefore)
|
|
{
|
|
layout->setRowMinimumHeight(row++, 15);
|
|
}
|
|
|
|
element.content->populate(layout, row);
|
|
}
|
|
|
|
if (i > 0 || !hasAdvanced)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
QFrame* separator = new QFrame();
|
|
separator->setFrameShape(QFrame::HLine);
|
|
|
|
QPalette palette = separator->palette();
|
|
palette.setColor(QPalette::WindowText, Qt::lightGray);
|
|
separator->setPalette(palette);
|
|
|
|
layout->addWidget(separator, row++, 0, 1, -1);
|
|
|
|
QLabel* advancedLabel = createFormLabel("ADVANCED");
|
|
layout->addWidget(advancedLabel, row, QtProjectWizzardWindow::FRONT_COL, Qt::AlignTop);
|
|
|
|
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);
|
|
|
|
if (m_checkBox)
|
|
{
|
|
advancedToggled(false);
|
|
}
|
|
}
|
|
|
|
void QtProjectWizzardContentSummary::load()
|
|
{
|
|
for (const Element& element : m_elements)
|
|
{
|
|
element.content->load();
|
|
}
|
|
}
|
|
|
|
void QtProjectWizzardContentSummary::save()
|
|
{
|
|
for (const Element& element : m_elements)
|
|
{
|
|
element.content->save();
|
|
}
|
|
}
|
|
|
|
bool QtProjectWizzardContentSummary::check()
|
|
{
|
|
for (const Element& element : m_elements)
|
|
{
|
|
if (!element.content->check())
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
}
|