lafagnosticuifoundation/clockanim/tef/TMSGWIN0STEP.CPP
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lafagnosticuifoundation/clockanim/tef/TMSGWIN0STEP.CPP	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,298 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file 
+// @internalComponent - Internal Symbian test code
+// test code for the message-window class
+// $Workfile:   TMSGWIN0.CPP  $
+// $Revision:   1.6  $
+// $Author:	 DougF  $
+// $Date:		 07 Jul 1999 16:16:30  $
+// 
+//
+
+#include <e32keys.h>
+#include <coemain.h>
+#include <coedef.h>
+#include <coeaui.h>
+#include <coecntrl.h>
+#include <clock.h>
+#include <basched.h>
+
+
+#include "TMsgWin0Step.h"
+
+// enums
+
+// CClkMsgWinControl
+
+CClkMsgWinControl::CClkMsgWinControl()
+	:iBackgroundColor(85, 85, 85),
+	 iAnimDll(iCoeEnv->WsSession()),
+	 iCounter(0)
+	{
+	__DECLARE_NAME(_S("CClkMsgWinControl"));
+
+	__ASSERT_DEBUG(iMessageWindow==NULL, User::Panic(_L("Clock test-code"), 1));
+	}
+
+void CClkMsgWinControl::ConstructL()
+	{
+	CreateWindowL();
+	EnableDragEvents();
+	RWindow& window=Window();
+	window.SetPointerGrab(ETrue);
+	window.SetBackgroundColor(iBackgroundColor);
+	window.SetShadowHeight(8);
+	User::LeaveIfError(iAnimDll.Load(_L("CLOCKA.DLL")));
+	TFontSpec fontSpec(_L("arial"), iCoeEnv->ScreenDevice()->VerticalPixelsToTwips(25));
+	User::LeaveIfError(iCoeEnv->ScreenDevice()->GetNearestFontInTwips((CFont*&)iFont, fontSpec));
+	iDummy=new(ELeave) CCoeControl;
+	iDummy->SetNonFocusing();
+	iBlankWindow=new(ELeave) RBlankWindow(iCoeEnv->WsSession());
+	User::LeaveIfError(iBlankWindow->Construct(iCoeEnv->RootWin(), (TUint32)iDummy));
+	iMessageWindow=new(ELeave) RMessageWindow(iAnimDll, *iBlankWindow);
+	iMessageWindow->ConstructL(EGapAboveMessageWindowText+iFont->AscentInPixels(), iFont->Handle(), TRgb(0, 0, 0), TRgb(255, 255, 255));
+	SetExtent(TPoint(10, 10), TSize(100, 100));
+	iBlankWindow->Activate();
+	ActivateL();
+	}
+
+CClkMsgWinControl::~CClkMsgWinControl()
+	{
+	iCoeEnv->ScreenDevice()->ReleaseFont(iFont); // N.B. do not need to do "delete iFont"
+	if (iMessageWindow!=NULL)
+		iMessageWindow->Destroy();
+	if (iBlankWindow!=NULL)
+		iBlankWindow->Destroy();
+	delete iDummy;
+	iAnimDll.Close();
+	}
+
+TKeyResponse CClkMsgWinControl::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
+	{
+	if (aType==EEventKey)
+		{
+		switch (aKeyEvent.iCode)
+			{
+		case CTRL('e'):
+			iCoeEnv->Flush();
+			CBaActiveScheduler::Exit();
+			break;
+		case EKeyBackspace:
+		case EKeyDelete:
+			iMessageWindow->CancelDisplay();
+			break;
+		case EKeyLineFeed:
+		case EKeyEnter:
+			{
+			TBuf<64> text;
+			TInt initialDelay=(aKeyEvent.iModifiers&EModifierRightShift)? 1*1000000: 0;
+			TBool flash=(aKeyEvent.iModifiers&EModifierLeftShift);
+			if (aKeyEvent.iModifiers&EModifierCtrl)
+				{
+				text.Format(_L("Counter=%d"), iCounter++);
+				iBlankWindow->SetExtent(TPoint(50, 50), WindowSize(*iFont, text));
+				iMessageWindow->StartDisplay(flash, initialDelay, text);
+				}
+			else
+				{
+				text.Format(_L("Counter=%d, duration=5"), iCounter++);
+				iBlankWindow->SetExtent(TPoint(50, 50), WindowSize(*iFont, text));
+				iMessageWindow->StartDisplay(flash, initialDelay, 5*1000000, text);
+				}
+			}
+			break;
+			}
+		}
+
+	return EKeyWasNotConsumed;
+	}
+
+void CClkMsgWinControl::HandlePointerEventL(const TPointerEvent& aPointerEvent)
+	{
+	RWindow& window=Window();
+	switch (aPointerEvent.iType)
+		{
+	case TPointerEvent::EButton1Down:
+		iCoeEnv->RootWin().SetOrdinalPosition(0);
+		window.SetOrdinalPosition(0);
+		iPointerOffset=aPointerEvent.iPosition;
+		break;
+	case TPointerEvent::EDrag:
+		SetPosition(aPointerEvent.iParentPosition-iPointerOffset);
+		break;
+	case TPointerEvent::EButton1Up:
+		window.SetOrdinalPosition(1000);
+		iPointerOffset.SetXY(0, 0);
+		break;
+	default:
+		break;
+		}
+	}
+
+void CClkMsgWinControl::Draw(const TRect&) const
+	{
+	CGraphicsContext& systemGc=SystemGc();
+	systemGc.SetPenStyle(CGraphicsContext::ENullPen);
+	systemGc.SetBrushStyle(CGraphicsContext::ESolidBrush);
+	systemGc.SetBrushColor(iBackgroundColor);
+	systemGc.DrawRect(Rect());
+	}
+
+TSize CClkMsgWinControl::WindowSize(const CFbsFont& aFont, const TDesC& aText) const
+	{
+	TMargins borders;
+	iMessageWindow->GetBorders(borders);
+	__ASSERT_ALWAYS(borders.iLeft==3 &&
+					borders.iRight==4 &&
+					borders.iTop==3 &&
+					borders.iBottom==4, User::Panic(_L("Clock test-code"), 2));
+	return TSize(borders.iLeft+borders.iRight+EGapLeftOfMessageWindowText+EGapRightOfMessageWindowText+aFont.TextWidthInPixels(aText),
+				 borders.iTop+borders.iBottom+EGapAboveMessageWindowText+EGapBelowMessageWindowText+aFont.HeightInPixels());
+	}
+
+// 
+
+CTMsgWinTestAppUi::CTMsgWinTestAppUi(CTmsTestStep* aStep) :
+	CTestCoeAppUi(aStep)
+	{}
+
+
+void CTMsgWinTestAppUi::ConstructL()
+	{
+	CTestCoeAppUi::ConstructL();
+	iControl=new(ELeave) CClkMsgWinControl;
+	AddToStackL(iControl,ECoeStackPriorityDefault,ECoeStackFlagOwnershipTransfered);
+	iControl->ConstructL();
+	
+	AutoTestManager().StartAutoTest();
+
+	}
+
+/**
+   @SYMTestCaseID UIF-Clock-TMsgWin
+ */
+
+void CTMsgWinTestAppUi::RunTestStepL(TInt aStep)
+	{
+	TKeyEvent	theKeyEvent;
+	User::After(TTimeIntervalMicroSeconds32(1000000));
+	
+	switch(aStep)
+		{
+		case 1:
+		SetTestStepID(_L("UIF-Clock-TMsgWin"));
+		case 2: case 3: case 4:
+		theKeyEvent.iCode = EKeyEnter;
+		theKeyEvent.iModifiers = 0;
+		INFO_PRINTF1(_L("Start display counter window with duration"));
+		iControl->OfferKeyEventL(theKeyEvent, EEventKey);
+		break;
+		case 5: 
+		theKeyEvent.iCode = EKeyDelete;
+		INFO_PRINTF1(_L("Close counter window"));
+		iControl->OfferKeyEventL(theKeyEvent, EEventKey);
+		break;
+		case 6: case 7: case 8: case 9: //flashing
+		theKeyEvent.iCode = EKeyEnter;
+		theKeyEvent.iModifiers = EModifierLeftShift;
+		INFO_PRINTF1(_L("Flashing display counter window with duration"));
+		iControl->OfferKeyEventL(theKeyEvent, EEventKey);
+		break;
+		case 10: 
+		theKeyEvent.iCode = EKeyDelete;
+		INFO_PRINTF1(_L("Close counter window"));
+		iControl->OfferKeyEventL(theKeyEvent, EEventKey);
+		break;
+
+		case 11: case 12: 
+		theKeyEvent.iCode = EKeyEnter;
+		theKeyEvent.iModifiers = EModifierCtrl;
+		INFO_PRINTF1(_L("Start display counter window"));
+		iControl->OfferKeyEventL(theKeyEvent, EEventKey);
+		break;
+		case 13: 
+		theKeyEvent.iCode = EKeyDelete;
+		INFO_PRINTF1(_L("Close counter window"));
+		iControl->OfferKeyEventL(theKeyEvent, EEventKey);
+		break;
+		case 14: case 15:  //flashing
+		theKeyEvent.iCode = EKeyEnter;
+		INFO_PRINTF1(_L("Flashing display counter window"));
+		theKeyEvent.iModifiers = EModifierLeftShift | EModifierCtrl;
+		iControl->OfferKeyEventL(theKeyEvent, EEventKey);
+		break;
+		case 16: 
+		theKeyEvent.iCode = EKeyDelete;
+		INFO_PRINTF1(_L("Close counter window"));
+		iControl->OfferKeyEventL(theKeyEvent, EEventKey);
+		break;
+		case 17: 
+		theKeyEvent.iCode = CTRL('e');
+		iControl->OfferKeyEventL(theKeyEvent, EEventKey);
+		RecordTestResultL();
+		CloseTMSGraphicsStep();
+		break;
+		}
+	}
+
+//---------
+void CTMsgWin0Step::ConstructAppL(CCoeEnv* aCoe)
+	{ // runs inside a TRAP harness
+	aCoe->ConstructL();
+	CTMsgWinTestAppUi* appUi= new (ELeave) CTMsgWinTestAppUi(this);
+	aCoe->SetAppUi(appUi);
+	appUi->ConstructL();
+	}
+
+CTMsgWin0Step::~CTMsgWin0Step()
+/**
+   Destructor
+ */
+	{
+	}
+
+CTMsgWin0Step::CTMsgWin0Step()
+/**
+   Constructor
+ */
+	{
+	// Call base class method to set up the human readable name for logging
+	SetTestStepName(KTMsgWin0Step);
+	}
+
+
+TVerdict CTMsgWin0Step::doTestStepL() // main function called by E32
+	{
+	PreallocateHALBuffer();
+
+	__UHEAP_MARK;
+
+	INFO_PRINTF1(_L("Test Started"));
+	CCoeEnv* coe=new CCoeEnv;
+	TRAPD(err,ConstructAppL(coe));
+
+	if (!err)
+		coe->ExecuteD();
+
+	__UHEAP_MARKEND;
+	
+	INFO_PRINTF1(_L("Test Finished"));
+
+    return TestStepResult();
+	}
+
+
+
+