aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2011-07-26 15:33:58 +1000
committerQt by Nokia <qt-info@nokia.com>2011-07-26 09:37:52 +0200
commita380768b135c16d3621ec0be8e1bbe410cd7ed47 (patch)
tree4289d9e690e1e19cc33a1979d6f4ecac5eca10da /src/declarative
parente06211e4c67c0c7470fdac86c3fa6d50792516c5 (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.cpp12
-rw-r--r--src/declarative/items/qsgitemview.cpp16
-rw-r--r--src/declarative/items/qsgitemview_p.h6
-rw-r--r--src/declarative/items/qsglistview.cpp11
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)