src/hbwidgets/dataform/hbdataformviewitem.cpp
changeset 7 923ff622b8b9
parent 6 c3690ec91ef8
child 21 4633027730f5
--- a/src/hbwidgets/dataform/hbdataformviewitem.cpp	Wed Jun 23 18:33:25 2010 +0300
+++ b/src/hbwidgets/dataform/hbdataformviewitem.cpp	Tue Jul 06 14:36:53 2010 +0300
@@ -25,6 +25,7 @@
 
 #include "hbdataformviewitem.h"
 #include "hbdataformviewitem_p.h"
+#include "hbabstractitemcontainer_p_p.h"
 
 #include "hbdataformmodelitem_p.h"
 #include "hbdataform_p.h"
@@ -398,7 +399,11 @@
     // Expansion is valid only for group ,form page and group page
     if( d->mType < HbDataFormModelItem::SliderItem ) {
         static_cast<HbDataGroup*>(this)->setExpanded(expanded);
-    } 
+    }  else {
+        HbAbstractItemContainer *container = qobject_cast<HbAbstractItemContainer *>(
+        static_cast<QGraphicsWidget *>( d->mSharedData->mItemView->contentWidget( ) ) );
+        container->setItemTransientStateValue(d->mIndex, "expanded", expanded);
+    }
 }
 
 /*!
@@ -412,13 +417,18 @@
     Q_D( const HbDataFormViewItem);
     // Expansion is valid only for group ,form page and group page
     if( d->mType < HbDataFormModelItem::SliderItem ) {
-        HbDataGroup *group = qobject_cast<HbDataGroup *>(const_cast<HbDataFormViewItem*>(this));
+        HbDataGroup *group = qobject_cast< HbDataGroup *>(const_cast<HbDataFormViewItem*>(this));
         if( group ) {
             return group->isExpanded();
-        } else {
-            return false;
         }
     } 
+    if(d->mSharedData->mItemView) {
+        HbAbstractItemContainer *container = qobject_cast<HbAbstractItemContainer *>(
+            static_cast<QGraphicsWidget *>( d->mSharedData->mItemView->contentWidget( ) ) );
+        if(container) {
+            return container->itemTransientState(d->mIndex).value("expanded").toBool();
+        }
+    }
     return false;
 }
 
@@ -435,26 +445,25 @@
 HbWidget* HbDataFormViewItem::dataItemContentWidget()const
 {
     Q_D(const HbDataFormViewItem);
-    HbWidget *widget = d->mContentWidget;;
+    HbWidget *widget = d->mContentWidget;
 
-    switch( d->mType ) {
-        case HbDataFormModelItem::RadioButtonListItem:
-            {
+    if(d->mContentWidget) {
+        switch( d->mType ) {
+            case HbDataFormModelItem::RadioButtonListItem:{
                 widget = static_cast<HbRadioItem*>(d->mContentWidget)->createRadioButton();
             }
             break;
-        case HbDataFormModelItem::MultiselectionItem:
-            {
+            case HbDataFormModelItem::MultiselectionItem:{
                 widget = NULL;
             }
             break;
-        case HbDataFormModelItem::ToggleValueItem:
-            {
+            case HbDataFormModelItem::ToggleValueItem:{
                 widget = static_cast<HbToggleItem*>(d->mContentWidget)->contentWidget();
             }
             break;
-        default:
+            default:
             break;
+        }
     }
     return widget;
 }