| Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/widgets/widgets/qspinbox.cpp |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||||||||
| 2 | - | |||||||||||||||||||
| 3 | - | |||||||||||||||||||
| 4 | - | |||||||||||||||||||
| 5 | - | |||||||||||||||||||
| 6 | - | |||||||||||||||||||
| 7 | class QSpinBoxPrivate : public QAbstractSpinBoxPrivate | - | ||||||||||||||||||
| 8 | { | - | ||||||||||||||||||
| 9 | inline QSpinBox* q_func() { return static_cast<QSpinBox *>(q_ptr); } inline const QSpinBox* q_func() const { return static_cast<const QSpinBox *>(q_ptr); } friend class QSpinBox; | - | ||||||||||||||||||
| 10 | public: | - | ||||||||||||||||||
| 11 | QSpinBoxPrivate(); | - | ||||||||||||||||||
| 12 | void emitSignals(EmitPolicy ep, const QVariant &) override; | - | ||||||||||||||||||
| 13 | - | |||||||||||||||||||
| 14 | virtual QVariant valueFromText(const QString &n) const override; | - | ||||||||||||||||||
| 15 | virtual QString textFromValue(const QVariant &n) const override; | - | ||||||||||||||||||
| 16 | QVariant validateAndInterpret(QString &input, int &pos, | - | ||||||||||||||||||
| 17 | QValidator::State &state) const; | - | ||||||||||||||||||
| 18 | - | |||||||||||||||||||
| 19 | inline void init() { | - | ||||||||||||||||||
| 20 | QSpinBox * const q = q_func(); | - | ||||||||||||||||||
| 21 | q->setInputMethodHints(Qt::ImhDigitsOnly); | - | ||||||||||||||||||
| 22 | setLayoutItemMargins(QStyle::SE_SpinBoxLayoutItem); | - | ||||||||||||||||||
| 23 | } | - | ||||||||||||||||||
| 24 | - | |||||||||||||||||||
| 25 | int displayIntegerBase; | - | ||||||||||||||||||
| 26 | }; | - | ||||||||||||||||||
| 27 | - | |||||||||||||||||||
| 28 | class QDoubleSpinBoxPrivate : public QAbstractSpinBoxPrivate | - | ||||||||||||||||||
| 29 | { | - | ||||||||||||||||||
| 30 | inline QDoubleSpinBox* q_func() { return static_cast<QDoubleSpinBox *>(q_ptr); } inline const QDoubleSpinBox* q_func() const { return static_cast<const QDoubleSpinBox *>(q_ptr); } friend class QDoubleSpinBox; | - | ||||||||||||||||||
| 31 | public: | - | ||||||||||||||||||
| 32 | QDoubleSpinBoxPrivate(); | - | ||||||||||||||||||
| 33 | void emitSignals(EmitPolicy ep, const QVariant &) override; | - | ||||||||||||||||||
| 34 | - | |||||||||||||||||||
| 35 | virtual QVariant valueFromText(const QString &n) const override; | - | ||||||||||||||||||
| 36 | virtual QString textFromValue(const QVariant &n) const override; | - | ||||||||||||||||||
| 37 | QVariant validateAndInterpret(QString &input, int &pos, | - | ||||||||||||||||||
| 38 | QValidator::State &state) const; | - | ||||||||||||||||||
| 39 | double round(double input) const; | - | ||||||||||||||||||
| 40 | - | |||||||||||||||||||
| 41 | int decimals; | - | ||||||||||||||||||
| 42 | - | |||||||||||||||||||
| 43 | inline void init() { | - | ||||||||||||||||||
| 44 | QDoubleSpinBox * const q = q_func(); | - | ||||||||||||||||||
| 45 | q->setInputMethodHints(Qt::ImhFormattedNumbersOnly); | - | ||||||||||||||||||
| 46 | } | - | ||||||||||||||||||
| 47 | - | |||||||||||||||||||
| 48 | - | |||||||||||||||||||
| 49 | double actualMin; | - | ||||||||||||||||||
| 50 | double actualMax; | - | ||||||||||||||||||
| 51 | }; | - | ||||||||||||||||||
| 52 | QSpinBox::QSpinBox(QWidget *parent) | - | ||||||||||||||||||
| 53 | : QAbstractSpinBox(*new QSpinBoxPrivate, parent) | - | ||||||||||||||||||
| 54 | { | - | ||||||||||||||||||
| 55 | QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 56 | d->init(); | - | ||||||||||||||||||
| 57 | } | - | ||||||||||||||||||
| 58 | - | |||||||||||||||||||
| 59 | - | |||||||||||||||||||
| 60 | - | |||||||||||||||||||
| 61 | - | |||||||||||||||||||
| 62 | QSpinBox::~QSpinBox() {} | - | ||||||||||||||||||
| 63 | int QSpinBox::value() const | - | ||||||||||||||||||
| 64 | { | - | ||||||||||||||||||
| 65 | const QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 66 | return d->value.toInt(); | - | ||||||||||||||||||
| 67 | } | - | ||||||||||||||||||
| 68 | - | |||||||||||||||||||
| 69 | void QSpinBox::setValue(int value) | - | ||||||||||||||||||
| 70 | { | - | ||||||||||||||||||
| 71 | QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 72 | d->setValue(QVariant(value), EmitIfChanged); | - | ||||||||||||||||||
| 73 | } | - | ||||||||||||||||||
| 74 | QString QSpinBox::prefix() const | - | ||||||||||||||||||
| 75 | { | - | ||||||||||||||||||
| 76 | const QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 77 | return d->prefix; | - | ||||||||||||||||||
| 78 | } | - | ||||||||||||||||||
| 79 | - | |||||||||||||||||||
| 80 | void QSpinBox::setPrefix(const QString &prefix) | - | ||||||||||||||||||
| 81 | { | - | ||||||||||||||||||
| 82 | QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 83 | - | |||||||||||||||||||
| 84 | d->prefix = prefix; | - | ||||||||||||||||||
| 85 | d->updateEdit(); | - | ||||||||||||||||||
| 86 | - | |||||||||||||||||||
| 87 | d->cachedSizeHint = QSize(); | - | ||||||||||||||||||
| 88 | d->cachedMinimumSizeHint = QSize(); | - | ||||||||||||||||||
| 89 | updateGeometry(); | - | ||||||||||||||||||
| 90 | } | - | ||||||||||||||||||
| 91 | QString QSpinBox::suffix() const | - | ||||||||||||||||||
| 92 | { | - | ||||||||||||||||||
| 93 | const QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 94 | - | |||||||||||||||||||
| 95 | return d->suffix; | - | ||||||||||||||||||
| 96 | } | - | ||||||||||||||||||
| 97 | - | |||||||||||||||||||
| 98 | void QSpinBox::setSuffix(const QString &suffix) | - | ||||||||||||||||||
| 99 | { | - | ||||||||||||||||||
| 100 | QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 101 | - | |||||||||||||||||||
| 102 | d->suffix = suffix; | - | ||||||||||||||||||
| 103 | d->updateEdit(); | - | ||||||||||||||||||
| 104 | - | |||||||||||||||||||
| 105 | d->cachedSizeHint = QSize(); | - | ||||||||||||||||||
| 106 | updateGeometry(); | - | ||||||||||||||||||
| 107 | } | - | ||||||||||||||||||
| 108 | QString QSpinBox::cleanText() const | - | ||||||||||||||||||
| 109 | { | - | ||||||||||||||||||
| 110 | const QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 111 | - | |||||||||||||||||||
| 112 | return d->stripped(d->edit->displayText()); | - | ||||||||||||||||||
| 113 | } | - | ||||||||||||||||||
| 114 | int QSpinBox::singleStep() const | - | ||||||||||||||||||
| 115 | { | - | ||||||||||||||||||
| 116 | const QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 117 | - | |||||||||||||||||||
| 118 | return d->singleStep.toInt(); | - | ||||||||||||||||||
| 119 | } | - | ||||||||||||||||||
| 120 | - | |||||||||||||||||||
| 121 | void QSpinBox::setSingleStep(int value) | - | ||||||||||||||||||
| 122 | { | - | ||||||||||||||||||
| 123 | QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 124 | if (value >= 0) { | - | ||||||||||||||||||
| 125 | d->singleStep = QVariant(value); | - | ||||||||||||||||||
| 126 | d->updateEdit(); | - | ||||||||||||||||||
| 127 | } | - | ||||||||||||||||||
| 128 | } | - | ||||||||||||||||||
| 129 | int QSpinBox::minimum() const | - | ||||||||||||||||||
| 130 | { | - | ||||||||||||||||||
| 131 | const QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 132 | - | |||||||||||||||||||
| 133 | return d->minimum.toInt(); | - | ||||||||||||||||||
| 134 | } | - | ||||||||||||||||||
| 135 | - | |||||||||||||||||||
| 136 | void QSpinBox::setMinimum(int minimum) | - | ||||||||||||||||||
| 137 | { | - | ||||||||||||||||||
| 138 | QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 139 | const QVariant m(minimum); | - | ||||||||||||||||||
| 140 | d->setRange(m, (d->variantCompare(d->maximum, m) > 0 ? d->maximum : m)); | - | ||||||||||||||||||
| 141 | } | - | ||||||||||||||||||
| 142 | int QSpinBox::maximum() const | - | ||||||||||||||||||
| 143 | { | - | ||||||||||||||||||
| 144 | const QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 145 | - | |||||||||||||||||||
| 146 | return d->maximum.toInt(); | - | ||||||||||||||||||
| 147 | } | - | ||||||||||||||||||
| 148 | - | |||||||||||||||||||
| 149 | void QSpinBox::setMaximum(int maximum) | - | ||||||||||||||||||
| 150 | { | - | ||||||||||||||||||
| 151 | QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 152 | const QVariant m(maximum); | - | ||||||||||||||||||
| 153 | d->setRange((d->variantCompare(d->minimum, m) < 0 ? d->minimum : m), m); | - | ||||||||||||||||||
| 154 | } | - | ||||||||||||||||||
| 155 | void QSpinBox::setRange(int minimum, int maximum) | - | ||||||||||||||||||
| 156 | { | - | ||||||||||||||||||
| 157 | QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 158 | d->setRange(QVariant(minimum), QVariant(maximum)); | - | ||||||||||||||||||
| 159 | } | - | ||||||||||||||||||
| 160 | int QSpinBox::displayIntegerBase() const | - | ||||||||||||||||||
| 161 | { | - | ||||||||||||||||||
| 162 | const QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 163 | return d->displayIntegerBase; | - | ||||||||||||||||||
| 164 | } | - | ||||||||||||||||||
| 165 | - | |||||||||||||||||||
| 166 | void QSpinBox::setDisplayIntegerBase(int base) | - | ||||||||||||||||||
| 167 | { | - | ||||||||||||||||||
| 168 | QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 169 | - | |||||||||||||||||||
| 170 | if (__builtin_expect(!!(
| 0 | ||||||||||||||||||
| 171 | QMessageLogger(__FILE__, 442448, __PRETTY_FUNCTION__).warning("QSpinBox::setDisplayIntegerBase: Invalid base (%d)", base); | - | ||||||||||||||||||
| 172 | base = 10; | - | ||||||||||||||||||
| 173 | } never executed: end of block | 0 | ||||||||||||||||||
| 174 | - | |||||||||||||||||||
| 175 | if (base != d->displayIntegerBase
| 0 | ||||||||||||||||||
| 176 | d->displayIntegerBase = base; | - | ||||||||||||||||||
| 177 | d->updateEdit(); | - | ||||||||||||||||||
| 178 | } never executed: end of block | 0 | ||||||||||||||||||
| 179 | } never executed: end of block | 0 | ||||||||||||||||||
| 180 | QString QSpinBox::textFromValue(int value) const | - | ||||||||||||||||||
| 181 | { | - | ||||||||||||||||||
| 182 | const QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 183 | QString str; | - | ||||||||||||||||||
| 184 | - | |||||||||||||||||||
| 185 | if (d->displayIntegerBase != 10
| 0 | ||||||||||||||||||
| 186 | const QLatin1String prefix = value < 0
| 0 | ||||||||||||||||||
| 187 | str = prefix + QString::number(qAbs(value), d->displayIntegerBase); | - | ||||||||||||||||||
| if (value < 0) | ||||||||||||||||||||
| str.prepend('-'); | ||||||||||||||||||||
| 188 | } never executed: else {end of block | 0 | ||||||||||||||||||
| 189 | str = locale().toString(value); | - | ||||||||||||||||||
| 190 | if (!d->showGroupSeparator
| 0 | ||||||||||||||||||
| 191 | str.remove(locale().groupSeparator()); | - | ||||||||||||||||||
| 192 | } never executed: end of block | 0 | ||||||||||||||||||
| 193 | } never executed: end of block | 0 | ||||||||||||||||||
| 194 | - | |||||||||||||||||||
| 195 | return never executed: str;return str;never executed: return str; | 0 | ||||||||||||||||||
| 196 | } | - | ||||||||||||||||||
| 197 | int QSpinBox::valueFromText(const QString &text) const | - | ||||||||||||||||||
| 198 | { | - | ||||||||||||||||||
| 199 | const QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 200 | - | |||||||||||||||||||
| 201 | QString copy = text; | - | ||||||||||||||||||
| 202 | int pos = d->edit->cursorPosition(); | - | ||||||||||||||||||
| 203 | QValidator::State state = QValidator::Acceptable; | - | ||||||||||||||||||
| 204 | return d->validateAndInterpret(copy, pos, state).toInt(); | - | ||||||||||||||||||
| 205 | } | - | ||||||||||||||||||
| 206 | - | |||||||||||||||||||
| 207 | - | |||||||||||||||||||
| 208 | - | |||||||||||||||||||
| 209 | - | |||||||||||||||||||
| 210 | QValidator::State QSpinBox::validate(QString &text, int &pos) const | - | ||||||||||||||||||
| 211 | { | - | ||||||||||||||||||
| 212 | const QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 213 | - | |||||||||||||||||||
| 214 | QValidator::State state; | - | ||||||||||||||||||
| 215 | d->validateAndInterpret(text, pos, state); | - | ||||||||||||||||||
| 216 | return state; | - | ||||||||||||||||||
| 217 | } | - | ||||||||||||||||||
| 218 | - | |||||||||||||||||||
| 219 | - | |||||||||||||||||||
| 220 | - | |||||||||||||||||||
| 221 | - | |||||||||||||||||||
| 222 | - | |||||||||||||||||||
| 223 | void QSpinBox::fixup(QString &input) const | - | ||||||||||||||||||
| 224 | { | - | ||||||||||||||||||
| 225 | if (!isGroupSeparatorShown()) | - | ||||||||||||||||||
| 226 | input.remove(locale().groupSeparator()); | - | ||||||||||||||||||
| 227 | } | - | ||||||||||||||||||
| 228 | QDoubleSpinBox::QDoubleSpinBox(QWidget *parent) | - | ||||||||||||||||||
| 229 | : QAbstractSpinBox(*new QDoubleSpinBoxPrivate, parent) | - | ||||||||||||||||||
| 230 | { | - | ||||||||||||||||||
| 231 | QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 232 | d->init(); | - | ||||||||||||||||||
| 233 | } | - | ||||||||||||||||||
| 234 | - | |||||||||||||||||||
| 235 | - | |||||||||||||||||||
| 236 | - | |||||||||||||||||||
| 237 | - | |||||||||||||||||||
| 238 | QDoubleSpinBox::~QDoubleSpinBox() {} | - | ||||||||||||||||||
| 239 | double QDoubleSpinBox::value() const | - | ||||||||||||||||||
| 240 | { | - | ||||||||||||||||||
| 241 | const QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 242 | - | |||||||||||||||||||
| 243 | return d->value.toDouble(); | - | ||||||||||||||||||
| 244 | } | - | ||||||||||||||||||
| 245 | - | |||||||||||||||||||
| 246 | void QDoubleSpinBox::setValue(double value) | - | ||||||||||||||||||
| 247 | { | - | ||||||||||||||||||
| 248 | QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 249 | QVariant v(d->round(value)); | - | ||||||||||||||||||
| 250 | d->setValue(v, EmitIfChanged); | - | ||||||||||||||||||
| 251 | } | - | ||||||||||||||||||
| 252 | QString QDoubleSpinBox::prefix() const | - | ||||||||||||||||||
| 253 | { | - | ||||||||||||||||||
| 254 | const QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 255 | - | |||||||||||||||||||
| 256 | return d->prefix; | - | ||||||||||||||||||
| 257 | } | - | ||||||||||||||||||
| 258 | - | |||||||||||||||||||
| 259 | void QDoubleSpinBox::setPrefix(const QString &prefix) | - | ||||||||||||||||||
| 260 | { | - | ||||||||||||||||||
| 261 | QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 262 | - | |||||||||||||||||||
| 263 | d->prefix = prefix; | - | ||||||||||||||||||
| 264 | d->updateEdit(); | - | ||||||||||||||||||
| 265 | } | - | ||||||||||||||||||
| 266 | QString QDoubleSpinBox::suffix() const | - | ||||||||||||||||||
| 267 | { | - | ||||||||||||||||||
| 268 | const QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 269 | - | |||||||||||||||||||
| 270 | return d->suffix; | - | ||||||||||||||||||
| 271 | } | - | ||||||||||||||||||
| 272 | - | |||||||||||||||||||
| 273 | void QDoubleSpinBox::setSuffix(const QString &suffix) | - | ||||||||||||||||||
| 274 | { | - | ||||||||||||||||||
| 275 | QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 276 | - | |||||||||||||||||||
| 277 | d->suffix = suffix; | - | ||||||||||||||||||
| 278 | d->updateEdit(); | - | ||||||||||||||||||
| 279 | - | |||||||||||||||||||
| 280 | d->cachedSizeHint = QSize(); | - | ||||||||||||||||||
| 281 | updateGeometry(); | - | ||||||||||||||||||
| 282 | } | - | ||||||||||||||||||
| 283 | QString QDoubleSpinBox::cleanText() const | - | ||||||||||||||||||
| 284 | { | - | ||||||||||||||||||
| 285 | const QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 286 | - | |||||||||||||||||||
| 287 | return d->stripped(d->edit->displayText()); | - | ||||||||||||||||||
| 288 | } | - | ||||||||||||||||||
| 289 | double QDoubleSpinBox::singleStep() const | - | ||||||||||||||||||
| 290 | { | - | ||||||||||||||||||
| 291 | const QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 292 | - | |||||||||||||||||||
| 293 | return d->singleStep.toDouble(); | - | ||||||||||||||||||
| 294 | } | - | ||||||||||||||||||
| 295 | - | |||||||||||||||||||
| 296 | void QDoubleSpinBox::setSingleStep(double value) | - | ||||||||||||||||||
| 297 | { | - | ||||||||||||||||||
| 298 | QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 299 | - | |||||||||||||||||||
| 300 | if (value >= 0) { | - | ||||||||||||||||||
| 301 | d->singleStep = value; | - | ||||||||||||||||||
| 302 | d->updateEdit(); | - | ||||||||||||||||||
| 303 | } | - | ||||||||||||||||||
| 304 | } | - | ||||||||||||||||||
| 305 | double QDoubleSpinBox::minimum() const | - | ||||||||||||||||||
| 306 | { | - | ||||||||||||||||||
| 307 | const QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 308 | - | |||||||||||||||||||
| 309 | return d->minimum.toDouble(); | - | ||||||||||||||||||
| 310 | } | - | ||||||||||||||||||
| 311 | - | |||||||||||||||||||
| 312 | void QDoubleSpinBox::setMinimum(double minimum) | - | ||||||||||||||||||
| 313 | { | - | ||||||||||||||||||
| 314 | QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 315 | d->actualMin = minimum; | - | ||||||||||||||||||
| 316 | const QVariant m(d->round(minimum)); | - | ||||||||||||||||||
| 317 | d->setRange(m, (d->variantCompare(d->maximum, m) > 0 ? d->maximum : m)); | - | ||||||||||||||||||
| 318 | } | - | ||||||||||||||||||
| 319 | double QDoubleSpinBox::maximum() const | - | ||||||||||||||||||
| 320 | { | - | ||||||||||||||||||
| 321 | const QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 322 | - | |||||||||||||||||||
| 323 | return d->maximum.toDouble(); | - | ||||||||||||||||||
| 324 | } | - | ||||||||||||||||||
| 325 | - | |||||||||||||||||||
| 326 | void QDoubleSpinBox::setMaximum(double maximum) | - | ||||||||||||||||||
| 327 | { | - | ||||||||||||||||||
| 328 | QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 329 | d->actualMax = maximum; | - | ||||||||||||||||||
| 330 | const QVariant m(d->round(maximum)); | - | ||||||||||||||||||
| 331 | d->setRange((d->variantCompare(d->minimum, m) < 0 ? d->minimum : m), m); | - | ||||||||||||||||||
| 332 | } | - | ||||||||||||||||||
| 333 | void QDoubleSpinBox::setRange(double minimum, double maximum) | - | ||||||||||||||||||
| 334 | { | - | ||||||||||||||||||
| 335 | QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 336 | d->actualMin = minimum; | - | ||||||||||||||||||
| 337 | d->actualMax = maximum; | - | ||||||||||||||||||
| 338 | d->setRange(QVariant(d->round(minimum)), QVariant(d->round(maximum))); | - | ||||||||||||||||||
| 339 | } | - | ||||||||||||||||||
| 340 | int QDoubleSpinBox::decimals() const | - | ||||||||||||||||||
| 341 | { | - | ||||||||||||||||||
| 342 | const QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 343 | - | |||||||||||||||||||
| 344 | return d->decimals; | - | ||||||||||||||||||
| 345 | } | - | ||||||||||||||||||
| 346 | - | |||||||||||||||||||
| 347 | void QDoubleSpinBox::setDecimals(int decimals) | - | ||||||||||||||||||
| 348 | { | - | ||||||||||||||||||
| 349 | QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 350 | d->decimals = qBound(0, decimals, 308 + 15); | - | ||||||||||||||||||
| 351 | - | |||||||||||||||||||
| 352 | setRange(d->actualMin, d->actualMax); | - | ||||||||||||||||||
| 353 | setValue(value()); | - | ||||||||||||||||||
| 354 | } | - | ||||||||||||||||||
| 355 | QString QDoubleSpinBox::textFromValue(double value) const | - | ||||||||||||||||||
| 356 | { | - | ||||||||||||||||||
| 357 | const QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 358 | QString str = locale().toString(value, 'f', d->decimals); | - | ||||||||||||||||||
| 359 | if (!d->showGroupSeparator && qAbs(value) >= 1000.0) | - | ||||||||||||||||||
| 360 | str.remove(locale().groupSeparator()); | - | ||||||||||||||||||
| 361 | - | |||||||||||||||||||
| 362 | return str; | - | ||||||||||||||||||
| 363 | } | - | ||||||||||||||||||
| 364 | double QDoubleSpinBox::valueFromText(const QString &text) const | - | ||||||||||||||||||
| 365 | { | - | ||||||||||||||||||
| 366 | const QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 367 | - | |||||||||||||||||||
| 368 | QString copy = text; | - | ||||||||||||||||||
| 369 | int pos = d->edit->cursorPosition(); | - | ||||||||||||||||||
| 370 | QValidator::State state = QValidator::Acceptable; | - | ||||||||||||||||||
| 371 | return d->validateAndInterpret(copy, pos, state).toDouble(); | - | ||||||||||||||||||
| 372 | } | - | ||||||||||||||||||
| 373 | - | |||||||||||||||||||
| 374 | - | |||||||||||||||||||
| 375 | - | |||||||||||||||||||
| 376 | - | |||||||||||||||||||
| 377 | QValidator::State QDoubleSpinBox::validate(QString &text, int &pos) const | - | ||||||||||||||||||
| 378 | { | - | ||||||||||||||||||
| 379 | const QDoubleSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 380 | - | |||||||||||||||||||
| 381 | QValidator::State state; | - | ||||||||||||||||||
| 382 | d->validateAndInterpret(text, pos, state); | - | ||||||||||||||||||
| 383 | return state; | - | ||||||||||||||||||
| 384 | } | - | ||||||||||||||||||
| 385 | - | |||||||||||||||||||
| 386 | - | |||||||||||||||||||
| 387 | - | |||||||||||||||||||
| 388 | - | |||||||||||||||||||
| 389 | - | |||||||||||||||||||
| 390 | void QDoubleSpinBox::fixup(QString &input) const | - | ||||||||||||||||||
| 391 | { | - | ||||||||||||||||||
| 392 | input.remove(locale().groupSeparator()); | - | ||||||||||||||||||
| 393 | } | - | ||||||||||||||||||
| 394 | QSpinBoxPrivate::QSpinBoxPrivate() | - | ||||||||||||||||||
| 395 | { | - | ||||||||||||||||||
| 396 | minimum = QVariant((int)0); | - | ||||||||||||||||||
| 397 | maximum = QVariant((int)99); | - | ||||||||||||||||||
| 398 | value = minimum; | - | ||||||||||||||||||
| 399 | displayIntegerBase = 10; | - | ||||||||||||||||||
| 400 | singleStep = QVariant((int)1); | - | ||||||||||||||||||
| 401 | type = QVariant::Int; | - | ||||||||||||||||||
| 402 | } | - | ||||||||||||||||||
| 403 | - | |||||||||||||||||||
| 404 | - | |||||||||||||||||||
| 405 | - | |||||||||||||||||||
| 406 | - | |||||||||||||||||||
| 407 | - | |||||||||||||||||||
| 408 | - | |||||||||||||||||||
| 409 | void QSpinBoxPrivate::emitSignals(EmitPolicy ep, const QVariant &old) | - | ||||||||||||||||||
| 410 | { | - | ||||||||||||||||||
| 411 | QSpinBox * const q = q_func(); | - | ||||||||||||||||||
| 412 | if (ep != NeverEmit) { | - | ||||||||||||||||||
| 413 | pendingEmit = false; | - | ||||||||||||||||||
| 414 | if (ep == AlwaysEmit || value != old) { | - | ||||||||||||||||||
| 415 | q->valueChanged(edit->displayText()); | - | ||||||||||||||||||
| 416 | q->valueChanged(value.toInt()); | - | ||||||||||||||||||
| 417 | } | - | ||||||||||||||||||
| 418 | } | - | ||||||||||||||||||
| 419 | } | - | ||||||||||||||||||
| 420 | - | |||||||||||||||||||
| 421 | - | |||||||||||||||||||
| 422 | - | |||||||||||||||||||
| 423 | - | |||||||||||||||||||
| 424 | - | |||||||||||||||||||
| 425 | - | |||||||||||||||||||
| 426 | QString QSpinBoxPrivate::textFromValue(const QVariant &value) const | - | ||||||||||||||||||
| 427 | { | - | ||||||||||||||||||
| 428 | const QSpinBox * const q = q_func(); | - | ||||||||||||||||||
| 429 | return q->textFromValue(value.toInt()); | - | ||||||||||||||||||
| 430 | } | - | ||||||||||||||||||
| 431 | - | |||||||||||||||||||
| 432 | - | |||||||||||||||||||
| 433 | - | |||||||||||||||||||
| 434 | - | |||||||||||||||||||
| 435 | - | |||||||||||||||||||
| 436 | QVariant QSpinBoxPrivate::valueFromText(const QString &text) const | - | ||||||||||||||||||
| 437 | { | - | ||||||||||||||||||
| 438 | const QSpinBox * const q = q_func(); | - | ||||||||||||||||||
| 439 | - | |||||||||||||||||||
| 440 | return QVariant(q->valueFromText(text)); | - | ||||||||||||||||||
| 441 | } | - | ||||||||||||||||||
| 442 | QVariant QSpinBoxPrivate::validateAndInterpret(QString &input, int &pos, | - | ||||||||||||||||||
| 443 | QValidator::State &state) const | - | ||||||||||||||||||
| 444 | { | - | ||||||||||||||||||
| 445 | if (cachedText == input && !input.isEmpty()) { | - | ||||||||||||||||||
| 446 | state = cachedState; | - | ||||||||||||||||||
| 447 | if (false) QMessageLogger(__FILE__, 10241029, __PRETTY_FUNCTION__).debug() << "cachedText was '" << cachedText << "' state was " dead code: QMessageLogger(__FILE__, 1029, __PRETTY_FUNCTION__).debug() << "cachedText was '" << cachedText << "' state was " << state << " and value was " << cachedValue; | - | ||||||||||||||||||
| 448 | << state << " and value was " << cachedValue; dead code: QMessageLogger(__FILE__, 1029, __PRETTY_FUNCTION__).debug() << "cachedText was '" << cachedText << "' state was " << state << " and value was " << cachedValue; | - | ||||||||||||||||||
| 449 | - | |||||||||||||||||||
| 450 | return cachedValue; | - | ||||||||||||||||||
| 451 | } | - | ||||||||||||||||||
| 452 | const int max = maximum.toInt(); | - | ||||||||||||||||||
| 453 | const int min = minimum.toInt(); | - | ||||||||||||||||||
| 454 | - | |||||||||||||||||||
| 455 | QString copy = stripped(input, &pos); | - | ||||||||||||||||||
| 456 | if (false) QMessageLogger(__FILE__, 10331038, __PRETTY_FUNCTION__).debug() << "input" << input << "copy" << copy; dead code: QMessageLogger(__FILE__, 1038, __PRETTY_FUNCTION__).debug() << "input" << input << "copy" << copy; | - | ||||||||||||||||||
| 457 | state = QValidator::Acceptable; | - | ||||||||||||||||||
| 458 | int num = min; | - | ||||||||||||||||||
| 459 | - | |||||||||||||||||||
| 460 | if (max != min && (copy.isEmpty() | - | ||||||||||||||||||
| 461 | || (min < 0 && copy == QLatin1String("-")) | - | ||||||||||||||||||
| 462 | || (max >= 0 && copy == QLatin1String("+")))) { | - | ||||||||||||||||||
| 463 | state = QValidator::Intermediate; | - | ||||||||||||||||||
| 464 | if (false) QMessageLogger(__FILE__, 10411046, __PRETTY_FUNCTION__).debug() << __FILE__ << 10411046<< "num is set to" << num; dead code: QMessageLogger(__FILE__, 1046, __PRETTY_FUNCTION__).debug() << __FILE__ << 1046<< "num is set to" << num; | - | ||||||||||||||||||
| 465 | } else if (copy.startsWith(QLatin1Char('-')) && min >= 0) { | - | ||||||||||||||||||
| 466 | state = QValidator::Invalid; | - | ||||||||||||||||||
| 467 | } else { | - | ||||||||||||||||||
| 468 | bool ok = false; | - | ||||||||||||||||||
| 469 | if (displayIntegerBase != 10) { | - | ||||||||||||||||||
| 470 | num = copy.toInt(&ok, displayIntegerBase); | - | ||||||||||||||||||
| 471 | } else { | - | ||||||||||||||||||
| 472 | num = locale.toInt(copy, &ok); | - | ||||||||||||||||||
| 473 | if (!ok && copy.contains(locale.groupSeparator()) && (max >= 1000 || min <= -1000)) { | - | ||||||||||||||||||
| 474 | QString copy2 = copy; | - | ||||||||||||||||||
| 475 | copy2.remove(locale.groupSeparator()); | - | ||||||||||||||||||
| 476 | num = locale.toInt(copy2, &ok); | - | ||||||||||||||||||
| 477 | } | - | ||||||||||||||||||
| 478 | } | - | ||||||||||||||||||
| 479 | if (false) QMessageLogger(__FILE__, 10561061, __PRETTY_FUNCTION__).debug() << __FILE__ << 10561061<< "num is set to" << num; dead code: QMessageLogger(__FILE__, 1061, __PRETTY_FUNCTION__).debug() << __FILE__ << 1061<< "num is set to" << num; | - | ||||||||||||||||||
| 480 | if (!ok) { | - | ||||||||||||||||||
| 481 | state = QValidator::Invalid; | - | ||||||||||||||||||
| 482 | } else if (num >= min && num <= max) { | - | ||||||||||||||||||
| 483 | state = QValidator::Acceptable; | - | ||||||||||||||||||
| 484 | } else if (max == min) { | - | ||||||||||||||||||
| 485 | state = QValidator::Invalid; | - | ||||||||||||||||||
| 486 | } else { | - | ||||||||||||||||||
| 487 | if ((num >= 0 && num > max) || (num < 0 && num < min)) { | - | ||||||||||||||||||
| 488 | state = QValidator::Invalid; | - | ||||||||||||||||||
| 489 | if (false) QMessageLogger(__FILE__, 10661071, __PRETTY_FUNCTION__).debug() << __FILE__ << 10661071<< "state is set to Invalid"; dead code: QMessageLogger(__FILE__, 1071, __PRETTY_FUNCTION__).debug() << __FILE__ << 1071<< "state is set to Invalid"; | - | ||||||||||||||||||
| 490 | } else { | - | ||||||||||||||||||
| 491 | state = QValidator::Intermediate; | - | ||||||||||||||||||
| 492 | if (false) QMessageLogger(__FILE__, 10691074, __PRETTY_FUNCTION__).debug() << __FILE__ << 10691074<< "state is set to Intermediate"; dead code: QMessageLogger(__FILE__, 1074, __PRETTY_FUNCTION__).debug() << __FILE__ << 1074<< "state is set to Intermediate"; | - | ||||||||||||||||||
| 493 | } | - | ||||||||||||||||||
| 494 | } | - | ||||||||||||||||||
| 495 | } | - | ||||||||||||||||||
| 496 | if (state != QValidator::Acceptable) | - | ||||||||||||||||||
| 497 | num = max > 0 ? min : max; | - | ||||||||||||||||||
| 498 | input = prefix + copy + suffix; | - | ||||||||||||||||||
| 499 | cachedText = input; | - | ||||||||||||||||||
| 500 | cachedState = state; | - | ||||||||||||||||||
| 501 | cachedValue = QVariant((int)num); | - | ||||||||||||||||||
| 502 | - | |||||||||||||||||||
| 503 | if (false) QMessageLogger(__FILE__, 10801085, __PRETTY_FUNCTION__).debug() << "cachedText is set to '" << cachedText << "' state is set to " dead code: QMessageLogger(__FILE__, 1085, __PRETTY_FUNCTION__).debug() << "cachedText is set to '" << cachedText << "' state is set to " << state << " and value is set to " << cachedValue; | - | ||||||||||||||||||
| 504 | << state << " and value is set to " << cachedValue; dead code: QMessageLogger(__FILE__, 1085, __PRETTY_FUNCTION__).debug() << "cachedText is set to '" << cachedText << "' state is set to " << state << " and value is set to " << cachedValue; | - | ||||||||||||||||||
| 505 | return cachedValue; | - | ||||||||||||||||||
| 506 | } | - | ||||||||||||||||||
| 507 | QDoubleSpinBoxPrivate::QDoubleSpinBoxPrivate() | - | ||||||||||||||||||
| 508 | { | - | ||||||||||||||||||
| 509 | actualMin = 0.0; | - | ||||||||||||||||||
| 510 | actualMax = 99.99; | - | ||||||||||||||||||
| 511 | minimum = QVariant(actualMin); | - | ||||||||||||||||||
| 512 | maximum = QVariant(actualMax); | - | ||||||||||||||||||
| 513 | value = minimum; | - | ||||||||||||||||||
| 514 | singleStep = QVariant(1.0); | - | ||||||||||||||||||
| 515 | decimals = 2; | - | ||||||||||||||||||
| 516 | type = QVariant::Double; | - | ||||||||||||||||||
| 517 | } | - | ||||||||||||||||||
| 518 | - | |||||||||||||||||||
| 519 | - | |||||||||||||||||||
| 520 | - | |||||||||||||||||||
| 521 | - | |||||||||||||||||||
| 522 | - | |||||||||||||||||||
| 523 | - | |||||||||||||||||||
| 524 | void QDoubleSpinBoxPrivate::emitSignals(EmitPolicy ep, const QVariant &old) | - | ||||||||||||||||||
| 525 | { | - | ||||||||||||||||||
| 526 | QDoubleSpinBox * const q = q_func(); | - | ||||||||||||||||||
| 527 | if (ep != NeverEmit) { | - | ||||||||||||||||||
| 528 | pendingEmit = false; | - | ||||||||||||||||||
| 529 | if (ep == AlwaysEmit || value != old) { | - | ||||||||||||||||||
| 530 | q->valueChanged(edit->displayText()); | - | ||||||||||||||||||
| 531 | q->valueChanged(value.toDouble()); | - | ||||||||||||||||||
| 532 | } | - | ||||||||||||||||||
| 533 | } | - | ||||||||||||||||||
| 534 | } | - | ||||||||||||||||||
| 535 | - | |||||||||||||||||||
| 536 | - | |||||||||||||||||||
| 537 | - | |||||||||||||||||||
| 538 | - | |||||||||||||||||||
| 539 | - | |||||||||||||||||||
| 540 | - | |||||||||||||||||||
| 541 | QVariant QDoubleSpinBoxPrivate::valueFromText(const QString &f) const | - | ||||||||||||||||||
| 542 | { | - | ||||||||||||||||||
| 543 | const QDoubleSpinBox * const q = q_func(); | - | ||||||||||||||||||
| 544 | return QVariant(q->valueFromText(f)); | - | ||||||||||||||||||
| 545 | } | - | ||||||||||||||||||
| 546 | double QDoubleSpinBoxPrivate::round(double value) const | - | ||||||||||||||||||
| 547 | { | - | ||||||||||||||||||
| 548 | return QString::number(value, 'f', decimals).toDouble(); | - | ||||||||||||||||||
| 549 | } | - | ||||||||||||||||||
| 550 | QVariant QDoubleSpinBoxPrivate::validateAndInterpret(QString &input, int &pos, | - | ||||||||||||||||||
| 551 | QValidator::State &state) const | - | ||||||||||||||||||
| 552 | { | - | ||||||||||||||||||
| 553 | if (cachedText == input && !input.isEmpty()) { | - | ||||||||||||||||||
| 554 | state = cachedState; | - | ||||||||||||||||||
| 555 | if (false) QMessageLogger(__FILE__, 11571162, __PRETTY_FUNCTION__).debug() << "cachedText was '" << cachedText << "' state was " dead code: QMessageLogger(__FILE__, 1162, __PRETTY_FUNCTION__).debug() << "cachedText was '" << cachedText << "' state was " << state << " and value was " << cachedValue; | - | ||||||||||||||||||
| 556 | << state << " and value was " << cachedValue; dead code: QMessageLogger(__FILE__, 1162, __PRETTY_FUNCTION__).debug() << "cachedText was '" << cachedText << "' state was " << state << " and value was " << cachedValue; | - | ||||||||||||||||||
| 557 | return cachedValue; | - | ||||||||||||||||||
| 558 | } | - | ||||||||||||||||||
| 559 | const double max = maximum.toDouble(); | - | ||||||||||||||||||
| 560 | const double min = minimum.toDouble(); | - | ||||||||||||||||||
| 561 | - | |||||||||||||||||||
| 562 | QString copy = stripped(input, &pos); | - | ||||||||||||||||||
| 563 | if (false) QMessageLogger(__FILE__, 11651170, __PRETTY_FUNCTION__).debug() << "input" << input << "copy" << copy; dead code: QMessageLogger(__FILE__, 1170, __PRETTY_FUNCTION__).debug() << "input" << input << "copy" << copy; | - | ||||||||||||||||||
| 564 | int len = copy.size(); | - | ||||||||||||||||||
| 565 | double num = min; | - | ||||||||||||||||||
| 566 | const bool plus = max >= 0; | - | ||||||||||||||||||
| 567 | const bool minus = min <= 0; | - | ||||||||||||||||||
| 568 | - | |||||||||||||||||||
| 569 | switch (len) { | - | ||||||||||||||||||
| 570 | case 0: | - | ||||||||||||||||||
| 571 | state = max != min ? QValidator::Intermediate : QValidator::Invalid; | - | ||||||||||||||||||
| 572 | goto end; | - | ||||||||||||||||||
| 573 | case 1: | - | ||||||||||||||||||
| 574 | if (copy.at(0) == locale.decimalPoint() | - | ||||||||||||||||||
| 575 | || (plus && copy.at(0) == QLatin1Char('+')) | - | ||||||||||||||||||
| 576 | || (minus && copy.at(0) == QLatin1Char('-'))) { | - | ||||||||||||||||||
| 577 | state = QValidator::Intermediate; | - | ||||||||||||||||||
| 578 | goto end; | - | ||||||||||||||||||
| 579 | } | - | ||||||||||||||||||
| 580 | break; | - | ||||||||||||||||||
| 581 | case 2: | - | ||||||||||||||||||
| 582 | if (copy.at(1) == locale.decimalPoint() | - | ||||||||||||||||||
| 583 | && ((plus && copy.at(0) == QLatin1Char('+')) || (minus && copy.at(0) == QLatin1Char('-')))) { | - | ||||||||||||||||||
| 584 | state = QValidator::Intermediate; | - | ||||||||||||||||||
| 585 | goto end; | - | ||||||||||||||||||
| 586 | } | - | ||||||||||||||||||
| 587 | break; | - | ||||||||||||||||||
| 588 | default: break; | - | ||||||||||||||||||
| 589 | } | - | ||||||||||||||||||
| 590 | - | |||||||||||||||||||
| 591 | if (copy.at(0) == locale.groupSeparator()) { | - | ||||||||||||||||||
| 592 | if (false) QMessageLogger(__FILE__, 11941199, __PRETTY_FUNCTION__).debug() << __FILE__ << 11941199<< "state is set to Invalid"; dead code: QMessageLogger(__FILE__, 1199, __PRETTY_FUNCTION__).debug() << __FILE__ << 1199<< "state is set to Invalid"; | - | ||||||||||||||||||
| 593 | state = QValidator::Invalid; | - | ||||||||||||||||||
| 594 | goto end; | - | ||||||||||||||||||
| 595 | } else if (len > 1) { | - | ||||||||||||||||||
| 596 | const int dec = copy.indexOf(locale.decimalPoint()); | - | ||||||||||||||||||
| 597 | if (dec != -1) { | - | ||||||||||||||||||
| 598 | if (dec + 1 < copy.size() && copy.at(dec + 1) == locale.decimalPoint() && pos == dec + 1) { | - | ||||||||||||||||||
| 599 | copy.remove(dec + 1, 1); | - | ||||||||||||||||||
| 600 | } | - | ||||||||||||||||||
| 601 | - | |||||||||||||||||||
| 602 | if (copy.size() - dec > decimals + 1) { | - | ||||||||||||||||||
| 603 | if (false) QMessageLogger(__FILE__, 12051210, __PRETTY_FUNCTION__).debug() << __FILE__ << 12051210<< "state is set to Invalid"; dead code: QMessageLogger(__FILE__, 1210, __PRETTY_FUNCTION__).debug() << __FILE__ << 1210<< "state is set to Invalid"; | - | ||||||||||||||||||
| 604 | state = QValidator::Invalid; | - | ||||||||||||||||||
| 605 | goto end; | - | ||||||||||||||||||
| 606 | } | - | ||||||||||||||||||
| 607 | for (int i=dec + 1; i<copy.size(); ++i) { | - | ||||||||||||||||||
| 608 | if (copy.at(i).isSpace() || copy.at(i) == locale.groupSeparator()) { | - | ||||||||||||||||||
| 609 | if (false) QMessageLogger(__FILE__, 12111216, __PRETTY_FUNCTION__).debug() << __FILE__ << 12111216<< "state is set to Invalid"; dead code: QMessageLogger(__FILE__, 1216, __PRETTY_FUNCTION__).debug() << __FILE__ << 1216<< "state is set to Invalid"; | - | ||||||||||||||||||
| 610 | state = QValidator::Invalid; | - | ||||||||||||||||||
| 611 | goto end; | - | ||||||||||||||||||
| 612 | } | - | ||||||||||||||||||
| 613 | } | - | ||||||||||||||||||
| 614 | } else { | - | ||||||||||||||||||
| 615 | const QChar last = copy.at(len - 1); | - | ||||||||||||||||||
| 616 | const QChar secondLast = copy.at(len - 2); | - | ||||||||||||||||||
| 617 | if ((last == locale.groupSeparator() || last.isSpace()) | - | ||||||||||||||||||
| 618 | && (secondLast == locale.groupSeparator() || secondLast.isSpace())) { | - | ||||||||||||||||||
| 619 | state = QValidator::Invalid; | - | ||||||||||||||||||
| 620 | if (false) QMessageLogger(__FILE__, 12221227, __PRETTY_FUNCTION__).debug() << __FILE__ << 12221227<< "state is set to Invalid"; dead code: QMessageLogger(__FILE__, 1227, __PRETTY_FUNCTION__).debug() << __FILE__ << 1227<< "state is set to Invalid"; | - | ||||||||||||||||||
| 621 | goto end; | - | ||||||||||||||||||
| 622 | } else if (last.isSpace() && (!locale.groupSeparator().isSpace() || secondLast.isSpace())) { | - | ||||||||||||||||||
| 623 | state = QValidator::Invalid; | - | ||||||||||||||||||
| 624 | if (false) QMessageLogger(__FILE__, 12261231, __PRETTY_FUNCTION__).debug() << __FILE__ << 12261231<< "state is set to Invalid"; dead code: QMessageLogger(__FILE__, 1231, __PRETTY_FUNCTION__).debug() << __FILE__ << 1231<< "state is set to Invalid"; | - | ||||||||||||||||||
| 625 | goto end; | - | ||||||||||||||||||
| 626 | } | - | ||||||||||||||||||
| 627 | } | - | ||||||||||||||||||
| 628 | } | - | ||||||||||||||||||
| 629 | - | |||||||||||||||||||
| 630 | { | - | ||||||||||||||||||
| 631 | bool ok = false; | - | ||||||||||||||||||
| 632 | num = locale.toDouble(copy, &ok); | - | ||||||||||||||||||
| 633 | if (false) QMessageLogger(__FILE__, 12351240, __PRETTY_FUNCTION__).debug() << __FILE__ << 12351240 << locale << copy << num << ok; dead code: QMessageLogger(__FILE__, 1240, __PRETTY_FUNCTION__).debug() << __FILE__ << 1240 << locale << copy << num << ok; | - | ||||||||||||||||||
| 634 | - | |||||||||||||||||||
| 635 | if (!ok) { | - | ||||||||||||||||||
| 636 | if (locale.groupSeparator().isPrint()) { | - | ||||||||||||||||||
| 637 | if (max < 1000 && min > -1000 && copy.contains(locale.groupSeparator())) { | - | ||||||||||||||||||
| 638 | state = QValidator::Invalid; | - | ||||||||||||||||||
| 639 | if (false) QMessageLogger(__FILE__, 12411246, __PRETTY_FUNCTION__).debug() << __FILE__ << 12411246<< "state is set to Invalid"; dead code: QMessageLogger(__FILE__, 1246, __PRETTY_FUNCTION__).debug() << __FILE__ << 1246<< "state is set to Invalid"; | - | ||||||||||||||||||
| 640 | goto end; | - | ||||||||||||||||||
| 641 | } | - | ||||||||||||||||||
| 642 | - | |||||||||||||||||||
| 643 | const int len = copy.size(); | - | ||||||||||||||||||
| 644 | for (int i=0; i<len- 1; ++i) { | - | ||||||||||||||||||
| 645 | if (copy.at(i) == locale.groupSeparator() && copy.at(i + 1) == locale.groupSeparator()) { | - | ||||||||||||||||||
| 646 | if (false) QMessageLogger(__FILE__, 12481253, __PRETTY_FUNCTION__).debug() << __FILE__ << 12481253<< "state is set to Invalid"; dead code: QMessageLogger(__FILE__, 1253, __PRETTY_FUNCTION__).debug() << __FILE__ << 1253<< "state is set to Invalid"; | - | ||||||||||||||||||
| 647 | state = QValidator::Invalid; | - | ||||||||||||||||||
| 648 | goto end; | - | ||||||||||||||||||
| 649 | } | - | ||||||||||||||||||
| 650 | } | - | ||||||||||||||||||
| 651 | - | |||||||||||||||||||
| 652 | QString copy2 = copy; | - | ||||||||||||||||||
| 653 | copy2.remove(locale.groupSeparator()); | - | ||||||||||||||||||
| 654 | num = locale.toDouble(copy2, &ok); | - | ||||||||||||||||||
| 655 | if (false) QMessageLogger(__FILE__, 12571262, __PRETTY_FUNCTION__).debug() << locale.groupSeparator() << num << copy2 << ok; dead code: QMessageLogger(__FILE__, 1262, __PRETTY_FUNCTION__).debug() << locale.groupSeparator() << num << copy2 << ok; | - | ||||||||||||||||||
| 656 | - | |||||||||||||||||||
| 657 | if (!ok) { | - | ||||||||||||||||||
| 658 | state = QValidator::Invalid; | - | ||||||||||||||||||
| 659 | if (false) QMessageLogger(__FILE__, 12611266, __PRETTY_FUNCTION__).debug() << __FILE__ << 12611266<< "state is set to Invalid"; dead code: QMessageLogger(__FILE__, 1266, __PRETTY_FUNCTION__).debug() << __FILE__ << 1266<< "state is set to Invalid"; | - | ||||||||||||||||||
| 660 | goto end; | - | ||||||||||||||||||
| 661 | } | - | ||||||||||||||||||
| 662 | } | - | ||||||||||||||||||
| 663 | } | - | ||||||||||||||||||
| 664 | - | |||||||||||||||||||
| 665 | if (!ok) { | - | ||||||||||||||||||
| 666 | state = QValidator::Invalid; | - | ||||||||||||||||||
| 667 | if (false) QMessageLogger(__FILE__, 12691274, __PRETTY_FUNCTION__).debug() << __FILE__ << 12691274<< "state is set to Invalid"; dead code: QMessageLogger(__FILE__, 1274, __PRETTY_FUNCTION__).debug() << __FILE__ << 1274<< "state is set to Invalid"; | - | ||||||||||||||||||
| 668 | } else if (num >= min && num <= max) { | - | ||||||||||||||||||
| 669 | state = QValidator::Acceptable; | - | ||||||||||||||||||
| 670 | if (false) QMessageLogger(__FILE__, 12721277, __PRETTY_FUNCTION__).debug() << __FILE__ << 12721277<< "state is set to Acceptable"; dead code: QMessageLogger(__FILE__, 1277, __PRETTY_FUNCTION__).debug() << __FILE__ << 1277<< "state is set to Acceptable"; | - | ||||||||||||||||||
| 671 | } else if (max == min) { | - | ||||||||||||||||||
| 672 | state = QValidator::Invalid; | - | ||||||||||||||||||
| 673 | if (false) QMessageLogger(__FILE__, 12751280, __PRETTY_FUNCTION__).debug() << __FILE__ << 12751280<< "state is set to Invalid"; dead code: QMessageLogger(__FILE__, 1280, __PRETTY_FUNCTION__).debug() << __FILE__ << 1280<< "state is set to Invalid"; | - | ||||||||||||||||||
| 674 | } else { | - | ||||||||||||||||||
| 675 | if ((num >= 0 && num > max) || (num < 0 && num < min)) { | - | ||||||||||||||||||
| 676 | state = QValidator::Invalid; | - | ||||||||||||||||||
| 677 | if (false) QMessageLogger(__FILE__, 12791284, __PRETTY_FUNCTION__).debug() << __FILE__ << 12791284<< "state is set to Invalid"; dead code: QMessageLogger(__FILE__, 1284, __PRETTY_FUNCTION__).debug() << __FILE__ << 1284<< "state is set to Invalid"; | - | ||||||||||||||||||
| 678 | } else { | - | ||||||||||||||||||
| 679 | state = QValidator::Intermediate; | - | ||||||||||||||||||
| 680 | if (false) QMessageLogger(__FILE__, 12821287, __PRETTY_FUNCTION__).debug() << __FILE__ << 12821287<< "state is set to Intermediate"; dead code: QMessageLogger(__FILE__, 1287, __PRETTY_FUNCTION__).debug() << __FILE__ << 1287<< "state is set to Intermediate"; | - | ||||||||||||||||||
| 681 | } | - | ||||||||||||||||||
| 682 | } | - | ||||||||||||||||||
| 683 | } | - | ||||||||||||||||||
| 684 | - | |||||||||||||||||||
| 685 | end: | - | ||||||||||||||||||
| 686 | if (state != QValidator::Acceptable) { | - | ||||||||||||||||||
| 687 | num = max > 0 ? min : max; | - | ||||||||||||||||||
| 688 | } | - | ||||||||||||||||||
| 689 | - | |||||||||||||||||||
| 690 | input = prefix + copy + suffix; | - | ||||||||||||||||||
| 691 | cachedText = input; | - | ||||||||||||||||||
| 692 | cachedState = state; | - | ||||||||||||||||||
| 693 | cachedValue = QVariant(num); | - | ||||||||||||||||||
| 694 | return QVariant(num); | - | ||||||||||||||||||
| 695 | } | - | ||||||||||||||||||
| 696 | - | |||||||||||||||||||
| 697 | - | |||||||||||||||||||
| 698 | - | |||||||||||||||||||
| 699 | - | |||||||||||||||||||
| 700 | - | |||||||||||||||||||
| 701 | - | |||||||||||||||||||
| 702 | QString QDoubleSpinBoxPrivate::textFromValue(const QVariant &f) const | - | ||||||||||||||||||
| 703 | { | - | ||||||||||||||||||
| 704 | const QDoubleSpinBox * const q = q_func(); | - | ||||||||||||||||||
| 705 | return q->textFromValue(f.toDouble()); | - | ||||||||||||||||||
| 706 | } | - | ||||||||||||||||||
| 707 | - | |||||||||||||||||||
| 708 | - | |||||||||||||||||||
| 709 | bool QSpinBox::event(QEvent *event) | - | ||||||||||||||||||
| 710 | { | - | ||||||||||||||||||
| 711 | QSpinBoxPrivate * const d = d_func(); | - | ||||||||||||||||||
| 712 | if (event->type() == QEvent::StyleChange | - | ||||||||||||||||||
| 713 | - | |||||||||||||||||||
| 714 | - | |||||||||||||||||||
| 715 | - | |||||||||||||||||||
| 716 | ) | - | ||||||||||||||||||
| 717 | d->setLayoutItemMargins(QStyle::SE_SpinBoxLayoutItem); | - | ||||||||||||||||||
| 718 | return QAbstractSpinBox::event(event); | - | ||||||||||||||||||
| 719 | } | - | ||||||||||||||||||
| 720 | - | |||||||||||||||||||
| 721 | - | |||||||||||||||||||
| 722 | - | |||||||||||||||||||
| Switch to Source code | Preprocessed file |