@@ -1711,9 +1711,54 @@ private Q_SLOTS:
1711 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1711 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1714+ void testSectionItemCullOnFirstSectionItemTopEdge()
1716+ changeContentY(50);
1718+ verifyItem(0, 0., 190., false, "Agressive", false);
1719+ verifyItem(1, 190., 240., false, "Regular", false);
1720+ verifyItem(2, 430., 390., false, "Mild", false);
1721+ QCOMPARE(lvwph->m_minYExtent, 0.);
1722+ QCOMPARE(lvwph->m_clipItem->y(), 50.);
1723+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1724+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1725+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1726+ QCOMPARE(lvwph->contentY(), 50.);
1727+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1728+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1731+ void testSectionItemCullOnSecondSectionItemTopEdge()
1733+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Agressive"));
1734+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Agressive"));
1736+ changeContentY(140);
1738+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 5);
1739+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1740+ verifyItem(0, -90., 90., true, "Agressive", true);
1741+ verifyItem(1, 0., 50., false, QString(), false);
1742+ verifyItem(2, 50., 150., false, QString(), false);
1743+ verifyItem(3, 200., 240., false, "Regular", false);
1744+ verifyItem(4, 440., 390., false, "Mild", false);
1745+ QCOMPARE(lvwph->m_minYExtent, 0.);
1746+ QCOMPARE(lvwph->m_clipItem->y(), 140.);
1747+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1748+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1749+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1750+ QCOMPARE(lvwph->contentY(), 140.);
1751+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1752+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1753+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Agressive"));
1754+ QCOMPARE(sectionDelegateIndex(lvwph->m_topSectionItem), 0);
1755+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1714 void testMaximizeVisibleArea()
1758 void testMaximizeVisibleArea()
1716− lvwph->maximizeVisibleArea(2);
1760+ bool res = lvwph->maximizeVisibleArea(2);
1717 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1762 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1719 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1764 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
@@ -1737,12 +1782,14 @@ private Q_SLOTS:
1738 void testMaximizeVisibleAreaVisibleItems()
1783 void testMaximizeVisibleAreaVisibleItems()
1740− lvwph->maximizeVisibleArea(0);
1785+ bool res = lvwph->maximizeVisibleArea(0);
1741 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1787 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1743 verifyInitialTopPosition();
1789 verifyInitialTopPosition();
1745− lvwph->maximizeVisibleArea(1);
1791+ res = lvwph->maximizeVisibleArea(1);
1746 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1793 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1748 verifyInitialTopPosition();
1795 verifyInitialTopPosition();
@@ -1750,17 +1797,20 @@ private Q_SLOTS:
1751 void testMaximizeVisibleAreaInvalidIndexes()
1798 void testMaximizeVisibleAreaInvalidIndexes()
1753− lvwph->maximizeVisibleArea(-1);
1800+ bool res = lvwph->maximizeVisibleArea(-1);
1754 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1802 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1756 verifyInitialTopPosition();
1804 verifyInitialTopPosition();
1758− lvwph->maximizeVisibleArea(1000);
1806+ res = lvwph->maximizeVisibleArea(1000);
1759 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1808 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1761 verifyInitialTopPosition();
1810 verifyInitialTopPosition();
1763− lvwph->maximizeVisibleArea(3);
1812+ res = lvwph->maximizeVisibleArea(3);
1764 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1814 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1766 verifyInitialTopPosition();
1816 verifyInitialTopPosition();
@@ -1771,7 +1821,8 @@ private Q_SLOTS:
1771 model->setProperty(2, "size", 4000);
1821 model->setProperty(2, "size", 4000);
1772 verifyItem(2, 480, 4040., false, "Mild", false);
1822 verifyItem(2, 480, 4040., false, "Mild", false);
1774− lvwph->maximizeVisibleArea(2);
1824+ bool res = lvwph->maximizeVisibleArea(2);
1775 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1826 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1777 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
1828 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
@@ -1792,7 +1843,8 @@ private Q_SLOTS:
1792 void testMaximizeVisibleAreaScrollDown()
1843 void testMaximizeVisibleAreaScrollDown()
1794 changeContentY(350);
1845 changeContentY(350);
1795− lvwph->maximizeVisibleArea(1);
1846+ bool res = lvwph->maximizeVisibleArea(1);
1796 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1848 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1798 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1850 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
@@ -1815,7 +1867,8 @@ private Q_SLOTS:
1816 model->setProperty(1, "size", 1000);
1868 model->setProperty(1, "size", 1000);
1817 changeContentY(1150);
1869 changeContentY(1150);
1818− lvwph->maximizeVisibleArea(1);
1870+ bool res = lvwph->maximizeVisibleArea(1);
1819 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1872 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1821 QTRY_COMPARE(lvwph->m_visibleItems.count(), 2);
1874 QTRY_COMPARE(lvwph->m_visibleItems.count(), 2);
@@ -1856,7 +1909,8 @@ private Q_SLOTS:
1856 QCOMPARE(sectionDelegateIndex(lvwph->m_topSectionItem), 1);
1909 QCOMPARE(sectionDelegateIndex(lvwph->m_topSectionItem), 1);
1857 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1910 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1859− lvwph->maximizeVisibleArea(1);
1912+ bool res = lvwph->maximizeVisibleArea(1);
1860 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1914 QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1862 QTRY_COMPARE(lvwph->m_visibleItems.count(), 2);
1916 QTRY_COMPARE(lvwph->m_visibleItems.count(), 2);
@@ -1876,6 +1930,109 @@ private Q_SLOTS:
1876 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1930 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1933+ void testMaximizeVisibleAreaTopWithHalfPageHeader()
1935+ changeContentY(430);
1936+ changeContentY(-30);
1938+ bool res = lvwph->maximizeVisibleArea(1);
1940+ QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1942+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1943+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1944+ verifyItem(0, -190., 190., true, "Agressive", true);
1945+ verifyItem(1, 0., 240., false, "Regular", false);
1946+ verifyItem(2, 240, 390., false, "Mild", false);
1947+ verifyItem(3, 630, 390., true, "Bold", true);
1948+ QCOMPARE(lvwph->m_minYExtent, 0.);
1949+ QCOMPARE(lvwph->m_clipItem->y(), 240.);
1950+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1951+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1952+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1953+ QCOMPARE(lvwph->contentY(), 240.);
1954+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1955+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1958+ void testMaximizeVisibleAreaBottomWithHalfPageHeader()
1960+ changeContentY(430);
1961+ changeContentY(-30);
1963+ bool res = lvwph->maximizeVisibleArea(3);
1965+ QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1967+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1968+ QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1969+ verifyItem(0, -478., 240., true, "Regular", true);
1970+ verifyItem(1, -238., 390., false, "Mild", true);
1971+ verifyItem(2, 152, 390., false, "Bold", false);
1972+ verifyItem(3, 542, 350., true, QString(), true);
1973+ QCOMPARE(lvwph->m_minYExtent, 152.5);
1974+ QCOMPARE(lvwph->m_clipItem->y(), 718.);
1975+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1976+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1977+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1978+ QCOMPARE(lvwph->contentY(), 718.);
1979+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1980+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1981+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1982+ QCOMPARE(sectionDelegateIndex(lvwph->m_topSectionItem), 2);
1983+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1986+ void testMaximizeVisibleAreaTopSecondSectionItemStickySection()
1988+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 100), Q_ARG(QVariant, "Agressive"));
1989+ changeContentY(250);
1990+ bool res = lvwph->maximizeVisibleArea(1);
1992+ QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1994+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1995+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1996+ verifyItem(0, -100., 140., false, "Agressive", true);
1997+ verifyItem(1, 40., 150., false, QString(), true);
1998+ verifyItem(2, 190, 240., false, "Regular", false);
1999+ verifyItem(3, 430, 390., false, "Mild", false);
2000+ QCOMPARE(lvwph->m_minYExtent, 0.);
2001+ QCOMPARE(lvwph->m_clipItem->y(), 150.);
2002+ QCOMPARE(lvwph->m_clipItem->clip(), false);
2003+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
2004+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
2005+ QCOMPARE(lvwph->contentY(), 150.);
2006+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
2007+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
2008+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Agressive"));
2009+ QCOMPARE(sectionDelegateIndex(lvwph->m_topSectionItem), 0);
2010+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
2012+ changeContentY(20);
2013+ res = lvwph->maximizeVisibleArea(1);
2015+ QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
2017+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
2018+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
2019+ verifyItem(0, -100., 140., false, "Agressive", true);
2020+ verifyItem(1, 40., 150., false, QString(), true);
2021+ verifyItem(2, 190, 240., false, "Regular", false);
2022+ verifyItem(3, 430, 390., false, "Mild", false);
2023+ QCOMPARE(lvwph->m_minYExtent, 0.);
2024+ QCOMPARE(lvwph->m_clipItem->y(), 150.);
2025+ QCOMPARE(lvwph->m_clipItem->clip(), false);
2026+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
2027+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
2028+ QCOMPARE(lvwph->contentY(), 150.);
2029+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
2030+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
2031+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Agressive"));
2032+ QCOMPARE(sectionDelegateIndex(lvwph->m_topSectionItem), 0);
2033+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1880 QQuickView *view;
2037 QQuickView *view;
1881 ListViewWithPageHeader *lvwph;
2038 ListViewWithPageHeader *lvwph;