CMake generator: Improve dialog size adjustability

Task-number: QDS-6466
Change-Id: I97cc262405a9a2be0a36217777f2804fb341518c
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Tapani Mattila
2022-03-25 11:40:25 +02:00
parent 65f747c8f8
commit ce4395320f
2 changed files with 63 additions and 22 deletions

View File

@@ -34,7 +34,8 @@
#include <QPushButton>
#include <QLayout>
#include <QLabel>
#include <QTreeView>
#include <QSplitter>
using namespace Utils;
@@ -49,36 +50,62 @@ CmakeGeneratorDialog::CmakeGeneratorDialog(const FilePath &rootDir, const FilePa
setWindowTitle(QCoreApplication::translate("QmlDesigner::GenerateCmake",
"Select Files to Generate"));
m_model = new CMakeGeneratorDialogTreeModel(rootDir, files, this);
QLabel *mainLabel = new QLabel(QCoreApplication::translate("QmlDesigner::GenerateCmake",
"Start CMakeFiles.txt generation"),
this);
mainLabel->setMargin(30);
QVBoxLayout *dialogLayout = new QVBoxLayout(this);
dialogLayout->setSizeConstraint(QLayout::SetFixedSize);
dialogLayout->addWidget(mainLabel);
dialogLayout->addWidget(createDetailsWidget());
dialogLayout->addWidget(createButtons());
setLayout(dialogLayout);
QWidget *advancedInnerWidget = new QWidget(this);
QVBoxLayout *advancedInnerLayout = new QVBoxLayout(advancedInnerWidget);
advancedInnerWidget->setLayout(advancedInnerLayout);
advancedInnerWidget->setMinimumHeight(640);
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
setMaximumHeight(layout()->totalSizeHint().height());
refreshNotificationText();
}
QTreeView* CmakeGeneratorDialog::createFileTree()
{
m_model = new CMakeGeneratorDialogTreeModel(m_rootDir, m_files, this);
QTreeView *tree = new QTreeView(this);
tree->setModel(m_model);
tree->expandAll();
tree->setHeaderHidden(true);
return tree;
}
QWidget* CmakeGeneratorDialog::createDetailsWidget()
{
QTreeView* tree = createFileTree();
m_notifications = new QTextEdit(this);
m_warningIcon = Utils::Icons::WARNING.pixmap();
refreshNotificationText();
advancedInnerLayout->addWidget(tree, 2);
advancedInnerLayout->addWidget(m_notifications, 1);
QSplitter *advancedInnerWidget = new QSplitter(this);
advancedInnerWidget->addWidget(tree);
advancedInnerWidget->addWidget(m_notifications);
advancedInnerWidget->setStretchFactor(0, 2);
advancedInnerWidget->setStretchFactor(1, 1);
advancedInnerWidget->setOrientation(Qt::Vertical);
advancedInnerWidget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::MinimumExpanding);
DetailsWidget *advancedWidget = new DetailsWidget(this);
advancedWidget->setMinimumWidth(600);
advancedWidget->setWidget(advancedInnerWidget);
advancedWidget->setSummaryText(QCoreApplication::translate("QmlDesigner::GenerateCmake",
"Advanced Options"));
connect(advancedWidget, &DetailsWidget::expanded, this, &CmakeGeneratorDialog::advancedVisibilityChanged);
return advancedWidget;
}
QWidget* CmakeGeneratorDialog::createButtons()
{
QDialogButtonBox *buttons = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel);
auto *okButton = buttons->button(QDialogButtonBox::Ok);
okButton->setDefault(true);
@@ -87,14 +114,7 @@ CmakeGeneratorDialog::CmakeGeneratorDialog(const FilePath &rootDir, const FilePa
connect(buttons, &QDialogButtonBox::rejected, this, &QDialog::reject);
connect(m_model, &CMakeGeneratorDialogTreeModel::checkedStateChanged, this, &CmakeGeneratorDialog::refreshNotificationText);
QLabel *mainLabel = new QLabel(QCoreApplication::translate("QmlDesigner::GenerateCmake",
"Start CMakeFiles.txt generation"),
this);
mainLabel->setMargin(50);
dialogLayout->addWidget(mainLabel);
dialogLayout->addWidget(advancedWidget);
dialogLayout->addWidget(buttons);
return buttons;
}
FilePaths CmakeGeneratorDialog::getFilePaths()
@@ -151,5 +171,19 @@ void CmakeGeneratorDialog::refreshNotificationText()
}
}
void CmakeGeneratorDialog::advancedVisibilityChanged(bool visible)
{
if (visible) {
setMaximumHeight(QWIDGETSIZE_MAX);
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
}
else {
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
int height = layout()->totalSizeHint().height();
setMaximumHeight(height);
resize(width(), height);
}
}
} //GenerateCmake
} //QmlDesigner

View File

@@ -33,7 +33,8 @@
#include <QDialog>
#include <QTextEdit>
#include <QTreeView>
#include <QLabel>
namespace QmlDesigner {
namespace GenerateCmake {
@@ -48,6 +49,12 @@ public:
public slots:
void refreshNotificationText();
void advancedVisibilityChanged(bool visible);
private:
QTreeView* createFileTree();
QWidget* createDetailsWidget();
QWidget* createButtons();
private:
CMakeGeneratorDialogTreeModel *m_model;
@@ -57,7 +64,7 @@ private:
Utils::FilePaths m_files;
};
}
}
} //GenerateCmake
} //QmlDesigner
#endif // CMAKEGENERATORDIALOG_H