uiacceltk/hitchcock/tsrc/alfperfapp/src/alfperfappsuitepeoplecontrol.cpp
changeset 0 15bf7259bb7c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiacceltk/hitchcock/tsrc/alfperfapp/src/alfperfappsuitepeoplecontrol.cpp	Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,307 @@
+/*
+* 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 <alf/AlfEnv.h>
+#include <alf/AlfTextureManager.h>
+#include <alf/AlfTextStyleManager.h>
+#include <alf/AlfTextStyle.h>
+#include <alf/AlfGridLayout.h>
+#include <alf/AlfImageVisual.h>
+#include <alf/AlfTextVisual.h>
+
+#include "AlfPerfAppSuitePeopleControl.h"
+#include "AlfPerfAppSuiteHelper.h"
+#include "AlfPerfAppSuiteTestCaseScroll.h"
+
+// MACROS
+#define KRgbSelectionBlue TRgb(0xE99517)
+
+// ============================= MEMBER FUNCTIONS ==============================
+
+CAlfPerfAppSuitePeopleControl::CAlfPerfAppSuitePeopleControl(CAlfPerfAppSuiteTestCaseScroll* aScrollControl)
+    :iScrollControl(aScrollControl)
+	{
+	}
+		
+CAlfPerfAppSuitePeopleControl::~CAlfPerfAppSuitePeopleControl()
+	{
+#ifdef ENABLE_TEXTSTYLES
+	CAlfTextStyleManager& styleManager = Env().TextStyleManager();
+	for( TInt i=0; i<iTextStyles.Count(); i++ )
+		{
+		styleManager.DeleteTextStyle( iTextStyles[i] );
+		}
+	iTextStyles.Close();
+#endif	
+	}
+		
+void CAlfPerfAppSuitePeopleControl::ConstructL( 
+	        CAlfEnv& aEnv, 
+	        const TSize& aVisibleArea,
+	        CAlfLayout* aParentLayout )
+	{
+	iLoadedImages = 0;
+	iVisibleArea = aVisibleArea;
+	
+	CAlfControl::ConstructL( aEnv );
+    
+#ifdef ENABLE_TEXTSTYLES
+	CreateTextStylesL();
+#endif
+
+	// Construct a base layout to add a background
+	CAlfLayout* baseLayout = CAlfLayout::AddNewL( *this, aParentLayout );
+	TAlfPerfAppSuiteHelper::AddGradientBrushL( baseLayout, KRgbBlack );
+  	TAlfPerfAppSuiteHelper::AddDropShadowBrushL( baseLayout, KRgbGray, 1 );
+	
+   	// Create a grid layout as a base
+  	CAlfGridLayout* gridLayout = CAlfGridLayout::AddNewL( *this, 1, 1, baseLayout );
+  	gridLayout->SetPadding( 4 );
+
+	// Add Header row
+    RArray<TInt> rowHeights;
+    rowHeights.Append( 100 );
+
+    // Images
+    _LIT( KImage1, "people.png" );
+    
+    CAlfTextureManager& textureManager = Env().TextureManager();
+	aEnv.TextureManager().AddLoadObserverL( this );
+    TAlfImage image( 
+    		textureManager.LoadTextureL(
+    		        KImage1,
+    				EAlfTextureFlagRetainResolution,
+    				KAlfAutoGeneratedTextureId ) );    	
+	ConstructListHeaderL( gridLayout, image, _L("People"), rowHeights[rowHeights.Count()-1] );
+
+    // Add list items
+    rowHeights.Append( 120 ); // 1
+    ConstructListItemL( gridLayout, _L("Top contacts"), _L("4 contacts"), rowHeights[rowHeights.Count()-1], ETrue );
+
+    rowHeights.Append( 100 ); // 2
+    ConstructListItemL( gridLayout, _L("All contacts"), _L("247 contacts"), rowHeights[rowHeights.Count()-1]  );
+
+    rowHeights.Append( 80 ); // 3
+    ConstructListItemL( gridLayout, _L("Communities"), _L("2 communities"), rowHeights[rowHeights.Count()-1] );
+    
+    rowHeights.Append( 80 ); // 4
+    ConstructListItemL( gridLayout, _L("Work"), _L("40 contacts"), rowHeights[rowHeights.Count()-1] );
+    
+    rowHeights.Append( 80 ); // 5
+    ConstructListItemL( gridLayout, _L("Friends"), _L("23 contacts"), rowHeights[rowHeights.Count()-1] );    
+    
+    rowHeights.Append( 80 ); // 6
+    ConstructListItemL( gridLayout, _L("Enemies"), _L("1 contact"), rowHeights[rowHeights.Count()-1] );
+    
+    rowHeights.Append( 80 ); // 7
+    ConstructListItemL( gridLayout, _L("Fans"), _L("2 contacts"), rowHeights[rowHeights.Count()-1] );
+    
+    rowHeights.Append( 80 ); // 8
+    ConstructListItemL( gridLayout, _L("Haters"), _L("1 contact"), rowHeights[rowHeights.Count()-1] );
+    
+    rowHeights.Append( 80 ); // 9
+    ConstructListItemL( gridLayout, _L("Lovers"), _L("2 contacts"), rowHeights[rowHeights.Count()-1] );
+    
+    rowHeights.Append( 80 ); // 10
+    ConstructListItemL( gridLayout, _L("The Others"), _L("31"), rowHeights[rowHeights.Count()-1] );      
+
+    // Apply rows
+    gridLayout->SetRows( rowHeights.Count() );
+    gridLayout->SetRowsL( rowHeights );
+
+    // Set grid size
+  	gridLayout->SetFlag( EAlfVisualFlagManualSize );
+  	TAlfRealSize size;
+  	size.iWidth = iVisibleArea.iWidth;
+  	for( TInt i=0; i<rowHeights.Count(); i++ )
+  		{
+  		size.iHeight += rowHeights[i];
+  		}
+  	gridLayout->SetSize( size, 0 );
+
+  	// Cleanup
+  	rowHeights.Close();
+	}
+
+#ifdef ENABLE_TEXTSTYLES
+void CAlfPerfAppSuitePeopleControl::CreateTextStylesL()
+	{
+	CAlfTextStyleManager& styleManager = Env().TextStyleManager();
+
+    // Create text styles
+    for( TInt i=0; i<ENumberOfTextStyles; i++ )
+    	{
+    	iTextStyles.Append( styleManager.CreatePlatformTextStyleL() );
+    	}
+
+    // NOTE: This will leak memory (S60 5.0 wk 20)
+    // styles are destroyed in TextStyleManager destructor but this is not enough...
+
+    CAlfTextStyle* style = NULL;
+    style = styleManager.TextStyle( iTextStyles[ETextStyleHeader] );
+    style->SetTextSizeInTwips( 180 );
+    
+    style = styleManager.TextStyle( iTextStyles[ETextStyleBig] );
+    style->SetTextSizeInTwips( 160 );
+
+    style = styleManager.TextStyle( iTextStyles[ETextStyleSmall] );
+    style->SetTextSizeInTwips( 110 );
+	}
+#endif
+
+const TInt KNumberOfImages = 1;
+// -----------------------------------------------------------------------------
+// Notify observers that all images have been loaded.
+// -----------------------------------------------------------------------------
+//
+void CAlfPerfAppSuitePeopleControl::TextureLoadingCompleted(
+        CAlfTexture& /*aTexture*/, TInt /*aTextureId*/, TInt aErrorCode)
+    {
+    // inform if there is any error
+    if( aErrorCode != KErrNone )
+        {
+        iScrollControl->ImagesLoaded( aErrorCode );
+        }
+    
+    iLoadedImages++;
+    if (iLoadedImages == KNumberOfImages)
+        {
+        iScrollControl->ImagesLoaded( KErrNone );
+        }
+    }
+
+CAlfGridLayout* CAlfPerfAppSuitePeopleControl::ConstructListItemLayoutL(
+		CAlfLayout* aParentLayout,
+		TInt aHeight,
+		TBool aSelected,
+		TBool aBorders )
+	{
+	// Define weights
+   	RArray<TInt> columnWeights;
+   	columnWeights.Append( 2 );
+   	columnWeights.Append( 8 );
+
+   	// Create a grid layout as a base
+  	CAlfGridLayout* gridLayout = CAlfGridLayout::AddNewL(
+  			*this, columnWeights.Count(), 1, aParentLayout );
+	gridLayout->SetColumnsL( columnWeights );
+	columnWeights.Close();
+
+
+	// Set gradient brush if selected
+    if( aSelected )
+    	{
+    	TAlfPerfAppSuiteHelper::AddGradientBrushL( gridLayout, KRgbSelectionBlue );
+    	}
+
+    // Set borders
+    if( aBorders )
+    	{
+    	TAlfPerfAppSuiteHelper::AddBorderBrushL( gridLayout, KRgbDarkGray, 0, 2 );
+    	}
+        
+    // Define the size manually
+  	gridLayout->SetFlag( EAlfVisualFlagManualSize );
+  	TAlfRealSize size;
+  	size.iWidth = iVisibleArea.iWidth;
+  	size.iHeight = aHeight;
+  	gridLayout->SetSize( size, 0 );
+
+	return gridLayout;
+	}
+
+CAlfGridLayout* CAlfPerfAppSuitePeopleControl::ConstructListItemTextLayoutL(
+		CAlfLayout* aParentLayout )
+	{
+	// Define weights
+   	RArray<TInt> rowWeights;
+   	rowWeights.Append( 1 );
+   	rowWeights.Append( 1 );
+
+   	// Create a grid layout as a base
+  	CAlfGridLayout* gridLayout = CAlfGridLayout::AddNewL(
+  			*this, 1, rowWeights.Count(), aParentLayout );
+	gridLayout->SetRowsL( rowWeights );
+	rowWeights.Close();
+
+	return gridLayout;
+	}
+
+void CAlfPerfAppSuitePeopleControl::ConstructListHeaderL(
+		CAlfLayout* aParentLayout,
+		const TAlfImage& aImage,
+		const TDesC& aText,
+		TInt aHeight )
+	{
+	// Create list item layout
+    CAlfGridLayout* listItemLayout = 
+    	ConstructListItemLayoutL( aParentLayout, aHeight, EFalse, EFalse );
+
+    // Add image visual to first cell of list item layout
+    CAlfImageVisual* imageVisual = CAlfImageVisual::AddNewL( *this, listItemLayout );
+    imageVisual->SetImage( aImage );
+    imageVisual->SetScaleMode( CAlfImageVisual::EScaleFitInside );
+
+    // Add text visual to second
+    CAlfTextVisual* textVisual = CAlfTextVisual::AddNewL( *this, listItemLayout );
+    textVisual->SetTextL( aText );
+    textVisual->SetAlign( EAlfAlignHLeft, EAlfAlignVCenter );
+#ifdef ENABLE_TEXTSTYLES
+    textVisual->SetTextStyle( iTextStyles[ETextStyleHeader] );
+#endif
+    textVisual->SetColor( KRgbWhite );
+	}
+
+void CAlfPerfAppSuitePeopleControl::ConstructListItemL(
+		CAlfLayout* aParentLayout,
+		const TDesC& aName,
+		const TDesC& aDescription,
+		TInt aHeight,
+		TBool aSelected )
+	{
+	// Create list item layout
+    CAlfGridLayout* listItemLayout =
+    	ConstructListItemLayoutL( aParentLayout, aHeight, aSelected );
+
+    // Add blank placeholder to first cell
+    AppendVisualL( EAlfVisualTypeVisual, listItemLayout ); 
+
+    // Create a new layout for text
+    CAlfGridLayout* textLayout = ConstructListItemTextLayoutL( listItemLayout );
+
+    // Add name visual to text layout
+    CAlfTextVisual* nameVisual = CAlfTextVisual::AddNewL( *this, textLayout );
+    nameVisual->SetTextL( aName );
+    nameVisual->SetAlign( EAlfAlignHLeft, EAlfAlignVBottom );
+#ifdef ENABLE_TEXTSTYLES
+    nameVisual->SetTextStyle( iTextStyles[ETextStyleBig] );
+#endif
+    nameVisual->SetColor( KRgbWhite );
+
+    // Add description to text layout
+    CAlfTextVisual* descriptionVisual = CAlfTextVisual::AddNewL( *this, textLayout );
+    descriptionVisual->SetTextL( aDescription );
+    descriptionVisual->SetAlign( EAlfAlignHLeft, EAlfAlignVTop );
+#ifdef ENABLE_TEXTSTYLES
+    descriptionVisual->SetTextStyle( iTextStyles[ETextStyleSmall] );
+#endif
+    descriptionVisual->SetColor( KRgbGray );
+	}
+
+// end of file