diff -r 42814f902fe6 -r 38571fd2a704 calendarui/commonutils/src/calenattachmentmodel.cpp --- a/calendarui/commonutils/src/calenattachmentmodel.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/commonutils/src/calenattachmentmodel.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -281,7 +281,8 @@ const TDesC& aSystemFileName, TInt aSize, TBool aFetched, - const TDataType& aDataType ) + const TDataType& aDataType, + RFile& aFile) { TRACE_ENTRY_POINT; @@ -294,6 +295,7 @@ aDataType, CCalenAttachmentInfo::ECalenAttachmentFetchedFromEntry ); CleanupStack::PushL(info); + info->SetFileHandle( aFile ); iAttachInfoArray.AppendL(info); CleanupStack::Pop(); isAttachmentModelCleared = EFalse; @@ -341,13 +343,16 @@ // Get the attachment file name TFileName fileName( attachmentInfo->FileName() ); + TParsePtrC fileNameParser(fileName); + TPtrC parsedFileName = fileNameParser.NameAndExt(); + // Confirm if needs to be deleted. CAknQueryDialog* confirmQuery = NULL; confirmQuery = CAknQueryDialog::NewL(); HBufC* stringBuf = NULL; stringBuf = StringLoader::LoadLC( R_QTN_QUERY_COMMON_CONF_REMOVE, - fileName, + parsedFileName, CEikonEnv::Static() ); confirmQuery->SetPromptL( *stringBuf ); if( EAknSoftkeyYes != @@ -482,17 +487,24 @@ RFile file; CCalenAttachmentInfo* attachmentInfo = iAttachInfoArray[aIndex]; - TParsePtrC fileNameParser(attachmentInfo->SystemFileName()); - CEikonEnv* eikonEnv = CEikonEnv::Static(); - RFs& fs = eikonEnv->FsSession(); - User::LeaveIfError(fs.ShareProtected()); - TInt err = file.Open( fs, attachmentInfo->SystemFileName(), - EFileRead|EFileShareReadersOnly); - if(err == KErrInUse) + if( attachmentInfo->IsFileHandleSet() ) + { + attachmentInfo->FileHandle(file); + } + else { - file.Close(); - User::LeaveIfError( file.Open( fs, attachmentInfo->SystemFileName(), - EFileRead|EFileShareReadersOnly) ); + TParsePtrC fileNameParser(attachmentInfo->SystemFileName()); + CEikonEnv* eikonEnv = CEikonEnv::Static(); + RFs& fs = eikonEnv->FsSession(); + User::LeaveIfError(fs.ShareProtected()); + TInt err = file.Open( fs, attachmentInfo->SystemFileName(), + EFileRead|EFileShareReadersOnly); + if(err == KErrInUse) + { + file.Close(); + User::LeaveIfError( file.Open( fs, attachmentInfo->SystemFileName(), + EFileRead|EFileShareReadersOnly) ); + } } TRACE_EXIT_POINT; @@ -593,7 +605,7 @@ fileHandle.Size(fileSize); AddAttachmentL( fileName, systemFileName, fileSize, - ETrue, fileMimeType ); + ETrue, fileMimeType, fileHandle); CleanupStack::PopAndDestroy(&fileHandle); } }