diff options
author | Martin Jones <martin.jones@nokia.com> | 2011-07-26 15:33:58 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-07-26 09:37:52 +0200 |
commit | a380768b135c16d3621ec0be8e1bbe410cd7ed47 (patch) | |
tree | 4289d9e690e1e19cc33a1979d6f4ecac5eca10da /src/declarative | |
parent | e06211e4c67c0c7470fdac86c3fa6d50792516c5 (diff) |
Add headerItem and footerItem properties to views.
Fixes: QTBUG-19684
Change-Id: Iea7d4a4f902cc45cb0cca8e1221fdb993f0bebd2
Reviewed-on: http://codereview.qt.nokia.com/2151
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Bea Lam <bea.lam@nokia.com>
Diffstat (limited to 'src/declarative')
-rw-r--r-- | src/declarative/items/qsggridview.cpp | 12 | ||||
-rw-r--r-- | src/declarative/items/qsgitemview.cpp | 16 | ||||
-rw-r--r-- | src/declarative/items/qsgitemview_p.h | 6 | ||||
-rw-r--r-- | src/declarative/items/qsglistview.cpp | 11 |
4 files changed, 42 insertions, 3 deletions
diff --git a/src/declarative/items/qsggridview.cpp b/src/declarative/items/qsggridview.cpp index 8d91a410fa..307aeae32f 100644 --- a/src/declarative/items/qsggridview.cpp +++ b/src/declarative/items/qsggridview.cpp @@ -641,13 +641,14 @@ qreal QSGGridViewPrivate::footerSize() const void QSGGridViewPrivate::updateFooter() { Q_Q(QSGGridView); - + bool created = false; if (!footer) { QSGItem *item = createComponentItem(footerComponent, true); if (!item) return; item->setZ(1); footer = new FxGridItemSG(item, q, true); + created = true; } FxGridItemSG *gridItem = static_cast<FxGridItemSG*>(footer); @@ -671,18 +672,22 @@ void QSGGridViewPrivate::updateFooter() } else { gridItem->setPosition(colOffset, rowOffset); } + + if (created) + emit q->footerItemChanged(); } void QSGGridViewPrivate::updateHeader() { Q_Q(QSGGridView); - + bool created = false; if (!header) { QSGItem *item = createComponentItem(headerComponent, true); if (!item) return; item->setZ(1); header = new FxGridItemSG(item, q, true); + created = true; } FxGridItemSG *gridItem = static_cast<FxGridItemSG*>(header); @@ -710,6 +715,9 @@ void QSGGridViewPrivate::updateHeader() else gridItem->setPosition(colOffset, -headerSize()); } + + if (created) + emit q->headerItemChanged(); } void QSGGridViewPrivate::initializeCurrentItem() diff --git a/src/declarative/items/qsgitemview.cpp b/src/declarative/items/qsgitemview.cpp index df8de86ba8..a9550e82b7 100644 --- a/src/declarative/items/qsgitemview.cpp +++ b/src/declarative/items/qsgitemview.cpp @@ -309,6 +309,12 @@ QDeclarativeComponent *QSGItemView::header() const return d->headerComponent; } +QSGItem *QSGItemView::headerItem() const +{ + Q_D(const QSGItemView); + return d->header ? d->header->item : 0; +} + void QSGItemView::setHeader(QDeclarativeComponent *headerComponent) { Q_D(QSGItemView); @@ -325,6 +331,8 @@ void QSGItemView::setHeader(QDeclarativeComponent *headerComponent) d->updateFooter(); d->updateViewport(); d->fixupPosition(); + } else { + emit headerItemChanged(); } emit headerChanged(); } @@ -336,6 +344,12 @@ QDeclarativeComponent *QSGItemView::footer() const return d->footerComponent; } +QSGItem *QSGItemView::footerItem() const +{ + Q_D(const QSGItemView); + return d->footer ? d->footer->item : 0; +} + void QSGItemView::setFooter(QDeclarativeComponent *footerComponent) { Q_D(QSGItemView); @@ -348,6 +362,8 @@ void QSGItemView::setFooter(QDeclarativeComponent *footerComponent) d->updateFooter(); d->updateViewport(); d->fixupPosition(); + } else { + emit footerItemChanged(); } emit footerChanged(); } diff --git a/src/declarative/items/qsgitemview_p.h b/src/declarative/items/qsgitemview_p.h index fb95e4fd8d..4c5b91fcde 100644 --- a/src/declarative/items/qsgitemview_p.h +++ b/src/declarative/items/qsgitemview_p.h @@ -71,7 +71,9 @@ class Q_AUTOTEST_EXPORT QSGItemView : public QSGFlickable Q_PROPERTY(Qt::LayoutDirection effectiveLayoutDirection READ effectiveLayoutDirection NOTIFY effectiveLayoutDirectionChanged) Q_PROPERTY(QDeclarativeComponent *header READ header WRITE setHeader NOTIFY headerChanged) + Q_PROPERTY(QSGItem *headerItem READ headerItem NOTIFY headerItemChanged) Q_PROPERTY(QDeclarativeComponent *footer READ footer WRITE setFooter NOTIFY footerChanged) + Q_PROPERTY(QSGItem *footerItem READ footerItem NOTIFY footerItemChanged) Q_PROPERTY(QDeclarativeComponent *highlight READ highlight WRITE setHighlight NOTIFY highlightChanged) Q_PROPERTY(QSGItem *highlightItem READ highlightItem NOTIFY highlightItemChanged) @@ -113,9 +115,11 @@ public: QDeclarativeComponent *footer() const; void setFooter(QDeclarativeComponent *); + QSGItem *footerItem() const; QDeclarativeComponent *header() const; void setHeader(QDeclarativeComponent *); + QSGItem *headerItem() const; QDeclarativeComponent *highlight() const; void setHighlight(QDeclarativeComponent *); @@ -164,6 +168,8 @@ signals: void headerChanged(); void footerChanged(); + void headerItemChanged(); + void footerItemChanged(); void highlightChanged(); void highlightItemChanged(); diff --git a/src/declarative/items/qsglistview.cpp b/src/declarative/items/qsglistview.cpp index 4502dc8216..fa4260214b 100644 --- a/src/declarative/items/qsglistview.cpp +++ b/src/declarative/items/qsglistview.cpp @@ -917,13 +917,14 @@ qreal QSGListViewPrivate::footerSize() const void QSGListViewPrivate::updateFooter() { Q_Q(QSGListView); - + bool created = false; if (!footer) { QSGItem *item = createComponentItem(footerComponent, true); if (!item) return; item->setZ(1); footer = new FxListItemSG(item, q, true); + created = true; } FxListItemSG *listItem = static_cast<FxListItemSG*>(footer); @@ -939,17 +940,22 @@ void QSGListViewPrivate::updateFooter() } else { listItem->setPosition(visiblePos); } + + if (created) + emit q->footerItemChanged(); } void QSGListViewPrivate::updateHeader() { Q_Q(QSGListView); + bool created = false; if (!header) { QSGItem *item = createComponentItem(headerComponent, true); if (!item) return; item->setZ(1); header = new FxListItemSG(item, q, true); + created = true; } FxListItemSG *listItem = static_cast<FxListItemSG*>(header); @@ -966,6 +972,9 @@ void QSGListViewPrivate::updateHeader() listItem->setPosition(-headerSize()); } } + + if (created) + emit q->headerItemChanged(); } void QSGListViewPrivate::itemGeometryChanged(QSGItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) |