svgui  1.9
AudioDial.h
Go to the documentation of this file.
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2 
3 /*
4  Sonic Visualiser
5  An audio file viewer and annotation editor.
6  Centre for Digital Music, Queen Mary, University of London.
7 
8  This program is free software; you can redistribute it and/or
9  modify it under the terms of the GNU General Public License as
10  published by the Free Software Foundation; either version 2 of the
11  License, or (at your option) any later version. See the file
12  COPYING included with this distribution for more information.
13 */
14 
15 #ifndef _AUDIO_DIAL_H_
16 #define _AUDIO_DIAL_H_
17 
41 #include <QDial>
42 #include <map>
43 
44 class RangeMapper;
45 
59 class AudioDial : public QDial
60 {
61  Q_OBJECT
62  Q_PROPERTY( QColor knobColor READ getKnobColor WRITE setKnobColor )
63  Q_PROPERTY( QColor meterColor READ getMeterColor WRITE setMeterColor )
64  Q_PROPERTY( bool mouseDial READ getMouseDial WRITE setMouseDial )
65 
66 public:
67  AudioDial(QWidget *parent = 0);
68  ~AudioDial();
69 
70  const QColor& getKnobColor() const { return m_knobColor; }
71  const QColor& getMeterColor() const { return m_meterColor; }
72  bool getMouseDial() const { return m_mouseDial; }
73 
74  void setRangeMapper(RangeMapper *mapper); // I take ownership, will delete
75  const RangeMapper *rangeMapper() const { return m_rangeMapper; }
76  float mappedValue() const;
77 
78  int defaultValue() const { return m_defaultValue; }
79 
80  void setShowToolTip(bool show);
81 
82 signals:
83  void mouseEntered();
84  void mouseLeft();
85 
86 public slots:
91  void setKnobColor(const QColor &color);
92 
98  void setMeterColor(const QColor &color);
99 
104  void setMouseDial(bool mouseDial);
105 
106  void setDefaultValue(int defaultValue);
107 
108  void setValue(int value);
109 
111 
112  void setMappedValue(float mappedValue);
113 
114  void setToDefault();
115 
116 protected:
117  void drawTick(QPainter &paint, float angle, int size, bool internal);
118  virtual void paintEvent(QPaintEvent *);
119 
120  // Alternate mouse behavior event handlers.
121  virtual void mousePressEvent(QMouseEvent *pMouseEvent);
122  virtual void mouseMoveEvent(QMouseEvent *pMouseEvent);
123  virtual void mouseReleaseEvent(QMouseEvent *pMouseEvent);
124  virtual void mouseDoubleClickEvent(QMouseEvent *pMouseEvent);
125  virtual void enterEvent(QEvent *);
126  virtual void leaveEvent(QEvent *);
127 
128 protected slots:
129  void updateMappedValue(int value);
130 
131 private:
132  QColor m_knobColor;
133  QColor m_meterColor;
134 
139 
140  // Alternate mouse behavior tracking.
143  QPoint m_posMouse;
144 
146 
147  RangeMapper *m_rangeMapper;
148 };
149 
150 
151 #endif // __AudioDial_h
152 
153 // end of AudioDial.h
int defaultValue() const
Definition: AudioDial.h:78
QPoint m_posMouse
Definition: AudioDial.h:143
bool m_mousePressed
Definition: AudioDial.h:142
void setDefaultValue(int defaultValue)
Definition: AudioDial.cpp:339
void setMeterColor(const QColor &color)
Set the colour of the meter (the highlighted area around the knob that shows the current value).
Definition: AudioDial.cpp:326
float mappedValue() const
Definition: AudioDial.cpp:390
const QColor & getMeterColor() const
Definition: AudioDial.h:71
void setMappedValue(float mappedValue)
Definition: AudioDial.cpp:361
void setDefaultMappedValue(float mappedValue)
Definition: AudioDial.cpp:353
void setMouseDial(bool mouseDial)
Specify that the dial should respond to radial mouse movements in the same way as QDial.
Definition: AudioDial.cpp:333
QColor meterColor
Definition: AudioDial.h:63
void setToDefault()
Definition: AudioDial.cpp:425
bool m_mouseDial
Definition: AudioDial.h:141
bool getMouseDial() const
Definition: AudioDial.h:72
AudioDial is a nicer-looking QDial that by default reacts to mouse movement on horizontal and vertica...
Definition: AudioDial.h:59
virtual void enterEvent(QEvent *)
Definition: AudioDial.cpp:557
virtual void mouseDoubleClickEvent(QMouseEvent *pMouseEvent)
Definition: AudioDial.cpp:453
bool m_showTooltip
Definition: AudioDial.h:145
bool mouseDial
Definition: AudioDial.h:64
const QColor & getKnobColor() const
Definition: AudioDial.h:70
float m_defaultMappedValue
Definition: AudioDial.h:136
QColor knobColor
Definition: AudioDial.h:62
void setValue(int value)
Definition: AudioDial.cpp:347
void drawTick(QPainter &paint, float angle, int size, bool internal)
Definition: AudioDial.cpp:291
QColor m_knobColor
Definition: AudioDial.h:132
void mouseEntered()
int m_defaultValue
Definition: AudioDial.h:135
RangeMapper * m_rangeMapper
Definition: AudioDial.h:147
void mouseLeft()
void setKnobColor(const QColor &color)
Set the colour of the knob.
Definition: AudioDial.cpp:319
float m_mappedValue
Definition: AudioDial.h:137
void setRangeMapper(RangeMapper *mapper)
Definition: AudioDial.cpp:100
virtual void paintEvent(QPaintEvent *)
Definition: AudioDial.cpp:118
virtual void mouseReleaseEvent(QMouseEvent *pMouseEvent)
Definition: AudioDial.cpp:547
virtual void mousePressEvent(QMouseEvent *pMouseEvent)
Definition: AudioDial.cpp:438
void updateMappedValue(int value)
Definition: AudioDial.cpp:400
virtual void leaveEvent(QEvent *)
Definition: AudioDial.cpp:564
virtual void mouseMoveEvent(QMouseEvent *pMouseEvent)
Definition: AudioDial.cpp:527
QColor m_meterColor
Definition: AudioDial.h:133
bool m_noMappedUpdate
Definition: AudioDial.h:138
const RangeMapper * rangeMapper() const
Definition: AudioDial.h:75
void setShowToolTip(bool show)
Definition: AudioDial.cpp:381