buildverification/smoketest/messaging/Src/TestMessBase.cpp
branchGCC_SURGE
changeset 17 03d9ade4748d
parent 14 5d7fec11a5ce
parent 15 5b5908ec640f
equal deleted inserted replaced
14:5d7fec11a5ce 17:03d9ade4748d
     1 // Copyright (c) 2002-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 "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // This contains CTestCase which is the base class for all the TestCase DLLs
       
    15 // 
       
    16 //
       
    17 
       
    18 #include "Configuration.cfg"
       
    19 
       
    20 #include "TestMessBase.h"
       
    21 #include "TestMessProcessor.h"
       
    22 #include "TestMessTimer.h"
       
    23 #include "TestMessPrintEntryUtil.h"
       
    24 
       
    25 // EPOC includes
       
    26 #include <smtpset.h>
       
    27 #include <pop3set.h>
       
    28 #include <imapset.h>
       
    29 #include <txtrich.h>
       
    30 #include <f32file.h>
       
    31 #include <msvids.h>
       
    32 #include <fbs.h>
       
    33 #include <emsuserpromptie.h>
       
    34 #ifdef __MESSAGING_API_V2__
       
    35 #include <smut.h>
       
    36 #include <miutset.h>
       
    37 #include <cemailaccounts.h>
       
    38 #include <csmsaccount.h>
       
    39 #endif
       
    40 /**
       
    41  * @name Constant Literals used.
       
    42  */
       
    43 /*@{*/
       
    44 _LIT(KDepth,					"depth");
       
    45 _LIT(KFolder,					"folder%d");
       
    46 
       
    47 // Default value for depth of the count
       
    48 #define KDefaultDepthCount		1
       
    49 
       
    50 // Default value for depth of the count
       
    51 #define KDefaultDepthCount		1
       
    52 
       
    53 _LIT(KDefault,					"default");
       
    54 
       
    55 _LIT(KScheduled,				"scheduled");
       
    56 _LIT(KProgress,					"progress");
       
    57 
       
    58 //_LIT(KIap,						"iap");
       
    59 //_LIT(KIapName,					"iapname");
       
    60 
       
    61 _LIT(KElements,					"elements");
       
    62 _LIT(KStartPosition,			"StartPosition%d");
       
    63 _LIT(KFile,						"File%d");
       
    64 _LIT(KType,						"Type%d");
       
    65 _LIT(KTypeFormat,				"Format");
       
    66 _LIT(KTypeSound,				"Sound");
       
    67 _LIT(KTypePreDefSound,			"PreDefSound");
       
    68 _LIT(KTypeAnimation,			"Animation");
       
    69 _LIT(KTypePreDefAnimation,		"PreDefAnimation");
       
    70 _LIT(KTypePicture,				"Picture");
       
    71 _LIT(KTypeUserPrompt,			"UserPrompt");
       
    72 _LIT(KFormatLength,				"FormatLength%d");
       
    73 _LIT(KBold,						"Bold%d");
       
    74 _LIT(KItalic,					"Italic%d");
       
    75 _LIT(KUnderline,				"Underline%d");
       
    76 _LIT(KStrikethrough,			"Strikethrough%d");
       
    77 _LIT(KAlignment,				"Alignment%d");
       
    78 _LIT(KFontSize,					"FontSize%d");
       
    79 
       
    80 _LIT(KLeftAlign,				"LeftAlign");
       
    81 _LIT(KRightAlign,				"RightAlign");
       
    82 _LIT(KCenterAlign,				"CenterAlign");
       
    83 _LIT(KLangDepend,				"LangDepend");
       
    84 
       
    85 _LIT(KNormal,					"Normal");
       
    86 _LIT(KLarge,					"Large");
       
    87 _LIT(KSmall,					"Small");
       
    88 _LIT(KVariable,					"Variable");
       
    89 _LIT(KReserved,					"Reserved");
       
    90 
       
    91 _LIT(KEmsPreDef,				"emspredef%d");
       
    92 
       
    93 _LIT(KEmsAnimTypeFlirty,		"a0");
       
    94 _LIT(KEmsAnimTypeGlad,			"a1");
       
    95 _LIT(KEmsAnimTypeSceptic,		"a2");
       
    96 _LIT(KEmsAnimTypeSad,			"a3");
       
    97 _LIT(KEmsAnimTypeWow,			"a4");
       
    98 _LIT(KEmsAnimTypeCrying,		"a5");
       
    99 _LIT(KEmsAnimTypeWinking,		"a6");
       
   100 _LIT(KEmsAnimTypeLaughing,		"a7");
       
   101 _LIT(KEmsAnimTypeIndifferent,	"a8");
       
   102 _LIT(KEmsAnimTypeKissing,		"a9");
       
   103 _LIT(KEmsAnimTypeConfused,		"a10");
       
   104 _LIT(KEmsAnimTypeTongueOut,		"a11");
       
   105 _LIT(KEmsAnimTypeAngry,			"a12");
       
   106 _LIT(KEmsAnimTypeGlasses,		"a13");
       
   107 _LIT(KEmsAnimTypeDevil,			"a14");
       
   108 
       
   109 _LIT(KEmsSoundTypeChimesHigh,	"s0");
       
   110 _LIT(KEmsSoundTypeChimesLow,	"s1");
       
   111 _LIT(KEmsSoundTypeDing,			"s2");
       
   112 _LIT(KEmsSoundTypeTaDa,			"s3");
       
   113 _LIT(KEmsSoundTypeNotify,		"s4");
       
   114 _LIT(KEmsSoundTypeDrum,			"s5");
       
   115 _LIT(KEmsSoundTypeClaps,		"s6");
       
   116 _LIT(KEmsSoundTypeFanFar,		"s7");
       
   117 _LIT(KEmsSoundTypeChordHigh,	"s8");
       
   118 _LIT(KEmsSoundTypeChordLow,		"s9");
       
   119 
       
   120 /*
       
   121 _LIT(KBioIAP,					"IAP");
       
   122 _LIT(KBioEmailNotification,		"EmailNotification");
       
   123 _LIT(KBioBusinessCard,			"BusinessCard");
       
   124 _LIT(KBioWAPAccessPoint,		"WAPAccessPoint");
       
   125 _LIT(KBioVCalendar,				"VCalendar");
       
   126 _LIT(KBioVCard,					"VCard");
       
   127 _LIT(KBioRingingTones,			"RingingTones");
       
   128 _LIT(KBioOperatorLogo,			"OperatorLogo");
       
   129 _LIT(KBioWPRV,					"WPRV");
       
   130 _LIT(KBioCLILogo,				"CLILogo");
       
   131 */
       
   132 _LIT(KObjectSize,				"ObjectSize%d");
       
   133 _LIT(KBody,						"body");
       
   134 /*@}*/
       
   135 
       
   136 const TInt KSmallObject		= 0;
       
   137 const TInt KLargeObject		= 1;
       
   138 const TInt KVariableObject	= 2;
       
   139 
       
   140 const TInt KDefaultStartPos	= 1;
       
   141 
       
   142 /**
       
   143  * Constructor.
       
   144  * @return - None
       
   145  * 
       
   146 */	
       
   147 CTestMessBase::CTestMessBase(TBool aSetDirectory)
       
   148 :	CTestStepSmokeTest()
       
   149 ,	iSession(NULL)
       
   150 ,	iMessageProcessor(NULL)
       
   151 ,   iParaFormatLayer(NULL)
       
   152 ,   iCharFormatLayer(NULL)
       
   153 ,   iBodyText(NULL)
       
   154 ,	iBodyAvailable(EFalse)
       
   155 ,	iSetDirectory(aSetDirectory)
       
   156 ,	iMessageTimer(NULL)
       
   157 ,	iSchedular(NULL)
       
   158 ,	iEntry(NULL)
       
   159 ,	iOrder(KMsvGroupByType|KMsvGroupByStandardFolders, EMsvSortById, ETrue)
       
   160 	{
       
   161 	}
       
   162 
       
   163 CTestMessBase::~CTestMessBase()
       
   164 	{
       
   165 	delete iEntry;
       
   166 	iEntry=NULL;
       
   167 	delete iMessageTimer;
       
   168 	iMessageTimer=NULL;
       
   169 	delete iMessageProcessor;
       
   170 	iMessageProcessor=NULL;
       
   171 	delete iSession;
       
   172 	iSession=NULL;
       
   173 	delete iSchedular;
       
   174 	iSchedular=NULL;
       
   175 	delete iBodyText;
       
   176 	iBodyText=NULL;
       
   177 	delete iCharFormatLayer;
       
   178 	iCharFormatLayer=NULL;
       
   179 	delete iParaFormatLayer;
       
   180 	iParaFormatLayer=NULL;
       
   181 	}
       
   182 
       
   183 enum TVerdict CTestMessBase::doTestStepPreambleL()
       
   184 	{
       
   185 	TVerdict	ret=CTestStepSmokeTest::doTestStepPreambleL();
       
   186 
       
   187 	// Printing to the console and log file
       
   188 	const TDesC&	stepName=TestStepName();
       
   189 	INFO_PRINTF2(_L("%S"), &stepName);
       
   190 
       
   191 	iSchedular=new (ELeave) CActiveScheduler();
       
   192 	CActiveScheduler::Install(iSchedular);
       
   193 	iSession=CMsvSession::OpenSyncL(*this);
       
   194 
       
   195 	//	Get progress
       
   196 	TInt	progress=0;
       
   197 	TBool	hasProgress=GetIntFromConfig(ConfigSection(), KProgress, progress);
       
   198 	if ( !hasProgress )
       
   199 		{
       
   200 		hasProgress=GetIntFromConfig(KDefault, KProgress, progress);
       
   201 		}
       
   202 
       
   203 	iMessageProcessor=CTestMessProcessor::NewL(*this, *iSession);
       
   204 	if ( hasProgress )
       
   205 		{
       
   206 		iMessageTimer=CTestMessTimer::NewL(progress*KOneSecond, *iMessageProcessor);
       
   207 		}
       
   208 
       
   209 	if ( iSetDirectory )
       
   210 		{
       
   211 		TInt	depth=KDefaultDepthCount;
       
   212 		TBool	returnValue=GetIntFromConfig(ConfigSection(), KDepth, depth);
       
   213 		if ( !returnValue )
       
   214 			{
       
   215 			depth=KDefaultDepthCount;
       
   216 			}
       
   217 		INFO_PRINTF2(_L("Depth = %d"), depth);
       
   218 
       
   219 		//	Searce for the entry
       
   220 		TRAPD(error,SetEntryL(KMsvRootIndexEntryId));
       
   221 		if( error != KErrNone)
       
   222 			{
       
   223 			INFO_PRINTF2(_L("Set Entry failed, Error %D"),error);
       
   224 			SetTestStepError(error);
       
   225 			ret=EFail;
       
   226 			}
       
   227 		else
       
   228 			{
       
   229 
       
   230 			TBuf<KMaxTestExecuteCommandLength>	tempStore;
       
   231 			TBool								found=ETrue;
       
   232 			for (TInt entry=0; entry<depth && found;)
       
   233 				{
       
   234 				TPtrC	subject;
       
   235 				tempStore.Format(KFolder(), ++entry);
       
   236 				returnValue =GetStringFromConfig(ConfigSection(), tempStore, subject);
       
   237 				if ( !returnValue )
       
   238 					{
       
   239 					INFO_PRINTF1(_L("Null Folder"));
       
   240 					}
       
   241 				INFO_PRINTF2(_L("Folder = %S"), &subject);
       
   242 
       
   243 				CMsvEntrySelection*	selection=EntryL().ChildrenL();
       
   244 				CleanupStack::PushL(selection);
       
   245 				TInt				count=selection->Count();
       
   246 		
       
   247 				found=EFalse;
       
   248 				for (TInt i=count; i>0 && !found; )
       
   249 					{
       
   250 					TMsvId	childId=selection->At(--i);
       
   251 
       
   252 					SetEntryL(childId);
       
   253 					INFO_PRINTF2(_L("Entry Detail : %S"), &(EntryL().Entry().iDetails));
       
   254 					INFO_PRINTF2(_L("Entry Description: %S"), &(EntryL().Entry().iDescription));
       
   255 					if ( subject.Compare(EntryL().Entry().iDetails) == 0 ||
       
   256 						 subject.Compare(EntryL().Entry().iDescription) == 0 )
       
   257 						{
       
   258 						found=ETrue;
       
   259 						}
       
   260 					}
       
   261 				CleanupStack::PopAndDestroy(selection);
       
   262 				}
       
   263 
       
   264 			if ( !found )
       
   265 				{
       
   266 				ERR_PRINTF1(_L("Folder not found"));
       
   267 				ret=EFail;
       
   268 				}
       
   269 			}
       
   270 		}
       
   271 	if (TestStepResult() == EPass)
       
   272 		{
       
   273 		//Get body(file path) from ini file and read respective file. Store it into CRichText format.
       
   274 		iParaFormatLayer=CParaFormatLayer::NewL();
       
   275 		iCharFormatLayer=CCharFormatLayer::NewL(); 
       
   276 		iBodyText=CRichText::NewL(iParaFormatLayer, iCharFormatLayer);
       
   277 		iBodyAvailable=EFalse;
       
   278 	
       
   279 		TPtrC	body;
       
   280 		if(GetStringFromConfig(ConfigSection(), KBody, body))
       
   281 			{
       
   282 			INFO_PRINTF2(_L("Body = %S"), &body);
       
   283 			iBodyAvailable=ETrue;
       
   284 			}
       
   285 		else
       
   286 			{
       
   287 			INFO_PRINTF1(_L("No Body"));
       
   288 			}
       
   289 
       
   290 		if ( iBodyAvailable )
       
   291 			{
       
   292 			// open the file
       
   293 			RFile	file;
       
   294 	
       
   295 			TInt anError = file.Open(iSession->FileSession(), body, EFileShareAny);
       
   296 			if(anError == KErrNone)
       
   297 				{
       
   298 				TBool		reading=ETrue;
       
   299 				TInt		pos=0;
       
   300 				TBuf8<1>	charIn;
       
   301 				while (reading)
       
   302 					{
       
   303 					file.Read(charIn, 1);
       
   304 					if(charIn.Length())
       
   305 						{
       
   306 						switch ( charIn[0] )
       
   307 							{
       
   308 						case '\r':
       
   309 							iBodyText->InsertL(pos++, CEditableText::ELineBreak);
       
   310 						case '\n':
       
   311 							break;
       
   312 						default:
       
   313 							iBodyText->InsertL(pos++, TChar(charIn[0]));
       
   314 							}
       
   315 						}
       
   316 					else
       
   317 						{
       
   318 						reading = EFalse;	// stop at the end of the file
       
   319 						}
       
   320 					}
       
   321 				iBodyAvailable=ETrue;
       
   322 				file.Close();
       
   323 				}
       
   324 			else
       
   325 			{
       
   326 			INFO_PRINTF2(_L("Cannot open file = %S"), &body);
       
   327 			iBodyAvailable=EFalse;
       
   328 			}
       
   329 		}//End of read file.
       
   330 	}
       
   331 
       
   332 	SetTestStepResult(ret);
       
   333 	return ret;
       
   334 	}
       
   335 
       
   336 enum TVerdict CTestMessBase::doTestStepPostambleL()
       
   337 	{
       
   338 	delete iEntry;
       
   339 	iEntry=NULL;
       
   340 	delete iMessageTimer;
       
   341 	iMessageTimer=NULL;
       
   342 	delete iMessageProcessor;
       
   343 	iMessageProcessor=NULL;
       
   344 	delete iSession;
       
   345 	iSession=NULL;
       
   346 	delete iSchedular;
       
   347 	iSchedular=NULL;
       
   348 	CActiveScheduler::Install(NULL);
       
   349 	return CTestStepSmokeTest::doTestStepPostambleL();
       
   350 	}
       
   351 
       
   352 void CTestMessBase::SetEntryL(TMsvId aId)
       
   353 	{
       
   354 	delete iEntry;
       
   355 	iEntry=NULL;
       
   356 	iEntry=iSession->GetEntryL(aId);
       
   357 	}
       
   358 
       
   359 CMsvEntry& CTestMessBase::EntryL()
       
   360 	{
       
   361 	if ( iEntry == NULL )
       
   362 		{
       
   363 		User::Leave(KErrGeneral);
       
   364 		}
       
   365 
       
   366 	return *iEntry;
       
   367 	}
       
   368 
       
   369 
       
   370 HBufC8* CTestMessBase::CopyToBuf8LC(const TDesC& aDesC)
       
   371 //
       
   372 // @return - HBufC8*
       
   373 // Converts TDesC to HBufC8*.
       
   374 //
       
   375 	{
       
   376 	HBufC8*	itemBuff8 = HBufC8::NewLC(aDesC.Length());
       
   377 	itemBuff8->Des().Copy(aDesC);
       
   378 
       
   379 	return itemBuff8;
       
   380 	}
       
   381 
       
   382 HBufC* CTestMessBase::CopyToBufLC(const TDesC8& aDesC)
       
   383 //
       
   384 // @return - HBufC8*
       
   385 // Converts TDesC to HBufC8*.
       
   386 //
       
   387 	{
       
   388 	HBufC*	itemBuff = HBufC::NewLC(aDesC.Length());
       
   389 	itemBuff->Des().Copy(aDesC);
       
   390 
       
   391 	return itemBuff;
       
   392 	}
       
   393 
       
   394 
       
   395 #ifndef __MESSAGING_API_V2__
       
   396 void CTestMessBase::SetDefaultServiceL(TUid aMtm, TMsvId aService) const
       
   397 	{
       
   398 	// --- Now restore the default services from the root store ---
       
   399 	CMsvEntry*				rootEntry=iSession->GetEntryL(KMsvRootIndexEntryIdValue);
       
   400 	CleanupStack::PushL(rootEntry);
       
   401 	CMsvStore*				store = rootEntry->EditStoreL();
       
   402 	CleanupStack::PushL(store);
       
   403 	CMsvDefaultServices*	services = new(ELeave)CMsvDefaultServices;
       
   404 	CleanupStack::PushL(services);
       
   405 	services->RestoreL(*store);
       
   406 
       
   407 	// --- And now re-set the default service for the MTM to the one given ---
       
   408 	TMsvDefaultService	defaultService;
       
   409 	defaultService.iMtm=aMtm;
       
   410 	defaultService.iService=aService;
       
   411 	services->ChangeDefaultServiceL(defaultService);
       
   412 	services->StoreL(*store);
       
   413 	store->CommitL();
       
   414 	CleanupStack::PopAndDestroy(3, rootEntry);
       
   415 	}
       
   416 
       
   417 TInt CTestMessBase::DefaultServiceL(TUid aMtm, TMsvId& aService) const
       
   418 	{
       
   419 	// --- Now restore the default services from the root store ---
       
   420 	CMsvEntry*				rootEntry=iSession->GetEntryL(KMsvRootIndexEntryIdValue);
       
   421 	CleanupStack::PushL(rootEntry);
       
   422 	CMsvStore*				store=rootEntry->ReadStoreL();
       
   423 	CleanupStack::PushL(store);
       
   424 	CMsvDefaultServices*	services=new(ELeave)CMsvDefaultServices;
       
   425 	CleanupStack::PushL(services);
       
   426 	services->RestoreL(*store);
       
   427 
       
   428 	TInt					ret=services->DefaultService(aMtm, aService);
       
   429 
       
   430 	CleanupStack::PopAndDestroy(3, rootEntry);
       
   431 
       
   432 	return ret;
       
   433 	}
       
   434 #endif
       
   435 
       
   436 void CTestMessBase::PrintTreeL(TMsvId aRoot)
       
   437 	{
       
   438 	INFO_PRINTF1(_L("PrintTreeL In"));
       
   439 	CMsvEntry*			entry=iSession->GetEntryL(aRoot);
       
   440 	CleanupStack::PushL(entry);
       
   441 	entry->SetSortTypeL(SelectionOrdering());
       
   442 	CMsvEntrySelection*	selection=entry->ChildrenL();
       
   443 	CleanupStack::PushL(selection);
       
   444 
       
   445 	PrintEntryL(*entry);
       
   446 	for (TInt i=0; i<selection->Count(); )
       
   447 		{
       
   448 		PrintTreeL(selection->At(i++));
       
   449 		}
       
   450 
       
   451 	CleanupStack::PopAndDestroy(2, entry);
       
   452 	INFO_PRINTF1(_L("PrintTreeL Out"));
       
   453 	}
       
   454 
       
   455 void CTestMessBase::PrintEntryL(CMsvEntry& aEntry)
       
   456 	{
       
   457 	TMsvEntry	entry=aEntry.Entry();
       
   458 
       
   459 	INFO_PRINTF2(_L("Entry Detail : %S"), &(entry.iDetails));
       
   460 	INFO_PRINTF2(_L("  Description: %S"), &(entry.iDescription));
       
   461 	INFO_PRINTF2(_L("  Id         : %x"), entry.Id());
       
   462 	INFO_PRINTF2(_L("  Parent Id  : %x"), entry.Parent());
       
   463 	INFO_PRINTF2(_L("  Service Id : %x"), entry.iServiceId);
       
   464 	if ( entry.iRelatedId != 0 )
       
   465 		{
       
   466 		INFO_PRINTF2(_L("  Related Id : %x"), entry.iRelatedId);
       
   467 		}
       
   468 	INFO_PRINTF2(_L("  Type       : %x"), entry.iType);
       
   469 	INFO_PRINTF2(_L("  Mtm        : %x"), entry.iMtm);
       
   470 
       
   471 
       
   472 	if ( entry.iSize != 0 )
       
   473 		{
       
   474 		INFO_PRINTF2(_L("  Size       : %x"), entry.iSize);
       
   475 		}
       
   476 	if ( entry.iError != 0 )
       
   477 		{
       
   478 		INFO_PRINTF2(_L("  Error      : %d"), entry.iError);
       
   479 		}
       
   480 	if ( entry.iBioType != 0 )
       
   481 		{
       
   482 		INFO_PRINTF2(_L("  BioType    : %x"), entry.iBioType);
       
   483 		}
       
   484 	if ( entry.MtmData1() != 0 )
       
   485 		{
       
   486 		INFO_PRINTF2(_L("  MtmData1   : %x"), entry.MtmData1());
       
   487 		}
       
   488 	if ( entry.MtmData2() != 0 )
       
   489 		{
       
   490 		INFO_PRINTF2(_L("  MtmData2   : %x"), entry.MtmData2());
       
   491 		}
       
   492 	if ( entry.MtmData3() != 0 )
       
   493 		{
       
   494 		INFO_PRINTF2(_L("  MtmData3   : %x"), entry.MtmData3());
       
   495 		}
       
   496 	if ( entry.Attachment() != 0 )
       
   497 		{
       
   498 		INFO_PRINTF2(_L("  Attachment : %x"), entry.Attachment());
       
   499 		}
       
   500 	if ( entry.Complete() != 0 )
       
   501 		{
       
   502 		INFO_PRINTF2(_L("  Complete   : %x"), entry.Complete());
       
   503 		}
       
   504 	if ( entry.Connected() != 0 )
       
   505 		{
       
   506 		INFO_PRINTF2(_L("  Connected  : %x"), entry.Connected());
       
   507 		}
       
   508 	if ( entry.Deleted() != 0 )
       
   509 		{
       
   510 		INFO_PRINTF2(_L("  Deleted    : %x"), entry.Deleted());
       
   511 		}
       
   512 	if ( entry.Failed() != 0 )
       
   513 		{
       
   514 		INFO_PRINTF2(_L("  Failed     : %x"), entry.Failed());
       
   515 		}
       
   516 	if ( entry.InPreparation() != 0 )
       
   517 		{
       
   518 		INFO_PRINTF2(_L("  InPrep     : %x"), entry.InPreparation());
       
   519 		}
       
   520 	if ( entry.MultipleRecipients() != 0 )
       
   521 		{
       
   522 		INFO_PRINTF2(_L("  MultiRecip : %x"), entry.MultipleRecipients());
       
   523 		}
       
   524 	if ( entry.OffPeak() != 0 )
       
   525 		{
       
   526 		INFO_PRINTF2(_L("  OffPeak    : %x"), entry.OffPeak());
       
   527 		}
       
   528 	if ( entry.Operation() != 0 )
       
   529 		{
       
   530 		INFO_PRINTF2(_L("  Operation  : %x"), entry.Operation());
       
   531 		}
       
   532 	if ( entry.Owner() != 0 )
       
   533 		{
       
   534 		INFO_PRINTF2(_L("  Owner      : %x"), entry.Owner());
       
   535 		}
       
   536 	if ( entry.PcSyncCount() != 0 )
       
   537 		{
       
   538 		INFO_PRINTF2(_L("  PcSyncCount: %x"), entry.PcSyncCount());
       
   539 		}
       
   540 	if ( entry.Priority() != 0 )
       
   541 		{
       
   542 		INFO_PRINTF2(_L("  Priority   : %x"), entry.Priority());
       
   543 		}
       
   544 	if ( entry.ReadOnly() != 0 )
       
   545 		{
       
   546 		INFO_PRINTF2(_L("  ReadOnly   : %x"), entry.ReadOnly());
       
   547 		}
       
   548 	if ( entry.Scheduled() != 0 )
       
   549 		{
       
   550 		INFO_PRINTF2(_L("  Scheduled  : %x"), entry.Scheduled());
       
   551 		}
       
   552 	if ( entry.SendingState() != 0 )
       
   553 		{
       
   554 		INFO_PRINTF2(_L("  Send State : %x"), entry.SendingState());
       
   555 		}
       
   556 	if ( entry.StandardFolder() != 0 )
       
   557 		{
       
   558 		INFO_PRINTF2(_L("  StdFolder  : %x"), entry.StandardFolder());
       
   559 		}
       
   560 	if ( entry.Unread() != 0 )
       
   561 		{
       
   562 		INFO_PRINTF2(_L("  Unread     : %x"), entry.Unread());
       
   563 		}
       
   564 	if ( entry.Visible() != 0 )
       
   565 		{
       
   566 		INFO_PRINTF2(_L("  Visible    : %x"), entry.Visible());
       
   567 		}
       
   568 
       
   569 #if (!defined CDMA_API_ENABLED)
       
   570 	if ( aEntry.HasStoreL() )
       
   571 		{
       
   572 		PrintStoreL(aEntry);
       
   573 		}
       
   574 #endif
       
   575 	}
       
   576 
       
   577 void CTestMessBase::PrintStoreL(CMsvEntry& aEntry)
       
   578 	{
       
   579 	TMsvEntry					entry=aEntry.Entry();
       
   580 	CTestMessPrintEntryUtil*	printUtil=new (ELeave) CTestMessPrintEntryUtil(*this);
       
   581 	CleanupStack::PushL(printUtil);
       
   582 
       
   583 	printUtil->ProcessEntryL(entry.Id());
       
   584 	CleanupStack::PopAndDestroy(printUtil);
       
   585 
       
   586 	if ( entry.iMtm==KUidMsgTypeSMTP )
       
   587 		{
       
   588 		PrintStoreSmtpL(aEntry);
       
   589 		}
       
   590 	else if ( entry.iMtm == KUidMsgTypePOP3 )
       
   591 		{
       
   592 		PrintStorePop3L(aEntry);
       
   593 		}
       
   594 	else if ( entry.iMtm == KUidMsgTypeIMAP4 )
       
   595 		{
       
   596 		PrintStoreImap4L(aEntry);
       
   597 		}
       
   598 	else if ( entry.iMtm == KUidMsgTypeSMS )
       
   599 		{
       
   600 		PrintStoreSmsL(aEntry);
       
   601 		}
       
   602 	}
       
   603 
       
   604 void CTestMessBase::PrintStoreSmtpL(CMsvEntry& aEntry)
       
   605 	{
       
   606 	TMsvEntry	entry=aEntry.Entry();
       
   607 	CMsvStore*	store=aEntry.ReadStoreL();
       
   608 	CleanupStack::PushL(store);
       
   609 
       
   610 	TPtrC	ptrTemp;
       
   611 	if ( entry.iType == KUidMsvServiceEntry )
       
   612 		{
       
   613 		CImSmtpSettings*	settings = new(ELeave) CImSmtpSettings();
       
   614 		CleanupStack::PushL(settings);
       
   615 #ifdef __MESSAGING_API_V2__
       
   616 		CEmailAccounts*		accounts = CEmailAccounts::NewLC();
       
   617 		TSmtpAccount smtpAccountId;
       
   618 		accounts->GetSmtpAccountL(aEntry.EntryId(), smtpAccountId);
       
   619 		TRAPD(err, accounts->LoadSmtpSettingsL(smtpAccountId, *settings));
       
   620 		CleanupStack::PopAndDestroy(accounts);
       
   621 #else
       
   622 		TRAPD(err, settings->RestoreL(*store));
       
   623 #endif
       
   624 		if ( err == KErrNone )
       
   625 			{
       
   626 			ptrTemp.Set(settings->ServerAddress());
       
   627 			INFO_PRINTF2(_L("  ServerAddress                : %S"), &ptrTemp);
       
   628 #ifndef __MESSAGING_API_V2__
       
   629 			ptrTemp.Set(settings->UserAddress());
       
   630 			INFO_PRINTF2(_L("  UserAddress                  : %S"), &ptrTemp);
       
   631 			INFO_PRINTF2(_L("  Version                      : %x"), (TUint)settings->Version());
       
   632 #endif
       
   633 			INFO_PRINTF2(_L("  Port                         : %x"), settings->Port());
       
   634 			INFO_PRINTF2(_L("  SecureSockets                : %x"), (TUint)settings->SecureSockets());
       
   635 			ptrTemp.Set(settings->EmailAlias());
       
   636 			INFO_PRINTF2(_L("  EmailAlias                   : %S"), &ptrTemp);
       
   637 			ptrTemp.Set(settings->EmailAddress());
       
   638 			INFO_PRINTF2(_L("  EmailAddress                 : %S"), &ptrTemp);
       
   639 			ptrTemp.Set(settings->ReplyToAddress());
       
   640 			INFO_PRINTF2(_L("  ReplyToAddress               : %S"), &ptrTemp);
       
   641 			ptrTemp.Set(settings->ReceiptAddress());
       
   642 			INFO_PRINTF2(_L("  ReceiptAddress               : %S"), &ptrTemp);
       
   643 			if ( settings->RequestReceipts() != 0 )
       
   644 				{
       
   645 				INFO_PRINTF2(_L("  RequestReceipts              : %x"), (TUint)settings->RequestReceipts());
       
   646 				}
       
   647 			if ( settings->SendCopyToSelf() != 0 )
       
   648 				{
       
   649 				INFO_PRINTF2(_L("  SendCopyToSelf               : %x"), (TUint)settings->SendCopyToSelf());
       
   650 				}
       
   651 			INFO_PRINTF2(_L("  SendMessageOption            : %x"), (TUint)settings->SendMessageOption());
       
   652 			}
       
   653 		CleanupStack::PopAndDestroy(settings);
       
   654 		}
       
   655 
       
   656 	CleanupStack::PopAndDestroy(store);
       
   657 	}
       
   658 
       
   659 void CTestMessBase::PrintStorePop3L(CMsvEntry& aEntry)
       
   660 	{
       
   661 	TMsvEntry	entry=aEntry.Entry();
       
   662 	CMsvStore*	store=aEntry.ReadStoreL();
       
   663 	CleanupStack::PushL(store);
       
   664 
       
   665 	TPtrC	ptrTemp;
       
   666 	if ( entry.iType == KUidMsvServiceEntry )
       
   667 		{
       
   668 		CImPop3Settings*	settings = new(ELeave) CImPop3Settings();
       
   669 		CleanupStack::PushL(settings);
       
   670 
       
   671 #ifdef __MESSAGING_API_V2__
       
   672 		CEmailAccounts*		accounts = CEmailAccounts::NewLC();
       
   673 		TPopAccount popAccountId;
       
   674 		accounts->GetPopAccountL(aEntry.EntryId(), popAccountId);
       
   675 		TRAPD(err, accounts->LoadPopSettingsL(popAccountId, *settings));
       
   676 		CleanupStack::PopAndDestroy(accounts);
       
   677 #else
       
   678 		TRAPD(err, settings->RestoreL(*store));
       
   679 #endif
       
   680 		if ( err == KErrNone )
       
   681 			{
       
   682 			ptrTemp.Set(settings->ServerAddress());
       
   683 			INFO_PRINTF2(_L("  ServerAddress                : %S"), &ptrTemp);
       
   684 #ifndef __MESSAGING_API_V2__
       
   685 			ptrTemp.Set(settings->UserAddress());
       
   686 			INFO_PRINTF2(_L("  UserAddress                  : %S"), &ptrTemp);
       
   687 			INFO_PRINTF2(_L("  Version                      : %x"), (TUint)settings->Version());
       
   688 #endif
       
   689 			INFO_PRINTF2(_L("  Port                         : %x"), settings->Port());
       
   690 			INFO_PRINTF2(_L("  SecureSockets                : %x"), (TUint)settings->SecureSockets());
       
   691 			HBufC*	loginName=CopyToBufLC(settings->LoginName());
       
   692 			INFO_PRINTF2(_L("  LoginName                    : %S"), loginName);
       
   693 			CleanupStack::PopAndDestroy(loginName);
       
   694 			if ( settings->AutoSendOnConnect() != 0 )
       
   695 				{
       
   696 				INFO_PRINTF2(_L("  AutoSendOnConnect            : %x"), (TUint)settings->AutoSendOnConnect());
       
   697 				}
       
   698 			if ( settings->Apop() != 0 )
       
   699 				{
       
   700 				INFO_PRINTF2(_L("  Apop                         : %x"), (TUint)settings->Apop());
       
   701 				}
       
   702 			if ( settings->DisconnectedUserMode() != 0 )
       
   703 				{
       
   704 				INFO_PRINTF2(_L("  DisconnectedUserMode         : %x"), (TUint)settings->DisconnectedUserMode());
       
   705 				}
       
   706 			if ( settings->DeleteEmailsWhenDisconnecting() != 0 )
       
   707 				{
       
   708 				INFO_PRINTF2(_L("  DeleteEmailsWhenDisconnecting: %x"), (TUint)settings->DeleteEmailsWhenDisconnecting());
       
   709 				}
       
   710 			if ( settings->AcknowledgeReceipts() != 0 )
       
   711 				{
       
   712 				INFO_PRINTF2(_L("  AcknowledgeReceipts          : %x"), (TUint)settings->AcknowledgeReceipts());
       
   713 				}
       
   714 			if ( settings->MaxEmailSize() != 0 )
       
   715 				{
       
   716 				INFO_PRINTF2(_L("  MaxEmailSize                 : %x"), (TUint)settings->MaxEmailSize());
       
   717 				}
       
   718 			if ( settings->GetMailOptions() != 0 )
       
   719 				{
       
   720 				INFO_PRINTF2(_L("  GetMailOptions               : %x"), (TUint)settings->GetMailOptions());
       
   721 				}
       
   722 			if ( settings->InboxSynchronisationLimit() != 0 )
       
   723 				{
       
   724 				INFO_PRINTF2(_L("  InboxSynchronisationLimit    : %x"), (TUint)settings->InboxSynchronisationLimit());
       
   725 				}
       
   726 			}
       
   727 		CleanupStack::PopAndDestroy(settings);
       
   728 		}
       
   729 
       
   730 	CleanupStack::PopAndDestroy(store);
       
   731 	}
       
   732 
       
   733 void CTestMessBase::PrintStoreImap4L(CMsvEntry& aEntry)
       
   734 	{
       
   735 	TMsvEntry	entry=aEntry.Entry();
       
   736 	CMsvStore*	store=aEntry.ReadStoreL();
       
   737 	CleanupStack::PushL(store);
       
   738 
       
   739 	TPtrC	ptrTemp;
       
   740 	if ( entry.iType == KUidMsvServiceEntry )
       
   741 		{
       
   742 		CImImap4Settings*	settings = new(ELeave) CImImap4Settings();
       
   743 		CleanupStack::PushL(settings);
       
   744 
       
   745 #ifdef __MESSAGING_API_V2__
       
   746 		CEmailAccounts*		accounts = CEmailAccounts::NewLC();
       
   747 		TImapAccount imapAccountId;
       
   748 		accounts->GetImapAccountL(aEntry.EntryId(), imapAccountId);
       
   749 		TRAPD(err, accounts->LoadImapSettingsL(imapAccountId, *settings));
       
   750 		CleanupStack::PopAndDestroy(accounts);
       
   751 #else
       
   752 		TRAPD(err, settings->RestoreL(*store));
       
   753 #endif
       
   754 		if ( err == KErrNone )
       
   755 			{
       
   756 			ptrTemp.Set(settings->ServerAddress());
       
   757 			INFO_PRINTF2(_L("  ServerAddress                : %S"), &ptrTemp);
       
   758 #ifndef __MESSAGING_API_V2__
       
   759 			ptrTemp.Set(settings->UserAddress());
       
   760 			INFO_PRINTF2(_L("  UserAddress                  : %S"), &ptrTemp);
       
   761 			INFO_PRINTF2(_L("  Version                      : %x"), (TUint)settings->Version());
       
   762 #endif
       
   763 			INFO_PRINTF2(_L("  Port                         : %x"), settings->Port());
       
   764 			INFO_PRINTF2(_L("  SecureSockets                : %x"), (TUint)settings->SecureSockets());
       
   765 
       
   766 			HBufC*	loginName=CopyToBufLC(settings->LoginName());
       
   767 			INFO_PRINTF2(_L("  LoginName                    : %S"), loginName);
       
   768 			HBufC*	folderPath=CopyToBufLC(settings->FolderPath());
       
   769 			INFO_PRINTF2(_L("  FolderPath                   : %S"), folderPath);
       
   770 			CleanupStack::PopAndDestroy(2, loginName);
       
   771 			if ( settings->PathSeparator() != 0 )
       
   772 				{
       
   773 				INFO_PRINTF2(_L("  PathSeparator                : %c"), (TText)settings->PathSeparator());
       
   774 				}
       
   775 			if ( settings->DisconnectedUserMode() != 0 )
       
   776 				{
       
   777 				INFO_PRINTF2(_L("  DisconnectedUserMode         : %x"), (TUint)settings->DisconnectedUserMode());
       
   778 				}
       
   779 			if ( settings->Synchronise() != 0 )
       
   780 				{
       
   781 				INFO_PRINTF2(_L("  Synchronise                  : %x"), (TUint)settings->Synchronise());
       
   782 				}
       
   783 			if ( settings->Subscribe() != 0 )
       
   784 				{
       
   785 				INFO_PRINTF2(_L("  Subscribe                    : %x"), (TUint)settings->Subscribe());
       
   786 				}
       
   787 			if ( settings->AutoSendOnConnect() != 0 )
       
   788 				{
       
   789 				INFO_PRINTF2(_L("  AutoSendOnConnect            : %x"), (TUint)settings->AutoSendOnConnect());
       
   790 				}
       
   791 			if ( settings->MaxEmailSize() != 0 )
       
   792 				{
       
   793 				INFO_PRINTF2(_L("  MaxEmailSize                 : %x"), (TUint)settings->MaxEmailSize());
       
   794 				}
       
   795 			if ( settings->DeleteEmailsWhenDisconnecting() != 0 )
       
   796 				{
       
   797 				INFO_PRINTF2(_L("  DeleteEmailsWhenDisconnecting: %x"), (TUint)settings->DeleteEmailsWhenDisconnecting());
       
   798 				}
       
   799 			if ( settings->AcknowledgeReceipts() != 0 )
       
   800 				{
       
   801 				INFO_PRINTF2(_L("  AcknowledgeReceipts          : %x"), (TUint)settings->AcknowledgeReceipts());
       
   802 				}
       
   803 			if ( settings->GetMailOptions() != 0 )
       
   804 				{
       
   805 				INFO_PRINTF2(_L("  GetMailOptions               : %x"), (TUint)settings->GetMailOptions());
       
   806 				}
       
   807 			if ( settings->InboxSynchronisationLimit() != 0 )
       
   808 				{
       
   809 				INFO_PRINTF2(_L("  InboxSynchronisationLimit    : %x"), (TUint)settings->InboxSynchronisationLimit());
       
   810 				}
       
   811 			if ( settings->MailboxSynchronisationLimit() != 0 )
       
   812 				{
       
   813 				INFO_PRINTF2(_L("  MailboxSynchronisationLimit  : %x"), (TUint)settings->MailboxSynchronisationLimit());
       
   814 				}
       
   815 			}
       
   816 		CleanupStack::PopAndDestroy(settings);
       
   817 		}
       
   818 
       
   819 	CleanupStack::PopAndDestroy(store);
       
   820 	}
       
   821 
       
   822 void CTestMessBase::PrintStoreSmsL(CMsvEntry& aEntry)
       
   823 	{
       
   824 	TMsvEntry	entry=aEntry.Entry();
       
   825 	CMsvStore*	store=aEntry.ReadStoreL();
       
   826 	CleanupStack::PushL(store);
       
   827 
       
   828 	TPtrC	ptrTemp;
       
   829 	if ( entry.iType == KUidMsvServiceEntry )
       
   830 		{
       
   831 		CSmsSettings*	settings = CSmsSettings::NewL();
       
   832 		CleanupStack::PushL(settings);
       
   833 
       
   834 #ifdef __MESSAGING_API_V2__
       
   835 		CSmsAccount*		smsAccount = CSmsAccount::NewLC();
       
   836 		TRAPD(err, smsAccount->LoadSettingsL(*settings));
       
   837 		CleanupStack::PopAndDestroy(smsAccount);
       
   838 #else
       
   839 		TRAPD(err, settings->RestoreL(*store));
       
   840 #endif
       
   841 		if ( err == KErrNone )
       
   842 			{
       
   843 			TSmsDelivery	delivery(settings->Delivery());
       
   844 			INFO_PRINTF2(_L("  Delivery                     : %d"), delivery);
       
   845 			CSmsSettings::TSmsReportHandling	reportHandling(settings->StatusReportHandling());
       
   846 			INFO_PRINTF2(_L("  StatusReportHandling         : %d"), reportHandling);
       
   847 			CSmsSettings::TSmsReportHandling	specialMsgHandling(settings->SpecialMessageHandling());
       
   848 			INFO_PRINTF2(_L("  SpecialMessageHandling       : %d"), specialMsgHandling);
       
   849 			INFO_PRINTF2(_L("  ReplyQuoted                  : %d"), settings->ReplyQuoted());
       
   850 #ifdef __MESSAGING_API_V2__
       
   851 			const TInt	numSCAddr = settings->ServiceCenterCount();
       
   852 #else
       
   853 			const TInt	numSCAddr = settings->NumSCAddresses();
       
   854 #endif
       
   855 			for( TInt index=0;index<numSCAddr;index++ )
       
   856 				{
       
   857 #ifdef __MESSAGING_API_V2__
       
   858 				CSmsServiceCenter&	scAddr = settings->GetServiceCenter(index);
       
   859 #else
       
   860 				CSmsNumber&			scAddr = settings->SCAddress(index);
       
   861 #endif
       
   862 				ptrTemp.Set(scAddr.Name());
       
   863 				INFO_PRINTF2(_L("  SC Name                      : %S"), &ptrTemp);
       
   864 				ptrTemp.Set(scAddr.Address());
       
   865 				INFO_PRINTF2(_L("  SC Address                   : %S"), &ptrTemp);
       
   866 				}
       
   867 			CSmsSettings::TSmsSettingsCommDbAction	commDbAction(settings->SmsBearerAction());
       
   868 			INFO_PRINTF2(_L("  SmsBearerAction              : %d"), commDbAction);
       
   869 
       
   870 			CSmsSettings::TMobileSmsBearer	smsBearer(settings->SmsBearer());
       
   871 			INFO_PRINTF2(_L("  SmsBearer                    : %d"), smsBearer);
       
   872 			}
       
   873 		CleanupStack::PopAndDestroy(settings);
       
   874 		}
       
   875 
       
   876 	CleanupStack::PopAndDestroy(store);
       
   877 	}
       
   878 
       
   879 void CTestMessBase::IssueTimerRequest()
       
   880 	{
       
   881 	if (iMessageTimer!= NULL)
       
   882 		{
       
   883 		iMessageTimer->IssueRequest();
       
   884 		}
       
   885 	}
       
   886 
       
   887 void CTestMessBase::HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny*, TAny*)
       
   888 /**
       
   889  Handler for the Session Event
       
   890  @param aEvent - TMsvSessionEvent object
       
   891  @param aArg1 - TAny object pointer, used to store the argument for the event
       
   892  @leave - System wide error codes
       
   893 */
       
   894 	{
       
   895 	TBool	printSelection=EFalse;
       
   896 
       
   897 	switch (aEvent)
       
   898 		{
       
   899 	case EMsvEntriesCreated:
       
   900 		INFO_PRINTF1(_L("EMsvEntriesCreated"));
       
   901 		printSelection=ETrue;
       
   902 		break;
       
   903 	case EMsvEntriesChanged:
       
   904 		INFO_PRINTF1(_L("EMsvEntriesChanged"));
       
   905 		printSelection=ETrue;
       
   906 		break;
       
   907 	case EMsvEntriesDeleted:
       
   908 		INFO_PRINTF1(_L("EMsvEntriesDeleted"));
       
   909 		break;
       
   910 	case EMsvEntriesMoved:
       
   911 		INFO_PRINTF1(_L("EMsvEntriesMoved"));
       
   912 		printSelection=ETrue;
       
   913 		break;
       
   914 	case EMsvMtmGroupInstalled:
       
   915 		INFO_PRINTF1(_L("EMsvMtmGroupInstalled"));
       
   916 		break;
       
   917 	case EMsvMtmGroupDeInstalled:
       
   918 		INFO_PRINTF1(_L("EMsvMtmGroupDeInstalled"));
       
   919 		break;
       
   920 	case EMsvGeneralError:
       
   921 		INFO_PRINTF1(_L("EMsvGeneralError"));
       
   922 		break;
       
   923 	case EMsvCloseSession:
       
   924 		INFO_PRINTF1(_L("EMsvCloseSession"));
       
   925 		break;
       
   926 	case EMsvServerReady:
       
   927 		INFO_PRINTF1(_L("EMsvServerReady"));
       
   928 		break;
       
   929 	case EMsvServerFailedToStart:
       
   930 		INFO_PRINTF1(_L("EMsvServerFailedToStart"));
       
   931 		break;
       
   932 	case EMsvCorruptedIndexRebuilt:
       
   933 		INFO_PRINTF1(_L("EMsvCorruptedIndexRebuilt"));
       
   934 		break;
       
   935 	case EMsvServerTerminated:
       
   936 		INFO_PRINTF1(_L("EMsvServerTerminated"));
       
   937 		break;
       
   938 	case EMsvMediaChanged:
       
   939 		INFO_PRINTF1(_L("EMsvMediaChanged"));
       
   940 		break;
       
   941 	case EMsvMediaUnavailable:
       
   942 		INFO_PRINTF1(_L("EMsvMediaUnavailable"));
       
   943 		break;
       
   944 	case EMsvMediaAvailable:
       
   945 		INFO_PRINTF1(_L("EMsvMediaAvailable"));
       
   946 		break;
       
   947 	case EMsvMediaIncorrect:
       
   948 		INFO_PRINTF1(_L("EMsvMediaIncorrect"));
       
   949 		break;
       
   950 	case EMsvCorruptedIndexRebuilding:
       
   951 		INFO_PRINTF1(_L("EMsvCorruptedIndexRebuilding"));
       
   952 		break;
       
   953 	default:
       
   954 		INFO_PRINTF2(_L("EMsv Unknown event:%d"), aEvent);
       
   955 		break;
       
   956 	}
       
   957 
       
   958 	if ( printSelection )
       
   959 		{
       
   960 		CMsvEntrySelection*	selection=STATIC_CAST(CMsvEntrySelection*, aArg1);
       
   961 		CMsvEntry*			entry=NULL;
       
   962 		for ( int i=0; i<selection->Count(); )
       
   963 			{
       
   964 			entry=iSession->GetEntryL(selection->At(i++));
       
   965 			CleanupStack::PushL(entry);
       
   966 			PrintEntryL(*entry);
       
   967 			CleanupStack::PopAndDestroy(entry);
       
   968 			}
       
   969 		}
       
   970 	}
       
   971 
       
   972 
       
   973 void CTestMessBase::PrepareSmsHeaderFromIniFileL(CSmsHeader& aSmsHeader)
       
   974 	{
       
   975 	// Starts the Bitmap server
       
   976 	FbsStartup();
       
   977 	// start the server
       
   978 	RFbsSession::Connect();
       
   979 
       
   980 	// Add the Fromating required for EMS if required
       
   981 	TInt	emsElements=0;
       
   982 	if ( !GetIntFromConfig(ConfigSection(), KElements, emsElements) )
       
   983 		{
       
   984 		ERR_PRINTF1(_L("Elements not set"));
       
   985 		SetTestStepResult(EFail);
       
   986 		}
       
   987 
       
   988 // Macro usage for CDMA mtm
       
   989 #if (defined CDMA_API_ENABLED)
       
   990 	TMsvMessageSms&	message=aSmsHeader.SmsMessage();
       
   991 #else
       
   992 	CSmsMessage&	message=aSmsHeader.Message(); 
       
   993 #endif
       
   994 
       
   995 	TBuf<KMaxTestExecuteCommandLength>	tempStore;
       
   996 	for ( TInt element=0; element<emsElements && TestStepResult()==EPass;)
       
   997 		{
       
   998 		++element;
       
   999 		INFO_PRINTF2(_L("==== PROCESSING ELEMENT %d ===="), element);
       
  1000 		//	Start position
       
  1001 		tempStore.Format(KStartPosition, element);
       
  1002 		TInt	startPosition=KDefaultStartPos;
       
  1003 		if ( GetIntFromConfig(ConfigSection(), tempStore, startPosition) )
       
  1004 			{
       
  1005 			INFO_PRINTF2(_L("Start position %d"), startPosition);
       
  1006 			}
       
  1007 
       
  1008 		//	File
       
  1009 		tempStore.Format(KFile, element);
       
  1010 		TPtrC	file;
       
  1011 		TParse	fileName;
       
  1012 		TBool	hasFile=GetStringFromConfig(ConfigSection(), tempStore, file);
       
  1013 		if ( hasFile )
       
  1014 			{
       
  1015 			INFO_PRINTF2(_L("File %S"), &file);
       
  1016 			fileName.Set(file,NULL,NULL);
       
  1017 			}
       
  1018 
       
  1019 		tempStore.Format(KType, element);
       
  1020 		TPtrC	type;
       
  1021 		if ( GetStringFromConfig(ConfigSection(), tempStore, type) )
       
  1022 			{
       
  1023 			if ( type.Compare(KTypeFormat) == 0 )
       
  1024 				{
       
  1025 				//	=== Process text formating Information Element ===
       
  1026 				CEmsFormatIE*	newElement=CEmsFormatIE::NewL();
       
  1027 				CleanupStack::PushL(newElement);
       
  1028 				newElement->SetStartPosition(startPosition);
       
  1029 
       
  1030 				TInt			intTemp;
       
  1031 				TBool			boolTemp;
       
  1032 				TPtrC			alignment;
       
  1033 				TPtrC			fontSize;
       
  1034 
       
  1035 				// Set the Format length and other information
       
  1036 				tempStore.Format(KFormatLength, element);
       
  1037 				if ( GetIntFromConfig(ConfigSection(), tempStore, intTemp) )
       
  1038 					{
       
  1039 					INFO_PRINTF2(_L("Format Length %d"), intTemp);
       
  1040 					newElement->SetFormatLength(intTemp);
       
  1041 					}
       
  1042 				tempStore.Format(KBold, element);
       
  1043 				if ( GetBoolFromConfig(ConfigSection(), tempStore, boolTemp) )
       
  1044 					{
       
  1045 					INFO_PRINTF2(_L("Bold %d"), boolTemp);
       
  1046 					newElement->SetBold(boolTemp);
       
  1047 					}
       
  1048 				tempStore.Format(KItalic, element);
       
  1049 				if ( GetBoolFromConfig(ConfigSection(), tempStore, boolTemp) )
       
  1050 					{
       
  1051 					INFO_PRINTF2(_L("Italic %d"), boolTemp);
       
  1052 				    newElement->SetItalic(boolTemp);
       
  1053 					}
       
  1054 				tempStore.Format(KUnderline, element);
       
  1055 				if ( GetBoolFromConfig(ConfigSection(), tempStore, boolTemp) )
       
  1056 					{
       
  1057 					INFO_PRINTF2(_L("Underline %d"), boolTemp);
       
  1058 					newElement->SetUnderline(boolTemp);
       
  1059 					}
       
  1060 				tempStore.Format(KStrikethrough, element);
       
  1061 				if ( GetBoolFromConfig(ConfigSection(), tempStore, boolTemp) )
       
  1062 					{
       
  1063 					INFO_PRINTF2(_L("Strikethrough %d"), boolTemp);
       
  1064 					newElement->SetStrikethrough(boolTemp);
       
  1065 					}
       
  1066 				tempStore.Format(KAlignment,element);
       
  1067 				if(GetStringFromConfig(ConfigSection(),tempStore,alignment))
       
  1068 					{
       
  1069 					SetAlignmentFormat(*newElement, alignment);
       
  1070 					}
       
  1071 				
       
  1072 				tempStore.Format(KFontSize,element);
       
  1073 				if(GetStringFromConfig(ConfigSection(),tempStore,fontSize))
       
  1074 					{
       
  1075 					//
       
  1076 					SetFontSizeFormat(*newElement, fontSize);
       
  1077 					}
       
  1078 			    message.AddEMSInformationElementL(*newElement); 
       
  1079 				CleanupStack::PopAndDestroy(newElement);
       
  1080 				}
       
  1081 			else if ( type.Compare(KTypeSound) == 0 )
       
  1082 				{
       
  1083 				//	=== Process sound Information Element ===
       
  1084 				if ( hasFile )
       
  1085 					{
       
  1086 					HBufC8*			buffFile=CopyToBuf8LC(fileName.FullName());
       
  1087 					CEmsSoundIE*	newElement=CEmsSoundIE::NewL(buffFile->Des());
       
  1088 					CleanupStack::PushL(newElement);
       
  1089 					newElement->SetStartPosition(startPosition); 
       
  1090 				    message.AddEMSInformationElementL(*newElement); 
       
  1091 					CleanupStack::PopAndDestroy(2, buffFile);
       
  1092 					}
       
  1093 				else
       
  1094 					{
       
  1095 					ERR_PRINTF1(_L("No Sound file name"));
       
  1096 					SetTestStepResult(EFail);
       
  1097 					}
       
  1098 				}
       
  1099 			else if ( type.Compare(KTypePreDefSound) == 0 )
       
  1100 				{
       
  1101 				//	=== Process predefined sound Information Element ===
       
  1102 				TPtrC	preDefSound;
       
  1103 				tempStore.Format(KEmsPreDef, element);
       
  1104 				if ( !GetStringFromConfig(ConfigSection(),tempStore, preDefSound))
       
  1105 					{
       
  1106 					ERR_PRINTF1(_L("Predefined sound not present"));
       
  1107 					SetTestStepResult(EFail);
       
  1108 					}
       
  1109 				else
       
  1110 					{
       
  1111 					INFO_PRINTF2(_L("Predefined sound %S"), &preDefSound);
       
  1112 					CEmsPreDefSoundIE*	newElement=NewPreDefSoundL(preDefSound);
       
  1113 
       
  1114 					if ( newElement != NULL )
       
  1115 						{
       
  1116 						//Assign the predef animation element to newElement
       
  1117 						CleanupStack::PushL(newElement);
       
  1118 						newElement->SetStartPosition(startPosition);
       
  1119 					    message.AddEMSInformationElementL(*newElement); 
       
  1120 						CleanupStack::PopAndDestroy(newElement);
       
  1121 						}
       
  1122 					else
       
  1123 						{
       
  1124 						ERR_PRINTF1(_L("Unable to create predefined sound"));
       
  1125 						SetTestStepResult(EFail);
       
  1126 						}
       
  1127 					}
       
  1128 				}
       
  1129 			else if ( type.Compare(KTypeAnimation) == 0 )
       
  1130 				{
       
  1131 				//	=== Process animation Information Element ===
       
  1132 				if ( hasFile )
       
  1133 					{
       
  1134 					TPtrC	objectSize;
       
  1135 
       
  1136 					tempStore.Format(KObjectSize, element);
       
  1137 					if ( !GetStringFromConfig(ConfigSection(),tempStore,objectSize) )
       
  1138 						{
       
  1139 						ERR_PRINTF1(_L("No size provided"));
       
  1140 						SetTestStepResult(EFail);
       
  1141 						}
       
  1142 					else
       
  1143 						{
       
  1144 						CFbsBitmap*	bmp=NewBitmapL(fileName, objectSize);
       
  1145 						if ( bmp == NULL )
       
  1146 							{
       
  1147 							ERR_PRINTF1(_L("Failed to Load Animation File. Error %d"));
       
  1148 							SetTestStepResult(EFail);
       
  1149 							}
       
  1150 						else
       
  1151 							{
       
  1152 							CleanupStack::PushL(bmp);
       
  1153 							CEmsAnimationIE*	newElement=CEmsAnimationIE::NewL(*bmp);
       
  1154 							CleanupStack::PushL(newElement);
       
  1155 							newElement->SetStartPosition(startPosition);
       
  1156 						    message.AddEMSInformationElementL(*newElement); 
       
  1157 							CleanupStack::PopAndDestroy(2, bmp);
       
  1158 							}
       
  1159 						}
       
  1160 					}
       
  1161 				else
       
  1162 					{
       
  1163 					ERR_PRINTF1(_L("No Animation file name"));
       
  1164 					SetTestStepResult(EFail);
       
  1165 					}
       
  1166 				}
       
  1167 			else if ( type.Compare(KTypePreDefAnimation) == 0 )
       
  1168 				{
       
  1169 				//	=== Process predefined animation Information Element ===
       
  1170 				TPtrC	preDefAnim;
       
  1171 				tempStore.Format(KEmsPreDef, element);
       
  1172 				if ( !GetStringFromConfig(ConfigSection(),tempStore, preDefAnim) )
       
  1173 					{
       
  1174 					ERR_PRINTF1(_L("Predefined animations not present"));
       
  1175 					SetTestStepResult(EFail);
       
  1176 					}
       
  1177 				else
       
  1178 					{
       
  1179 					INFO_PRINTF2(_L("Predefined animation %S"), &preDefAnim);
       
  1180 					CEmsPreDefAnimationIE*	newElement=NewPreDefAnimationL(preDefAnim);
       
  1181 
       
  1182 					if ( newElement != NULL )
       
  1183 						{
       
  1184 						//Assign the predef animation element to newElement
       
  1185 						CleanupStack::PushL(newElement);
       
  1186 						newElement->SetStartPosition(startPosition);
       
  1187 					    message.AddEMSInformationElementL(*newElement); 
       
  1188 						CleanupStack::PopAndDestroy(newElement);
       
  1189 						}
       
  1190 					else
       
  1191 						{
       
  1192 						ERR_PRINTF1(_L("Unable to create predefined animation"));
       
  1193 						SetTestStepResult(EFail);
       
  1194 						}
       
  1195 					}
       
  1196 				}
       
  1197 			else if ( type.Compare(KTypePicture) == 0 )
       
  1198 				{
       
  1199 				//	=== Process picture Information Element ===
       
  1200 				if ( hasFile )
       
  1201 					{
       
  1202 					TPtrC	objectSize;
       
  1203 
       
  1204 					tempStore.Format(KObjectSize, element);
       
  1205 					if ( !GetStringFromConfig(ConfigSection(),tempStore,objectSize) )
       
  1206 						{
       
  1207 						ERR_PRINTF1(_L("No size provided"));
       
  1208 						SetTestStepResult(EFail);
       
  1209 						}
       
  1210 					else
       
  1211 						{
       
  1212 						CFbsBitmap*	bmp=NewBitmapL(fileName, objectSize);
       
  1213 						if ( bmp == NULL )
       
  1214 							{
       
  1215 							ERR_PRINTF1(_L("Failed to Load Animation File. Error %d"));
       
  1216 							SetTestStepResult(EFail);
       
  1217 							}
       
  1218 						else
       
  1219 							{
       
  1220 							CleanupStack::PushL(bmp);
       
  1221 							CEmsPictureIE*	newElement=CEmsPictureIE::NewL(*bmp);
       
  1222 							CleanupStack::PushL(newElement);
       
  1223 							newElement->SetStartPosition(startPosition);
       
  1224 						    message.AddEMSInformationElementL(*newElement); 
       
  1225 							CleanupStack::PopAndDestroy(2, bmp);
       
  1226 							}
       
  1227 						}
       
  1228 					}
       
  1229 				else
       
  1230 					{
       
  1231 					ERR_PRINTF1(_L("No Picture file name"));
       
  1232 					SetTestStepResult(EFail);
       
  1233 					}
       
  1234 				}
       
  1235 			else if ( type.Compare(KTypeUserPrompt) == 0 )
       
  1236 				{
       
  1237 				//	=== Process user prompt Information Element ===
       
  1238 				CEmsUserPrompt*	newElement=CEmsUserPrompt::NewL(2);
       
  1239 				CleanupStack::PushL(newElement);
       
  1240 				newElement->SetStartPosition(startPosition);
       
  1241 			    message.AddEMSInformationElementL(*newElement); 
       
  1242 				CleanupStack::PopAndDestroy(newElement);
       
  1243 				}
       
  1244 			else
       
  1245 				{
       
  1246 				ERR_PRINTF2(_L("Unknown element type %S"), &type);
       
  1247 				SetTestStepResult(EFail);
       
  1248 				}
       
  1249 			}
       
  1250 		else
       
  1251 			{
       
  1252 			ERR_PRINTF1(_L("No type given"));
       
  1253 			SetTestStepResult(EFail);
       
  1254 			}
       
  1255 		}
       
  1256 
       
  1257 	RFbsSession::Disconnect(); 
       
  1258 	}
       
  1259 
       
  1260 /**
       
  1261  This function reads the schedule time from ini file
       
  1262  @return - returns the schedule time read from the ini file
       
  1263 */
       
  1264 TTimeIntervalMinutes CTestMessBase::ReadScheduleTime()
       
  1265 	{
       
  1266 	// Read  the schedule time from ini file. Add this schedule time to current time.
       
  1267 	// This time will be set as the scheduled time for sending the SMS message from task scheduler
       
  1268 	// By default schedule time will be 1 min
       
  1269 	TInt	scheduled=0;
       
  1270 	GetIntFromConfig(ConfigSection(), KScheduled, scheduled);
       
  1271 	INFO_PRINTF2(_L("Scheduled Time in minutes is %d"), scheduled);
       
  1272 	return TTimeIntervalMinutes(scheduled);
       
  1273 	}
       
  1274 
       
  1275 void CTestMessBase::SetAlignmentFormat(CEmsFormatIE& aEmsFormatIE, const TDesC& aAlignment)
       
  1276 	{
       
  1277 	//Sets the alignment to the text
       
  1278 	INFO_PRINTF2(_L("Alignment %S"), &aAlignment);
       
  1279 	if( aAlignment.Compare(KLeftAlign)== 0 )
       
  1280 		{
       
  1281 		aEmsFormatIE.SetAlignment(CEmsFormatIE::ELeft);
       
  1282 		}
       
  1283 	else if( aAlignment.Compare(KRightAlign)== 0 )
       
  1284 		{
       
  1285 		aEmsFormatIE.SetAlignment(CEmsFormatIE::ERight);
       
  1286 		}
       
  1287 	else if( aAlignment.Compare(KCenterAlign)== 0 )
       
  1288 		{
       
  1289 		aEmsFormatIE.SetAlignment(CEmsFormatIE::ECenter);
       
  1290 		}
       
  1291 	else if( aAlignment.Compare(KLangDepend)== 0 )
       
  1292 		{
       
  1293 		aEmsFormatIE.SetAlignment(CEmsFormatIE::ELangDepend);
       
  1294 		}
       
  1295 	else
       
  1296 		{
       
  1297 		ERR_PRINTF1(_L("Illegal alignment value"));
       
  1298 		SetTestStepResult(EFail);
       
  1299 		}
       
  1300 	}
       
  1301 
       
  1302 void CTestMessBase::SetFontSizeFormat(CEmsFormatIE& aEmsFormatIE, const TDesC& aFontSize)
       
  1303 	{
       
  1304 	//Sets the specified font to the text 
       
  1305 	INFO_PRINTF2(_L("FontSize %S"), &aFontSize);
       
  1306 	if( aFontSize.Compare(KNormal)== 0 )
       
  1307 		{
       
  1308 		aEmsFormatIE.SetFontSize(CEmsFormatIE::ENormal);
       
  1309 		}
       
  1310 	else if( aFontSize.Compare(KLarge)== 0 )
       
  1311 		{
       
  1312 		aEmsFormatIE.SetFontSize(CEmsFormatIE::ELarge);
       
  1313 		}
       
  1314 	else if( aFontSize.Compare(KSmall)== 0 )
       
  1315 		{
       
  1316 		aEmsFormatIE.SetFontSize(CEmsFormatIE::ESmall);
       
  1317 		}
       
  1318 	else if( aFontSize.Compare(KReserved)== 0 )
       
  1319 		{
       
  1320 		aEmsFormatIE.SetFontSize(CEmsFormatIE::EReserved);
       
  1321 		}
       
  1322 	else
       
  1323 		{
       
  1324 		ERR_PRINTF1(_L("Illegal fonst size value"));
       
  1325 		SetTestStepResult(EFail);
       
  1326 		}
       
  1327 	}
       
  1328 
       
  1329 CEmsPreDefAnimationIE* CTestMessBase::NewPreDefAnimationL(const TDesC& aPreDefType) 
       
  1330 //
       
  1331 // Attaches the required predef animation. 
       
  1332 // Arguments - aString - holds the TAnim type to be attached 
       
  1333 // Return Value - Returns a Pointer of CEmsPreDefAnimationIE 
       
  1334 //
       
  1335 	{
       
  1336 	//Initialize emsPreDef to NULL
       
  1337 	CEmsPreDefAnimationIE::TAnimType	animType=CEmsPreDefAnimationIE::EFlirty;
       
  1338 	TBool								validType=ETrue;
       
  1339 
       
  1340 	//Set a value for emsPreDef 
       
  1341 	if ( aPreDefType.Compare(KEmsAnimTypeFlirty) == 0 )
       
  1342 		{
       
  1343 		animType = CEmsPreDefAnimationIE::EFlirty;
       
  1344 		}
       
  1345 	else if ( aPreDefType.Compare(KEmsAnimTypeGlad) == 0 )
       
  1346 		{
       
  1347 		animType = CEmsPreDefAnimationIE::EGlad;
       
  1348 		}
       
  1349 	else if ( aPreDefType.Compare(KEmsAnimTypeSceptic) == 0 )
       
  1350 		{
       
  1351 		animType = CEmsPreDefAnimationIE::ESceptic;
       
  1352 		}
       
  1353 	else if ( aPreDefType.Compare(KEmsAnimTypeSad) == 0 )
       
  1354 		{
       
  1355 		animType = CEmsPreDefAnimationIE::ESad;
       
  1356 		}
       
  1357 	else if ( aPreDefType.Compare(KEmsAnimTypeWow) == 0 )
       
  1358 		{
       
  1359 		animType = CEmsPreDefAnimationIE::EWow;
       
  1360 		}
       
  1361 	else if ( aPreDefType.Compare(KEmsAnimTypeCrying) == 0 )
       
  1362 		{
       
  1363 		animType = CEmsPreDefAnimationIE::ECrying;
       
  1364 		}
       
  1365 	else if ( aPreDefType.Compare(KEmsAnimTypeWinking) == 0 )
       
  1366 		{
       
  1367 		animType = CEmsPreDefAnimationIE::EWinking;
       
  1368 		}
       
  1369 	else if ( aPreDefType.Compare(KEmsAnimTypeLaughing) == 0 )
       
  1370 		{
       
  1371 		animType = CEmsPreDefAnimationIE::ELaughing;
       
  1372 		}
       
  1373 	else if ( aPreDefType.Compare(KEmsAnimTypeIndifferent) == 0 )
       
  1374 		{
       
  1375 		animType = CEmsPreDefAnimationIE::EIndifferent;
       
  1376 		}
       
  1377 	else if ( aPreDefType.Compare(KEmsAnimTypeKissing) == 0 )
       
  1378 		{
       
  1379 		animType = CEmsPreDefAnimationIE::EKissing;
       
  1380 		}
       
  1381 	else if ( aPreDefType.Compare(KEmsAnimTypeConfused) == 0 )
       
  1382 		{
       
  1383 		animType = CEmsPreDefAnimationIE::EConfused;
       
  1384 		}
       
  1385 	else if ( aPreDefType.Compare(KEmsAnimTypeTongueOut) == 0 )
       
  1386 		{
       
  1387 		animType = CEmsPreDefAnimationIE::ETongueOut;
       
  1388 		}
       
  1389 	else if ( aPreDefType.Compare(KEmsAnimTypeAngry) == 0 )
       
  1390 		{
       
  1391 		animType = CEmsPreDefAnimationIE::EAngry;
       
  1392 		}
       
  1393 	else if ( aPreDefType.Compare(KEmsAnimTypeGlasses) == 0 )
       
  1394 		{
       
  1395 		animType = CEmsPreDefAnimationIE::EGlasses;
       
  1396 		}
       
  1397 	else if ( aPreDefType.Compare(KEmsAnimTypeDevil) == 0 )
       
  1398 		{
       
  1399 		animType = CEmsPreDefAnimationIE::EDevil;
       
  1400 		}
       
  1401 	else
       
  1402 		{
       
  1403 		validType=EFalse;
       
  1404 		}
       
  1405 
       
  1406 	CEmsPreDefAnimationIE*	emsPreDef=NULL;
       
  1407 	if ( validType )
       
  1408 		{
       
  1409 		emsPreDef=CEmsPreDefAnimationIE::NewL(animType);
       
  1410 		}
       
  1411 
       
  1412 	return emsPreDef;
       
  1413 	}
       
  1414 
       
  1415 CEmsPreDefSoundIE* CTestMessBase::NewPreDefSoundL(const TDesC& aPreDefType) 
       
  1416 //
       
  1417 // Attaches the required predef animation. 
       
  1418 // Arguments - aString - holds the TAnim type to be attached 
       
  1419 // Return Value - Returns a Pointer of CEmsPreDefAnimationIE 
       
  1420 //
       
  1421 	{
       
  1422 	//Initialize emsPreDef to NULL
       
  1423 	CEmsPreDefSoundIE::TPredefinedSound	soundType=CEmsPreDefSoundIE::EChimesHigh;
       
  1424 	TBool								validType=ETrue;
       
  1425 
       
  1426 	//Set a value for emsPreDef 
       
  1427 	if ( aPreDefType.Compare(KEmsSoundTypeChimesHigh) == 0 )
       
  1428 		{
       
  1429 		soundType = CEmsPreDefSoundIE::EChimesHigh;
       
  1430 		}
       
  1431 	else if ( aPreDefType.Compare(KEmsSoundTypeChimesLow) == 0 )
       
  1432 		{
       
  1433 		soundType = CEmsPreDefSoundIE::EChimesLow;
       
  1434 		}
       
  1435 	else if ( aPreDefType.Compare(KEmsSoundTypeDing) == 0 )
       
  1436 		{
       
  1437 		soundType = CEmsPreDefSoundIE::EDing;
       
  1438 		}
       
  1439 	else if ( aPreDefType.Compare(KEmsSoundTypeTaDa) == 0 )
       
  1440 		{
       
  1441 		soundType = CEmsPreDefSoundIE::ETaDa;
       
  1442 		}
       
  1443 	else if ( aPreDefType.Compare(KEmsSoundTypeNotify) == 0 )
       
  1444 		{
       
  1445 		soundType = CEmsPreDefSoundIE::ENotify;
       
  1446 		}
       
  1447 	else if ( aPreDefType.Compare(KEmsSoundTypeDrum) == 0 )
       
  1448 		{
       
  1449 		soundType = CEmsPreDefSoundIE::EDrum;
       
  1450 		}
       
  1451 	else if ( aPreDefType.Compare(KEmsSoundTypeClaps) == 0 )
       
  1452 		{
       
  1453 		soundType = CEmsPreDefSoundIE::EClaps;
       
  1454 		}
       
  1455 	else if ( aPreDefType.Compare(KEmsSoundTypeFanFar) == 0 )
       
  1456 		{
       
  1457 		soundType = CEmsPreDefSoundIE::EFanFar;
       
  1458 		}
       
  1459 	else if ( aPreDefType.Compare(KEmsSoundTypeChordHigh) == 0 )
       
  1460 		{
       
  1461 		soundType = CEmsPreDefSoundIE::EChordHigh;
       
  1462 		}
       
  1463 	else if ( aPreDefType.Compare(KEmsSoundTypeChordLow) == 0 )
       
  1464 		{
       
  1465 		soundType = CEmsPreDefSoundIE::EChordLow;
       
  1466 		}
       
  1467 	else
       
  1468 		{
       
  1469 		validType=EFalse;
       
  1470 		}
       
  1471 
       
  1472 	CEmsPreDefSoundIE*	emsPreDef=NULL;
       
  1473 	if ( validType )
       
  1474 		{
       
  1475 		emsPreDef=CEmsPreDefSoundIE::NewL(soundType);
       
  1476 		}
       
  1477 
       
  1478 	return emsPreDef;
       
  1479 	}
       
  1480 
       
  1481 CFbsBitmap* CTestMessBase::NewBitmapL(const TParse& aFileName, const TDesC& aObjectSize)
       
  1482 	{
       
  1483 	TInt	bitmapType=KSmallObject;
       
  1484 	TBool	validType=ETrue;
       
  1485 	if( aObjectSize.Compare(KSmall) == 0 )
       
  1486 		{
       
  1487 		bitmapType=KSmallObject;
       
  1488 		}
       
  1489 	else if ( aObjectSize.Compare(KLarge) == 0 )
       
  1490 		{
       
  1491 		bitmapType=KLargeObject;
       
  1492 		}
       
  1493 	else if ( aObjectSize.Compare(KVariable) == 0 )
       
  1494 		{
       
  1495 		bitmapType=KVariableObject;
       
  1496 		}
       
  1497 	else
       
  1498 		{
       
  1499 		ERR_PRINTF2(_L("Invalid bitmap type %S"), &aObjectSize);
       
  1500 		validType=EFalse;
       
  1501 		}
       
  1502 
       
  1503 	CFbsBitmap*	bmp = NULL;
       
  1504 	if ( validType )
       
  1505 		{
       
  1506 		bmp = new (ELeave) CFbsBitmap();
       
  1507 
       
  1508 		TInt	error = bmp->Load(aFileName.FullName(), bitmapType, EFalse);
       
  1509 		INFO_PRINTF2(_L("Bimap load %d"), error);
       
  1510 		if ( error != KErrNone)
       
  1511 			{
       
  1512 			delete bmp;
       
  1513 			bmp=NULL;
       
  1514 			}
       
  1515 		}
       
  1516 
       
  1517 	return bmp;
       
  1518 	}
       
  1519