diff -r 000000000000 -r 2f259fa3e83a lafagnosticuifoundation/clockanim/tef/TCLCK1STEP.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lafagnosticuifoundation/clockanim/tef/TCLCK1STEP.CPP Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,417 @@ +// 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: +// test code for the clock DLL +// $Workfile: TCLCK1.CPP $ +// $Revision: 1.7 $ +// $Author: DougF $ +// $Date: 07 Jul 1999 16:16:30 $ +// +// + +/** + @file + @internalComponent - Internal Symbian test code +*/ +#include +#include +#include +#include +#include +#include +#include + +#include +#include "TCLCK1STEP.h" + + + +#define TCLCK1_MBM _L("z:\\system\\data\\MBS1.MBM") +#define CLOCK EMbmMbs1Clock +#define CLOCKMSK EMbmMbs1Clockmsk + +// classes +// main functions + +CTestClck1Ui::CTestClck1Ui(CTmsTestStep* aStep) : +CTestCoeAppUi(aStep) + {} + + +void CTestClck1Ui::ConstructL() + { + CTestCoeAppUi::ConstructL(); + iControl=new(ELeave) CClk1Control; + AddToStackL(iControl,ECoeStackPriorityDefault,ECoeStackFlagOwnershipTransfered); +// appUi->AddToStackL(control,ECoeStackPriorityDefault,ECoeStackFlagOwnershipTransfered); + iControl->ConstructL(); + + AutoTestManager().StartAutoTest(); + } + +/** + @SYMTestCaseID UIF-Clock-TClock1 + */ + +void CTestClck1Ui::RunTestStepL(TInt aNumStep) + { + TKeyEvent theKeyEvent; + TEventCode theType = EEventKey; + + //only for debug + User::After(TTimeIntervalMicroSeconds32(1000000)); + + + switch(aNumStep) + { + case 1: + SetTestStepID(_L("UIF-Clock-TClock1")); + theKeyEvent.iCode = EKeyEnter; + theKeyEvent.iModifiers = 0; + + iControl->OfferKeyEventL(theKeyEvent, theType); + INFO_PRINTF1(_L("Show analog & digital clocks")); + break; + + case 2: case 3: case 4: case 5: + theKeyEvent.iCode = EKeyLeftArrow; + theKeyEvent.iModifiers = 0; + + iControl->OfferKeyEventL(theKeyEvent, theType); + INFO_PRINTF1(_L("Change universal time backward")); + break; + + case 6: case 7: case 8: case 9: + theKeyEvent.iCode = EKeyRightArrow; + theKeyEvent.iModifiers = 0; + + iControl->OfferKeyEventL(theKeyEvent, theType); + INFO_PRINTF1(_L("Change universal time forward")); + break; + + case 10: + theKeyEvent.iCode = '*'; + theKeyEvent.iModifiers = 0; + + iControl->OfferKeyEventL(theKeyEvent, theType); + INFO_PRINTF1(_L("Change clock separator")); + break; + + case 11: + theKeyEvent.iCode = EKeySpace; + theKeyEvent.iModifiers = EModifierShift; + + iControl->OfferKeyEventL(theKeyEvent, theType); + INFO_PRINTF1(_L("Set a new background color")); + break; + + case 12: + theKeyEvent.iCode = EKeySpace; + theKeyEvent.iModifiers = 0; + + iControl->OfferKeyEventL(theKeyEvent, theType); + INFO_PRINTF1(_L("Restore previos background color")); + break; + + case 13: + theKeyEvent.iCode = EKeyEnter; + theKeyEvent.iModifiers = EModifierShift; + + iControl->OfferKeyEventL(theKeyEvent, theType); + INFO_PRINTF1(_L("hide clocks")); + RecordTestResultL(); + CloseTMSGraphicsStep(); + break; + + case 14: + AutoTestManager().FinishAllTestCases(CAutoTestManager::EPass); + } + } + + +void CTClck1Step::ConstructAppL(CCoeEnv* aCoeEnv) + { + aCoeEnv->ConstructL(); + CTestClck1Ui* appUi=new(ELeave) CTestClck1Ui(this); + appUi->ConstructL(); + aCoeEnv->SetAppUi(appUi); + } + +CTClck1Step::~CTClck1Step() +/** + Destructor + */ + { + } + +CTClck1Step::CTClck1Step() +/** + Constructor + */ + { + // Call base class method to set up the human readable name for logging + SetTestStepName(KTClck1Step); + } + +TVerdict CTClck1Step::doTestStepL() + { + INFO_PRINTF1(_L("Test Started")); + CCoeEnv* coeEnv=new CCoeEnv; + if (coeEnv==NULL) + { + SetTestStepResult(EFail); + return TestStepResult(); + } + TRAPD(error, ConstructAppL(coeEnv)); + if (error!=KErrNone) + { + delete coeEnv; + SetTestStepResult(EFail); + return TestStepResult(); + } + coeEnv->ExecuteD(); + INFO_PRINTF1(_L("Test Finished")); + return TestStepResult(); + } + + +// CClck1DestructableFont + +CClck1DestructableFont::CClck1DestructableFont(CWsScreenDevice* aScreenDevice) + :iScreenDevice(aScreenDevice) + { + } + +void CClck1DestructableFont::ConstructL(const TFontSpec& aFontSpec) + { + User::LeaveIfError(iScreenDevice->GetNearestFontInTwips((CFont*&)iFont, aFontSpec)); + } + +CClck1DestructableFont::~CClck1DestructableFont() + { + iScreenDevice->ReleaseFont(iFont); // N.B. do not need to do "delete iFont" + } + +TInt CClck1DestructableFont::Handle() const + { + return iFont->Handle(); + } + +// CClk1Control + +CClk1Control::CClk1Control() + :iBackgroundColor(85, 85, 85), + iAnimDll(iCoeEnv->WsSession()), + iDigitalClock0Position(350, 125), + iDigitalClock0Size(180, 70), + iAnalogClock0Position(10, 0), + iAnalogClock0Size(300, 222), + iUniversalTimeOffset(0) + { + __DECLARE_NAME(_S("CClk1Control")); + + __ASSERT_DEBUG(iDigitalClock0==NULL, User::Panic(_L("Clock test-code"), 1)); + __ASSERT_DEBUG(iAnalogClock0==NULL, User::Panic(_L("Clock test-code"), 2)); + } + +void CClk1Control::ConstructL() + { + // CONE construction stuff + CreateBackedUpWindowL(iCoeEnv->RootWin()); + SetExtent(TPoint(10, 10), TSize(620, 220)); + ActivateL(); + iCoeEnv->WsSession().Flush(); + + User::LeaveIfError(iAnimDll.Load(_L("CLOCKA.DLL"))); + + // clock construction stuff + CreateDigitalClocksL(); + CreateAnalogClocksL(); + } + +CClk1Control::~CClk1Control() + { + if (iDigitalClock0!=NULL) + iDigitalClock0->Destroy(); + if (iAnalogClock0!=NULL) + iAnalogClock0->Destroy(); + iAnimDll.Close(); + } + +TKeyResponse CClk1Control::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType) + { + if (aType==EEventKey) + { + TInt adjust=0; + switch (aKeyEvent.iCode) + { + case CTRL('e'): + iCoeEnv->Flush(); + CBaActiveScheduler::Exit(); + break; + case EKeySpace: + if (aKeyEvent.iModifiers&EModifierShift) + iDigitalClock0->SetBackgroundColor(TRgb(85, 85, 85), TRgb(0, 0, 0)); + else + iDigitalClock0->SetBackgroundColor(TRgb(170, 170, 170), TRgb(85, 85, 85)); + break; + case EKeyEnter: + if (aKeyEvent.iModifiers&EModifierShift) + { + iDigitalClock0->SetVisible(EFalse); + iAnalogClock0->SetVisible(EFalse); + } + else + { + iDigitalClock0->SetVisible(ETrue); + iAnalogClock0->SetVisible(ETrue); + } + break; + case '$': + case '%': + case '^': + case '&': + case '+': + case '-': + case '*': + case '/': + case 'S': + case 's': + case '\\': + case ':': + { + TLocale locale; + locale.Refresh(); +#pragma warning (disable: 4710) + locale.SetTimeSeparator(aKeyEvent.iCode, 1); + locale.SetTimeSeparator(aKeyEvent.iCode, 2); +#pragma warning (default: 4710) + locale.Set(); + } + break; + case EKeyLeftArrow: + case EKeyUpArrow: + adjust=-3600; + goto adjustClock; + case EKeyRightArrow: + case EKeyDownArrow: + adjust=3600; + goto adjustClock; + adjustClock: + iUniversalTimeOffset+=adjust; + iDigitalClock0->SetUniversalTimeOffset(iUniversalTimeOffset); + iAnalogClock0->SetUniversalTimeOffset(iUniversalTimeOffset); + break; + case 'U': + case 'u': + iDigitalClock0->UpdateDisplay(); + iAnalogClock0->UpdateDisplay(); + break; + case 'D': + case 'd': + iDigitalClock0->Draw(); + iAnalogClock0->Draw(); + break; + } + } + + return EKeyWasConsumed; + } + +void CClk1Control::Draw(const TRect&) const + { + CGraphicsContext& systemGc=SystemGc(); + systemGc.SetPenStyle(CGraphicsContext::ENullPen); + systemGc.SetBrushStyle(CGraphicsContext::ESolidBrush); + systemGc.SetBrushColor(iBackgroundColor); + systemGc.DrawRect(Rect()); + } + +void CClk1Control::CreateDigitalClocksL() + { + TMargins margins; + margins.iLeft=0; + margins.iRight=0; + margins.iTop=0; + margins.iBottom=0; + // construct digital clock + STimeDeviceShadow digitalClock0Shadow; + digitalClock0Shadow.iIsOn=ETrue; + digitalClock0Shadow.iColor=TRgb(85, 85, 85); + digitalClock0Shadow.iOffset.SetXY(2, 2); + // + iDigitalClock0=new(ELeave) RDigitalClock(iAnimDll, BackedUpWindow()); + iDigitalClock0->ConstructL(TTimeIntervalSeconds(30*60), iDigitalClock0Position, iDigitalClock0Size, margins, digitalClock0Shadow, TRgb(170, 170, 170), 1); + // + TBuf<64> digitalClock0Format0=_L("%-B%J%:1%T%+B"); + CClck1DestructableFont* digitalClock0Font0=new(ELeave) CClck1DestructableFont(iCoeEnv->ScreenDevice()); + CleanupStack::PushL(digitalClock0Font0); + TFontSpec digitalClock0FontSpec0(_L("arial"), iCoeEnv->ScreenDevice()->VerticalPixelsToTwips(25)); + digitalClock0FontSpec0.iFontStyle.SetPosture(EPostureItalic); + digitalClock0FontSpec0.iFontStyle.SetStrokeWeight(EStrokeWeightBold); + digitalClock0Font0->ConstructL(digitalClock0FontSpec0); + iDigitalClock0->AddTextSectionL(TDigitalDisplayTextSection(digitalClock0Font0->Handle(), TRgb(0, 0, 0), + EDigitalDisplayHorizontalTextAlignmentCenter, + EDigitalDisplayVerticalTextAlignmentCenterExclDescent, + 0, 0, digitalClock0Format0)); + // + CleanupStack::PopAndDestroy(); // pop and destroy digitalClock0Font0 + } + +void CClk1Control::CreateAnalogClocksL() + { + CWsScreenDevice* screenDevice=iCoeEnv->ScreenDevice(); + TMargins margins; + margins.iLeft=0; + margins.iRight=0; + margins.iTop=0; + margins.iBottom=0; + // construct analog clock + // + STimeDeviceShadow analogClock0Shadow; + analogClock0Shadow.iIsOn=ETrue; + analogClock0Shadow.iColor=TRgb(85, 85, 85); + analogClock0Shadow.iOffset.SetXY(4, 4); + // + CFbsBitmap* analogClock0Face=new(ELeave) CFbsBitmap; + CleanupStack::PushL(analogClock0Face); + User::LeaveIfError(analogClock0Face->Load(TCLCK1_MBM, CLOCK)); + analogClock0Face->SetSizeInTwips(screenDevice); + CFbsBitmap* analogClock0FaceMask=new(ELeave) CFbsBitmap; + CleanupStack::PushL(analogClock0FaceMask); + User::LeaveIfError(analogClock0FaceMask->Load(TCLCK1_MBM, CLOCKMSK)); + analogClock0Face->SetSizeInTwips(screenDevice); + // + iAnalogClock0=new(ELeave) RAnalogClock(iAnimDll, BackedUpWindow()); + iAnalogClock0->ConstructL(TTimeIntervalSeconds(30*60), iAnalogClock0Position, iAnalogClock0Size, margins, analogClock0Shadow, + analogClock0Face->Handle(), analogClock0FaceMask->Handle(), 2); + // + TRgb black(0, 0, 0); + CArrayFix* pointList=new(ELeave) CArrayFixFlat(4); + CleanupStack::PushL(pointList); + // + // N.B. the dimensions/positions of the hand features (i.e. lines and circles) are specified with the hand assumed to be in the + // 12 o'clock position, with TPoint(0, 0) being the center of the clock + TAnalogDisplayHand analogClock0HourHand(EAnalogDisplayHandOneRevPer12Hours); + analogClock0HourHand.AddLine(CGraphicsContext::ESolidPen, black, TSize(4, 4), TPoint(0, 10), TPoint(0, -55)); + iAnalogClock0->AddHandL(analogClock0HourHand); + // + TAnalogDisplayHand analogClock0MinuteHand(EAnalogDisplayHandOneRevPerHour); + analogClock0MinuteHand.AddLine(CGraphicsContext::ESolidPen, black, TSize(4, 4), TPoint(0, 10), TPoint(0, -70)); + iAnalogClock0->AddHandL(analogClock0MinuteHand); + // + CleanupStack::PopAndDestroy(); // pop and destroy pointList + CleanupStack::PopAndDestroy(); // pop and destroy analogClock0FaceMask + CleanupStack::PopAndDestroy(); // pop and destroy analogClock0Face + } +