┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/accessibility/kitemlistcontaineraccessible.cpp
blob: 6abf450256352b385f8f06ff98bb39fa0b683d37 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/*
 * SPDX-FileCopyrightText: 2012 Amandeep Singh <[email protected]>
 *
 * SPDX-License-Identifier: GPL-2.0-or-later
 */

#include "kitemlistcontaineraccessible.h"

#include "kitemlistcontaineraccessible.h"
#include "kitemlistviewaccessible.h"
#include "kitemviews/kitemlistcontainer.h"
#include "kitemviews/kitemlistcontroller.h"
#include "kitemviews/kitemlistselectionmanager.h"
#include "kitemviews/kitemlistview.h"
#include "kitemviews/kitemmodelbase.h"

#include <KLocalizedString>

KItemListContainerAccessible::KItemListContainerAccessible(KItemListContainer *container)
    : QAccessibleWidget(container)
{
}

KItemListContainerAccessible::~KItemListContainerAccessible()
{
}

QString KItemListContainerAccessible::text(QAccessible::Text t) const
{
    Q_UNUSED(t)
    return QString(); // This class should never have focus. Instead KItemListViewAccessible should be focused and read out.
}

int KItemListContainerAccessible::childCount() const
{
    return 1;
}

int KItemListContainerAccessible::indexOfChild(const QAccessibleInterface *child) const
{
    if (child == KItemListContainerAccessible::child(0)) {
        return 0;
    }
    return -1;
}

QAccessibleInterface *KItemListContainerAccessible::child(int index) const
{
    if (index == 0) {
        Q_CHECK_PTR(static_cast<KItemListViewAccessible *>(QAccessible::queryAccessibleInterface(container()->controller()->view())));
        return QAccessible::queryAccessibleInterface(container()->controller()->view());
    }
    qWarning("Calling KItemListContainerAccessible::child(index) with index != 0 is always pointless.");
    return nullptr;
}

QAccessibleInterface *KItemListContainerAccessible::focusChild() const
{
    return child(0);
}

QAccessible::State KItemListContainerAccessible::state() const
{
    auto state = QAccessibleWidget::state();
    state.focusable = false;
    state.focused = false;
    return state;
}

void KItemListContainerAccessible::doAction(const QString &actionName)
{
    auto view = static_cast<KItemListViewAccessible *>(child(0));
    Q_CHECK_PTR(view); // A container should always have a view. Otherwise it has no reason to exist.
    if (actionName == setFocusAction() && view) {
        view->doAction(actionName);
        return;
    }
    QAccessibleWidget::doAction(actionName);
}

const KItemListContainer *KItemListContainerAccessible::container() const
{
    Q_CHECK_PTR(qobject_cast<KItemListContainer *>(object()));
    return static_cast<KItemListContainer *>(object());
}