From 0d981e7b7df266c867004e23a169ba8cc13c8683 Mon Sep 17 00:00:00 2001 From: Felix Ernst Date: Mon, 8 Jul 2024 11:41:56 +0000 Subject: Improve Filelight installation UX MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before this commit pressing the free space button when Filelight is not installed would show a singular action called "Install Filelight to View Disk Usage Statistics…". Pressing this button would open the store page for Filelight. This is an okay user experience, but we can do better. This commit makes it so pressing the free space button when Filelight is not installed shows an attractive UI that makes clear that freeing up disk space can be accomplished nicely by installing Filelight. The "Install Filelight…" button on this UI is connected to PackageKit directly, so we do not need to show a separate store like Discover and instead trigger an installation right then and there. For this, the recently introduced DolphinPackageInstaller KJob is used. Installation progress is reported through the status bar similar to the progress reporting of slowly loading directories or searches. Installation failure or success is ultimately shown within Dolphin as a passive notification above the view. On Microsoft Windows or when PackageKit is not available, the install button will only open a store page for Filelight. CCBUG: 477739 --- src/statusbar/dolphinstatusbar.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/statusbar/dolphinstatusbar.cpp') diff --git a/src/statusbar/dolphinstatusbar.cpp b/src/statusbar/dolphinstatusbar.cpp index 5a3aa5857..c8369febc 100644 --- a/src/statusbar/dolphinstatusbar.cpp +++ b/src/statusbar/dolphinstatusbar.cpp @@ -70,6 +70,13 @@ DolphinStatusBar::DolphinStatusBar(QWidget *parent) // Initialize space information m_spaceInfo = new StatusBarSpaceInfo(contentsContainer); + connect(m_spaceInfo, &StatusBarSpaceInfo::showMessage, this, &DolphinStatusBar::showMessage); + connect(m_spaceInfo, + &StatusBarSpaceInfo::showInstallationProgress, + this, + [this](const QString ¤tlyRunningTaskTitle, int installationProgressPercent) { + showProgress(currentlyRunningTaskTitle, installationProgressPercent, CancelLoading::Disallowed); + }); // Initialize progress information m_stopButton = new QToolButton(contentsContainer); -- cgit v1.3