//============================================================================= // Awl // Audio Widget Library // $Id:$ // // Copyright (C) 1999-2011 by Werner Schweer and others // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License // as published by the Free Software Foundation; version 2 of // the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. //============================================================================= #ifndef __FLOATLABEL_H__ #define __FLOATLABEL_H__ #include class QMouseEvent; class QTimer; class QWheelEvent; namespace Awl { //--------------------------------------------------------- // FloatEntry //--------------------------------------------------------- class FloatEntry : public QLineEdit { Q_OBJECT Q_PROPERTY(int id READ id WRITE setId) Q_PROPERTY(double minValue READ minValue WRITE setMinValue) Q_PROPERTY(double maxValue READ maxValue WRITE setMaxValue) Q_PROPERTY(QString specialText READ specialText WRITE setSpecialText) Q_PROPERTY(QString suffix READ suffix WRITE setSuffix) Q_PROPERTY(int precision READ precision WRITE setPrecision) Q_PROPERTY(bool log READ log WRITE setLog) int button; int starty; QTimer* timer; double evx; int timecount; double _minValue, _maxValue; QString _specialText; // text to show if value outside min,max QString _suffix; int _precision; bool _log; double calcIncrement() const; virtual void wheelEvent(QWheelEvent*); virtual void mousePressEvent(QMouseEvent*); virtual void mouseMoveEvent(QMouseEvent*); virtual void mouseDoubleClickEvent(QMouseEvent*); virtual void mouseReleaseEvent(QMouseEvent*); virtual void setSValue(const QString&); virtual bool setString(double); virtual void incValue(double); virtual void decValue(double); void contextMenuEvent(QContextMenuEvent*); void updateValue(); protected: int _id; double _value; virtual void valueChange(); private slots: void repeat(); protected slots: void endEdit(); public slots: virtual void setValue(double); signals: void valueChanged(double, int); public: FloatEntry(QWidget*); virtual QSize sizeHint() const; virtual double value() const; int id() const { return _id; } void setId(int i) { _id = i; } double minValue() const { return _minValue; } double maxValue() const { return _maxValue; } void setMinValue(double v) { _minValue = v; } void setMinLogValue(double v); void setMaxValue(double v) { _maxValue = v; } void setMaxLogValue(double v); void setRange(double a, double b) { _minValue = a; _maxValue = b; } void setLogRange(double a, double b) { setMinLogValue(a); setMaxLogValue(b); } int precision() const { return _precision; } void setPrecision(int val); QString specialText() const { return _specialText; } void setSpecialText(const QString& s) { _specialText = s; update(); } QString suffix() const { return _suffix; } void setSuffix(const QString& s) { _suffix = s; } bool log() const { return _log; } void setLog(bool v) { _log = v; } }; } #endif