From dd8fa5d80ceb0900eca32f0a057afde38b423776 Mon Sep 17 00:00:00 2001 From: Vesa Date: Sat, 1 Mar 2014 23:44:58 +0200 Subject: [PATCH] Make LcdSpinBox double-clickable to enter value --- include/LcdSpinBox.h | 7 ++++--- src/gui/widgets/LcdSpinBox.cpp | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/include/LcdSpinBox.h b/include/LcdSpinBox.h index a827b17cb..c95bad443 100644 --- a/include/LcdSpinBox.h +++ b/include/LcdSpinBox.h @@ -23,8 +23,8 @@ */ -#ifndef _LCD_SPINBOX_H -#define _LCD_SPINBOX_H +#ifndef LCD_SPINBOX_H +#define LCD_SPINBOX_H #include "LcdWidget.h" #include "AutomatableModelView.h" @@ -70,12 +70,13 @@ protected: virtual void mouseMoveEvent( QMouseEvent * _me ); virtual void mouseReleaseEvent( QMouseEvent * _me ); virtual void wheelEvent( QWheelEvent * _we ); + virtual void mouseDoubleClickEvent( QMouseEvent * _me ); private: bool m_mouseMoving; QPoint m_origMousePos; int m_displayOffset; - + void enterValue(); signals: void manualChange(); diff --git a/src/gui/widgets/LcdSpinBox.cpp b/src/gui/widgets/LcdSpinBox.cpp index a94c86435..3c638c5d5 100644 --- a/src/gui/widgets/LcdSpinBox.cpp +++ b/src/gui/widgets/LcdSpinBox.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include "LcdSpinBox.h" #include "caption_menu.h" @@ -119,6 +120,8 @@ void LcdSpinBox::mouseMoveEvent( QMouseEvent* event ) if( m_mouseMoving ) { int dy = event->globalY() - m_origMousePos.y(); + if( engine::mainWindow()->isShiftPressed() ) + dy = qBound( -4, dy/4, 4 ); if( dy > 1 || dy < -1 ) { model()->setInitValue( model()->value() - @@ -156,7 +159,30 @@ void LcdSpinBox::wheelEvent( QWheelEvent * _we ) emit manualChange(); } +void LcdSpinBox::mouseDoubleClickEvent( QMouseEvent * ) +{ + enterValue(); +} +void LcdSpinBox::enterValue() +{ + bool ok; + int new_val; + + new_val = QInputDialog::getInt( + this, windowTitle(), + tr( "Please enter a new value between %1 and %2:" ). + arg( model()->minValue() ). + arg( model()->maxValue() ), + model()->value(), + model()->minValue(), + model()->maxValue(), 4, &ok ); + + if( ok ) + { + model()->setValue( new_val ); + } +} #include "moc_LcdSpinBox.cxx"