]> cloud.milkyroute.net Git - dolphin.git/commitdiff
provide zoom-out and zoom-in buttons beside the zoom slider
authorPeter Penz <peter.penz19@gmail.com>
Tue, 7 Oct 2008 18:38:53 +0000 (18:38 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Tue, 7 Oct 2008 18:38:53 +0000 (18:38 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=868953

src/dolphinstatusbar.cpp
src/dolphinstatusbar.h

index 499a982bc7d337e21c9f9203980da6751056a2f3..fae0eccdfeb2d0dec6538103b8b4666f5d95fa64 100644 (file)
 #include "statusbarspaceinfo.h"
 #include "zoomlevelinfo.h"
 
-#include <QtGui/QLabel>
-#include <QtGui/QProgressBar>
-#include <QtCore/QTimer>
+#include <QHBoxLayout>
+#include <QLabel>
+#include <QProgressBar>
+#include <QToolButton>
+#include <QTimer>
 
 #include <kiconloader.h>
+#include <kicon.h>
 #include <kvbox.h>
 
 DolphinStatusBar::DolphinStatusBar(QWidget* parent, DolphinView* view) :
@@ -38,10 +41,14 @@ DolphinStatusBar::DolphinStatusBar(QWidget* parent, DolphinView* view) :
     m_view(view),
     m_messageLabel(0),
     m_spaceInfo(0),
+    m_zoomWidget(0),
+    m_zoomOut(0),
     m_zoomSlider(0),
+    m_zoomIn(0),
     m_progressBar(0),
     m_progress(100)
 {
+    setMargin(0);
     setSpacing(4);
 
     connect(m_view, SIGNAL(urlChanged(const KUrl&)),
@@ -56,7 +63,13 @@ DolphinStatusBar::DolphinStatusBar(QWidget* parent, DolphinView* view) :
     m_spaceInfo->setUrl(m_view->url());
     
     // initialize zoom slider
-    m_zoomSlider = new QSlider(Qt::Horizontal, this);
+    m_zoomWidget = new QWidget(this);
+
+    m_zoomOut = new QToolButton(m_zoomWidget);
+    m_zoomOut->setIcon(KIcon("zoom-out"));
+    m_zoomOut->setAutoRaise(true);
+    
+    m_zoomSlider = new QSlider(Qt::Horizontal, m_zoomWidget);
     m_zoomSlider->setPageStep(1);
     
     const int min = ZoomLevelInfo::minimumLevel();
@@ -64,12 +77,23 @@ DolphinStatusBar::DolphinStatusBar(QWidget* parent, DolphinView* view) :
     m_zoomSlider->setRange(min, max);
     m_zoomSlider->setValue(view->zoomLevel());
     
-    connect(m_zoomSlider, SIGNAL(valueChanged(int)),
-            this, SLOT(setZoomLevel(int)));
-    connect(m_view, SIGNAL(zoomLevelChanged(int)),
-            m_zoomSlider, SLOT(setValue(int)));
+    m_zoomIn = new QToolButton(m_zoomWidget);
+    m_zoomIn->setIcon(KIcon("zoom-in"));
+    m_zoomIn->setAutoRaise(true);
+        
+    QHBoxLayout* zoomWidgetLayout = new QHBoxLayout(m_zoomWidget);
+    zoomWidgetLayout->setSpacing(0);
+    zoomWidgetLayout->setMargin(0);
+    zoomWidgetLayout->addWidget(m_zoomOut);
+    zoomWidgetLayout->addWidget(m_zoomSlider);
+    zoomWidgetLayout->addWidget(m_zoomIn);
+    
+    connect(m_zoomSlider, SIGNAL(valueChanged(int)), this, SLOT(setZoomLevel(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()));
             
-    // initialize progress informatino
+    // initialize progress information
     m_progressText = new QLabel(this);
     m_progressText->hide();
 
@@ -83,9 +107,12 @@ DolphinStatusBar::DolphinStatusBar(QWidget* parent, DolphinView* view) :
     setMinimumHeight(barHeight);
     m_messageLabel->setMinimumTextHeight(barHeight);
     m_spaceInfo->setFixedHeight(contentHeight);
+    
     m_progressBar->setFixedHeight(contentHeight);
     m_progressBar->setMaximumWidth(200);
-    m_zoomSlider->setMaximumWidth(100);
+    
+    m_zoomWidget->setMaximumWidth(150);
+    m_zoomWidget->setFixedHeight(contentHeight);
     
     setExtensionsVisible(true);
 }
@@ -209,6 +236,8 @@ void DolphinStatusBar::updateSpaceInfoContent(const KUrl& url)
 
 void DolphinStatusBar::setZoomLevel(int zoomLevel)
 {
+    m_zoomOut->setEnabled(zoomLevel > m_zoomSlider->minimum());
+    m_zoomIn->setEnabled(zoomLevel < m_zoomSlider->maximum());
     m_view->setZoomLevel(zoomLevel);
 }
 
@@ -218,8 +247,8 @@ void DolphinStatusBar::assureVisibleText()
     const bool isProgressBarVisible = m_progressBar->isVisible();
     
     const int spaceInfoWidth  = m_spaceInfo->isVisible()  ? m_spaceInfo->width()  : 0;
-    const int zoomSliderWidth = m_zoomSlider->isVisible() ? m_zoomSlider->width() : 0;
-    const int widgetsWidth = spaceInfoWidth + zoomSliderWidth;
+    const int zoomWidgetWidth = m_zoomWidget->isVisible() ? m_zoomWidget->width() : 0;
+    const int widgetsWidth = spaceInfoWidth + zoomWidgetWidth;
 
     if (widgetsWidth > 0) {
         // The space information and (or) the zoom slider are (is) shown.
@@ -232,6 +261,18 @@ void DolphinStatusBar::assureVisibleText()
     }
 }
 
+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::setExtensionsVisible(bool visible)
 {
     bool spaceInfoVisible = visible;
@@ -243,7 +284,7 @@ void DolphinStatusBar::setExtensionsVisible(bool visible)
     }
     
     m_spaceInfo->setVisible(spaceInfoVisible);
-    m_zoomSlider->setVisible(zoomSliderVisible);
+    m_zoomWidget->setVisible(zoomSliderVisible);
 }
 
 #include "dolphinstatusbar.moc"
index e64312b480cff439037485101308689f2afd7a4f..c959410aa7a0aa102364879d8cda562f1776e737 100644 (file)
@@ -29,6 +29,7 @@ class StatusBarMessageLabel;
 class StatusBarSpaceInfo;
 class QLabel;
 class QProgressBar;
+class QToolButton;
 class QSlider;
 class QTimer;
 
@@ -147,6 +148,9 @@ private slots:
      */
     void assureVisibleText();
     
+    void zoomOut();
+    void zoomIn();
+    
 private:
     /**
      * Makes the space information widget and zoom slider widget
@@ -160,7 +164,11 @@ private:
     DolphinView* m_view;
     StatusBarMessageLabel* m_messageLabel;
     StatusBarSpaceInfo* m_spaceInfo;
+    
+    QWidget* m_zoomWidget;
+    QToolButton* m_zoomOut;
     QSlider* m_zoomSlider;
+    QToolButton* m_zoomIn;
 
     QLabel* m_progressText;
     QProgressBar* m_progressBar;