phonebookui/pbkcommonui/src/cnthistoryviewitem.cpp
changeset 31 2a11b5b00470
parent 27 de1630741fbe
child 37 fd64c38c277d
--- a/phonebookui/pbkcommonui/src/cnthistoryviewitem.cpp	Mon May 03 12:24:20 2010 +0300
+++ b/phonebookui/pbkcommonui/src/cnthistoryviewitem.cpp	Fri May 14 15:42:23 2010 +0300
@@ -18,14 +18,20 @@
 #include "cnthistoryviewitem.h"
 
 #include <cnthistorymodel.h>
+#include <hbframedrawer.h>
+#include <hbframeitem.h>
+
+#define NEW_EVENT_FRAME "qtg_fr_list_new_item"
 
 //---------------------------------------------------------------
 // HbListViewItem::HbListViewItem
 // Constructor
 //---------------------------------------------------------------
 CntHistoryViewItem::CntHistoryViewItem(QGraphicsItem* parent)
-: HbAbstractViewItem(parent),
-itemWidget(NULL)
+: HbListViewItem(parent),
+  mIncoming(false),
+  mNewMessage(false),
+  mNewItem(NULL)
 {
 }
 
@@ -35,15 +41,7 @@
 //---------------------------------------------------------------
 HbAbstractViewItem* CntHistoryViewItem::createItem()
 {
-    return new CntHistoryViewItem(*this); 
-}
-
-//---------------------------------------------------------------
-// HbListViewItem::polish
-//
-//---------------------------------------------------------------
-void CntHistoryViewItem::polish(HbStyleParameters& /*params*/)
-{
+    return new CntHistoryViewItem(*this);
 }
 
 //---------------------------------------------------------------
@@ -52,55 +50,27 @@
 //---------------------------------------------------------------
 void CntHistoryViewItem::updateChildItems()
 {
-    QStringList data = modelIndex().data(Qt::DisplayRole).toStringList();
-    QString iconName = modelIndex().data(Qt::DecorationRole).toString();
-    bool incoming = false;
-    bool newMessage = false;
-    bool status = false;
-    if (modelIndex().data(CntHistoryModel::DirectionRole).toInt(&status) == CntHistoryModel::Incoming) {
-        incoming = true;
-    }
-    // This indication applies to smses only
-    if (modelIndex().data(CntHistoryModel::ItemTypeRole).toInt(&status) == CntHistoryModel::Message && 
-        modelIndex().data(CntHistoryModel::SeenStatusRole).toInt(&status) == CntHistoryModel::Unseen) {
-        newMessage = true;
-    }
-    
-    QGraphicsLinearLayout* currentLayout = static_cast<QGraphicsLinearLayout*>(layout());
-    
-    if (currentLayout == NULL) {
+    int flags = modelIndex().data(CntHistoryModel::FlagsRole).toInt();
+    mIncoming = flags & CntHistoryModel::Incoming ? true : false;
+    mNewMessage = flags & CntHistoryModel::Unseen ? true : false;
     
-        currentLayout = new QGraphicsLinearLayout(this);
-        currentLayout->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
-        currentLayout->setOrientation(Qt::Horizontal);
-        currentLayout->setContentsMargins(0,0,0,0);
-            
-        //Create item widget 
-        itemWidget = new CntHistoryViewItemWidget(this);
-        currentLayout->addItem(itemWidget);
-    
-        //Update item widget contents
-        itemWidget->setDetails(data.at(0), data.at(1), data.at(2), iconName, incoming, newMessage);
-    
-        setLayout(currentLayout);
-    
-    } else {
-        // Find the itemWidget item from the layout and remove it
-        int i = 0;
-        while( itemWidget != static_cast<CntHistoryViewItemWidget*>(currentLayout->itemAt(i)) ) {
-            i++;
+    if (mNewMessage)
+    {
+        if (!mNewItem)
+        {
+            mNewItem = new HbFrameItem(NEW_EVENT_FRAME, HbFrameDrawer::ThreePiecesVertical, this);
+            style()->setItemName(mNewItem, "newitem");
         }
-        currentLayout->removeAt(i);
-        delete itemWidget;
-        
-        //Create new item widget 
-        itemWidget = new CntHistoryViewItemWidget(this);
-        currentLayout->addItem(itemWidget);
-    
-        //Update item widget contents
-        itemWidget->setDetails(data.at(0), data.at(1), data.at(2), iconName, incoming, newMessage);
-    
-        updateGeometry();
     }
+    else
+    {
+        if (mNewItem)
+        {
+            delete mNewItem;
+            mNewItem = NULL;
+        }
+    }
+
+    HbListViewItem::updateChildItems();
 }
 // EOF