7#include <QtQuick/private/qquicklistview_p.h>
11#if QT_CONFIG(accessibility)
13QAccessibleQuickListView::QAccessibleQuickListView(QQuickListView *listView)
14 : QAccessibleQuickItem(listView)
18QSizeF QAccessibleQuickListView::contentSize()
const
20 if (
auto *l = listView()) {
21 const int count = l->count();
25 if (l->orientation() == QQuickListView::Horizontal)
26 return {
static_cast<qreal>(count), 1 };
28 return { 1,
static_cast<qreal>(count) };
34QPointF QAccessibleQuickListView::position()
const
36 if (
auto *l = listView()) {
37 const int count = l->count();
41 if (l->orientation() == QQuickListView::Horizontal) {
43 const int startIndex = std::max(0, l->indexAt(l->contentX(), 0));
44 return {
static_cast<qreal>(startIndex) / count, 0 };
48 const int startIndex = std::max(0, l->indexAt(0, l->contentY()));
49 return { 0,
static_cast<qreal>(startIndex) / count };
55QSizeF QAccessibleQuickListView::viewportSize()
const
57 if (
auto *l = listView()) {
58 const int count = l->count();
62 if (l->orientation() == QQuickListView::Horizontal) {
63 const int startIndex = std::max(0, l->indexAt(l->contentX(), 0));
64 int endIndex = l->indexAt(l->contentX() + l->width() - 1, 0);
69 return {
static_cast<qreal>(endIndex - startIndex + 1) / count, 1 };
71 const int startIndex = std::max(0, l->indexAt(0, l->contentY()));
72 int endIndex = l->indexAt(0, l->contentY() + l->height() - 1);
77 return { 1,
static_cast<qreal>(endIndex - startIndex + 1) / count };
83bool QAccessibleQuickListView::isIndexed()
const
88void QAccessibleQuickListView::setPosition(QPointF position)
90 if (
auto *l = listView()) {
91 if (l->orientation() == QQuickListView::Horizontal) {
92 l->positionViewAtIndex(
static_cast<
int>(position.x() * l->count()),
93 QQuickListView::Beginning);
97 l->positionViewAtIndex(
static_cast<
int>(position.y() * l->count()),
98 QQuickListView::Beginning);
102void *QAccessibleQuickListView::interface_cast(QAccessible::InterfaceType t)
104 if (t == QAccessible::ViewportInterface)
105 return static_cast<QAccessibleViewportInterface *>(
this);
107 return QAccessibleQuickItem::interface_cast(t);
110QQuickListView *QAccessibleQuickListView::listView()
const
112 return qobject_cast<QQuickListView *>(object());