summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.h
blob: b63ec98baa7f074e63839089363aa6171ad71d64 (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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0

#ifndef TST_QSORTFILTERPROXYMODEL_H
#define TST_QSORTFILTERPROXYMODEL_H

#include "dynamictreemodel.h"
#include <QLoggingCategory>
#include <QSortFilterProxyModel>
#include <QStandardItemModel>

enum class FilterType {
    RegExp,
    RegularExpression
};

Q_DECLARE_METATYPE(QList<QPersistentModelIndex>)

class tst_QSortFilterProxyModel : public QObject
{
    Q_OBJECT
public slots:
    void initTestCase();
    void cleanupTestCase();
    void cleanup();

private slots:
    void getSetCheck();
    void sort_data();
    void sort();
    void sortHierarchy_data();
    void sortHierarchy();
    void createPersistentOnLayoutAboutToBeChanged();

    void insertRows_data();
    void insertRows();
    void prependRow();
    void appendRowFromCombobox_data();
    void appendRowFromCombobox();
    void removeRows_data();
    void removeRows();
    void removeColumns_data();
    void removeColumns();
    void insertAfterSelect();
    void removeAfterSelect();
    void filter_data();
    void filter();
    void filterHierarchy_data();
    void filterHierarchy();
    void filterColumns_data();
    void filterColumns();

    void filterTable();
    void filterCurrent();
    void filter_qtbug30662();

    void changeSourceLayout();
    void changeSourceLayoutFilteredOut();
    void removeSourceRows_data();
    void removeSourceRows();
    void insertSourceRows_data();
    void insertSourceRows();
    void changeFilter_data();
    void changeFilter();
    void changeSourceData_data();
    void changeSourceData();
    void changeSourceDataKeepsStableSorting_qtbug1548();
    void changeSourceDataForwardsRoles_qtbug35440();
    void changeSourceDataProxySendDataChanged_qtbug87781();
    void changeSourceDataTreeModel();
    void changeSourceDataProxyFilterSingleColumn();
    void changeSourceDataProxyFilterMultipleColumns();
    void resortingDoesNotBreakTreeModels();
    void dynamicFilterWithoutSort();
    void sortFilterRole();
    void selectionFilteredOut();
    void match_data();
    void match();
    void matchTree();
    void insertIntoChildrenlessItem();
    void invalidateMappedChildren();
    void insertRowIntoFilteredParent();
    void filterOutParentAndFilterInChild();

    void sourceInsertRows();
    void sourceModelDeletion();

    void sortColumnTracking1();
    void sortColumnTracking2();

    void sortStable();

    void hiddenColumns();
    void insertRowsSort();
    void staticSorting();
    void dynamicSorting();
    void fetchMore();
    void hiddenChildren();
    void mapFromToSource();
    void removeRowsRecursive();
    void doubleProxySelectionSetSourceModel();
    void appearsAndSort();
    void unnecessaryDynamicSorting();
    void unnecessaryMapCreation();
    void resetInvalidate_data();
    void resetInvalidate();

    void testMultipleProxiesWithSelection();
    void mapSelectionFromSource();
    void testResetInternalData();
    void filteredColumns();
    void headerDataChanged();

    void testParentLayoutChanged();
    void moveSourceRows();

    void hierarchyFilterInvalidation();
    void simpleFilterInvalidation();

    void chainedProxyModelRoleNames();

    void noMapAfterSourceDelete();
    void forwardDropApi();
    void canDropMimeData();
    void filterHint();

    void sourceLayoutChangeLeavesValidPersistentIndexes();
    void rowMoveLeavesValidPersistentIndexes();

    void emitLayoutChangedOnlyIfSortingChanged_data();
    void emitLayoutChangedOnlyIfSortingChanged();

    void checkSetNewModel();
    void filterAndInsertRow_data();
    void filterAndInsertRow();
    void filterAndInsertColumn_data();
    void filterAndInsertColumn();

    void removeIntervals_data();
    void removeIntervals();

    void checkFilteredIndexes();
    void invalidateColumnsOrRowsFilter();

    void filterKeyColumnBinding();
    void dynamicSortFilterBinding();
    void sortCaseSensitivityBinding();
    void isSortLocaleAwareBinding();
    void sortRoleBinding();
    void filterRoleBinding();
    void recursiveFilteringEnabledBinding();
    void autoAcceptChildRowsBinding();
    void filterCaseSensitivityBinding();
    void filterRegularExpressionBinding();

protected:
    void buildHierarchy(const QStringList &data, QAbstractItemModel *model);
    void checkHierarchy(const QStringList &data, const QAbstractItemModel *model);
    void setupFilter(QSortFilterProxyModel *model, const QString& pattern);

protected:
    FilterType m_filterType;

private:
    QStandardItemModel *m_model = nullptr;
    QSortFilterProxyModel *m_proxy = nullptr;
};

Q_DECLARE_METATYPE(QAbstractItemModel::LayoutChangeHint)

Q_DECLARE_LOGGING_CATEGORY(lcItemModels)

#endif // TST_QSORTFILTERPROXYMODEL_H