1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
/***************************************************************************
kpoti.h - Potentiometer Widget
-------------------
begin : Wed Apr 28 23:05:05 MEST 1999
copyright : (C) 1999 by Martin Lorenz
email : lorenz@ch.tum.de
(C) 2002 Matthias Kretz <kretz@kde.org>
***************************************************************************/
/***************************************************************************
* *
* 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; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef _KPOTI_H
#define _KPOTI_H
#include <tqframe.h>
#include <tqrangecontrol.h>
class TQTimer;
struct TQPotiData;
class KPoti : public TQFrame, public TQRangeControl
{
Q_OBJECT
public:
KPoti( TQWidget *parent=0, const char *name=0 );
KPoti( int minValue, int maxValue, int step, int value,
TQWidget *parent=0, const char *name=0 );
~KPoti();
void setTracking( bool enable );
bool tracking() const;
void setColor( const TQColor & );
virtual void setTickmarks( bool );
virtual void setLabel( bool );
bool tickmarks() const { return ticks; }
virtual void setTickInterval( int );
int tickInterval() const { return tickInt; }
virtual TQSizePolicy sizePolicy() const;
virtual TQSize sizeHint() const;
virtual TQSize minimumSizeHint() const;
TQString text() const;
public slots:
void setValue( int );
void addStep();
void subtractStep();
void setText( const TQString & );
signals:
void valueChanged( int value );
void potiPressed();
void potiMoved( int value );
void potiReleased();
void mouseEntered(int value);
protected:
void resizeEvent( TQResizeEvent * );
void drawContents( TQPainter * );
void keyPressEvent( TQKeyEvent * );
void mousePressEvent( TQMouseEvent * );
void mouseReleaseEvent( TQMouseEvent * );
void mouseMoveEvent( TQMouseEvent * );
void enterEvent( TQEvent *);
void focusInEvent( TQFocusEvent *e );
void focusOutEvent( TQFocusEvent *e );
void valueChange();
void rangeChange();
virtual void paletteChange( const TQPalette & );
virtual void paintPoti( TQPainter * );
void drawButton( TQPainter *);
void drawTicks( TQPainter *, double, double, int=1 ) const;
virtual void wheelEvent(TQWheelEvent *e);
private slots:
void repeatTimeout();
private:
enum State { Idle, Dragging, TimingUp, TimingDown };
void init(int value=0);
float positionFromValue( int ) const;
int valueFromPosition( float ) const;
void movePoti( float );
void reallyMovePoti( float );
void resetState();
int potiRadius() const;
void initTicks();
TQTimer *timer;
float potiPos;
int potiVal;
int clickOffset;
State state;
bool track;
bool ticks, m_bLabel;
int tickInt, space;
double buttonRadius;
private: // Disabled copy constructor and operator=
// KPoti( const KPoti & ) {}
//KPoti &operator=( const KPoti & ) { return *this; }
struct KPotiPrivate;
KPotiPrivate * d;
};
inline bool KPoti::tracking() const
{
return track;
}
#endif // _KPOTI_H
|