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 <QPushButton>
|
||||||
#include <QLayout>
|
#include <QLayout>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QTreeView>
|
|
||||||
|
#include <QSplitter>
|
||||||
|
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
@@ -49,36 +50,62 @@ CmakeGeneratorDialog::CmakeGeneratorDialog(const FilePath &rootDir, const FilePa
|
|||||||
setWindowTitle(QCoreApplication::translate("QmlDesigner::GenerateCmake",
|
setWindowTitle(QCoreApplication::translate("QmlDesigner::GenerateCmake",
|
||||||
"Select Files to Generate"));
|
"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);
|
QVBoxLayout *dialogLayout = new QVBoxLayout(this);
|
||||||
dialogLayout->setSizeConstraint(QLayout::SetFixedSize);
|
dialogLayout->addWidget(mainLabel);
|
||||||
|
dialogLayout->addWidget(createDetailsWidget());
|
||||||
|
dialogLayout->addWidget(createButtons());
|
||||||
setLayout(dialogLayout);
|
setLayout(dialogLayout);
|
||||||
|
|
||||||
QWidget *advancedInnerWidget = new QWidget(this);
|
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||||
QVBoxLayout *advancedInnerLayout = new QVBoxLayout(advancedInnerWidget);
|
setMaximumHeight(layout()->totalSizeHint().height());
|
||||||
advancedInnerWidget->setLayout(advancedInnerLayout);
|
|
||||||
advancedInnerWidget->setMinimumHeight(640);
|
refreshNotificationText();
|
||||||
|
}
|
||||||
|
|
||||||
|
QTreeView* CmakeGeneratorDialog::createFileTree()
|
||||||
|
{
|
||||||
|
m_model = new CMakeGeneratorDialogTreeModel(m_rootDir, m_files, this);
|
||||||
|
|
||||||
QTreeView *tree = new QTreeView(this);
|
QTreeView *tree = new QTreeView(this);
|
||||||
tree->setModel(m_model);
|
tree->setModel(m_model);
|
||||||
tree->expandAll();
|
tree->expandAll();
|
||||||
tree->setHeaderHidden(true);
|
tree->setHeaderHidden(true);
|
||||||
|
|
||||||
|
return tree;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget* CmakeGeneratorDialog::createDetailsWidget()
|
||||||
|
{
|
||||||
|
QTreeView* tree = createFileTree();
|
||||||
|
|
||||||
m_notifications = new QTextEdit(this);
|
m_notifications = new QTextEdit(this);
|
||||||
m_warningIcon = Utils::Icons::WARNING.pixmap();
|
m_warningIcon = Utils::Icons::WARNING.pixmap();
|
||||||
|
|
||||||
refreshNotificationText();
|
QSplitter *advancedInnerWidget = new QSplitter(this);
|
||||||
|
advancedInnerWidget->addWidget(tree);
|
||||||
advancedInnerLayout->addWidget(tree, 2);
|
advancedInnerWidget->addWidget(m_notifications);
|
||||||
advancedInnerLayout->addWidget(m_notifications, 1);
|
advancedInnerWidget->setStretchFactor(0, 2);
|
||||||
|
advancedInnerWidget->setStretchFactor(1, 1);
|
||||||
|
advancedInnerWidget->setOrientation(Qt::Vertical);
|
||||||
|
advancedInnerWidget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::MinimumExpanding);
|
||||||
|
|
||||||
DetailsWidget *advancedWidget = new DetailsWidget(this);
|
DetailsWidget *advancedWidget = new DetailsWidget(this);
|
||||||
advancedWidget->setMinimumWidth(600);
|
advancedWidget->setMinimumWidth(600);
|
||||||
advancedWidget->setWidget(advancedInnerWidget);
|
advancedWidget->setWidget(advancedInnerWidget);
|
||||||
advancedWidget->setSummaryText(QCoreApplication::translate("QmlDesigner::GenerateCmake",
|
advancedWidget->setSummaryText(QCoreApplication::translate("QmlDesigner::GenerateCmake",
|
||||||
"Advanced Options"));
|
"Advanced Options"));
|
||||||
|
connect(advancedWidget, &DetailsWidget::expanded, this, &CmakeGeneratorDialog::advancedVisibilityChanged);
|
||||||
|
|
||||||
|
return advancedWidget;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget* CmakeGeneratorDialog::createButtons()
|
||||||
|
{
|
||||||
QDialogButtonBox *buttons = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel);
|
QDialogButtonBox *buttons = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel);
|
||||||
auto *okButton = buttons->button(QDialogButtonBox::Ok);
|
auto *okButton = buttons->button(QDialogButtonBox::Ok);
|
||||||
okButton->setDefault(true);
|
okButton->setDefault(true);
|
||||||
@@ -87,14 +114,7 @@ CmakeGeneratorDialog::CmakeGeneratorDialog(const FilePath &rootDir, const FilePa
|
|||||||
connect(buttons, &QDialogButtonBox::rejected, this, &QDialog::reject);
|
connect(buttons, &QDialogButtonBox::rejected, this, &QDialog::reject);
|
||||||
connect(m_model, &CMakeGeneratorDialogTreeModel::checkedStateChanged, this, &CmakeGeneratorDialog::refreshNotificationText);
|
connect(m_model, &CMakeGeneratorDialogTreeModel::checkedStateChanged, this, &CmakeGeneratorDialog::refreshNotificationText);
|
||||||
|
|
||||||
QLabel *mainLabel = new QLabel(QCoreApplication::translate("QmlDesigner::GenerateCmake",
|
return buttons;
|
||||||
"Start CMakeFiles.txt generation"),
|
|
||||||
this);
|
|
||||||
mainLabel->setMargin(50);
|
|
||||||
|
|
||||||
dialogLayout->addWidget(mainLabel);
|
|
||||||
dialogLayout->addWidget(advancedWidget);
|
|
||||||
dialogLayout->addWidget(buttons);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FilePaths CmakeGeneratorDialog::getFilePaths()
|
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
|
} //GenerateCmake
|
||||||
} //QmlDesigner
|
} //QmlDesigner
|
||||||
|
@@ -33,7 +33,8 @@
|
|||||||
|
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
#include <QTextEdit>
|
#include <QTextEdit>
|
||||||
|
#include <QTreeView>
|
||||||
|
#include <QLabel>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
namespace GenerateCmake {
|
namespace GenerateCmake {
|
||||||
@@ -48,6 +49,12 @@ public:
|
|||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void refreshNotificationText();
|
void refreshNotificationText();
|
||||||
|
void advancedVisibilityChanged(bool visible);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QTreeView* createFileTree();
|
||||||
|
QWidget* createDetailsWidget();
|
||||||
|
QWidget* createButtons();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CMakeGeneratorDialogTreeModel *m_model;
|
CMakeGeneratorDialogTreeModel *m_model;
|
||||||
@@ -57,7 +64,7 @@ private:
|
|||||||
Utils::FilePaths m_files;
|
Utils::FilePaths m_files;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} //GenerateCmake
|
||||||
}
|
} //QmlDesigner
|
||||||
|
|
||||||
#endif // CMAKEGENERATORDIALOG_H
|
#endif // CMAKEGENERATORDIALOG_H
|
||||||
|
Reference in New Issue
Block a user