diff -r 000000000000 -r 15bf7259bb7c uiacceltk/hitchcock/tsrc/alfperfapp/src/alfperfappsuitetestcasescroll.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiacceltk/hitchcock/tsrc/alfperfapp/src/alfperfappsuitetestcasescroll.cpp Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,235 @@ +/* +* Copyright (c) 2008 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: +* +*/ + + +// INCLUDES +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "AlfPerfApp.hrh" +#include "AlfPerfAppSuiteTestCaseScroll.h" +#include "AlfPerfAppSuitePeopleControl.h" +#include "AlfPerfAppSuiteEPGControl.h" +#include "AlfPerfAppSuiteTestCase.h" +#include "alfperfappconfigconstants.h" + + + + +// ============================= MEMBER FUNCTIONS ============================== + +CAlfPerfAppSuiteTestCaseScroll::CAlfPerfAppSuiteTestCaseScroll(CAlfPerfAppSuiteTestCase* aAppSuiteTestCase) + :iAppSuiteTestCase(aAppSuiteTestCase) + { + } + +CAlfPerfAppSuiteTestCaseScroll::~CAlfPerfAppSuiteTestCaseScroll() + { + } + +void CAlfPerfAppSuiteTestCaseScroll::ConstructL( + CAlfEnv& aEnv, TInt aCaseId, const TRect& aVisibleArea ) + { + CAlfPerfAppSuiteTestCaseControl::ConstructL( aEnv, aCaseId, aVisibleArea ); + + // Setup scrolling cycle lenght + switch( aCaseId ) + { + case EAlfPerfAppSuiteCaseScrollContinuousPortrait: + case EAlfPerfAppSuiteCaseScrollContinuousLandscape: + iCycleLenght = KCycleLenghtContinuous; + break; + + case EAlfPerfAppSuiteCaseScrollIncrementalPortrait: + case EAlfPerfAppSuiteCaseScrollIncrementalLandscape: + iCycleLenght = KCycleLenghtIncremental; + break; + + default: + User::Leave( KErrNotFound ); + break; + } + + // Use a viewport layout as a base + iViewPortLayout = CAlfViewportLayout::AddNewL( *this ); + + // Visible viewport is full screen + iViewPortLayout->SetViewportSize( aVisibleArea.Size(), 0 ); + + // Then use a gird to hold suites + CAlfGridLayout* baseGridLayout = CAlfGridLayout::AddNewL( *this, 1, 1, iViewPortLayout ); + + // Construct suites + + iLoadedImages = 0; + iSuiteCount = 3; + // EPG suite + CAlfPerfAppSuiteEPGControl* epg = new (ELeave) CAlfPerfAppSuiteEPGControl(this); + epg->ConstructL( aEnv, aVisibleArea.Size(), baseGridLayout ); + aEnv.ControlGroup( KAlfPerfAppSuiteControlGroup ).AppendL( epg ); + + // PEOPLE suite + CAlfPerfAppSuitePeopleControl* people = new (ELeave) CAlfPerfAppSuitePeopleControl(this); + people->ConstructL( aEnv, aVisibleArea.Size(), baseGridLayout ); + aEnv.ControlGroup( KAlfPerfAppSuiteControlGroup ).AppendL( people ); + + // Another EPG suite + epg = new (ELeave) CAlfPerfAppSuiteEPGControl(this); + epg->ConstructL( aEnv, aVisibleArea.Size(), baseGridLayout ); + aEnv.ControlGroup( KAlfPerfAppSuiteControlGroup ).AppendL( epg ); + + // Set correct number of columns to grid + baseGridLayout->SetColumns( iSuiteCount ); + + // Virtual viewport depends on the number of suites + TSize size = iVisibleArea.Size(); + size.iWidth = iVisibleArea.Width()*iSuiteCount; + iViewPortLayout->SetVirtualSize( size, 0 ); + + // TextureLoadingCompleted() call back is handled now in epg, people control classes. + // so no need of explicit wait in this thread. + // ImagesLoaded() does the request completion functionlaity. + } + +void CAlfPerfAppSuiteTestCaseScroll::ImagesLoaded( TInt aErrorCode ) + { + // inform if there is any error + if( aErrorCode != KErrNone ) + { + iAppSuiteTestCase->ImagesLoaded( aErrorCode ); + } + + iLoadedImages++; + if (iLoadedImages == iSuiteCount) + { + iAppSuiteTestCase->ImagesLoaded(KErrNone); + } + } + +void CAlfPerfAppSuiteTestCaseScroll::DoStartExecuteL() + { + NextCycleL(); + } + +void CAlfPerfAppSuiteTestCaseScroll::SetVisibleArea( + const TRect& /*aVisibleArea*/ ) + { + if ( IsExecutionOngoing() ) + { + Env().CancelCustomCommands( this, KAlfPerfAppSuiteCmdNext ); + TRAPD( err, NextCycleL() ); + if ( err != KErrNone ) + { + CompleteNow( err ); + } + } + } + +TBool CAlfPerfAppSuiteTestCaseScroll::OfferEventL( const TAlfEvent& aEvent ) + { + if ( aEvent.IsCustomEvent() && + aEvent.CustomParameter() == KAlfPerfAppSuiteCmdNext ) + { + TRAPD( err, NextCycleL() ); + if ( err != KErrNone ) + { + CompleteNow( err ); + } + return ETrue; + } + + return CAlfPerfAppSuiteTestCaseControl::OfferEventL( aEvent ); + } + +void CAlfPerfAppSuiteTestCaseScroll::NextCycleL() + { + switch( iCaseId ) + { + case EAlfPerfAppSuiteCaseScrollContinuousPortrait: + case EAlfPerfAppSuiteCaseScrollContinuousLandscape: + { + if( iCycleCounter == KNumberOfRepeats ) + { + CompleteNow( KErrNone ); + return; + } + + // Bounce between first and last suites + if( iCycleCounter % 2 ) + { + iViewPortPos = TAlfRealPoint( 0, 0 ); + } + else + { + iViewPortPos = TAlfRealPoint( iVisibleArea.Width()*(iSuiteCount-1), 0 ); + } + } + break; + + case EAlfPerfAppSuiteCaseScrollIncrementalPortrait: + case EAlfPerfAppSuiteCaseScrollIncrementalLandscape: + { + if( iCycleCounter == (iSuiteCount*2*KNumberOfRepeats)-1 ) + { + CompleteNow( KErrNone ); + return; + } + + // Bounce between suites + if( (iCycleCounter / (iSuiteCount-1)) % 2 ) + { + iViewPortPos.iX -= iVisibleArea.Width(); + } + else + { + iViewPortPos.iX += iVisibleArea.Width(); + } + } + break; + + default: + CompleteNow( KErrNotFound ); + return; + } + + iViewPortLayout->SetViewportPos( iViewPortPos, iCycleLenght ); + + iCycleCounter++; + + TAlfCustomEventCommand command( KAlfPerfAppSuiteCmdNext, this ); + User::LeaveIfError( Env().Send( command, iCycleLenght ) ); + } + +// end of file +