williamr@2
|
1 |
// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
|
williamr@2
|
2 |
// All rights reserved.
|
williamr@2
|
3 |
// This component and the accompanying materials are made available
|
williamr@4
|
4 |
// under the terms of "Eclipse Public License v1.0"
|
williamr@2
|
5 |
// which accompanies this distribution, and is available
|
williamr@4
|
6 |
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
|
williamr@2
|
7 |
//
|
williamr@2
|
8 |
// Initial Contributors:
|
williamr@2
|
9 |
// Nokia Corporation - initial contribution.
|
williamr@2
|
10 |
//
|
williamr@2
|
11 |
// Contributors:
|
williamr@2
|
12 |
//
|
williamr@2
|
13 |
// Description:
|
williamr@2
|
14 |
// Client MTM for the POP3 protocol
|
williamr@2
|
15 |
//
|
williamr@2
|
16 |
//
|
williamr@2
|
17 |
|
williamr@2
|
18 |
|
williamr@2
|
19 |
#if !defined (__POPCMTM_H__)
|
williamr@2
|
20 |
#define __POPCMTM_H__
|
williamr@2
|
21 |
|
williamr@2
|
22 |
#if !defined (__MIUTMSG_H__)
|
williamr@2
|
23 |
#include <miutmsg.h>
|
williamr@2
|
24 |
#endif
|
williamr@2
|
25 |
#if !defined (__MIUTPARS_H__)
|
williamr@2
|
26 |
#include <miutpars.h> //TImMessageField
|
williamr@2
|
27 |
#endif
|
williamr@2
|
28 |
#if !defined (__POP3CMDS_H__)
|
williamr@2
|
29 |
#include <pop3cmds.h> // KPOP3MTMConnect etc
|
williamr@2
|
30 |
#endif
|
williamr@2
|
31 |
#if !defined (__POP3SET_H__)
|
williamr@2
|
32 |
#include <pop3set.h> // KPOP3MTMConnect etc
|
williamr@2
|
33 |
#endif
|
williamr@2
|
34 |
|
williamr@2
|
35 |
class CImPOP3GetMail;
|
williamr@2
|
36 |
class CImEmailAutoSend;
|
williamr@2
|
37 |
|
williamr@4
|
38 |
// Pop3 Client MTM //
|
williamr@2
|
39 |
class CPop3ClientMtm : public CBaseMtm
|
williamr@2
|
40 |
/** POP3 client MTM interface.
|
williamr@2
|
41 |
|
williamr@2
|
42 |
Most of the functions in this class are implementations of the virtual functions
|
williamr@2
|
43 |
defined by the base class CBaseMtm.
|
williamr@2
|
44 |
@publishedAll
|
williamr@2
|
45 |
@released
|
williamr@2
|
46 |
*/
|
williamr@2
|
47 |
{
|
williamr@2
|
48 |
/**
|
williamr@2
|
49 |
@deprecated
|
williamr@2
|
50 |
*/
|
williamr@2
|
51 |
|
williamr@2
|
52 |
public:
|
williamr@2
|
53 |
enum TImPopcNewEmailHeaderType
|
williamr@2
|
54 |
{
|
williamr@2
|
55 |
EForwardedEmail,
|
williamr@2
|
56 |
EReplyToEmail,
|
williamr@2
|
57 |
EReceiptToEmail
|
williamr@2
|
58 |
};
|
williamr@2
|
59 |
|
williamr@2
|
60 |
public:
|
williamr@2
|
61 |
IMPORT_C static CPop3ClientMtm* NewL(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aMsvSession);
|
williamr@2
|
62 |
~CPop3ClientMtm();
|
williamr@2
|
63 |
|
williamr@2
|
64 |
void SaveMessageL();
|
williamr@2
|
65 |
void LoadMessageL();
|
williamr@2
|
66 |
|
williamr@2
|
67 |
IMPORT_C void StoreSettingsL();
|
williamr@2
|
68 |
IMPORT_C void RestoreSettingsL();
|
williamr@2
|
69 |
|
williamr@2
|
70 |
CMsvOperation* ReplyL (TMsvId aId, TMsvPartList aPartlist, TRequestStatus& aCompletionStatus);
|
williamr@2
|
71 |
CMsvOperation* ForwardL(TMsvId aId, TMsvPartList aPartList, TRequestStatus& aCompletionStatus);
|
williamr@2
|
72 |
|
williamr@2
|
73 |
TUint ValidateMessage(TMsvPartList aPartList);
|
williamr@2
|
74 |
TMsvPartList Find(const TDesC& aTextToFind, TMsvPartList aPartList);
|
williamr@2
|
75 |
|
williamr@2
|
76 |
void AddAddresseeL(const TDesC& aRealAddress);
|
williamr@2
|
77 |
void AddAddresseeL(const TDesC& aRealAddress, const TDesC& aAlias);
|
williamr@2
|
78 |
void RemoveAddressee(TInt aIndex);
|
williamr@2
|
79 |
|
williamr@2
|
80 |
IMPORT_C void SetSettingsL(const CImPop3Settings& aSettings);
|
williamr@2
|
81 |
IMPORT_C const CImPop3Settings& Settings() const;
|
williamr@2
|
82 |
|
williamr@2
|
83 |
// --- RTTI functions ---
|
williamr@2
|
84 |
TInt QueryCapability(TUid aCapability, TInt& aResponse);
|
williamr@2
|
85 |
void InvokeSyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TDes8& aParameter);
|
williamr@2
|
86 |
CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TDes8& aParameter, TRequestStatus& aCompletionStatus);
|
williamr@2
|
87 |
|
williamr@2
|
88 |
// Attachment functions to support the SendAs API
|
williamr@2
|
89 |
IMPORT_C virtual void AddAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
|
williamr@2
|
90 |
IMPORT_C virtual void AddAttachmentL(RFile& aFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
|
williamr@2
|
91 |
IMPORT_C virtual void AddLinkedAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
|
williamr@2
|
92 |
IMPORT_C virtual void AddEntryAsAttachmentL(TMsvId aAttachmentId, TRequestStatus& aStatus);
|
williamr@2
|
93 |
EXPORT_C virtual void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
|
williamr@2
|
94 |
IMPORT_C virtual void CreateMessageL(TMsvId aServiceId);
|
williamr@2
|
95 |
|
williamr@2
|
96 |
IMPORT_C virtual TMsvId DefaultServiceL() const;
|
williamr@2
|
97 |
IMPORT_C virtual void RemoveDefaultServiceL();
|
williamr@2
|
98 |
IMPORT_C virtual void ChangeDefaultServiceL(const TMsvId& aService);
|
williamr@2
|
99 |
|
williamr@2
|
100 |
protected:
|
williamr@2
|
101 |
CPop3ClientMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aMsvSession);
|
williamr@2
|
102 |
void ConstructL();
|
williamr@2
|
103 |
void ContextEntrySwitched();
|
williamr@2
|
104 |
|
williamr@2
|
105 |
private:
|
williamr@2
|
106 |
TBool ValidateAddress(const TPtrC& anAddress);
|
williamr@2
|
107 |
void SendOnNextConnectionL();
|
williamr@2
|
108 |
TMsvPartList DoFindL(const TDesC& aTextToFind, TMsvPartList aPartList);
|
williamr@2
|
109 |
CMsvEntrySelection* FilteredChildrenLC(TBool aNewOnly, TInt aMaxEmailSize);
|
williamr@2
|
110 |
CMsvEntrySelection* FilteredSelectionLC(TInt aMaxEmailSize, const CMsvEntrySelection& aSelection);
|
williamr@2
|
111 |
|
williamr@2
|
112 |
|
williamr@2
|
113 |
|
williamr@2
|
114 |
private:
|
williamr@2
|
115 |
CImPop3Settings* iImPop3Settings;
|
williamr@2
|
116 |
TImMessageField iTImMessageField;
|
williamr@2
|
117 |
CImHeader* iHeader;
|
williamr@2
|
118 |
|
williamr@2
|
119 |
HBufC* iEmailAddressFormatString; // defines format of email address used by "Send as" API eg _LIT("/"%S/" <%S>")
|
williamr@2
|
120 |
CImEmailOperation* iImEmailOperation;
|
williamr@2
|
121 |
CImPOP3GetMail* iImPOP3GetMail;
|
williamr@2
|
122 |
};
|
williamr@2
|
123 |
|
williamr@2
|
124 |
|
williamr@2
|
125 |
class CImPOP3GetMail : public CMsvOperation
|
williamr@2
|
126 |
/** Encapsulates an operation to copy/move POP3 emails from the remote inbox to
|
williamr@2
|
127 |
any local folder.
|
williamr@2
|
128 |
|
williamr@2
|
129 |
Functionality is provided to:
|
williamr@2
|
130 |
|
williamr@2
|
131 |
1. copy/move any new emails
|
williamr@2
|
132 |
|
williamr@2
|
133 |
2. copy/move a selection of emails
|
williamr@2
|
134 |
|
williamr@2
|
135 |
3. copy/move all emails
|
williamr@2
|
136 |
|
williamr@2
|
137 |
4. in the Remote Inbox to a local folder.
|
williamr@2
|
138 |
|
williamr@2
|
139 |
There are three cases for copying/moving the emails from the Remote Inbox:
|
williamr@2
|
140 |
|
williamr@2
|
141 |
1. the user is connected to the account so just copy/move the emails
|
williamr@2
|
142 |
|
williamr@2
|
143 |
2. the user is not connected to the account so connect, copy/move the emails,
|
williamr@2
|
144 |
and then disconnect
|
williamr@2
|
145 |
|
williamr@2
|
146 |
3. the user is not connected to the account so connect, copy/move the emails,
|
williamr@2
|
147 |
and then stay online
|
williamr@2
|
148 |
|
williamr@2
|
149 |
Objects of this type are returned from CPop3ClientMtm::InvokeAsyncFunctionL()
|
williamr@2
|
150 |
when a suitable get command is requested.
|
williamr@2
|
151 |
@publishedAll
|
williamr@2
|
152 |
@released
|
williamr@2
|
153 |
*/
|
williamr@2
|
154 |
{
|
williamr@2
|
155 |
public:
|
williamr@2
|
156 |
/** Defines types of get mail operation. */
|
williamr@2
|
157 |
enum TImPOP3GetMailType
|
williamr@2
|
158 |
{
|
williamr@2
|
159 |
/** Connect and copy new mail and stay online. */
|
williamr@2
|
160 |
EConnectAndCopyNewMailAndStayOnline,
|
williamr@2
|
161 |
/** Connect and copy new mail and disconnect. */
|
williamr@2
|
162 |
EConnectAndCopyNewMailAndDisconnect,
|
williamr@2
|
163 |
/** Connect and move new mail and stay online. */
|
williamr@2
|
164 |
EConnectAndMoveNewMailAndStayOnline,
|
williamr@2
|
165 |
/** Connect and move new mail and disconnect. */
|
williamr@2
|
166 |
EConnectAndMoveNewMailAndDisconnect,
|
williamr@2
|
167 |
/** Connect and copy mail selection and stay online. */
|
williamr@2
|
168 |
EConnectAndCopyMailSelectionAndStayOnline,
|
williamr@2
|
169 |
/** Connect and copy mail selection and disconnect. */
|
williamr@2
|
170 |
EConnectAndCopyMailSelectionAndDisconnect,
|
williamr@2
|
171 |
/** Connect and move mail selection and stay online. */
|
williamr@2
|
172 |
EConnectAndMoveMailSelectionAndStayOnline,
|
williamr@2
|
173 |
/** Connect and move mail selection and disconnect. */
|
williamr@2
|
174 |
EConnectAndMoveMailSelectionAndDisconnect,
|
williamr@2
|
175 |
/** Connect and copy all mail and stay online. */
|
williamr@2
|
176 |
EConnectAndCopyAllMailAndStayOnline,
|
williamr@2
|
177 |
/** Connect and copy all mail and disconnect. */
|
williamr@2
|
178 |
EConnectAndCopyAllMailAndDisconnect,
|
williamr@2
|
179 |
/** Connect and move all mail and stay online. */
|
williamr@2
|
180 |
EConnectAndMoveAllMailAndStayOnline,
|
williamr@2
|
181 |
/** Connect and move all mail and disconnect. */
|
williamr@2
|
182 |
EConnectAndMoveAllMailAndDisconnect
|
williamr@2
|
183 |
};
|
williamr@2
|
184 |
|
williamr@2
|
185 |
public:
|
williamr@2
|
186 |
IMPORT_C CMsvOperation* GetMailL(CPop3ClientMtm& aPop3ClientMtm, TRequestStatus& aObserverRequestStatus, const CMsvEntrySelection& aMsvEntrySelection, TDes8& aPop3GetMailInfo, TImPOP3GetMailType aPOP3GetMailType);
|
williamr@2
|
187 |
IMPORT_C const TDesC8& FinalProgress();
|
williamr@2
|
188 |
IMPORT_C ~CImPOP3GetMail();
|
williamr@2
|
189 |
void DoCancel();
|
williamr@2
|
190 |
void RunL();
|
williamr@2
|
191 |
const TDesC8& ProgressL();
|
williamr@2
|
192 |
private:
|
williamr@2
|
193 |
CImPOP3GetMail(CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus, CPop3ClientMtm& aPop3ClientMtm, TImPOP3GetMailType aPOP3GetMailType);
|
williamr@2
|
194 |
void ConstructL(const CMsvEntrySelection& aMsvEntrySelection, TDes8& aPop3GetMailInfo);
|
williamr@2
|
195 |
void SelectNextStateL(); // selects next state to go to
|
williamr@2
|
196 |
void ChangeStateL(); // initiates the next state operation
|
williamr@2
|
197 |
void SelectAndChangeToNextStateL();
|
williamr@2
|
198 |
void RequestComplete(TInt aError);
|
williamr@2
|
199 |
void Complete();
|
williamr@2
|
200 |
void ConnectToMailboxL();
|
williamr@2
|
201 |
void CopyMoveNewMessagesL(TBool aCopy);
|
williamr@2
|
202 |
void CopyMoveMessageSelectionL(TBool aCopy);
|
williamr@2
|
203 |
void CopyMoveAllMessagesL(TBool aCopy);
|
williamr@2
|
204 |
void DisconnectFromMailboxL();
|
williamr@2
|
205 |
void ResetProgress();
|
williamr@2
|
206 |
void StoreProgressL();
|
williamr@2
|
207 |
private:
|
williamr@2
|
208 |
enum TImPOP3GetMailState
|
williamr@2
|
209 |
{
|
williamr@2
|
210 |
EConnectToMailbox,
|
williamr@2
|
211 |
ECopyNewMessages,
|
williamr@2
|
212 |
EMoveNewMessages,
|
williamr@2
|
213 |
ECopyMessageSelection,
|
williamr@2
|
214 |
EMoveMessageSelection,
|
williamr@2
|
215 |
ECopyAllMessages,
|
williamr@2
|
216 |
EMoveAllMessages,
|
williamr@2
|
217 |
EDisconnectFromMailbox,
|
williamr@2
|
218 |
EFinished
|
williamr@2
|
219 |
};
|
williamr@2
|
220 |
|
williamr@2
|
221 |
CPop3ClientMtm& iPop3ClientMtm;
|
williamr@2
|
222 |
CMsvEntrySelection* iMsvEntrySelection;
|
williamr@2
|
223 |
CMsvOperation* iMsvOperation;
|
williamr@2
|
224 |
|
williamr@2
|
225 |
TPop3Progress iProgress;
|
williamr@2
|
226 |
TPop3Progress iErrorProgress;
|
williamr@2
|
227 |
TImPOP3GetMailState iState;
|
williamr@2
|
228 |
TImPOP3GetMailType iPOP3GetMailType;
|
williamr@2
|
229 |
TPckgBuf<TPop3Progress> iProgressBuf;
|
williamr@2
|
230 |
TPckgBuf<TImPop3GetMailInfo> iPop3GetMailInfo;
|
williamr@2
|
231 |
};
|
williamr@2
|
232 |
|
williamr@2
|
233 |
#endif // __POPCMTM_H__
|