uiacceltk/hitchcock/tsrc/alfperfapp/src/alfperfappsuitetestcase.cpp
changeset 0 15bf7259bb7c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiacceltk/hitchcock/tsrc/alfperfapp/src/alfperfappsuitetestcase.cpp	Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,193 @@
+/*
+* 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/alfcontrolgroup.h>
+#include <alf/alfroster.h>
+
+#include "AlfPerfApp.hrh"
+#include "AlfPerfAppAppUi.h"
+#include "AlfPerfAppSuiteTestCase.h"
+#include "AlfPerfAppSuiteTestCaseScroll.h"
+
+// ============================= MEMBER FUNCTIONS ==============================
+
+CAlfPerfAppSuiteTestCase* CAlfPerfAppSuiteTestCase::NewL( TInt aCaseId, TInt aSequenceIndex )
+	{
+    if ( !IsSupported( aCaseId ) )
+        {
+        User::Leave( KErrNotSupported );
+        }
+    
+	CAlfPerfAppSuiteTestCase* self = new (ELeave) CAlfPerfAppSuiteTestCase( aCaseId, aSequenceIndex );
+	CleanupStack::PushL( self );
+	self->ConstructL();
+	CleanupStack::Pop( self );
+	return self;
+	}
+	    
+CAlfPerfAppSuiteTestCase::~CAlfPerfAppSuiteTestCase()
+	{
+    if ( iEnv && iControl )
+        {
+        iControl->CancelExecution();
+        iEnv->DeleteControlGroup( KAlfPerfAppSuiteControlGroup );
+        }	
+	}
+	    
+CAlfPerfAppSuiteTestCase::CAlfPerfAppSuiteTestCase( TInt aCaseId, TInt aSequenceIndex )
+	:CAlfPerfAppTestCase(aSequenceIndex), iCaseId( aCaseId )
+	{
+	
+	}
+		
+void CAlfPerfAppSuiteTestCase::ConstructL()
+	{
+	
+	}
+		
+void CAlfPerfAppSuiteTestCase::SetupL(
+		CAlfEnv& aEnv, 
+	    const TRect& /*aVisibleArea*/, 
+	    TRequestStatus& aStatus )
+	{
+    iEnv = &aEnv;
+    iStatus = &aStatus;
+    
+    // Set screen orientation
+    CAlfPerfAppAppUi* appUi = (CAlfPerfAppAppUi*) EikonEnv()->AppUi();
+    switch ( iCaseId )
+        {    
+        case EAlfPerfAppSuiteCaseScrollContinuousPortrait:
+        case EAlfPerfAppSuiteCaseScrollIncrementalPortrait:
+        	appUi->SetOrientationL( CAknAppUiBase::EAppUiOrientationPortrait );
+            break;
+            
+        case EAlfPerfAppSuiteCaseScrollContinuousLandscape:
+        case EAlfPerfAppSuiteCaseScrollIncrementalLandscape:
+        	appUi->SetOrientationL( CAknAppUiBase::EAppUiOrientationLandscape );
+            break;
+        
+        default:
+            User::Leave( KErrNotSupported );
+            break;
+        }       
+        
+    
+    // Create new fullscreen display
+    TRect rect;
+	AknLayoutUtils::LayoutMetricsRect( 
+	    AknLayoutUtils::EApplicationWindow, 
+	    rect );    
+    
+	iEnv->SetFullScreenDrawing( ETrue );
+	CAlfDisplay& display = 
+	    iEnv->NewDisplayL( rect, CAlfEnv::ENewDisplayFullScreen );
+    
+    display.SetClearBackgroundL( CAlfDisplay::EClearWithSkinBackground );
+
+    // Create control group
+    CAlfControlGroup& group = 
+        iEnv->NewControlGroupL( KAlfPerfAppSuiteControlGroup );
+
+    // Create testcase control
+    CAlfPerfAppSuiteTestCaseControl* control = NULL;
+    switch ( iCaseId )
+        {
+        case EAlfPerfAppSuiteCaseScrollContinuousPortrait:
+        case EAlfPerfAppSuiteCaseScrollIncrementalPortrait:
+        case EAlfPerfAppSuiteCaseScrollContinuousLandscape:
+        case EAlfPerfAppSuiteCaseScrollIncrementalLandscape:
+            control = new (ELeave) CAlfPerfAppSuiteTestCaseScroll(this);
+            break;
+        
+        default:
+            User::Leave( KErrNotSupported );
+            break;
+        }
+        
+    CleanupStack::PushL( control );
+    control->ConstructL( *iEnv, iCaseId, rect );
+    group.AppendL( control ); // ownership passed to control group.
+    iControl = control;
+    CleanupStack::Pop( control );    
+
+    // Ready for showing
+    display.Roster().ShowL( group );
+    
+    // ImagesLoaded() send the status completion.
+	}
+
+void CAlfPerfAppSuiteTestCase::ExecuteL( TRequestStatus& aStatus )
+	{
+    // SetupL must have been called first.
+    __ASSERT_ALWAYS( iEnv, User::Invariant() );
+    __ASSERT_ALWAYS( iControl, User::Invariant() );
+    
+    iControl->StartExecuteL( aStatus );
+	}
+
+void CAlfPerfAppSuiteTestCase::TearDown()
+	{
+    // Execution side will delete CAlfEnv, so it will delete everything
+    // related to this.
+    iEnv = NULL;
+    iControl = NULL;	
+    
+    // Return orientation back to normal
+    CAlfPerfAppAppUi* appUi = (CAlfPerfAppAppUi*) EikonEnv()->AppUi();
+    TRAP_IGNORE(appUi->SetOrientationL( CAknAppUiBase::EAppUiOrientationUnspecified ));    
+	}
+
+void CAlfPerfAppSuiteTestCase::ImagesLoaded( TInt aErrorCode )
+    {
+    if( iStatus )
+        {
+        CAlfPerfAppTestCase::CompleteNow( *iStatus, aErrorCode );
+        iStatus = 0;
+        }
+    }
+
+void CAlfPerfAppSuiteTestCase::HandleVisibleAreaChange( const TRect& aRect )
+	{
+    if ( iEnv && iControl )
+        {
+        if ( iEnv->DisplayCount() > 0 )
+            {
+            iEnv->PrimaryDisplay().SetVisibleArea( aRect );
+            }
+        iControl->SetVisibleArea( aRect );
+        }	
+	}
+
+TInt CAlfPerfAppSuiteTestCase::CaseID()
+    {
+        return iCaseId;
+    }
+
+TBool CAlfPerfAppSuiteTestCase::IsSupported( TInt aCaseId )
+	{
+    return aCaseId > EAlfPerfAppSuiteMin && 
+           aCaseId < EAlfPerfAppSuiteMax;	
+	}
+
+// end of file