1/****************************************************************************
2**
3** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
4** Contact: http://www.qt-project.org/legal
5**
6** This file is part of the QtGui module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and Digia. For licensing terms and
14** conditions see http://qt.digia.com/licensing. For further information
15** use the contact form at http://qt.digia.com/contact-us.
16**
17** GNU Lesser General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU Lesser
19** General Public License version 2.1 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPL included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 2.1 requirements
23** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24**
25** In addition, as a special exception, Digia gives you certain additional
26** rights. These rights are described in the Digia Qt LGPL Exception
27** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28**
29** GNU General Public License Usage
30** Alternatively, this file may be used under the terms of the GNU
31** General Public License version 3.0 as published by the Free Software
32** Foundation and appearing in the file LICENSE.GPL included in the
33** packaging of this file. Please review the following information to
34** ensure the GNU General Public License version 3.0 requirements will be
35** met: http://www.gnu.org/copyleft/gpl.html.
36**
37**
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#ifndef QABSTRACTSLIDER_H
43#define QABSTRACTSLIDER_H
44
45#include <QtGui/qwidget.h>
46
47QT_BEGIN_HEADER
48
49QT_BEGIN_NAMESPACE
50
51QT_MODULE(Gui)
52
53class QAbstractSliderPrivate;
54
55class Q_GUI_EXPORT QAbstractSlider : public QWidget
56{
57 Q_OBJECT
58
59 Q_PROPERTY(int minimum READ minimum WRITE setMinimum)
60 Q_PROPERTY(int maximum READ maximum WRITE setMaximum)
61 Q_PROPERTY(int singleStep READ singleStep WRITE setSingleStep)
62 Q_PROPERTY(int pageStep READ pageStep WRITE setPageStep)
63 Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged USER true)
64 Q_PROPERTY(int sliderPosition READ sliderPosition WRITE setSliderPosition NOTIFY sliderMoved)
65 Q_PROPERTY(bool tracking READ hasTracking WRITE setTracking)
66 Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation)
67 Q_PROPERTY(bool invertedAppearance READ invertedAppearance WRITE setInvertedAppearance)
68 Q_PROPERTY(bool invertedControls READ invertedControls WRITE setInvertedControls)
69 Q_PROPERTY(bool sliderDown READ isSliderDown WRITE setSliderDown DESIGNABLE false)
70
71public:
72 explicit QAbstractSlider(QWidget *parent=0);
73 ~QAbstractSlider();
74
75 Qt::Orientation orientation() const;
76
77 void setMinimum(int);
78 int minimum() const;
79
80 void setMaximum(int);
81 int maximum() const;
82
83 void setRange(int min, int max);
84
85 void setSingleStep(int);
86 int singleStep() const;
87
88 void setPageStep(int);
89 int pageStep() const;
90
91 void setTracking(bool enable);
92 bool hasTracking() const;
93
94 void setSliderDown(bool);
95 bool isSliderDown() const;
96
97 void setSliderPosition(int);
98 int sliderPosition() const;
99
100 void setInvertedAppearance(bool);
101 bool invertedAppearance() const;
102
103 void setInvertedControls(bool);
104 bool invertedControls() const;
105
106 enum SliderAction {
107 SliderNoAction,
108 SliderSingleStepAdd,
109 SliderSingleStepSub,
110 SliderPageStepAdd,
111 SliderPageStepSub,
112 SliderToMinimum,
113 SliderToMaximum,
114 SliderMove
115 };
116
117 int value() const;
118
119 void triggerAction(SliderAction action);
120
121public Q_SLOTS:
122 void setValue(int);
123 void setOrientation(Qt::Orientation);
124
125Q_SIGNALS:
126 void valueChanged(int value);
127
128 void sliderPressed();
129 void sliderMoved(int position);
130 void sliderReleased();
131
132 void rangeChanged(int min, int max);
133
134 void actionTriggered(int action);
135
136protected:
137 bool event(QEvent *e);
138
139 void setRepeatAction(SliderAction action, int thresholdTime = 500, int repeatTime = 50);
140 SliderAction repeatAction() const;
141
142 enum SliderChange {
143 SliderRangeChange,
144 SliderOrientationChange,
145 SliderStepsChange,
146 SliderValueChange
147 };
148 virtual void sliderChange(SliderChange change);
149
150 void keyPressEvent(QKeyEvent *ev);
151 void timerEvent(QTimerEvent *);
152#ifndef QT_NO_WHEELEVENT
153 void wheelEvent(QWheelEvent *e);
154#endif
155 void changeEvent(QEvent *e);
156
157#ifdef QT3_SUPPORT
158public:
159 inline QT3_SUPPORT int minValue() const { return minimum(); }
160 inline QT3_SUPPORT int maxValue() const { return maximum(); }
161 inline QT3_SUPPORT int lineStep() const { return singleStep(); }
162 inline QT3_SUPPORT void setMinValue(int v) { setMinimum(v); }
163 inline QT3_SUPPORT void setMaxValue(int v) { setMaximum(v); }
164 inline QT3_SUPPORT void setLineStep(int v) { setSingleStep(v); }
165 inline QT3_SUPPORT void setSteps(int single, int page) { setSingleStep(single); setPageStep(page); }
166 inline QT3_SUPPORT void addPage() { triggerAction(SliderPageStepAdd); }
167 inline QT3_SUPPORT void subtractPage() { triggerAction(SliderPageStepSub); }
168 inline QT3_SUPPORT void addLine() { triggerAction(SliderSingleStepAdd); }
169 inline QT3_SUPPORT void subtractLine() { triggerAction(SliderSingleStepSub); }
170#endif
171
172protected:
173 QAbstractSlider(QAbstractSliderPrivate &dd, QWidget *parent=0);
174
175private:
176 Q_DISABLE_COPY(QAbstractSlider)
177 Q_DECLARE_PRIVATE(QAbstractSlider)
178};
179
180QT_END_NAMESPACE
181
182QT_END_HEADER
183
184#endif // QABSTRACTSLIDER_H
185