summaryrefslogtreecommitdiffstats
path: root/src/sdk/installerbasecommons.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sdk/installerbasecommons.cpp')
-rw-r--r--src/sdk/installerbasecommons.cpp29
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())