+ assureVisibleText();
+}
+
+void DolphinStatusBar::setZoomLevel(int zoomLevel)
+{
+ m_zoomOut->setEnabled(zoomLevel > m_zoomSlider->minimum());
+ m_zoomIn->setEnabled(zoomLevel < m_zoomSlider->maximum());
+ m_view->setZoomLevel(zoomLevel);
+ updateZoomSliderToolTip(zoomLevel);
+}
+
+void DolphinStatusBar::assureVisibleText()
+{
+ const int widthGap = m_messageLabel->widthGap();
+ if (m_spaceInfo->isVisible() || m_zoomWidget->isVisible()) {
+ // At least the space information or the zoom slider is shown.
+ // Hide them if the status bar text does not fit into the available width.
+ if (widthGap > 0) {
+ setExtensionsVisible(false);
+ }
+ } else if (!m_progressBar->isVisible()) {
+ const GeneralSettings* settings = DolphinSettings::instance().generalSettings();
+ const int spaceInfoWidth = settings->showSpaceInfo() ? m_spaceInfo->minimumWidth() : 0;
+ const int zoomWidgetWidth = settings->showZoomSlider() ? m_zoomWidget->minimumWidth() : 0;
+ const int widgetsWidth = spaceInfoWidth + zoomWidgetWidth;
+
+ if (widthGap + widgetsWidth <= 0) {
+ setExtensionsVisible(true);
+ }
+ }
+}
+
+void DolphinStatusBar::zoomOut()
+{
+ const int value = m_zoomSlider->value();
+ m_zoomSlider->setValue(value - 1);
+}
+
+void DolphinStatusBar::zoomIn()
+{
+ const int value = m_zoomSlider->value();
+ m_zoomSlider->setValue(value + 1);
+}
+
+void DolphinStatusBar::showZoomSliderToolTip(int zoomLevel)
+{
+ updateZoomSliderToolTip(zoomLevel);
+
+ QPoint global = m_zoomSlider->rect().topLeft();
+ global.ry() += m_zoomSlider->height() / 2;
+ QHelpEvent toolTipEvent(QEvent::ToolTip, QPoint(0, 0), m_zoomSlider->mapToGlobal(global));
+ QApplication::sendEvent(m_zoomSlider, &toolTipEvent);
+}
+
+void DolphinStatusBar::setExtensionsVisible(bool visible)
+{
+ bool spaceInfoVisible = visible;
+ bool zoomSliderVisible = visible;
+ if (visible) {
+ const GeneralSettings* settings = DolphinSettings::instance().generalSettings();
+ spaceInfoVisible = settings->showSpaceInfo();
+ zoomSliderVisible = settings->showZoomSlider();
+ }
+
+ m_spaceInfo->setVisible(spaceInfoVisible);
+ m_zoomWidget->setVisible(zoomSliderVisible);
+}
+
+void DolphinStatusBar::updateZoomSliderToolTip(int zoomLevel)
+{
+ const int size = ZoomLevelInfo::iconSizeForZoomLevel(zoomLevel);
+ m_zoomSlider->setToolTip(i18ncp("@info:tooltip", "Size: 1 pixel", "Size: %1 pixels", size));