2
* Copyright 2013-2014 Canonical Ltd.
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation; version 3.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
13
* You should have received a copy of the GNU General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
20
import "../../../qml/Components"
21
import Ubuntu.Components.ListItems 0.1 as ListItem
22
import Ubuntu.Components 0.1
24
import Unity.Test 0.1 as UT
27
width: units.gu(80) + controls.width
34
anchors.top: parent.top
35
anchors.right: parent.right
36
ListItem.ValueSelector {
39
// small, medium, large card sizes
40
values: [units.gu(12), units.gu(18.5), units.gu(38)]
43
ListItem.ValueSelector {
44
id: minColumnSpacingSelector
45
text: "minColumnSpacing"
46
values: [0, units.gu(2), units.gu(8), units.gu(25)]
49
ListItem.ValueSelector {
50
id: rowSpacingSelector
52
values: [units.gu(1), units.gu(2), units.gu(4), units.gu(8)]
59
ListElement { name: "A" }
60
ListElement { name: "B" }
61
ListElement { name: "C" }
62
ListElement { name: "D" }
63
ListElement { name: "E" }
64
ListElement { name: "F" }
65
ListElement { name: "G" }
66
ListElement { name: "H" }
67
ListElement { name: "I" }
68
ListElement { name: "J" }
69
ListElement { name: "K" }
70
ListElement { name: "L" }
71
ListElement { name: "M" }
72
ListElement { name: "N" }
73
ListElement { name: "O" }
74
ListElement { name: "P" }
75
ListElement { name: "Q" }
76
ListElement { name: "R" }
77
ListElement { name: "S" }
78
ListElement { name: "T" }
79
ListElement { name: "U" }
82
SortFilterProxyModel {
91
anchors.top: parent.top
92
anchors.left: parent.left
93
anchors.right: controls.left
95
ResponsiveVerticalJournal {
98
model: wrappedFakeModel
99
minimumColumnSpacing: minColumnSpacingSelector.values[minColumnSpacingSelector.selectedIndex]
100
rowSpacing: rowSpacingSelector.values[rowSpacingSelector.selectedIndex]
101
columnWidth: cardSizeSelector.values[cardSizeSelector.selectedIndex]
103
delegate: Rectangle {
105
// So that it can be identified by test code
106
property bool isJournalDelegate: true
107
objectName: "delegate" + index
112
// width derived from Card's template['card-size']
113
width: cardSizeSelector.values[cardSizeSelector.selectedIndex]
114
height: Math.max(units.gu(8), Math.floor(Math.random() * 300))
118
anchors.centerIn: parent
122
anchors.centerIn: parent
127
Text { x:0; y:0; text:"(" + parent.x + ", " + parent.y + ")"}
133
name: "ResponsiveVerticalJournal"
136
function test_minimumColumnSpacing_data() {
137
return [{minColumnSpacingIndex: 0, expectedColumns: 2},
138
{minColumnSpacingIndex: 1, expectedColumns: 2},
139
{minColumnSpacingIndex: 2, expectedColumns: 1}]
142
// Test how minimumColumnSpacing affects column count.
143
function test_minimumColumnSpacing(data) {
144
cardSizeSelector.selectedIndex = 2 // large card
146
minColumnSpacingSelector.selectedIndex = data.minColumnSpacingIndex
148
tryCompareFunction(countJournalDelegatesOnFirstRow, data.expectedColumns)
151
function test_maximumNumberOfColumns_data() {
152
return [{cardSizeIndex: 0, expectedColumns: 6},
153
{cardSizeIndex: 1, expectedColumns: 4},
154
{cardSizeIndex: 2, expectedColumns: 2}]
157
// Test how maximumNumberOfColumns and columnWidth affect column count.
158
function test_maximumNumberOfColumns(data) {
159
minColumnSpacingSelector.selectedIndex = 0 // no spacing
161
cardSizeSelector.selectedIndex = data.cardSizeIndex // columnWidth
163
tryCompareFunction(countJournalDelegatesOnFirstRow, data.expectedColumns)
166
function countJournalDelegatesOnFirstRow() {
167
return __countJournalDelegatesOnFirstRow(journal.visibleChildren, 0)
170
function __countJournalDelegatesOnFirstRow(objList, total) {
171
for (var i = 0; i < objList.length; ++i) {
172
var child = objList[i];
173
if (child.isJournalDelegate !== undefined && child.y === 0) {
176
total = __countJournalDelegatesOnFirstRow(
177
child.visibleChildren, total)