messagingapp/msgui/msgapp/src/msglistviewitem.cpp
changeset 48 4f501b74aeb1
parent 38 4e4b6adb1024
child 51 3507212d340e
equal deleted inserted replaced
46:b1f0785c289d 48:4f501b74aeb1
    25 #include <HbTextItem>
    25 #include <HbTextItem>
    26 #include <HbFrameItem>
    26 #include <HbFrameItem>
    27 #include <HbIconItem>
    27 #include <HbIconItem>
    28 #include <QCoreApplication>
    28 #include <QCoreApplication>
    29 #include <HbEvent>
    29 #include <HbEvent>
       
    30 #include <HbInstance>
    30 
    31 
    31 #include "msgcommondefines.h"
    32 #include "msgcommondefines.h"
    32 #include "conversationsengine.h"
    33 #include "conversationsengine.h"
    33 #include "conversationsenginedefines.h"
    34 #include "conversationsenginedefines.h"
    34 #include "msgutils.h"
    35 #include "msgutils.h"
    36 #include "debugtraces.h"
    37 #include "debugtraces.h"
    37 
    38 
    38 #define LOC_RINGING_TONE hbTrId("txt_messaging_dpopinfo_ringing_tone")
    39 #define LOC_RINGING_TONE hbTrId("txt_messaging_dpopinfo_ringing_tone")
    39 #define LOC_MSG_SEND_FAILED hbTrId("txt_messaging_list_message_sending_failed")
    40 #define LOC_MSG_SEND_FAILED hbTrId("txt_messaging_list_message_sending_failed")
    40 #define LOC_MSG_OUTGOING hbTrId("txt_messaging_list_outgoing_message")
    41 #define LOC_MSG_OUTGOING hbTrId("txt_messaging_list_outgoing_message")
    41 #define LOC_MSG_RESEND_AT hbTrId("Resend at ")
    42 #define LOC_MSG_RESEND_AT hbTrId("txt_messaging_list_listview_resend_at_time")
    42 #define LOC_BUSINESS_CARD hbTrId("txt_messaging_list_business_card")
    43 #define LOC_BUSINESS_CARD hbTrId("txt_messaging_list_business_card")
    43 #define LOC_CALENDAR_EVENT hbTrId("txt_messaging_list_calendar_event")
    44 #define LOC_CALENDAR_EVENT hbTrId("txt_messaging_list_calendar_event")
    44 #define LOC_UNSUPPORTED_MSG_TYPE hbTrId("txt_messaging_list_unsupported_message_type")
    45 #define LOC_UNSUPPORTED_MSG_TYPE hbTrId("txt_messaging_list_unsupported_message_type")
    45 #define LOC_RECEIVED_FILES hbTrId("txt_messaging_list_received_files")
    46 #define LOC_RECEIVED_FILES hbTrId("txt_messaging_list_received_files")
    46 
    47 
    59     mNewMsgIndicatorItem(NULL),
    60     mNewMsgIndicatorItem(NULL),
    60     mAddressLabelItem(NULL),
    61     mAddressLabelItem(NULL),
    61     mTimestampItem(NULL),
    62     mTimestampItem(NULL),
    62     mPreviewLabelItem(NULL),
    63     mPreviewLabelItem(NULL),
    63     mUnreadCountItem(NULL),
    64     mUnreadCountItem(NULL),
    64     mPresenceIndicatorItem(NULL)
    65     mMsgCommonIndicatorItem(NULL)
    65 {
    66 {
    66 }
    67 }
    67 
    68 
    68 //---------------------------------------------------------------
    69 //---------------------------------------------------------------
    69 // HbAbstractViewItem::createItem
    70 // HbAbstractViewItem::createItem
    97         QString contactAddress = modelIndex().data(ConversationAddress).toString();
    98         QString contactAddress = modelIndex().data(ConversationAddress).toString();
    98         contactName.append(displayName);
    99         contactName.append(displayName);
    99     }
   100     }
   100     mAddressLabelItem->setText(contactName);
   101     mAddressLabelItem->setText(contactName);
   101 
   102 
   102     // Unread message count
       
   103     int unreadCount = modelIndex().data(UnreadCount).toInt();
       
   104 
       
   105     if (unreadCount > 0)
       
   106     {
       
   107         QString unRead(tr("(%n)", "", unreadCount));
       
   108         mUnreadCountItem->setText(unRead);
       
   109         if(!mUnReadMsg)
       
   110         {
       
   111             mUnReadMsg = true;
       
   112             mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(NEW_ITEM_FRAME);
       
   113             repolish();
       
   114             // Needed for colour group changes to be visible
       
   115             QCoreApplication::postEvent(this, new HbEvent(HbEvent::ThemeChanged));  
       
   116         }       
       
   117     }
       
   118     else
       
   119     {
       
   120         mUnreadCountItem->setText(QString());        
       
   121         if(mUnReadMsg)
       
   122         {
       
   123             mUnReadMsg = false;  
       
   124             mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(QString());
       
   125             repolish();
       
   126             // Needed for colour group changes to be visible
       
   127             QCoreApplication::postEvent(this, new HbEvent(HbEvent::ThemeChanged));  
       
   128         }
       
   129     }
       
   130 
       
   131     HbListViewItem::updateChildItems();
   103     HbListViewItem::updateChildItems();
   132 }
   104 }
   133 
   105 
   134 //---------------------------------------------------------------
   106 //---------------------------------------------------------------
   135 // MsgListViewItem::initItems
   107 // MsgListViewItem::initItems
   149         mPreviewLabelItem = new HbTextItem(this);
   121         mPreviewLabelItem = new HbTextItem(this);
   150         mPreviewLabelItem->setTextWrapping(Hb::TextWordWrap);
   122         mPreviewLabelItem->setTextWrapping(Hb::TextWordWrap);
   151         HbStyle::setItemName(mPreviewLabelItem, "previewLabel");
   123         HbStyle::setItemName(mPreviewLabelItem, "previewLabel");
   152     }
   124     }
   153     if (!mUnreadCountItem) {
   125     if (!mUnreadCountItem) {
   154         mUnreadCountItem = new HbTextItem(this);
   126        mUnreadCountItem = new HbTextItem(this);
   155         HbStyle::setItemName(mUnreadCountItem, "unreadCount");
   127        HbStyle::setItemName(mUnreadCountItem, "unreadCount");
   156     }
   128     }
   157     if (!mNewMsgIndicatorItem) {
   129     if (!mNewMsgIndicatorItem) {
   158         mNewMsgIndicatorItem = new HbFrameItem(this);
   130         mNewMsgIndicatorItem = new HbFrameItem(this);
   159         HbStyle::setItemName(mNewMsgIndicatorItem, "newMsgIndicator");
   131         HbStyle::setItemName(mNewMsgIndicatorItem, "newMsgIndicator");
   160 
   132 
   161         mNewMsgIndicatorItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesVertical);
   133         mNewMsgIndicatorItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesVertical);
   162     }
   134     }
   163     if (!mPresenceIndicatorItem) {
   135     if (!mMsgCommonIndicatorItem) {
   164         mPresenceIndicatorItem = new HbIconItem(this);
   136         mMsgCommonIndicatorItem = new HbIconItem(this);
   165         HbStyle::setItemName(mPresenceIndicatorItem, "presenceIndicator");
   137         HbStyle::setItemName(mMsgCommonIndicatorItem, "msgCommonIndicator");
   166     }
   138     }
   167 }
   139     mUnreadCountItem->hide();
       
   140     mMsgCommonIndicatorItem->hide();
       
   141     
       
   142     HbMainWindow *mainWindow = hbInstance->allMainWindows()[0];
       
   143     
       
   144     connect(mainWindow, SIGNAL(orientationChanged(Qt::Orientation)), this,
       
   145         SLOT(orientationchanged(Qt::Orientation)), Qt::UniqueConnection);
       
   146 }
       
   147 
   168 //---------------------------------------------------------------
   148 //---------------------------------------------------------------
   169 // MsgListViewItem::defaultPreviewText
   149 // MsgListViewItem::defaultPreviewText
   170 // @see header
   150 // @see header
   171 //---------------------------------------------------------------
   151 //---------------------------------------------------------------
   172 QString MsgListViewItem::defaultPreviewText(int msgType, int msgSubType)
   152 QString MsgListViewItem::defaultPreviewText(int msgType, int msgSubType)
   191             previewText = bodyText;
   171             previewText = bodyText;
   192         }
   172         }
   193         else {
   173         else {
   194             previewText = LOC_UNSUPPORTED_MSG_TYPE;
   174             previewText = LOC_UNSUPPORTED_MSG_TYPE;
   195         }
   175         }
   196 
       
   197         mPresenceIndicatorItem->setVisible(false);
       
   198     }
   176     }
   199     else if (msgType == ConvergedMessage::BT) {
   177     else if (msgType == ConvergedMessage::BT) {
   200 
   178 
   201         if (msgSubType == ConvergedMessage::VCard) {
   179         if (msgSubType == ConvergedMessage::VCard) {
   202             previewText = LOC_BUSINESS_CARD;
   180             previewText = LOC_BUSINESS_CARD;
   204             previewText.append(bodyText);
   182             previewText.append(bodyText);
   205         }
   183         }
   206         else {
   184         else {
   207             previewText = bodyText;
   185             previewText = bodyText;
   208         }
   186         }
   209 
   187         
   210         mPresenceIndicatorItem->setIconName(BT_ICON);
   188         setCommonIndicator(BT_ICON);
   211         mPresenceIndicatorItem->setVisible(true);
       
   212     }
   189     }
   213     else {
   190     else {
   214         // All message types except BIO & BT.
   191         // All message types except BIO & BT.
   215         previewText = modelIndex().data(BodyText).toString();
   192         previewText = modelIndex().data(BodyText).toString();
   216         mPresenceIndicatorItem->setVisible(false);
       
   217     }
   193     }
   218     return previewText;
   194     return previewText;
   219 }
   195 }
   220 
   196 
   221 
   197 
   241     int msgSubType = modelIndex().data(MessageSubType).toInt();
   217     int msgSubType = modelIndex().data(MessageSubType).toInt();
   242     int sendState = modelIndex().data(SendingState).toInt();
   218     int sendState = modelIndex().data(SendingState).toInt();
   243     int msgDirection = modelIndex().data(Direction).toInt();
   219     int msgDirection = modelIndex().data(Direction).toInt();
   244     QString previewText;
   220     QString previewText;
   245     if (ConvergedMessage::Incoming == msgDirection) {
   221     if (ConvergedMessage::Incoming == msgDirection) {
   246         previewText = defaultPreviewText(msgType, msgSubType);
   222         if( ConvergedMessage::BT != msgType)            
       
   223             {
       
   224             setUnreadCountStatus();
       
   225             }
       
   226         previewText = defaultPreviewText(msgType, msgSubType);        
   247     }
   227     }
   248     else if (msgDirection == ConvergedMessage::Outgoing) {
   228     else if (msgDirection == ConvergedMessage::Outgoing) {
   249 
   229         
       
   230         setUnreadCountStatus();
       
   231         
   250         switch (sendState) {
   232         switch (sendState) {
   251         case ConvergedMessage::Resend:
   233         case ConvergedMessage::Resend:
   252         {
   234         {
   253             previewText = LOC_MSG_RESEND_AT + dateString;
   235             previewText = LOC_MSG_RESEND_AT + dateString;
   254             dateString = QString();
   236             dateString = QString();            
   255             mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON);
   237             setCommonIndicator(MSG_OUTGOING_ICON);
   256             mPresenceIndicatorItem->setVisible(true);
       
   257             break;
   238             break;
   258         }
   239         }
   259         case ConvergedMessage::Sending:
   240         case ConvergedMessage::Sending:
   260         case ConvergedMessage::Suspended:
   241         case ConvergedMessage::Suspended:
   261         case ConvergedMessage::Scheduled:
   242         case ConvergedMessage::Scheduled:
   262         case ConvergedMessage::Waiting:
   243         case ConvergedMessage::Waiting:
   263         {
   244         {
   264             previewText = QString(LOC_MSG_OUTGOING);
   245             previewText = QString(LOC_MSG_OUTGOING);            
   265             mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON);
   246             setCommonIndicator(MSG_OUTGOING_ICON);
   266             mPresenceIndicatorItem->setVisible(true);
       
   267             break;
   247             break;
   268         }
   248         }
   269         case ConvergedMessage::Failed:
   249         case ConvergedMessage::Failed:
   270         {
   250         {
   271             previewText = QString(LOC_MSG_SEND_FAILED);
   251             previewText = QString(LOC_MSG_SEND_FAILED);
   272             mPresenceIndicatorItem->setIconName(MSG_FAILED_ICON);
   252             setCommonIndicator(MSG_FAILED_ICON);
   273             mPresenceIndicatorItem->setVisible(true);
       
   274             break;
   253             break;
   275         }
   254         }
   276         default:
   255         default:
   277         {
   256         {
   278             // Successful case
   257         // Successful case
       
   258         if( ConvergedMessage::BT != msgType)
       
   259             {
       
   260             setUnreadCountStatus();
       
   261             }
       
   262             
   279             previewText = defaultPreviewText(msgType, msgSubType);
   263             previewText = defaultPreviewText(msgType, msgSubType);
   280             break;
   264             break;
   281         }
   265         }
   282         }
   266         }
   283     }
   267     }
   315 bool MsgListViewItem::hasUnReadMsg()
   299 bool MsgListViewItem::hasUnReadMsg()
   316 {
   300 {
   317     return mUnReadMsg;
   301     return mUnReadMsg;
   318 }
   302 }
   319 
   303 
       
   304 //---------------------------------------------------------------
       
   305 // MsgListViewItem::setUnreadCountStatus
       
   306 // @see header file
       
   307 //---------------------------------------------------------------
       
   308 void MsgListViewItem::setUnreadCountStatus()
       
   309     {
       
   310     // Unread message count
       
   311     int unreadCount = modelIndex().data(UnreadCount).toInt();
       
   312 
       
   313     if (unreadCount > 0)
       
   314         {
       
   315         QString unRead(tr("(%n)", "", unreadCount));
       
   316       
       
   317         mMsgCommonIndicatorItem->hide();
       
   318         mUnreadCountItem->setText(unRead);
       
   319         mUnreadCountItem->show();
       
   320                 
       
   321         if (!mUnReadMsg)
       
   322             {
       
   323             mUnReadMsg = true;
       
   324             mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(
       
   325                     NEW_ITEM_FRAME);
       
   326             repolish();
       
   327             // Needed for colour group changes to be visible
       
   328             QCoreApplication::postEvent(this, new HbEvent(
       
   329                     HbEvent::ThemeChanged));
       
   330             }
       
   331         }
       
   332     else
       
   333         {
       
   334         if (mUnReadMsg)
       
   335             {
       
   336             mUnReadMsg = false;
       
   337             mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(
       
   338                     QString());
       
   339             repolish();
       
   340             // Needed for colour group changes to be visible
       
   341             QCoreApplication::postEvent(this, new HbEvent(
       
   342                     HbEvent::ThemeChanged));
       
   343             }
       
   344         }
       
   345     }
       
   346 
       
   347 //---------------------------------------------------------------
       
   348 // MsgListViewItem::setCommonIndicator
       
   349 // @see header file
       
   350 //---------------------------------------------------------------
       
   351 void MsgListViewItem::setCommonIndicator(const QString& string)
       
   352     {
       
   353         mUnreadCountItem->hide();
       
   354         mMsgCommonIndicatorItem->setIconName(string);
       
   355         mMsgCommonIndicatorItem->show();
       
   356     }
       
   357 
       
   358 //---------------------------------------------------------------
       
   359 // MsgListViewItem::orientationchanged
       
   360 // @see header file
       
   361 //---------------------------------------------------------------
       
   362 void MsgListViewItem::orientationchanged(Qt::Orientation orientation)
       
   363 {
       
   364     Q_UNUSED(orientation)
       
   365     repolish();
       
   366 }
       
   367 
   320 //EOF
   368 //EOF