diff -r 000000000000 -r 2f259fa3e83a lafagnosticuifoundation/clockanim/tef/TMSGWIN0STEP.CPP --- /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 +#include +#include +#include +#include +#include +#include + + +#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(); + } + + + +