diff -r 000000000000 -r 15bf7259bb7c uiacceltk/hitchcock/tsrc/alfperfapp/src/alfperfappsuiteepgcontrol.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiacceltk/hitchcock/tsrc/alfperfapp/src/alfperfappsuiteepgcontrol.cpp Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,488 @@ +/* +* 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 "AlfPerfAppSuiteEPGControl.h" +#include "AlfPerfAppSuiteHelper.h" +#include "AlfPerfAppSuiteTestCaseScroll.h" + +// ============================= MEMBER FUNCTIONS ============================== + +TInt DurationInMinutes( TTime aStart, TTime aEnd ) + { + TTimeIntervalMinutes duration; + aEnd.MinutesFrom( aStart, duration ); + return duration.Int(); + } + +TProgram::TProgram() + { + iName.Zero(); + } + +TProgram::TProgram( const TDesC& aName, const TDesC& aStart, const TDesC& aEnd ) + :iName( aName ), + iStart( aStart ), + iEnd( aEnd ) + { + } + +TInt TProgram::DurationInMinutes() + { + return ::DurationInMinutes( iStart, iEnd ); + } + +CAlfPerfAppSuiteEPGControl::CAlfPerfAppSuiteEPGControl(CAlfPerfAppSuiteTestCaseScroll* aScrollControl) + : iScrollControl(aScrollControl) + { + + } + +CAlfPerfAppSuiteEPGControl::~CAlfPerfAppSuiteEPGControl() + { +#ifdef ENABLE_TEXTSTYLES + CAlfTextStyleManager& styleManager = Env().TextStyleManager(); + for( TInt i=0; iSetPadding( 10 ); + + // Get texture manager + CAlfTextureManager& textureManager = Env().TextureManager(); + + // Add heading row + CAlfTextVisual* headingTextVisual = CAlfTextVisual::AddNewL( *this, gridLayout ); + headingTextVisual->SetTextL( _L("Tuubi EPG") ); +#ifdef ENABLE_TEXTSTYLES + headingTextVisual->SetTextStyle( iTextStyles[ETextStyleTitle] ); + headingTextVisual->SetColor( KRgbWhite ); +#endif + RArray rowHeights; + rowHeights.Append( 50 ); + + // Define time window to show + TTime start( _L("181500.") ); + TTime end( _L("201500.") ); + + // HEADER + RArray programs; + // NOTE: Programs must start and end at the same time for them to be correctly + // aligned on screen. Our total time window here is 24*60 min. + programs.Append( TProgram( _L("---"), _L("000000."), _L("174500.") ) ); + programs.Append( TProgram( _L("18:00"), _L("174500."), _L("181500.") ) ); + programs.Append( TProgram( _L("18:30"), _L("181500."), _L("184500.") ) ); + programs.Append( TProgram( _L("19:00"), _L("184500."), _L("191500.") ) ); + programs.Append( TProgram( _L("19:30"), _L("191500."), _L("194500.") ) ); + programs.Append( TProgram( _L("20:00"), _L("194500."), _L("201500.") ) ); + programs.Append( TProgram( _L("20:30"), _L("201500."), _L("204500.") ) ); + programs.Append( TProgram( _L("21:00"), _L("204500."), _L("211500.") ) ); + programs.Append( TProgram( _L("---"), _L("211500."), _L("235959.") ) ); + TAlfImage empty; + TInt textStyle = 0; +#ifdef ENABLE_TEXTSTYLES + textStyle = iTextStyles[ETextStyleTime]; +#endif + AddRowL( gridLayout, empty, programs, start, end, textStyle, EFalse ); + programs.Reset(); + rowHeights.Append( 50 ); + + + aEnv.TextureManager().AddLoadObserverL( this ); + + _LIT( KImage1, "mtv3.png" ); + _LIT( KImage2, "nelonen.png" ); + _LIT( KImage3, "jim.png" ); + _LIT( KImage4, "mtv3_scifi.png" ); + _LIT( KImage5, "discoveryhd.png" ); + _LIT( KImage6, "nationalgeographic.jpg" ); + + // MTV3 + TAlfImage mtv3Image( + textureManager.LoadTextureL( + KImage1, + EAlfTextureFlagRetainResolution, + KAlfAutoGeneratedTextureId ) ); + + programs.Append( TProgram( _L("TV-chät"), + _L("000000."), _L("180000.") ) ); + programs.Append( TProgram( _L("Emmerdale"), + _L("180000."), _L("183000.") ) ); + programs.Append( TProgram( _L("T.i.l.a."), + _L("183000."), _L("190000.") ) ); + programs.Append( TProgram( _L("Seitsemän Uutiset"), + _L("190000."), _L("191500.") ) ); + programs.Append( TProgram( _L("Kauppalehden talousuutiset"), + _L("191500."), _L("192500.") ) ); + programs.Append( TProgram( _L("Päivän sää"), + _L("192500."), _L("193000.") ) ); + programs.Append( TProgram( _L("Salatut elämät"), + _L("193000."), _L("200000.") ) ); + programs.Append( TProgram( _L("45min Special: Kuninkaalliset kulissien takana"), + _L("200000."), _L("210000.") ) ); + programs.Append( TProgram( _L("TV-chät"), + _L("210000."), _L("235959.") ) ); +#ifdef ENABLE_TEXTSTYLES + textStyle = iTextStyles[ETextStyleProgram]; +#endif + AddRowL( gridLayout, mtv3Image, programs, start, end, textStyle ); + programs.Reset(); + rowHeights.Append( 100 ); + + // NELONEN + TAlfImage nelonenImage( + textureManager.LoadTextureL( + KImage2, + EAlfTextureFlagRetainResolution, + KAlfAutoGeneratedTextureId ) ); + + programs.Append( TProgram( _L("TV-chät"), + _L("000000."), _L("180000.") ) ); + programs.Append( TProgram( _L("Leijonamies"), + _L("180000."), _L("183000.") ) ); + programs.Append( TProgram( _L("Tanssi, jos osaat!"), + _L("183000."), _L("193000.") ) ); + programs.Append( TProgram( _L("Nelosen uutiset"), + _L("193000."), _L("194500.") ) ); + programs.Append( TProgram( _L("Nelosen sää"), + _L("194500."), _L("195000.") ) ); + programs.Append( TProgram( _L("IS Urheilu-uutiset"), + _L("195000."), _L("195500.") ) ); + programs.Append( TProgram( _L("B-Studio"), + _L("195500."), _L("200000.") ) ); + programs.Append( TProgram( _L("Unelmien poikamies - upseeri ja herrasmies"), + _L("200000."), _L("210000.") ) ); + programs.Append( TProgram( _L("TV-chät"), + _L("210000."), _L("235959.") ) ); +#ifdef ENABLE_TEXTSTYLES + textStyle = iTextStyles[ETextStyleProgram]; +#endif + AddRowL( gridLayout, nelonenImage, programs, start, end, textStyle ); + programs.Reset(); + rowHeights.Append( 100 ); + + // JIM + TAlfImage jimImage( + textureManager.LoadTextureL( + KImage3, + EAlfTextureFlagRetainResolution, + KAlfAutoGeneratedTextureId ) ); + programs.Append( TProgram( _L("TV-chät"), + _L("000000."), _L("180000.") ) ); + programs.Append( TProgram( _L("Hyvää ruokahalua"), + _L("180000."), _L("183000.") ) ); + programs.Append( TProgram( _L("Kiinteistökauppaa maailmalla"), + _L("183000."), _L("190000.") ) ); + programs.Append( TProgram( _L("Autoklassikot"), + _L("190000."), _L("193000.") ) ); + programs.Append( TProgram( _L("Huvila & Huussi Extra"), + _L("193000."), _L("200000.") ) ); + programs.Append( TProgram( _L("Fifth Gear"), + _L("200000."), _L("203000.") ) ); + programs.Append( TProgram( _L("Fifth Gear"), + _L("203000."), _L("210000.") ) ); + programs.Append( TProgram( _L("TV-chät"), + _L("210000."), _L("235959.") ) ); +#ifdef ENABLE_TEXTSTYLES + textStyle = iTextStyles[ETextStyleProgram]; +#endif + AddRowL( gridLayout, jimImage, programs, start, end, textStyle ); + programs.Reset(); + rowHeights.Append( 100 ); + + // MTV3 scifi + TAlfImage mtv3scifiImage( + textureManager.LoadTextureL( + KImage4, + EAlfTextureFlagRetainResolution, + KAlfAutoGeneratedTextureId ) ); + programs.Append( TProgram( _L("TV-chät"), + _L("000000."), _L("180500.") ) ); + programs.Append( TProgram( _L("Doctor Who"), + _L("180500."), _L("183000.") ) ); + programs.Append( TProgram( _L("Doctor Who"), + _L("183000."), _L("185500.") ) ); + programs.Append( TProgram( _L("Andromeda"), + _L("185500."), _L("194000.") ) ); + programs.Append( TProgram( _L("Babylon 5"), + _L("194000.."), _L("202500.") ) ); + programs.Append( TProgram( _L("Star Trek: Deep Space Nine"), + _L("202500."), _L("211000.") ) ); + programs.Append( TProgram( _L("TV-chät"), + _L("211000."), _L("235959.") ) ); +#ifdef ENABLE_TEXTSTYLES + textStyle = iTextStyles[ETextStyleProgram]; +#endif + AddRowL( gridLayout, mtv3scifiImage, programs, start, end, textStyle ); + programs.Reset(); + rowHeights.Append( 100 ); + + // DISCOVERY HD + TAlfImage discoveryChannelImage( + textureManager.LoadTextureL( + KImage5, + EAlfTextureFlagRetainResolution, + KAlfAutoGeneratedTextureId ) ); + programs.Append( TProgram( _L("TV-chät"), + _L("000000."), _L("180000.") ) ); + programs.Append( TProgram( _L("Tuunaajat"), + _L("180000."), _L("190000.") ) ); + programs.Append( TProgram( _L("Valmistuksen salat"), + _L("190000."), _L("193000.") ) ); + programs.Append( TProgram( _L("Valmistuksen salat"), + _L("193000."), _L("200000.") ) ); + programs.Append( TProgram( _L("Myytinmurtajat"), + _L("200000.."), _L("210000.") ) ); + programs.Append( TProgram( _L("TV-chät"), + _L("210000."), _L("235959.") ) ); +#ifdef ENABLE_TEXTSTYLES + textStyle = iTextStyles[ETextStyleProgram]; +#endif + AddRowL( gridLayout, discoveryChannelImage, programs, start, end, textStyle ); + programs.Reset(); + rowHeights.Append( 100 ); + + // NATIONAL GEOGRAPHIC + TAlfImage nationalgeographicImage( + textureManager.LoadTextureL( + KImage6, + EAlfTextureFlagRetainResolution, + KAlfAutoGeneratedTextureId ) ); + programs.Append( TProgram( _L("TV-chät"), + _L("000000."), _L("180000.") ) ); + programs.Append( TProgram( _L("Nat Geo Junior: the Snake Wranglers: Snake Saviour"), + _L("180000."), _L("183000.") ) ); + programs.Append( TProgram( _L("Nat Geo Junior: Get Outta Town: Washington Dc"), + _L("183000."), _L("190000.") ) ); + programs.Append( TProgram( _L("Premiere: Ape Genius"), + _L("190000."), _L("200000.") ) ); + programs.Append( TProgram( _L("Great Wall of China: Protecting the Dragon"), + _L("200000.."), _L("210000.") ) ); + programs.Append( TProgram( _L("TV-chät"), + _L("210000."), _L("235959.") ) ); +#ifdef ENABLE_TEXTSTYLES + textStyle = iTextStyles[ETextStyleProgram]; +#endif + AddRowL( gridLayout, nationalgeographicImage, programs, start, end, textStyle ); + programs.Reset(); + rowHeights.Append( 100 ); + + // 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; iSetSize( size, 0 ); + + // Cleanup + rowHeights.Close(); + programs.Close(); + } + +const TInt KNumberOfImages = 6; +// ----------------------------------------------------------------------------- +// Notify observers that all images have been loaded. +// ----------------------------------------------------------------------------- +// +void CAlfPerfAppSuiteEPGControl::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 ); + } + } + +#ifdef ENABLE_TEXTSTYLES +void CAlfPerfAppSuiteEPGControl::CreateTextStylesL() + { + CAlfTextStyleManager& styleManager = Env().TextStyleManager(); + + // Create text styles + for( TInt i=0; iSetTextSizeInTwips( 120 ); + + style = styleManager.TextStyle( iTextStyles[ETextStyleTime] ); + style->SetTextSizeInTwips( 100 ); + + style = styleManager.TextStyle( iTextStyles[ETextStyleProgram] ); + style->SetTextSizeInTwips( 80 ); + } +#endif + + +void CAlfPerfAppSuiteEPGControl::AddRowL( + CAlfLayout* aParentLayout, + TAlfImage& aChannelImage, + RArray& aPrograms, + const TTime& aTimeWindowStart, + const TTime& aTimeWindowEnd, + TInt aTextStyle, + TBool aSetBorders + ) + { + // Create grid layout + CAlfGridLayout* gridLayout = + CAlfGridLayout::AddNewL( *this, 1, 1, aParentLayout ); + + // Set borders + if( aSetBorders ) + { + TAlfPerfAppSuiteHelper::AddBorderBrushL( gridLayout, KRgbWhite ); + } + + // Add channel image + CAlfImageVisual* imageVisual = CAlfImageVisual::AddNewL( *this, gridLayout ); + imageVisual->SetImage( aChannelImage ); + imageVisual->SetScaleMode( CAlfImageVisual::EScaleFitInside ); + imageVisual->SetPadding( 2 ); + RArray columnWeights; + columnWeights.Append( 1 ); + + // Add programs + AddProgramsL( gridLayout, aPrograms, aTimeWindowStart, aTimeWindowEnd, aTextStyle, aSetBorders ); + columnWeights.Append( 9 ); + + // Apply columns + gridLayout->SetColumns( columnWeights.Count() ); + gridLayout->SetColumnsL( columnWeights ); + + // Cleanup + columnWeights.Close(); + } + +void CAlfPerfAppSuiteEPGControl::AddProgramsL( + CAlfLayout* aParentLayout, + RArray& aPrograms, + const TTime& aTimeWindowStart, + const TTime& aTimeWindowEnd, + TInt aTextStyle, + TBool aSetBorders + ) + { + + // Use viewport layout as a base layout + CAlfViewportLayout* viewPortLayout + = CAlfViewportLayout::AddNewL( *this, aParentLayout ); + + // Set borders + if( aSetBorders ) + { + TAlfPerfAppSuiteHelper::AddBorderBrushL( viewPortLayout, KRgbWhite ); + } + + // Virtual size is 1,1 which represents a 24*60 minute time window. + viewPortLayout->SetVirtualSize( TAlfRealSize(1.0f,1.0f), 0 ); + + // Calculate how much is visible by the time window. + TReal32 displayWindowSize = DurationInMinutes( aTimeWindowStart, aTimeWindowEnd ); + TReal32 maxWindowSize = 24*60; + TReal32 relelativeWindowSize = displayWindowSize / maxWindowSize; + viewPortLayout->SetViewportSize( TAlfRealSize( relelativeWindowSize, 1.0f ), 0 ); + + // Calculate the offset from beginning. + TReal32 displayWindowOffset = DurationInMinutes( aPrograms[0].iStart, aTimeWindowStart ); + TReal32 pos = displayWindowOffset / maxWindowSize; + viewPortLayout->SetViewportPos( TAlfRealPoint( pos, 0.0f ), 0 ); + + // Create grid layout + CAlfGridLayout* gridLayout = + CAlfGridLayout::AddNewL( *this, aPrograms.Count(), 1, viewPortLayout ); + + // Add the programs using the duration of the program as column weight. + RArray columnWeights; + for( TInt i=0; iSetTextL( aPrograms[i].iName ); +#ifdef ENABLE_TEXTSTYLES + textVisual->SetTextStyle( aTextStyle ); +#endif + textVisual->SetWrapping( CAlfTextVisual::ELineWrapBreak ); + if( aSetBorders ) + { + TAlfPerfAppSuiteHelper::AddBorderBrushL( textVisual, TRgb(0xdddddd) ); + } + columnWeights.Append( aPrograms[i].DurationInMinutes() ); + } + + // Set column weights + gridLayout->SetColumnsL( columnWeights ); + + // Cleanup + columnWeights.Close(); + }