messagingapp/msgui/msgapp/src/msglistviewitem.cpp
changeset 48 4f501b74aeb1
parent 38 4e4b6adb1024
child 51 3507212d340e
--- a/messagingapp/msgui/msgapp/src/msglistviewitem.cpp	Tue Jul 13 22:09:22 2010 +0530
+++ b/messagingapp/msgui/msgapp/src/msglistviewitem.cpp	Sun Jul 25 18:59:19 2010 +0530
@@ -27,6 +27,7 @@
 #include <HbIconItem>
 #include <QCoreApplication>
 #include <HbEvent>
+#include <HbInstance>
 
 #include "msgcommondefines.h"
 #include "conversationsengine.h"
@@ -38,7 +39,7 @@
 #define LOC_RINGING_TONE hbTrId("txt_messaging_dpopinfo_ringing_tone")
 #define LOC_MSG_SEND_FAILED hbTrId("txt_messaging_list_message_sending_failed")
 #define LOC_MSG_OUTGOING hbTrId("txt_messaging_list_outgoing_message")
-#define LOC_MSG_RESEND_AT hbTrId("Resend at ")
+#define LOC_MSG_RESEND_AT hbTrId("txt_messaging_list_listview_resend_at_time")
 #define LOC_BUSINESS_CARD hbTrId("txt_messaging_list_business_card")
 #define LOC_CALENDAR_EVENT hbTrId("txt_messaging_list_calendar_event")
 #define LOC_UNSUPPORTED_MSG_TYPE hbTrId("txt_messaging_list_unsupported_message_type")
@@ -61,7 +62,7 @@
     mTimestampItem(NULL),
     mPreviewLabelItem(NULL),
     mUnreadCountItem(NULL),
-    mPresenceIndicatorItem(NULL)
+    mMsgCommonIndicatorItem(NULL)
 {
 }
 
@@ -99,35 +100,6 @@
     }
     mAddressLabelItem->setText(contactName);
 
-    // Unread message count
-    int unreadCount = modelIndex().data(UnreadCount).toInt();
-
-    if (unreadCount > 0)
-    {
-        QString unRead(tr("(%n)", "", unreadCount));
-        mUnreadCountItem->setText(unRead);
-        if(!mUnReadMsg)
-        {
-            mUnReadMsg = true;
-            mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(NEW_ITEM_FRAME);
-            repolish();
-            // Needed for colour group changes to be visible
-            QCoreApplication::postEvent(this, new HbEvent(HbEvent::ThemeChanged));  
-        }       
-    }
-    else
-    {
-        mUnreadCountItem->setText(QString());        
-        if(mUnReadMsg)
-        {
-            mUnReadMsg = false;  
-            mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(QString());
-            repolish();
-            // Needed for colour group changes to be visible
-            QCoreApplication::postEvent(this, new HbEvent(HbEvent::ThemeChanged));  
-        }
-    }
-
     HbListViewItem::updateChildItems();
 }
 
@@ -151,8 +123,8 @@
         HbStyle::setItemName(mPreviewLabelItem, "previewLabel");
     }
     if (!mUnreadCountItem) {
-        mUnreadCountItem = new HbTextItem(this);
-        HbStyle::setItemName(mUnreadCountItem, "unreadCount");
+       mUnreadCountItem = new HbTextItem(this);
+       HbStyle::setItemName(mUnreadCountItem, "unreadCount");
     }
     if (!mNewMsgIndicatorItem) {
         mNewMsgIndicatorItem = new HbFrameItem(this);
@@ -160,11 +132,19 @@
 
         mNewMsgIndicatorItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesVertical);
     }
-    if (!mPresenceIndicatorItem) {
-        mPresenceIndicatorItem = new HbIconItem(this);
-        HbStyle::setItemName(mPresenceIndicatorItem, "presenceIndicator");
+    if (!mMsgCommonIndicatorItem) {
+        mMsgCommonIndicatorItem = new HbIconItem(this);
+        HbStyle::setItemName(mMsgCommonIndicatorItem, "msgCommonIndicator");
     }
+    mUnreadCountItem->hide();
+    mMsgCommonIndicatorItem->hide();
+    
+    HbMainWindow *mainWindow = hbInstance->allMainWindows()[0];
+    
+    connect(mainWindow, SIGNAL(orientationChanged(Qt::Orientation)), this,
+        SLOT(orientationchanged(Qt::Orientation)), Qt::UniqueConnection);
 }
+
 //---------------------------------------------------------------
 // MsgListViewItem::defaultPreviewText
 // @see header
@@ -193,8 +173,6 @@
         else {
             previewText = LOC_UNSUPPORTED_MSG_TYPE;
         }
-
-        mPresenceIndicatorItem->setVisible(false);
     }
     else if (msgType == ConvergedMessage::BT) {
 
@@ -206,14 +184,12 @@
         else {
             previewText = bodyText;
         }
-
-        mPresenceIndicatorItem->setIconName(BT_ICON);
-        mPresenceIndicatorItem->setVisible(true);
+        
+        setCommonIndicator(BT_ICON);
     }
     else {
         // All message types except BIO & BT.
         previewText = modelIndex().data(BodyText).toString();
-        mPresenceIndicatorItem->setVisible(false);
     }
     return previewText;
 }
@@ -243,17 +219,22 @@
     int msgDirection = modelIndex().data(Direction).toInt();
     QString previewText;
     if (ConvergedMessage::Incoming == msgDirection) {
-        previewText = defaultPreviewText(msgType, msgSubType);
+        if( ConvergedMessage::BT != msgType)            
+            {
+            setUnreadCountStatus();
+            }
+        previewText = defaultPreviewText(msgType, msgSubType);        
     }
     else if (msgDirection == ConvergedMessage::Outgoing) {
-
+        
+        setUnreadCountStatus();
+        
         switch (sendState) {
         case ConvergedMessage::Resend:
         {
             previewText = LOC_MSG_RESEND_AT + dateString;
-            dateString = QString();
-            mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON);
-            mPresenceIndicatorItem->setVisible(true);
+            dateString = QString();            
+            setCommonIndicator(MSG_OUTGOING_ICON);
             break;
         }
         case ConvergedMessage::Sending:
@@ -261,21 +242,24 @@
         case ConvergedMessage::Scheduled:
         case ConvergedMessage::Waiting:
         {
-            previewText = QString(LOC_MSG_OUTGOING);
-            mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON);
-            mPresenceIndicatorItem->setVisible(true);
+            previewText = QString(LOC_MSG_OUTGOING);            
+            setCommonIndicator(MSG_OUTGOING_ICON);
             break;
         }
         case ConvergedMessage::Failed:
         {
             previewText = QString(LOC_MSG_SEND_FAILED);
-            mPresenceIndicatorItem->setIconName(MSG_FAILED_ICON);
-            mPresenceIndicatorItem->setVisible(true);
+            setCommonIndicator(MSG_FAILED_ICON);
             break;
         }
         default:
         {
-            // Successful case
+        // Successful case
+        if( ConvergedMessage::BT != msgType)
+            {
+            setUnreadCountStatus();
+            }
+            
             previewText = defaultPreviewText(msgType, msgSubType);
             break;
         }
@@ -317,4 +301,68 @@
     return mUnReadMsg;
 }
 
+//---------------------------------------------------------------
+// MsgListViewItem::setUnreadCountStatus
+// @see header file
+//---------------------------------------------------------------
+void MsgListViewItem::setUnreadCountStatus()
+    {
+    // Unread message count
+    int unreadCount = modelIndex().data(UnreadCount).toInt();
+
+    if (unreadCount > 0)
+        {
+        QString unRead(tr("(%n)", "", unreadCount));
+      
+        mMsgCommonIndicatorItem->hide();
+        mUnreadCountItem->setText(unRead);
+        mUnreadCountItem->show();
+                
+        if (!mUnReadMsg)
+            {
+            mUnReadMsg = true;
+            mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(
+                    NEW_ITEM_FRAME);
+            repolish();
+            // Needed for colour group changes to be visible
+            QCoreApplication::postEvent(this, new HbEvent(
+                    HbEvent::ThemeChanged));
+            }
+        }
+    else
+        {
+        if (mUnReadMsg)
+            {
+            mUnReadMsg = false;
+            mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(
+                    QString());
+            repolish();
+            // Needed for colour group changes to be visible
+            QCoreApplication::postEvent(this, new HbEvent(
+                    HbEvent::ThemeChanged));
+            }
+        }
+    }
+
+//---------------------------------------------------------------
+// MsgListViewItem::setCommonIndicator
+// @see header file
+//---------------------------------------------------------------
+void MsgListViewItem::setCommonIndicator(const QString& string)
+    {
+        mUnreadCountItem->hide();
+        mMsgCommonIndicatorItem->setIconName(string);
+        mMsgCommonIndicatorItem->show();
+    }
+
+//---------------------------------------------------------------
+// MsgListViewItem::orientationchanged
+// @see header file
+//---------------------------------------------------------------
+void MsgListViewItem::orientationchanged(Qt::Orientation orientation)
+{
+    Q_UNUSED(orientation)
+    repolish();
+}
+
 //EOF