171 qApp->processEvents(); |
185 qApp->processEvents(); |
172 |
186 |
173 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
187 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
174 QTRY_VERIFY(gridview != 0); |
188 QTRY_VERIFY(gridview != 0); |
175 |
189 |
176 QDeclarativeItem *viewport = gridview->viewport(); |
190 QDeclarativeItem *contentItem = gridview->contentItem(); |
177 QTRY_VERIFY(viewport != 0); |
191 QTRY_VERIFY(contentItem != 0); |
178 |
192 |
179 QTRY_COMPARE(gridview->count(), model.count()); |
193 QTRY_COMPARE(gridview->count(), model.count()); |
180 QTRY_COMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item |
194 QTRY_COMPARE(contentItem->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item |
181 |
195 |
182 for (int i = 0; i < model.count(); ++i) { |
196 for (int i = 0; i < model.count(); ++i) { |
183 QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", i); |
197 QDeclarativeText *name = findItem<QDeclarativeText>(contentItem, "textName", i); |
184 QTRY_VERIFY(name != 0); |
198 QTRY_VERIFY(name != 0); |
185 QTRY_COMPARE(name->text(), model.name(i)); |
199 QTRY_COMPARE(name->text(), model.name(i)); |
186 QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", i); |
200 QDeclarativeText *number = findItem<QDeclarativeText>(contentItem, "textNumber", i); |
187 QTRY_VERIFY(number != 0); |
201 QTRY_VERIFY(number != 0); |
188 QTRY_COMPARE(number->text(), model.number(i)); |
202 QTRY_COMPARE(number->text(), model.number(i)); |
189 } |
203 } |
190 |
204 |
191 // set an empty model and confirm that items are destroyed |
205 // set an empty model and confirm that items are destroyed |
192 TestModel model2; |
206 TestModel model2; |
193 ctxt->setContextProperty("testModel", &model2); |
207 ctxt->setContextProperty("testModel", &model2); |
194 |
208 |
195 int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); |
209 int itemCount = findItems<QDeclarativeItem>(contentItem, "wrapper").count(); |
196 QTRY_VERIFY(itemCount == 0); |
210 QTRY_VERIFY(itemCount == 0); |
197 |
211 |
198 delete canvas; |
212 delete canvas; |
199 } |
213 } |
200 |
214 |
219 qApp->processEvents(); |
233 qApp->processEvents(); |
220 |
234 |
221 QDeclarativeFlickable *gridview = findItem<QDeclarativeFlickable>(canvas->rootObject(), "grid"); |
235 QDeclarativeFlickable *gridview = findItem<QDeclarativeFlickable>(canvas->rootObject(), "grid"); |
222 QTRY_VERIFY(gridview != 0); |
236 QTRY_VERIFY(gridview != 0); |
223 |
237 |
224 QDeclarativeItem *viewport = gridview->viewport(); |
238 QDeclarativeItem *contentItem = gridview->contentItem(); |
225 QTRY_VERIFY(viewport != 0); |
239 QTRY_VERIFY(contentItem != 0); |
226 |
240 |
227 model.modifyItem(1, "Will", "9876"); |
241 model.modifyItem(1, "Will", "9876"); |
228 QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", 1); |
242 QDeclarativeText *name = findItem<QDeclarativeText>(contentItem, "textName", 1); |
229 QTRY_VERIFY(name != 0); |
243 QTRY_VERIFY(name != 0); |
230 QTRY_COMPARE(name->text(), model.name(1)); |
244 QTRY_COMPARE(name->text(), model.name(1)); |
231 QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", 1); |
245 QDeclarativeText *number = findItem<QDeclarativeText>(contentItem, "textNumber", 1); |
232 QTRY_VERIFY(number != 0); |
246 QTRY_VERIFY(number != 0); |
233 QTRY_COMPARE(number->text(), model.number(1)); |
247 QTRY_COMPARE(number->text(), model.number(1)); |
234 |
248 |
235 delete canvas; |
249 delete canvas; |
236 } |
250 } |
252 qApp->processEvents(); |
266 qApp->processEvents(); |
253 |
267 |
254 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
268 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
255 QTRY_VERIFY(gridview != 0); |
269 QTRY_VERIFY(gridview != 0); |
256 |
270 |
257 QDeclarativeItem *viewport = gridview->viewport(); |
271 QDeclarativeItem *contentItem = gridview->contentItem(); |
258 QTRY_VERIFY(viewport != 0); |
272 QTRY_VERIFY(contentItem != 0); |
259 |
273 |
260 model.insertItem(1, "Will", "9876"); |
274 model.insertItem(1, "Will", "9876"); |
261 |
275 |
262 QTRY_COMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item |
276 QTRY_COMPARE(contentItem->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item |
263 |
277 |
264 QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", 1); |
278 QDeclarativeText *name = findItem<QDeclarativeText>(contentItem, "textName", 1); |
265 QTRY_VERIFY(name != 0); |
279 QTRY_VERIFY(name != 0); |
266 QTRY_COMPARE(name->text(), model.name(1)); |
280 QTRY_COMPARE(name->text(), model.name(1)); |
267 QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", 1); |
281 QDeclarativeText *number = findItem<QDeclarativeText>(contentItem, "textNumber", 1); |
268 QTRY_VERIFY(number != 0); |
282 QTRY_VERIFY(number != 0); |
269 QTRY_COMPARE(number->text(), model.number(1)); |
283 QTRY_COMPARE(number->text(), model.number(1)); |
270 |
284 |
271 // Checks that onAdd is called |
285 // Checks that onAdd is called |
272 int added = canvas->rootObject()->property("added").toInt(); |
286 int added = canvas->rootObject()->property("added").toInt(); |
273 QTRY_COMPARE(added, 1); |
287 QTRY_COMPARE(added, 1); |
274 |
288 |
275 // Confirm items positioned correctly |
289 // Confirm items positioned correctly |
276 for (int i = 0; i < model.count(); ++i) { |
290 for (int i = 0; i < model.count(); ++i) { |
277 QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); |
291 QDeclarativeItem *item = findItem<QDeclarativeItem>(contentItem, "wrapper", i); |
278 QTRY_COMPARE(item->x(), (i%3)*80.0); |
292 QTRY_COMPARE(item->x(), (i%3)*80.0); |
279 QTRY_COMPARE(item->y(), (i/3)*60.0); |
293 QTRY_COMPARE(item->y(), (i/3)*60.0); |
280 } |
294 } |
281 |
295 |
282 model.insertItem(0, "Foo", "1111"); // zero index, and current item |
296 model.insertItem(0, "Foo", "1111"); // zero index, and current item |
283 |
297 |
284 QTRY_COMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item |
298 QTRY_COMPARE(contentItem->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item |
285 |
299 |
286 name = findItem<QDeclarativeText>(viewport, "textName", 0); |
300 name = findItem<QDeclarativeText>(contentItem, "textName", 0); |
287 QTRY_VERIFY(name != 0); |
301 QTRY_VERIFY(name != 0); |
288 QTRY_COMPARE(name->text(), model.name(0)); |
302 QTRY_COMPARE(name->text(), model.name(0)); |
289 number = findItem<QDeclarativeText>(viewport, "textNumber", 0); |
303 number = findItem<QDeclarativeText>(contentItem, "textNumber", 0); |
290 QTRY_VERIFY(number != 0); |
304 QTRY_VERIFY(number != 0); |
291 QTRY_COMPARE(number->text(), model.number(0)); |
305 QTRY_COMPARE(number->text(), model.number(0)); |
292 |
306 |
293 QTRY_COMPARE(gridview->currentIndex(), 1); |
307 QTRY_COMPARE(gridview->currentIndex(), 1); |
294 |
308 |
295 // Confirm items positioned correctly |
309 // Confirm items positioned correctly |
296 for (int i = 0; i < model.count(); ++i) { |
310 for (int i = 0; i < model.count(); ++i) { |
297 QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); |
311 QDeclarativeItem *item = findItem<QDeclarativeItem>(contentItem, "wrapper", i); |
298 QTRY_VERIFY(item->x() == (i%3)*80); |
312 QTRY_VERIFY(item->x() == (i%3)*80); |
299 QTRY_VERIFY(item->y() == (i/3)*60); |
313 QTRY_VERIFY(item->y() == (i/3)*60); |
300 } |
314 } |
301 |
315 |
302 for (int i = model.count(); i < 30; ++i) |
316 for (int i = model.count(); i < 30; ++i) |
328 qApp->processEvents(); |
342 qApp->processEvents(); |
329 |
343 |
330 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
344 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
331 QTRY_VERIFY(gridview != 0); |
345 QTRY_VERIFY(gridview != 0); |
332 |
346 |
333 QDeclarativeItem *viewport = gridview->viewport(); |
347 QDeclarativeItem *contentItem = gridview->contentItem(); |
334 QTRY_VERIFY(viewport != 0); |
348 QTRY_VERIFY(contentItem != 0); |
335 |
349 |
336 model.removeItem(1); |
350 model.removeItem(1); |
337 |
351 |
338 QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", 1); |
352 QDeclarativeText *name = findItem<QDeclarativeText>(contentItem, "textName", 1); |
339 QTRY_VERIFY(name != 0); |
353 QTRY_VERIFY(name != 0); |
340 QTRY_COMPARE(name->text(), model.name(1)); |
354 QTRY_COMPARE(name->text(), model.name(1)); |
341 QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", 1); |
355 QDeclarativeText *number = findItem<QDeclarativeText>(contentItem, "textNumber", 1); |
342 QTRY_VERIFY(number != 0); |
356 QTRY_VERIFY(number != 0); |
343 QTRY_COMPARE(number->text(), model.number(1)); |
357 QTRY_COMPARE(number->text(), model.number(1)); |
344 |
358 |
345 // Checks that onRemove is called |
359 // Checks that onRemove is called |
346 QString removed = canvas->rootObject()->property("removed").toString(); |
360 QString removed = canvas->rootObject()->property("removed").toString(); |
347 QTRY_COMPARE(removed, QString("Item1")); |
361 QTRY_COMPARE(removed, QString("Item1")); |
348 |
362 |
349 // Confirm items positioned correctly |
363 // Confirm items positioned correctly |
350 int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); |
364 int itemCount = findItems<QDeclarativeItem>(contentItem, "wrapper").count(); |
351 for (int i = 0; i < model.count() && i < itemCount; ++i) { |
365 for (int i = 0; i < model.count() && i < itemCount; ++i) { |
352 QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); |
366 QDeclarativeItem *item = findItem<QDeclarativeItem>(contentItem, "wrapper", i); |
353 if (!item) qWarning() << "Item" << i << "not found"; |
367 if (!item) qWarning() << "Item" << i << "not found"; |
354 QTRY_VERIFY(item); |
368 QTRY_VERIFY(item); |
355 QTRY_VERIFY(item->x() == (i%3)*80); |
369 QTRY_VERIFY(item->x() == (i%3)*80); |
356 QTRY_VERIFY(item->y() == (i/3)*60); |
370 QTRY_VERIFY(item->y() == (i/3)*60); |
357 } |
371 } |
358 |
372 |
359 // Remove first item (which is the current item); |
373 // Remove first item (which is the current item); |
360 model.removeItem(0); |
374 model.removeItem(0); |
361 |
375 |
362 name = findItem<QDeclarativeText>(viewport, "textName", 0); |
376 name = findItem<QDeclarativeText>(contentItem, "textName", 0); |
363 QTRY_VERIFY(name != 0); |
377 QTRY_VERIFY(name != 0); |
364 QTRY_COMPARE(name->text(), model.name(0)); |
378 QTRY_COMPARE(name->text(), model.name(0)); |
365 number = findItem<QDeclarativeText>(viewport, "textNumber", 0); |
379 number = findItem<QDeclarativeText>(contentItem, "textNumber", 0); |
366 QTRY_VERIFY(number != 0); |
380 QTRY_VERIFY(number != 0); |
367 QTRY_COMPARE(number->text(), model.number(0)); |
381 QTRY_COMPARE(number->text(), model.number(0)); |
368 |
382 |
369 // Confirm items positioned correctly |
383 // Confirm items positioned correctly |
370 itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); |
384 itemCount = findItems<QDeclarativeItem>(contentItem, "wrapper").count(); |
371 for (int i = 0; i < model.count() && i < itemCount; ++i) { |
385 for (int i = 0; i < model.count() && i < itemCount; ++i) { |
372 QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); |
386 QDeclarativeItem *item = findItem<QDeclarativeItem>(contentItem, "wrapper", i); |
373 if (!item) qWarning() << "Item" << i << "not found"; |
387 if (!item) qWarning() << "Item" << i << "not found"; |
374 QTRY_VERIFY(item); |
388 QTRY_VERIFY(item); |
375 QTRY_VERIFY(item->x() == (i%3)*80); |
389 QTRY_VERIFY(item->x() == (i%3)*80); |
376 QTRY_VERIFY(item->y() == (i/3)*60); |
390 QTRY_VERIFY(item->y() == (i/3)*60); |
377 } |
391 } |
378 |
392 |
379 // Remove items not visible |
393 // Remove items not visible |
380 model.removeItem(25); |
394 model.removeItem(25); |
381 |
395 |
382 // Confirm items positioned correctly |
396 // Confirm items positioned correctly |
383 itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); |
397 itemCount = findItems<QDeclarativeItem>(contentItem, "wrapper").count(); |
384 for (int i = 0; i < model.count() && i < itemCount; ++i) { |
398 for (int i = 0; i < model.count() && i < itemCount; ++i) { |
385 QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); |
399 QDeclarativeItem *item = findItem<QDeclarativeItem>(contentItem, "wrapper", i); |
386 if (!item) qWarning() << "Item" << i << "not found"; |
400 if (!item) qWarning() << "Item" << i << "not found"; |
387 QTRY_VERIFY(item); |
401 QTRY_VERIFY(item); |
388 QTRY_VERIFY(item->x() == (i%3)*80); |
402 QTRY_VERIFY(item->x() == (i%3)*80); |
389 QTRY_VERIFY(item->y() == (i/3)*60); |
403 QTRY_VERIFY(item->y() == (i/3)*60); |
390 } |
404 } |
471 qApp->processEvents(); |
485 qApp->processEvents(); |
472 |
486 |
473 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
487 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
474 QTRY_VERIFY(gridview != 0); |
488 QTRY_VERIFY(gridview != 0); |
475 |
489 |
476 QDeclarativeItem *viewport = gridview->viewport(); |
490 QDeclarativeItem *contentItem = gridview->contentItem(); |
477 QTRY_VERIFY(viewport != 0); |
491 QTRY_VERIFY(contentItem != 0); |
478 |
492 |
479 model.moveItem(1, 8); |
493 model.moveItem(1, 8); |
480 |
494 |
481 QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", 1); |
495 QDeclarativeText *name = findItem<QDeclarativeText>(contentItem, "textName", 1); |
482 QTRY_VERIFY(name != 0); |
496 QTRY_VERIFY(name != 0); |
483 QTRY_COMPARE(name->text(), model.name(1)); |
497 QTRY_COMPARE(name->text(), model.name(1)); |
484 QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", 1); |
498 QDeclarativeText *number = findItem<QDeclarativeText>(contentItem, "textNumber", 1); |
485 QTRY_VERIFY(number != 0); |
499 QTRY_VERIFY(number != 0); |
486 QTRY_COMPARE(number->text(), model.number(1)); |
500 QTRY_COMPARE(number->text(), model.number(1)); |
487 |
501 |
488 name = findItem<QDeclarativeText>(viewport, "textName", 8); |
502 name = findItem<QDeclarativeText>(contentItem, "textName", 8); |
489 QTRY_VERIFY(name != 0); |
503 QTRY_VERIFY(name != 0); |
490 QTRY_COMPARE(name->text(), model.name(8)); |
504 QTRY_COMPARE(name->text(), model.name(8)); |
491 number = findItem<QDeclarativeText>(viewport, "textNumber", 8); |
505 number = findItem<QDeclarativeText>(contentItem, "textNumber", 8); |
492 QTRY_VERIFY(number != 0); |
506 QTRY_VERIFY(number != 0); |
493 QTRY_COMPARE(number->text(), model.number(8)); |
507 QTRY_COMPARE(number->text(), model.number(8)); |
494 |
508 |
495 // Confirm items positioned correctly |
509 // Confirm items positioned correctly |
496 int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); |
510 int itemCount = findItems<QDeclarativeItem>(contentItem, "wrapper").count(); |
497 for (int i = 0; i < model.count() && i < itemCount; ++i) { |
511 for (int i = 0; i < model.count() && i < itemCount; ++i) { |
498 QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); |
512 QDeclarativeItem *item = findItem<QDeclarativeItem>(contentItem, "wrapper", i); |
499 if (!item) qWarning() << "Item" << i << "not found"; |
513 if (!item) qWarning() << "Item" << i << "not found"; |
500 QTRY_VERIFY(item); |
514 QTRY_VERIFY(item); |
501 QTRY_VERIFY(item->x() == (i%3)*80); |
515 QTRY_VERIFY(item->x() == (i%3)*80); |
502 QTRY_VERIFY(item->y() == (i/3)*60); |
516 QTRY_VERIFY(item->y() == (i/3)*60); |
503 } |
517 } |
506 |
520 |
507 // move outside visible area |
521 // move outside visible area |
508 model.moveItem(1, 25); |
522 model.moveItem(1, 25); |
509 |
523 |
510 // Confirm items positioned correctly and indexes correct |
524 // Confirm items positioned correctly and indexes correct |
511 itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count()-1; |
525 itemCount = findItems<QDeclarativeItem>(contentItem, "wrapper").count()-1; |
512 for (int i = 6; i < model.count()-6 && i < itemCount+6; ++i) { |
526 for (int i = 6; i < model.count()-6 && i < itemCount+6; ++i) { |
513 QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); |
527 QDeclarativeItem *item = findItem<QDeclarativeItem>(contentItem, "wrapper", i); |
514 if (!item) qWarning() << "Item" << i << "not found"; |
528 if (!item) qWarning() << "Item" << i << "not found"; |
515 QTRY_VERIFY(item); |
529 QTRY_VERIFY(item); |
516 QTRY_COMPARE(item->x(), qreal((i%3)*80)); |
530 QTRY_COMPARE(item->x(), qreal((i%3)*80)); |
517 QTRY_COMPARE(item->y(), qreal((i/3)*60)); |
531 QTRY_COMPARE(item->y(), qreal((i/3)*60)); |
518 name = findItem<QDeclarativeText>(viewport, "textName", i); |
532 name = findItem<QDeclarativeText>(contentItem, "textName", i); |
519 QTRY_VERIFY(name != 0); |
533 QTRY_VERIFY(name != 0); |
520 QTRY_COMPARE(name->text(), model.name(i)); |
534 QTRY_COMPARE(name->text(), model.name(i)); |
521 number = findItem<QDeclarativeText>(viewport, "textNumber", i); |
535 number = findItem<QDeclarativeText>(contentItem, "textNumber", i); |
522 QTRY_VERIFY(number != 0); |
536 QTRY_VERIFY(number != 0); |
523 QTRY_COMPARE(number->text(), model.number(i)); |
537 QTRY_COMPARE(number->text(), model.number(i)); |
524 } |
538 } |
525 |
539 |
526 // move from outside visible into visible |
540 // move from outside visible into visible |
527 model.moveItem(28, 8); |
541 model.moveItem(28, 8); |
528 |
542 |
529 // Confirm items positioned correctly and indexes correct |
543 // Confirm items positioned correctly and indexes correct |
530 for (int i = 6; i < model.count()-6 && i < itemCount+6; ++i) { |
544 for (int i = 6; i < model.count()-6 && i < itemCount+6; ++i) { |
531 QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); |
545 QDeclarativeItem *item = findItem<QDeclarativeItem>(contentItem, "wrapper", i); |
532 if (!item) qWarning() << "Item" << i << "not found"; |
546 if (!item) qWarning() << "Item" << i << "not found"; |
533 QTRY_VERIFY(item); |
547 QTRY_VERIFY(item); |
534 QTRY_VERIFY(item->x() == (i%3)*80); |
548 QTRY_VERIFY(item->x() == (i%3)*80); |
535 QTRY_VERIFY(item->y() == (i/3)*60); |
549 QTRY_VERIFY(item->y() == (i/3)*60); |
536 name = findItem<QDeclarativeText>(viewport, "textName", i); |
550 name = findItem<QDeclarativeText>(contentItem, "textName", i); |
537 QTRY_VERIFY(name != 0); |
551 QTRY_VERIFY(name != 0); |
538 QTRY_COMPARE(name->text(), model.name(i)); |
552 QTRY_COMPARE(name->text(), model.name(i)); |
539 number = findItem<QDeclarativeText>(viewport, "textNumber", i); |
553 number = findItem<QDeclarativeText>(contentItem, "textNumber", i); |
540 QTRY_VERIFY(number != 0); |
554 QTRY_VERIFY(number != 0); |
541 QTRY_COMPARE(number->text(), model.number(i)); |
555 QTRY_COMPARE(number->text(), model.number(i)); |
542 } |
556 } |
543 |
557 |
544 // ensure content position is stable |
558 // ensure content position is stable |
565 canvas->setSource(QUrl::fromLocalFile(filename)); |
579 canvas->setSource(QUrl::fromLocalFile(filename)); |
566 |
580 |
567 qApp->processEvents(); |
581 qApp->processEvents(); |
568 |
582 |
569 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
583 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
570 QTRY_VERIFY(gridview != 0); |
584 QVERIFY(gridview != 0); |
571 |
585 |
572 QDeclarativeItem *viewport = gridview->viewport(); |
586 QDeclarativeItem *contentItem = gridview->contentItem(); |
573 QTRY_VERIFY(viewport != 0); |
587 QVERIFY(contentItem != 0); |
574 |
588 |
575 // current item should be third item |
589 // current item should be third item |
576 QTRY_COMPARE(gridview->currentIndex(), 5); |
590 QCOMPARE(gridview->currentIndex(), 35); |
577 QTRY_COMPARE(gridview->currentItem(), findItem<QDeclarativeItem>(viewport, "wrapper", 5)); |
591 QCOMPARE(gridview->currentItem(), findItem<QDeclarativeItem>(contentItem, "wrapper", 35)); |
578 QTRY_COMPARE(gridview->currentItem()->y(), gridview->highlightItem()->y()); |
592 QCOMPARE(gridview->currentItem()->y(), gridview->highlightItem()->y()); |
|
593 QCOMPARE(gridview->contentY(), 399.0); |
579 |
594 |
580 gridview->moveCurrentIndexRight(); |
595 gridview->moveCurrentIndexRight(); |
581 QTRY_COMPARE(gridview->currentIndex(), 6); |
596 QCOMPARE(gridview->currentIndex(), 36); |
582 gridview->moveCurrentIndexDown(); |
597 gridview->moveCurrentIndexDown(); |
583 QTRY_COMPARE(gridview->currentIndex(), 9); |
598 QCOMPARE(gridview->currentIndex(), 39); |
584 gridview->moveCurrentIndexUp(); |
599 gridview->moveCurrentIndexUp(); |
585 QTRY_COMPARE(gridview->currentIndex(), 6); |
600 QCOMPARE(gridview->currentIndex(), 36); |
586 gridview->moveCurrentIndexLeft(); |
601 gridview->moveCurrentIndexLeft(); |
587 QTRY_COMPARE(gridview->currentIndex(), 5); |
602 QCOMPARE(gridview->currentIndex(), 35); |
588 |
603 |
589 // no wrap |
604 // no wrap |
590 gridview->setCurrentIndex(0); |
605 gridview->setCurrentIndex(0); |
591 QTRY_COMPARE(gridview->currentIndex(), 0); |
606 QCOMPARE(gridview->currentIndex(), 0); |
592 |
607 |
593 gridview->moveCurrentIndexUp(); |
608 gridview->moveCurrentIndexUp(); |
594 QTRY_COMPARE(gridview->currentIndex(), 0); |
609 QCOMPARE(gridview->currentIndex(), 0); |
595 |
610 |
596 gridview->moveCurrentIndexLeft(); |
611 gridview->moveCurrentIndexLeft(); |
597 QTRY_COMPARE(gridview->currentIndex(), 0); |
612 QCOMPARE(gridview->currentIndex(), 0); |
598 |
613 |
599 gridview->setCurrentIndex(model.count()-1); |
614 gridview->setCurrentIndex(model.count()-1); |
600 QTRY_COMPARE(gridview->currentIndex(), model.count()-1); |
615 QCOMPARE(gridview->currentIndex(), model.count()-1); |
601 |
616 |
602 gridview->moveCurrentIndexRight(); |
617 gridview->moveCurrentIndexRight(); |
603 QTRY_COMPARE(gridview->currentIndex(), model.count()-1); |
618 QCOMPARE(gridview->currentIndex(), model.count()-1); |
604 |
619 |
605 gridview->moveCurrentIndexDown(); |
620 gridview->moveCurrentIndexDown(); |
606 QTRY_COMPARE(gridview->currentIndex(), model.count()-1); |
621 QCOMPARE(gridview->currentIndex(), model.count()-1); |
607 |
622 |
608 // with wrap |
623 // with wrap |
609 gridview->setWrapEnabled(true); |
624 gridview->setWrapEnabled(true); |
610 |
625 |
611 gridview->setCurrentIndex(0); |
626 gridview->setCurrentIndex(0); |
612 QTRY_COMPARE(gridview->currentIndex(), 0); |
627 QCOMPARE(gridview->currentIndex(), 0); |
613 |
628 |
614 gridview->moveCurrentIndexLeft(); |
629 gridview->moveCurrentIndexLeft(); |
615 QTRY_COMPARE(gridview->currentIndex(), model.count()-1); |
630 QCOMPARE(gridview->currentIndex(), model.count()-1); |
616 |
631 |
617 QTRY_COMPARE(gridview->contentY(), 279.0); |
632 QTRY_COMPARE(gridview->contentY(), 879.0); |
618 |
633 |
619 gridview->moveCurrentIndexRight(); |
634 gridview->moveCurrentIndexRight(); |
620 QTRY_COMPARE(gridview->currentIndex(), 0); |
635 QCOMPARE(gridview->currentIndex(), 0); |
621 |
636 |
622 QTRY_COMPARE(gridview->contentY(), 0.0); |
637 QTRY_COMPARE(gridview->contentY(), 0.0); |
623 |
638 |
624 // Test keys |
639 // Test keys |
625 canvas->show(); |
640 canvas->show(); |
631 QTRY_VERIFY(canvas->hasFocus()); |
646 QTRY_VERIFY(canvas->hasFocus()); |
632 QTRY_VERIFY(canvas->scene()->hasFocus()); |
647 QTRY_VERIFY(canvas->scene()->hasFocus()); |
633 qApp->processEvents(); |
648 qApp->processEvents(); |
634 |
649 |
635 QTest::keyClick(canvas, Qt::Key_Down); |
650 QTest::keyClick(canvas, Qt::Key_Down); |
636 QTRY_COMPARE(gridview->currentIndex(), 3); |
651 QCOMPARE(gridview->currentIndex(), 3); |
637 |
652 |
638 QTest::keyClick(canvas, Qt::Key_Up); |
653 QTest::keyClick(canvas, Qt::Key_Up); |
639 QTRY_COMPARE(gridview->currentIndex(), 0); |
654 QCOMPARE(gridview->currentIndex(), 0); |
640 |
655 |
641 gridview->setFlow(QDeclarativeGridView::TopToBottom); |
656 gridview->setFlow(QDeclarativeGridView::TopToBottom); |
642 |
657 |
643 QTest::keyClick(canvas, Qt::Key_Right); |
658 QTest::keyClick(canvas, Qt::Key_Right); |
644 QTRY_COMPARE(gridview->currentIndex(), 5); |
659 QCOMPARE(gridview->currentIndex(), 5); |
645 |
660 |
646 QTest::keyClick(canvas, Qt::Key_Left); |
661 QTest::keyClick(canvas, Qt::Key_Left); |
647 QTRY_COMPARE(gridview->currentIndex(), 0); |
662 QCOMPARE(gridview->currentIndex(), 0); |
648 |
663 |
649 QTest::keyClick(canvas, Qt::Key_Down); |
664 QTest::keyClick(canvas, Qt::Key_Down); |
650 QTRY_COMPARE(gridview->currentIndex(), 1); |
665 QCOMPARE(gridview->currentIndex(), 1); |
651 |
666 |
652 QTest::keyClick(canvas, Qt::Key_Up); |
667 QTest::keyClick(canvas, Qt::Key_Up); |
653 QTRY_COMPARE(gridview->currentIndex(), 0); |
668 QCOMPARE(gridview->currentIndex(), 0); |
654 |
669 |
655 |
670 |
656 // turn off auto highlight |
671 // turn off auto highlight |
657 gridview->setHighlightFollowsCurrentItem(false); |
672 gridview->setHighlightFollowsCurrentItem(false); |
658 QTRY_VERIFY(gridview->highlightFollowsCurrentItem() == false); |
673 QVERIFY(gridview->highlightFollowsCurrentItem() == false); |
659 QTRY_VERIFY(gridview->highlightItem()); |
674 QVERIFY(gridview->highlightItem()); |
660 qreal hlPosX = gridview->highlightItem()->x(); |
675 qreal hlPosX = gridview->highlightItem()->x(); |
661 qreal hlPosY = gridview->highlightItem()->y(); |
676 qreal hlPosY = gridview->highlightItem()->y(); |
662 |
677 |
663 gridview->setCurrentIndex(5); |
678 gridview->setCurrentIndex(5); |
664 QTRY_COMPARE(gridview->highlightItem()->x(), hlPosX); |
679 QTRY_COMPARE(gridview->highlightItem()->x(), hlPosX); |
688 qApp->processEvents(); |
703 qApp->processEvents(); |
689 |
704 |
690 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
705 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
691 QTRY_VERIFY(gridview != 0); |
706 QTRY_VERIFY(gridview != 0); |
692 |
707 |
693 QDeclarativeItem *viewport = gridview->viewport(); |
708 QDeclarativeItem *contentItem = gridview->contentItem(); |
694 QTRY_VERIFY(viewport != 0); |
709 QTRY_VERIFY(contentItem != 0); |
695 |
710 |
696 // Confirm items positioned correctly and indexes correct |
711 // Confirm items positioned correctly and indexes correct |
697 int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); |
712 int itemCount = findItems<QDeclarativeItem>(contentItem, "wrapper").count(); |
698 for (int i = 0; i < model.count() && i < itemCount; ++i) { |
713 for (int i = 0; i < model.count() && i < itemCount; ++i) { |
699 QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); |
714 QDeclarativeItem *item = findItem<QDeclarativeItem>(contentItem, "wrapper", i); |
700 if (!item) qWarning() << "Item" << i << "not found"; |
715 if (!item) qWarning() << "Item" << i << "not found"; |
701 QTRY_VERIFY(item); |
716 QTRY_VERIFY(item); |
702 QTRY_COMPARE(item->x(), qreal((i%3)*80)); |
717 QTRY_COMPARE(item->x(), qreal((i%3)*80)); |
703 QTRY_COMPARE(item->y(), qreal((i/3)*60)); |
718 QTRY_COMPARE(item->y(), qreal((i/3)*60)); |
704 QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", i); |
719 QDeclarativeText *name = findItem<QDeclarativeText>(contentItem, "textName", i); |
705 QTRY_VERIFY(name != 0); |
720 QTRY_VERIFY(name != 0); |
706 QTRY_COMPARE(name->text(), model.name(i)); |
721 QTRY_COMPARE(name->text(), model.name(i)); |
707 QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", i); |
722 QDeclarativeText *number = findItem<QDeclarativeText>(contentItem, "textNumber", i); |
708 QTRY_VERIFY(number != 0); |
723 QTRY_VERIFY(number != 0); |
709 QTRY_COMPARE(number->text(), model.number(i)); |
724 QTRY_COMPARE(number->text(), model.number(i)); |
710 } |
725 } |
711 |
726 |
712 ctxt->setContextProperty("testTopToBottom", QVariant(true)); |
727 ctxt->setContextProperty("testTopToBottom", QVariant(true)); |
713 |
728 |
714 // Confirm items positioned correctly and indexes correct |
729 // Confirm items positioned correctly and indexes correct |
715 itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); |
730 itemCount = findItems<QDeclarativeItem>(contentItem, "wrapper").count(); |
716 for (int i = 0; i < model.count() && i < itemCount; ++i) { |
731 for (int i = 0; i < model.count() && i < itemCount; ++i) { |
717 QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); |
732 QDeclarativeItem *item = findItem<QDeclarativeItem>(contentItem, "wrapper", i); |
718 if (!item) qWarning() << "Item" << i << "not found"; |
733 if (!item) qWarning() << "Item" << i << "not found"; |
719 QTRY_VERIFY(item); |
734 QTRY_VERIFY(item); |
720 QTRY_COMPARE(item->x(), qreal((i/5)*80)); |
735 QTRY_COMPARE(item->x(), qreal((i/5)*80)); |
721 QTRY_COMPARE(item->y(), qreal((i%5)*60)); |
736 QTRY_COMPARE(item->y(), qreal((i%5)*60)); |
722 QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", i); |
737 QDeclarativeText *name = findItem<QDeclarativeText>(contentItem, "textName", i); |
723 QTRY_VERIFY(name != 0); |
738 QTRY_VERIFY(name != 0); |
724 QTRY_COMPARE(name->text(), model.name(i)); |
739 QTRY_COMPARE(name->text(), model.name(i)); |
725 QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", i); |
740 QDeclarativeText *number = findItem<QDeclarativeText>(contentItem, "textNumber", i); |
726 QTRY_VERIFY(number != 0); |
741 QTRY_VERIFY(number != 0); |
727 QTRY_COMPARE(number->text(), model.number(i)); |
742 QTRY_COMPARE(number->text(), model.number(i)); |
728 } |
743 } |
729 |
744 |
730 delete canvas; |
745 delete canvas; |
831 QDeclarativeComponent delegateComponent(canvas->engine()); |
846 QDeclarativeComponent delegateComponent(canvas->engine()); |
832 delegateComponent.setData("import Qt 4.7; Text { text: '<b>Name:</b> ' + name }", QUrl::fromLocalFile("")); |
847 delegateComponent.setData("import Qt 4.7; Text { text: '<b>Name:</b> ' + name }", QUrl::fromLocalFile("")); |
833 |
848 |
834 QSignalSpy highlightSpy(gridView, SIGNAL(highlightChanged())); |
849 QSignalSpy highlightSpy(gridView, SIGNAL(highlightChanged())); |
835 QSignalSpy delegateSpy(gridView, SIGNAL(delegateChanged())); |
850 QSignalSpy delegateSpy(gridView, SIGNAL(delegateChanged())); |
|
851 QSignalSpy headerSpy(gridView, SIGNAL(headerChanged())); |
|
852 QSignalSpy footerSpy(gridView, SIGNAL(footerChanged())); |
836 |
853 |
837 gridView->setHighlight(&component); |
854 gridView->setHighlight(&component); |
838 gridView->setDelegate(&delegateComponent); |
855 gridView->setDelegate(&delegateComponent); |
|
856 gridView->setHeader(&component); |
|
857 gridView->setFooter(&component); |
839 |
858 |
840 QTRY_COMPARE(gridView->highlight(), &component); |
859 QTRY_COMPARE(gridView->highlight(), &component); |
841 QTRY_COMPARE(gridView->delegate(), &delegateComponent); |
860 QTRY_COMPARE(gridView->delegate(), &delegateComponent); |
|
861 QTRY_COMPARE(gridView->header(), &component); |
|
862 QTRY_COMPARE(gridView->footer(), &component); |
842 |
863 |
843 QTRY_COMPARE(highlightSpy.count(),1); |
864 QTRY_COMPARE(highlightSpy.count(),1); |
844 QTRY_COMPARE(delegateSpy.count(),1); |
865 QTRY_COMPARE(delegateSpy.count(),1); |
|
866 QTRY_COMPARE(headerSpy.count(),1); |
|
867 QTRY_COMPARE(footerSpy.count(),1); |
845 |
868 |
846 gridView->setHighlight(&component); |
869 gridView->setHighlight(&component); |
847 gridView->setDelegate(&delegateComponent); |
870 gridView->setDelegate(&delegateComponent); |
|
871 gridView->setHeader(&component); |
|
872 gridView->setFooter(&component); |
848 |
873 |
849 QTRY_COMPARE(highlightSpy.count(),1); |
874 QTRY_COMPARE(highlightSpy.count(),1); |
850 QTRY_COMPARE(delegateSpy.count(),1); |
875 QTRY_COMPARE(delegateSpy.count(),1); |
|
876 QTRY_COMPARE(headerSpy.count(),1); |
|
877 QTRY_COMPARE(footerSpy.count(),1); |
|
878 |
851 delete canvas; |
879 delete canvas; |
852 } |
880 } |
853 |
881 |
854 void tst_QDeclarativeGridView::modelChanges() |
882 void tst_QDeclarativeGridView::modelChanges() |
855 { |
883 { |
893 qApp->processEvents(); |
921 qApp->processEvents(); |
894 |
922 |
895 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
923 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
896 QTRY_VERIFY(gridview != 0); |
924 QTRY_VERIFY(gridview != 0); |
897 |
925 |
898 QDeclarativeItem *viewport = gridview->viewport(); |
926 QDeclarativeItem *contentItem = gridview->contentItem(); |
899 QTRY_VERIFY(viewport != 0); |
927 QTRY_VERIFY(contentItem != 0); |
900 |
928 |
901 // Confirm items positioned correctly |
929 // Confirm items positioned correctly |
902 int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); |
930 int itemCount = findItems<QDeclarativeItem>(contentItem, "wrapper").count(); |
903 for (int i = 0; i < model.count() && i < itemCount-1; ++i) { |
931 for (int i = 0; i < model.count() && i < itemCount-1; ++i) { |
904 QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); |
932 QDeclarativeItem *item = findItem<QDeclarativeItem>(contentItem, "wrapper", i); |
905 if (!item) qWarning() << "Item" << i << "not found"; |
933 if (!item) qWarning() << "Item" << i << "not found"; |
906 QTRY_VERIFY(item); |
934 QTRY_VERIFY(item); |
907 QTRY_COMPARE(item->x(), (i%3)*80.); |
935 QTRY_COMPARE(item->x(), (i%3)*80.); |
908 QTRY_COMPARE(item->y(), (i/3)*60.); |
936 QTRY_COMPARE(item->y(), (i/3)*60.); |
909 } |
937 } |
911 // Position on a currently visible item |
939 // Position on a currently visible item |
912 gridview->positionViewAtIndex(4, QDeclarativeGridView::Beginning); |
940 gridview->positionViewAtIndex(4, QDeclarativeGridView::Beginning); |
913 QTRY_COMPARE(gridview->contentY(), 60.); |
941 QTRY_COMPARE(gridview->contentY(), 60.); |
914 |
942 |
915 // Confirm items positioned correctly |
943 // Confirm items positioned correctly |
916 itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); |
944 itemCount = findItems<QDeclarativeItem>(contentItem, "wrapper").count(); |
917 for (int i = 3; i < model.count() && i < itemCount-3-1; ++i) { |
945 for (int i = 3; i < model.count() && i < itemCount-3-1; ++i) { |
918 QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); |
946 QDeclarativeItem *item = findItem<QDeclarativeItem>(contentItem, "wrapper", i); |
919 if (!item) qWarning() << "Item" << i << "not found"; |
947 if (!item) qWarning() << "Item" << i << "not found"; |
920 QTRY_VERIFY(item); |
948 QTRY_VERIFY(item); |
921 QTRY_COMPARE(item->x(), (i%3)*80.); |
949 QTRY_COMPARE(item->x(), (i%3)*80.); |
922 QTRY_COMPARE(item->y(), (i/3)*60.); |
950 QTRY_COMPARE(item->y(), (i/3)*60.); |
923 } |
951 } |
925 // Position on an item beyond the visible items |
953 // Position on an item beyond the visible items |
926 gridview->positionViewAtIndex(21, QDeclarativeGridView::Beginning); |
954 gridview->positionViewAtIndex(21, QDeclarativeGridView::Beginning); |
927 QTRY_COMPARE(gridview->contentY(), 420.); |
955 QTRY_COMPARE(gridview->contentY(), 420.); |
928 |
956 |
929 // Confirm items positioned correctly |
957 // Confirm items positioned correctly |
930 itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); |
958 itemCount = findItems<QDeclarativeItem>(contentItem, "wrapper").count(); |
931 for (int i = 22; i < model.count() && i < itemCount-22-1; ++i) { |
959 for (int i = 22; i < model.count() && i < itemCount-22-1; ++i) { |
932 QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); |
960 QDeclarativeItem *item = findItem<QDeclarativeItem>(contentItem, "wrapper", i); |
933 if (!item) qWarning() << "Item" << i << "not found"; |
961 if (!item) qWarning() << "Item" << i << "not found"; |
934 QTRY_VERIFY(item); |
962 QTRY_VERIFY(item); |
935 QTRY_COMPARE(item->x(), (i%3)*80.); |
963 QTRY_COMPARE(item->x(), (i%3)*80.); |
936 QTRY_COMPARE(item->y(), (i/3)*60.); |
964 QTRY_COMPARE(item->y(), (i/3)*60.); |
937 } |
965 } |
939 // Position on an item that would leave empty space if positioned at the top |
967 // Position on an item that would leave empty space if positioned at the top |
940 gridview->positionViewAtIndex(31, QDeclarativeGridView::Beginning); |
968 gridview->positionViewAtIndex(31, QDeclarativeGridView::Beginning); |
941 QTRY_COMPARE(gridview->contentY(), 520.); |
969 QTRY_COMPARE(gridview->contentY(), 520.); |
942 |
970 |
943 // Confirm items positioned correctly |
971 // Confirm items positioned correctly |
944 itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); |
972 itemCount = findItems<QDeclarativeItem>(contentItem, "wrapper").count(); |
945 for (int i = 24; i < model.count() && i < itemCount-24-1; ++i) { |
973 for (int i = 24; i < model.count() && i < itemCount-24-1; ++i) { |
946 QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); |
974 QDeclarativeItem *item = findItem<QDeclarativeItem>(contentItem, "wrapper", i); |
947 if (!item) qWarning() << "Item" << i << "not found"; |
975 if (!item) qWarning() << "Item" << i << "not found"; |
948 QTRY_VERIFY(item); |
976 QTRY_VERIFY(item); |
949 QTRY_COMPARE(item->x(), (i%3)*80.); |
977 QTRY_COMPARE(item->x(), (i%3)*80.); |
950 QTRY_COMPARE(item->y(), (i/3)*60.); |
978 QTRY_COMPARE(item->y(), (i/3)*60.); |
951 } |
979 } |
953 // Position at the beginning again |
981 // Position at the beginning again |
954 gridview->positionViewAtIndex(0, QDeclarativeGridView::Beginning); |
982 gridview->positionViewAtIndex(0, QDeclarativeGridView::Beginning); |
955 QTRY_COMPARE(gridview->contentY(), 0.); |
983 QTRY_COMPARE(gridview->contentY(), 0.); |
956 |
984 |
957 // Confirm items positioned correctly |
985 // Confirm items positioned correctly |
958 itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); |
986 itemCount = findItems<QDeclarativeItem>(contentItem, "wrapper").count(); |
959 for (int i = 0; i < model.count() && i < itemCount-1; ++i) { |
987 for (int i = 0; i < model.count() && i < itemCount-1; ++i) { |
960 QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); |
988 QDeclarativeItem *item = findItem<QDeclarativeItem>(contentItem, "wrapper", i); |
961 if (!item) qWarning() << "Item" << i << "not found"; |
989 if (!item) qWarning() << "Item" << i << "not found"; |
962 QTRY_VERIFY(item); |
990 QTRY_VERIFY(item); |
963 QTRY_COMPARE(item->x(), (i%3)*80.); |
991 QTRY_COMPARE(item->x(), (i%3)*80.); |
964 QTRY_COMPARE(item->y(), (i/3)*60.); |
992 QTRY_COMPARE(item->y(), (i/3)*60.); |
965 } |
993 } |
1023 qApp->processEvents(); |
1051 qApp->processEvents(); |
1024 |
1052 |
1025 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
1053 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
1026 QTRY_VERIFY(gridview != 0); |
1054 QTRY_VERIFY(gridview != 0); |
1027 |
1055 |
1028 QDeclarativeItem *viewport = gridview->viewport(); |
1056 QDeclarativeItem *contentItem = gridview->contentItem(); |
1029 QTRY_VERIFY(viewport != 0); |
1057 QTRY_VERIFY(contentItem != 0); |
1030 |
1058 |
1031 QTRY_COMPARE(gridview->count(), model.rowCount()); |
1059 QTRY_COMPARE(gridview->count(), model.rowCount()); |
1032 |
1060 |
1033 for (int i = 0; i < model.rowCount(); ++i) { |
1061 for (int i = 0; i < model.rowCount(); ++i) { |
1034 QDeclarativeText *display = findItem<QDeclarativeText>(viewport, "displayText", i); |
1062 QDeclarativeText *display = findItem<QDeclarativeText>(contentItem, "displayText", i); |
1035 QTRY_VERIFY(display != 0); |
1063 QTRY_VERIFY(display != 0); |
1036 QTRY_COMPARE(display->text(), strings.at(i)); |
1064 QTRY_COMPARE(display->text(), strings.at(i)); |
1037 } |
1065 } |
1038 |
1066 |
1039 strings.clear(); |
1067 strings.clear(); |
1068 |
1096 |
1069 QTRY_COMPARE(gridview->preferredHighlightBegin(), 100.0); |
1097 QTRY_COMPARE(gridview->preferredHighlightBegin(), 100.0); |
1070 QTRY_COMPARE(gridview->preferredHighlightEnd(), 100.0); |
1098 QTRY_COMPARE(gridview->preferredHighlightEnd(), 100.0); |
1071 QTRY_COMPARE(gridview->highlightRangeMode(), QDeclarativeGridView::StrictlyEnforceRange); |
1099 QTRY_COMPARE(gridview->highlightRangeMode(), QDeclarativeGridView::StrictlyEnforceRange); |
1072 |
1100 |
1073 QDeclarativeItem *viewport = gridview->viewport(); |
1101 QDeclarativeItem *contentItem = gridview->contentItem(); |
1074 QTRY_VERIFY(viewport != 0); |
1102 QTRY_VERIFY(contentItem != 0); |
1075 |
1103 |
1076 // view should be positioned at the top of the range. |
1104 // view should be positioned at the top of the range. |
1077 QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", 0); |
1105 QDeclarativeItem *item = findItem<QDeclarativeItem>(contentItem, "wrapper", 0); |
1078 QTRY_VERIFY(item); |
1106 QTRY_VERIFY(item); |
1079 QTRY_COMPARE(gridview->contentY(), -100.0); |
1107 QTRY_COMPARE(gridview->contentY(), -100.0); |
1080 |
1108 |
1081 QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", 0); |
1109 QDeclarativeText *name = findItem<QDeclarativeText>(contentItem, "textName", 0); |
1082 QTRY_VERIFY(name != 0); |
1110 QTRY_VERIFY(name != 0); |
1083 QTRY_COMPARE(name->text(), model.name(0)); |
1111 QTRY_COMPARE(name->text(), model.name(0)); |
1084 QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", 0); |
1112 QDeclarativeText *number = findItem<QDeclarativeText>(contentItem, "textNumber", 0); |
1085 QTRY_VERIFY(number != 0); |
1113 QTRY_VERIFY(number != 0); |
1086 QTRY_COMPARE(number->text(), model.number(0)); |
1114 QTRY_COMPARE(number->text(), model.number(0)); |
1087 |
1115 |
1088 // Check currentIndex is updated when viewport moves |
1116 // Check currentIndex is updated when contentItem moves |
1089 gridview->setContentY(0); |
1117 gridview->setContentY(0); |
1090 QTRY_COMPARE(gridview->currentIndex(), 2); |
1118 QTRY_COMPARE(gridview->currentIndex(), 2); |
1091 |
1119 |
1092 gridview->setCurrentIndex(5); |
1120 gridview->setCurrentIndex(5); |
1093 QTRY_COMPARE(gridview->contentY(), 100.); |
1121 QTRY_COMPARE(gridview->contentY(), 100.); |
1094 |
1122 |
|
1123 TestModel model2; |
|
1124 for (int i = 0; i < 5; i++) |
|
1125 model2.addItem("Item" + QString::number(i), ""); |
|
1126 |
|
1127 ctxt->setContextProperty("testModel", &model2); |
|
1128 QCOMPARE(gridview->count(), 5); |
|
1129 |
1095 delete canvas; |
1130 delete canvas; |
1096 } |
1131 } |
1097 |
1132 |
1098 void tst_QDeclarativeGridView::QTBUG_8456() |
1133 void tst_QDeclarativeGridView::QTBUG_8456() |
1099 { |
1134 { |
1118 qApp->processEvents(); |
1153 qApp->processEvents(); |
1119 |
1154 |
1120 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
1155 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
1121 QTRY_VERIFY(gridview != 0); |
1156 QTRY_VERIFY(gridview != 0); |
1122 |
1157 |
1123 QDeclarativeItem *viewport = gridview->viewport(); |
1158 QDeclarativeItem *contentItem = gridview->contentItem(); |
1124 QTRY_VERIFY(viewport != 0); |
1159 QTRY_VERIFY(contentItem != 0); |
1125 |
1160 |
1126 QTRY_COMPARE(gridview->currentIndex(), 0); |
1161 QTRY_COMPARE(gridview->currentIndex(), 0); |
1127 QTRY_COMPARE(gridview->currentItem(), findItem<QDeclarativeItem>(viewport, "wrapper", 0)); |
1162 QTRY_COMPARE(gridview->currentItem(), findItem<QDeclarativeItem>(contentItem, "wrapper", 0)); |
1128 QTRY_COMPARE(gridview->highlightItem()->y(), gridview->currentItem()->y()); |
1163 QTRY_COMPARE(gridview->highlightItem()->y(), gridview->currentItem()->y()); |
1129 QTRY_COMPARE(gridview->highlightItem()->x(), gridview->currentItem()->x()); |
1164 QTRY_COMPARE(gridview->highlightItem()->x(), gridview->currentItem()->x()); |
1130 |
1165 |
1131 gridview->setCurrentIndex(2); |
1166 gridview->setCurrentIndex(2); |
1132 |
1167 |
1133 QTRY_COMPARE(gridview->currentIndex(), 2); |
1168 QTRY_COMPARE(gridview->currentIndex(), 2); |
1134 QTRY_COMPARE(gridview->currentItem(), findItem<QDeclarativeItem>(viewport, "wrapper", 2)); |
1169 QTRY_COMPARE(gridview->currentItem(), findItem<QDeclarativeItem>(contentItem, "wrapper", 2)); |
1135 QTRY_COMPARE(gridview->highlightItem()->y(), gridview->currentItem()->y()); |
1170 QTRY_COMPARE(gridview->highlightItem()->y(), gridview->currentItem()->y()); |
1136 QTRY_COMPARE(gridview->highlightItem()->x(), gridview->currentItem()->x()); |
1171 QTRY_COMPARE(gridview->highlightItem()->x(), gridview->currentItem()->x()); |
|
1172 } |
|
1173 |
|
1174 void tst_QDeclarativeGridView::footer() |
|
1175 { |
|
1176 QDeclarativeView *canvas = createView(); |
|
1177 |
|
1178 TestModel model; |
|
1179 for (int i = 0; i < 7; i++) |
|
1180 model.addItem("Item" + QString::number(i), ""); |
|
1181 |
|
1182 QDeclarativeContext *ctxt = canvas->rootContext(); |
|
1183 ctxt->setContextProperty("testModel", &model); |
|
1184 |
|
1185 canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/footer.qml")); |
|
1186 qApp->processEvents(); |
|
1187 |
|
1188 QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); |
|
1189 QTRY_VERIFY(gridview != 0); |
|
1190 |
|
1191 QDeclarativeItem *contentItem = gridview->contentItem(); |
|
1192 QTRY_VERIFY(contentItem != 0); |
|
1193 |
|
1194 QDeclarativeText *footer = findItem<QDeclarativeText>(contentItem, "footer"); |
|
1195 QVERIFY(footer); |
|
1196 |
|
1197 QCOMPARE(footer->y(), 180.0); |
|
1198 |
|
1199 model.removeItem(2); |
|
1200 QTRY_COMPARE(footer->y(), 120.0); |
|
1201 |
|
1202 model.clear(); |
|
1203 QTRY_COMPARE(footer->y(), 0.0); |
1137 } |
1204 } |
1138 |
1205 |
1139 |
1206 |
1140 QDeclarativeView *tst_QDeclarativeGridView::createView() |
1207 QDeclarativeView *tst_QDeclarativeGridView::createView() |
1141 { |
1208 { |