X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/31ee4085c2b2c374158fb956ac376399ff375b5a..a4240f6c2285c87de5763b4924fbc1c954b4408c:/src/statusbar/statusbarspaceinfo.h diff --git a/src/statusbar/statusbarspaceinfo.h b/src/statusbar/statusbarspaceinfo.h index 1849462a9..c384c3b2f 100644 --- a/src/statusbar/statusbarspaceinfo.h +++ b/src/statusbar/statusbarspaceinfo.h @@ -1,65 +1,86 @@ -/*************************************************************************** - * 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 - -#include -#include -#include +#include -#include +#include +#include class QHideEvent; class QShowEvent; +class QMenu; +class QMouseEvent; +class QToolButton; +class QWidgetAction; + +class KCapacityBar; + +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); - virtual ~StatusBarSpaceInfo(); + explicit StatusBarSpaceInfo(QWidget *parent = nullptr); + ~StatusBarSpaceInfo() override; - void setUrl(const KUrl& url); - KUrl url() const; + /** + * 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; -protected: - void showEvent(QShowEvent* event); - void hideEvent(QHideEvent* event); + void update(); -private slots: +Q_SIGNALS: /** - * Calculates the space information for the current set URL. + * Requests for @p message with the given @p messageType to be shown to the user in a non-modal way. */ - void calculateSpaceInfo(); + 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 ¤tlyRunningTaskTitle, int installationProgressPercent); + +protected: + void showEvent(QShowEvent *event) override; + void hideEvent(QHideEvent *event) override; + QSize minimumSizeHint() const override; + +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: - quint64 m_kBSize; - KUrl m_url; - QTimer* m_timer; + QScopedPointer 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