forked from qt-creator/qt-creator
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:
@@ -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
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user