00001
00002
00003
00004
00005
00006 #ifndef INTERNETEMAILENGINE_H
00007 #define INTERNETEMAILENGINE_H
00008
00009
00010 #include <e32std.h>
00011 #include <e32base.h>
00012 #include <msvapi.h>
00013 #include <imapset.h>
00014 #include <pop3set.h>
00015
00016 #include <msventry.h>
00017 #include <msvids.h>
00018 #include <mtclreg.h>
00019 #include <mtclbase.h>
00020 #include <mtmuibas.h>
00021 #include <mtuireg.h>
00022 #include <miutset.h>
00023
00024 #include <popcmtm.h>
00025 #include <impcmtm.h>
00026
00027 #include "internetemail.hrh"
00028
00029
00030
00031
00032
00033
00034 enum TProtocolType
00035 {
00036 EProtocolNULL,
00037 EProtocolPop3,
00038 EProtocolImap4
00039 };
00040
00041 enum TInternetEmailEngineEvent
00042 {
00043 ERemoteCountChanged,
00044 };
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 class MInternetEmailEngineObserver
00062 {
00063 public:
00064 virtual void HandleEngineChangedEventL(TInternetEmailEngineEvent aEvent)=0;
00065 };
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082 class CInternetEmailEngine : public CActive, public MMsvSessionObserver
00083 {
00084 public:
00085 static CInternetEmailEngine* NewL(MInternetEmailEngineObserver& aObserver);
00086
00087 ~CInternetEmailEngine();
00088
00089 public:
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101 void RemoteOpenEmailL( const TInt aIndex);
00102
00103
00104
00105
00106
00107
00108
00109 void RemoteFetchL();
00110
00111
00112
00113
00114
00115
00116 void SetProtocolL( const TInt aType );
00117 TBool IsProtocolSet();
00118
00119
00120 TPtrC RemoteEmailTextL( const TInt aIndex);
00121 TPtrC RemoteEmailSenderL( const TInt aIndex);
00122 TInt RemoteEmailCount();
00123
00124 TBool IsEngineReady();
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135 TBool CheckIfExistsL( const TInt aTypeEnum );
00136
00137 void CancelOperation();
00138 void Queue();
00139
00140 public:
00141
00142 void RunL();
00143 void DoCancel();
00144 TInt RunError( const TInt aError);
00145
00146
00147 void HandleSessionEventL(TMsvSessionEvent aEvent,TAny* aArg1,TAny* aArg2,TAny* aArg3);
00148
00149
00150 private:
00151 CInternetEmailEngine( MInternetEmailEngineObserver& aObserver );
00152 void ConstructL();
00153 void CompleteConstructL();
00154 void DisplayMessageL( const TMsvId &aId );
00155 TMsvId FindServiceL( const TUid aType );
00156 TMsvId FindFolderThenServiceL( const TUid aType );
00157 void MailCommandL( const TInt aCommand, TDes8& aParams );
00158 void LoadMtmL();
00159 CBaseMtm* InstantiateClientMtmL( TMsvId aService, const TUid aType );
00160
00161
00162 CMsvEntrySelection* UpdateEntriesL(const TMsvId& aServiceId);
00163 void UpdateRemoteCountL();
00164
00165
00166 private:
00167
00168
00169 enum TInternalState
00170 {
00171 EInitialising,
00172 EReadyButNeedsProtocol,
00173 EReady,
00174 EConnecting,
00175 EFetching,
00176 EDisconnecting,
00177 EDone,
00178 ECanceling
00179 };
00180
00181 private:
00182 MInternetEmailEngineObserver& iObserver;
00183
00184 CMsvSession* iMsvSession;
00185 CClientMtmRegistry* iClientReg;
00186 CMtmUiRegistry* iUiReg;
00187 CMsvOperation* iMsvOp;
00188
00189 TMsvId iServiceId;
00190 TMsvId iId;
00191 TInternalState iState;
00192
00193 CMsvEntrySelection* iRemoteEntries;
00194 TInt iRemoteCount;
00195
00196 CBaseMtm* iMtm;
00197 CMsvEntry* iEntry;
00198
00199
00200 TBool iIsProtocolSet;
00201 TBool iHasImapInbox;
00202 TInt iProtocolType;
00203 TUid iProtocolUid;
00204
00205 };
00206
00207 #endif
00208
00209