diff -r f345bda72bc4 -r 43e37759235e Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/txtmtmeditop_8cpp_source.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/txtmtmeditop_8cpp_source.html Tue Mar 30 16:16:55 2010 +0100 @@ -0,0 +1,142 @@ + + +
+ +00001 // +00002 // © 2004 Nokia Corporation. All rights reserved. +00003 // +00004 +00005 // class include +00006 #include "txtmtmeditop.h" +00007 +00008 // system include +00009 #include <msvids.h> +00010 +00011 // ---------------------------------------------------------------------------- +00012 // +00013 // CTxtMtmEditRemoteOperation: remote edit operation +00014 // +00015 // ---------------------------------------------------------------------------- +00016 CTxtMtmEditRemoteOperation::CTxtMtmEditRemoteOperation(CTextMtmUi& aMtmUi, CMsvSession& aMsvSession, +00017 TInt aPriority, TRequestStatus& aObserverRequestStatus) +00018 : CMsvOperation(aMsvSession, aPriority, aObserverRequestStatus), iMtmUi(aMtmUi) +00019 { +00020 CActiveScheduler::Add(this); +00021 } +00022 +00023 // ---------------------------------------------------------------------------- +00024 CTxtMtmEditRemoteOperation::~CTxtMtmEditRemoteOperation() +00025 { +00026 Cancel(); +00027 delete iCopyOperation; +00028 delete iEditOperation; +00029 } +00030 +00031 +00032 // ---------------------------------------------------------------------------- +00033 const TDesC8& CTxtMtmEditRemoteOperation::ProgressL() +00034 { +00035 return iProgress; +00036 } +00037 +00038 +00039 // ---------------------------------------------------------------------------- +00040 // +00041 // cancel any outstanding operations +00042 // +00043 void CTxtMtmEditRemoteOperation::DoCancel() +00044 { +00045 switch (iState) +00046 { +00047 case EStateCopying: +00048 { +00049 if(iCopyOperation) +00050 iCopyOperation->Cancel(); +00051 } +00052 break; +00053 case EStateEditing: +00054 { +00055 if(iEditOperation) +00056 iEditOperation->Cancel(); +00057 } +00058 break; +00059 default: +00060 break; +00061 } +00062 } +00063 +00064 +00065 // ---------------------------------------------------------------------------- +00066 // +00067 // asynchronously copy the entry from the remote service to the inbox +00068 // +00069 void CTxtMtmEditRemoteOperation::StartL(TMsvEntry& aSourceEntry) +00070 { +00071 CMsvEntry* cEntry=iMsvSession.GetEntryL(aSourceEntry.Parent()); +00072 CleanupStack::PushL(cEntry); +00073 iObserverRequestStatus = KRequestPending; +00074 SetActive(); +00075 iCopyOperation=cEntry->CopyL(aSourceEntry.Id(), KMsvDraftEntryId/*KMsvGlobalInBoxIndexEntryId*/, iStatus); +00076 CleanupStack::PopAndDestroy(cEntry);// cEntry +00077 iState = EStateCopying; +00078 } +00079 +00080 +00081 // ---------------------------------------------------------------------------- +00082 void CTxtMtmEditRemoteOperation::RunL() +00083 { +00084 switch (iState) +00085 { +00086 case EStateCopying: +00087 { +00088 // launch the viewer application if the entry copy operation +00089 // was successful +00090 TTxtProgressBuf package; +00091 package.Copy(iCopyOperation->ProgressL()); +00092 +00093 User::LeaveIfError(package().iErrorCode); +00094 TMsvId newid = package().iNewId; +00095 +00096 iStatus = KRequestPending; +00097 SetActive(); +00098 iEditOperation = iMtmUi.LaunchViewerApplicationL(iStatus, newid); +00099 iState = EStateEditing; +00100 } +00101 break; +00102 case EStateEditing: +00103 { +00104 // the user has finished editing, so complete the requesting +00105 // active object +00106 iState = EStateFinished; +00107 TRequestStatus *sP = &iObserverRequestStatus; +00108 User::RequestComplete(sP,iStatus.Int()); +00109 } +00110 break; +00111 default: +00112 break; +00113 } +00114 } +00115 +00116 +00117 // ---------------------------------------------------------------------------- +00118 // +00119 // This method gets called if there's a leave in RunL +00120 // +00121 TInt CTxtMtmEditRemoteOperation::RunError(TInt aError) +00122 { +00123 TRequestStatus *sP = &iObserverRequestStatus; +00124 User::RequestComplete(sP, aError); +00125 return KErrNone; +00126 } +