common/tools/ats/smoketest/email/testutils/src/T_UtilsReadEmailSettingsFromConfigFile.cpp
changeset 719 d5603c08781b
child 872 17498133d9ad
equal deleted inserted replaced
718:b18be44be852 719:d5603c08781b
       
     1 // Copyright (c) 2006-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"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // Utility functions for reading the config/setting file to update
       
    15 // the CImImap4Settings, CImPop3Settings, CImSmtpSettings and CImIAPPreferences objects.
       
    16 // 
       
    17 //
       
    18 
       
    19 
       
    20 // User include
       
    21 #include <t_utilsenumconverter.h>
       
    22 #include <t_utilsconfigfileparserutility.h>
       
    23 #include <t_utilsconfigfilemachinename.h>
       
    24 #include <t_utilsreademailsettingsfromconfigfile.h>
       
    25 
       
    26 // epoc inlcude
       
    27 #include <f32file.h>
       
    28 #include <cdbcols.h>
       
    29 #include <imapset.h>
       
    30 #include <smtpset.h>
       
    31 #include <iapprefs.h>
       
    32 
       
    33 // Literals used
       
    34 
       
    35 // Imap Settings related literals
       
    36 _LIT(KCfgImapServerAddress, "ImapServerAddress"); 
       
    37 _LIT(KCfgImapLoginName, "ImapLoginName"); 
       
    38 _LIT(KCfgImapPassword, "ImapPassword");
       
    39 _LIT(KCfgImapPort, "ImapPort"); 
       
    40 _LIT(KCfgImapSecureSockets, "ImapSecureSockets");
       
    41 _LIT(KCfgImapSSLWrapper, "ImapSSLWrapper");
       
    42 _LIT(KCfgImapFolderPath, "ImapFolderPath");
       
    43 _LIT(KCfgImapPathSeperator, "ImapPathSeperator");
       
    44 _LIT(KCfgImapMaxEmailSize, "ImapMaxEmailSize");
       
    45 _LIT(KCfgImapGetMailOptions, "ImapGetMailOptions");
       
    46 _LIT(KCfgImapInboxSynchronisationLimit, "ImapInboxSynchronisationLimit");
       
    47 _LIT(KCfgImapMailboxSynchronisationLimit, "ImapMailSynchronisationLimit");
       
    48 _LIT(KUseExpunge , "ImapUseExpunge" );
       
    49 _LIT(KCfgImapAutoSendOnConnect, "ImapAutoSendOnConnect" );
       
    50 _LIT(KCfgImapDeleteEmailsWhenDisconnecting, "ImapDeleteEmailsWhenDisconnecting" );
       
    51 _LIT(KCfgImapAcknowledgeReceipts, "ImapAcknowledgeReceipts" );
       
    52 _LIT(KCfgImapDisconnectedUserMode, "ImapDisconnectedUserMode" );
       
    53 _LIT(KCfgImapSynchronise, "ImapSynchronise" );
       
    54 _LIT(KCfgImapSubscribe, "ImapSubscribe" );
       
    55 _LIT(KCfgImapUpdatingSeenFlags, "ImapUpdatingSeenFlags" );
       
    56 _LIT(KCfgImapSyncRate, "ImapSyncRate" );
       
    57 _LIT(KCfgImapFetchSize, "ImapFetchSize" );
       
    58 _LIT(KCfgImapIdle, "ImapIdle" );
       
    59 _LIT(KCfgImapIdleTimeout, "ImapIdleTimeout" );
       
    60 _LIT(KCfgImapPartialMailOptions, "ImapPartialMailOptions" );
       
    61 _LIT(KCfgImapBodyTextSizeLimit, "ImapBodyTextSizeLimit" ); 
       
    62 _LIT(KCfgImapAttachmentSizeLimit, "ImapAttachmentSizeLimit" );
       
    63 
       
    64 _LIT(KCfgImapIapList, "ImapIapList");
       
    65 _LIT(KCfgImapSNAPId, "ImapSNAPId");
       
    66 _LIT(KCfgImapBearerMobility, "ImapBearerMobility");
       
    67 _LIT(KCfgImapDownloadRules, "ImapDownloadRules");
       
    68 
       
    69 //
       
    70 // POP Settings related literals
       
    71 //
       
    72 _LIT(KCfgPopServerAddress, "PopServerAddress");
       
    73 _LIT(KCfgPopLoginName, "PopLoginName");
       
    74 _LIT(KCfgPopPassword, "PopPassword");
       
    75 _LIT(KCfgPopMaxEmailSize, "PopMaxEmailSize");
       
    76 _LIT(KCfgPopPort, "PopPort");
       
    77 _LIT(KCfgPopInboxSynchronisationLimit, "PopInboxSynchronisationLimit");
       
    78 _LIT(KCfgPopSecureSockets, "PopSecureSockets");
       
    79 _LIT(KCfgPopSSLWrapper, "PopSSLWrapper");
       
    80 _LIT(KCfgPopGetMailOptions, "PopGetMailOptions");
       
    81 _LIT(KCfgPopPopulationLimit, "PopPopulationLimit");
       
    82 _LIT(KCfgPopAutoSendOnConnect, "PopAutoSendOnConnect" );
       
    83 _LIT(KCfgPopDeleteEmailsWhenDisconnecting, "PopDeleteEmailsWhenDisconnecting" );
       
    84 _LIT(KCfgPopAcknowledgeReceipts, "PopAcknowledgeReceipts" );
       
    85 _LIT(KCfgPopDisconnectedUserMode, "PopDisconnectedUserMode" );
       
    86 _LIT(KCfgPopAPOPEncryption, "PopAPOPEncryption" );
       
    87 
       
    88 _LIT(KCfgPopIapList, "PopIapList");
       
    89 _LIT(KCfgPopSNAPId, "PopSNAPId");
       
    90 _LIT(KCfgPopBearerMobility, "PopBearerMobility");
       
    91 
       
    92 //
       
    93 // SMTP settings related literals
       
    94 //
       
    95 _LIT(KCfgSmtpServerAddress, "SmtpServerAddress");
       
    96 _LIT(KCfgSmtpEmailAddress, "SmtpEmailAddress");
       
    97 _LIT(KCfgSmtpBodyEncoding, "SmtpBodyEncoding");
       
    98 _LIT(KCfgSmtpReceiptAddress, "SmtpReceiptAddress");
       
    99 _LIT(KCfgSmtpRequestReceipts, "SmtpRequestReceipts");
       
   100 _LIT(KCfgSmtpSendMessageOption, "SmtpSendMessageOption");
       
   101 _LIT(KCfgSmtpEmailAlias, "SmtpEmailAlias");
       
   102 _LIT(KCfgSmtpDefaultMsgCharSet, "SmtpMsgCharSet");
       
   103 _LIT(KCfgSmtpSetPort, "SmtpSetPort");
       
   104 _LIT(KCfgSmtpSetReplyToAddress, "SmtpSetReplyToAddress");
       
   105 _LIT(KCfgSmtpSetAddVCardToEmail, "SmtpSetAddVCardToEmail");
       
   106 _LIT(KCfgSmtpSetAddSignatureToEmail, "SmtpSetAddSignatureToEmail");
       
   107 _LIT(KCfgSmtpSetSendCopyToSelf, "SmtpSetSendCopyToSelf");
       
   108 _LIT(KCfgSmtpSetLoginName, "SmtpSetLoginName");
       
   109 _LIT(KCfgSmtpSetPassword, "SmtpSetPassword");
       
   110 _LIT(KCfgSmtpSetSMTPAuth, "SmtpSetSMTPAuth");
       
   111 _LIT(KCfgSmtpSetInboxLoginDetails, "SmtpSetInboxLoginDetails");
       
   112 _LIT(KCfgSmtpSecureSockets, "SmtpSetSecureSockets");
       
   113 _LIT(KCfgSmtpSSLWrapper, "SmtpSetSSLWrapper");
       
   114 
       
   115 _LIT(KCfgSmtpIapList, "SmtpIapList");
       
   116 _LIT(KCfgSmtpSNAPId, "SmtpSNAPId");
       
   117 _LIT(KCfgSmtpBearerMobility, "SmtpBearerMobility");
       
   118 
       
   119 // Other Literals
       
   120 _LIT(KImapIAPSuffix, "_ImapIAP");
       
   121 _LIT(KImapCommDbDialogPref, "_ImapCommDbDialogPref");
       
   122 _LIT(KImapIAPIndex, "_ImapIAPIndex");
       
   123 _LIT(KPopIAPSuffix, "_PopIAP");
       
   124 _LIT(KPopCommDbDialogPref, "_PopCommDbDialogPref");
       
   125 _LIT(KPopIAPIndex, "_PopIAPIndex");
       
   126 _LIT(KSmtpIAPSuffix, "_SmtpIAP");
       
   127 _LIT(KSmtpCommDbDialogPref, "_SmtpCommDbDialogPref");
       
   128 _LIT(KSmtpIAPIndex, "_SmtpIAPIndex");
       
   129 
       
   130 
       
   131 /**
       
   132 ReadImapSettingsFromConfigurationFileL()
       
   133 Modifies the IMAP related default setting and IAP objects.
       
   134 
       
   135 @param  aSettingsFile
       
   136 Configuration/setting file path. 
       
   137 
       
   138 @param  aImapSet
       
   139 CImImap4Settings object.
       
   140 
       
   141 @param  aImapIapPref
       
   142 CImIAPPreferences object.
       
   143 */
       
   144 EXPORT_C void CT_MsgUtilsReadEmailSettingsFromConfigFile::ReadImapSettingsFromConfigurationFileL(
       
   145 															TDesC& aSettingsFile, CImImap4Settings& aImapSet, CImIAPPreferences& aImapIapPref,const TDesC& /* aPtrEmailAdd */)
       
   146 
       
   147 	{
       
   148 	// Parses the setting file
       
   149 	CT_MsgUtilsConfigFileParserUtility* scriptFileParser = CT_MsgUtilsConfigFileParserUtility::NewL(aSettingsFile);
       
   150 	CleanupStack::PushL(scriptFileParser);	
       
   151 	
       
   152 	TPtrC8 string8Ptr; 
       
   153 	TPtrC stringPtr = KNone(); 
       
   154 	TInt intTmp;
       
   155 		
       
   156 	if(scriptFileParser->GetFieldAsString(KCfgImapServerAddress, stringPtr) == KErrNone)
       
   157 		{
       
   158 		aImapSet.SetServerAddressL(stringPtr);
       
   159 		}
       
   160 
       
   161 	CT_MsgUtilsConfigFileMachineName* machineNameFile = CT_MsgUtilsConfigFileMachineName::NewLC(stringPtr);
       
   162 	TPtrC8 machineName(machineNameFile->MachineName());
       
   163 	
       
   164 	if(scriptFileParser->GetFieldAsString8(KCfgImapLoginName, string8Ptr) == KErrNone)
       
   165 		{
       
   166 		aImapSet.SetLoginNameL(string8Ptr);
       
   167 		}
       
   168 	else
       
   169 		{
       
   170 		aImapSet.SetLoginNameL(machineName);
       
   171 		}
       
   172 
       
   173 	if(scriptFileParser->GetFieldAsString8(KCfgImapPassword, string8Ptr) == KErrNone)
       
   174 		{
       
   175 		aImapSet.SetPasswordL(string8Ptr);
       
   176 		}
       
   177 	else
       
   178 		{
       
   179 		aImapSet.SetPasswordL(machineName);
       
   180 		}
       
   181 	
       
   182 	if(scriptFileParser->GetFieldAsInteger(KCfgImapPort, intTmp) == KErrNone)
       
   183 		{
       
   184 		aImapSet.SetPort(intTmp);
       
   185 		}
       
   186 
       
   187 	if(scriptFileParser->GetFieldAsInteger(KCfgImapSecureSockets, intTmp) == KErrNone)
       
   188 		{		
       
   189 		aImapSet.SetSecureSockets( (TBool) intTmp );
       
   190 		}
       
   191 
       
   192 	if(scriptFileParser->GetFieldAsInteger(KCfgImapSSLWrapper, intTmp ) == KErrNone)
       
   193 		{		
       
   194 		aImapSet.SetSSLWrapper( (TBool) intTmp );
       
   195 		}
       
   196 
       
   197 	if(scriptFileParser->GetFieldAsString8(KCfgImapFolderPath, string8Ptr) == KErrNone)
       
   198 		{
       
   199 		aImapSet.SetFolderPathL(string8Ptr);
       
   200 		}
       
   201 
       
   202 	if(scriptFileParser->GetFieldAsString8(KCfgImapPathSeperator, string8Ptr) == KErrNone)
       
   203 		{
       
   204 		if ( string8Ptr.Length() == 1  )
       
   205 			{
       
   206 			aImapSet.SetPathSeparator( string8Ptr[0] );			
       
   207 			}
       
   208 		}
       
   209 
       
   210 	if(scriptFileParser->GetFieldAsInteger(KCfgImapMaxEmailSize, intTmp) == KErrNone)
       
   211 		{
       
   212 		aImapSet.SetMaxEmailSize(intTmp);
       
   213 		}
       
   214 	
       
   215 	if(scriptFileParser->GetFieldAsString(KCfgImapGetMailOptions, stringPtr) == KErrNone)
       
   216 		{
       
   217 		TImap4GetMailOptions setGetMailOptions = CT_MsgUtilsEnumConverter::ConvertDesToTImap4GetMailOptions(stringPtr);
       
   218 		aImapSet.SetGetMailOptions(setGetMailOptions);
       
   219 		}
       
   220 	
       
   221 	if(scriptFileParser->GetFieldAsInteger(KCfgImapInboxSynchronisationLimit, intTmp) == KErrNone)
       
   222 		{
       
   223 		aImapSet.SetInboxSynchronisationLimit(intTmp);
       
   224 		}
       
   225 		
       
   226 	if(scriptFileParser->GetFieldAsInteger(KCfgImapMailboxSynchronisationLimit, intTmp) == KErrNone)
       
   227 		{
       
   228 		aImapSet.SetMailboxSynchronisationLimit(intTmp);
       
   229 		}
       
   230 
       
   231 	if(scriptFileParser->GetFieldAsInteger(KCfgImapAutoSendOnConnect, intTmp) == KErrNone)
       
   232 		{		
       
   233 		aImapSet.SetAutoSendOnConnect((TBool) intTmp);
       
   234 		}
       
   235 
       
   236 	if(scriptFileParser->GetFieldAsInteger(KCfgImapDeleteEmailsWhenDisconnecting, intTmp) == KErrNone)
       
   237 		{		
       
   238 		aImapSet.SetDeleteEmailsWhenDisconnecting((TBool) intTmp);
       
   239 		}
       
   240 
       
   241 	if(scriptFileParser->GetFieldAsInteger(KCfgImapAcknowledgeReceipts, intTmp) == KErrNone)
       
   242 		{		
       
   243 		aImapSet.SetAcknowledgeReceipts((TBool) intTmp);
       
   244 		}
       
   245 
       
   246 	if(scriptFileParser->GetFieldAsInteger(KCfgImapDisconnectedUserMode, intTmp) == KErrNone)
       
   247 		{		
       
   248 		aImapSet.SetDisconnectedUserMode((TBool) intTmp);
       
   249 		}
       
   250 
       
   251 	if(scriptFileParser->GetFieldAsString(KCfgImapSynchronise, stringPtr) == KErrNone)
       
   252 		{
       
   253 		TFolderSyncType setFolderSyncType = CT_MsgUtilsEnumConverter::ConvertDesToTFolderSyncType(stringPtr);
       
   254 		aImapSet.SetSynchronise(setFolderSyncType);
       
   255 		}
       
   256 
       
   257 	if(scriptFileParser->GetFieldAsString(KCfgImapSubscribe, stringPtr) == KErrNone)
       
   258 		{
       
   259 		TFolderSubscribeType setFolderSubscribeType = CT_MsgUtilsEnumConverter::ConvertDesToTFolderSubscribeType(stringPtr);
       
   260 		aImapSet.SetSubscribe(setFolderSubscribeType);
       
   261 		}
       
   262 
       
   263 	if(scriptFileParser->GetFieldAsInteger(KCfgImapUpdatingSeenFlags, intTmp) == KErrNone)
       
   264 		{		
       
   265 		aImapSet.SetUpdatingSeenFlags((TBool) intTmp);
       
   266 		}
       
   267 
       
   268 	if(scriptFileParser->GetFieldAsInteger(KCfgImapSyncRate, intTmp) == KErrNone)
       
   269 		{
       
   270 		aImapSet.SetSyncRateL(intTmp);
       
   271 		}
       
   272 
       
   273 	if(scriptFileParser->GetFieldAsInteger(KCfgImapFetchSize, intTmp) == KErrNone)
       
   274 		{
       
   275 		aImapSet.SetFetchSizeL(intTmp);
       
   276 		}
       
   277 
       
   278 	if(scriptFileParser->GetFieldAsInteger(KCfgImapIdle, intTmp) == KErrNone)
       
   279 		{		
       
   280 		aImapSet.SetImapIdle( (TBool) intTmp );
       
   281 		}
       
   282 
       
   283 	if(scriptFileParser->GetFieldAsInteger(KCfgImapIdleTimeout, intTmp) == KErrNone)
       
   284 		{
       
   285 		aImapSet.SetImapIdleTimeoutL(intTmp);
       
   286 		}
       
   287 
       
   288 	if(scriptFileParser->GetFieldAsString(KCfgImapPartialMailOptions, stringPtr) == KErrNone)
       
   289 		{
       
   290 		TImImap4PartialMailOptions setImap4PartialMailOptions = CT_MsgUtilsEnumConverter::ConvertDesToTImImap4PartialMailOptions(stringPtr);
       
   291 		aImapSet.SetPartialMailOptionsL(setImap4PartialMailOptions);
       
   292 		}
       
   293 
       
   294 	if(scriptFileParser->GetFieldAsInteger(KCfgImapBodyTextSizeLimit, intTmp) == KErrNone)
       
   295 		{
       
   296 		aImapSet.SetBodyTextSizeLimitL(intTmp);
       
   297 		}
       
   298 
       
   299 	if(scriptFileParser->GetFieldAsInteger(KCfgImapAttachmentSizeLimit, intTmp) == KErrNone)
       
   300 		{
       
   301 		aImapSet.SetAttachmentSizeLimitL(intTmp);
       
   302 		}
       
   303 
       
   304 	if(scriptFileParser->GetFieldAsString(KCfgImapIapList, stringPtr) == KErrNone)
       
   305 		{
       
   306 		ReadImapIAPAndAddL(scriptFileParser, (TDesC&)KCfgImapIapList, aImapIapPref);
       
   307 		}
       
   308 	
       
   309 	if(scriptFileParser->GetFieldAsInteger(KUseExpunge, intTmp) == KErrNone)
       
   310 		{		
       
   311 		aImapSet.SetUseExpunge( (TBool) intTmp);
       
   312 		}
       
   313 	
       
   314 	if(scriptFileParser->GetFieldAsInteger(KCfgImapSNAPId, intTmp) == KErrNone)
       
   315 		{		
       
   316 		aImapIapPref.SetSNAPL(intTmp);
       
   317 		}
       
   318 		
       
   319 	if(scriptFileParser->GetFieldAsInteger(KCfgImapBearerMobility, intTmp) == KErrNone)
       
   320 		{		
       
   321 		aImapSet.SetBearerMobility((TBool) intTmp);
       
   322 		}
       
   323 	
       
   324 	if(scriptFileParser->GetFieldAsInteger(KCfgImapDownloadRules, intTmp) == KErrNone)
       
   325 		{		
       
   326 		aImapSet.SetUseSyncDownloadRules((TBool) intTmp);
       
   327 		}	
       
   328 	
       
   329 	CleanupStack::PopAndDestroy(2,scriptFileParser);
       
   330 	}
       
   331 
       
   332 /**
       
   333 ReadImapIAPAndAdd()_
       
   334 Gets the base string for the IAP list.
       
   335 
       
   336 @param  aScriptFileParser
       
   337 CT_MsgUtilsConfigFileParserUtility object.
       
   338 
       
   339 @param  aParamListName
       
   340 @param  aImapIapPref
       
   341 CImIAPPreferences object.
       
   342 */	
       
   343 EXPORT_C void CT_MsgUtilsReadEmailSettingsFromConfigFile::ReadImapIAPAndAddL(CT_MsgUtilsConfigFileParserUtility* aScriptFileParser, const TDesC& aParamListName, CImIAPPreferences& aImapIapPref)
       
   344 	{
       
   345 	TPtrC stringPtr; 	
       
   346 	TPtrC baseString; 
       
   347 	
       
   348 	if( aScriptFileParser->GetFieldAsString(aParamListName, stringPtr ) == KErrNone )
       
   349 		{
       
   350 		TInt start = 0;
       
   351 		TInt end = stringPtr.Length();
       
   352 		
       
   353 		while (GetString(stringPtr, start, end, baseString))
       
   354 			{
       
   355 			ReadImapIAPAndAddFieldL(aScriptFileParser, baseString, aImapIapPref);
       
   356 			//ReadImapIAPAndAddL(aScriptFileParser, baseString, aImapIapPref);
       
   357 			}
       
   358 		}		
       
   359 	}
       
   360 
       
   361 /**
       
   362 ReadImapIAPAndAddField()
       
   363 Modifies the CImIAPPreferences object.
       
   364 
       
   365 @param  aScriptFileParser
       
   366 CT_MsgUtilsConfigFileParserUtility object.
       
   367 
       
   368 @param  aFieldName 
       
   369 @param  aImapIapPref
       
   370 CImIAPPreferences object.
       
   371 */
       
   372 EXPORT_C void CT_MsgUtilsReadEmailSettingsFromConfigFile::ReadImapIAPAndAddFieldL( 
       
   373 										CT_MsgUtilsConfigFileParserUtility* aScriptFileParser, 
       
   374 										const TDesC& aFieldName, CImIAPPreferences& aImapIapPref)
       
   375 	{
       
   376 	
       
   377 	TPtrC stringPtr; 
       
   378 	TInt intTmp;
       
   379 	
       
   380 	TImIAPChoice iapChoice;
       
   381 	iapChoice.iIAP = 0;
       
   382 	iapChoice.iDialogPref = ECommDbDialogPrefUnknown;
       
   383 	
       
   384 	TInt index = 0;
       
   385 	TBool modified = EFalse;
       
   386 
       
   387 	HBufC* buf = HBufC::NewLC(100);
       
   388 			
       
   389 	buf->Des() = aFieldName;
       
   390 	buf->Des().Append(KImapIAPSuffix);
       
   391 			
       
   392 	if(aScriptFileParser->GetFieldAsInteger(buf->Des(), intTmp) == KErrNone)
       
   393 		{
       
   394 		iapChoice.iIAP = intTmp;
       
   395 		modified = ETrue;
       
   396 		}
       
   397 
       
   398 	buf->Des() = aFieldName;
       
   399 	buf->Des().Append(KImapCommDbDialogPref);
       
   400 	
       
   401 	if(aScriptFileParser->GetFieldAsString(buf->Des(), stringPtr) == KErrNone)
       
   402 		{
       
   403 		TCommDbDialogPref setCommDbDialogPref = CT_MsgUtilsEnumConverter::ConvertDesToTCommDbDialogPref(stringPtr);
       
   404 		iapChoice.iDialogPref = setCommDbDialogPref;
       
   405 		modified = ETrue;
       
   406 		}
       
   407 	
       
   408 	buf->Des() = aFieldName;
       
   409 	buf->Des().Append(KImapIAPIndex);
       
   410 	if(aScriptFileParser->GetFieldAsInteger(buf->Des(), intTmp) == KErrNone)
       
   411 		{
       
   412 		index = intTmp;
       
   413 		modified = ETrue;
       
   414 		}
       
   415 	
       
   416 	if (modified)
       
   417 		{ 
       
   418 		aImapIapPref.AddIAPL(iapChoice ,index );
       
   419 		}
       
   420 
       
   421 	CleanupStack::PopAndDestroy(buf);
       
   422 	}
       
   423 
       
   424 
       
   425 /**
       
   426 GetString()
       
   427 
       
   428 @param aStringPtr
       
   429 @param aStart
       
   430 @param aEnd
       
   431 @param aBaseString
       
   432 @return 
       
   433 */
       
   434 EXPORT_C TBool CT_MsgUtilsReadEmailSettingsFromConfigFile::GetString(TDesC& aStringPtr, TInt& aStart, TInt aEnd, TPtrC& aBaseString)
       
   435 	{
       
   436 	TBool ret = EFalse;
       
   437 
       
   438 	if (aStart == aEnd)
       
   439 		{
       
   440 		return EFalse;				
       
   441 		}
       
   442 	
       
   443 	TInt currPos = aStart;
       
   444 	
       
   445 	// strip out any starting spaces.
       
   446 	while (currPos < aEnd )
       
   447 		{
       
   448 		if (aStringPtr[currPos] == ' ' || aStringPtr[currPos] == '\t')
       
   449 			{			
       
   450 			currPos++;	
       
   451 			}
       
   452 		else
       
   453 			{			
       
   454 			break;	
       
   455 			}
       
   456 		}
       
   457 	TInt startTmp = currPos;
       
   458 	//Looking for terminating space or Tab to determine the length of string
       
   459 	while (currPos < aEnd )
       
   460 		{
       
   461 		if (aStringPtr[currPos] == ' ' || aStringPtr[currPos] == '\t')
       
   462 			{			
       
   463 			break;
       
   464 			}
       
   465 		else
       
   466 			{
       
   467 			currPos++;
       
   468 			ret = ETrue;
       
   469 			}
       
   470 		}
       
   471 	
       
   472 	if (ret)
       
   473 		{	// We have a string.
       
   474 		aBaseString.Set(aStringPtr.Mid( startTmp, currPos - startTmp)); 
       
   475 		}
       
   476 		
       
   477 	aStart = currPos;
       
   478 	return ret;
       
   479 	}
       
   480 
       
   481 /**
       
   482 ReadPopSettingsFromConfigurationFileL()
       
   483 Modifies the POP related default setting and IAP objects.
       
   484 
       
   485 @param  aSettingsFile
       
   486 Configuration/setting file path. 
       
   487 
       
   488 @param  aPopSet
       
   489 CImPop3Settings object.
       
   490 
       
   491 @param  aPopIapPref
       
   492 */
       
   493 EXPORT_C void CT_MsgUtilsReadEmailSettingsFromConfigFile::ReadPopSettingsFromConfigurationFileL(TDesC& aSettingsFile, 
       
   494 											CImPop3Settings& aPopSet, CImIAPPreferences& aPopIapPref, const TDesC& /*aPtrEmailAdd*/)
       
   495 	{
       
   496 	// Parses the setting file
       
   497 	CT_MsgUtilsConfigFileParserUtility* scriptFileParser = CT_MsgUtilsConfigFileParserUtility::NewL(aSettingsFile);
       
   498 	CleanupStack::PushL(scriptFileParser);	
       
   499 	
       
   500 	TPtrC8 string8Ptr; 
       
   501 	TPtrC stringPtr = KNone(); 
       
   502 	TInt intValue;
       
   503 
       
   504 	if(scriptFileParser->GetFieldAsString(KCfgPopServerAddress, stringPtr) == KErrNone)
       
   505 		{	
       
   506 		aPopSet.SetServerAddressL(stringPtr);
       
   507 		}
       
   508 
       
   509 	CT_MsgUtilsConfigFileMachineName* machineNameFile = CT_MsgUtilsConfigFileMachineName::NewLC(stringPtr);
       
   510 	TPtrC8 machineName(machineNameFile->MachineName());
       
   511 
       
   512 	
       
   513 	if(scriptFileParser->GetFieldAsString8(KCfgPopLoginName, string8Ptr) == KErrNone)
       
   514 		{
       
   515 		aPopSet.SetLoginNameL(string8Ptr);
       
   516 		}
       
   517 
       
   518 	else
       
   519 		{
       
   520 		aPopSet.SetLoginNameL(machineName);
       
   521 		}
       
   522 	
       
   523 	if(scriptFileParser->GetFieldAsString8(KCfgPopPassword, string8Ptr) == KErrNone)
       
   524 		{
       
   525 		aPopSet.SetPasswordL(string8Ptr);
       
   526 		}
       
   527 
       
   528 	else
       
   529 		{
       
   530 		aPopSet.SetPasswordL(machineName);
       
   531 		}
       
   532 	
       
   533 	if(scriptFileParser->GetFieldAsInteger(KCfgPopMaxEmailSize, intValue) == KErrNone)
       
   534 		{
       
   535 		aPopSet.SetMaxEmailSize(intValue);
       
   536 		}
       
   537 	
       
   538 	if(scriptFileParser->GetFieldAsInteger(KCfgPopPort, intValue) == KErrNone)
       
   539 		{
       
   540 		aPopSet.SetPort(intValue);
       
   541 		}
       
   542 	
       
   543 	if(scriptFileParser->GetFieldAsInteger(KCfgPopInboxSynchronisationLimit, intValue) == KErrNone)
       
   544 		{
       
   545 		aPopSet.SetInboxSynchronisationLimit(intValue);
       
   546 		}
       
   547 	
       
   548 	if(scriptFileParser->GetFieldAsInteger(KCfgPopSecureSockets, intValue) == KErrNone)
       
   549 		{
       
   550 		aPopSet.SetSecureSockets((TBool)intValue);
       
   551 		}
       
   552 	
       
   553 	if(scriptFileParser->GetFieldAsInteger(KCfgPopSSLWrapper, intValue) == KErrNone)
       
   554 		{
       
   555 		aPopSet.SetSSLWrapper((TBool)intValue);
       
   556 		}
       
   557 	
       
   558 	if(scriptFileParser->GetFieldAsString(KCfgPopGetMailOptions, stringPtr) == KErrNone)
       
   559 		{
       
   560 		TPop3GetMailOptions options = CT_MsgUtilsEnumConverter::ConvertDesToTPop3GetMailOptions(stringPtr);
       
   561 		aPopSet.SetGetMailOptions(options);
       
   562 		}
       
   563 	
       
   564 	if(scriptFileParser->GetFieldAsInteger(KCfgPopPopulationLimit, intValue) == KErrNone)
       
   565 		{
       
   566 		aPopSet.SetPopulationLimitL(intValue);
       
   567 		}
       
   568 	
       
   569 	if(scriptFileParser->GetFieldAsInteger(KCfgPopAutoSendOnConnect, intValue) == KErrNone)
       
   570 		{	
       
   571 		aPopSet.SetAutoSendOnConnect((TBool) intValue);
       
   572 		}
       
   573 	
       
   574 	if(scriptFileParser->GetFieldAsInteger(KCfgPopDeleteEmailsWhenDisconnecting, intValue) == KErrNone)
       
   575 		{	
       
   576 		aPopSet.SetDeleteEmailsWhenDisconnecting((TBool) intValue);
       
   577 		}
       
   578 	
       
   579 	if(scriptFileParser->GetFieldAsInteger(KCfgPopAcknowledgeReceipts, intValue) == KErrNone)
       
   580 		{	
       
   581 		aPopSet.SetAcknowledgeReceipts((TBool) intValue);
       
   582 		}
       
   583 	
       
   584 	if(scriptFileParser->GetFieldAsInteger(KCfgPopDisconnectedUserMode, intValue) == KErrNone)
       
   585 		{	
       
   586 		aPopSet.SetDisconnectedUserMode((TBool) intValue);
       
   587 		}
       
   588 	
       
   589 	if(scriptFileParser->GetFieldAsInteger(KCfgPopAPOPEncryption, intValue) == KErrNone)
       
   590 		{	
       
   591 		aPopSet.SetApop((TBool) intValue);
       
   592 		}
       
   593 		
       
   594 	if(scriptFileParser->GetFieldAsString(KCfgPopIapList, stringPtr) == KErrNone)
       
   595 		{
       
   596 		ReadPopIAPAndAddL(scriptFileParser, (TDesC&) KCfgPopIapList, aPopIapPref);
       
   597 		}
       
   598 		
       
   599 	if(scriptFileParser->GetFieldAsInteger(KCfgPopSNAPId, intValue) == KErrNone)
       
   600 		{		
       
   601 		aPopIapPref.SetSNAPL(intValue);
       
   602 		}
       
   603 		
       
   604 	if(scriptFileParser->GetFieldAsInteger(KCfgPopBearerMobility, intValue) == KErrNone)
       
   605 		{	
       
   606 		aPopSet.SetBearerMobility((TBool) intValue);
       
   607 		}
       
   608 		
       
   609 	CleanupStack::PopAndDestroy(2,scriptFileParser);
       
   610 	}
       
   611 
       
   612 /**
       
   613 *
       
   614 ReadPopIAPAndAdd()
       
   615 Gets the base string for the IAP list.
       
   616 
       
   617 @param  aScriptFileParser
       
   618 CT_MsgUtilsConfigFileParserUtility object.
       
   619 
       
   620 @param  aParamListName
       
   621 @param  aPopIapPref
       
   622 */	
       
   623 EXPORT_C void CT_MsgUtilsReadEmailSettingsFromConfigFile::ReadPopIAPAndAddL( 
       
   624 									CT_MsgUtilsConfigFileParserUtility* aScriptFileParser,
       
   625 									const TDesC& aParamListName, CImIAPPreferences& aPopIapPref)
       
   626 	{
       
   627 	TPtrC stringPtr; 	
       
   628 	TPtrC baseString; 
       
   629 	
       
   630 	if( aScriptFileParser->GetFieldAsString(aParamListName, stringPtr) == KErrNone )
       
   631 		{
       
   632 		TInt start = 0;
       
   633 		TInt end = stringPtr.Length();
       
   634 		
       
   635 		while (GetString(stringPtr, start, end, baseString))
       
   636 			{
       
   637 			ReadPopIAPAndAddFieldL(aScriptFileParser, baseString, aPopIapPref);
       
   638 			}
       
   639 		}		
       
   640 		
       
   641 	}
       
   642 /**
       
   643 ReadPopIAPAndAddField()
       
   644 Modifies the CImIAPPreferences object.
       
   645 
       
   646 @param  aScriptFileParser
       
   647 CT_MsgUtilsConfigFileParserUtility object.
       
   648 
       
   649 @param  aFieldName
       
   650 @param  aPopIapPref
       
   651 */	
       
   652 EXPORT_C void CT_MsgUtilsReadEmailSettingsFromConfigFile::ReadPopIAPAndAddFieldL( 
       
   653 									CT_MsgUtilsConfigFileParserUtility* aScriptFileParser, 
       
   654 									const TDesC& aFieldName, CImIAPPreferences& aPopIapPref)
       
   655 	{
       
   656 	TPtrC stringPtr; 
       
   657 	TInt intTmp;
       
   658 	
       
   659 	TImIAPChoice iapChoice;
       
   660 
       
   661 	iapChoice.iIAP = 0;
       
   662 	iapChoice.iDialogPref = ECommDbDialogPrefUnknown;
       
   663 	
       
   664 	TInt index = 0;
       
   665 	TBool modified = EFalse;
       
   666 		
       
   667 	HBufC* buf = HBufC::NewLC(100);
       
   668 			
       
   669 	buf->Des() = aFieldName;
       
   670 	buf->Des().Append(KPopIAPSuffix);
       
   671 	
       
   672 	if(aScriptFileParser->GetFieldAsInteger(buf->Des(), intTmp) == KErrNone)
       
   673 		{
       
   674 		iapChoice.iIAP = intTmp;
       
   675 		modified = ETrue;
       
   676 		}
       
   677 
       
   678 	buf->Des() = aFieldName;
       
   679 	buf->Des().Append(KPopCommDbDialogPref);
       
   680 	if(aScriptFileParser->GetFieldAsString(buf->Des(), stringPtr) == KErrNone)
       
   681 		{
       
   682 		TCommDbDialogPref setCommDbDialogPref = CT_MsgUtilsEnumConverter::ConvertDesToTCommDbDialogPref(stringPtr);
       
   683 		iapChoice.iDialogPref = setCommDbDialogPref;
       
   684 		modified = ETrue;
       
   685 		}
       
   686 
       
   687 	buf->Des() = aFieldName;
       
   688 	buf->Des().Append(KPopIAPIndex);
       
   689 	if(aScriptFileParser->GetFieldAsInteger(buf->Des(), intTmp) == KErrNone)
       
   690 		{
       
   691 		index = intTmp;
       
   692 		modified = ETrue;
       
   693 		}
       
   694 	
       
   695 	if (modified)
       
   696 		{
       
   697 		aPopIapPref.AddIAPL(iapChoice ,index);
       
   698 		}
       
   699 
       
   700 	CleanupStack::PopAndDestroy(buf);		
       
   701 	}
       
   702 
       
   703 /**
       
   704 ReadSmtpSettingsFromConfigurationFileL()
       
   705 Modifies the POP related default setting and IAP objects.
       
   706 
       
   707 @param  aSettingsFile
       
   708 Configuration/setting file path. 
       
   709 
       
   710 @param  aSmtpSet
       
   711 @param  aSmtpIapPref
       
   712 */	
       
   713 EXPORT_C void CT_MsgUtilsReadEmailSettingsFromConfigFile::ReadSmtpSettingsFromConfigurationFileL(TDesC& aSettingsFile, 
       
   714 										CImSmtpSettings& aSmtpSet, CImIAPPreferences& aSmtpIapPref,const TDesC&/* aPtrEmailAdd*/)
       
   715 	{
       
   716 	// Parses the setting file
       
   717 	CT_MsgUtilsConfigFileParserUtility* scriptFileParser = CT_MsgUtilsConfigFileParserUtility::NewL(aSettingsFile);
       
   718 	CleanupStack::PushL(scriptFileParser);	
       
   719 	
       
   720 	TPtrC8 string8Ptr; 
       
   721 	TPtrC stringPtr = KNone(); 
       
   722 	TInt intValue;
       
   723 
       
   724 	if(scriptFileParser->GetFieldAsString(KCfgSmtpServerAddress, stringPtr) == KErrNone)
       
   725 		{
       
   726 		aSmtpSet.SetServerAddressL(stringPtr);
       
   727 		}
       
   728 	
       
   729 	CT_MsgUtilsConfigFileMachineName* machineNameFile = CT_MsgUtilsConfigFileMachineName::NewLC(stringPtr);
       
   730 	TPtrC emailAddr(machineNameFile->MachineNameEmail());
       
   731 	TPtrC8 machineName(machineNameFile->MachineName());
       
   732 	
       
   733 	if(scriptFileParser->GetFieldAsString(KCfgSmtpEmailAddress, stringPtr) == KErrNone)
       
   734 		{
       
   735 		aSmtpSet.SetEmailAddressL(stringPtr);
       
   736 		}
       
   737 		
       
   738 	else
       
   739 		{
       
   740 		aSmtpSet.SetEmailAddressL(emailAddr);
       
   741 		}
       
   742 
       
   743 	if(scriptFileParser->GetFieldAsString(KCfgSmtpBodyEncoding, stringPtr) == KErrNone)
       
   744 		{
       
   745 		TMsgOutboxBodyEncoding setBodyEncoding = CT_MsgUtilsEnumConverter::ConvertDesToTMsgOutboxBodyEncoding(stringPtr);
       
   746 		aSmtpSet.SetBodyEncoding(setBodyEncoding);
       
   747 		}
       
   748 	
       
   749 	if(scriptFileParser->GetFieldAsString(KCfgSmtpReceiptAddress, stringPtr) == KErrNone)
       
   750 		{
       
   751 		aSmtpSet.SetReceiptAddressL(stringPtr);
       
   752 		}
       
   753 		
       
   754 	else
       
   755 		{
       
   756 		aSmtpSet.SetReceiptAddressL(emailAddr);
       
   757 		}
       
   758 		
       
   759 	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpRequestReceipts, intValue) == KErrNone)
       
   760 		{		
       
   761 		aSmtpSet.SetRequestReceipts((TBool) intValue);
       
   762 		}
       
   763 	
       
   764 	if(scriptFileParser->GetFieldAsString(KCfgSmtpSendMessageOption, stringPtr) == KErrNone)
       
   765 		{
       
   766 		TImSMTPSendMessageOption setSendMessageOption = CT_MsgUtilsEnumConverter::ConvertDesToTImSMTPSendMessageOption(stringPtr);
       
   767 		aSmtpSet.SetSendMessageOption(setSendMessageOption);
       
   768 		}
       
   769 	
       
   770 	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpSetPort, intValue) == KErrNone)
       
   771 		{
       
   772 		aSmtpSet.SetPort(intValue);
       
   773 		}
       
   774 	
       
   775 	if(scriptFileParser->GetFieldAsString(KCfgSmtpEmailAlias, stringPtr) == KErrNone)
       
   776 		{
       
   777 		aSmtpSet.SetEmailAliasL(stringPtr);
       
   778 		}
       
   779 	
       
   780 	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpDefaultMsgCharSet, intValue) == KErrNone)
       
   781 		{
       
   782 		TUid tmp = { intValue };
       
   783 		aSmtpSet.SetDefaultMsgCharSet(tmp);
       
   784 		}
       
   785 	
       
   786 	if(scriptFileParser->GetFieldAsString(KCfgSmtpSetReplyToAddress, stringPtr) == KErrNone)
       
   787 		{
       
   788 		aSmtpSet.SetReplyToAddressL(stringPtr);
       
   789 		}
       
   790 		
       
   791 	else
       
   792 		{
       
   793 		aSmtpSet.SetReplyToAddressL(emailAddr);
       
   794 		}
       
   795 			
       
   796 	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpSetAddVCardToEmail, intValue) == KErrNone)
       
   797 		{		
       
   798 		aSmtpSet.SetAddVCardToEmail((TBool) intValue);
       
   799 		}
       
   800 	
       
   801 	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpSetAddSignatureToEmail, intValue) == KErrNone)
       
   802 		{		
       
   803 		aSmtpSet.SetAddSignatureToEmail((TBool) intValue);
       
   804 		}
       
   805 	
       
   806 	if(scriptFileParser->GetFieldAsString(KCfgSmtpSetSendCopyToSelf, stringPtr) == KErrNone)
       
   807 		{
       
   808 		TImSMTPSendCopyToSelf setSMTPSendCopyToSelf = CT_MsgUtilsEnumConverter::ConvertDesToTImSMTPSendCopyToSelf(stringPtr);
       
   809 		aSmtpSet.SetSendCopyToSelf(setSMTPSendCopyToSelf);
       
   810 		}
       
   811 	
       
   812 	if(scriptFileParser->GetFieldAsString8(KCfgSmtpSetLoginName, string8Ptr) == KErrNone)
       
   813 		{
       
   814 		aSmtpSet.SetLoginNameL(string8Ptr);
       
   815 		}
       
   816 		
       
   817 	else
       
   818 		{
       
   819 		aSmtpSet.SetLoginNameL(machineName);	
       
   820 		}
       
   821 			
       
   822 	if(scriptFileParser->GetFieldAsString8(KCfgSmtpSetPassword, string8Ptr) == KErrNone)
       
   823 		{
       
   824 		aSmtpSet.SetPasswordL(string8Ptr);
       
   825 		}
       
   826 
       
   827 	else
       
   828 		{
       
   829 		aSmtpSet.SetPasswordL(machineName);	
       
   830 		}
       
   831 			
       
   832 	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpSetSMTPAuth, intValue) == KErrNone)
       
   833 		{		
       
   834 		aSmtpSet.SetSMTPAuth((TBool) intValue);
       
   835 		}
       
   836 
       
   837 	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpSetInboxLoginDetails, intValue) == KErrNone)
       
   838 		{		
       
   839 		aSmtpSet.SetInboxLoginDetails((TBool) intValue);
       
   840 		}
       
   841 
       
   842 	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpSecureSockets, intValue) == KErrNone)
       
   843 		{		
       
   844 		aSmtpSet.SetSecureSockets((TBool) intValue);
       
   845 		}
       
   846 	
       
   847 	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpSSLWrapper, intValue) == KErrNone)
       
   848 		{		
       
   849 		aSmtpSet.SetSSLWrapper((TBool) intValue);
       
   850 		}
       
   851 	
       
   852 	if(scriptFileParser->GetFieldAsString(KCfgSmtpIapList, stringPtr) == KErrNone)
       
   853 		{
       
   854 		ReadSmtpIAPAndAddL(scriptFileParser, KCfgSmtpIapList, aSmtpIapPref);
       
   855 		}
       
   856 		
       
   857 	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpSNAPId, intValue) == KErrNone)
       
   858 		{		
       
   859 		aSmtpIapPref.SetSNAPL(intValue);
       
   860 		}
       
   861 	
       
   862 	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpBearerMobility, intValue) == KErrNone)
       
   863 		{		
       
   864 		aSmtpSet.SetBearerMobility((TBool) intValue);
       
   865 		}	
       
   866 	
       
   867 	CleanupStack::PopAndDestroy(2,scriptFileParser);
       
   868 	
       
   869 	}
       
   870 	
       
   871 /**
       
   872 ReadSmtpIAPAndAdd()
       
   873 Gets the base string for the IAP list.
       
   874 
       
   875 @param  aScriptFileParser
       
   876 CT_MsgUtilsConfigFileParserUtility object.
       
   877 
       
   878 @param  aParamListName
       
   879 @param  aSmtpIapPref
       
   880 */	
       
   881 EXPORT_C void CT_MsgUtilsReadEmailSettingsFromConfigFile::ReadSmtpIAPAndAddL(
       
   882 						CT_MsgUtilsConfigFileParserUtility* aScriptFileParser, 
       
   883 						const TDesC& aParamListName, CImIAPPreferences& aSmtpIapPref)
       
   884 	{
       
   885 	
       
   886 	TPtrC stringPtr; 	
       
   887 	TPtrC baseString; 
       
   888 	
       
   889 	if( aScriptFileParser->GetFieldAsString(aParamListName, stringPtr) == KErrNone)
       
   890 		{
       
   891 		TInt start = 0;
       
   892 		TInt end = stringPtr.Length();
       
   893 		
       
   894 		while (GetString(stringPtr ,start, end, baseString))
       
   895 			{
       
   896 			ReadSmtpIAPAndAddFieldL(aScriptFileParser, baseString, aSmtpIapPref);
       
   897 			}
       
   898 		}
       
   899 	}
       
   900 
       
   901 /**
       
   902 ReadSmtpIAPAndAddField()
       
   903 Modifies the CImIAPPreferences object.
       
   904 
       
   905 @param  aScriptFileParser
       
   906 CT_MsgUtilsConfigFileParserUtility object.
       
   907 
       
   908 @param  aFieldName
       
   909 @param  aSmtpIapPref
       
   910 */	
       
   911 EXPORT_C void CT_MsgUtilsReadEmailSettingsFromConfigFile::ReadSmtpIAPAndAddFieldL(
       
   912 							CT_MsgUtilsConfigFileParserUtility* aScriptFileParser , 
       
   913 							const TDesC& aFieldName, CImIAPPreferences& aSmtpIapPref)
       
   914 	{
       
   915 	TPtrC stringPtr; 
       
   916 	TInt intTmp;
       
   917 	
       
   918 	TImIAPChoice iapChoice;
       
   919 
       
   920 	iapChoice.iIAP = 0;
       
   921 	iapChoice.iDialogPref = ECommDbDialogPrefUnknown;
       
   922 	
       
   923 	TInt index = 0;
       
   924 	TBool modified = EFalse;
       
   925 		
       
   926 	HBufC* buf = HBufC::NewLC(100);
       
   927 			
       
   928 	buf->Des() = aFieldName;
       
   929 	buf->Des().Append(KSmtpIAPSuffix);
       
   930 	
       
   931 	if(aScriptFileParser->GetFieldAsInteger(buf->Des(), intTmp) == KErrNone)
       
   932 		{
       
   933 		iapChoice.iIAP = intTmp;
       
   934 		modified = ETrue;
       
   935 		}
       
   936 
       
   937 	buf->Des() = aFieldName;
       
   938 	buf->Des().Append(KSmtpCommDbDialogPref);
       
   939 	if(aScriptFileParser->GetFieldAsString(buf->Des(), stringPtr) == KErrNone)
       
   940 		{
       
   941 		TCommDbDialogPref setCommDbDialogPref = CT_MsgUtilsEnumConverter::ConvertDesToTCommDbDialogPref(stringPtr);
       
   942 		iapChoice.iDialogPref = setCommDbDialogPref;
       
   943 		modified = ETrue;
       
   944 		}
       
   945 
       
   946 	buf->Des() = aFieldName;
       
   947 	buf->Des().Append(KSmtpIAPIndex);
       
   948 	if(aScriptFileParser->GetFieldAsInteger(buf->Des(), intTmp) == KErrNone)
       
   949 		{
       
   950 		index = intTmp;
       
   951 		modified = ETrue;
       
   952 		}
       
   953 	
       
   954 	if (modified)
       
   955 		{
       
   956 		aSmtpIapPref.AddIAPL(iapChoice, index);
       
   957 		}
       
   958 	CleanupStack::PopAndDestroy(buf);		
       
   959 	}
       
   960 	
       
   961 
       
   962 /**
       
   963 CompareIapPrefs()
       
   964 Compares the IAP preference objects.
       
   965 
       
   966 @param  aPrefs1
       
   967 CImIAPPreferences object.
       
   968 
       
   969 @param  aPrefs2
       
   970 CImIAPPreferences object.
       
   971 
       
   972 @return
       
   973 If the objects are same returns ETrue
       
   974 */
       
   975 EXPORT_C TBool CT_MsgUtilsReadEmailSettingsFromConfigFile::CompareIapPrefs(CImIAPPreferences& aPrefs1, CImIAPPreferences& aPrefs2)
       
   976 	{
       
   977 	// Compare version
       
   978 	if (aPrefs1.Version() != aPrefs2.Version())
       
   979 		{
       
   980 		return EFalse;
       
   981 		}	
       
   982 	// Compare number of IAPs stored
       
   983 	TInt numIAPs1 = aPrefs1.NumberOfIAPs();
       
   984 	
       
   985 	if (numIAPs1 != aPrefs2.NumberOfIAPs())
       
   986 		{
       
   987 		return EFalse;
       
   988 		}
       
   989 	// Compare individual IAPs
       
   990 	for (TInt i = 0; i < numIAPs1; i++)
       
   991 		{
       
   992 		if (aPrefs1.IAPPreference(i).iIAP != aPrefs2.IAPPreference(i).iIAP ||
       
   993 			aPrefs1.IAPPreference(i).iDialogPref != aPrefs2.IAPPreference(i).iDialogPref)
       
   994 			{
       
   995 			return EFalse;
       
   996 			}
       
   997 		}
       
   998 	return ETrue;
       
   999 	}