diff options
author | Katja Marttila <[email protected]> | 2025-05-20 14:10:02 +0300 |
---|---|---|
committer | Katja Marttila <[email protected]> | 2025-05-23 12:39:13 +0300 |
commit | af6aa8d69d2633196cbe1e08b0a1709087032619 (patch) | |
tree | cf97f08c678afbfd217fb0b9aea23f184d7ce41d /src/libs | |
parent | d01505194d4e525f8d41f1ad040c1fc1a7951696 (diff) |
If installation size exceeds 50GB, warning message is shown in
installation summary -view.
Task-number: QTIFW-3740
Change-Id: I28f1916fefad8f534b7f6b4c4ab971ac1254ad11
Reviewed-by: Arttu Tarkiainen <[email protected]>
Diffstat (limited to 'src/libs')
-rw-r--r-- | src/libs/installer/constants.h | 1 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 10 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.h | 3 | ||||
-rw-r--r-- | src/libs/installer/resources/installer.qrc | 2 | ||||
-rw-r--r-- | src/libs/installer/resources/warning.png | bin | 0 -> 569 bytes | |||
-rw-r--r-- | src/libs/installer/resources/[email protected] | bin | 0 -> 1040 bytes | |||
-rw-r--r-- | src/libs/installer/spacewidget.cpp | 26 | ||||
-rw-r--r-- | src/libs/installer/spacewidget.h | 1 |
8 files changed, 32 insertions, 11 deletions
diff --git a/src/libs/installer/constants.h b/src/libs/installer/constants.h index aa3312a77..2f6458dbb 100644 --- a/src/libs/installer/constants.h +++ b/src/libs/installer/constants.h @@ -180,6 +180,7 @@ static const QLatin1String scAliasDefinitionsFile("AliasDefinitionsFile"); const char scRelocatable[] = "@RELOCATABLE_PATH@"; const quint64 scEstimatedMaintenancetoolSize = 56 * 1024 * 1024LL; // MT size is approximately 56 MB +const quint64 scRecommendedMaxSize = 50 * 1024 * 1024 * 1024LL; static const QStringList scMetaElements = { QLatin1String("Script"), diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index d8ef5f3ca..81fd8ad18 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -3373,7 +3373,10 @@ bool PackageManagerCore::checkAvailableSpace() qDebug().nospace() << "Cannot determine available space on device. " "Volume descriptor: " << targetVolume.volumeDescriptor() << ", Mount path: " << targetVolume.mountPath() << ". Continue silently."; - emit availableSpaceChanged(SpaceInfo::SpaceAvailable); + if (required < scRecommendedMaxSize) + emit availableSpaceChanged(SpaceInfo::SpaceAvailable); + else + emit availableSpaceChanged(SpaceInfo::RecommendedSizeExceeded); return true; } @@ -3440,7 +3443,10 @@ bool PackageManagerCore::checkAvailableSpace() : tr("Installation will use %1 of disk space.")) .arg(humanReadableSize(requiredDiskSpace()))).simplified(); - emit availableSpaceChanged(SpaceInfo::SpaceAvailable); + if (required < scRecommendedMaxSize) + emit availableSpaceChanged(SpaceInfo::SpaceAvailable); + else + emit availableSpaceChanged(SpaceInfo::RecommendedSizeExceeded); return true; } diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h index 3999c58e6..f896f89d5 100644 --- a/src/libs/installer/packagemanagercore.h +++ b/src/libs/installer/packagemanagercore.h @@ -119,7 +119,8 @@ public: enum SpaceInfo { SpaceAvailable, SpaceExceeded, - ExecutableSizeExceeded + ExecutableSizeExceeded, + RecommendedSizeExceeded }; Q_DECLARE_FLAGS(ComponentTypes, ComponentType) diff --git a/src/libs/installer/resources/installer.qrc b/src/libs/installer/resources/installer.qrc index 6af65e9c8..e025652e6 100644 --- a/src/libs/installer/resources/installer.qrc +++ b/src/libs/installer/resources/installer.qrc @@ -12,5 +12,7 @@ <file>qt/etc/qt.conf</file> <file>Notification-Type.png</file> <file>[email protected]</file> + <file>warning.png</file> + <file>[email protected]</file> </qresource> </RCC> diff --git a/src/libs/installer/resources/warning.png b/src/libs/installer/resources/warning.png Binary files differnew file mode 100644 index 000000000..9118b6ae9 --- /dev/null +++ b/src/libs/installer/resources/warning.png diff --git a/src/libs/installer/resources/[email protected] b/src/libs/installer/resources/[email protected] Binary files differnew file mode 100644 index 000000000..0f028ffab --- /dev/null +++ b/src/libs/installer/resources/[email protected] diff --git a/src/libs/installer/spacewidget.cpp b/src/libs/installer/spacewidget.cpp index d6fc9b2fc..f0a26774e 100644 --- a/src/libs/installer/spacewidget.cpp +++ b/src/libs/installer/spacewidget.cpp @@ -42,6 +42,7 @@ static const char *scSpaceRequired(QT_TRANSLATE_NOOP("QInstaller::SpaceWidget", static const char *scSpaceFreed(QT_TRANSLATE_NOOP("QInstaller::SpaceWidget", "Space freed: %1")); static const char *scSpaceAvailable(QT_TRANSLATE_NOOP("QInstaller::SpaceWidget", "Space available: %1")); static const char *scNoSpaceAvailable(QT_TRANSLATE_NOOP("QInstaller::SpaceWidget", "There is not enough disk space for the installation")); +static const char *scExceedsRecommended(QT_TRANSLATE_NOOP("QInstaller::SpaceWidget", "Space required on your hard drive is more than %1")); static const char *scSpaceExceedsLimit(QT_TRANSLATE_NOOP("QInstaller::SpaceWidget", "Space exceeds the supported executable size %1 in Windows")); using namespace QInstaller; @@ -74,6 +75,11 @@ SpaceWidget::SpaceWidget(PackageManagerCore *core, bool showSpaceExceedWidget, Q spaceLabelLayout->addWidget(m_noSpaceAvailableLabel); m_noSpaceAvailableLabel->setVisible(false); m_noSpaceAvailableLabel->setObjectName(QLatin1String("SpaceWarning")); + + m_spaceRecommendationLabel = new LabelWithPixmap(tr(scNoSpaceAvailable), QLatin1String(":/warning.png")); + spaceLabelLayout->addWidget(m_spaceRecommendationLabel); + m_spaceRecommendationLabel->setVisible(false); + m_spaceRecommendationLabel->setObjectName(QLatin1String("SpaceRecommendation")); } spaceLabelLayout->addStretch(); installDirectoryChanged(m_core->value(scTargetDir)); @@ -103,17 +109,21 @@ void SpaceWidget::installDirectoryChanged(const QString &newDirectory) void SpaceWidget::availableSpaceChanged(const PackageManagerCore::SpaceInfo spaceStatus) { updateSpaceRequiredText(); - if (!m_noSpaceAvailableLabel) + if (!m_showSpaceExceedWidget || !m_noSpaceAvailableLabel || !m_spaceRecommendationLabel) return; - if (spaceStatus == PackageManagerCore::SpaceAvailable) { - m_noSpaceAvailableLabel->setVisible(false); - } else if (m_showSpaceExceedWidget) { - if (spaceStatus == PackageManagerCore::ExecutableSizeExceeded) - m_noSpaceAvailableLabel->setWarningText(tr(scSpaceExceedsLimit).arg(humanReadableSize(UINT_MAX))); - else - m_noSpaceAvailableLabel->setWarningText(tr(scNoSpaceAvailable)); + m_noSpaceAvailableLabel->setVisible(false); + m_spaceRecommendationLabel->setVisible(false); + + if (spaceStatus == PackageManagerCore::ExecutableSizeExceeded) { + m_noSpaceAvailableLabel->setWarningText(tr(scSpaceExceedsLimit).arg(humanReadableSize(UINT_MAX))); + m_noSpaceAvailableLabel->setVisible(true); + } else if (spaceStatus == PackageManagerCore::SpaceExceeded) { + m_noSpaceAvailableLabel->setWarningText(tr(scNoSpaceAvailable)); m_noSpaceAvailableLabel->setVisible(true); + } else if (spaceStatus == PackageManagerCore::RecommendedSizeExceeded) { + m_spaceRecommendationLabel->setWarningText(tr(scExceedsRecommended).arg(humanReadableSize(scRecommendedMaxSize))); + m_spaceRecommendationLabel->setVisible(true); } } diff --git a/src/libs/installer/spacewidget.h b/src/libs/installer/spacewidget.h index e2ffe2167..0f7c0dcac 100644 --- a/src/libs/installer/spacewidget.h +++ b/src/libs/installer/spacewidget.h @@ -60,6 +60,7 @@ private: QLabel *m_spaceRequiredLabel; QLabel *m_spaceAvailableLabel; LabelWithPixmap *m_noSpaceAvailableLabel; + LabelWithPixmap *m_spaceRecommendationLabel; bool m_showSpaceExceedWidget; }; |