messagingapp/msgui/conversationview/src/msgconversationwidget.cpp
changeset 43 35b64624a9e7
parent 34 84197e66a4bd
child 44 36f374c67aa8
equal deleted inserted replaced
34:84197e66a4bd 43:35b64624a9e7
    30 #include <fbs.h>
    30 #include <fbs.h>
    31 #include <sqldb.h>
    31 #include <sqldb.h>
    32 #include <QBool>
    32 #include <QBool>
    33 #include <QCoreApplication>
    33 #include <QCoreApplication>
    34 #include <HbEvent>
    34 #include <HbEvent>
       
    35 #include <HbMainWindow>
       
    36 #include <hbinstance>
    35 
    37 
    36 #include "debugtraces.h"
    38 #include "debugtraces.h"
    37 
    39 
    38 #include "convergedmessage.h"
    40 #include "convergedmessage.h"
    39 #include "conversationsengine.h"
    41 #include "conversationsengine.h"
    41 // Icons
    43 // Icons
    42 const QString MSG_HIGH_PRIORITY_ICON("qtg_small_priority_high");
    44 const QString MSG_HIGH_PRIORITY_ICON("qtg_small_priority_high");
    43 const QString MSG_LOW_PRIORITY_ICON("qtg_small_priority_low");
    45 const QString MSG_LOW_PRIORITY_ICON("qtg_small_priority_low");
    44 const QString MSG_ATTACH_ICON("qtg_small_attachment");
    46 const QString MSG_ATTACH_ICON("qtg_small_attachment");
    45 const QString MSG_AUDIO_ICON("qtg_large_music_player");
    47 const QString MSG_AUDIO_ICON("qtg_large_music_player");
    46 const QString MSG_VIDEO_ICON("qtg_large_video_player");
       
    47 const QString MSG_AUDIO_PLAY_ICON("qtg_large_music_player");
    48 const QString MSG_AUDIO_PLAY_ICON("qtg_large_music_player");
    48 
    49 
    49 
    50 
    50 // Frames
    51 // Frames
    51 const QString CV_RECEIVED_NORMAL_FR("qtg_fr_convlist_received_normal");
    52 const QString CV_RECEIVED_NORMAL_FR("qtg_fr_convlist_received_normal");
   113     HbStyle::setItemName(mBubbleFrameItem, "bubble");
   114     HbStyle::setItemName(mBubbleFrameItem, "bubble");
   114 
   115 
   115     mNewFrameItem = new HbFrameItem(this);
   116     mNewFrameItem = new HbFrameItem(this);
   116     mNewFrameItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesVertical);
   117     mNewFrameItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesVertical);
   117     HbStyle::setItemName(mNewFrameItem, "newItemIcon");
   118     HbStyle::setItemName(mNewFrameItem, "newItemIcon");
       
   119     mSubjectTextItem = new HbTextItem(this);  
       
   120     mSubjectTextItem->setTextWrapping(Hb::TextWordWrap);      
       
   121     HbStyle::setItemName(mSubjectTextItem, "subject");
       
   122     mBodyTextItem = new HbTextItem(this);
       
   123     mBodyTextItem->setTextWrapping(Hb::TextWordWrap);
       
   124     HbStyle::setItemName(mBodyTextItem, "bodyText");
       
   125     mPreviewIconItem = new HbIconItem(this);
       
   126     mPreviewIconItem->setAlignment(Qt::AlignHCenter | Qt::AlignTop);
       
   127     HbStyle::setItemName(mPreviewIconItem, "preview");
       
   128     mPriorityIconItem = new HbIconItem(this);            
       
   129     HbStyle::setItemName(mPriorityIconItem, "priority");
       
   130     mAttachmentIconItem = new HbIconItem(this);
       
   131     HbStyle::setItemName(mAttachmentIconItem, "attachment");
       
   132     mPlayIconItem = new HbIconItem(this);                
       
   133     HbStyle::setItemName(mPlayIconItem, "playIcon");
       
   134     mTimeStampTextItem = new HbTextItem(this);
       
   135     HbStyle::setItemName(mTimeStampTextItem, "timeStamp");
   118     	
   136     	
       
   137     HbMainWindow *mainWindow = hbInstance->allMainWindows()[0];
       
   138     connect(mainWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, 
       
   139 			SLOT(orientationchanged(Qt::Orientation)),Qt::UniqueConnection);
       
   140     polishEvent();
   119     }
   141     }
   120 
   142 
   121 //---------------------------------------------------------------
   143 //---------------------------------------------------------------
   122 // MsgConversationWidget::setSubject
   144 // MsgConversationWidget::setSubject
   123 // @see header file
   145 // @see header file
   124 //---------------------------------------------------------------
   146 //---------------------------------------------------------------
   125 void MsgConversationWidget::setSubject(const QString &subject)
   147 void MsgConversationWidget::setSubject(const QString &subject)
   126 {
   148 {
   127     if (!mSubjectTextItem)
       
   128     {
       
   129         mSubjectTextItem = new HbTextItem(this);  
       
   130         mSubjectTextItem->setTextWrapping(Hb::TextNoWrap);      
       
   131     }
       
   132     HbStyle::setItemName(mSubjectTextItem, "subject");
   149     HbStyle::setItemName(mSubjectTextItem, "subject");
   133     mSubjectTextItem->setText(subject);
   150     mSubjectTextItem->setText(subject);
   134     mSubjectTextItem->show();
   151     mSubjectTextItem->show();
   135 }
   152 }
   136 
   153 
   138 // MsgConversationWidget::setBodyText
   155 // MsgConversationWidget::setBodyText
   139 // @see header file
   156 // @see header file
   140 //---------------------------------------------------------------
   157 //---------------------------------------------------------------
   141 void MsgConversationWidget::setBodyText(const QString &body)
   158 void MsgConversationWidget::setBodyText(const QString &body)
   142 {
   159 {
   143     if (!mBodyTextItem)
       
   144     {
       
   145         mBodyTextItem = new HbTextItem(this);
       
   146         mBodyTextItem->setTextWrapping(Hb::TextWordWrap);
       
   147     }
       
   148     HbStyle::setItemName(mBodyTextItem, "bodyText");
   160     HbStyle::setItemName(mBodyTextItem, "bodyText");
   149 
   161 
   150     mBodyTextItem->setText(body);
   162     mBodyTextItem->setText(body);
   151     mBodyTextItem->show();
   163     mBodyTextItem->show();
   152 }
   164 }
   155 // MsgConversationWidget::setPreviewIcon
   167 // MsgConversationWidget::setPreviewIcon
   156 // @see header file
   168 // @see header file
   157 //---------------------------------------------------------------
   169 //---------------------------------------------------------------
   158 void MsgConversationWidget::setPreviewIcon(HbIcon& icon)
   170 void MsgConversationWidget::setPreviewIcon(HbIcon& icon)
   159 {
   171 {
   160     QCRITICAL_WRITE("setPreviewIcon start.")
   172     QCRITICAL_WRITE("MsgConversationWidget::setPreviewIcon start.")
   161 
   173 
   162     if (!mPreviewIconItem)
       
   163     {
       
   164         mPreviewIconItem = new HbIconItem(this);
       
   165         mPreviewIconItem->setAlignment(Qt::AlignHCenter | Qt::AlignTop);
       
   166     }
       
   167 
   174 
   168     HbStyle::setItemName(mPreviewIconItem, "preview");
   175     HbStyle::setItemName(mPreviewIconItem, "preview");
   169 
   176 
   170     mPreviewIconItem->setIcon(icon);
   177     mPreviewIconItem->setIcon(icon);
   171     mPreviewIconItem->setPreferredSize(icon.size());
   178     mPreviewIconItem->setPreferredSize(icon.size());
   172     mPreviewIconItem->show();
   179     mPreviewIconItem->show();
   173 
   180 
   174     QCRITICAL_WRITE("setPreviewIcon end.")
   181     QCRITICAL_WRITE("MsgConversationWidget::setPreviewIcon end.")
   175 }
   182 }
   176 
   183 
   177 
   184 
   178 //---------------------------------------------------------------
   185 //---------------------------------------------------------------
   179 // MsgConversationWidget::setPriority
   186 // MsgConversationWidget::setPriority
   183 {
   190 {
   184     mPriority = priority;
   191     mPriority = priority;
   185 
   192 
   186     if (priority)
   193     if (priority)
   187     {
   194     {
   188         if (!mPriorityIconItem)
       
   189         {
       
   190             mPriorityIconItem = new HbIconItem(this);            
       
   191         }
       
   192         HbStyle::setItemName(mPriorityIconItem, "priority");
   195         HbStyle::setItemName(mPriorityIconItem, "priority");
   193         if (ConvergedMessage::Low == priority)
   196         if (ConvergedMessage::Low == priority)
   194         {
   197         {
   195             mPriorityIconItem->setIcon(HbIcon(MSG_LOW_PRIORITY_ICON));
   198             mPriorityIconItem->setIcon(HbIcon(MSG_LOW_PRIORITY_ICON));
   196         }
   199         }
   219 {
   222 {
   220     mHasAttachment = attachment;
   223     mHasAttachment = attachment;
   221 
   224 
   222     if (attachment)
   225     if (attachment)
   223     {
   226     {
   224         if (!mAttachmentIconItem)
       
   225         {
       
   226             mAttachmentIconItem = new HbIconItem(this);
       
   227         }
       
   228         HbStyle::setItemName(mAttachmentIconItem, "attachment");
   227         HbStyle::setItemName(mAttachmentIconItem, "attachment");
   229         mAttachmentIconItem->setIcon(HbIcon(MSG_ATTACH_ICON));
   228         mAttachmentIconItem->setIcon(HbIcon(MSG_ATTACH_ICON));
   230         mAttachmentIconItem->show();
   229         mAttachmentIconItem->show();
   231     }
   230     }
   232 }
   231 }
   282 //---------------------------------------------------------------
   281 //---------------------------------------------------------------
   283 void MsgConversationWidget::displayAudioIcon(const QString &iconPath)
   282 void MsgConversationWidget::displayAudioIcon(const QString &iconPath)
   284 {
   283 {
   285     if (hasAudio())
   284     if (hasAudio())
   286     {
   285     {
   287         if (hasImage())
   286         if (!hasImage())
   288         {
   287         {
   289             if (!mPlayIconItem)
   288             HbStyle::setItemName(mPreviewIconItem, "preview");
       
   289             if(iconPath.isEmpty())
   290             {
   290             {
   291                 mPlayIconItem = new HbIconItem(this);                
   291                qreal iconSize = 0;
       
   292                style()->parameter("hb-param-graphic-size-primary-large",iconSize);
       
   293                HbIcon icon(MSG_AUDIO_PLAY_ICON);
       
   294                icon.setHeight(iconSize);
       
   295                icon.setWidth(iconSize);
       
   296                mPreviewIconItem->setIcon(icon);
   292             }
   297             }
       
   298             else
       
   299             {
       
   300                mPreviewIconItem->setIconName(iconPath);
       
   301             }
       
   302             mPreviewIconItem->show();
       
   303         }
       
   304         else
       
   305         {
   293             HbStyle::setItemName(mPlayIconItem, "playIcon");
   306             HbStyle::setItemName(mPlayIconItem, "playIcon");
   294             mPlayIconItem->setIconName(iconPath.isEmpty() ? MSG_AUDIO_PLAY_ICON : iconPath);
   307             mPlayIconItem->setIconName(iconPath.isEmpty() ? MSG_AUDIO_PLAY_ICON : iconPath);
   295             mPlayIconItem->show();
   308             mPlayIconItem->show();          
   296         }
   309         }       
   297         else
       
   298         {
       
   299             if (!mAudioIconItem)
       
   300             {
       
   301                 mAudioIconItem = new HbIconItem(this);    
       
   302             }
       
   303             HbStyle::setItemName(mAudioIconItem, "audioIcon");
       
   304             mAudioIconItem->setIconName(iconPath.isEmpty() ? MSG_AUDIO_PLAY_ICON : iconPath);
       
   305             mAudioIconItem->show();
       
   306            
       
   307         }
       
   308     }
   310     }
   309 }
   311 }
   310 
   312 
   311 //---------------------------------------------------------------
   313 //---------------------------------------------------------------
   312 // MsgConversationWidget::setVideo
   314 // MsgConversationWidget::setVideo
   313 // @see header file
   315 // @see header file
   314 //---------------------------------------------------------------
   316 //---------------------------------------------------------------
   315 void MsgConversationWidget::setVideo(bool video)
   317 void MsgConversationWidget::setVideo(bool video)
   316 {
   318 {
   317     mHasVideo = video;
   319     mHasVideo = video;
   318 
       
   319     if (video)
       
   320     {
       
   321         if (!mVideoIconItem)
       
   322         {
       
   323             mVideoIconItem = new HbIconItem(this);
       
   324         }
       
   325         HbStyle::setItemName(mVideoIconItem, "video");
       
   326         mVideoIconItem->setIcon(HbIcon(MSG_VIDEO_ICON));
       
   327         mVideoIconItem->show();
       
   328         
       
   329     }
       
   330 }
   320 }
   331 
   321 
   332 //---------------------------------------------------------------
   322 //---------------------------------------------------------------
   333 // MsgConversationWidget::hasVideo
   323 // MsgConversationWidget::hasVideo
   334 // @see header file
   324 // @see header file
   379 // @see header file
   369 // @see header file
   380 //---------------------------------------------------------------
   370 //---------------------------------------------------------------
   381 void MsgConversationWidget::setUnread(bool unread)
   371 void MsgConversationWidget::setUnread(bool unread)
   382 {
   372 {
   383     mUnread = unread;
   373     mUnread = unread;
       
   374     // Needed for colour group changes to be visible
       
   375     QCoreApplication::postEvent(this, new HbEvent(HbEvent::ThemeChanged));  
   384 }
   376 }
   385 
   377 
   386 //---------------------------------------------------------------
   378 //---------------------------------------------------------------
   387 // MsgConversationWidget::isUnread
   379 // MsgConversationWidget::isUnread
   388 // @see header file
   380 // @see header file
   437     switch (state)
   429     switch (state)
   438     {
   430     {
   439         case ConvergedMessage::SentState:
   431         case ConvergedMessage::SentState:
   440         {
   432         {
   441             mSendingState = Sent;
   433             mSendingState = Sent;
       
   434             // Needed for colour group changes to be visible
       
   435             QCoreApplication::postEvent(this, new HbEvent(HbEvent::ThemeChanged));  
   442             break;
   436             break;
   443         }
   437         }
   444         case ConvergedMessage::Sending:
   438         case ConvergedMessage::Sending:
   445         {
   439         {
   446             mSendingState = Sending;
   440             mSendingState = Sending;
   524 // MsgConversationWidget::setTimeStamp
   518 // MsgConversationWidget::setTimeStamp
   525 // @see header file
   519 // @see header file
   526 //---------------------------------------------------------------
   520 //---------------------------------------------------------------
   527 void MsgConversationWidget::setTimeStamp(const QString &timeStamp)
   521 void MsgConversationWidget::setTimeStamp(const QString &timeStamp)
   528 {
   522 {
   529     if(!mTimeStampTextItem)
       
   530     {
       
   531 	  mTimeStampTextItem = new HbTextItem(this);
       
   532 	  }
       
   533     HbStyle::setItemName(mTimeStampTextItem, "timeStamp");
   523     HbStyle::setItemName(mTimeStampTextItem, "timeStamp");
   534 
   524 
   535     mTimeStampTextItem->setText(timeStamp);
   525     mTimeStampTextItem->setText(timeStamp);
   536     mTimeStampTextItem->show();
   526     mTimeStampTextItem->show();
   537  
   527  
   660     
   650     
   661 	   if(mPriorityIconItem){
   651 	   if(mPriorityIconItem){
   662 	       HbStyle::setItemName(mPriorityIconItem, "");
   652 	       HbStyle::setItemName(mPriorityIconItem, "");
   663 	        mPriorityIconItem->hide();
   653 	        mPriorityIconItem->hide();
   664 	    }
   654 	    }
   665    
   655          
   666 	    if(mAudioIconItem){
       
   667 	        HbStyle::setItemName(mAudioIconItem, "");
       
   668 	        mAudioIconItem->hide();              
       
   669 	       }
       
   670     
       
   671 	    if(mVideoIconItem){
       
   672 	        HbStyle::setItemName(mVideoIconItem, "");
       
   673 	        mVideoIconItem->hide();
       
   674 	      }
       
   675     
       
   676 	    if(mPlayIconItem){
   656 	    if(mPlayIconItem){
   677 	        HbStyle::setItemName(mPlayIconItem, "");
   657 	        HbStyle::setItemName(mPlayIconItem, "");
   678 	        mPlayIconItem->hide();
   658 	        mPlayIconItem->hide();
   679 	       }
   659 	       }
   680     
   660     
   683 	        mPreviewIconItem->hide();               
   663 	        mPreviewIconItem->hide();               
   684 	       }    
   664 	       }    
   685     	}
   665     	}
   686 
   666 
   687 //---------------------------------------------------------------
   667 //---------------------------------------------------------------
       
   668 // MsgConversationWidget::orientationchanged
       
   669 // @see header file
       
   670 //---------------------------------------------------------------
       
   671 void MsgConversationWidget::orientationchanged(Qt::Orientation orientation)
       
   672 {
       
   673     QDEBUG_WRITE("MsgConversationWidget:orientationchanged start.")
       
   674             
       
   675     repolish();
       
   676     
       
   677     QDEBUG_WRITE("MsgConversationWidget:orientationchanged end.")    
       
   678 }
       
   679 
       
   680 //---------------------------------------------------------------
       
   681 // MsgConversationWidget::polish
       
   682 // @see header file
       
   683 //---------------------------------------------------------------
       
   684 void MsgConversationWidget::polish(HbStyleParameters &params)
       
   685 {   
       
   686     QString bubbleOrig = HbStyle::itemName(mBubbleFrameItem);
       
   687     QString newItemIconOrig = HbStyle::itemName(mNewFrameItem);
       
   688     QString subjectOrig = HbStyle::itemName(mSubjectTextItem);
       
   689     QString bodyTextOrig = HbStyle::itemName(mBodyTextItem);
       
   690     QString previewOrig = HbStyle::itemName(mPreviewIconItem);
       
   691     QString priorityOrig = HbStyle::itemName(mPriorityIconItem);
       
   692     QString attachmentOrig = HbStyle::itemName(mAttachmentIconItem);
       
   693     QString timeStampOrig = HbStyle::itemName(mTimeStampTextItem);
       
   694     QString playIconOrig = HbStyle::itemName(mPlayIconItem);
       
   695 
       
   696     // Make sure that all the sub-items are polished in every polish.
       
   697     HbStyle::setItemName(mBubbleFrameItem, "bubble");
       
   698     HbStyle::setItemName(mNewFrameItem, "newItemIcon");
       
   699     HbStyle::setItemName(mSubjectTextItem, "subject");
       
   700     HbStyle::setItemName(mBodyTextItem, "bodyText");
       
   701     HbStyle::setItemName(mPreviewIconItem, "preview");
       
   702     HbStyle::setItemName(mPriorityIconItem, "priority");
       
   703     HbStyle::setItemName(mAttachmentIconItem, "attachment");
       
   704     HbStyle::setItemName(mTimeStampTextItem, "timeStamp");
       
   705     HbStyle::setItemName(mPlayIconItem, "playIcon");
       
   706 
       
   707     HbWidget::polish(params);
       
   708 
       
   709     HbStyle::setItemName(mBubbleFrameItem, bubbleOrig);
       
   710     HbStyle::setItemName(mNewFrameItem, newItemIconOrig);
       
   711     HbStyle::setItemName(mSubjectTextItem, subjectOrig);
       
   712     HbStyle::setItemName(mBodyTextItem, bodyTextOrig);
       
   713     HbStyle::setItemName(mPreviewIconItem, previewOrig);
       
   714     HbStyle::setItemName(mPriorityIconItem, priorityOrig);
       
   715     HbStyle::setItemName(mAttachmentIconItem, attachmentOrig);
       
   716     HbStyle::setItemName(mTimeStampTextItem, timeStampOrig);
       
   717     HbStyle::setItemName(mPlayIconItem, playIconOrig);
       
   718 }
       
   719 
       
   720 //---------------------------------------------------------------
   688 // MsgConversationWidget::repolishWidget
   721 // MsgConversationWidget::repolishWidget
   689 // @see header file
   722 // @see header file
   690 //---------------------------------------------------------------
   723 //---------------------------------------------------------------
   691 void MsgConversationWidget::repolishWidget()
   724 void MsgConversationWidget::repolishWidget()
   692     	{
   725     	{
   693     	QCoreApplication::postEvent(this, new HbEvent(HbEvent::ThemeChanged));	
       
   694     	repolish();
   726     	repolish();
   695     	}
   727     	}
   696     
   728 
       
   729 
   697 // EOF
   730 // EOF