src/hbwidgets/itemviews/hblistviewitem.cpp
changeset 21 4633027730f5
parent 6 c3690ec91ef8
child 23 e6ad4ef83b23
--- a/src/hbwidgets/itemviews/hblistviewitem.cpp	Tue Jul 06 14:36:53 2010 +0300
+++ b/src/hbwidgets/itemviews/hblistviewitem.cpp	Wed Aug 18 10:05:37 2010 +0300
@@ -219,14 +219,14 @@
     Q_Q( HbListViewItem );
 
     // create icon item and set it to layout
-    HbStyle::Primitive primitive = decorationPrimitive(value);
+    HbStylePrivate::Primitive primitive = decorationPrimitive(value);
 
-    if (primitive != HbStyle::P_None) {
+    if (primitive != HbStylePrivate::P_None) {
         QGraphicsItem *item = mDecorationRoleItems.value(index);
         if (!item) {
             mItemsChanged = true;
             themingPending = true;
-            item = q->style()->createPrimitive(primitive, q);
+            item = HbStylePrivate::createPrimitive(primitive, q);
 
             if (index < mDecorationRoleItems.count()) {
                 mDecorationRoleItems.replace(index, item);
@@ -254,11 +254,11 @@
     if (!value.isNull()) {
         QGraphicsItem *textItem = mDisplayRoleTextItems.value(index);
 
-        HbStyle::Primitive primitive = displayPrimitive();
+        HbStylePrivate::Primitive primitive = displayPrimitive();
         if (!textItem) {
             mItemsChanged = true;
             themingPending = true;
-            textItem = q->style()->createPrimitive(primitive, q);
+            textItem = HbStylePrivate::createPrimitive(primitive, q);
             if (index < mDisplayRoleTextItems.count()) {
                 mDisplayRoleTextItems.replace(index, textItem);
             } else {
@@ -360,7 +360,11 @@
     QVariant displayRole = d->mIndex.data(Qt::DisplayRole);
     QStringList stringList;
     if (displayRole.isValid()) {
-        if (displayRole.canConvert<QString>()) {
+        if (displayRole.type() == QVariant::String) {
+            stringList.append(displayRole.toString());
+        } else if (displayRole.type() == QVariant::StringList) {
+            stringList = displayRole.toStringList();
+        } else if (displayRole.canConvert<QString>()) {
             stringList.append(displayRole.toString());
         } else if (displayRole.canConvert<QStringList>()) {
             stringList = displayRole.toStringList();
@@ -385,7 +389,12 @@
     QVariant decorationRole = d->mIndex.data(Qt::DecorationRole);
     QVariantList variantList;
     if (decorationRole.isValid()) {
-        if (decorationRole.canConvert<QIcon>()
+        if (decorationRole.type() == QVariant::Icon 
+            || decorationRole.userType() == qMetaTypeId<HbIcon>()) {
+            variantList.append(decorationRole);
+        } else if (decorationRole.type() == QVariant::List) { 
+            variantList = decorationRole.toList();
+        } else if (decorationRole.canConvert<QIcon>()
              || decorationRole.canConvert<HbIcon>()) {
             variantList.append(decorationRole);
         } else if (decorationRole.canConvert< QList<QVariant> >()) {
@@ -415,37 +424,39 @@
 void HbListViewItem::updatePrimitives()
 {
     HB_SDD(HbListViewItem);
-    HbStyleOptionListViewItem styleOption;
-    initStyleOption(&styleOption);
+
+    HbStyleOptionListViewItem *styleOption = sd->mListStyleOption;
+    initStyleOption(styleOption);
 
     int count = d->mStringList.count();
     for (int i = 0; i < count; ++i) {
         QGraphicsItem *item = d->mDisplayRoleTextItems.value(i);
         if (item) {
-            styleOption.index = i;
-            styleOption.content = d->mStringList.at(i);
-            styleOption.multilineSecondaryTextSupported = d->isMultilineSupported();
+            styleOption->index = i;
+            styleOption->content = d->mStringList.at(i);
+            styleOption->multilineSecondaryTextSupported = d->isMultilineSupported();
 
             if (i == 1) {
                 // criteria of secondary text in middle column is fulfilled
-                styleOption.minimumLines = sd->mMinimumSecondaryTextRowCount;
-                styleOption.maximumLines = sd->mMaximumSecondaryTextRowCount;
+                styleOption->minimumLines = sd->mMinimumSecondaryTextRowCount;
+                styleOption->maximumLines = sd->mMaximumSecondaryTextRowCount;
             } 
-            style()->updatePrimitive(item, d->displayPrimitive(), &styleOption);
+            HbStylePrivate::updatePrimitive(item, d->displayPrimitive(), styleOption);
         }
     }
 
-    styleOption.role = Qt::DecorationRole;
+    styleOption->role = Qt::DecorationRole;
+
     count = d->mDecorationList.count();
     for (int i = 0; i < count; ++i) {
         QGraphicsItem *item = d->mDecorationRoleItems.value(i);
         if (item) {
-            styleOption.index = i;
-            styleOption.content = d->mDecorationList.at(i);
-            style()->updatePrimitive(   
+            styleOption->index = i;
+            styleOption->content = d->mDecorationList.at(i);
+            HbStylePrivate::updatePrimitive(   
                         item, 
                         d->decorationPrimitive(d->mDecorationList.at(i)), 
-                        &styleOption);
+                        styleOption);
         }
     }
     HbAbstractViewItem::updatePrimitives();