--- a/phonebookui/Phonebook2/CommandsExtension/src/CPbk2SendContactCmd.cpp Thu Jul 15 18:22:55 2010 +0300
+++ b/phonebookui/Phonebook2/CommandsExtension/src/CPbk2SendContactCmd.cpp Thu Aug 19 09:41:07 2010 +0300
@@ -369,6 +369,7 @@
iUiControl->RegisterCommand( NULL );
}
+ delete iWaiter;
delete iSelectedContacts;
delete iConverter;
delete iVCardSender;
@@ -546,6 +547,25 @@
ProcessDone( KErrCancel );
break;
}
+ case EReleaseResource:
+ {
+ CPbk2AttachmentFileArray& fileArray = iConverter->AttachmentFileArray();
+ TInt count = fileArray.Count();
+ TInt deleteIndex = count -1;
+ CPbk2AttachmentFile * file = fileArray.At(deleteIndex);
+ fileArray.Delete(deleteIndex);
+ delete file;
+
+ if ( count > 1)
+ {
+ IssueRequest();
+ }
+ else
+ {
+ iWaiter->AsyncStop();
+ }
+ break;
+ }
}
}
@@ -555,6 +575,9 @@
//
TInt CPbk2SendContactCmd::RunError(TInt aError)
{
+ if( iWaiter && iWaiter->IsStarted() )
+ iWaiter->AsyncStop();
+
return FilterErrors(aError);
}
@@ -564,6 +587,9 @@
//
void CPbk2SendContactCmd::DoCancel()
{
+ if( iWaiter && iWaiter->IsStarted() )
+ iWaiter->AsyncStop();
+
delete iRetrieveOperation;
iRetrieveOperation = NULL;
}
@@ -1259,4 +1285,51 @@
return result;
}
+// --------------------------------------------------------------------------
+// CPbk2SendContactCmd::CommandExtension
+// --------------------------------------------------------------------------
+//
+TAny* CPbk2SendContactCmd::CommandExtension(TUid aExtensionUid )
+ {
+ if( aExtensionUid == TUid::Uid(MPbk2ResourceReleaseUID) )
+ {
+ return static_cast<MPbk2ResourceRelease *>(this);
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2SendContactCmd::ReleaseResource
+// --------------------------------------------------------------------------
+//
+void CPbk2SendContactCmd::ReleaseResource()
+ {
+ Cancel();
+ if (iConverter)
+ {
+ iConverter->Cancel();
+ CPbk2AttachmentFileArray& fileArray = iConverter->AttachmentFileArray();
+ if (fileArray.Count() > 0)
+ {
+ if ( !iWaiter )
+ {
+ TInt err( KErrNone );
+ TRAP( err,iWaiter = new (ELeave) CActiveSchedulerWait());
+ if ( err != KErrNone )
+ {
+ fileArray.ResetAndDestroy();
+ return;
+ }
+ }
+
+ iState = EReleaseResource;
+ IssueRequest();
+ iWaiter->Start();
+ }
+ }
+ }
+
// End of File