--- 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);
}
}