messagingapp/msgui/appengine/src/conversationsmodel.cpp
changeset 48 4f501b74aeb1
parent 46 b1f0785c289d
child 51 3507212d340e
equal deleted inserted replaced
46:b1f0785c289d 48:4f501b74aeb1
    44 // preview sql query
    44 // preview sql query
    45 _LIT(KSelectConvMsgsStmt, "SELECT message_id, msg_processingstate, subject, body_text, preview_path, msg_property, preview_icon FROM conversation_messages WHERE message_id=:message_id ");
    45 _LIT(KSelectConvMsgsStmt, "SELECT message_id, msg_processingstate, subject, body_text, preview_path, msg_property, preview_icon FROM conversation_messages WHERE message_id=:message_id ");
    46 
    46 
    47 //selecet preview-icon query
    47 //selecet preview-icon query
    48 _LIT(KSelectPreviewIconStmt,"SELECT  message_id, preview_icon FROM conversation_messages WHERE message_id = :message_id ");
    48 _LIT(KSelectPreviewIconStmt,"SELECT  message_id, preview_icon FROM conversation_messages WHERE message_id = :message_id ");
       
    49 
       
    50 //selecet vcard-path query
       
    51 _LIT(KSelectVCardStmt,"SELECT  message_id, msg_processingstate, preview_path FROM conversation_messages WHERE message_id = :message_id ");
    49 
    52 
    50 // preview-cache max cost (items)
    53 // preview-cache max cost (items)
    51 const int CACHE_COST =  50;
    54 const int CACHE_COST =  50;
    52 //Preview thumbnail size
    55 //Preview thumbnail size
    53 const int KWidth = 9.5 * 6.7;
    56 const int KWidth = 9.5 * 6.7;
   704 // ConversationsModel::handleBlueToothMessages
   707 // ConversationsModel::handleBlueToothMessages
   705 // @see header
   708 // @see header
   706 //---------------------------------------------------------------
   709 //---------------------------------------------------------------
   707 void ConversationsModel::handleBlueToothMessages(QStandardItem& item,
   710 void ConversationsModel::handleBlueToothMessages(QStandardItem& item,
   708     const CCsConversationEntry& entry)
   711     const CCsConversationEntry& entry)
   709 {
   712     {
   710      int msgSubType = ConversationsEngineUtility::messageSubType(entry.GetType());
   713     int msgSubType = ConversationsEngineUtility::messageSubType(
   711       if (msgSubType == ConvergedMessage::VCard) 
   714             entry.GetType());
   712 			{
       
   713            iBioMsgPlugin->setMessageId(entry.EntryId());          
       
   714 
       
   715            if (iBioMsgPlugin->attachmentCount() > 0) 
       
   716 		   			{
       
   717                UniMessageInfoList attList = iBioMsgPlugin->attachmentList();
       
   718                QString attachmentPath = attList[0]->path();
       
   719 
       
   720                //get display-name and set as bodytext
       
   721                QString displayName = MsgContactHandler::getVCardDisplayName(attachmentPath);
       
   722                item.setData(displayName, BodyText);
       
   723 			   	 // clear attachement list : its allocated at data model
       
   724             	while (!attList.isEmpty()) 
       
   725 							{
       
   726                 delete attList.takeFirst();
       
   727             	}
       
   728 
       
   729            }
       
   730        }
       
   731 
       
   732        else 
       
   733 	   	 {
       
   734            QString description = XQConversions::s60DescToQString(*(entry.Description()));
       
   735 
       
   736            if (msgSubType == ConvergedMessage::VCal) // "vCalendar"
       
   737            {
       
   738                //message sub-type
       
   739                item.setData(ConvergedMessage::VCal, MessageSubType);
       
   740            }
       
   741            else 
       
   742 		       {
       
   743                //message sub-type
       
   744                item.setData(ConvergedMessage::None, MessageSubType);
       
   745            }
       
   746            //for BT messages we show filenames for all other (except vcard) messages
       
   747            //get filename and set as body
       
   748            QFileInfo fileinfo(description);
       
   749            QString filename = fileinfo.fileName();
       
   750            item.setData(filename, BodyText);
       
   751        }
       
   752     
   715     
   753 }
   716     if (msgSubType == ConvergedMessage::VCard)
       
   717         {
       
   718         handleVCard(item, entry.EntryId());
       
   719         }
       
   720     else
       
   721         {
       
   722         QString description = XQConversions::s60DescToQString(
       
   723                 *(entry.Description()));
       
   724 
       
   725         if (msgSubType == ConvergedMessage::VCal) // "vCalendar"
       
   726             {
       
   727             //message sub-type
       
   728             item.setData(ConvergedMessage::VCal, MessageSubType);
       
   729             }
       
   730         else
       
   731             {
       
   732             //message sub-type
       
   733             item.setData(ConvergedMessage::None, MessageSubType);
       
   734             }
       
   735         //for BT messages we show filenames for all other (except vcard) messages
       
   736         //get filename and set as body
       
   737         QFileInfo fileinfo(description);
       
   738         QString filename = fileinfo.fileName();
       
   739         item.setData(filename, BodyText);
       
   740         }
       
   741     }
   754 
   742 
   755 //---------------------------------------------------------------
   743 //---------------------------------------------------------------
   756 // ConversationsModel::handleBioMessages
   744 // ConversationsModel::handleBioMessages
   757 // @see header
   745 // @see header
   758 //---------------------------------------------------------------
   746 //---------------------------------------------------------------
   759 void ConversationsModel::handleBioMessages(QStandardItem& item, const CCsConversationEntry& entry)
   747 void ConversationsModel::handleBioMessages(QStandardItem& item, const CCsConversationEntry& entry)
   760 {
   748 {
   761     iBioMsgPlugin->setMessageId(entry.EntryId());
       
   762     int msgSubType = ConversationsEngineUtility::messageSubType(entry.GetType());
   749     int msgSubType = ConversationsEngineUtility::messageSubType(entry.GetType());
   763     if (ConvergedMessage::VCard == msgSubType) {
   750     if (ConvergedMessage::VCard == msgSubType)
   764         if (iBioMsgPlugin->attachmentCount() > 0) {
   751         {
   765             UniMessageInfoList attList = iBioMsgPlugin->attachmentList();
   752         handleVCard(item, entry.EntryId());
   766             QString attachmentPath = attList[0]->path();
   753         }
   767 
       
   768             //get display-name and set as bodytext
       
   769             QString displayName =
       
   770                     MsgContactHandler::getVCardDisplayName(
       
   771                             attachmentPath);
       
   772             item.setData(displayName, BodyText);
       
   773             item.setData(attachmentPath, Attachments);
       
   774 
       
   775             // clear attachement list : its allocated at data model
       
   776             while (!attList.isEmpty()) {
       
   777                 delete attList.takeFirst();
       
   778             }
       
   779         }
       
   780     }
       
   781     else if (ConvergedMessage::VCal == msgSubType) {
   754     else if (ConvergedMessage::VCal == msgSubType) {
   782         //not supported
   755         //not supported
   783     }
   756     }
   784     else if (ConvergedMessage::RingingTone == msgSubType) {
   757     else if (ConvergedMessage::RingingTone == msgSubType) {
       
   758         iBioMsgPlugin->setMessageId(entry.EntryId());
   785         if (iBioMsgPlugin->attachmentCount() > 0) {
   759         if (iBioMsgPlugin->attachmentCount() > 0) {
   786             UniMessageInfoList attList = iBioMsgPlugin->attachmentList();
   760             UniMessageInfoList attList = iBioMsgPlugin->attachmentList();
   787             QString attachmentPath = attList[0]->path();
   761             QString attachmentPath = attList[0]->path();
   788 
   762 
   789             //get tone title, and set as bodytext
   763             //get tone title, and set as bodytext
   960     QCRITICAL_WRITE("ConversationsModel::updatePreviewIcon end.")
   934     QCRITICAL_WRITE("ConversationsModel::updatePreviewIcon end.")
   961 
   935 
   962 }
   936 }
   963 
   937 
   964 //---------------------------------------------------------------
   938 //---------------------------------------------------------------
       
   939 // ConversationsModel::handleVCard()
       
   940 // @see header
       
   941 //---------------------------------------------------------------
       
   942 void ConversationsModel::handleVCard(QStandardItem& item, int msgId)
       
   943     {
       
   944     //sql query to get vcard-path from DB
       
   945     bool vCardParsed = false;
       
   946 
       
   947     if (iSqlDbOpen)
       
   948         {
       
   949         RSqlStatement sqlSelectVcardStmt;
       
   950         TInt err = sqlSelectVcardStmt.Prepare(iSqlDb, KSelectVCardStmt);
       
   951 
       
   952         QCRITICAL_WRITE_FORMAT("Error from Prepare()", err)
       
   953 
       
   954         if (err == KErrNone)
       
   955             {
       
   956             //msg_id
       
   957             TInt msgIdIndex = sqlSelectVcardStmt.ParameterIndex(
       
   958                     _L(":message_id"));
       
   959             sqlSelectVcardStmt.BindInt(msgIdIndex, msgId);
       
   960             // state
       
   961             TInt msgProcessingStateIndex = sqlSelectVcardStmt.ColumnIndex(
       
   962                     _L("msg_processingstate"));
       
   963            
       
   964             // get vacrd-path from DB
       
   965             err = sqlSelectVcardStmt.Next();
       
   966             QCRITICAL_WRITE_FORMAT("Error from Next()", err)
       
   967 
       
   968             if (err == KSqlAtRow)
       
   969                 {
       
   970                 int msgProcessingState = 0;
       
   971                 msgProcessingState = sqlSelectVcardStmt.ColumnInt(
       
   972                         msgProcessingStateIndex);
       
   973                 if (msgProcessingState == EPreviewMsgProcessed)
       
   974                     {
       
   975                     //path-index
       
   976                     TInt previewPathIndex = sqlSelectVcardStmt.ColumnIndex(
       
   977                             _L("preview_path"));
       
   978 
       
   979                     //Get vcard-path data from path-index
       
   980                     RSqlColumnReadStream stream;
       
   981                     err = stream.ColumnBinary(sqlSelectVcardStmt,
       
   982                             previewPathIndex);
       
   983 
       
   984                     QCRITICAL_WRITE_FORMAT("Error from ColumnBinary()", err)
       
   985 
       
   986                     if (err == KErrNone)
       
   987                         {
       
   988                         RBuf vCardPathBuffer;
       
   989                         vCardPathBuffer.Create(sqlSelectVcardStmt.ColumnSize(
       
   990                                 previewPathIndex));
       
   991                         sqlSelectVcardStmt.ColumnText(previewPathIndex,
       
   992                                 vCardPathBuffer);
       
   993 
       
   994                         //set inside attachments
       
   995                         QString attachmentPath(
       
   996                                 XQConversions::s60DescToQString(
       
   997                                         vCardPathBuffer));
       
   998                         item.setData(attachmentPath, Attachments);
       
   999 
       
  1000                         //get display-name and set as bodytext
       
  1001                         QString displayName =
       
  1002                                 MsgContactHandler::getVCardDisplayName(
       
  1003                                         attachmentPath);
       
  1004                         item.setData(displayName, BodyText);
       
  1005 
       
  1006                         vCardPathBuffer.Close();
       
  1007                         vCardParsed = true;
       
  1008 
       
  1009                         QCRITICAL_WRITE("vcard parsing complete.")
       
  1010 
       
  1011                         }
       
  1012                     //close stream
       
  1013                     stream.Close();
       
  1014                     }
       
  1015                 }
       
  1016             }
       
  1017         sqlSelectVcardStmt.Close();
       
  1018         }
       
  1019 
       
  1020     // fallback, if not parsed in DB, parse from store
       
  1021     if (!vCardParsed)
       
  1022         {
       
  1023         iBioMsgPlugin->setMessageId(msgId);
       
  1024 
       
  1025         if (iBioMsgPlugin->attachmentCount() > 0)
       
  1026             {
       
  1027             UniMessageInfoList attList = iBioMsgPlugin->attachmentList();
       
  1028             QString attachmentPath = attList[0]->path();
       
  1029 
       
  1030             //get display-name and set as bodytext
       
  1031             QString displayName = MsgContactHandler::getVCardDisplayName(
       
  1032                     attachmentPath);
       
  1033             item.setData(displayName, BodyText);
       
  1034             item.setData(attachmentPath, Attachments);
       
  1035 
       
  1036             // clear attachement list : its allocated at data model
       
  1037             while (!attList.isEmpty())
       
  1038                 {
       
  1039                 delete attList.takeFirst();
       
  1040                 }
       
  1041             }
       
  1042         }
       
  1043     }
       
  1044 
       
  1045 //---------------------------------------------------------------
   965 // ConversationsModel::clearModel()
  1046 // ConversationsModel::clearModel()
   966 // @see header
  1047 // @see header
   967 //---------------------------------------------------------------
  1048 //---------------------------------------------------------------
   968 void ConversationsModel::clearModel()
  1049 void ConversationsModel::clearModel()
   969 {
  1050 {
   970     clear();
  1051     clear();
   971     previewIconCache.clear();
  1052     previewIconCache.clear();
   972 }
  1053 }
   973 
  1054 
       
  1055 //---------------------------------------------------------------
       
  1056 // ConversationsModel::emitConversationViewEmpty()
       
  1057 // @see header
       
  1058 //---------------------------------------------------------------
   974 void ConversationsModel:: emitConversationViewEmpty()
  1059 void ConversationsModel:: emitConversationViewEmpty()
   975 {
  1060 {
   976     emit conversationViewEmpty();
  1061     emit conversationViewEmpty();
   977 }
  1062 }
   978 //EOF
  1063 //EOF