]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/statusbar/statusbarspaceinfo.h
Add Filelight menu to Tools menu
[dolphin.git] / src / statusbar / statusbarspaceinfo.h
index e89966a597d8acb943b24a970849f2e4d43e7623..c384c3b2f869f823d751a627dd609950b735cbb9 100644 (file)
@@ -1,33 +1,24 @@
-/***************************************************************************
- *   Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at) and              *
- *   and Patrice Tremblay                                                  *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
- ***************************************************************************/
+/*
+ * SPDX-FileCopyrightText: 2006 Peter Penz (peter.penz@gmx.at) and Patrice Tremblay
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
 #ifndef STATUSBARSPACEINFO_H
 #define STATUSBARSPACEINFO_H
 
-#include <QUrl>
-
+#include <KMessageWidget>
 
-#include <KCapacityBar>
+#include <QUrl>
+#include <QWidget>
 
 class QHideEvent;
 class QShowEvent;
+class QMenu;
 class QMouseEvent;
+class QToolButton;
+class QWidgetAction;
+
+class KCapacityBar;
 
 class SpaceInfoObserver;
 
@@ -35,28 +26,61 @@ class SpaceInfoObserver;
  * @short Shows the available space for the volume represented
  *        by the given URL as part of the status bar.
  */
-class StatusBarSpaceInfo : public KCapacityBar
+class StatusBarSpaceInfo : public QWidget
 {
     Q_OBJECT
 
 public:
-    explicit StatusBarSpaceInfo(QWidget* parent = 0);
+    explicit StatusBarSpaceInfo(QWidget *parent = nullptr);
     ~StatusBarSpaceInfo() override;
 
-    void setUrl(const QUrl& url);
+    /**
+     * Works similar to QWidget::setVisible() except that this will postpone showing the widget until space info has been retrieved. Hiding happens instantly.
+     *
+     * @param shown Whether this widget is supposed to be visible long-term
+     */
+    void setShown(bool shown);
+    void setUrl(const QUrl &url);
     QUrl url() const;
 
+    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(QShowEventevent) override;
-    void hideEvent(QHideEventevent) override;
-    void mousePressEvent(QMouseEvent* event) override;
+    void showEvent(QShowEvent *event) override;
+    void hideEvent(QHideEvent *event) override;
+    QSize minimumSizeHint() const override;
 
-private slots:
+private Q_SLOTS:
     void slotValuesChanged();
 
+private:
+    // The following three methods are only for private use.
+    using QWidget::hide; // Use StatusBarSpaceInfo::setShown() instead.
+    using QWidget::setVisible; // Use StatusBarSpaceInfo::setShown() instead.
+    using QWidget::show; // Use StatusBarSpaceInfo::setShown() instead.
+
 private:
     QScopedPointer<SpaceInfoObserver> m_observer;
+    KCapacityBar *m_capacityBar;
+    QToolButton *m_textInfoButton;
     QUrl m_url;
+    /** Whether m_observer has already retrieved space information for the current url. */
+    bool m_hasSpaceInfo;
+    /** Whether this widget is supposed to be visible long-term. @see StatusBarSpaceInfo::setShown(). */
+    bool m_shown;
 };
 
 #endif