summaryrefslogtreecommitdiffstats
path: root/src/libs
diff options
context:
space:
mode:
authorKatja Marttila <[email protected]>2025-05-20 14:10:02 +0300
committerKatja Marttila <[email protected]>2025-05-23 12:39:13 +0300
commitaf6aa8d69d2633196cbe1e08b0a1709087032619 (patch)
treecf97f08c678afbfd217fb0b9aea23f184d7ce41d /src/libs
parentd01505194d4e525f8d41f1ad040c1fc1a7951696 (diff)
Add warning about space usageHEADdev
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.h1
-rw-r--r--src/libs/installer/packagemanagercore.cpp10
-rw-r--r--src/libs/installer/packagemanagercore.h3
-rw-r--r--src/libs/installer/resources/installer.qrc2
-rw-r--r--src/libs/installer/resources/warning.pngbin0 -> 569 bytes
-rw-r--r--src/libs/installer/resources/[email protected]bin0 -> 1040 bytes
-rw-r--r--src/libs/installer/spacewidget.cpp26
-rw-r--r--src/libs/installer/spacewidget.h1
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
new file mode 100644
index 000000000..9118b6ae9
--- /dev/null
+++ b/src/libs/installer/resources/warning.png
Binary files differ
diff --git a/src/libs/installer/resources/[email protected] b/src/libs/installer/resources/[email protected]
new file mode 100644
index 000000000..0f028ffab
--- /dev/null
+++ b/src/libs/installer/resources/[email protected]
Binary files differ
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;
};