diff options
Diffstat (limited to 'src/libs/installer/settings.cpp')
-rw-r--r-- | src/libs/installer/settings.cpp | 71 |
1 files changed, 60 insertions, 11 deletions
diff --git a/src/libs/installer/settings.cpp b/src/libs/installer/settings.cpp index 108d68832..e18f63689 100644 --- a/src/libs/installer/settings.cpp +++ b/src/libs/installer/settings.cpp @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2022 The Qt Company Ltd. +** Copyright (C) 2023 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -34,8 +34,11 @@ #include "globals.h" #include "fileutils.h" +#include <QtCore/QDir> #include <QtCore/QFileInfo> #include <QtCore/QStringList> +#include <QtCore/QStandardPaths> +#include <QtCore/QUuid> #include <QtGui/QFontMetrics> #include <QtWidgets/QApplication> @@ -76,6 +79,8 @@ static const QLatin1String scFtpProxy("FtpProxy"); static const QLatin1String scHttpProxy("HttpProxy"); static const QLatin1String scProxyType("ProxyType"); +static const QLatin1String scLocalCachePath("LocalCachePath"); + const char scControlScript[] = "ControlScript"; template <typename T> @@ -313,13 +318,13 @@ Settings Settings::fromFileAndPrefix(const QString &path, const QString &prefix, elementList << scName << scVersion << scTitle << scPublisher << scProductUrl << scTargetDir << scAdminTargetDir << scInstallerApplicationIcon << scInstallerWindowIcon - << scLogo << scWatermark << scBanner << scBackground << scPageListPixmap + << scLogo << scWatermark << scBanner << scBackground << scPageListPixmap << scAliasDefinitionsFile << scStartMenuDir << scMaintenanceToolName << scMaintenanceToolIniFile << scMaintenanceToolAlias - << scRemoveTargetDir + << scRemoveTargetDir << scLocalCacheDir << scPersistentLocalCache << scRunProgram << scRunProgramArguments << scRunProgramDescription << scDependsOnLocalInstallerBinary - << scAllowSpaceInPath << scAllowNonAsciiCharacters << scDisableAuthorizationFallback - << scDisableCommandLineInterface + << scAllowSpaceInPath << scAllowNonAsciiCharacters << scAllowRepositoriesForOfflineInstaller + << scDisableAuthorizationFallback << scDisableCommandLineInterface << scWizardStyle << scStyleSheet << scTitleColor << scWizardDefaultWidth << scWizardDefaultHeight << scWizardMinimumWidth << scWizardMinimumHeight << scWizardShowPageList << scProductImages @@ -480,11 +485,11 @@ static int lengthToInt(const QVariant &variant) QString length = variant.toString().trimmed(); if (length.endsWith(QLatin1String("em"), Qt::CaseInsensitive)) { length.chop(2); - return qRound(length.toDouble() * QApplication::fontMetrics().height()); + return qRound(length.toDouble() * QFontMetricsF(QApplication::font()).height()); } if (length.endsWith(QLatin1String("ex"), Qt::CaseInsensitive)) { length.chop(2); - return qRound(length.toDouble() * QApplication::fontMetrics().xHeight()); + return qRound(length.toDouble() * QFontMetricsF(QApplication::font()).xHeight()); } if (length.endsWith(QLatin1String("px"), Qt::CaseInsensitive)) { length.chop(2); @@ -534,6 +539,11 @@ void Settings::setProductImages(const QMap<QString, QVariant> &images) d->m_data.insert(scProductImages, QVariant::fromValue(images)); } +QString Settings::aliasDefinitionsFile() const +{ + return d->absolutePathFromKey(scAliasDefinitionsFile); +} + QString Settings::installerApplicationIcon() const { return d->absolutePathFromKey(scInstallerApplicationIcon, systemIconSuffix()); @@ -639,6 +649,11 @@ bool Settings::allowNonAsciiCharacters() const return d->m_data.value(scAllowNonAsciiCharacters, false).toBool(); } +bool Settings::allowRepositoriesForOfflineInstaller() const +{ + return d->m_data.value(scAllowRepositoriesForOfflineInstaller, true).toBool(); +} + bool Settings::disableAuthorizationFallback() const { return d->m_data.value(scDisableAuthorizationFallback, false).toBool(); @@ -740,7 +755,7 @@ Settings::Update Settings::updateRepositoryCategories(const RepoHash &updates) return update ? Settings::UpdatesApplied : Settings::NoUpdatesApplied; } -static bool apply(const RepoHash &updates, QHash<QUrl, Repository> *reposToUpdate) +static bool apply(const RepoHash &updates, QMultiHash<QUrl, Repository> *reposToUpdate) { bool update = false; QList<QPair<Repository, Repository> > values = updates.values(QLatin1String("replace")); @@ -778,7 +793,7 @@ Settings::Update Settings::updateDefaultRepositories(const RepoHash &updates) if (updates.isEmpty()) return Settings::NoUpdatesApplied; - QHash <QUrl, Repository> defaultRepos; + QMultiHash <QUrl, Repository> defaultRepos; foreach (const QVariant &variant, d->m_data.values(scRepositories)) { const Repository repository = variant.value<Repository>(); defaultRepos.insert(repository.url(), repository); @@ -832,7 +847,7 @@ Settings::Update Settings::updateUserRepositories(const RepoHash &updates) if (updates.isEmpty()) return Settings::NoUpdatesApplied; - QHash <QUrl, Repository> reposToUpdate; + QMultiHash <QUrl, Repository> reposToUpdate; foreach (const QVariant &variant, d->m_data.values(scUserRepositories)) { const Repository repository = variant.value<Repository>(); reposToUpdate.insert(repository.url(), repository); @@ -872,6 +887,40 @@ void Settings::setRepositorySettingsPageVisible(bool visible) d->m_data.replace(scRepositorySettingsPageVisible, visible); } +bool Settings::persistentLocalCache() const +{ + return d->m_data.value(scPersistentLocalCache, true).toBool(); +} + +void Settings::setPersistentLocalCache(bool enable) +{ + d->m_data.replace(scPersistentLocalCache, enable); +} + +QString Settings::localCacheDir() const +{ + const QString fallback = QLatin1String("qt-installer-framework") + QDir::separator() + + QUuid::createUuidV3(QUuid(), applicationName()).toString(QUuid::WithoutBraces); + return d->m_data.value(scLocalCacheDir, fallback).toString(); +} + +void Settings::setLocalCacheDir(const QString &dir) +{ + d->m_data.replace(scLocalCacheDir, dir); +} + +QString Settings::localCachePath() const +{ + const QString fallback = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + + QDir::separator() + localCacheDir(); + return d->m_data.value(scLocalCachePath, fallback).toString(); +} + +void Settings::setLocalCachePath(const QString &path) +{ + d->m_data.replace(scLocalCachePath, path); +} + Settings::ProxyType Settings::proxyType() const { return Settings::ProxyType(d->m_data.value(scProxyType, Settings::NoProxy).toInt()); @@ -954,7 +1003,7 @@ void Settings::setSaveDefaultRepositories(bool save) QString Settings::repositoryCategoryDisplayName() const { QString displayName = d->m_data.value(QLatin1String(scRepositoryCategoryDisplayName)).toString(); - return displayName.isEmpty() ? tr("Select Categories") : displayName; + return displayName.isEmpty() ? tr("Categories") : displayName; } void Settings::setRepositoryCategoryDisplayName(const QString& name) |