appfw/viewserver/test/tviews/tview3/tview3.CPP
changeset 0 2e3d3ce01487
equal deleted inserted replaced
-1:000000000000 0:2e3d3ce01487
       
     1 // Copyright (c) 2008-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 // TVIEW3
       
    15 // Tests integration of view architecture throughout the ViewSrv, Cone, Apparc, Uikon and RefUI layers.
       
    16 // Largely redundant given TVIEW1 and TVIEW2 but used by auto tests.
       
    17 // 
       
    18 //
       
    19 
       
    20 /**
       
    21  @file
       
    22  @internalComponent - Internal Symbian test code
       
    23 */
       
    24 
       
    25 #include <e32math.h>
       
    26 #include <barsread.h>
       
    27 #include <gulalign.h>
       
    28 #include <txtrich.h>
       
    29 
       
    30 #include <techview/eiktxlbx.h>
       
    31 #include <techview/eiktxlbm.h>
       
    32 #include <techview/eiklabel.h>
       
    33 #include <techview/eikcmbut.h>
       
    34 #include <techview/eikbtpan.h>
       
    35 #include <techview/eikmenub.h>
       
    36 #include <techview/eikdialg.h>
       
    37 #include <eikdll.h>
       
    38 #include <eiksvdef.h>
       
    39 #include <techview/eikrted.h>
       
    40 #include <eikstart.h>
       
    41 
       
    42 #include <techview/eikwbtb.h> 
       
    43 
       
    44 #include <techview/eikon.hrh>
       
    45 #include <techview/eikon.rsg>
       
    46 
       
    47 #include <tview3.rsg>
       
    48 
       
    49 #include "tview3.H"
       
    50 #include "tview3.HRH"
       
    51 #include "tvwuids.H"
       
    52 
       
    53 #define VIEW_ONE TVwsViewId(KUidViewAppThree,KUidViewOne)
       
    54 #define VIEW_TWO TVwsViewId(KUidViewAppThree,KUidViewTwo)
       
    55 #define APP_TEXT _L("TVIEW3")
       
    56 
       
    57 //
       
    58 // EXPORTed functions
       
    59 //
       
    60 
       
    61 
       
    62 	LOCAL_C CApaApplication* NewApplication()
       
    63 		{
       
    64 		return new CTestApplication;
       
    65 		}
       
    66 
       
    67 	GLDEF_C TInt E32Main()
       
    68 		{
       
    69 		return EikStart::RunApplication(NewApplication);
       
    70 		}
       
    71 
       
    72 
       
    73 
       
    74 
       
    75 //
       
    76 // CTestApplication
       
    77 //
       
    78 
       
    79 TUid CTestApplication::AppDllUid() const
       
    80 	{
       
    81 	return KUidViewAppThree;
       
    82 	}
       
    83 
       
    84 CApaDocument* CTestApplication::CreateDocumentL()
       
    85 	{
       
    86 	return new (ELeave) CTestDocument(*this);
       
    87 	}
       
    88 
       
    89 
       
    90 //
       
    91 // CTestDocument
       
    92 //
       
    93 
       
    94 CTestDocument::CTestDocument(CEikApplication& aApp)
       
    95 		: CEikDocument(aApp)
       
    96 	{
       
    97 	}
       
    98 
       
    99 CEikAppUi* CTestDocument::CreateAppUiL()
       
   100 	{
       
   101 	return new(ELeave) CTestAppUi;
       
   102 	}
       
   103 
       
   104 
       
   105 //
       
   106 // CTestSwitchDialog.
       
   107 //
       
   108 
       
   109 CTestSwitchDialog::~CTestSwitchDialog()
       
   110 	{
       
   111 	}
       
   112 
       
   113 CTestSwitchDialog::CTestSwitchDialog(CTestAppUi& aAppUi) : iAppUi(aAppUi)
       
   114 	{
       
   115 	}
       
   116 
       
   117 TBool CTestSwitchDialog::OkToExitL(TInt aButtonId)
       
   118 	{
       
   119 	if (aButtonId!=EEikBidOk)
       
   120 		return EFalse;
       
   121 
       
   122 	switch (ChoiceListCurrentItem(ESwitchDlg_ViewChoice))
       
   123 		{
       
   124 		case 0:
       
   125 			iAppUi.iViewToActivate.iViewUid=KUidViewOne;
       
   126 			break;
       
   127 		case 1:
       
   128 			iAppUi.iViewToActivate.iViewUid=KUidViewTwo;
       
   129 			break;
       
   130 		default:
       
   131 			break;
       
   132 		}
       
   133 
       
   134 	if (ChoiceListCurrentItem(ESwitchDlg_AppChoice)==0)
       
   135 		{
       
   136 		iAppUi.iViewToActivate.iAppUid=KUidViewAppOne;
       
   137 		}
       
   138 	else if (ChoiceListCurrentItem(ESwitchDlg_AppChoice)==1)
       
   139 		{
       
   140 		iAppUi.iViewToActivate.iAppUid=KUidViewAppTwo;
       
   141 		}
       
   142 
       
   143 	delete iAppUi.iCustomMsg;
       
   144 	iAppUi.iCustomMsg=HBufC::NewL(STATIC_CAST(CEikEdwin*,Control(ESwitchDlg_CustomMsg))->TextLength());
       
   145 	TPtr des=iAppUi.iCustomMsg->Des();
       
   146 	GetEdwinText(des,ESwitchDlg_CustomMsg);
       
   147 	return ETrue;
       
   148 	}
       
   149 
       
   150 //
       
   151 // CTestRichTextDialog
       
   152 //
       
   153 
       
   154 class CTestRichTextDialog : public CEikDialog
       
   155 	{
       
   156 public:
       
   157 	CTestRichTextDialog(CRichText*& aRichText,CParaFormatLayer*& aRichParaFormatLayer,CCharFormatLayer*& aRichCharFormatLayer);
       
   158 private: // framework
       
   159 	void PreLayoutDynInitL();
       
   160     TBool OkToExitL(TInt aKeycode);
       
   161 private:
       
   162 	CRichText*& iRichText;
       
   163 	CParaFormatLayer*& iRichParaFormatLayer;
       
   164 	CCharFormatLayer*& iRichCharFormatLayer;
       
   165 	};
       
   166 
       
   167 
       
   168 CTestRichTextDialog::CTestRichTextDialog(CRichText*& aRichText,CParaFormatLayer*& aRichParaFormatLayer,
       
   169 						 CCharFormatLayer*& aRichCharFormatLayer)
       
   170 	: iRichText(aRichText),iRichParaFormatLayer(aRichParaFormatLayer),iRichCharFormatLayer(aRichCharFormatLayer)
       
   171 	{}
       
   172 	
       
   173 
       
   174 void CTestRichTextDialog::PreLayoutDynInitL()
       
   175 	{
       
   176 	CEikRichTextEditor* ed=(CEikRichTextEditor*)Control(ERtextedDlg_Editor);
       
   177 	ed->SetDocumentContentL(*iRichText);
       
   178 	}
       
   179 
       
   180 TBool CTestRichTextDialog::OkToExitL(TInt /*aKeycode*/)
       
   181     {
       
   182 	delete iRichText;
       
   183 	delete iRichParaFormatLayer;
       
   184 	delete iRichCharFormatLayer;
       
   185 	CEikRichTextEditor* edwin=STATIC_CAST(CEikRichTextEditor*,Control(ERtextedDlg_Editor));
       
   186 	edwin->SetDocumentOwnership(CEikEdwin::EDoesNotOwnText);
       
   187 	iRichText=edwin->RichText();
       
   188 	iRichText->SetPictureFactory(iRichText->PictureFactory(),NULL);
       
   189 	iRichParaFormatLayer=((CParaFormatLayer*)iRichText->GlobalParaFormatLayer());
       
   190 	iRichCharFormatLayer=((CCharFormatLayer*)iRichText->GlobalCharFormatLayer());
       
   191     return(ETrue);
       
   192     }
       
   193 
       
   194 
       
   195 //
       
   196 // CTestAppUi
       
   197 //
       
   198 
       
   199 CTestAppUi::~CTestAppUi()
       
   200 	{
       
   201 	delete iCustomMsg;
       
   202 	delete iRichText;
       
   203 	delete iRichParaFormatLayer;
       
   204 	delete iRichCharFormatLayer;
       
   205 	delete iAutoTestTimer;
       
   206 	}
       
   207 
       
   208 const TInt KRandSeed=67890;
       
   209 
       
   210 CTestAppUi::CTestAppUi()
       
   211 	: iRandSeed(KRandSeed)
       
   212 	{
       
   213 	TTime time;
       
   214 	time.HomeTime();
       
   215 	iRandSeed=time.Int64();
       
   216 	}
       
   217 
       
   218 void CTestAppUi::ConstructL()
       
   219 	{
       
   220 	CTestVwAppUi::ConstructL();
       
   221 	iRichParaFormatLayer=CEikonEnv::NewDefaultParaFormatLayerL();
       
   222     iRichCharFormatLayer=CEikonEnv::NewDefaultCharFormatLayerL();
       
   223 	iRichText=CRichText::NewL(iRichParaFormatLayer,iRichCharFormatLayer);
       
   224 	CreateViewsL();
       
   225 	iAutoTestTimer=CPeriodic::NewL(0);
       
   226 	}
       
   227 
       
   228 void CTestAppUi::CreateViewsL()
       
   229 	{
       
   230 	if (iViewsCreated)
       
   231 		{
       
   232 		RDebug::Print(_L("Views already created"));
       
   233 		return;
       
   234 		}
       
   235 
       
   236 	AddViewL(VIEW_ONE);
       
   237 	AddViewL(VIEW_TWO);
       
   238 	STATIC_CAST(CTestView*,View(VIEW_TWO))->InitializeAsDefaultL();
       
   239 	RDebug::Print(_L("All views created"));
       
   240 	iViewsCreated=ETrue;
       
   241 	}
       
   242 
       
   243 void CTestAppUi::AddViewL(const TVwsViewId& aViewId)
       
   244 	{
       
   245 	RDebug::Print(_L("Creating %x..."),aViewId.iViewUid.iUid);
       
   246 	CTestView* view=new(ELeave) CTestView(aViewId,*this);
       
   247 	CleanupStack::PushL(view);
       
   248 	CTestVwAppUi::AddViewL(view);
       
   249 	CleanupStack::Pop();
       
   250 	}
       
   251 
       
   252 void CTestAppUi::DisplaySwitchViewDialogL()
       
   253 	{
       
   254 	CEikDialog* dlg=new(ELeave) CTestSwitchDialog(*this);
       
   255 	if (dlg->ExecuteLD(R_VW_VIEW_SWITCH_DIALOG))
       
   256 		{
       
   257 		DoActivationL();
       
   258 		}
       
   259 	}
       
   260 
       
   261 void CTestAppUi::HandleCommandL(TInt aCommand)
       
   262 	{
       
   263 	switch (aCommand)
       
   264 		{
       
   265 	case ESwitchView:
       
   266 		DisplaySwitchViewDialogL();
       
   267 		break;
       
   268 	case EDisplayRichText:
       
   269 		DisplayRichTextDialogL();
       
   270 		break;
       
   271 	case EEikCmdExit:
       
   272 		Exit();
       
   273 		break;
       
   274 	case EDisplayTaskList:
       
   275 		CEikonEnv::Static()->DisplayTaskList();
       
   276 		break;
       
   277 	case EActivationOOM:
       
   278 		TestActivationOOML();
       
   279 		break;
       
   280 	case ESuccesiveAllocFail:
       
   281 		TestSuccesiveAllocFailL();
       
   282 		break;
       
   283 	case EWaitingActivation:
       
   284 		TestWaitingActivationL();
       
   285 		break;
       
   286 	case EStartMissingApp:
       
   287 		TestStartMissingAppL();
       
   288 		break;
       
   289 	case EPanicedActivation:
       
   290 		TestPanicedActivationL();
       
   291 		break;
       
   292 	case EPanicApp:
       
   293 		TestPanic();
       
   294 		break;
       
   295 	case EPanicedDeactivation:
       
   296 		TestPanicedDeactivationL();
       
   297 		break;
       
   298 	case ESlowActivation:
       
   299 		TestSlowActivationL();
       
   300 		break;
       
   301 	case ESlowDeactivation:
       
   302 		TestSlowDeactivationL();
       
   303 		break;
       
   304 	default:
       
   305 		if (ActiveView())
       
   306 			ActiveView()->HandleCommandL(aCommand);
       
   307 		else
       
   308 			RDebug::Print(_L("No active view"));
       
   309 		break;
       
   310 		}
       
   311 	}
       
   312 
       
   313 void CTestAppUi::DisplayRichTextDialogL()
       
   314 	{
       
   315 	CEikDialog* dialog=new(ELeave) CTestRichTextDialog(iRichText,iRichParaFormatLayer,iRichCharFormatLayer);
       
   316 	dialog->ExecuteLD(R_VW_RTEXTED_DIALOG);
       
   317 	}
       
   318 
       
   319 void CTestAppUi::DoActivationL()
       
   320 	{
       
   321 	if (iCustomMsg->Length())
       
   322 		{
       
   323 		ActivateViewL(iViewToActivate,KUidTestCustomMesssageId,*iCustomMsg);
       
   324 		}
       
   325 	else
       
   326 		{
       
   327 		CCoeAppUi::ActivateViewL(iViewToActivate);
       
   328 		}
       
   329 	}
       
   330 
       
   331 void CTestAppUi::TestSuccesiveAllocFailL()
       
   332 	{
       
   333 	RDebug::Print(_L("TVIEW3 : Test Succesive Alloc Failure During Activation Until Success"));	
       
   334 	TInt error=KErrUnknown;
       
   335 	for(TInt fail=1;error!=KErrNone;fail++)
       
   336 		{
       
   337 		RDebug::Print(_L("TVIEW3 : Next Failure Test"));
       
   338 		__UHEAP_FAILNEXT(fail);// fail on succesive allocations
       
   339 		__UHEAP_MARK;
       
   340 		TRAP(error,CCoeAppUi::ActivateViewL(TVwsViewId(KUidViewAppTwo,KUidViewOne)));
       
   341 		__UHEAP_MARKEND; // Check nothing has alloc'd due to fail
       
   342 		}
       
   343 	__UHEAP_SETFAIL(RHeap::ENone,0);// turn failure off
       
   344 	}
       
   345 
       
   346 void CTestAppUi::TestActivationOOML()
       
   347 	{
       
   348 	RDebug::Print(_L("TVIEW3 : Test Activation OOM"));
       
   349 	ActivateViewL(TVwsViewId(KUidViewAppTwo,KUidViewOne),KUidActivationOOM,KNullDesC16);
       
   350 	}
       
   351 
       
   352 void CTestAppUi::TestWaitingActivationL()
       
   353 	{
       
   354 	RDebug::Print(_L("TVIEW3 : Test Waiting Activation"));
       
   355 	ActivateViewL(TVwsViewId(KUidViewAppTwo,KUidViewOne),KUidStartScheduler,KNullDesC16);
       
   356 	}
       
   357 
       
   358 void CTestAppUi::TestPanicedActivationL()
       
   359 	{
       
   360 	RDebug::Print(_L("TVIEW3 : Test Paniced Activation"));
       
   361 	ActivateViewL(TVwsViewId(KUidViewAppTwo,KUidViewOne),KUidActivationPanic,KNullDesC16);
       
   362 	}
       
   363 
       
   364 void CTestAppUi::TestPanicedDeactivationL()
       
   365 	{
       
   366 	RDebug::Print(_L("TVIEW3 : Test Paniced Deactivation"));
       
   367 	STATIC_CAST(CTestView*,View(VIEW_ONE))->iDeactivationPanic=ETrue;
       
   368 	STATIC_CAST(CTestView*,View(VIEW_TWO))->iDeactivationPanic=ETrue;
       
   369 	CCoeAppUi::ActivateViewL(TVwsViewId(KUidViewAppTwo,KUidViewOne));
       
   370 	}
       
   371 
       
   372 void CTestAppUi::TestSlowActivationL()
       
   373 	{
       
   374 	RDebug::Print(_L("TVIEW3 : Test Slow Activation"));
       
   375 	ActivateViewL(TVwsViewId(KUidViewAppTwo,KUidViewOne),KUidSlowActivation,KNullDesC16);
       
   376 	}
       
   377 
       
   378 void CTestAppUi::TestSlowDeactivationL()
       
   379 	{
       
   380 	RDebug::Print(_L("TVIEW3 : Test Slow Deactivation"));
       
   381 	STATIC_CAST(CTestView*,View(VIEW_ONE))->iSlowDeactivation=ETrue;
       
   382 	STATIC_CAST(CTestView*,View(VIEW_TWO))->iSlowDeactivation=ETrue;
       
   383 	CCoeAppUi::ActivateViewL(TVwsViewId(KUidViewAppTwo,KUidViewOne));
       
   384 	}
       
   385 
       
   386 const TInt KMinimumDelay=50000;
       
   387 
       
   388 void CTestAppUi::StartEnduranceTest()
       
   389 	{
       
   390 	if (iAutoTestTimer->IsActive())
       
   391 		iAutoTestTimer->Cancel();
       
   392 	
       
   393 	// Start the auto test timer
       
   394 	TTimeIntervalMicroSeconds32 delay(KMinimumDelay+KMinimumDelay*Math::Rand(iRandSeed)/KMaxTInt);
       
   395 	iAutoTestTimer->Start(delay,delay,TCallBack(EnduranceTestCallBack,this));
       
   396 	}
       
   397 
       
   398 void CTestAppUi::DoNextEnduranceTestActivation()
       
   399 	{
       
   400 	if (iAutoTestTimer->IsActive())
       
   401 		iAutoTestTimer->Cancel();
       
   402 
       
   403 	// Find a new view to activate
       
   404 	TUid viewUid = (Math::Rand(iRandSeed)<KMaxTInt/2) ? KUidViewOne : KUidViewTwo;
       
   405 	TUid appUid = KNullUid;
       
   406 	TInt rand=Math::Rand(iRandSeed);
       
   407 	if (rand<=KMaxTInt/3)	// 1 in 3 chance
       
   408 		{
       
   409 		appUid=KUidViewAppOne;
       
   410 		}
       
   411 	else if (rand/2<=KMaxTInt/3)	
       
   412 		{
       
   413 		appUid=KUidViewAppTwo;
       
   414 		}
       
   415 	else	
       
   416 		{
       
   417 		appUid=KUidViewAppThree;
       
   418 		}
       
   419 
       
   420 	// Decide whether any special condition should be used with activation.
       
   421 	// This can mean the activation will be sluggish, a deactivation will be sluggish
       
   422 	// or the activation will leave
       
   423 	TUid messageUid=KNullUid;
       
   424 	rand=Math::Rand(iRandSeed);
       
   425 	if (rand<=KMaxTInt/10)	// 1 in 10 chance
       
   426 		{
       
   427 		messageUid=KUidActivationOOM;
       
   428 		}
       
   429 	else if (rand/2<=KMaxTInt/10)
       
   430 		{
       
   431 		messageUid=KUidSluggishActivation;
       
   432 		}
       
   433 	else if (rand/3<=KMaxTInt/10)
       
   434 		{
       
   435 		STATIC_CAST(CTestView*,View(VIEW_ONE))->iSluggishDeactivation=ETrue;
       
   436 		}
       
   437 
       
   438 	// Start the timer again with a new time delay
       
   439 	TTimeIntervalMicroSeconds32 delay(KMinimumDelay+KMinimumDelay*Math::Rand(iRandSeed)/KMaxTInt);
       
   440 	iAutoTestTimer->Start(delay,delay,TCallBack(EnduranceTestCallBack,this));
       
   441 
       
   442 
       
   443 	TRAPD(err,ActivateViewL(TVwsViewId(appUid,viewUid),messageUid,KNullDesC));
       
   444 	__ASSERT_ALWAYS(!err,User::Panic(_L("ActivateViewL(TVwsViewId(appUid,viewUid),messageUid,KNullDesC)"),err));
       
   445 
       
   446 	}
       
   447 
       
   448 TInt CTestAppUi::EnduranceTestCallBack(TAny* aSelf)
       
   449 	{ // static
       
   450 	REINTERPRET_CAST(CTestAppUi*,aSelf)->DoNextEnduranceTestActivation();
       
   451 	return 0;
       
   452 	}
       
   453 
       
   454 //
       
   455 // This UID defined in Uikon. Not an app.
       
   456 //
       
   457 const TUid KUidPasswordMode={268435755};
       
   458 
       
   459 void CTestAppUi::TestStartMissingAppL()
       
   460 	{
       
   461 	RDebug::Print(_L("TVIEW3 : Test Start Missing App"));
       
   462 	CCoeAppUi::ActivateViewL(TVwsViewId(KUidPasswordMode,KUidViewOne));
       
   463 	}
       
   464 
       
   465 void CTestAppUi::TestPanic()
       
   466 	{
       
   467 	RDebug::Print(_L("TVIEW3 : Test Panic"));
       
   468 	User::Panic(APP_TEXT,1);
       
   469 	}
       
   470 
       
   471 CTestViewControl::~CTestViewControl()
       
   472 	{
       
   473 	}
       
   474 
       
   475 void CTestViewControl::ConstructL(const TVwsViewId& aViewId)
       
   476     {
       
   477 	iViewId=aViewId;
       
   478     CreateWindowL();
       
   479     Window().SetShadowDisabled(ETrue);
       
   480 	Window().SetBackgroundColor(KRgbRed);
       
   481     ActivateL();
       
   482     }
       
   483 
       
   484 const TInt KXStart = 50;
       
   485 const TInt KYStart = 50;
       
   486 
       
   487 void CTestViewControl::Draw(const TRect& /*aRect*/) const
       
   488 	{
       
   489 	CWindowGc& gc = SystemGc();
       
   490 	gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
       
   491 	gc.SetBrushColor(KRgbDitheredLightGray);
       
   492 	gc.DrawRect(Rect());
       
   493 
       
   494 	gc.UseFont(iEikonEnv->TitleFont());
       
   495 
       
   496 	TInt yPos = KYStart;
       
   497 	TInt xPos = KXStart;
       
   498 
       
   499 	gc.DrawText(APP_TEXT,TPoint(xPos,yPos));
       
   500 
       
   501 	yPos+=30;
       
   502 
       
   503 	TBuf<256> viewNameBuf;
       
   504 	viewNameBuf.Append(_L("View "));
       
   505 	TBuf<16> numBuf;
       
   506 	numBuf.Num((TInt)iViewId.iViewUid.iUid);
       
   507 	viewNameBuf.Append(numBuf);
       
   508 
       
   509 	gc.DrawText(viewNameBuf,TPoint(xPos,yPos));
       
   510 	}
       
   511 
       
   512 
       
   513 //
       
   514 // CTestView
       
   515 //
       
   516 
       
   517 CTestView::~CTestView()
       
   518 	{
       
   519 	delete iControl;
       
   520 	}
       
   521 
       
   522 CTestView::CTestView(const TVwsViewId& aViewId,CTestAppUi& aAppUi)
       
   523 	:CTestVwAppView(aViewId,aAppUi), iDeactivationPanic(EFalse), iSlowDeactivation(EFalse), iSluggishDeactivation(EFalse)
       
   524 	{
       
   525 	}
       
   526 
       
   527 void CTestView::ConstructL() 
       
   528 	{
       
   529 	iControl=new(ELeave) CTestViewControl;
       
   530     iControl->ConstructL(ViewId());
       
   531 	iControl->SetRect(ClientRect());
       
   532 	}
       
   533 
       
   534 void CTestView::InitializeAsDefaultL()
       
   535 	{
       
   536 	AppUi().SetDefaultViewL(*this);
       
   537 
       
   538 	if (!iControl)
       
   539 		ConstructL();
       
   540 
       
   541 	iControl->ActivateL();
       
   542 	iControl->DrawNow();
       
   543 	}
       
   544 
       
   545 LOCAL_C void CleanupDoActivate(TAny* aPtr)
       
   546 	{
       
   547 	((CTestView*)aPtr)->UnrollDoActivate();
       
   548 	}
       
   549 
       
   550 void CTestView::UnrollDoActivate()
       
   551 	{
       
   552 	delete iControl;
       
   553 	iControl=NULL;
       
   554 	}
       
   555 
       
   556 void CTestView::DoActivateL(const TVwsViewId& /*aPrevViewUid*/,TUid aCustomMessageId,const TDesC16& /*aCustomMessage*/)
       
   557 	{
       
   558 	CleanupStack::PushL(TCleanupItem(CleanupDoActivate,this));
       
   559 	
       
   560 	if (!iControl)
       
   561 		ConstructL();
       
   562 
       
   563 	if(aCustomMessageId==KUidStartScheduler)
       
   564 		{
       
   565 		STATIC_CAST(CTestAppUi&,AppUi()).DisplayRichTextDialogL();
       
   566 		}
       
   567 	else if(aCustomMessageId==KUidActivationOOM)
       
   568 		{
       
   569 		User::Leave(KErrNoMemory);
       
   570 		}
       
   571 	else if(aCustomMessageId==KUidActivationPanic)
       
   572 		{
       
   573 		User::Panic(APP_TEXT,1);
       
   574 		}
       
   575 	else if(aCustomMessageId==KUidSlowActivation)
       
   576 		{
       
   577 		User::After(5000000);
       
   578 		}
       
   579 	else if(aCustomMessageId==KUidEndurance)
       
   580 		{
       
   581 		STATIC_CAST(CTestAppUi&,AppUi()).StartEnduranceTest();
       
   582 		}
       
   583 	else if(aCustomMessageId==KUidSluggishActivation)
       
   584 		{
       
   585 		User::After(1000000);	// 1.0 sec
       
   586 		}
       
   587 
       
   588 	CleanupStack::Pop();	// TCleanupItem
       
   589 
       
   590 	iControl->DrawableWindow()->SetOrdinalPosition(0);
       
   591 	iActivated=ETrue;
       
   592 	}
       
   593 
       
   594 void CTestView::DoDeactivate()
       
   595 	{
       
   596 	if (!iActivated)
       
   597 		{
       
   598 		RDebug::Print(_L("%x,%x deactivated when not active"),ViewId().iAppUid.iUid,ViewId().iViewUid.iUid);
       
   599 		ASSERT(iActivated);
       
   600 		}
       
   601 	if (iDeactivationPanic)
       
   602 		{
       
   603 		RDebug::Print(_L("TVIEW3 : Deactivation Panic"));
       
   604 		User::Panic(APP_TEXT,1);
       
   605 		}
       
   606 	else if (iSlowDeactivation)
       
   607 		{
       
   608 		RDebug::Print(_L("TVIEW3 : Slow Deactivation"));
       
   609 		User::After(5000000);	// 5 sec
       
   610 		iSlowDeactivation=EFalse;
       
   611 		}
       
   612 	else if (iSluggishDeactivation)
       
   613 		{
       
   614 		RDebug::Print(_L("TVIEW3 : Sluggish Deactivation"));
       
   615 		User::After(500000);	// 0.5 sec
       
   616 		iSluggishDeactivation=EFalse;
       
   617 		}
       
   618 	iActivated=EFalse;
       
   619 	}
       
   620 
       
   621 void CTestView::HandleCommandL(TInt aCommand)
       
   622 	{
       
   623 	switch (aCommand)
       
   624 		{
       
   625 	case ETaskToAppAViewOne:
       
   626 		ActivateViewL(TVwsViewId(KUidViewAppOne,KUidViewOne));
       
   627 		break;
       
   628 	case ETaskToAppAViewTwo:
       
   629 		ActivateViewL(TVwsViewId(KUidViewAppOne,KUidViewTwo));
       
   630 		break;
       
   631 	case EDNLViewAppC:
       
   632 		//ActivateViewL(TVwsViewId(KUidViewAppCApp,KUidViewAppCOne));
       
   633 		break;
       
   634 	default:
       
   635 		break;
       
   636 		}
       
   637 	}
       
   638 
       
   639 void CTestView::SetEmphasis(CCoeControl* /*aMenuControl*/,TBool /*aEmphasis*/)
       
   640 	{
       
   641 	}
       
   642 
       
   643 void CTestView::Reset()
       
   644 	{
       
   645 	delete iControl;
       
   646 	iControl=NULL;
       
   647 	}
       
   648 
       
   649