From: Peter Penz Date: Tue, 7 Oct 2008 18:38:53 +0000 (+0000) Subject: provide zoom-out and zoom-in buttons beside the zoom slider X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/f0b8e6518506c7d3b8d2beb2b391d6f4301608cf provide zoom-out and zoom-in buttons beside the zoom slider svn path=/trunk/KDE/kdebase/apps/; revision=868953 --- diff --git a/src/dolphinstatusbar.cpp b/src/dolphinstatusbar.cpp index 499a982bc..fae0eccdf 100644 --- a/src/dolphinstatusbar.cpp +++ b/src/dolphinstatusbar.cpp @@ -26,11 +26,14 @@ #include "statusbarspaceinfo.h" #include "zoomlevelinfo.h" -#include -#include -#include +#include +#include +#include +#include +#include #include +#include #include 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" diff --git a/src/dolphinstatusbar.h b/src/dolphinstatusbar.h index e64312b48..c959410aa 100644 --- a/src/dolphinstatusbar.h +++ b/src/dolphinstatusbar.h @@ -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;