--- /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 <AknUtils.h>
+
+#include <alf/AlfEnv.h>
+#include <alf/AlfDisplay.h>
+#include <alf/alfimageloaderutil.h>
+#include <alf/alftexturemanager.h>
+#include <alf/alfevent.h>
+#include <alf/alfcontrolgroup.h>
+#include <alf/alfviewportlayout.h>
+#include <alf/alfgridlayout.h>
+#include <alf/alfdecklayout.h>
+#include <alf/alfimagevisual.h>
+#include <alf/alftextvisual.h>
+#include <alf/alfgradientbrush.h>
+#include <alf/alfborderbrush.h>
+#include <alf/AlfBrushArray.h>
+#include <alf/AlfTextStyle.h>
+
+#include <alfperfapp_imagetest.mbg>
+
+#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
+