src/hbwidgets/itemviews/hblistitemcontainer_p.cpp
changeset 2 06ff229162e9
parent 1 f7ac710697a9
child 3 11d3954df52a
--- a/src/hbwidgets/itemviews/hblistitemcontainer_p.cpp	Mon May 03 12:48:33 2010 +0300
+++ b/src/hbwidgets/itemviews/hblistitemcontainer_p.cpp	Fri May 14 16:09:54 2010 +0300
@@ -27,7 +27,7 @@
 #include "hblistitemcontainer_p_p.h"
 #include "hblistlayout_p.h"
 
-#include "hbabstractitemcontainer.h"
+#include "hbabstractitemcontainer_p.h"
 #include "hbabstractitemview.h"
 #include "hblistviewitem.h"
 #include "hbmodeliterator.h"
@@ -146,7 +146,7 @@
 {
     qreal minHeight = 0.0;
     if (mItems.count() > 0) {
-        minHeight = mLayout->sizeHint(Qt::PreferredSize).height() / mItems.count();
+        minHeight = mLayout->effectiveSizeHint(Qt::PreferredSize).height() / mItems.count();
     }
 
     if (minHeight == 0.0) {
@@ -511,6 +511,43 @@
     }
 }
 
+/*!
+    \reimp
+
+    All other sizehints are taken from list layout except preferred sizehint. List container preferred sizeHint 
+    width is maximum width and height is average item height times index count.
+*/
+QSizeF HbListItemContainer::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
+{
+    Q_D(const HbListItemContainer);
+
+    if (which == Qt::PreferredSize) {
+        HbModelIterator *modelIterator = d->modelIterator();
+        if (modelIterator) {
+            return QSizeF(QWIDGETSIZE_MAX, d->itemHeight() * modelIterator->indexCount());
+        }
+    }
+
+    return HbAbstractItemContainer::sizeHint(which, constraint);
+}
+
+/*!
+    \reimp
+
+    Resizes the container to use view width (if present; otherwise 0)
+    and layout preferred height.
+*/
+void HbListItemContainer::resizeContainer()
+{
+    Q_D(HbListItemContainer);
+       
+    if (d->mItemView) {
+        resize(d->mItemView->size().width(), layout()->preferredHeight());
+    } else {
+        resize(0, layout()->preferredHeight());
+    }
+}
+
 #include "moc_hblistitemcontainer_p.cpp"