15#if QT_CONFIG(scrollbar)
16#include <qscrollbar.h>
19#include <qstyleoption.h>
22#if QT_CONFIG(lineedit)
23#include <QtWidgets/qlineedit.h>
26#include <private/qmath_p.h>
32using namespace Qt::StringLiterals;
34#if QT_CONFIG(accessibility)
37QAccessibleAbstractSpinBox::QAccessibleAbstractSpinBox(QWidget *w)
38 : QAccessibleWidgetV2(w, QAccessible::SpinBox), lineEdit(
nullptr)
40 Q_ASSERT(abstractSpinBox());
43QAccessibleAbstractSpinBox::~QAccessibleAbstractSpinBox()
49
50
51QAbstractSpinBox *QAccessibleAbstractSpinBox::abstractSpinBox()
const
53 return qobject_cast<QAbstractSpinBox*>(object());
56QAccessibleInterface *QAccessibleAbstractSpinBox::lineEditIface()
const
58#if QT_CONFIG(lineedit)
61 lineEdit =
new QAccessibleLineEdit(abstractSpinBox()->lineEdit());
68QString QAccessibleAbstractSpinBox::text(QAccessible::Text t)
const
70 if (t == QAccessible::Value)
71 return abstractSpinBox()->text();
72 return QAccessibleWidgetV2::text(t);
75void *QAccessibleAbstractSpinBox::interface_cast(QAccessible::InterfaceType t)
77 if (t == QAccessible::ValueInterface)
78 return static_cast<QAccessibleValueInterface*>(
this);
79 if (t == QAccessible::TextInterface)
80 return static_cast<QAccessibleTextInterface*>(
this);
81 if (t == QAccessible::EditableTextInterface)
82 return static_cast<QAccessibleEditableTextInterface*>(
this);
83 return QAccessibleWidgetV2::interface_cast(t);
86QVariant QAccessibleAbstractSpinBox::currentValue()
const
88 return abstractSpinBox()->property(
"value");
91void QAccessibleAbstractSpinBox::setCurrentValue(
const QVariant &value)
93 abstractSpinBox()->setProperty(
"value", value);
96QVariant QAccessibleAbstractSpinBox::maximumValue()
const
98 return abstractSpinBox()->property(
"maximum");
101QVariant QAccessibleAbstractSpinBox::minimumValue()
const
103 return abstractSpinBox()->property(
"minimum");
106QVariant QAccessibleAbstractSpinBox::minimumStepSize()
const
108 return abstractSpinBox()->property(
"stepSize");
111void QAccessibleAbstractSpinBox::addSelection(
int startOffset,
int endOffset)
113 lineEditIface()->textInterface()->addSelection(startOffset, endOffset);
116QString QAccessibleAbstractSpinBox::attributes(
int offset,
int *startOffset,
int *endOffset)
const
118 return lineEditIface()->textInterface()->attributes(offset, startOffset, endOffset);
121int QAccessibleAbstractSpinBox::cursorPosition()
const
123 return lineEditIface()->textInterface()->cursorPosition();
126QRect QAccessibleAbstractSpinBox::characterRect(
int offset)
const
128 return lineEditIface()->textInterface()->characterRect(offset);
131int QAccessibleAbstractSpinBox::selectionCount()
const
133 return lineEditIface()->textInterface()->selectionCount();
136int QAccessibleAbstractSpinBox::offsetAtPoint(
const QPoint &point)
const
138 return lineEditIface()->textInterface()->offsetAtPoint(point);
141void QAccessibleAbstractSpinBox::selection(
int selectionIndex,
int *startOffset,
int *endOffset)
const
143 lineEditIface()->textInterface()->selection(selectionIndex, startOffset, endOffset);
146QString QAccessibleAbstractSpinBox::text(
int startOffset,
int endOffset)
const
148 return lineEditIface()->textInterface()->text(startOffset, endOffset);
151QString QAccessibleAbstractSpinBox::textBeforeOffset(
int offset, QAccessible::TextBoundaryType boundaryType,
int *startOffset,
int *endOffset)
const
153 return lineEditIface()->textInterface()->textBeforeOffset(offset, boundaryType, startOffset, endOffset);
156QString QAccessibleAbstractSpinBox::textAfterOffset(
int offset, QAccessible::TextBoundaryType boundaryType,
int *startOffset,
int *endOffset)
const
158 return lineEditIface()->textInterface()->textAfterOffset(offset, boundaryType, startOffset, endOffset);
161QString QAccessibleAbstractSpinBox::textAtOffset(
int offset, QAccessible::TextBoundaryType boundaryType,
int *startOffset,
int *endOffset)
const
163 return lineEditIface()->textInterface()->textAtOffset(offset, boundaryType, startOffset, endOffset);
166void QAccessibleAbstractSpinBox::removeSelection(
int selectionIndex)
168 lineEditIface()->textInterface()->removeSelection(selectionIndex);
171void QAccessibleAbstractSpinBox::setCursorPosition(
int position)
173 lineEditIface()->textInterface()->setCursorPosition(position);
176void QAccessibleAbstractSpinBox::setSelection(
int selectionIndex,
int startOffset,
int endOffset)
178 lineEditIface()->textInterface()->setSelection(selectionIndex, startOffset, endOffset);
181int QAccessibleAbstractSpinBox::characterCount()
const
183 return lineEditIface()->textInterface()->characterCount();
186void QAccessibleAbstractSpinBox::scrollToSubstring(
int startIndex,
int endIndex)
188 lineEditIface()->textInterface()->scrollToSubstring(startIndex, endIndex);
191void QAccessibleAbstractSpinBox::deleteText(
int startOffset,
int endOffset)
193 lineEditIface()->editableTextInterface()->deleteText(startOffset, endOffset);
196void QAccessibleAbstractSpinBox::insertText(
int offset,
const QString &text)
198 lineEditIface()->editableTextInterface()->insertText(offset, text);
201void QAccessibleAbstractSpinBox::replaceText(
int startOffset,
int endOffset,
const QString &text)
203 lineEditIface()->editableTextInterface()->replaceText(startOffset, endOffset, text);
208
209
210
211
212
213
216
217
218QAccessibleSpinBox::QAccessibleSpinBox(QWidget *w)
219: QAccessibleAbstractSpinBox(w)
222 addControllingSignal(
"valueChanged(int)"_L1);
226
227
228QSpinBox *QAccessibleSpinBox::spinBox()
const
230 return qobject_cast<QSpinBox*>(object());
235QAccessibleDoubleSpinBox::QAccessibleDoubleSpinBox(QWidget *widget)
236 : QAccessibleAbstractSpinBox(widget)
238 Q_ASSERT(qobject_cast<QDoubleSpinBox *>(widget));
239 addControllingSignal(
"valueChanged(double)"_L1);
243
244
245QDoubleSpinBox *QAccessibleDoubleSpinBox::doubleSpinBox()
const
247 return static_cast<QDoubleSpinBox*>(object());
250QString QAccessibleDoubleSpinBox::text(QAccessible::Text textType)
const
252 if (textType == QAccessible::Value)
253 return doubleSpinBox()->textFromValue(doubleSpinBox()->value());
254 return QAccessibleWidgetV2::text(textType);
259#if QT_CONFIG(scrollbar)
261
262
263
264
265
266
269
270
271
272QAccessibleScrollBar::QAccessibleScrollBar(QWidget *w)
273: QAccessibleAbstractSlider(w, QAccessible::ScrollBar)
275 Q_ASSERT(scrollBar());
276 addControllingSignal(
"valueChanged(int)"_L1);
280QScrollBar *QAccessibleScrollBar::scrollBar()
const
282 return qobject_cast<QScrollBar*>(object());
285QString QAccessibleScrollBar::text(QAccessible::Text t)
const
287 if (t == QAccessible::Value)
288 return QString::number(scrollBar()->value());
289 return QAccessibleAbstractSlider::text(t);
296
297
298
299
300
301
304
305
306
307QAccessibleSlider::QAccessibleSlider(QWidget *w)
308: QAccessibleAbstractSlider(w)
311 addControllingSignal(
"valueChanged(int)"_L1);
315QSlider *QAccessibleSlider::slider()
const
317 return qobject_cast<QSlider*>(object());
320QString QAccessibleSlider::text(QAccessible::Text t)
const
322 if (t == QAccessible::Value)
323 return QString::number(slider()->value());
325 return QAccessibleAbstractSlider::text(t);
328QAccessibleAbstractSlider::QAccessibleAbstractSlider(QWidget *w, QAccessible::Role r)
329 : QAccessibleWidgetV2(w, r)
331 Q_ASSERT(qobject_cast<QAbstractSlider *>(w));
334void *QAccessibleAbstractSlider::interface_cast(QAccessible::InterfaceType t)
336 if (t == QAccessible::ValueInterface)
337 return static_cast<QAccessibleValueInterface*>(
this);
338 return QAccessibleWidgetV2::interface_cast(t);
341QVariant QAccessibleAbstractSlider::currentValue()
const
343 return abstractSlider()->value();
346void QAccessibleAbstractSlider::setCurrentValue(
const QVariant &value)
348 abstractSlider()->setValue(value.toInt());
351QVariant QAccessibleAbstractSlider::maximumValue()
const
353 return abstractSlider()->maximum();
356QVariant QAccessibleAbstractSlider::minimumValue()
const
358 return abstractSlider()->minimum();
361QVariant QAccessibleAbstractSlider::minimumStepSize()
const
363 return abstractSlider()->singleStep();
366QAbstractSlider *QAccessibleAbstractSlider::abstractSlider()
const
368 return static_cast<QAbstractSlider *>(object());
375QAccessibleDial::QAccessibleDial(QWidget *widget)
376 : QAccessibleAbstractSlider(widget, QAccessible::Dial)
378 Q_ASSERT(qobject_cast<QDial *>(widget));
379 addControllingSignal(
"valueChanged(int)"_L1);
382QString QAccessibleDial::text(QAccessible::Text textType)
const
384 if (textType == QAccessible::Value)
385 return QString::number(dial()->value());
387 return QAccessibleAbstractSlider::text(textType);
390QDial *QAccessibleDial::dial()
const
392 return static_cast<QDial*>(object());