summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2019-11-27 08:50:49 +0200
committerKatja Marttila <katja.marttila@qt.io>2019-11-28 08:43:40 +0000
commitecd7fdf878f61485e3a8d159dee9cf8c6ba48869 (patch)
tree9284debbf83acd0b96a69a1688f0305e2cf7ca72
parentd50eb7f9d107c919c84fe8ac083a9c10875f02f1 (diff)
Fix progressbar length in component selection page
Also use QStackedLayout to transform between treeview and progressbar views. This simplifies the code as we hide the treeview, categories etc. and show progressbar instead when we are fetching a new category. QStackedLayout makes it easier as we then don't have to hide/show individual widgets we want to show. Change-Id: I405030e9629052c5ca773a91bc44b66d3d26e137 Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
-rw-r--r--src/libs/installer/componentselectionpage_p.cpp104
-rw-r--r--src/libs/installer/componentselectionpage_p.h5
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