diff options
-rw-r--r-- | doc/installerfw.qdoc | 3 | ||||
-rw-r--r-- | src/libs/installer/constants.h | 1 | ||||
-rw-r--r-- | src/libs/installer/settings.cpp | 7 | ||||
-rw-r--r-- | src/libs/installer/settings.h | 1 | ||||
-rw-r--r-- | src/sdk/installerbasecommons.cpp | 10 |
5 files changed, 18 insertions, 4 deletions
diff --git a/doc/installerfw.qdoc b/doc/installerfw.qdoc index 86496aba1..aa4b3d940 100644 --- a/doc/installerfw.qdoc +++ b/doc/installerfw.qdoc @@ -220,6 +220,9 @@ \row \o RepositorySettingsPageVisible \o Set to \c false to hide the repository settings page inside the settings dialog. + \row + \o AllowSpaceInPath + \o Set to \c true if the installation path can contain space characters. \endtable */ diff --git a/src/libs/installer/constants.h b/src/libs/installer/constants.h index be11f5156..573db4380 100644 --- a/src/libs/installer/constants.h +++ b/src/libs/installer/constants.h @@ -77,6 +77,7 @@ static const QLatin1String scRunProgramDescription("RunProgramDescription"); static const QLatin1String scTargetConfigurationFile("TargetConfigurationFile"); static const QLatin1String scAllowNonAsciiCharacters("AllowNonAsciiCharacters"); static const QLatin1String scRepositorySettingsPageVisible("RepositorySettingsPageVisible"); +static const QLatin1String scAllowSpaceInPath("AllowSpaceInPath"); } #endif // CONSTANTS_H diff --git a/src/libs/installer/settings.cpp b/src/libs/installer/settings.cpp index cb84d5438..e222c06f0 100644 --- a/src/libs/installer/settings.cpp +++ b/src/libs/installer/settings.cpp @@ -342,6 +342,11 @@ QString Settings::configurationFileName() const return d->m_data.value(scTargetConfigurationFile).toString(); } +bool Settings::allowSpaceInPath() const +{ + return d->m_data.value(scAllowSpaceInPath, false).toBool(); +} + QStringList Settings::certificateFiles() const { return d->m_data.value(scSigningCertificate).toStringList(); @@ -349,7 +354,7 @@ QStringList Settings::certificateFiles() const bool Settings::allowNonAsciiCharacters() const { - return d->m_data.value(scAllowNonAsciiCharacters).toBool(); + return d->m_data.value(scAllowNonAsciiCharacters, false).toBool(); } bool Settings::dependsOnLocalInstallerBinary() const diff --git a/src/libs/installer/settings.h b/src/libs/installer/settings.h index 52453e970..f5a614fed 100644 --- a/src/libs/installer/settings.h +++ b/src/libs/installer/settings.h @@ -112,6 +112,7 @@ public: void setUserRepositories(const QSet<Repository> &repositories); void addUserRepositories(const QSet<Repository> &repositories); + bool allowSpaceInPath() const; QStringList certificateFiles() const; bool allowNonAsciiCharacters() const; diff --git a/src/sdk/installerbasecommons.cpp b/src/sdk/installerbasecommons.cpp index 14c2c57ae..9e8b8ab12 100644 --- a/src/sdk/installerbasecommons.cpp +++ b/src/sdk/installerbasecommons.cpp @@ -372,14 +372,18 @@ QString TargetDirectoryPageImpl::targetDirWarning() const } QString dir = targetDir(); + QString ambiguousChars = QLatin1String("[<>|?*!@#$%^&:,; ]"); + if (packageManagerCore()->settings().allowSpaceInPath()) + ambiguousChars.remove(QLatin1Char(' ')); + #ifdef Q_OS_WIN // remove e.g. "c:" dir = dir.mid(2); #endif // check if there are not allowed characters in the target path - if (dir.contains(QRegExp(QLatin1String("[!@#$%^&*: ,;]")))) { - return TargetDirectoryPageImpl::tr("The installation path must not contain !@#$%^&*:,; or spaces, " - "please specify a valid folder."); + if (dir.contains(QRegExp(ambiguousChars))) { + return TargetDirectoryPageImpl::tr("The installation path must not contain %1, " + "please specify a valid folder.").arg(ambiguousChars); } return QString(); |