diff options
Diffstat (limited to 'src/sdk/installerbasecommons.cpp')
-rw-r--r-- | src/sdk/installerbasecommons.cpp | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/src/sdk/installerbasecommons.cpp b/src/sdk/installerbasecommons.cpp index 0cf85a0ec..263eb5767 100644 --- a/src/sdk/installerbasecommons.cpp +++ b/src/sdk/installerbasecommons.cpp @@ -116,6 +116,7 @@ IntroductionPageImpl::IntroductionPageImpl(QInstaller::PackageManagerCore *core) core->setCompleteUninstallation(core->isUninstaller()); + connect(core, SIGNAL(metaJobProgress(int)), this, SLOT(onProgressChanged(int))); connect(core, SIGNAL(metaJobInfoMessage(QString)), this, SLOT(setMessage(QString))); connect(core, SIGNAL(coreNetworkSettingsChanged()), this, SLOT(onCoreNetworkSettingsChanged())); @@ -249,6 +250,12 @@ void IntroductionPageImpl::setMessage(const QString &msg) m_label->setText(msg); } +void IntroductionPageImpl::onProgressChanged(int progress) +{ + m_progressBar->setRange(0, 100); + m_progressBar->setValue(progress); +} + void IntroductionPageImpl::setErrorMessage(const QString &error) { QPalette palette; @@ -335,6 +342,8 @@ void IntroductionPageImpl::entering() setErrorMessage(QString()); setButtonText(QWizard::CancelButton, tr("Quit")); + m_progressBar->setValue(0); + m_progressBar->setRange(0, 0); PackageManagerCore *core = packageManagerCore(); if (core->isUninstaller() ||core->isUpdater() || core->isPackageManager()) { showMaintenanceTools(); @@ -345,6 +354,8 @@ void IntroductionPageImpl::entering() void IntroductionPageImpl::leaving() { + m_progressBar->setValue(0); + m_progressBar->setRange(0, 0); setButtonText(QWizard::CancelButton, gui()->defaultButtonText(QWizard::CancelButton)); } @@ -388,6 +399,19 @@ QString TargetDirectoryPageImpl::targetDirWarning() const "absolute path."); } + QDir target(targetDir()); + target = target.canonicalPath(); + + if (target.isRoot()) { + return TargetDirectoryPageImpl::tr("As the install directory is completely deleted, installing " + "in %1 is forbidden.").arg(QDir::toNativeSeparators(QDir::rootPath())); + } + + if (target == QDir::home()) { + return TargetDirectoryPageImpl::tr("As the install directory is completely deleted, installing " + "in %1 is forbidden.").arg(QDir::toNativeSeparators(QDir::homePath())); + } + QString dir = QDir::toNativeSeparators(targetDir()); #ifdef Q_OS_WIN // folder length (set by user) + maintenance tool name length (no extension) + extra padding @@ -468,11 +492,6 @@ bool TargetDirectoryPageImpl::validatePage() const QFileInfo fi(targetDir); if (fi.isDir()) { - if (dir == QDir::root() || dir == QDir::home()) { - return failWithError(QLatin1String("ForbiddenTargetDirectory"), tr("As the install directory " - "is completely deleted installing in %1 is forbidden.").arg(QDir::rootPath())); - } - QString fileName = packageManagerCore()->settings().uninstallerName(); #if defined(Q_OS_MAC) if (QFileInfo(QCoreApplication::applicationDirPath() + QLatin1String("/../..")).isBundle()) |