diff -r 16ed8d08d0b1 -r 478bc57ad291 emailuis/nmframeworkadapter/src/nmframeworkadapter.cpp --- a/emailuis/nmframeworkadapter/src/nmframeworkadapter.cpp Wed Aug 18 09:37:47 2010 +0300 +++ b/emailuis/nmframeworkadapter/src/nmframeworkadapter.cpp Thu Sep 02 20:15:00 2010 +0300 @@ -91,7 +91,7 @@ QList mailboxList; int ret = listMailboxes(mailboxList); - if ( ret == NmNoError ) { + if (ret == NmNoError) { QListIterator iterator(mailboxList); while (iterator.hasNext()) { NmMailbox *box = iterator.next(); @@ -121,12 +121,12 @@ //if id.IsNullId(), mailboxes are listed from all plugins. //otherwise, only from the given one. - TInt rcode = mFSfw->ListMailBoxes(id,mailBoxes); + TInt rcode = mFSfw->ListMailBoxes(id, mailBoxes); - if ( rcode == NmNoError ) { + if (rcode == NmNoError) { // convert mailbox data to QT classes - NmMailbox* box(0); - for(TInt i=0;iGetNmMailbox(); @@ -136,7 +136,7 @@ } } } - mailBoxes.ResetAndDestroy(); + mailBoxes.ResetAndDestroy(); return rcode; } @@ -186,37 +186,31 @@ \return Error code. */ -int NmFrameworkAdapter::getFolderById( const NmId& mailboxId, const NmId& folderId, NmFolder*& folder ) - { +int NmFrameworkAdapter::getFolderById(const NmId& mailboxId, const NmId& folderId, NmFolder*& folder) +{ NM_FUNCTION; - TRAPD(err, getFolderByIdL( mailboxId, folderId, folder ) ); + TRAPD(err, getFolderByIdL(mailboxId, folderId, folder)); return err; - } +} /*! Leaving version of getFolderById function */ -void NmFrameworkAdapter::getFolderByIdL( const NmId& mailboxId, const NmId& folderId, NmFolder*& folder ) - { +void NmFrameworkAdapter::getFolderByIdL(const NmId& mailboxId, const NmId& folderId, NmFolder*& folder) +{ NM_FUNCTION; CFSMailFolder* fsFolder(NULL); - if (mFSfw) - { - fsFolder = mFSfw->GetFolderByUidL(TFSMailMsgId(mailboxId), TFSMailMsgId(folderId)); - if (fsFolder) - { - folder = fsFolder->GetNmFolder(); - delete fsFolder; - fsFolder = NULL; - } - else - { - User::Leave(KErrNotFound); - } - } + fsFolder = mFSfw->GetFolderByUidL(TFSMailMsgId(mailboxId), TFSMailMsgId(folderId)); + if (fsFolder) { + folder = fsFolder->GetNmFolder(); + delete fsFolder; + fsFolder = NULL; + } else { + User::Leave(KErrNotFound); } +} /*! @@ -238,7 +232,7 @@ { NM_FUNCTION; - TRAPD(err, getMessageByIdL(mailboxId,folderId,messageId,message)); + TRAPD(err, getMessageByIdL(mailboxId, folderId, messageId, message)); return err; } @@ -267,6 +261,8 @@ message->removeAllChildParts(); childrenToNmMessagePartL(newMessage, message); + delete newMessage; + newMessage = NULL; } else { User::Leave(KErrNotFound); @@ -276,29 +272,30 @@ /*! Returns list of folders in a mailbox. - \param mailboxId Id of the mailbox containing the folder. - \param folderList Reference to a pointer list to receive pointers to the folders. + \param mailboxId Id of the mailbox containing the folder. + \param folderList Reference to a pointer list to receive pointers to the folders. - \return Error code. + \return Error code. */ int NmFrameworkAdapter::listFolders( const NmId& mailboxId, QList& folderList) { NM_FUNCTION; - - CFSMailBox* currentMailbox = NULL; - TRAPD (err, currentMailbox = mFSfw->GetMailBoxByUidL(mailboxId)); - if (KErrNone == err) { + int err(NmNoError); + CFSMailBox* currentMailbox(NULL); + TRAP(err, currentMailbox = mFSfw->GetMailBoxByUidL(mailboxId)); + if (KErrNone == err && currentMailbox) { RPointerArray folders = currentMailbox->ListFolders(); for (int i = 0; i < folders.Count(); i++) { folderList.append(folders[i]->GetNmFolder()); } - return KErrNone; + delete currentMailbox; + currentMailbox = NULL; + } else { + err = NmNotFoundError; } - else { - return err; - } + return err; } @@ -316,11 +313,7 @@ const int maxEnvelopeCount) { NM_FUNCTION; - - if (!folder || maxEnvelopeCount < 1) { - return; - } - + // validity of input parameters is checked in calling function int blockSize = NmListMessagesBlock; int maxItemCount = NmMaxItemsInMessageList; @@ -428,7 +421,7 @@ { NM_FUNCTION; - TInt err = KErrNone; + TInt err(KErrNone); TRAP(err, listMessagesL(mailboxId,folderId, messageEnvelopeList,maxAmountOfEnvelopes) ); return err; } @@ -507,7 +500,7 @@ { NM_FUNCTION; - CFSMailBox * currentMailbox(NULL); + CFSMailBox* currentMailbox(NULL); CFSMailFolder* folder(NULL); //If we are requesting 0 or less mails so we can return @@ -647,6 +640,8 @@ if (err == KErrNone && mailbox) { mailbox->CancelSearch(); + delete mailbox; + mailbox = NULL; } return err; @@ -730,6 +725,7 @@ mailbox = mFSfw->GetMailBoxByUidL(mailboxId); if (mailbox) { + CleanupStack::PushL(mailbox); RPointerArray strings; CleanupResetAndDestroy::PushL(strings); @@ -751,6 +747,7 @@ // Clean up. strings.ResetAndDestroy(); CleanupStack::Pop(&strings); + CleanupStack::PopAndDestroy(mailbox); } } @@ -846,12 +843,12 @@ TFSMailMsgId fsMsgId(messageId); TFSMailMsgId fsMsgPartId(messagePartId); - CFSMailMessage* fsMessage = NULL; - int error = KErrNone; + CFSMailMessage* fsMessage(NULL); + int error(KErrNone); TRAP(error, fsMessage = mFSfw->GetMessageByUidL(fsMboxId, fsFolderId, fsMsgId, details) ); - CFSMailMessagePart* fsMessagePart = NULL; + CFSMailMessagePart* fsMessagePart(NULL); if (fsMessage && error == KErrNone) { TRAP(error, fsMessagePart = fsMessage->ChildPartL(fsMsgPartId) ); @@ -860,6 +857,10 @@ RFile file = fsMessagePart->GetContentFileL(); retFile.setHandle(file); } + delete fsMessagePart; + fsMessagePart = NULL; + delete fsMessage; + fsMessage = NULL; return retFile; } @@ -879,34 +880,34 @@ TFSMailMsgId folderId; NmId resultId(0); - CFSMailBox * currentMailbox(NULL); + CFSMailBox* currentMailbox(NULL); - TRAPD(error, currentMailbox = mFSfw->GetMailBoxByUidL(mailboxId) ); + TRAPD(error, currentMailbox = mFSfw->GetMailBoxByUidL(mailboxId)); - if( !currentMailbox || error != KErrNone ) { - return resultId; + if(!currentMailbox || error != KErrNone) { + return resultId; } switch(folderType) { - case NmFolderInbox: - folderId = currentMailbox->GetStandardFolderId( EFSInbox ); - break; - case NmFolderOutbox: - folderId = currentMailbox->GetStandardFolderId( EFSOutbox ); - break; - case NmFolderDrafts: - folderId = currentMailbox->GetStandardFolderId( EFSDraftsFolder ); - break; - case NmFolderSent: - folderId = currentMailbox->GetStandardFolderId( EFSSentFolder ); - break; - case NmFolderDeleted: - folderId = currentMailbox->GetStandardFolderId( EFSDeleted ); - break; - case NmFolderOther: - default: - folderId = currentMailbox->GetStandardFolderId( EFSOther ); - break; + case NmFolderInbox: + folderId = currentMailbox->GetStandardFolderId(EFSInbox); + break; + case NmFolderOutbox: + folderId = currentMailbox->GetStandardFolderId(EFSOutbox); + break; + case NmFolderDrafts: + folderId = currentMailbox->GetStandardFolderId(EFSDraftsFolder); + break; + case NmFolderSent: + folderId = currentMailbox->GetStandardFolderId(EFSSentFolder); + break; + case NmFolderDeleted: + folderId = currentMailbox->GetStandardFolderId(EFSDeleted); + break; + case NmFolderOther: + default: + folderId = currentMailbox->GetStandardFolderId(EFSOther); + break; } delete currentMailbox; @@ -929,7 +930,7 @@ NM_FUNCTION; TRAPD(err, RefreshMailboxL(mailboxId)); // return value not used - return ( err == KErrNone ) ? NmNoError : NmGeneralError; + return (err == KErrNone) ? NmNoError : NmGeneralError; } /*! @@ -943,7 +944,7 @@ NM_FUNCTION; TRAPD(err, GoOnlineL(mailboxId)); // return value not used - return ( err == KErrNone ) ? NmNoError : NmGeneralError; + return (err == KErrNone) ? NmNoError : NmGeneralError; } /*! @@ -957,7 +958,7 @@ NM_FUNCTION; TRAPD(err, GoOfflineL(mailboxId)); // return value not used - return ( err == KErrNone ) ? NmNoError : NmGeneralError; + return (err == KErrNone) ? NmNoError : NmGeneralError; } /*! @@ -1000,7 +1001,7 @@ cfsPart->SetFolderId(TFSMailMsgId(folderId)); QString contentType = messagePart.contentType(); - if (cfsPart && contentType.startsWith(NmContentTypeTextPlain)) { + if (contentType.startsWith(NmContentTypeTextPlain)) { // add 1 for max size for zero termination and prevend 0 size hbufc HBufC* data = HBufC::NewLC(cfsPart->FetchedContentSize()+1); TPtr dataPtr = data->Des(); @@ -1009,8 +1010,7 @@ cfsPart->GetContentToBufferL(dataPtr, startOffset); messagePart.setTextContent(NmConverter::toQString(dataPtr), contentType); CleanupStack::PopAndDestroy(data); - } - else if (cfsPart){ + } else { RFile file = cfsPart->GetContentFileL(); TInt fileSize = 0; file.Size(fileSize); @@ -1024,7 +1024,7 @@ User::LeaveIfError(file.Read(dataPtr)); } - if (contentType.startsWith(NmContentTypeTextHtml) || contentType.contains( NmContentDescrAttachmentHtml )) { + if (contentType.startsWith(NmContentTypeTextHtml) || contentType.contains( NmContentDescrAttachmentHtml)) { QRegExp rxlen("(?:charset=)(?:\"?)([\\-\\_a-zA-Z0-9]+)", Qt::CaseInsensitive); QString charset; int pos = rxlen.indexIn(contentType); @@ -1038,8 +1038,7 @@ } QString encodedStr = codec->toUnicode(msgBytes); messagePart.setTextContent(encodedStr, contentType); - } - else { + } else { messagePart.setBinaryContent(QByteArray( reinterpret_cast(dataPtr.Ptr()), fileSize), contentType); } @@ -1047,11 +1046,6 @@ } file.Close(); } - else { - // null cfsPart - User::Leave(KErrNotFound); - } - CleanupStack::PopAndDestroy(cfsPart); } @@ -1065,17 +1059,17 @@ \return Error code. */ int NmFrameworkAdapter::deleteMessages( - const NmId &mailboxId, - const NmId &folderId, - const QList &messageIdList) + const NmId &mailboxId, + const NmId &folderId, + const QList &messageIdList) { NM_FUNCTION; - TInt err = NmNoError; + TInt err(NmNoError); RArray messageIds; - for (TInt i=0; i NmFrameworkAdapter::storeEnvelopes( - const NmId &mailboxId, - const NmId &folderId, - const QList &envelopeList) + const NmId &mailboxId, + const NmId &folderId, + const QList &envelopeList) { NM_FUNCTION; @@ -1108,7 +1102,7 @@ QPointer operation(NULL); RPointerArray envelopeMessages; - int count = envelopeList.count(); + int count(envelopeList.count()); for(int i(0); i < count; i++) { TRAP_IGNORE(envelopeMessages.AppendL(mailMessageFromEnvelopeL(*envelopeList.at(i)))); } @@ -1242,7 +1236,8 @@ // void messageEvent( // NmMessageEvent event, // const NmId &folderId, - // QList &messageIds); + // QList &messageIds + // const NmId& mailboxId); // // enum NmMessageEvent // NmMessageCreated, @@ -1315,7 +1310,7 @@ else { emit connectionEvent(Disconnected, id, NmNoError); } - } + } break; default: @@ -1364,6 +1359,19 @@ } /*! + Gets the signature for the given mailbox. + + \param mailboxId Id of the mailbox. +*/ +int NmFrameworkAdapter::getSignature(const NmId &mailboxId, QString *&signature) +{ + NM_FUNCTION; + TRAPD(error, getSignatureL(mailboxId, signature)); + + return error; +} + +/*! Subscribe to events from a mailbox. \param mailboxId Id of the mailbox. @@ -1387,25 +1395,6 @@ mFSfw->UnsubscribeMailboxEvents(mailboxId, *this); } -NmId NmFrameworkAdapter::getMailboxIdByMailMsgId(TFSMailMsgId mailbox) -{ - NM_FUNCTION; - - NmId nmId(0); - - QList mailboxIds; - listMailboxIds(mailboxIds); - - QListIterator iterator(mailboxIds); - while (iterator.hasNext()) { - nmId = iterator.next(); - if (nmId.id32() == mailbox.Id()) { - break; - } - } - mailboxIds.clear(); - return nmId; -} /*! Leaving version of removeMessage @@ -1435,31 +1424,51 @@ const NmId& destinationFolderId) { NM_FUNCTION; - + TInt count(messageIds.count()); + if (!count) { + return; + } RArray messages; RArray copiedMessages; CleanupClosePushL(messages); CleanupClosePushL(copiedMessages); - for (TInt i = 0; i < messageIds.count(); i++) { + for (TInt i = 0; i < count; i++) { NmId tmpId(messageIds[i]); messages.AppendL(TFSMailMsgId(tmpId)); } - CFSMailBox* mailBox = NULL; + CFSMailBox* mailBox(NULL); mailBox = mFSfw->GetMailBoxByUidL(mailboxId); if (mailBox) { mailBox->CopyMessagesL(messages, copiedMessages, TFSMailMsgId(sourceFolderId), TFSMailMsgId(destinationFolderId)); delete mailBox; + mailBox = NULL; + } else { + User::Leave(NmNotFoundError); } - CleanupStack::PopAndDestroy(2,&messages); } /*! + Leaving version of getSignature +*/ +void NmFrameworkAdapter::getSignatureL(const NmId &mailboxId, QString *&signature) +{ + NM_FUNCTION; + + HBufC *sig = mFSfw->GetSignatureL(TFSMailMsgId(mailboxId)); + + if (sig) { + signature = new QString(NmConverter::toQString(*sig)); + } +} + + +/*! Sends the given message. */ QPointer NmFrameworkAdapter::sendMessage( @@ -1468,7 +1477,7 @@ NM_FUNCTION; QPointeroper = new NmFwaMessageSendingOperation(*this, message, *mFSfw); - return oper; + return oper; } /*! @@ -1509,6 +1518,7 @@ if (KErrNone == err && mailBox) { TSSMailSyncState syncState = mailBox->CurrentSyncState(); delete mailBox; + mailBox = NULL; if (EmailSyncing == syncState) { return Synchronizing; } @@ -1528,11 +1538,12 @@ { NM_FUNCTION; - CFSMailBox* mailBox = NULL; + CFSMailBox* mailBox(NULL); TRAPD(err, mailBox = mFSfw->GetMailBoxByUidL(TFSMailMsgId(mailboxId)) ); if (KErrNone == err && mailBox) { TFSMailBoxStatus status = mailBox->GetMailBoxStatus(); delete mailBox; + mailBox = NULL; if (status == EFSMailBoxOnline) { return Connected; } @@ -1603,7 +1614,6 @@ CleanupStack::PushL(currentMailbox); result = currentMailbox->RefreshNowL(); CleanupStack::PopAndDestroy(currentMailbox); - currentMailbox = NULL; } return result; } @@ -1622,7 +1632,6 @@ CleanupStack::PushL(currentMailbox); currentMailbox->GoOnlineL(); CleanupStack::PopAndDestroy(currentMailbox); - currentMailbox = NULL; } return result; } @@ -1634,14 +1643,13 @@ { NM_FUNCTION; - int result(KErrNotFound); + int result(KErrNotFound); CFSMailBox *currentMailbox(NULL); currentMailbox = mFSfw->GetMailBoxByUidL(mailboxId); if(currentMailbox) { CleanupStack::PushL(currentMailbox); - currentMailbox->GoOfflineL(); + currentMailbox->GoOfflineL(); CleanupStack::PopAndDestroy(currentMailbox); - currentMailbox = NULL; } return result; } @@ -1649,19 +1657,12 @@ /*! handles mailbox related events */ -void NmFrameworkAdapter::handleMailboxEvent( TFSMailMsgId mailbox, NmMailboxEvent event) +void NmFrameworkAdapter::handleMailboxEvent(TFSMailMsgId mailbox, NmMailboxEvent event) { NM_FUNCTION; QList mailboxIds; - NmId nmId; - if (event == NmMailboxDeleted || - event == NmMailboxCreated || - event == NmMailboxChanged) { - nmId = mailbox.GetNmId(); - } else { - nmId = getMailboxIdByMailMsgId(mailbox); - } + NmId nmId = mailbox.GetNmId(); mailboxIds.append(nmId); emit mailboxEvent(event, mailboxIds); }