]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinstatusbar.cpp
use a smaller step size when using the scroll wheel
[dolphin.git] / src / dolphinstatusbar.cpp
index 069cc7450e44bb0c0db4606c01e28b94d4587137..22b8a9ed74f26ecc7ac3f6142bff192d52bf7dc3 100644 (file)
@@ -26,6 +26,7 @@
 #include "statusbarspaceinfo.h"
 #include "zoomlevelinfo.h"
 
+#include <QApplication>
 #include <QHBoxLayout>
 #include <QLabel>
 #include <QProgressBar>
@@ -34,6 +35,7 @@
 
 #include <kiconloader.h>
 #include <kicon.h>
+#include <klocale.h>
 #include <kvbox.h>
 
 DolphinStatusBar::DolphinStatusBar(QWidget* parent, DolphinView* view) :
@@ -89,6 +91,7 @@ DolphinStatusBar::DolphinStatusBar(QWidget* parent, DolphinView* view) :
     zoomWidgetLayout->addWidget(m_zoomIn);
     
     connect(m_zoomSlider, SIGNAL(valueChanged(int)), this, SLOT(setZoomLevel(int)));
+    connect(m_zoomSlider, SIGNAL(sliderMoved(int)), this, SLOT(showZoomSliderToolTip(int)));
     connect(m_view, SIGNAL(zoomLevelChanged(int)), m_zoomSlider, SLOT(setValue(int)));
     connect(m_zoomOut, SIGNAL(clicked()), this, SLOT(zoomOut()));
     connect(m_zoomIn, SIGNAL(clicked()), this, SLOT(zoomIn()));
@@ -101,11 +104,11 @@ DolphinStatusBar::DolphinStatusBar(QWidget* parent, DolphinView* view) :
     m_progressBar->hide();
 
     // initialize sizes
-    const int contentHeight = QFontMetrics(m_messageLabel->font()).height() + 4;
-    const int barHeight = contentHeight + 4;
+    const int fontHeight = QFontMetrics(m_messageLabel->font()).height();
+    const int zoomWidgetHeight = m_zoomWidget->minimumSizeHint().height();
+    const int contentHeight = (fontHeight < zoomWidgetHeight) ? zoomWidgetHeight : fontHeight;
 
-    setMinimumHeight(barHeight);
-    m_messageLabel->setMinimumTextHeight(barHeight);
+    m_messageLabel->setMinimumTextHeight(contentHeight);
     m_spaceInfo->setFixedHeight(contentHeight);
     m_progressBar->setFixedSize(200, contentHeight);
     m_zoomWidget->setFixedSize(150, contentHeight);
@@ -274,6 +277,16 @@ void DolphinStatusBar::zoomIn()
     m_zoomSlider->setValue(value + 1);
 }
 
+void DolphinStatusBar::showZoomSliderToolTip(int zoomLevel)
+{
+    const int size = ZoomLevelInfo::iconSizeForZoomLevel(zoomLevel);
+    m_zoomSlider->setToolTip(i18ncp("@info:tooltip", "Size: 1 pixel", "Size: %1 pixels", size));
+    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;