@@ -1506,7 +1506,7 @@ private Q_SLOTS:
15061506
15071507 lvwph->showHeader();
15081508
1509− QTRY_VERIFY(!lvwph->m_headerShowAnimation->isRunning());
1509+ QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
15101510 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
15111511 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
15121512 verifyItem(0, -20., 190., false, "Agressive", true);
@@ -1565,7 +1565,7 @@ private Q_SLOTS:
15651565
15661566 lvwph->showHeader();
15671567
1568− QTRY_VERIFY(!lvwph->m_headerShowAnimation->isRunning());
1568+ QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
15691569 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
15701570 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
15711571 verifyItem(0, -375., 190., true, "Agressive", true);
@@ -1607,7 +1607,7 @@ private Q_SLOTS:
16071607
16081608 lvwph->showHeader();
16091609
1610− QTRY_VERIFY(!lvwph->m_headerShowAnimation->isRunning());
1610+ QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
16111611 QTRY_VERIFY (lvwph->isAtYEnd());
16121612 }
16131613
@@ -1711,6 +1711,171 @@ private Q_SLOTS:
17111711 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
17121712 }
17131713
1714+ void testMaximizeVisibleArea()
1715+ {
1716+ lvwph->maximizeVisibleArea(2);
1717+ QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1718+
1719+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1720+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1721+ verifyItem(0, -278., 190., true, "Agressive", true);
1722+ verifyItem(1, -88., 240., false, "Regular", true);
1723+ verifyItem(2, 152, 390., false, "Mild", false);
1724+ verifyItem(3, 542, 390., true, "Bold", true);
1725+ QCOMPARE(lvwph->m_minYExtent, 0.);
1726+ QCOMPARE(lvwph->m_clipItem->y(), 328.);
1727+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1728+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1729+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1730+ QCOMPARE(lvwph->contentY(), 328.);
1731+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1732+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1733+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Regular"));
1734+ QCOMPARE(sectionDelegateIndex(lvwph->m_topSectionItem), 1);
1735+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1736+ }
1737+
1738+ void testMaximizeVisibleAreaVisibleItems()
1739+ {
1740+ lvwph->maximizeVisibleArea(0);
1741+ QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1742+
1743+ verifyInitialTopPosition();
1744+
1745+ lvwph->maximizeVisibleArea(1);
1746+ QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1747+
1748+ verifyInitialTopPosition();
1749+ }
1750+
1751+ void testMaximizeVisibleAreaInvalidIndexes()
1752+ {
1753+ lvwph->maximizeVisibleArea(-1);
1754+ QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1755+
1756+ verifyInitialTopPosition();
1757+
1758+ lvwph->maximizeVisibleArea(1000);
1759+ QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1760+
1761+ verifyInitialTopPosition();
1762+
1763+ lvwph->maximizeVisibleArea(3);
1764+ QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1765+
1766+ verifyInitialTopPosition();
1767+ }
1768+
1769+ void testMaximizeVisibleAreaBigElement()
1770+ {
1771+ model->setProperty(2, "size", 4000);
1772+ verifyItem(2, 480, 4040., false, "Mild", false);
1773+
1774+ lvwph->maximizeVisibleArea(2);
1775+ QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1776+
1777+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
1778+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1779+ verifyItem(0, -430., 190., true, "Agressive", true);
1780+ verifyItem(1, -240., 240., true, "Regular", true);
1781+ verifyItem(2, 0, 4040., false, "Mild", false);
1782+ QCOMPARE(lvwph->m_minYExtent, 0.);
1783+ QCOMPARE(lvwph->m_clipItem->y(), 480.);
1784+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1785+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1786+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1787+ QCOMPARE(lvwph->contentY(), 480.);
1788+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1789+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1790+ }
1791+
1792+ void testMaximizeVisibleAreaScrollDown()
1793+ {
1794+ changeContentY(350);
1795+ lvwph->maximizeVisibleArea(1);
1796+ QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1797+
1798+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1799+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1800+ verifyItem(0, -190., 190., true, "Agressive", true);
1801+ verifyItem(1, 0., 240., false, "Regular", false);
1802+ verifyItem(2, 240, 390., false, "Mild", false);
1803+ verifyItem(3, 630, 390., true, "Bold", true);
1804+ QCOMPARE(lvwph->m_minYExtent, 0.);
1805+ QCOMPARE(lvwph->m_clipItem->y(), 240.);
1806+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1807+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1808+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1809+ QCOMPARE(lvwph->contentY(), 240.);
1810+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1811+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1812+ }
1813+
1814+ void testMaximizeVisibleAreaScrollDownBigElement()
1815+ {
1816+ model->setProperty(1, "size", 1000);
1817+ changeContentY(1150);
1818+ lvwph->maximizeVisibleArea(1);
1819+ QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1820+
1821+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 2);
1822+ QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1823+ verifyItem(0, -498., 1040., false, "Regular", true);
1824+ verifyItem(1, 542., 390., true, "Mild", true);
1825+ QCOMPARE(lvwph->m_minYExtent, 1250/3.);
1826+ QCOMPARE(lvwph->m_clipItem->y(), 738.);
1827+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1828+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1829+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1830+ QCOMPARE(lvwph->contentY(), 738.);
1831+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1832+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1833+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Regular"));
1834+ QCOMPARE(sectionDelegateIndex(lvwph->m_topSectionItem), 1);
1835+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1836+ }
1837+
1838+ void testMaximizeVisibleAreaBigElementInTheMiddle()
1839+ {
1840+ model->setProperty(1, "size", 1000);
1841+ changeContentY(650);
1842+
1843+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 2);
1844+ QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1845+ verifyItem(0, -410., 1040., false, "Regular", true);
1846+ verifyItem(1, 630., 390., true, "Mild", true);
1847+ QCOMPARE(lvwph->m_minYExtent, 525.);
1848+ QCOMPARE(lvwph->m_clipItem->y(), 650.);
1849+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1850+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1851+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1852+ QCOMPARE(lvwph->contentY(), 650.);
1853+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1854+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1855+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Regular"));
1856+ QCOMPARE(sectionDelegateIndex(lvwph->m_topSectionItem), 1);
1857+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1858+
1859+ lvwph->maximizeVisibleArea(1);
1860+ QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1861+
1862+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 2);
1863+ QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1864+ verifyItem(0, -410., 1040., false, "Regular", true);
1865+ verifyItem(1, 630., 390., true, "Mild", true);
1866+ QCOMPARE(lvwph->m_minYExtent, 525.);
1867+ QCOMPARE(lvwph->m_clipItem->y(), 650.);
1868+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1869+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1870+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1871+ QCOMPARE(lvwph->contentY(), 650.);
1872+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1873+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1874+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Regular"));
1875+ QCOMPARE(sectionDelegateIndex(lvwph->m_topSectionItem), 1);
1876+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1877+ }
1878+
17141879private:
17151880 QQuickView *view;
17161881 ListViewWithPageHeader *lvwph;