summaryrefslogtreecommitdiff
path: root/tests/auto/controls/data/tst_tableview.qml
diff options
context:
space:
mode:
authorJens Bache-Wiig <jens.bache-wiig@digia.com>2013-09-12 10:57:33 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-20 20:49:38 +0200
commit72072899c653430912e8fcafa82d624755d465ad (patch)
tree8031230838fe64fe8494d35ebf195e1bd5b51175 /tests/auto/controls/data/tst_tableview.qml
parentafc201aaf8ebd15b72ac52138cd77c5000167d14 (diff)
downloadqtquickcontrols-72072899c653430912e8fcafa82d624755d465ad.tar.gz
Enable TableView multi-row selection
This adds a new read-only property selection and selectionMode to TableView with the following features: selection.selectAll() selection.select(from, to) selection.deselect(from, to) selection.forEach(callback) selection.contains(index) selection.selectionChanged() selection.count Change-Id: I3cbd433851354bb68a6075f0b31f46dab8c83fd4 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Diffstat (limited to 'tests/auto/controls/data/tst_tableview.qml')
-rw-r--r--tests/auto/controls/data/tst_tableview.qml219
1 files changed, 219 insertions, 0 deletions
diff --git a/tests/auto/controls/data/tst_tableview.qml b/tests/auto/controls/data/tst_tableview.qml
index d0c713ef..6ec9fa5f 100644
--- a/tests/auto/controls/data/tst_tableview.qml
+++ b/tests/auto/controls/data/tst_tableview.qml
@@ -107,6 +107,225 @@ TestCase {
table.destroy();
}
+
+ function rangeTest(arr, table) {
+ var ranges = table.selection.__ranges
+ if (arr.length !== ranges.length)
+ return false;
+
+ for (var i = 0 ; i < ranges.length ; ++ i) {
+ if (!(arr[i][0] === ranges[i][0] && arr[i][1] === ranges[i][1]))
+ return false;
+ }
+ return true;
+ }
+
+ function test_selection() {
+
+ var component = Qt.createComponent("tableview/table2_qabstractitemmodel.qml")
+ compare(component.status, Component.Ready)
+ var table = component.createObject(testCase);
+ verify(table !== null, "table created is null")
+ table.model = 100
+ table.selection.select(0, 0)
+
+ verify(rangeTest([[0,0]], table))
+ table.selection.select(4, 10)
+ verify(rangeTest([[0,0], [4, 10]], table))
+ table.selection.select(8, 10)
+ verify(rangeTest([[0,0], [4, 10]], table))
+ table.selection.select(2, 10)
+ verify(rangeTest([[0,0], [2, 10]], table))
+ table.selection.select(0, 1)
+ verify(rangeTest([[0,10]], table))
+ table.selection.deselect(0, 1)
+ verify(rangeTest([[2,10]], table))
+ table.selection.deselect(7, 4)
+ verify(rangeTest([[2,3],[8, 10]], table))
+ table.selection.deselect(1, 2)
+ verify(rangeTest([[3,3],[8, 10]], table))
+ table.selection.deselect(3, 3)
+ verify(rangeTest([[8, 10]], table))
+ table.selection.select(15, 13)
+ verify(rangeTest([[8, 10],[13, 15]], table))
+ table.selection.select(11, 11)
+ verify(rangeTest([[8, 11],[13, 15]], table))
+ table.selection.deselect(11, 11)
+ verify(rangeTest([[8, 10],[13, 15]], table))
+ table.selection.select(12, 15)
+ verify(rangeTest([[8, 10],[12, 15]], table))
+ table.selection.select(0, 3)
+ verify(rangeTest([[0, 3],[8, 10],[12, 15]], table))
+ table.selection.select(4, 7)
+ verify(rangeTest([[0, 10],[12, 15]], table))
+ table.selection.select(0, 99)
+ verify(rangeTest([[0, 99]], table))
+ table.selection.deselect(1, 1)
+ table.selection.deselect(4, 4)
+ verify(rangeTest([[0, 0],[2,3],[5, 99]], table))
+ table.selection.deselect(3, 88)
+ verify(rangeTest([[0, 0],[2,2],[89, 99]], table))
+ table.selection.deselect(88, 98)
+ verify(rangeTest([[0, 0],[2,2],[99, 99]], table))
+ table.selection.deselect(99, 99)
+ verify(rangeTest([[0, 0],[2,2]], table))
+ table.selection.select(0, 3)
+ verify(rangeTest([[0, 3]], table))
+ table.selection.deselect(0, 99)
+ verify(rangeTest([], table))
+ table.selection.select(5, 3)
+ table.selection.select(9, 8)
+ table.selection.select(1, 3)
+ verify(rangeTest([[1, 5],[8,9]], table))
+ table.selection.select(0, 99)
+ table.selection.deselect(0, 0)
+ table.selection.deselect(4, 4)
+ table.selection.deselect(9, 13)
+ verify(rangeTest([[1,3],[5,8],[14,99]], table))
+ table.selection.select(3, 14)
+ verify(rangeTest([[1,99]], table))
+
+ table.selection.clear()
+ table.selection.select(1, 1)
+ verify(rangeTest([[1,1]], table))
+ table.selection.select(5, 5)
+ verify(rangeTest([[1,1],[5,5]], table))
+ table.selection.select(9, 11)
+ verify(rangeTest([[1,1],[5,5],[9,11]], table))
+ table.selection.select(1, 3)
+ verify(rangeTest([[1,3],[5,5],[9,11]], table))
+
+ table.selection.clear()
+ compare(table.selection.__ranges.length, 0)
+ var i
+ for (i = 0 ; i < table.rowCount ; i += 2)
+ table.selection.select(i)
+ compare(table.selection.__ranges.length, 50)
+ for (i = 1 ; i < table.rowCount ; i += 2)
+ table.selection.select(i)
+ compare(table.selection.__ranges.length, 1)
+ for (i = 0 ; i < table.rowCount ; i += 2)
+ table.selection.deselect(i)
+ compare(table.selection.__ranges.length, 50)
+ for (i = 1 ; i < table.rowCount ; i += 2)
+ table.selection.deselect(i)
+ compare(table.selection.__ranges.length, 0)
+
+ table.selection.select(3, 14)
+ table.selection.select(19, 7)
+ verify(rangeTest([[3,19]], table))
+
+ table.model = 50 // clear selection on model change
+ compare(table.selection.__ranges.length, 0)
+
+ table.selection.selectAll()
+ compare(table.selection.__ranges.length, 1)
+ verify(rangeTest([[0,49]], table))
+ }
+
+ function test_selectionCount() {
+
+ var component = Qt.createComponent("tableview/table2_qabstractitemmodel.qml")
+ compare(component.status, Component.Ready)
+ var table = component.createObject(testCase);
+ verify(table !== null, "table created is null")
+ table.model = 100
+
+ table.selection.select(0, 0)
+ compare(table.selection.count, 1)
+ table.selection.select(4, 6)
+ compare(table.selection.count, 4)
+ table.selection.select(10, 13)
+ compare(table.selection.count, 8)
+ table.selection.select(0, 99)
+ compare(table.selection.count, 100)
+ table.model = 50
+ compare(table.selection.count, 0)
+ }
+
+ function test_selectionForeach() {
+ var component = Qt.createComponent("tableview/table2_qabstractitemmodel.qml")
+ compare(component.status, Component.Ready)
+ var table = component.createObject(testCase);
+ verify(table !== null, "table created is null")
+ table.model = 100
+
+ var iteration = 0
+ function tryMe() { iteration++ }
+ iteration = 0
+ table.selection.forEach(tryMe)
+ compare(iteration, 0)
+ table.selection.select(2, 5)
+ table.selection.select(10, 12)
+ table.selection.select(14, 22)
+ compare(table.selection.count, 16)
+ iteration = 0
+ table.selection.forEach(tryMe)
+ compare(iteration, 16)
+
+ iteration = 0
+ table.selection.select(0, 99)
+ table.selection.forEach(tryMe)
+ compare(iteration, 100)
+
+ function removeNext(index) {
+ table.selection.deselect(index + 1)
+ verify(index%2 == 1)
+ iteration++
+ }
+
+ iteration = 0
+ table.selection.clear()
+ table.selection.select(1, 7)
+ table.selection.forEach(removeNext)
+ compare(iteration, 4)
+
+
+ function deleteAll(index) {
+ table.selection.deselect(0, table.selection.count)
+ iteration++
+ }
+
+ iteration = 0
+ table.selection.clear()
+ table.selection.select(0)
+ table.selection.forEach(deleteAll)
+ compare(iteration, 1)
+
+ function addEven(index) {
+ if (index + 2 < table.rowCount)
+ table.selection.select(index + 2)
+ iteration++
+ verify (index %2 === 0)
+ }
+
+ iteration = 0
+ table.selection.clear()
+ table.selection.select(0)
+ table.selection.forEach(addEven)
+ compare(iteration, 50)
+ }
+
+ function test_selectionContains() {
+ var component = Qt.createComponent("tableview/table2_qabstractitemmodel.qml")
+ compare(component.status, Component.Ready)
+ var table = component.createObject(testCase);
+ verify(table !== null, "table created is null")
+ table.model = 100
+ table.selection.select(0, 0)
+ verify(table.selection.contains(0))
+ verify(!table.selection.contains(1))
+ verify(!table.selection.contains(10))
+ table.selection.select(3, 13)
+ verify(table.selection.contains(10))
+ verify(!table.selection.contains(2))
+ table.selection.deselect(5, 7)
+ verify(!table.selection.contains(5))
+ verify(!table.selection.contains(6))
+ verify(!table.selection.contains(7))
+ verify(table.selection.contains(8))
+ }
+
function test_usingcppqobjectmodel() {
var component = Qt.createComponent("tableview/table1_qobjectmodel.qml")