messagingapp/msgui/conversationview/src/msgconversationviewitem.cpp
changeset 34 84197e66a4bd
parent 31 ebfee66fde93
child 43 35b64624a9e7
equal deleted inserted replaced
31:ebfee66fde93 34:84197e66a4bd
    53 // MsgConversationViewItem::MsgConversationViewItem
    53 // MsgConversationViewItem::MsgConversationViewItem
    54 // Constructor
    54 // Constructor
    55 //---------------------------------------------------------------
    55 //---------------------------------------------------------------
    56 MsgConversationViewItem::MsgConversationViewItem(QGraphicsItem* parent) :
    56 MsgConversationViewItem::MsgConversationViewItem(QGraphicsItem* parent) :
    57     HbListViewItem(parent), mIncoming(false), mConversation(0),
    57     HbListViewItem(parent), mIncoming(false), mConversation(0),
    58             mMessageStateIconItem(0)
    58             mIncomingMsgStateIconItem(0), mOutgoingMsgStateIconItem(0)
    59 {
    59 {
    60 }
    60 }
    61 
    61 
    62 //---------------------------------------------------------------
    62 //---------------------------------------------------------------
    63 // MsgConversationViewItem::MsgConversationViewItem
    63 // MsgConversationViewItem::MsgConversationViewItem
    70 //---------------------------------------------------------------
    70 //---------------------------------------------------------------
    71 // MsgConversationViewItem::createItem
    71 // MsgConversationViewItem::createItem
    72 // Create a new decorator item.
    72 // Create a new decorator item.
    73 //---------------------------------------------------------------
    73 //---------------------------------------------------------------
    74 MsgConversationViewItem* MsgConversationViewItem::createItem()
    74 MsgConversationViewItem* MsgConversationViewItem::createItem()
    75     {
    75 {
    76     return new MsgConversationViewItem(*this);
    76     MsgConversationViewItem *item = new MsgConversationViewItem(*this);
    77     }
    77     item->init();
       
    78     return item;
       
    79 }
    78 
    80 
    79 //---------------------------------------------------------------
    81 //---------------------------------------------------------------
    80 // MsgConversationViewItem::updateChildItems
    82 // MsgConversationViewItem::updateChildItems
    81 //
    83 //
    82 //---------------------------------------------------------------
    84 //---------------------------------------------------------------
    83 void MsgConversationViewItem::updateChildItems()
    85 void MsgConversationViewItem::updateChildItems()
    84     {
    86 {
    85 
       
    86     if (!mMessageStateIconItem)
       
    87         {
       
    88         mMessageStateIconItem = new HbIconItem(this);
       
    89         HbStyle::setItemName(mMessageStateIconItem, "msgStateIcon");
       
    90         }
       
    91     
       
    92     QModelIndex index = modelIndex();
    87     QModelIndex index = modelIndex();
    93 
    88 
    94 #ifdef _DEBUG_TRACES_
    89 #ifdef _DEBUG_TRACES_
    95     qCritical() << "START MsgConversationViewItem::updateChildItems: "
    90     qCritical() << "START MsgConversationViewItem::updateChildItems: "
    96             << index.data(ConvergedMsgId).toInt();
    91             << index.data(ConvergedMsgId).toInt();
   134 
   129 
   135 //---------------------------------------------------------------
   130 //---------------------------------------------------------------
   136 // MsgConversationViewItem::updateSmsTypeItem
   131 // MsgConversationViewItem::updateSmsTypeItem
   137 // @see header file
   132 // @see header file
   138 //---------------------------------------------------------------
   133 //---------------------------------------------------------------
   139 void MsgConversationViewItem::updateSmsTypeItem(const QModelIndex& index, int messageSubType)
   134 void MsgConversationViewItem::updateSmsTypeItem(const QModelIndex& index,
   140     {
   135     int messageSubType)
   141     
   136 {
   142     if (!mConversation)
   137 
   143         {
       
   144         mConversation = new MsgConversationWidget(this);
       
   145         HbStyle::setItemName(mConversation, "msgconvwidget");
       
   146         }
       
   147     mIncoming = false;
   138     mIncoming = false;
   148     mConversation->resetProperties();
   139     mConversation->resetProperties();
   149     
   140     
   150     int direction = index.data(Direction).toInt();
   141     int direction = index.data(Direction).toInt();
   151     
   142     
   152     if (direction == ConvergedMessage::Incoming)
   143     if (direction == ConvergedMessage::Incoming)
   153         {
   144         {
   154         setIncoming(true);
   145         setIncoming(true);
   155         mConversation->setIncoming(true);
   146         mConversation->setIncoming(true);
   156 
   147 
   157         mMessageStateIconItem->setVisible(false);
   148         mIncomingMsgStateIconItem->setVisible(false);
   158         }
   149     }
   159     else if (direction == ConvergedMessage::Outgoing)
   150     else if (direction == ConvergedMessage::Outgoing)
   160         {
   151         {
   161         setIncoming(false);
   152         setIncoming(false);
   162         mConversation->setIncoming(false);
   153         mConversation->setIncoming(false);
   163 
   154 
   236             mConversation->setNotificationState(notificationState);
   227             mConversation->setNotificationState(notificationState);
   237             setNotificationStateIcon(notificationState);
   228             setNotificationStateIcon(notificationState);
   238             }
   229             }
   239         else
   230         else
   240             {
   231             {
   241             mMessageStateIconItem->setVisible(false);
   232             mIncomingMsgStateIconItem->setVisible(false);
   242             }
   233             }
   243         }
   234         }
   244     else if (direction == ConvergedMessage::Outgoing)
   235     else if (direction == ConvergedMessage::Outgoing)
   245         {
   236         {
   246         setIncoming(false);
   237         setIncoming(false);
   295         
   286         
   296         //preview image
   287         //preview image
   297         bool hasImage = (msgProperty & EPreviewImage) ? true : false;
   288         bool hasImage = (msgProperty & EPreviewImage) ? true : false;
   298 
   289 
   299         if (hasImage)
   290         if (hasImage)
   300             {
   291         {
   301             int msgId = index.data(ConvergedMsgId).toInt();
   292             QVariant previewData = index.data(PreviewIcon);
   302             mConversation->setPreviewIconPath(previewPath, msgId);
   293 
       
   294             HbIcon previewIcon;
       
   295             previewIcon = qvariant_cast<HbIcon> (previewData);
       
   296 
       
   297             mConversation->setPreviewIcon(previewIcon);
   303             mConversation->setImage(true);
   298             mConversation->setImage(true);
   304             }
   299             }
   305 
   300 
   306         bool hasVideo = (msgProperty & EPreviewVideo) ? true : false;
   301         bool hasVideo = (msgProperty & EPreviewVideo) ? true : false;
   307         
   302         
   329             {
   324             {
   330             mConversation->setImage(false);
   325             mConversation->setImage(false);
   331             mConversation->setAudio(true);
   326             mConversation->setAudio(true);
   332             mConversation->displayAudioIcon();
   327             mConversation->displayAudioIcon();
   333             mConversation->setSubject(LOC_RINGING_TONE);
   328             mConversation->setSubject(LOC_RINGING_TONE);
       
   329             mConversation->setBodyText(bodyText);
   334             }
   330             }
   335         else if (messageSubType == ConvergedMessage::VCard)
   331         else if (messageSubType == ConvergedMessage::VCard)
   336             {
   332             {
   337             mConversation->setImage(false);
   333             mConversation->setImage(false);
   338             mConversation->setAudio(true);
   334             mConversation->setAudio(true);
   378 // MsgConversationViewItem::containsPoint
   374 // MsgConversationViewItem::containsPoint
   379 //
   375 //
   380 //---------------------------------------------------------------
   376 //---------------------------------------------------------------
   381 bool MsgConversationViewItem::containsPoint(const QPointF& point)
   377 bool MsgConversationViewItem::containsPoint(const QPointF& point)
   382 {
   378 {
   383     return mConversation->boundingRect().
   379     return mConversation->boundingRect(). contains(mConversation->mapFromScene(
   384     contains(mConversation->mapFromScene(point));
   380         point));
   385 }
   381 }
   386 
   382 
   387 //---------------------------------------------------------------
   383 //---------------------------------------------------------------
   388 // MsgConversationViewItem::setIncoming
   384 // MsgConversationViewItem::setIncoming
   389 // @see header file
   385 // @see header file
   390 //---------------------------------------------------------------
   386 //---------------------------------------------------------------
   391 void MsgConversationViewItem::setIncoming(bool incoming)
   387 void MsgConversationViewItem::setIncoming(bool incoming)
   392 {
   388 {
   393     mIncoming = incoming;
   389     mIncoming = incoming;
       
   390 
       
   391     if (mIncoming)
       
   392     {
       
   393         HbStyle::setItemName(mOutgoingMsgStateIconItem, "");
       
   394         mOutgoingMsgStateIconItem->setVisible(false);
       
   395         HbStyle::setItemName(mIncomingMsgStateIconItem,
       
   396             "msgStateIconIncoming");
       
   397     }
       
   398     else
       
   399     {
       
   400         HbStyle::setItemName(mIncomingMsgStateIconItem, "");
       
   401         mIncomingMsgStateIconItem->setVisible(false);
       
   402         HbStyle::setItemName(mOutgoingMsgStateIconItem,
       
   403             "msgStateIconOutgoing");
       
   404     }
   394 }
   405 }
   395 
   406 
   396 //---------------------------------------------------------------
   407 //---------------------------------------------------------------
   397 // MsgConversationViewItem::isIncoming
   408 // MsgConversationViewItem::isIncoming
   398 // @see header file
   409 // @see header file
   406 // MsgConversationViewItem::setMessageStateIcon
   417 // MsgConversationViewItem::setMessageStateIcon
   407 // @see header file
   418 // @see header file
   408 //---------------------------------------------------------------
   419 //---------------------------------------------------------------
   409 void MsgConversationViewItem::setMessageStateIcon(int messageState)
   420 void MsgConversationViewItem::setMessageStateIcon(int messageState)
   410 {
   421 {
   411     HbIconAnimator& iconAnimator = mMessageStateIconItem->animator();
   422     HbIconAnimator& iconAnimator = mOutgoingMsgStateIconItem->animator();
   412     HbIconAnimationManager* iconAnimationManager = HbIconAnimationManager::global();
   423     HbIconAnimationManager* iconAnimationManager =
       
   424             HbIconAnimationManager::global();
   413     switch (messageState)
   425     switch (messageState)
   414     {
   426     {
   415         case ConvergedMessage::Waiting:
   427         case ConvergedMessage::Waiting:
   416         case ConvergedMessage::Scheduled:
   428         case ConvergedMessage::Scheduled:
   417         case ConvergedMessage::Sending:
   429         case ConvergedMessage::Sending:
   418         { 
   430         {
   419  	        bool defined = iconAnimationManager->addDefinitionFile(ANIMATION_FILE);
   431             bool defined = iconAnimationManager->addDefinitionFile(
   420      	    HbIcon animIcon;
   432                 ANIMATION_FILE);
       
   433             HbIcon animIcon;
   421             animIcon.setIconName(ANIMATION_ICON_NAME);
   434             animIcon.setIconName(ANIMATION_ICON_NAME);
   422             QSizeF size = mMessageStateIconItem->size();
   435             QSizeF size = mOutgoingMsgStateIconItem->size();
   423             mMessageStateIconItem->setIcon(animIcon);
   436             mOutgoingMsgStateIconItem->setIcon(animIcon);
   424             mMessageStateIconItem->setVisible(true);
   437             mOutgoingMsgStateIconItem->setVisible(true);
   425             iconAnimator.startAnimation();
   438             iconAnimator.startAnimation();
   426             repolish();
       
   427             break;
   439             break;
   428         }     
   440         }     
   429         case ConvergedMessage::Suspended:
   441         case ConvergedMessage::Suspended:
   430         {
   442         {
   431            iconAnimator.stopAnimation();
   443             iconAnimator.stopAnimation();
   432            mMessageStateIconItem->setIcon(MSG_OUTBOX_ICON);
   444             mOutgoingMsgStateIconItem->setIcon(MSG_OUTBOX_ICON);
   433            mMessageStateIconItem->setVisible(true);
   445             mOutgoingMsgStateIconItem->setVisible(true);
   434            break;
   446             break;
   435         
   447 
   436         }
   448         }
   437         case ConvergedMessage::Resend:
   449         case ConvergedMessage::Resend:
   438         {
   450         {
   439             iconAnimator.stopAnimation();
   451             iconAnimator.stopAnimation();
   440             mMessageStateIconItem->setIcon(MSG_OUTBOX_ICON);
   452             mOutgoingMsgStateIconItem->setIcon(MSG_OUTBOX_ICON);
   441             mMessageStateIconItem->setVisible(true);
   453             mOutgoingMsgStateIconItem->setVisible(true);
   442             break;
   454             break;
   443         }
   455         }
   444         case ConvergedMessage::Failed:
   456         case ConvergedMessage::Failed:
   445         {
   457         {
   446             iconAnimator.stopAnimation();
   458             iconAnimator.stopAnimation();
   447             mMessageStateIconItem->setIcon(MSG_FAIL_ICON);
   459             mOutgoingMsgStateIconItem->setIcon(MSG_FAIL_ICON);
   448             mMessageStateIconItem->setVisible(true);
   460             mOutgoingMsgStateIconItem->setVisible(true);
   449             break;
   461             break;
   450         }   
   462         }   
   451         case ConvergedMessage::Unknown:
   463         case ConvergedMessage::Unknown:
   452         default:
   464         default:
   453         {
   465         {
   454             iconAnimator.stopAnimation();
   466             iconAnimator.stopAnimation();
   455             mMessageStateIconItem->setVisible(false);
   467             mOutgoingMsgStateIconItem->setVisible(false);
   456             break;
   468             break;
   457         }
   469         }
   458     }
   470     }
   459 }
   471 }
   460 
   472 
   463 // @see header file
   475 // @see header file
   464 //---------------------------------------------------------------
   476 //---------------------------------------------------------------
   465 
   477 
   466 void MsgConversationViewItem::setNotificationStateIcon(int notificationState)
   478 void MsgConversationViewItem::setNotificationStateIcon(int notificationState)
   467 {
   479 {
   468     HbIconAnimator& iconAnimator = mMessageStateIconItem->animator();
   480     HbIconAnimator& iconAnimator = mIncomingMsgStateIconItem->animator();
   469     HbIconAnimationManager* iconAnimationManager = HbIconAnimationManager::global();
   481     HbIconAnimationManager* iconAnimationManager =
       
   482             HbIconAnimationManager::global();
   470     switch (notificationState)
   483     switch (notificationState)
   471     {
   484     {
   472         case ConvergedMessage::NotifRetrieving:
   485         case ConvergedMessage::NotifRetrieving:
   473         case ConvergedMessage::NotifWaiting:
   486         case ConvergedMessage::NotifWaiting:
   474         { 
   487         { 
   475             //TODO: Temp icon until official icons are received
   488             //TODO: Temp icon until official icons are received
   476             bool defined = iconAnimationManager->addDefinitionFile(ANIMATION_FILE);
   489             bool defined = iconAnimationManager->addDefinitionFile(
       
   490                 ANIMATION_FILE);
   477             HbIcon animIcon;
   491             HbIcon animIcon;
   478             animIcon.setIconName(ANIMATION_ICON_NAME);
   492             animIcon.setIconName(ANIMATION_ICON_NAME);
   479             QSizeF size = mMessageStateIconItem->size();
   493             QSizeF size = mIncomingMsgStateIconItem->size();
   480             mMessageStateIconItem->setIcon(animIcon);
   494             mIncomingMsgStateIconItem->setIcon(animIcon);
   481             mMessageStateIconItem->setVisible(true);
   495             mIncomingMsgStateIconItem->setVisible(true);
   482             iconAnimator.startAnimation();
   496             iconAnimator.startAnimation();
   483             repolish();
       
   484             break;
   497             break;
   485         }     
   498         }     
   486         default:
   499         default:
   487         {
   500         {
   488             iconAnimator.stopAnimation();
   501             iconAnimator.stopAnimation();
   489             mMessageStateIconItem->setVisible(false);
   502             mIncomingMsgStateIconItem->setVisible(false);
   490             break;
   503             break;
   491         }
   504         }
   492     }
   505     }
   493 }
   506 }
   494 
   507 
   499 void MsgConversationViewItem::pressStateChanged (bool pressed, bool animate)
   512 void MsgConversationViewItem::pressStateChanged (bool pressed, bool animate)
   500 {
   513 {
   501     mConversation->pressStateChanged(pressed, animate);
   514     mConversation->pressStateChanged(pressed, animate);
   502 }
   515 }
   503 
   516 
       
   517 //---------------------------------------------------------------
       
   518 // MsgConversationViewItem::init
       
   519 // @see header file
       
   520 //---------------------------------------------------------------
       
   521 void MsgConversationViewItem::init()
       
   522 {
       
   523     mConversation = new MsgConversationWidget(this);
       
   524     HbStyle::setItemName(mConversation, "msgconvwidget");
       
   525 
       
   526     mIncomingMsgStateIconItem = new HbIconItem(this);
       
   527 
       
   528     mOutgoingMsgStateIconItem = new HbIconItem(this);
       
   529 }
       
   530 
   504 // EOF
   531 // EOF