]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/statusbar/statusbarspaceinfo.h
Improve Filelight installation UX
[dolphin.git] / src / statusbar / statusbarspaceinfo.h
index 23a77d045e4ce3d1f46c4c97ec6af17c1cbab6a0..237192c9cdb06dca6bb3ad06d74047025bafd42e 100644 (file)
@@ -6,6 +6,8 @@
 #ifndef STATUSBARSPACEINFO_H
 #define STATUSBARSPACEINFO_H
 
+#include <KMessageWidget>
+
 #include <QUrl>
 #include <QWidget>
 
@@ -14,6 +16,7 @@ class QShowEvent;
 class QMenu;
 class QMouseEvent;
 class QToolButton;
+class QWidgetAction;
 
 class KCapacityBar;
 
@@ -40,6 +43,19 @@ public:
 
     void update();
 
+Q_SIGNALS:
+    /**
+     * Requests for @p message with the given @p messageType to be shown to the user in a non-modal way.
+     */
+    void showMessage(const QString &message, KMessageWidget::MessageType messageType);
+
+    /**
+     * Requests for a progress update to be shown to the user in a non-modal way.
+     * @param currentlyRunningTaskTitle     The task that is currently progressing.
+     * @param installationProgressPercent   The current percentage of completion.
+     */
+    void showInstallationProgress(const QString &currentlyRunningTaskTitle, int installationProgressPercent);
+
 protected:
     void showEvent(QShowEvent *event) override;
     void hideEvent(QHideEvent *event) override;
@@ -48,13 +64,29 @@ protected:
     void updateMenu();
 
 private Q_SLOTS:
+    /**
+     * Asynchronously starts a Filelight installation using DolphinPackageInstaller. @see DolphinPackageInstaller.
+     * Installation success or failure is reported through showMessage(). @see StatusBarSpaceInfo::showMessage().
+     * Installation progress is reported through showInstallationProgress(). @see StatusBarSpaceInfo::showInstallationProgress().
+     */
+    void slotInstallFilelightButtonClicked();
+
     void slotValuesChanged();
 
+private:
+    /**
+     * Creates a new QWidgetAction that contains a UI to install Filelight.
+     * m_installFilelightWidgetAction is initialised after calling this method once.
+     */
+    void initialiseInstallFilelightWidgetAction();
+
 private:
     QScopedPointer<SpaceInfoObserver> m_observer;
     KCapacityBar *m_capacityBar;
     QToolButton *m_textInfoButton;
     QMenu *m_buttonMenu;
+    /** An action containing a UI to install Filelight. */
+    QWidgetAction *m_installFilelightWidgetAction;
     QUrl m_url;
     bool m_ready;
     bool m_shown;