| Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/widgets/widgets/qdial.cpp |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||||||||||||||
| 2 | - | |||||||||||||||||||||||||
| 3 | - | |||||||||||||||||||||||||
| 4 | - | |||||||||||||||||||||||||
| 5 | - | |||||||||||||||||||||||||
| 6 | - | |||||||||||||||||||||||||
| 7 | - | |||||||||||||||||||||||||
| 8 | - | |||||||||||||||||||||||||
| 9 | class QDialPrivate : public QAbstractSliderPrivate | - | ||||||||||||||||||||||||
| 10 | { | - | ||||||||||||||||||||||||
| 11 | inline QDial* q_func() { return static_cast<QDial *>(q_ptr); } inline const QDial* q_func() const { return static_cast<const QDial *>(q_ptr); } friend class QDial; | - | ||||||||||||||||||||||||
| 12 | public: | - | ||||||||||||||||||||||||
| 13 | QDialPrivate() | - | ||||||||||||||||||||||||
| 14 | { | - | ||||||||||||||||||||||||
| 15 | wrapping = false; | - | ||||||||||||||||||||||||
| 16 | tracking = true; | - | ||||||||||||||||||||||||
| 17 | doNotEmit = false; | - | ||||||||||||||||||||||||
| 18 | target = qreal(3.7); | - | ||||||||||||||||||||||||
| 19 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 20 | - | |||||||||||||||||||||||||
| 21 | qreal target; | - | ||||||||||||||||||||||||
| 22 | uint showNotches : 1; | - | ||||||||||||||||||||||||
| 23 | uint wrapping : 1; | - | ||||||||||||||||||||||||
| 24 | uint doNotEmit : 1; | - | ||||||||||||||||||||||||
| 25 | - | |||||||||||||||||||||||||
| 26 | int valueFromPoint(const QPoint &) const; | - | ||||||||||||||||||||||||
| 27 | double angle(const QPoint &, const QPoint &) const; | - | ||||||||||||||||||||||||
| 28 | void init(); | - | ||||||||||||||||||||||||
| 29 | virtual int bound(int val) const override; | - | ||||||||||||||||||||||||
| 30 | }; | - | ||||||||||||||||||||||||
| 31 | - | |||||||||||||||||||||||||
| 32 | void QDialPrivate::init() | - | ||||||||||||||||||||||||
| 33 | { | - | ||||||||||||||||||||||||
| 34 | QDial * const q = q_func(); | - | ||||||||||||||||||||||||
| 35 | showNotches = false; | - | ||||||||||||||||||||||||
| 36 | q->setFocusPolicy(Qt::WheelFocus); | - | ||||||||||||||||||||||||
| 37 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 38 | - | |||||||||||||||||||||||||
| 39 | int QDialPrivate::bound(int val) const | - | ||||||||||||||||||||||||
| 40 | { | - | ||||||||||||||||||||||||
| 41 | if (wrapping
| 0 | ||||||||||||||||||||||||
| 42 | if ((
| 0 | ||||||||||||||||||||||||
| 43 | return never executed: val;return val;never executed: return val; | 0 | ||||||||||||||||||||||||
| 44 | val = minimum + ((val - minimum) % (maximum - minimum)); | - | ||||||||||||||||||||||||
| 45 | if (val < minimum
| 0 | ||||||||||||||||||||||||
| 46 | val += maximum - minimum; never executed: val += maximum - minimum; | 0 | ||||||||||||||||||||||||
| 47 | return never executed: val;return val;never executed: return val; | 0 | ||||||||||||||||||||||||
| 48 | } else { | - | ||||||||||||||||||||||||
| 49 | return never executed: QAbstractSliderPrivate::bound(val);return QAbstractSliderPrivate::bound(val);never executed: return QAbstractSliderPrivate::bound(val); | 0 | ||||||||||||||||||||||||
| 50 | } | - | ||||||||||||||||||||||||
| 51 | } | - | ||||||||||||||||||||||||
| 52 | void QDial::initStyleOption(QStyleOptionSlider *option) const | - | ||||||||||||||||||||||||
| 53 | { | - | ||||||||||||||||||||||||
| 54 | if (!option
| 0 | ||||||||||||||||||||||||
| 55 | return; never executed: return; | 0 | ||||||||||||||||||||||||
| 56 | - | |||||||||||||||||||||||||
| 57 | const QDialPrivate * const d = d_func(); | - | ||||||||||||||||||||||||
| 58 | option->initFrom(this); | - | ||||||||||||||||||||||||
| 59 | option->minimum = d->minimum; | - | ||||||||||||||||||||||||
| 60 | option->maximum = d->maximum; | - | ||||||||||||||||||||||||
| 61 | option->sliderPosition = d->position; | - | ||||||||||||||||||||||||
| 62 | option->sliderValue = d->value; | - | ||||||||||||||||||||||||
| 63 | option->singleStep = d->singleStep; | - | ||||||||||||||||||||||||
| 64 | option->pageStep = d->pageStep; | - | ||||||||||||||||||||||||
| 65 | option->upsideDown = !d->invertedAppearance; | - | ||||||||||||||||||||||||
| 66 | option->notchTarget = d->target; | - | ||||||||||||||||||||||||
| 67 | option->dialWrapping = d->wrapping; | - | ||||||||||||||||||||||||
| 68 | option->subControls = QStyle::SC_All; | - | ||||||||||||||||||||||||
| 69 | option->activeSubControls = QStyle::SC_None; | - | ||||||||||||||||||||||||
| 70 | if (!d->showNotches
| 0 | ||||||||||||||||||||||||
| 71 | option->subControls &= ~QStyle::SC_DialTickmarks; | - | ||||||||||||||||||||||||
| 72 | option->tickPosition = QSlider::TicksAbove; | - | ||||||||||||||||||||||||
| 73 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
| 74 | option->tickPosition = QSlider::NoTicks; | - | ||||||||||||||||||||||||
| 75 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 76 | option->tickInterval = notchSize(); | - | ||||||||||||||||||||||||
| 77 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 78 | - | |||||||||||||||||||||||||
| 79 | int QDialPrivate::valueFromPoint(const QPoint &p) const | - | ||||||||||||||||||||||||
| 80 | { | - | ||||||||||||||||||||||||
| 81 | const QDial * const q = q_func(); | - | ||||||||||||||||||||||||
| 82 | double yy = q->height()/2.0 - p.y(); | - | ||||||||||||||||||||||||
| 83 | double xx = p.x() - q->width()/2.0; | - | ||||||||||||||||||||||||
| 84 | double a = (xx
| 0 | ||||||||||||||||||||||||
| 85 | - | |||||||||||||||||||||||||
| 86 | if (a < Q_PI / -2
| 0 | ||||||||||||||||||||||||
| 87 | a = a + Q_PI * 2; never executed: a = a + Q_PI * 2; | 0 | ||||||||||||||||||||||||
| 88 | - | |||||||||||||||||||||||||
| 89 | int dist = 0; | - | ||||||||||||||||||||||||
| 90 | int minv = minimum, maxv = maximum; | - | ||||||||||||||||||||||||
| 91 | - | |||||||||||||||||||||||||
| 92 | if (minimum < 0
| 0 | ||||||||||||||||||||||||
| 93 | dist = -minimum; | - | ||||||||||||||||||||||||
| 94 | minv = 0; | - | ||||||||||||||||||||||||
| 95 | maxv = maximum + dist; | - | ||||||||||||||||||||||||
| 96 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 97 | - | |||||||||||||||||||||||||
| 98 | int r = maxv - minv; | - | ||||||||||||||||||||||||
| 99 | int v; | - | ||||||||||||||||||||||||
| 100 | if (wrapping
| 0 | ||||||||||||||||||||||||
| 101 | v = (int)(0.5 + minv + r * (Q_PI * 3 / 2 - a) / (2 * Q_PI)); never executed: v = (int)(0.5 + minv + r * (Q_PI * 3 / 2 - a) / (2 * Q_PI)); | 0 | ||||||||||||||||||||||||
| 102 | else | - | ||||||||||||||||||||||||
| 103 | v = (int)(0.5 + minv + r* (Q_PI * 4 / 3 - a) / (Q_PI * 10 / 6)); never executed: v = (int)(0.5 + minv + r* (Q_PI * 4 / 3 - a) / (Q_PI * 10 / 6)); | 0 | ||||||||||||||||||||||||
| 104 | - | |||||||||||||||||||||||||
| 105 | if (dist > 0
| 0 | ||||||||||||||||||||||||
| 106 | v -= dist; never executed: v -= dist; | 0 | ||||||||||||||||||||||||
| 107 | - | |||||||||||||||||||||||||
| 108 | return never executed: !invertedAppearance ? bound(v) : maximum - bound(v);return !invertedAppearance ? bound(v) : maximum - bound(v);never executed: return !invertedAppearance ? bound(v) : maximum - bound(v); | 0 | ||||||||||||||||||||||||
| 109 | } | - | ||||||||||||||||||||||||
| 110 | QDial::QDial(QWidget *parent) | - | ||||||||||||||||||||||||
| 111 | : QAbstractSlider(*new QDialPrivate, parent) | - | ||||||||||||||||||||||||
| 112 | { | - | ||||||||||||||||||||||||
| 113 | QDialPrivate * const d = d_func(); | - | ||||||||||||||||||||||||
| 114 | d->init(); | - | ||||||||||||||||||||||||
| 115 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 116 | - | |||||||||||||||||||||||||
| 117 | - | |||||||||||||||||||||||||
| 118 | - | |||||||||||||||||||||||||
| 119 | - | |||||||||||||||||||||||||
| 120 | QDial::~QDial() | - | ||||||||||||||||||||||||
| 121 | { | - | ||||||||||||||||||||||||
| 122 | } | - | ||||||||||||||||||||||||
| 123 | - | |||||||||||||||||||||||||
| 124 | - | |||||||||||||||||||||||||
| 125 | void QDial::resizeEvent(QResizeEvent *e) | - | ||||||||||||||||||||||||
| 126 | { | - | ||||||||||||||||||||||||
| 127 | QWidget::resizeEvent(e); | - | ||||||||||||||||||||||||
| 128 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 129 | - | |||||||||||||||||||||||||
| 130 | - | |||||||||||||||||||||||||
| 131 | - | |||||||||||||||||||||||||
| 132 | - | |||||||||||||||||||||||||
| 133 | - | |||||||||||||||||||||||||
| 134 | void QDial::paintEvent(QPaintEvent *) | - | ||||||||||||||||||||||||
| 135 | { | - | ||||||||||||||||||||||||
| 136 | QStylePainter p(this); | - | ||||||||||||||||||||||||
| 137 | QStyleOptionSlider option; | - | ||||||||||||||||||||||||
| 138 | initStyleOption(&option); | - | ||||||||||||||||||||||||
| 139 | p.drawComplexControl(QStyle::CC_Dial, option); | - | ||||||||||||||||||||||||
| 140 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 141 | - | |||||||||||||||||||||||||
| 142 | - | |||||||||||||||||||||||||
| 143 | - | |||||||||||||||||||||||||
| 144 | - | |||||||||||||||||||||||||
| 145 | - | |||||||||||||||||||||||||
| 146 | void QDial::mousePressEvent(QMouseEvent *e) | - | ||||||||||||||||||||||||
| 147 | { | - | ||||||||||||||||||||||||
| 148 | QDialPrivate * const d = d_func(); | - | ||||||||||||||||||||||||
| 149 | if (d->maximum == d->minimum
| 0 | ||||||||||||||||||||||||
| 150 | (
| 0 | ||||||||||||||||||||||||
| 151 | (
| 0 | ||||||||||||||||||||||||
| 152 | e->ignore(); | - | ||||||||||||||||||||||||
| 153 | return; never executed: return; | 0 | ||||||||||||||||||||||||
| 154 | } | - | ||||||||||||||||||||||||
| 155 | e->accept(); | - | ||||||||||||||||||||||||
| 156 | setSliderPosition(d->valueFromPoint(e->pos())); | - | ||||||||||||||||||||||||
| 157 | - | |||||||||||||||||||||||||
| 158 | - | |||||||||||||||||||||||||
| 159 | - | |||||||||||||||||||||||||
| 160 | - | |||||||||||||||||||||||||
| 161 | setSliderDown(true); | - | ||||||||||||||||||||||||
| 162 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 163 | - | |||||||||||||||||||||||||
| 164 | - | |||||||||||||||||||||||||
| 165 | - | |||||||||||||||||||||||||
| 166 | - | |||||||||||||||||||||||||
| 167 | - | |||||||||||||||||||||||||
| 168 | - | |||||||||||||||||||||||||
| 169 | void QDial::mouseReleaseEvent(QMouseEvent * e) | - | ||||||||||||||||||||||||
| 170 | { | - | ||||||||||||||||||||||||
| 171 | QDialPrivate * const d = d_func(); | - | ||||||||||||||||||||||||
| 172 | if (e->buttons() & (~e->button())
| 0 | ||||||||||||||||||||||||
| 173 | (
| 0 | ||||||||||||||||||||||||
| 174 | e->ignore(); | - | ||||||||||||||||||||||||
| 175 | return; never executed: return; | 0 | ||||||||||||||||||||||||
| 176 | } | - | ||||||||||||||||||||||||
| 177 | e->accept(); | - | ||||||||||||||||||||||||
| 178 | setValue(d->valueFromPoint(e->pos())); | - | ||||||||||||||||||||||||
| 179 | setSliderDown(false); | - | ||||||||||||||||||||||||
| 180 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 181 | - | |||||||||||||||||||||||||
| 182 | - | |||||||||||||||||||||||||
| 183 | - | |||||||||||||||||||||||||
| 184 | - | |||||||||||||||||||||||||
| 185 | - | |||||||||||||||||||||||||
| 186 | - | |||||||||||||||||||||||||
| 187 | void QDial::mouseMoveEvent(QMouseEvent * e) | - | ||||||||||||||||||||||||
| 188 | { | - | ||||||||||||||||||||||||
| 189 | QDialPrivate * const d = d_func(); | - | ||||||||||||||||||||||||
| 190 | if (!(e->buttons() & Qt::LeftButton)
| 0 | ||||||||||||||||||||||||
| 191 | e->ignore(); | - | ||||||||||||||||||||||||
| 192 | return; never executed: return; | 0 | ||||||||||||||||||||||||
| 193 | } | - | ||||||||||||||||||||||||
| 194 | e->accept(); | - | ||||||||||||||||||||||||
| 195 | d->doNotEmit = true; | - | ||||||||||||||||||||||||
| 196 | setSliderPosition(d->valueFromPoint(e->pos())); | - | ||||||||||||||||||||||||
| 197 | d->doNotEmit = false; | - | ||||||||||||||||||||||||
| 198 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 199 | - | |||||||||||||||||||||||||
| 200 | - | |||||||||||||||||||||||||
| 201 | - | |||||||||||||||||||||||||
| 202 | - | |||||||||||||||||||||||||
| 203 | - | |||||||||||||||||||||||||
| 204 | - | |||||||||||||||||||||||||
| 205 | void QDial::sliderChange(SliderChange change) | - | ||||||||||||||||||||||||
| 206 | { | - | ||||||||||||||||||||||||
| 207 | QAbstractSlider::sliderChange(change); | - | ||||||||||||||||||||||||
| 208 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 209 | - | |||||||||||||||||||||||||
| 210 | void QDial::setWrapping(bool enable) | - | ||||||||||||||||||||||||
| 211 | { | - | ||||||||||||||||||||||||
| 212 | QDialPrivate * const d = d_func(); | - | ||||||||||||||||||||||||
| 213 | if (d->wrapping == enable
| 0 | ||||||||||||||||||||||||
| 214 | return; never executed: return; | 0 | ||||||||||||||||||||||||
| 215 | d->wrapping = enable; | - | ||||||||||||||||||||||||
| 216 | update(); | - | ||||||||||||||||||||||||
| 217 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 218 | bool QDial::wrapping() const | - | ||||||||||||||||||||||||
| 219 | { | - | ||||||||||||||||||||||||
| 220 | const QDialPrivate * const d = d_func(); | - | ||||||||||||||||||||||||
| 221 | return never executed: d->wrapping;return d->wrapping;never executed: return d->wrapping; | 0 | ||||||||||||||||||||||||
| 222 | } | - | ||||||||||||||||||||||||
| 223 | int QDial::notchSize() const | - | ||||||||||||||||||||||||
| 224 | { | - | ||||||||||||||||||||||||
| 225 | const QDialPrivate * const d = d_func(); | - | ||||||||||||||||||||||||
| 226 | - | |||||||||||||||||||||||||
| 227 | int r = qMin(width(), height())/2; | - | ||||||||||||||||||||||||
| 228 | - | |||||||||||||||||||||||||
| 229 | int l = (int)(r * (d->wrapping ? 6 : 5) * Q_PI / 6); | - | ||||||||||||||||||||||||
| 230 | - | |||||||||||||||||||||||||
| 231 | if (d->maximum > d->minimum + d->pageStep
| 0 | ||||||||||||||||||||||||
| 232 | l = (int)(0.5 + l * d->pageStep / (d->maximum - d->minimum)); never executed: l = (int)(0.5 + l * d->pageStep / (d->maximum - d->minimum)); | 0 | ||||||||||||||||||||||||
| 233 | - | |||||||||||||||||||||||||
| 234 | l = l * d->singleStep / (d->pageStep
| 0 | ||||||||||||||||||||||||
| 235 | if (l < 1
| 0 | ||||||||||||||||||||||||
| 236 | l = 1; never executed: l = 1; | 0 | ||||||||||||||||||||||||
| 237 | - | |||||||||||||||||||||||||
| 238 | l = (int)(0.5 + d->target / l); | - | ||||||||||||||||||||||||
| 239 | - | |||||||||||||||||||||||||
| 240 | if (!l
| 0 | ||||||||||||||||||||||||
| 241 | l = 1; never executed: l = 1; | 0 | ||||||||||||||||||||||||
| 242 | return never executed: d->singleStep * l;return d->singleStep * l;never executed: return d->singleStep * l; | 0 | ||||||||||||||||||||||||
| 243 | } | - | ||||||||||||||||||||||||
| 244 | - | |||||||||||||||||||||||||
| 245 | void QDial::setNotchTarget(double target) | - | ||||||||||||||||||||||||
| 246 | { | - | ||||||||||||||||||||||||
| 247 | QDialPrivate * const d = d_func(); | - | ||||||||||||||||||||||||
| 248 | d->target = target; | - | ||||||||||||||||||||||||
| 249 | update(); | - | ||||||||||||||||||||||||
| 250 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 251 | qreal QDial::notchTarget() const | - | ||||||||||||||||||||||||
| 252 | { | - | ||||||||||||||||||||||||
| 253 | const QDialPrivate * const d = d_func(); | - | ||||||||||||||||||||||||
| 254 | return never executed: d->target;return d->target;never executed: return d->target; | 0 | ||||||||||||||||||||||||
| 255 | } | - | ||||||||||||||||||||||||
| 256 | - | |||||||||||||||||||||||||
| 257 | - | |||||||||||||||||||||||||
| 258 | void QDial::setNotchesVisible(bool visible) | - | ||||||||||||||||||||||||
| 259 | { | - | ||||||||||||||||||||||||
| 260 | QDialPrivate * const d = d_func(); | - | ||||||||||||||||||||||||
| 261 | d->showNotches = visible; | - | ||||||||||||||||||||||||
| 262 | update(); | - | ||||||||||||||||||||||||
| 263 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 264 | bool QDial::notchesVisible() const | - | ||||||||||||||||||||||||
| 265 | { | - | ||||||||||||||||||||||||
| 266 | const QDialPrivate * const d = d_func(); | - | ||||||||||||||||||||||||
| 267 | return never executed: d->showNotches;return d->showNotches;never executed: return d->showNotches; | 0 | ||||||||||||||||||||||||
| 268 | } | - | ||||||||||||||||||||||||
| 269 | - | |||||||||||||||||||||||||
| 270 | - | |||||||||||||||||||||||||
| 271 | - | |||||||||||||||||||||||||
| 272 | - | |||||||||||||||||||||||||
| 273 | - | |||||||||||||||||||||||||
| 274 | QSize QDial::minimumSizeHint() const | - | ||||||||||||||||||||||||
| 275 | { | - | ||||||||||||||||||||||||
| 276 | return never executed: QSize(50, 50);return QSize(50, 50);never executed: return QSize(50, 50); | 0 | ||||||||||||||||||||||||
| 277 | } | - | ||||||||||||||||||||||||
| 278 | - | |||||||||||||||||||||||||
| 279 | - | |||||||||||||||||||||||||
| 280 | - | |||||||||||||||||||||||||
| 281 | - | |||||||||||||||||||||||||
| 282 | - | |||||||||||||||||||||||||
| 283 | QSize QDial::sizeHint() const | - | ||||||||||||||||||||||||
| 284 | { | - | ||||||||||||||||||||||||
| 285 | return never executed: QSize(100, 100).expandedTo(QApplication::globalStrut());return QSize(100, 100).expandedTo(QApplication::globalStrut());never executed: return QSize(100, 100).expandedTo(QApplication::globalStrut()); | 0 | ||||||||||||||||||||||||
| 286 | } | - | ||||||||||||||||||||||||
| 287 | - | |||||||||||||||||||||||||
| 288 | - | |||||||||||||||||||||||||
| 289 | - | |||||||||||||||||||||||||
| 290 | - | |||||||||||||||||||||||||
| 291 | bool QDial::event(QEvent *e) | - | ||||||||||||||||||||||||
| 292 | { | - | ||||||||||||||||||||||||
| 293 | return never executed: QAbstractSlider::event(e);return QAbstractSlider::event(e);never executed: return QAbstractSlider::event(e); | 0 | ||||||||||||||||||||||||
| 294 | } | - | ||||||||||||||||||||||||
| 295 | - | |||||||||||||||||||||||||
| 296 | - | |||||||||||||||||||||||||
| 297 | - | |||||||||||||||||||||||||
| Switch to Source code | Preprocessed file |