diff -r 453da2cfceef -r 71781823f776 qtmobility/src/messaging/qmtmengine_symbian.cpp --- a/qtmobility/src/messaging/qmtmengine_symbian.cpp Fri May 14 16:41:33 2010 +0300 +++ b/qtmobility/src/messaging/qmtmengine_symbian.cpp Thu May 27 13:42:11 2010 +0300 @@ -88,8 +88,11 @@ #include #include #include // KImcvMultipart declaration +#include #include +#include + QTM_BEGIN_NAMESPACE @@ -105,7 +108,7 @@ CActiveScheduler::Add(this); iTimer.CreateLocal(); - TRAPD(err, + TRAPD(err, ipMsvSession = CMsvSession::OpenSyncL(*this); iSessionReady = ETrue; ipClientMtmReg = CClientMtmRegistry::NewL(*ipMsvSession); @@ -119,7 +122,7 @@ // Create & Add SMS Account TRAPD(accountError, - iSMSAccountidAsString = QString::number(mtmServiceEntryIdL(CMTMEngine::MTMTypeSMS)); + iSMSAccountidAsString = SymbianHelpers::addIdPrefix(QString::number(mtmServiceEntryIdL(CMTMEngine::MTMTypeSMS)),SymbianHelpers::EngineTypeMTM); QMessageAccount smsAcc = QMessageAccountPrivate::from(QMessageAccountId(iSMSAccountidAsString), QString("SMS"), mtmServiceEntryIdL(CMTMEngine::MTMTypeSMS), @@ -129,7 +132,7 @@ // Create & Add MMS Account - iMMSAccountidAsString = QString::number(mtmServiceEntryIdL(CMTMEngine::MTMTypeMMS)); + iMMSAccountidAsString = SymbianHelpers::addIdPrefix(QString::number(mtmServiceEntryIdL(CMTMEngine::MTMTypeMMS)),SymbianHelpers::EngineTypeMTM); QMessageAccount mmsAcc = QMessageAccountPrivate::from(QMessageAccountId(iMMSAccountidAsString), QString("MMS"), mtmServiceEntryIdL(CMTMEngine::MTMTypeMMS), @@ -375,9 +378,9 @@ if (err == KErrNone) { QString idAsString; if (defaultAccount.iRelatedService != 0) { - idAsString = QString::number(defaultAccount.iRelatedService); + idAsString = SymbianHelpers::addIdPrefix(QString::number(defaultAccount.iRelatedService),SymbianHelpers::EngineTypeMTM); } else { - idAsString = QString::number(defaultAccount.iSmtpService); + idAsString = SymbianHelpers::addIdPrefix(QString::number(defaultAccount.iSmtpService),SymbianHelpers::EngineTypeMTM); } if (!iAccounts.contains(idAsString)) { QMessageAccount account = QMessageAccountPrivate::from(QMessageAccountId(idAsString), @@ -398,7 +401,7 @@ pEmailAccounts->GetImapAccountsL(imapAccounts); CleanupClosePushL(imapAccounts); for (int i=0; i < imapAccounts.Count(); i++) { - QString idAsString = QString::number(imapAccounts[i].iImapService); + QString idAsString = SymbianHelpers::addIdPrefix(QString::number(imapAccounts[i].iImapService),SymbianHelpers::EngineTypeMTM); if (!iAccounts.contains(idAsString)) { QMessageAccount account = QMessageAccountPrivate::from(QMessageAccountId(idAsString), QString::fromUtf16(imapAccounts[i].iImapAccountName.Ptr(), imapAccounts[i].iImapAccountName.Length()), @@ -416,9 +419,9 @@ pEmailAccounts->GetPopAccountsL(popAccounts); CleanupClosePushL(popAccounts); for (int i=0; i < popAccounts.Count(); i++) { - QString idAsString = QString::number(popAccounts[i].iPopService); + QString idAsString = SymbianHelpers::addIdPrefix(QString::number(popAccounts[i].iPopService),SymbianHelpers::EngineTypeMTM); if (!iAccounts.contains(idAsString)) { - QMessageAccount account = QMessageAccountPrivate::from(QMessageAccountId(QString::number(popAccounts[i].iPopService)), + QMessageAccount account = QMessageAccountPrivate::from(QMessageAccountId(SymbianHelpers::addIdPrefix(QString::number(popAccounts[i].iPopService),SymbianHelpers::EngineTypeMTM)), QString::fromUtf16(popAccounts[i].iPopAccountName.Ptr(), popAccounts[i].iPopAccountName.Length()), popAccounts[i].iPopService, popAccounts[i].iSmtpService, @@ -435,9 +438,9 @@ CleanupClosePushL(smtpAccounts); for (int i=0; i < smtpAccounts.Count(); i++) { if (smtpAccounts[i].iRelatedService == 0) { - QString idAsString = QString::number(smtpAccounts[i].iSmtpService); + QString idAsString = SymbianHelpers::addIdPrefix(QString::number(smtpAccounts[i].iSmtpService),SymbianHelpers::EngineTypeMTM); if (!iAccounts.contains(idAsString)) { - QMessageAccount account = QMessageAccountPrivate::from(QMessageAccountId(QString::number(smtpAccounts[i].iSmtpService)), + QMessageAccount account = QMessageAccountPrivate::from(QMessageAccountId(SymbianHelpers::addIdPrefix(QString::number(smtpAccounts[i].iSmtpService),SymbianHelpers::EngineTypeMTM)), QString::fromUtf16(smtpAccounts[i].iSmtpAccountName.Ptr(), smtpAccounts[i].iSmtpAccountName.Length()), smtpAccounts[i].iRelatedService, smtpAccounts[i].iSmtpService, @@ -699,7 +702,7 @@ void CMTMEngine::showMessageL(const QMessageId &id) { - long int messageId = id.toString().toLong(); + long int messageId = SymbianHelpers::stripIdPrefix(id.toString()).toLong(); CMsvEntry* pEntry = ipMsvSession->GetEntryL(messageId); CleanupStack::PushL(pEntry); @@ -967,7 +970,7 @@ { Q_UNUSED(id); // all attachments are retrieved (cannot retrieve only one) - long int messId = messageId.toString().toLong(); + long int messId = SymbianHelpers::stripIdPrefix(messageId.toString()).toLong(); CMsvEntry* pEntry = ipMsvSession->GetEntryL(messId); CleanupStack::PushL(pEntry); @@ -1074,7 +1077,7 @@ void CMTMEngine::retrieveBodyL(const QMessageId& id) const { - long int messageId = id.toString().toLong(); + long int messageId = SymbianHelpers::stripIdPrefix(id.toString()).toLong(); CMsvEntry* pEntry = ipMsvSession->GetEntryL(messageId); CleanupStack::PushL(pEntry); @@ -1181,7 +1184,7 @@ void CMTMEngine::retrieveHeaderL(const QMessageId& id) const { - long int messageId = id.toString().toLong(); + long int messageId = SymbianHelpers::stripIdPrefix(id.toString()).toLong(); CMsvEntry* pEntry = ipMsvSession->GetEntryL(messageId); CleanupStack::PushL(pEntry); @@ -1325,7 +1328,7 @@ bool CMTMEngine::removeMessageL(const QMessageId &id, QMessageManager::RemovalOption /*option*/) { - long int messageId = id.toString().toLong(); + long int messageId = SymbianHelpers::stripIdPrefix(id.toString()).toLong(); CMsvEntry* pEntry = ipMsvSession->GetEntryL(messageId); CleanupStack::PushL(pEntry); @@ -1764,6 +1767,7 @@ iMessageQueries.removeAt(index); } + void CMTMEngine::applyOffsetAndLimitToMsgIds(QMessageIdList& idList, int offset, int limit) const { if (offset > 0) { @@ -1812,7 +1816,7 @@ { if (pf->_comparatorType == QMessageFolderFilterPrivate::Equality) { QMessageDataComparator::EqualityComparator cmp(static_cast(pf->_comparatorValue)); - if (pf->_value.toString().length() > 0) { + if (pf->_value.toString().length() > QString(SymbianHelpers::mtmPrefix).length()) { bool folderOk = false; long int folderId = folderIdFromQMessageFolderId(QMessageFolderId(pf->_value.toString())); CMsvEntry* pEntry = retrieveCMsvEntryAndPushToCleanupStack(folderId); @@ -1926,12 +1930,12 @@ if (pf->_comparatorType == QMessageFolderFilterPrivate::Equality) { QMessageDataComparator::EqualityComparator cmp(static_cast(pf->_comparatorValue)); if (cmp == QMessageDataComparator::Equal) { - if (pf->_value.toString().length() > 0) { + if (pf->_value.toString().length() > QString(SymbianHelpers::mtmPrefix).length()) { ids = folderIdsByAccountId(QMessageAccountId(pf->_value.toString())); } } else { // NotEqual ids = allFolders(); - if (pf->_value.toString().length() > 0) { + if (pf->_value.toString().length() > QString(SymbianHelpers::mtmPrefix).length()) { QMessageFolderIdList ids2 = folderIdsByAccountId(QMessageAccountId(pf->_value.toString())); for (int i = 0; i < ids2.count(); i++) { ids.removeOne(ids2[i]); @@ -1963,7 +1967,7 @@ CleanupStack::PushL(pSelection); if (pSelection->Count() > 0) { for(TInt i = 0; i < pSelection->Count(); i++) { - ids.append(QMessageFolderId(QString::number(pSelection->At(i)))); + ids.append(QMessageFolderId(SymbianHelpers::addIdPrefix(QString::number(pSelection->At(i)),SymbianHelpers::EngineTypeMTM))); } } CleanupStack::PopAndDestroy(pSelection); @@ -2092,17 +2096,17 @@ serviceEntryIdString = nullString.left(8-serviceEntryIdString.length()) + serviceEntryIdString; QString folderIdString = QString::number(folderId); folderIdString = nullString.left(8-folderIdString.length()) + folderIdString; - return serviceEntryIdString+folderIdString; + return SymbianHelpers::addIdPrefix(serviceEntryIdString+folderIdString,SymbianHelpers::EngineTypeMTM); } TMsvId CMTMEngine::serviceEntryIdFromQMessageFolderId(const QMessageFolderId& folderId) const { - return folderId.toString().left(8).toLong(); + return SymbianHelpers::stripIdPrefix(folderId.toString()).left(8).toLong(); } TMsvId CMTMEngine::folderIdFromQMessageFolderId(const QMessageFolderId& folderId) const { - return folderId.toString().right(8).toLong(); + return SymbianHelpers::stripIdPrefix(folderId.toString()).right(8).toLong(); } void CMTMEngine::handleNestedFiltersFromFolderFilter(QMessageFolderFilter &filter) const @@ -2310,7 +2314,7 @@ { QMessage message; - long int messageId = id.toString().toLong(); + long int messageId = SymbianHelpers::stripIdPrefix(id.toString()).toLong(); CMsvEntry* pEntry = ipMsvSession->GetEntryL(messageId); CleanupStack::PushL(pEntry); @@ -2429,12 +2433,35 @@ destinationFolderId = standardFolderId(message.standardFolder()); } - // Current entry is the Draft folder. - ipSmsMtm->SwitchCurrentEntryL(destinationFolderId); - // Create a new SMS message entry as a child of the current context. - ipSmsMtm->CreateMessageL(KUidMsgTypeSMS.iUid); - TMsvEntry entry = ipSmsMtm->Entry().Entry(); - + // Switch current SMS MTM context to folder entry + ipSmsMtm->SwitchCurrentEntryL(destinationFolderId); + + // Create a new SMS message entry as a child of the current context + // + // Note: CreateMessageL sets following values to new message entry: + // entry.iType = KUidMsvMessageEntry; + // entry.iRelatedId = ; + // entry.iServiceId = KMsvLocalServiceIndexEntryId; + // entry.iMtm = ; + // entry.SetVisible(EFalse); + // entry.SetInPreparation(ETrue); + // entry.iDate.UniversalTime(); <= Not set in older platforms + // + // Note: CreateMessageL automatically creates SMS header + // that contains default service settings & default + // service center address + // + // Note: CreateMessageL switches current SMS MTM context to + // a new SMS message context + ipSmsMtm->CreateMessageL(KUidMsgTypeSMS.iUid); + + // Get the current context (new message context) + CMsvEntry& newMessageContext = ipSmsMtm->Entry(); + + // Copy entry values from the new message context index entry + TMsvEntry entry = newMessageContext.Entry(); + + // Set priority values to message entry switch (message.priority()) { case QMessage::HighPriority: entry.SetPriority(EMsvHighPriority); @@ -2446,6 +2473,8 @@ entry.SetPriority(EMsvLowPriority); break; } + + // Set message read status to message entry if (message.status() & QMessage::Read) { entry.SetUnread(false); entry.SetNew(false); @@ -2453,8 +2482,9 @@ entry.SetUnread(true); entry.SetNew(true); } - ipSmsMtm->Entry().ChangeL(entry); - + + // Set first message addressee to message entry + // and all message addressees to SMS message QList list(message.to()); if (!list.empty()){ TPtrC16 receiver(KNullDesC); @@ -2462,45 +2492,51 @@ for (int i = 0; i < list.size(); ++i) { qreceiver = list.at(i).addressee(); receiver.Set(reinterpret_cast(qreceiver.utf16())); - ipSmsMtm->AddAddresseeL(receiver); - ipSmsMtm->SaveMessageL(); + if (i == 0) { + // Set addressee to message entry + entry.iDetails.Set(receiver); } - } - - CMsvStore* store = ipSmsMtm->Entry().EditStoreL(); - CleanupStack::PushL(store); - + // Add addressee to SMS message + ipSmsMtm->AddAddresseeL(receiver); + } + } + + // Set body to message entry and SMS message QString body = message.textContent(); if (!body.isEmpty()){ TPtrC16 msg(reinterpret_cast(body.utf16())); - if (!ipRichText) { - ipCharFormatLayer = CCharFormatLayer::NewL(); - ipParaFormatLayer = CParaFormatLayer::NewL(); - ipRichText=CRichText::NewL(ipParaFormatLayer,ipCharFormatLayer); + + // Set body to message entry + entry.iDescription.Set(msg); + + // Set body to SMS message + CRichText& body = ipSmsMtm->Body(); + body.Reset(); + body.InsertL(0, msg); + } + + // Set date to message entry + if (!message.receivedDate().isNull() || !message.date().isNull()) { + if (!message.date().isNull()) { + entry.iDate = qDateTimeToSymbianTTime(message.date()); + } else { + entry.iDate = qDateTimeToSymbianTTime(message.receivedDate()); } - ipRichText->Reset(); - ipRichText->InsertL(0, msg); - store->StoreBodyTextL(*ipRichText); - store->CommitL(); - } - CleanupStack::PopAndDestroy(store); - + } + + // Set new message's context's index entry to the specified values. + // <=> Changes are set into cache only + newMessageContext.ChangeL(entry); + + // Commit cached changes to the storage + // Note: SaveMessageL sets following values to message entry: + // entry.SetVisible(ETrue); + // entry.SetInPreparation(EFalse); + ipSmsMtm->SaveMessageL(); + + // Get message id from new SMS message index entry QMessagePrivate* privateMessage = QMessagePrivate::implementation(message); - privateMessage->_id = QMessageId(QString::number(entry.Id())); - - if (!message.receivedDate().isNull() || !message.date().isNull()) { - // Change the date to given date - CMsvEntry* pEntry = ipMsvSession->GetEntryL(entry.Id()); - CleanupStack::PushL(pEntry); - TMsvEntry changedEntry = pEntry->Entry(); - if (!message.date().isNull()) { - changedEntry.iDate = qDateTimeToSymbianTTime(message.date()); - } else { - changedEntry.iDate = qDateTimeToSymbianTTime(message.receivedDate()); - } - pEntry->ChangeL(changedEntry); - CleanupStack::PopAndDestroy(pEntry); - } + privateMessage->_id = QMessageId(SymbianHelpers::addIdPrefix(QString::number(entry.Id()))); } bool CMTMEngine::sendSMS(QMessage &message) @@ -2517,34 +2553,126 @@ return true; } +bool CMTMEngine::validateSMS() +{ + + // Validate SMS body. + TMsvPartList result(KMsvMessagePartNone); + result = ipSmsMtm->ValidateMessage(KMsvMessagePartBody); + if (result != KMsvMessagePartNone ) { + return false; + } + + // Validate SMS recipient + result = ipSmsMtm->ValidateMessage(KMsvMessagePartRecipient); + if ( result != KMsvMessagePartNone ) { + return false; + } + + return true; +} + void CMTMEngine::sendSMSL(QMessage &message) { if (!iSessionReady) { User::Leave(KErrNotReady); } - + if (!message.id().isValid()) { QMessagePrivate::setStandardFolder(message, QMessage::DraftsFolder); storeSMSL(message); } - - long int messageId = message.id().toString().toLong(); + + long int messageId = SymbianHelpers::stripIdPrefix(message.id().toString()).toLong(); if (messageId == 0) { User::Leave(KErrNotReady); } - - CMsvEntry* pMsvEntry = retrieveCMsvEntryAndPushToCleanupStack(messageId); - CMsvOperationWait* pMsvOperationWait = CMsvOperationWait::NewLC(); - - ipSmsMtm->SwitchCurrentEntryL(pMsvEntry->Entry().Parent()); - // Following sends SMS and _moves_ SMS from Drafts Folder to Sent Folder - CMsvOperation* pMsvOperation = ipSmsMtm->Entry().CopyL(messageId, ipSmsMtm->ServiceId(), pMsvOperationWait->iStatus); - pMsvOperationWait->Start(); - CActiveScheduler::Start(); - delete pMsvOperation; - - CleanupStack::PopAndDestroy(pMsvOperationWait); - releaseCMsvEntryAndPopFromCleanupStack(pMsvEntry); + + // Switch current SMS MTM context to message entry + ipSmsMtm->SwitchCurrentEntryL(messageId); + + // Load the cache with the message data + ipSmsMtm->LoadMessageL(); + + // Copy entry values from the message context index entry + TMsvEntry entry = ipSmsMtm->Entry().Entry(); + + // Update date to UniversalTime + // <=> Date field is used to control message send time + entry.iDate.UniversalTime(); + + // Update message sending state + entry.SetSendingState(KMsvSendStateWaiting); + + // Set SMS Service & delivery settings to the SMS header + CSmsHeader& smsHeader = ipSmsMtm->SmsHeader(); + CSmsSettings* pSmsSettings = CSmsSettings::NewL(); + CleanupStack::PushL(pSmsSettings); + + pSmsSettings->CopyL(ipSmsMtm->ServiceSettings()); + pSmsSettings->SetDelivery(ESmsDeliveryImmediately); + pSmsSettings->SetDeliveryReport(EFalse); + smsHeader.SetSmsSettingsL(*pSmsSettings); + + if (smsHeader.Message().ServiceCenterAddress().Length() == 0) { + CSmsSettings* pSmsServiceSettings = &(ipSmsMtm->ServiceSettings()); + if (!pSmsServiceSettings->ServiceCenterCount()) { + User::Leave(KErrNotReady); + } else { + CSmsNumber* pSmsCenterNumber = CSmsNumber::NewL(); + CleanupStack::PushL(pSmsCenterNumber); + pSmsCenterNumber->SetAddressL((pSmsServiceSettings->GetServiceCenter(pSmsServiceSettings->DefaultServiceCenter())).Address()); + smsHeader.Message().SetServiceCenterAddressL(pSmsCenterNumber->Address()); + CleanupStack::PopAndDestroy(pSmsCenterNumber); + } + } + + CleanupStack::PopAndDestroy(pSmsSettings); + + // Update message's context's index entry to the new values. + // <=> Changes are set into cache only + ipSmsMtm->Entry().ChangeL(entry); + + // Commit cached changes to the storage + ipSmsMtm->SaveMessageL(); + + if (validateSMS()) { + // Switch current SMS MTM context to SMS message parent folder entry + ipSmsMtm->SwitchCurrentEntryL(ipSmsMtm->Entry().Entry().Parent()); + + CMsvOperationWait* pMsvOperationWait = CMsvOperationWait::NewLC(); + + // Move SMS Message to Outbox + CMsvOperation* pMsvOperation = ipSmsMtm->Entry().MoveL(messageId, + KMsvGlobalOutBoxIndexEntryId, + pMsvOperationWait->iStatus); + pMsvOperationWait->Start(); + CActiveScheduler::Start(); + delete pMsvOperation; + + // Send SMS Message + CMsvEntrySelection* pMsvEntrySelection = new(ELeave) CMsvEntrySelection; + CleanupStack::PushL(pMsvEntrySelection); + + // Add SMS Message Id to selection + pMsvEntrySelection->AppendL(messageId); + + // Add selection (containing SMS Message Id) to task scheduler + TBuf8<1> dummyParams; + pMsvOperation = ipSmsMtm->InvokeAsyncFunctionL(ESmsMtmCommandScheduleCopy, + *pMsvEntrySelection, + dummyParams, + pMsvOperationWait->iStatus); + pMsvOperationWait->Start(); + CActiveScheduler::Start(); + delete pMsvOperation; + + CleanupStack::PopAndDestroy(pMsvEntrySelection); + + CleanupStack::PopAndDestroy(pMsvOperationWait); + } else { + User::Leave(KErrCorrupt); + } } void CMTMEngine::storeMMSL(QMessage &message) @@ -2737,7 +2865,7 @@ CleanupStack::PopAndDestroy(); // store QMessagePrivate* privateMessage = QMessagePrivate::implementation(message); - privateMessage->_id = QMessageId(QString::number(indexEntry)); + privateMessage->_id = QMessageId(SymbianHelpers::addIdPrefix(QString::number(indexEntry,SymbianHelpers::EngineTypeMTM))); // Save the changes ipMmsMtm->SaveMessageL(); @@ -2763,7 +2891,7 @@ } QMessageId id = message.id(); - long int messageId = id.toString().toLong(); + long int messageId = SymbianHelpers::stripIdPrefix(id.toString()).toLong(); if (messageId == 0) return; @@ -2849,7 +2977,7 @@ } QMessageId id = message.id(); - long int messageId = id.toString().toLong(); + long int messageId = SymbianHelpers::stripIdPrefix(id.toString()).toLong(); if (messageId == 0) return; @@ -3042,7 +3170,7 @@ } QMessageId id = message.id(); - long int messageId = id.toString().toLong(); + long int messageId = SymbianHelpers::stripIdPrefix(id.toString()).toLong(); if (messageId == 0) return; @@ -3310,7 +3438,7 @@ messageCreated = true; } - long int messageId = message.id().toString().toLong(); + long int messageId = SymbianHelpers::stripIdPrefix(message.id().toString()).toLong(); if (messageId == 0) { User::Leave(KErrNotReady); } @@ -3654,7 +3782,7 @@ CleanupStack::PopAndDestroy(pMsvOperationWait); QMessagePrivate* privateMessage = QMessagePrivate::implementation(message); - privateMessage->_id = QMessageId(QString::number(newMessageId)); + privateMessage->_id = QMessageId(SymbianHelpers::addIdPrefix(QString::number(newMessageId),SymbianHelpers::EngineTypeMTM)); } void CMTMEngine::sendEmailL(QMessage &message) @@ -3683,7 +3811,7 @@ messageCreated = true; } - long int messageId = message.id().toString().toLong(); + long int messageId = SymbianHelpers::stripIdPrefix(message.id().toString()).toLong(); if (messageId == 0) { User::Leave(KErrNotReady); } @@ -4438,7 +4566,7 @@ } else { message.setType(QMessage::NoType); } - } else if ((privateMessageFilter->_field == QMessageFilterPrivate::StandardFolder) && + } else if ((privateMessageFilter->_field == QMessageFilterPrivate::StandardFolder) && (aMsgType == KUidMsgTypeSMS || aMsgType == KUidMsgTypeMultimedia)) { if (aFolderId == KMsvGlobalInBoxIndexEntryId) { QMessagePrivate::setStandardFolder(message,QMessage::InboxFolder); @@ -4448,9 +4576,9 @@ QMessagePrivate::setStandardFolder(message,QMessage::SentFolder); } else if (aFolderId == KMsvDeletedEntryFolderEntryId) { QMessagePrivate::setStandardFolder(message,QMessage::TrashFolder); - } + } } else if (!messageRetrieved) { - message = this->message(QMessageId(QString::number(aMessageId))); + message = this->message(QMessageId(SymbianHelpers::addIdPrefix(QString::number(aMessageId),SymbianHelpers::EngineTypeMTM))); if (message.type() == QMessage::NoType) { unableToReadAndFilterMessage = true; matchingFilters.clear(); @@ -4502,7 +4630,7 @@ // No pending notification events for this messageId. // => Deliver notification immediately ipMessageStorePrivate->messageNotification(notificationType, - QMessageId(QString::number(aMessageId)), + QMessageId(SymbianHelpers::addIdPrefix(QString::number(aMessageId),SymbianHelpers::EngineTypeMTM)), matchingFilters); } } else if (unableToReadAndFilterMessage) { @@ -4538,7 +4666,7 @@ MessageEvent event = iUndeliveredMessageEvents[0]; bool eventHandlingPossible = true; if (event.notificationType != QMessageStorePrivate::Removed && event.unfiltered) { - QMessage message = this->message(QMessageId(QString::number(event.messageId))); + QMessage message = this->message(QMessageId(SymbianHelpers::addIdPrefix(QString::number(event.messageId),SymbianHelpers::EngineTypeMTM))); if (message.type() == QMessage::NoType) { eventHandlingPossible = false; } else { @@ -4569,7 +4697,7 @@ if (event.matchingFilters.count() > 0) { // Deliver message event notification ipMessageStorePrivate->messageNotification(event.notificationType, - QMessageId(QString::number(event.messageId)), + QMessageId(SymbianHelpers::addIdPrefix(QString::number(event.messageId),SymbianHelpers::EngineTypeMTM)), event.matchingFilters); } } else { @@ -4707,7 +4835,7 @@ getAllMessagesL(iOrdering); iIdList = QMessageIdList(); for (int i=0; i < ipEntrySelection->Count(); i++) { - iIdList.append(QMessageId(QString::number((*ipEntrySelection)[i]))); + iIdList.append(QMessageId(SymbianHelpers::addIdPrefix(QString::number((*ipEntrySelection)[i]),SymbianHelpers::EngineTypeMTM))); } } iNumberOfHandledFilters++; @@ -4793,9 +4921,9 @@ iNumberOfHandledFilters++; if (pf->_comparatorType == QMessageFilterPrivate::Equality) { // QMessageId QMessageDataComparator::EqualityComparator cmp(static_cast(pf->_comparatorValue)); - if (!pf->_value.isNull() && pf->_value.toString().length() > 0) { + if (!pf->_value.isNull() && pf->_value.toString().length() > QString(SymbianHelpers::mtmPrefix).length()) { if (cmp == QMessageDataComparator::Equal) { - long int messageId = pf->_value.toString().toLong(); + long int messageId = SymbianHelpers::stripIdPrefix(pf->_value.toString()).toLong(); CMsvEntry* pEntry = iOwner.retrieveCMsvEntryAndPushToCleanupStack(messageId); if (pEntry) { const TMsvEntry& entry = pEntry->Entry(); @@ -4809,7 +4937,7 @@ } else { // NotEqual ipEntrySelection = new(ELeave)CMsvEntrySelection; getAllMessagesL(iOrdering); - long int messageId = pf->_value.toString().toLong(); + long int messageId = SymbianHelpers::stripIdPrefix(pf->_value.toString()).toLong(); for (int i=0; i < ipEntrySelection->Count(); i++) { if (ipEntrySelection->At(i) == messageId) { ipEntrySelection->Delete(i); @@ -4829,7 +4957,7 @@ if (cmp == QMessageDataComparator::Includes) { ipEntrySelection = new(ELeave)CMsvEntrySelection; for (int i=0; i < pf->_ids.count(); i++) { - long int messageId = pf->_ids[i].toString().toLong(); + long int messageId = SymbianHelpers::stripIdPrefix(pf->_ids[i].toString()).toLong(); CMsvEntry* pEntry = iOwner.retrieveCMsvEntryAndPushToCleanupStack(messageId); if (pEntry) { const TMsvEntry& entry = pEntry->Entry(); @@ -4843,7 +4971,7 @@ ipEntrySelection = new(ELeave)CMsvEntrySelection; getAllMessagesL(iOrdering); for (int i=0; i < pf->_ids.count(); i++) { - long int messageId = pf->_ids[i].toString().toLong(); + long int messageId = SymbianHelpers::stripIdPrefix(pf->_ids[i].toString()).toLong(); for (int i=0; i < ipEntrySelection->Count(); i++) { if (ipEntrySelection->At(i) == messageId) { ipEntrySelection->Delete(i); @@ -4944,7 +5072,7 @@ if (pf->_comparatorType == QMessageFilterPrivate::Equality) { // QMessageFolderId QMessageDataComparator::EqualityComparator cmp(static_cast(pf->_comparatorValue)); if (cmp == QMessageDataComparator::Equal) { - long int folderId = iOwner.folderIdFromQMessageFolderId(QMessageFolderId(pf->_value.toString())); + long int folderId = iOwner.folderIdFromQMessageFolderId(QMessageFolderId(pf->_value.toString())); long int serviceEntryId = iOwner.serviceEntryIdFromQMessageFolderId(QMessageFolderId(pf->_value.toString())); QMessageAccount messageAccount = iOwner.account(iOwner.accountIdByServiceId(serviceEntryId)); if (messageAccount.messageTypes() == QMessage::Email) { @@ -5349,7 +5477,7 @@ } else { iIdList = QMessageIdList(); for (int i=0; i < ipEntrySelection->Count(); i++) { - iIdList.append(QMessageId(QString::number((*ipEntrySelection)[i]))); + iIdList.append(QMessageId(SymbianHelpers::addIdPrefix(QString::number((*ipEntrySelection)[i]),SymbianHelpers::EngineTypeMTM))); } iTimer.After(iStatus, 100); if (!IsActive()) { @@ -5367,7 +5495,7 @@ const CMsvFindResultSelection& findResultSelection = ipMsvFindOperation->GetFindResult(); QMessageIdList msgIds; for (int i=0; i < findResultSelection.Count(); i++) { - msgIds.append(QMessageId(QString::number(findResultSelection[i].iId))); + msgIds.append(QMessageId(SymbianHelpers::addIdPrefix(QString::number(findResultSelection[i].iId),SymbianHelpers::EngineTypeMTM))); } iOwner.filterAndOrderMessagesReady(true, iOperationId, msgIds, iNumberOfHandledFilters, iResultCorrectlyOrdered); } else {