┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/statusbar
diff options
context:
space:
mode:
Diffstat (limited to 'src/statusbar')
-rw-r--r--src/statusbar/dolphinstatusbar.cpp50
-rw-r--r--src/statusbar/dolphinstatusbar.h11
2 files changed, 38 insertions, 23 deletions
diff --git a/src/statusbar/dolphinstatusbar.cpp b/src/statusbar/dolphinstatusbar.cpp
index 9ea0ae5aa..8e7ee5586 100644
--- a/src/statusbar/dolphinstatusbar.cpp
+++ b/src/statusbar/dolphinstatusbar.cpp
@@ -32,7 +32,7 @@ const int UpdateDelay = 50;
}
DolphinStatusBar::DolphinStatusBar(QWidget *parent)
- : QWidget(parent)
+ : AnimatedHeightWidget(parent)
, m_text()
, m_defaultText()
, m_label(nullptr)
@@ -47,16 +47,19 @@ DolphinStatusBar::DolphinStatusBar(QWidget *parent)
, m_textTimestamp()
{
setProperty("_breeze_statusbar_separator", true);
+
+ QWidget *contentsContainer = prepareContentsContainer();
+
// Initialize text label
- m_label = new KSqueezedTextLabel(m_text, this);
+ m_label = new KSqueezedTextLabel(m_text, contentsContainer);
m_label->setWordWrap(true);
m_label->setTextFormat(Qt::PlainText);
// Initialize zoom slider's explanatory label
- m_zoomLabel = new KSqueezedTextLabel(i18nc("Used as a noun, i.e. 'Here is the zoom level:'", "Zoom:"), this);
+ m_zoomLabel = new KSqueezedTextLabel(i18nc("Used as a noun, i.e. 'Here is the zoom level:'", "Zoom:"), contentsContainer);
// Initialize zoom widget
- m_zoomSlider = new QSlider(Qt::Horizontal, this);
+ m_zoomSlider = new QSlider(Qt::Horizontal, contentsContainer);
m_zoomSlider->setAccessibleName(i18n("Zoom"));
m_zoomSlider->setAccessibleDescription(i18nc("Description for zoom-slider (accessibility)", "Sets the size of the file icons."));
m_zoomSlider->setPageStep(1);
@@ -67,10 +70,10 @@ DolphinStatusBar::DolphinStatusBar(QWidget *parent)
connect(m_zoomSlider, &QSlider::sliderMoved, this, &DolphinStatusBar::showZoomSliderToolTip);
// Initialize space information
- m_spaceInfo = new StatusBarSpaceInfo(this);
+ m_spaceInfo = new StatusBarSpaceInfo(contentsContainer);
// Initialize progress information
- m_stopButton = new QToolButton(this);
+ m_stopButton = new QToolButton(contentsContainer);
m_stopButton->setIcon(QIcon::fromTheme(QStringLiteral("process-stop")));
m_stopButton->setAccessibleName(i18n("Stop"));
m_stopButton->setAutoRaise(true);
@@ -78,10 +81,10 @@ DolphinStatusBar::DolphinStatusBar(QWidget *parent)
m_stopButton->hide();
connect(m_stopButton, &QToolButton::clicked, this, &DolphinStatusBar::stopPressed);
- m_progressTextLabel = new QLabel(this);
+ m_progressTextLabel = new QLabel(contentsContainer);
m_progressTextLabel->hide();
- m_progressBar = new QProgressBar(this);
+ m_progressBar = new QProgressBar(contentsContainer);
m_progressBar->hide();
m_showProgressBarTimer = new QTimer(this);
@@ -115,18 +118,18 @@ DolphinStatusBar::DolphinStatusBar(QWidget *parent)
m_progressBar->setFixedHeight(zoomSliderHeight);
m_progressBar->setMaximumWidth(fontMetrics.averageCharWidth() * 20);
- QHBoxLayout *topLayout = new QHBoxLayout(this);
+ m_topLayout = new QHBoxLayout(contentsContainer);
updateContentsMargins();
- topLayout->setSpacing(4);
- topLayout->addWidget(m_label, 1);
- topLayout->addWidget(m_zoomLabel);
- topLayout->addWidget(m_zoomSlider, 1);
- topLayout->addWidget(m_spaceInfo, 1);
- topLayout->addWidget(m_stopButton);
- topLayout->addWidget(m_progressTextLabel);
- topLayout->addWidget(m_progressBar);
+ m_topLayout->setSpacing(4);
+ m_topLayout->addWidget(m_label, 1);
+ m_topLayout->addWidget(m_zoomLabel);
+ m_topLayout->addWidget(m_zoomSlider, 1);
+ m_topLayout->addWidget(m_spaceInfo, 1);
+ m_topLayout->addWidget(m_stopButton);
+ m_topLayout->addWidget(m_progressTextLabel);
+ m_topLayout->addWidget(m_progressBar);
- setVisible(GeneralSettings::showStatusBar());
+ setVisible(GeneralSettings::showStatusBar(), WithoutAnimation);
setExtensionsVisible(true);
setWhatsThis(xi18nc("@info:whatsthis Statusbar",
"<para>This is "
@@ -249,7 +252,7 @@ int DolphinStatusBar::zoomLevel() const
void DolphinStatusBar::readSettings()
{
- setVisible(GeneralSettings::showStatusBar());
+ setVisible(GeneralSettings::showStatusBar(), WithAnimation);
setExtensionsVisible(true);
}
@@ -345,9 +348,9 @@ void DolphinStatusBar::updateContentsMargins()
{
if (GeneralSettings::showSpaceInfo()) {
// We reduce the outside margin for the flat button so it visually has the same margin as the status bar text label on the other end of the bar.
- layout()->setContentsMargins(6, 0, 2, 0);
+ m_topLayout->setContentsMargins(6, 0, 2, 0);
} else {
- layout()->setContentsMargins(6, 0, 6, 0);
+ m_topLayout->setContentsMargins(6, 0, 6, 0);
}
}
@@ -360,4 +363,9 @@ void DolphinStatusBar::paintEvent(QPaintEvent *paintEvent)
style()->drawPrimitive(QStyle::PE_PanelStatusBar, &opt, &p, this);
}
+int DolphinStatusBar::preferredHeight() const
+{
+ return m_spaceInfo->height();
+}
+
#include "moc_dolphinstatusbar.cpp"
diff --git a/src/statusbar/dolphinstatusbar.h b/src/statusbar/dolphinstatusbar.h
index 5cb1c4b60..75a2cdc6f 100644
--- a/src/statusbar/dolphinstatusbar.h
+++ b/src/statusbar/dolphinstatusbar.h
@@ -7,8 +7,9 @@
#ifndef DOLPHINSTATUSBAR_H
#define DOLPHINSTATUSBAR_H
+#include "animatedheightwidget.h"
+
#include <QTime>
-#include <QWidget>
class QUrl;
class StatusBarSpaceInfo;
@@ -18,6 +19,7 @@ class QToolButton;
class QSlider;
class QTimer;
class KSqueezedTextLabel;
+class QHBoxLayout;
/**
* @brief Represents the statusbar of a Dolphin view.
@@ -25,7 +27,7 @@ class KSqueezedTextLabel;
* The statusbar allows to show messages, progress
* information and space-information of a disk.
*/
-class DolphinStatusBar : public QWidget
+class DolphinStatusBar : public AnimatedHeightWidget
{
Q_OBJECT
@@ -123,6 +125,9 @@ private:
void updateContentsMargins();
+ /** @see AnimatedHeightWidget::preferredHeight() */
+ int preferredHeight() const override;
+
private:
QString m_text;
QString m_defaultText;
@@ -140,6 +145,8 @@ private:
QTimer *m_delayUpdateTimer;
QTime m_textTimestamp;
+
+ QHBoxLayout *m_topLayout;
};
#endif