annotate widgets/Thumbwheel.h @ 1348:01778052e663

Avoid blowing up when faced with min==max in parameter range
author Chris Cannam
date Mon, 01 Oct 2018 14:46:36 +0100
parents 13f5f84fbfad
children a18e78b9c78b
rev   line source
Chris@132 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@132 2
Chris@132 3 /*
Chris@132 4 Sonic Visualiser
Chris@132 5 An audio file viewer and annotation editor.
Chris@132 6 Centre for Digital Music, Queen Mary, University of London.
Chris@182 7 This file copyright 2006 QMUL.
Chris@132 8
Chris@132 9 This program is free software; you can redistribute it and/or
Chris@132 10 modify it under the terms of the GNU General Public License as
Chris@132 11 published by the Free Software Foundation; either version 2 of the
Chris@132 12 License, or (at your option) any later version. See the file
Chris@132 13 COPYING included with this distribution for more information.
Chris@132 14 */
Chris@132 15
Chris@1303 16 #ifndef SV_THUMBWHEEL_H
Chris@1303 17 #define SV_THUMBWHEEL_H
Chris@132 18
Chris@132 19 #include <QWidget>
Chris@382 20 #include <QImage>
Chris@382 21
Chris@382 22 #include <map>
Chris@132 23
Chris@1303 24 #include "WheelCounter.h"
Chris@1303 25
Chris@187 26 class RangeMapper;
Chris@187 27
Chris@132 28 class Thumbwheel : public QWidget
Chris@132 29 {
Chris@132 30 Q_OBJECT
Chris@132 31
Chris@132 32 public:
Chris@133 33 Thumbwheel(Qt::Orientation orientation, QWidget *parent = 0);
Chris@132 34 virtual ~Thumbwheel();
Chris@132 35
Chris@133 36 int getMinimumValue() const;
Chris@133 37 int getMaximumValue() const;
Chris@133 38 int getDefaultValue() const;
Chris@132 39 float getSpeed() const;
Chris@132 40 bool getTracking() const;
Chris@132 41 bool getShowScale() const;
Chris@132 42 int getValue() const;
Chris@132 43
Chris@187 44 void setRangeMapper(RangeMapper *mapper); // I take ownership, will delete
Chris@187 45 const RangeMapper *getRangeMapper() const { return m_rangeMapper; }
Chris@908 46 double getMappedValue() const;
Chris@187 47
Chris@187 48 void setShowToolTip(bool show);
Chris@187 49
Chris@132 50 QSize sizeHint() const;
Chris@132 51
Chris@132 52 signals:
Chris@132 53 void valueChanged(int);
Chris@132 54
Chris@189 55 void mouseEntered();
Chris@189 56 void mouseLeft();
Chris@189 57
Chris@133 58 public slots:
Chris@133 59 void setMinimumValue(int min);
Chris@133 60 void setMaximumValue(int max);
Chris@133 61 void setDefaultValue(int deft);
Chris@133 62 void setSpeed(float speed);
Chris@133 63 void setTracking(bool tracking);
Chris@133 64 void setShowScale(bool show);
Chris@133 65 void setValue(int value);
Chris@908 66 void setMappedValue(double mappedValue);
Chris@256 67 void scroll(bool up);
Chris@133 68 void resetToDefault();
Chris@133 69
Chris@187 70 protected slots:
Chris@187 71 void updateMappedValue(int value);
Chris@187 72
Chris@189 73 protected:
Chris@189 74 virtual void mousePressEvent(QMouseEvent *e);
Chris@189 75 virtual void mouseDoubleClickEvent(QMouseEvent *e);
Chris@189 76 virtual void mouseMoveEvent(QMouseEvent *e);
Chris@189 77 virtual void mouseReleaseEvent(QMouseEvent *e);
Chris@189 78 virtual void wheelEvent(QWheelEvent *e);
Chris@189 79 virtual void paintEvent(QPaintEvent *e);
Chris@189 80 virtual void enterEvent(QEvent *);
Chris@189 81 virtual void leaveEvent(QEvent *);
Chris@189 82
Chris@132 83 int m_min;
Chris@132 84 int m_max;
Chris@132 85 int m_default;
Chris@132 86 int m_value;
Chris@908 87 double m_mappedValue;
Chris@187 88 bool m_noMappedUpdate;
Chris@165 89 float m_rotation;
Chris@132 90 Qt::Orientation m_orientation;
Chris@132 91 float m_speed;
Chris@132 92 bool m_tracking;
Chris@132 93 bool m_showScale;
Chris@132 94 bool m_clicked;
Chris@133 95 bool m_atDefault;
Chris@132 96 QPoint m_clickPos;
Chris@165 97 float m_clickRotation;
Chris@187 98 bool m_showTooltip;
Chris@187 99 RangeMapper *m_rangeMapper;
Chris@382 100 QImage m_cache;
Chris@1303 101 WheelCounter m_wheelCounter;
Chris@132 102 };
Chris@132 103
Chris@132 104 #endif