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 |