--- /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();
+ }
+
+
+
+