X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/1826f905d706925456763394de17294bcb6d1c35..231200e6800a20aef5a1ba68dd3d64ecbee01000:/src/statusbar/dolphinstatusbar.cpp diff --git a/src/statusbar/dolphinstatusbar.cpp b/src/statusbar/dolphinstatusbar.cpp index 9830960dc..50f4cd3ea 100644 --- a/src/statusbar/dolphinstatusbar.cpp +++ b/src/statusbar/dolphinstatusbar.cpp @@ -19,8 +19,10 @@ #include #include #include +#include #include #include +#include #include #include @@ -30,7 +32,7 @@ const int UpdateDelay = 50; } DolphinStatusBar::DolphinStatusBar(QWidget *parent) - : QWidget(parent) + : AnimatedHeightWidget(parent) , m_text() , m_defaultText() , m_label(nullptr) @@ -44,16 +46,19 @@ DolphinStatusBar::DolphinStatusBar(QWidget *parent) , m_delayUpdateTimer(nullptr) , m_textTimestamp() { + setProperty("_breeze_statusbar_separator", true); + + QWidget *contentsContainer = prepareContentsContainer(); + // Initialize text label - m_label = new KSqueezedTextLabel(m_text, this); - m_label->setWordWrap(true); + m_label = new KSqueezedTextLabel(m_text, contentsContainer); m_label->setTextFormat(Qt::PlainText); // Initialize zoom slider's explanatory label - m_zoomLabel = new QLabel(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); @@ -64,10 +69,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); @@ -75,10 +80,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); @@ -112,18 +117,18 @@ DolphinStatusBar::DolphinStatusBar(QWidget *parent) m_progressBar->setFixedHeight(zoomSliderHeight); m_progressBar->setMaximumWidth(fontMetrics.averageCharWidth() * 20); - QHBoxLayout *topLayout = new QHBoxLayout(this); - topLayout->setContentsMargins(2, 0, 2, 0); - 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); - - setVisible(GeneralSettings::showStatusBar()); + m_topLayout = new QHBoxLayout(contentsContainer); + updateContentsMargins(); + 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(), WithoutAnimation); setExtensionsVisible(true); setWhatsThis(xi18nc("@info:whatsthis Statusbar", "This is " @@ -246,7 +251,7 @@ int DolphinStatusBar::zoomLevel() const void DolphinStatusBar::readSettings() { - setVisible(GeneralSettings::showStatusBar()); + setVisible(GeneralSettings::showStatusBar(), WithAnimation); setExtensionsVisible(true); } @@ -280,6 +285,7 @@ void DolphinStatusBar::contextMenuEvent(QContextMenuEvent *event) GeneralSettings::setShowSpaceInfo(visible); m_spaceInfo->setVisible(visible); } + updateContentsMargins(); } void DolphinStatusBar::showZoomSliderToolTip(int zoomLevel) @@ -334,6 +340,31 @@ void DolphinStatusBar::setExtensionsVisible(bool visible) m_spaceInfo->setVisible(showSpaceInfo); m_zoomSlider->setVisible(showZoomSlider); m_zoomLabel->setVisible(showZoomSlider); + updateContentsMargins(); +} + +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. + m_topLayout->setContentsMargins(6, 0, 2, 0); + } else { + m_topLayout->setContentsMargins(6, 0, 6, 0); + } +} + +void DolphinStatusBar::paintEvent(QPaintEvent *paintEvent) +{ + Q_UNUSED(paintEvent) + QPainter p(this); + QStyleOption opt; + opt.initFrom(this); + style()->drawPrimitive(QStyle::PE_PanelStatusBar, &opt, &p, this); +} + +int DolphinStatusBar::preferredHeight() const +{ + return m_spaceInfo->height(); } #include "moc_dolphinstatusbar.cpp"