From: Peter Penz Date: Sun, 26 Oct 2008 13:04:33 +0000 (+0000) Subject: Show the iconsize of zoom sliders as tooltip (code shamelessly stolen from Rafael... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/22d22a9cd701b726366f6c6feaf31842cbb50ca4?ds=sidebyside Show the iconsize of zoom sliders as tooltip (code shamelessly stolen from Rafael's patch in kfilewidget ;-)) svn path=/trunk/KDE/kdebase/apps/; revision=876081 --- diff --git a/src/dolphinstatusbar.cpp b/src/dolphinstatusbar.cpp index 069cc7450..c5e787e97 100644 --- a/src/dolphinstatusbar.cpp +++ b/src/dolphinstatusbar.cpp @@ -26,6 +26,7 @@ #include "statusbarspaceinfo.h" #include "zoomlevelinfo.h" +#include #include #include #include @@ -34,6 +35,7 @@ #include #include +#include #include 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())); @@ -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(i18nc("@info:tooltip", "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; diff --git a/src/dolphinstatusbar.h b/src/dolphinstatusbar.h index c959410aa..a5062928c 100644 --- a/src/dolphinstatusbar.h +++ b/src/dolphinstatusbar.h @@ -150,6 +150,7 @@ private slots: void zoomOut(); void zoomIn(); + void showZoomSliderToolTip(int zoomLevel); private: /** diff --git a/src/iconsizegroupbox.cpp b/src/iconsizegroupbox.cpp index d532f340f..7fa6790cf 100644 --- a/src/iconsizegroupbox.cpp +++ b/src/iconsizegroupbox.cpp @@ -21,10 +21,16 @@ #include +#include #include +#include #include +#include +#include #include +#include "zoomlevelinfo.h" + IconSizeGroupBox::IconSizeGroupBox(QWidget* parent) : QGroupBox(i18nc("@title:group", "Icon Size"), parent), m_defaultSizeSlider(0), @@ -35,14 +41,14 @@ IconSizeGroupBox::IconSizeGroupBox(QWidget* parent) : m_defaultSizeSlider->setPageStep(1); m_defaultSizeSlider->setTickPosition(QSlider::TicksBelow); connect(m_defaultSizeSlider, SIGNAL(sliderMoved(int)), - this, SIGNAL(defaultSizeChanged(int))); + this, SLOT(slotDefaultSliderMoved(int))); QLabel* previewLabel = new QLabel(i18nc("@label:listbox", "Preview:"), this); m_previewSizeSlider = new QSlider(Qt::Horizontal, this); m_previewSizeSlider->setPageStep(1); m_previewSizeSlider->setTickPosition(QSlider::TicksBelow); connect(m_previewSizeSlider, SIGNAL(sliderMoved(int)), - this, SIGNAL(defaultSizeChanged(int))); + this, SLOT(slotPreviewSliderMoved(int))); QGridLayout* layout = new QGridLayout(this); layout->addWidget(defaultLabel, 0, 0, Qt::AlignRight); @@ -85,4 +91,26 @@ int IconSizeGroupBox::previewSizeValue() const return m_previewSizeSlider->value(); } +void IconSizeGroupBox::slotDefaultSliderMoved(int value) +{ + showToolTip(m_defaultSizeSlider, value); + emit defaultSizeChanged(value); +} + +void IconSizeGroupBox::slotPreviewSliderMoved(int value) +{ + showToolTip(m_previewSizeSlider, value); + emit previewSizeChanged(value); +} + +void IconSizeGroupBox::showToolTip(QSlider* slider, int value) +{ + const int size = ZoomLevelInfo::iconSizeForZoomLevel(value); + slider->setToolTip(i18nc("@info:tooltip", "Size: %1 pixels", size)); + QPoint global = slider->rect().topLeft(); + global.ry() += slider->height() / 2; + QHelpEvent toolTipEvent(QEvent::ToolTip, QPoint(0, 0), slider->mapToGlobal(global)); + QApplication::sendEvent(slider, &toolTipEvent); +} + #include "iconsizegroupbox.moc" diff --git a/src/iconsizegroupbox.h b/src/iconsizegroupbox.h index 5f05862d6..c93fd8fc2 100644 --- a/src/iconsizegroupbox.h +++ b/src/iconsizegroupbox.h @@ -51,6 +51,13 @@ signals: void defaultSizeChanged(int value); void previewSizeChanged(int value); +private slots: + void slotDefaultSliderMoved(int value); + void slotPreviewSliderMoved(int value); + +private: + void showToolTip(QSlider* slider, int value); + private: QSlider* m_defaultSizeSlider; QSlider* m_previewSizeSlider;