epoc32/include/pop3set.h
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
permissions -rw-r--r--
Final list of Symbian^2 public API header files
     1 // Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 //
    15 
    16 #if !defined (__POP3SET_H__)
    17 #define __POP3SET_H__
    18 
    19  
    20 
    21 
    22 #include <msvuids.h>
    23 #include <miutset.h>
    24 #include <miut_err.h>
    25 
    26 
    27 
    28 /** Default POP3 server port number. */
    29 const TUint32 KPOP3DefaultPortNumber = 110;
    30 
    31 /** @deprecated */
    32 const TInt32 KImPop3SynchroniseAll	 = -1;
    33 
    34 /** @deprecated */
    35 const TInt32 KImPop3SynchroniseNone	 = 0;
    36 
    37 /**
    38 Specifies which parts of a POP3 message to download. Used when configuring the
    39 POP3 service settings.
    40 
    41 @see
    42 CImPop3Settings 
    43 
    44 @publishedAll
    45 @released
    46 */
    47 enum TPop3GetMailOptions
    48 	{
    49 	/** Message headers only. */
    50 	EGetPop3EmailHeaders,
    51 	/** Complete message. */
    52 	EGetPop3EmailMessages
    53 	};			   
    54 
    55 
    56 class TPop3Progress
    57 /**
    58 Progress information for a POP3 operation. 
    59 
    60 @publishedAll
    61 @released
    62 */
    63 	{
    64 public:
    65 	IMPORT_C TInt ConnectionState() const;
    66 	IMPORT_C TInt ConnectionIAP() const;
    67 
    68 public:
    69 	/** Defines types of POP3 operations. */
    70 	enum TPop3ProgressType 
    71 		{
    72 	/** Refreshing view of remote mail box. */
    73 		EPopRefreshing,
    74 	/** Copying messages. */
    75 		EPopCopying,
    76 	/** Deleting messages. */
    77 		EPopDeleting,
    78 	/** Connecting to remote mail box. */
    79 		EPopConnecting,
    80 	/** Internal reorganisation. */
    81 		EPopTidying,
    82 	/** Connected to remote mail box and no current operations. */
    83 		EPopConnectedAndIdle,
    84 	/** Disconnecting from remote mail box. */
    85 		EPopDisconnecting,
    86 	/** Disconnected from remote mail box. */
    87 		EPopDisconnected,
    88 	/** Moving messages. */
    89 		EPopMoving,
    90 	/** Copying new messages. */
    91 		EPopCopyNewMail,
    92 	/** Moving new messages. */
    93 		EPopMoveNewMail,
    94 	/** Copying a selection of messages. */
    95 		EPopCopyMailSelection,
    96 	/** Moving a selection of messages. */
    97 		EPopMoveMailSelection,
    98 	/** Copying all messages. */
    99 		EPopCopyAllMail,
   100 	/** Moving all messages. */
   101 		EPopMoveAllMail,
   102 	/** Populating view of remote mail box. */
   103 		EPopPopulating,
   104 	/** Cancelling all off-line operations. */
   105 		EPopCancellingOfflineOps,
   106 	/** Populating mailbox with top command */
   107 		EPopTopPopulating,
   108 	/** Defines the maximum value for this enumeration. */
   109 		EPopMaxProgressValue=EPopTopPopulating
   110 		};
   111 
   112 	/** Type of operation for which progress is being reported. */
   113 	TPop3ProgressType	iPop3Progress;	// holds the progress for a 'super operation'
   114 	/** When in the EPopConnecting state, this member holds the connection 
   115 	stage. Otherwise it holds the total number of messages for the operation. */
   116 	TInt				iTotalMsgs;
   117 	/** Remaining number of messages to process. */
   118 	TInt				iMsgsToProcess;
   119 	/** Number of bytes processed by the operation. */
   120 	TInt				iBytesDone;
   121 	/** When in the EPopConnecting state, this member holds the connection 
   122 	iap value. Otherwise it holds the total number of bytes to progress for the
   123 	operation. */
   124 	TInt				iTotalBytes;
   125 	/** Operation error code. */
   126 	TInt				iErrorCode; // client side needs to be informed of an error
   127 	/** Type of the sub-operation, where a nested operations is occurring. */
   128 	TPop3ProgressType	iPop3SubStateProgress; // holds the progress for the substate of the 'super operation'
   129 	/** Service performing the operation. */
   130 	TMsvId				iServiceId;
   131 	/** The total size of messages to be downloaded. */
   132 	TInt				iTotalSize; // The total size of messages to be downloaded.
   133 	};
   134 
   135 
   136 class TImPop3GetMailInfo
   137 /**
   138 Use to specify the maximum message size and the destination folder ID for
   139 certain POP3 operations.
   140 
   141 @see
   142 CPop3ClientMtm
   143 
   144 @publishedAll
   145 @released
   146 */
   147 	{
   148 public:
   149 	/** Maximum message size for the operation. */
   150 	TInt32		iMaxEmailSize;
   151 	/** ID of the destination folder for the operation. */
   152 	TMsvId		iDestinationFolder;
   153 	};
   154 
   155 class TImPop3PopulateOptions
   156 /**
   157 Use to specify the population limit for the POP3 top command
   158 
   159 @see
   160 CPop3ClientMtm
   161 
   162 @publishedAll
   163 @released
   164 */
   165 	{
   166 private:
   167 	/** Version of this GetMailInfo class, breaks coding standard by putting a private member at 
   168 	    the beginning to enable unpacking code to check the version before unpacking the rest of the class */
   169 	TInt32	iVersion;
   170 
   171 public:
   172 	IMPORT_C TImPop3PopulateOptions();
   173 	IMPORT_C static void UnpackL(const TDesC8& aDesc, TImPop3PopulateOptions &aUnpackTo);
   174 
   175 	IMPORT_C TInt MaxEmailSize();
   176 	IMPORT_C void SetMaxEmailSize(TInt aMaxEmailSize);
   177 	IMPORT_C TInt PopulationLimit();
   178 	IMPORT_C void SetPopulationLimit(TInt aPopulationLimit);
   179 	
   180 private:
   181 	/** Maximum message size for the operation. */
   182 	TInt32		iMaxEmailSize;
   183 	/** Population limit for Populate operation, set to -1 for total populate */
   184 	TInt32		iPopulationLimit;
   185 	/** Construction utility function */
   186 	};
   187 
   188 
   189 class CImPop3Settings : public CImBaseEmailSettings
   190 /**
   191 Run-time configuration settings for POP3.
   192 
   193 Messaging clients should use an instance of this class to specify
   194 and retrieve configuration settings that are used by the POP3 service when
   195 executing email operations.  
   196 
   197 Service settings such as the user name and password, whether to authenticate
   198 using APOP or plain text, the maximum size of an email to download, and the
   199 maximum number of messages to synchronise can be specified using this class.
   200 Storing and restoring from the message store is also supported.
   201 
   202 To use this class to change a setting:
   203 1) Set the current context to the POP3 service entry using CMsvStore.
   204 2) Create an instance of CImPop3Settings and put it on the cleanup stack.
   205 3) Retrieve the existing settings by calling CImPop3Settings::RestoreL().
   206 4) Change the inbox synchronisation limit setting by calling CImPop3Settings::SetInboxSynchronisationLimit().
   207 5) Save the new settings by calling CImPop3Settings::StoreL().
   208 6) Pop and destroy the CImPop3Settings instance.
   209 
   210 @see CMsvStore
   211 @publishedAll
   212 @released
   213 */
   214 	{
   215 public:
   216 	IMPORT_C CImPop3Settings();
   217 	IMPORT_C virtual ~CImPop3Settings();
   218 	IMPORT_C void Reset();
   219 	IMPORT_C const TPtrC8 LoginName() const;
   220 	IMPORT_C void SetLoginNameL(const TDesC8&);
   221 	IMPORT_C const TPtrC8 Password() const;
   222 	IMPORT_C void SetPasswordL(const TDesC8&);
   223 	IMPORT_C TBool AutoSendOnConnect() const;
   224 	IMPORT_C void SetAutoSendOnConnect(TBool aFlag);
   225 	IMPORT_C TBool Apop() const;
   226 	IMPORT_C void SetApop(TBool aFlag);
   227 	IMPORT_C TBool DisconnectedUserMode() const;
   228 	IMPORT_C void SetDisconnectedUserMode(TBool aFlag);
   229 	IMPORT_C TBool DeleteEmailsWhenDisconnecting() const;
   230 	IMPORT_C void SetDeleteEmailsWhenDisconnecting(TBool aFlag);
   231 	IMPORT_C TBool AcknowledgeReceipts() const;
   232 	IMPORT_C void SetAcknowledgeReceipts(TBool aFlag);
   233 	IMPORT_C TInt MaxEmailSize() const;
   234 	IMPORT_C void SetMaxEmailSize(const TInt aMaxEmailSize);
   235 	IMPORT_C TPop3GetMailOptions GetMailOptions() const;
   236 	IMPORT_C void SetGetMailOptions(TPop3GetMailOptions aGetMailOptions);
   237 	IMPORT_C CImPop3Settings& CopyL(const CImPop3Settings& aCImPop3Settings);
   238 	IMPORT_C TBool operator==(const CImPop3Settings& aCImPop3Settings) const;
   239 	IMPORT_C TInt32 InboxSynchronisationLimit() const;
   240 	IMPORT_C void SetInboxSynchronisationLimit(const TInt32 aInboxSyncLimit);
   241 	IMPORT_C TInt32 PopulationLimit() const;
   242 	IMPORT_C void SetPopulationLimitL(const TInt32 aPopulationLimit);
   243 	IMPORT_C void SetTlsSslDomainL(const TDesC8& aDomainName);
   244 	IMPORT_C TPtrC8 TlsSslDomain() const;
   245 
   246 private:
   247 	class TImPop3SettingsExtension
   248 		{
   249 	public:
   250 		inline TImPop3SettingsExtension();
   251 	public:
   252 		HBufC8* iLoginName;
   253 		HBufC8* iPassword;
   254 		HBufC8* iTlsSslDomain;
   255 		TInt32 iPopulationLimit;
   256 		};
   257 	inline TImPop3SettingsExtension* Extension() const;
   258 	inline void CheckExtensionExistsL();
   259 
   260 	enum TImPop3EmailSettings
   261 		{
   262 		KPop3SettingsClearFlag					= 0x00000000,
   263 		KPop3BaseEmailSettingsLastUsedFlag		= CImBaseEmailSettings::EBaseEmailSettingsLastUsedFlag,	//0x00000002
   264 		KPop3ApopFlag							= KPop3BaseEmailSettingsLastUsedFlag << 1,		//0x00000004
   265 		KPop3AutoSendFlag						= KPop3ApopFlag << 1,							//0x00000008
   266 		KPop3DisconnectedModeFlag				= KPop3AutoSendFlag << 1,						//0x00000010
   267 		KPop3DeleteEmailsWhenDisconnectingFlag	= KPop3DisconnectedModeFlag << 1,				//0x00000020
   268 		KPop3AcknowledgeReceipts				= KPop3DeleteEmailsWhenDisconnectingFlag << 1,	//0x00000040
   269 		KPop3EmailSettingsLastUsedFlag			= KPop3AcknowledgeReceipts						//0x00000040
   270 		};
   271 
   272 	TImPop3SettingsExtension*	iExtension; // renamed iReceiptAddress
   273 	TInt32  iInboxSyncLimit;
   274 	TInt32	iMaxEmailSize;
   275 	TPop3GetMailOptions iGetMailOptions;
   276 	};
   277 
   278 inline CImPop3Settings::TImPop3SettingsExtension* CImPop3Settings::Extension() const
   279 	{
   280 	return iExtension;
   281 	}
   282 
   283 inline void CImPop3Settings::CheckExtensionExistsL()
   284 	{
   285 	if (!iExtension)
   286 		iExtension=new (ELeave) CImPop3Settings::TImPop3SettingsExtension;
   287 	}
   288 
   289 inline CImPop3Settings::TImPop3SettingsExtension::TImPop3SettingsExtension() : iLoginName(NULL) , iPassword(NULL), iTlsSslDomain(NULL)
   290 	{
   291 	}
   292 
   293 #endif // #define __POP3SET_H__