diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/installer/componentselectionpage_p.cpp | 104 | ||||
-rw-r--r-- | src/libs/installer/componentselectionpage_p.h | 5 |
2 files changed, 47 insertions, 62 deletions
diff --git a/src/libs/installer/componentselectionpage_p.cpp b/src/libs/installer/componentselectionpage_p.cpp index 917dae4c1..cb8f321d0 100644 --- a/src/libs/installer/componentselectionpage_p.cpp +++ b/src/libs/installer/componentselectionpage_p.cpp @@ -47,6 +47,8 @@ #include <QHeaderView> #include <QStandardPaths> #include <QFileDialog> +#include <QStackedLayout> +#include <QStackedWidget> namespace QInstaller { @@ -62,18 +64,13 @@ ComponentSelectionPagePrivate::ComponentSelectionPagePrivate(ComponentSelectionP { m_treeView->setObjectName(QLatin1String("ComponentsTreeView")); - connect(m_allModel, SIGNAL(checkStateChanged(QInstaller::ComponentModel::ModelState)), this, - SLOT(onModelStateChanged(QInstaller::ComponentModel::ModelState))); - connect(m_updaterModel, SIGNAL(checkStateChanged(QInstaller::ComponentModel::ModelState)), - this, SLOT(onModelStateChanged(QInstaller::ComponentModel::ModelState))); + QVBoxLayout *descriptionVLayout = new QVBoxLayout; + descriptionVLayout->setObjectName(QLatin1String("DescriptionLayout")); - m_descriptionVLayout = new QVBoxLayout; - m_descriptionVLayout->setObjectName(QLatin1String("DescriptionLayout")); - - m_descriptionScrollArea = new QScrollArea(q); - m_descriptionScrollArea->setWidgetResizable(true); - m_descriptionScrollArea->setFrameShape(QFrame::NoFrame); - m_descriptionScrollArea->setObjectName(QLatin1String("DescriptionScrollArea")); + QScrollArea *descriptionScrollArea = new QScrollArea(q); + descriptionScrollArea->setWidgetResizable(true); + descriptionScrollArea->setFrameShape(QFrame::NoFrame); + descriptionScrollArea->setObjectName(QLatin1String("DescriptionScrollArea")); m_descriptionLabel = new QLabel(q); m_descriptionLabel->setWordWrap(true); @@ -81,17 +78,14 @@ ComponentSelectionPagePrivate::ComponentSelectionPagePrivate(ComponentSelectionP m_descriptionLabel->setOpenExternalLinks(true); m_descriptionLabel->setObjectName(QLatin1String("ComponentDescriptionLabel")); m_descriptionLabel->setAlignment(Qt::AlignTop); - m_descriptionScrollArea->setWidget(m_descriptionLabel); - m_descriptionVLayout->addWidget(m_descriptionScrollArea); + descriptionScrollArea->setWidget(m_descriptionLabel); + descriptionVLayout->addWidget(descriptionScrollArea); m_sizeLabel = new QLabel(q); m_sizeLabel->setMargin(5); m_sizeLabel->setWordWrap(true); m_sizeLabel->setObjectName(QLatin1String("ComponentSizeLabel")); - m_descriptionVLayout->addWidget(m_sizeLabel); - - m_treeViewVLayout = new QVBoxLayout; - m_treeViewVLayout->setObjectName(QLatin1String("TreeviewLayout")); + descriptionVLayout->addWidget(m_sizeLabel); QHBoxLayout *buttonHLayout = new QHBoxLayout; m_checkDefault = new QPushButton; @@ -129,34 +123,48 @@ ComponentSelectionPagePrivate::ComponentSelectionPagePrivate(ComponentSelectionP m_uncheckAll->setText(ComponentSelectionPage::tr("&Deselect All")); buttonHLayout->addWidget(m_uncheckAll); - m_metadataProgressLabel = new QLabel(); - m_metadataProgressLabel->hide(); - m_treeViewVLayout->addWidget(m_metadataProgressLabel); - - m_progressBar = new QProgressBar(); + QWidget *progressStackedWidget = new QWidget(); + QVBoxLayout *metaLayout = new QVBoxLayout(progressStackedWidget); + m_metadataProgressLabel = new QLabel(progressStackedWidget); + m_progressBar = new QProgressBar(progressStackedWidget); m_progressBar->setRange(0, 0); - m_progressBar->hide(); m_progressBar->setObjectName(QLatin1String("CompressedInstallProgressBar")); - m_treeViewVLayout->addWidget(m_progressBar); + metaLayout->addSpacing(20); + metaLayout->addWidget(m_metadataProgressLabel); + metaLayout->addWidget(m_progressBar); + metaLayout->addSpacerItem(new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding)); + + QVBoxLayout *treeViewVLayout = new QVBoxLayout; + treeViewVLayout->setObjectName(QLatin1String("TreeviewLayout")); + treeViewVLayout->addWidget(m_treeView, 3); + + QWidget *mainStackedWidget = new QWidget(); + m_mainGLayout = new QGridLayout(mainStackedWidget); + m_mainGLayout->addLayout(buttonHLayout, 0, 1); + m_mainGLayout->addLayout(treeViewVLayout, 1, 1); + m_mainGLayout->addLayout(descriptionVLayout, 1, 2); + m_mainGLayout->setColumnStretch(1, 3); + m_mainGLayout->setColumnStretch(2, 2); + + m_stackedLayout = new QStackedLayout(q); + m_stackedLayout->addWidget(mainStackedWidget); + m_stackedLayout->addWidget(progressStackedWidget); + m_stackedLayout->setCurrentIndex(0); + + connect(m_allModel, SIGNAL(checkStateChanged(QInstaller::ComponentModel::ModelState)), this, + SLOT(onModelStateChanged(QInstaller::ComponentModel::ModelState))); + connect(m_updaterModel, SIGNAL(checkStateChanged(QInstaller::ComponentModel::ModelState)), + this, SLOT(onModelStateChanged(QInstaller::ComponentModel::ModelState))); connect(m_core, SIGNAL(metaJobProgress(int)), this, SLOT(onProgressChanged(int))); connect(m_core, SIGNAL(metaJobInfoMessage(QString)), this, SLOT(setMessage(QString))); connect(m_core, &PackageManagerCore::metaJobTotalProgress, this, &ComponentSelectionPagePrivate::setTotalProgress); - m_treeViewVLayout->addWidget(m_treeView, 3); - // force a recalculation of components to install to keep the state correct connect(q, &ComponentSelectionPage::left, m_core, &PackageManagerCore::clearComponentsToInstallCalculated); - m_mainGLayout = new QGridLayout(q); - m_mainGLayout->addLayout(buttonHLayout, 0, 1); - m_mainGLayout->addLayout(m_treeViewVLayout, 1, 1); - m_mainGLayout->addLayout(m_descriptionVLayout, 1, 2); - m_mainGLayout->setColumnStretch(1, 3); - m_mainGLayout->setColumnStretch(2, 2); - #ifdef INSTALLCOMPRESSED allowCompressedRepositoryInstall(); #endif @@ -371,32 +379,10 @@ void ComponentSelectionPagePrivate::enableRepositoryCategory(const QString &repo void ComponentSelectionPagePrivate::updateWidgetVisibility(bool show) { - if (show) { - QSpacerItem *verticalSpacer2 = new QSpacerItem(0, 0, QSizePolicy::Minimum, - QSizePolicy::Expanding); - m_treeViewVLayout->addSpacerItem(verticalSpacer2); - m_mainGLayout->removeItem(m_descriptionVLayout); - //Hide next button during category fetch - QPushButton *const b = qobject_cast<QPushButton *>(q->gui()->button(QWizard::NextButton)); - b->setEnabled(!show); - } else { - QSpacerItem *item = m_treeViewVLayout->spacerItem(); - m_treeViewVLayout->removeItem(item); - m_mainGLayout->addLayout(m_descriptionVLayout, 1, 2); - //Call completeChanged() to determine if NextButton should be shown or not after category fetch. - q->completeChanged(); - } - if (m_categoryWidget) - m_categoryWidget->setVisible(!show); - m_progressBar->setVisible(show); - m_metadataProgressLabel->setVisible(show); - - m_treeView->setVisible(!show); - m_checkDefault->setVisible(!show); - m_checkAll->setVisible(!show); - m_uncheckAll->setVisible(!show); - m_descriptionScrollArea->setVisible(!show); - m_sizeLabel->setVisible(!show); + if (show) + m_stackedLayout->setCurrentIndex(1); + else + m_stackedLayout->setCurrentIndex(0); if (QAbstractButton *bspButton = q->gui()->button(QWizard::CustomButton2)) bspButton->setEnabled(!show); diff --git a/src/libs/installer/componentselectionpage_p.h b/src/libs/installer/componentselectionpage_p.h index 591cd08f7..bce13246b 100644 --- a/src/libs/installer/componentselectionpage_p.h +++ b/src/libs/installer/componentselectionpage_p.h @@ -45,6 +45,7 @@ class QProgressBar; class QVBoxLayout; class QHBoxLayout; class QGridLayout; +class QStackedLayout; namespace QInstaller { @@ -89,9 +90,7 @@ private: PackageManagerCore *m_core; QTreeView *m_treeView; QLabel *m_sizeLabel; - QScrollArea *m_descriptionScrollArea; QLabel *m_descriptionLabel; - QVBoxLayout *m_descriptionVLayout; QPushButton *m_checkAll; QPushButton *m_uncheckAll; QPushButton *m_checkDefault; @@ -100,11 +99,11 @@ private: QLabel *m_metadataProgressLabel; QProgressBar *m_progressBar; QGridLayout *m_mainGLayout; - QVBoxLayout *m_treeViewVLayout; bool m_allowCompressedRepositoryInstall; ComponentModel *m_allModel; ComponentModel *m_updaterModel; ComponentModel *m_currentModel; + QStackedLayout *m_stackedLayout; }; } // namespace QInstaller |