digiKam
Loading...
Searching...
No Matches
dsliderspinbox.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2014-11-30
7 * Description : Save space slider widget
8 *
9 * SPDX-FileCopyrightText: 2014-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2010 by Justin Noel <justin at ics dot com>
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 *
14 * ============================================================ */
15
16#pragma once
17
18// Qt includes
19
20#include <QAbstractSpinBox>
21#include <QStyleOptionSpinBox>
22#include <QStyleOptionProgressBar>
23
24namespace Digikam
25{
26
27class DAbstractSliderSpinBoxPrivate;
28class DSliderSpinBoxPrivate;
29class DDoubleSliderSpinBoxPrivate;
30
31class DAbstractSliderSpinBox : public QWidget
32{
33 Q_OBJECT
34 Q_DISABLE_COPY(DAbstractSliderSpinBox)
35 Q_DECLARE_PRIVATE(DAbstractSliderSpinBox)
36
37protected:
38
39 explicit DAbstractSliderSpinBox(QWidget* const parent,
40 DAbstractSliderSpinBoxPrivate* const q);
41
42public:
43
44 ~DAbstractSliderSpinBox() override;
45
46 void showEdit();
47 void hideEdit();
48
49 void setPrefix(const QString& prefix);
50 void setSuffix(const QString& suffix);
51
52 void setExponentRatio(double dbl);
53
59 void setBlockUpdateSignalOnDrag(bool block);
60
61 QSize sizeHint() const override;
62 QSize minimumSizeHint() const override;
63 virtual QSize minimumSize() const;
64
65 bool isDragging() const;
66
67protected:
68
69 void paintEvent(QPaintEvent* e) override;
70 void mousePressEvent(QMouseEvent* e) override;
71 void mouseReleaseEvent(QMouseEvent* e) override;
72 void mouseMoveEvent(QMouseEvent* e) override;
73 void keyPressEvent(QKeyEvent* e) override;
74 void wheelEvent(QWheelEvent* e) override;
75 void focusInEvent(QFocusEvent* e) override;
76 bool eventFilter(QObject* recv, QEvent* e) override;
77
78 QStyleOptionSpinBox spinBoxOptions() const;
79 QStyleOptionProgressBar progressBarOptions() const;
80
81 QRect progressRect(const QStyleOptionSpinBox& spinBoxOptions) const;
82 QRect upButtonRect(const QStyleOptionSpinBox& spinBoxOptions) const;
83 QRect downButtonRect(const QStyleOptionSpinBox& spinBoxOptions) const;
84
85 int valueForX(int x, Qt::KeyboardModifiers modifiers = Qt::NoModifier) const;
86
87 virtual QString valueString() const = 0;
88
93 virtual void setInternalValue(int value, bool blockUpdateSignal) = 0;
94
95protected Q_SLOTS:
96
97 void contextMenuEvent(QContextMenuEvent* event) override;
98 void editLostFocus();
99
100protected:
101
102 DAbstractSliderSpinBoxPrivate* const d_ptr;
103
104 // -- QWidget interface --------------------------------------
105
106protected:
107
108 void changeEvent(QEvent* e) override;
109 void paint(QPainter& painter);
110 void paintFusion(QPainter& painter);
111 void paintPlastique(QPainter& painter);
112 void paintBreeze(QPainter& painter);
113
114private:
115
116 void setInternalValue(int value);
117};
118
119// ---------------------------------------------------------------------------------
120
122{
123 Q_OBJECT
124 Q_DECLARE_PRIVATE(DSliderSpinBox)
125 Q_PROPERTY(int minimum READ minimum WRITE setMinimum)
126 Q_PROPERTY(int maximum READ maximum WRITE setMaximum)
127
128public:
129
130 explicit DSliderSpinBox(QWidget* const parent = nullptr);
131 ~DSliderSpinBox() override = default;
132
133 void setRange(int minimum, int maximum);
134
135 int minimum() const;
136 void setMinimum(int minimum);
137 int maximum() const;
138 void setMaximum(int maximum);
139 int fastSliderStep() const;
140 void setFastSliderStep(int step);
141
143 int value();
144
145 void setSingleStep(int value);
146 void setPageStep(int value);
147
148public Q_SLOTS:
149
151 void setValue(int value);
152
153protected:
154
155 QString valueString() const override;
156 void setInternalValue(int value, bool blockUpdateSignal) override;
157
158Q_SIGNALS:
159
161};
162
163// ---------------------------------------------------------------------------------
164
166{
167 Q_OBJECT
168 Q_DECLARE_PRIVATE(DDoubleSliderSpinBox)
169
170public:
171
172 explicit DDoubleSliderSpinBox(QWidget* const parent = nullptr);
173 ~DDoubleSliderSpinBox() override = default;
174
175 void setRange(double minimum, double maximum, int decimals = 0);
176
177 double minimum() const;
178 void setMinimum(double minimum);
179 double maximum() const;
180 void setMaximum(double maximum);
181 double fastSliderStep() const;
182 void setFastSliderStep(double step);
183
184 double value();
185 void setSingleStep(double value);
186
187public Q_SLOTS:
188
189 void setValue(double value);
190
191protected:
192
193 QString valueString() const override;
194 void setInternalValue(int value, bool blockUpdateSignal) override;
195
196Q_SIGNALS:
197
198 void valueChanged(double value);
199};
200
201} // namespace Digikam
Definition dsliderspinbox.h:32
virtual void setInternalValue(int value, bool blockUpdateSignal)=0
void contextMenuEvent(QContextMenuEvent *event) override
Definition dsliderspinbox.cpp:987
void paint(QPainter &painter)
Definition dsliderspinbox.cpp:200
void showEdit()
Definition dsliderspinbox.cpp:130
QRect progressRect(const QStyleOptionSpinBox &spinBoxOptions) const
Definition dsliderspinbox.cpp:850
virtual QSize minimumSize() const
Definition dsliderspinbox.cpp:774
QStyleOptionProgressBar progressBarOptions() const
Definition dsliderspinbox.cpp:822
void wheelEvent(QWheelEvent *e) override
Definition dsliderspinbox.cpp:604
QRect downButtonRect(const QStyleOptionSpinBox &spinBoxOptions) const
Definition dsliderspinbox.cpp:886
bool isDragging() const
Definition dsliderspinbox.cpp:1012
void hideEdit()
Definition dsliderspinbox.cpp:155
void paintFusion(QPainter &painter)
Definition dsliderspinbox.cpp:250
void setSuffix(const QString &suffix)
Definition dsliderspinbox.cpp:964
void mouseReleaseEvent(QMouseEvent *e) override
Definition dsliderspinbox.cpp:471
void mouseMoveEvent(QMouseEvent *e) override
Definition dsliderspinbox.cpp:512
void paintEvent(QPaintEvent *e) override
Definition dsliderspinbox.cpp:163
void changeEvent(QEvent *e) override
Definition dsliderspinbox.cpp:1019
void setPrefix(const QString &prefix)
Definition dsliderspinbox.cpp:957
void mousePressEvent(QMouseEvent *e) override
Definition dsliderspinbox.cpp:443
void keyPressEvent(QKeyEvent *e) override
Definition dsliderspinbox.cpp:542
void paintBreeze(QPainter &painter)
Definition dsliderspinbox.cpp:383
virtual QString valueString() const =0
bool eventFilter(QObject *recv, QEvent *e) override
Definition dsliderspinbox.cpp:631
int valueForX(int x, Qt::KeyboardModifiers modifiers=Qt::NoModifier) const
Definition dsliderspinbox.cpp:892
void setExponentRatio(double dbl)
Definition dsliderspinbox.cpp:971
QSize sizeHint() const override
Definition dsliderspinbox.cpp:690
~DAbstractSliderSpinBox() override
Definition dsliderspinbox.cpp:123
void editLostFocus()
Definition dsliderspinbox.cpp:992
QRect upButtonRect(const QStyleOptionSpinBox &spinBoxOptions) const
Definition dsliderspinbox.cpp:880
QSize minimumSizeHint() const override
Definition dsliderspinbox.cpp:769
void paintPlastique(QPainter &painter)
Definition dsliderspinbox.cpp:320
void focusInEvent(QFocusEvent *e) override
Definition dsliderspinbox.cpp:621
void setBlockUpdateSignalOnDrag(bool block)
Definition dsliderspinbox.cpp:980
QStyleOptionSpinBox spinBoxOptions() const
Definition dsliderspinbox.cpp:779
DAbstractSliderSpinBoxPrivate *const d_ptr
Definition dsliderspinbox.h:102
Definition dsliderspinbox.h:166
void valueChanged(double value)
~DDoubleSliderSpinBox() override=default
Definition dsliderspinbox.h:122
void setInternalValue(int value, bool blockUpdateSignal) override
Definition dsliderspinbox.cpp:1161
int fastSliderStep() const
Definition dsliderspinbox.cpp:1113
void valueChanged(int value)
int minimum
Definition dsliderspinbox.h:125
void setMinimum(int minimum)
Definition dsliderspinbox.cpp:1092
int value()
Get the value, don't use value()
Definition dsliderspinbox.cpp:1127
void setMaximum(int maximum)
Definition dsliderspinbox.cpp:1106
void setFastSliderStep(int step)
Definition dsliderspinbox.cpp:1120
QString valueString() const override
Definition dsliderspinbox.cpp:1140
void setRange(int minimum, int maximum)
Definition dsliderspinbox.cpp:1074
void setValue(int value)
Set the value, don't use setValue()
Definition dsliderspinbox.cpp:1134
void setSingleStep(int value)
Definition dsliderspinbox.cpp:1149
void setPageStep(int value)
Definition dsliderspinbox.cpp:1156
int maximum
Definition dsliderspinbox.h:126
QStringView prefix
Definition itemviewutilities.cpp:586
QStringView suffix
Definition itemviewutilities.cpp:587
qulonglong value
Definition itemviewutilities.cpp:585
Definition datefolderview.cpp:34