diff -r 4ea6f81c838a -r 0e9bb658ef58 mulwidgets/mulcoverflowwidget/src/mulcovertemplate4.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mulwidgets/mulcoverflowwidget/src/mulcovertemplate4.cpp Wed Sep 01 12:23:18 2010 +0100 @@ -0,0 +1,340 @@ +/* +* Copyright (c) 2007-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: Description of various grid templates + * +*/ + + +#include "mulcoverflowtemplate.h" + +#include + +#include +#include +#include "mulassert.h" + +namespace Alf + { + +// --------------------------------------------------------------------------- +// MulCoverLogicalTemplate4 +// --------------------------------------------------------------------------- +// +MulCoverFlowTemplate4::MulCoverFlowTemplate4(MulCoverFlowControl &aControl, + MulBaseElement &aBaseElement):MulCoverFlowTemplate(aControl, aBaseElement) + { + + } + +// --------------------------------------------------------------------------- +// ~MulCoverLogicalTemplate4 +// --------------------------------------------------------------------------- +// +MulCoverFlowTemplate4::~MulCoverFlowTemplate4() + { + + } + + +// --------------------------------------------------------------------------- +// GetIconSize +// --------------------------------------------------------------------------- +// +void MulCoverFlowTemplate4::GetIconSize(mulvisualitem::TVisualAttribute aAttribute,bool aIslandscape, int& aHeight, int& aWidth) + { + int appMainPaneVerityId; + int coverFlowPaneVarietyId; + int imagePaneVerityId ; + int videoIndVerityId ; + if (aIslandscape) + { + appMainPaneVerityId = 7; + coverFlowPaneVarietyId = 1; + imagePaneVerityId = 6; + videoIndVerityId = 0; + } + else + { + appMainPaneVerityId = 7; + coverFlowPaneVarietyId = 1; + imagePaneVerityId = 6; + videoIndVerityId = 0; + } + + // Get the size of the appwindow + TAknWindowLineLayout appMainLayout = + AknLayoutScalable_UiAccel::main_pane(appMainPaneVerityId).LayoutLine(); + TAknLayoutRect appMainRect; + appMainRect.LayoutRect( AlfUtil::ScreenSize(), appMainLayout ); + TSize appMainSize(appMainRect.Rect().Size()); + + // Get the size of the coverflow main window + TAknWindowLineLayout mainLayout = + AknLayoutScalable_UiAccel::main_aa_coverflow_pane(coverFlowPaneVarietyId).LayoutLine(); + TAknLayoutRect mainRect; + mainRect.LayoutRect( AlfUtil::ScreenSize(), mainLayout ); + TSize mainSize(mainRect.Rect().Size()); + + switch(aAttribute) + { + case mulvisualitem::KMulIcon1: + { + TAknWindowLineLayout centerLayout = + AknLayoutScalable_UiAccel::aacf_image_pane(imagePaneVerityId).LayoutLine(); + TAknLayoutRect centerRect; + centerRect.LayoutRect( TSize(mainSize), centerLayout ); + aHeight = centerRect.Rect().Size().iHeight; + aWidth = centerRect.Rect().Size().iWidth; + break; + } + case mulvisualitem::KMulIndicator2: + { + TAknWindowLineLayout centerLayout = + AknLayoutScalable_UiAccel::main_aa_video_pane_g1(videoIndVerityId).LayoutLine(); + TAknLayoutRect centerRect; + centerRect.LayoutRect( TSize(mainSize), centerLayout ); + aHeight = centerRect.Rect().Size().iHeight; + aWidth = centerRect.Rect().Size().iWidth; + break; + } + default: + { + // invalid attribute + // raise exception. + __MUL_ASSERT(false,KInvalidAttribute); + + break; + } + } + } + + +// --------------------------------------------------------------------------- +// CreateVisualisation +// --------------------------------------------------------------------------- +// +void MulCoverFlowTemplate4::CreateVisualisation(bool aIsLandscape,bool aIsOrientationChange) + { + // set the default attribue of the template + // irrespective of the orientation + mData->mSliderEnabled = false; + mData->mUiOnOffFlag = true; + mData->mMaxVisibleCount = 1; + mData->mEnhancedSupportFlag = true; + + // store the default attribute in base element + mData->mBaseElement->SetFitMode(true); + mData->mBaseElement->StoreTextVisibility( false ); + + // get the main text layout + CAlfLayout& textLayout = mData->mBaseElement->TextLayout(); + textLayout.SetOpacity(0); + + mData->mOrientationChange = aIsOrientationChange; + if (aIsLandscape) + { + // create visualisation for landscape + CreateLscStructure(); + } + else + { + // create visualisation for potrait + CreatePrtStructure(); + } + mData->mOrientationChange = false; + } + + +// --------------------------------------------------------------------------- +// CreatePrtStructure +// --------------------------------------------------------------------------- +// +void MulCoverFlowTemplate4::CreatePrtStructure() + { + // list of all component lct verity id. + int mainPaneVerityId = 1; + int imagePaneVerityId = 6; + int videoPaneVerityId = 0; + int counterPaneVerityId = 3; + + CAlfVisual* main = mData->mBaseElement->findVisual(KMainLayoutIndex); + CAlfLayout* parentLayout = main->Layout(); + TSize mainSize = parentLayout->Size().Target().AsSize(); + + // get for main layout + TAknWindowLineLayout componentLayout = + AknLayoutScalable_UiAccel::main_aa_coverflow_pane(mainPaneVerityId).LayoutLine(); + TRect mainRect = IconWindowRect(componentLayout, mainSize); + main->SetPos(TAlfRealPoint(0,0)); + main->SetSize(mainRect.Size()); + + + // for deck layout + CAlfDeckLayout& deckLayout = static_cast( + static_cast(main)->Visual(KMainLayoutIndex) ); + deckLayout.SetSize(mainRect.Size(),0); + + // if set background with some skin id is called before calling set model + // then the visual and texture would be created with 0,0 sizes + // hence we need to resize them + CAlfVisual* backgroundVisual = deckLayout.FindTag(backgroundvisual); + if(backgroundVisual) + { + backgroundVisual->SetSize(mainRect.Size(),0); + } + + // for center item + componentLayout = + AknLayoutScalable_UiAccel::aacf_image_pane(imagePaneVerityId).LayoutLine(); + TRect centerRect = IconWindowRect(componentLayout,mainRect); + + TMulCoverFlowItem highlightItem(centerRect.iTl.iX, + centerRect.iTl.iY,centerRect.Size().iWidth,centerRect.Size().iHeight); + + // apply attribute + mData->mBaseElement->StoreVisualDimensions(highlightItem,highlightItem,mData->mMaxVisibleCount ); + + + + // for indicator icon + componentLayout = + AknLayoutScalable_UiAccel::main_aa_video_pane_g1(videoPaneVerityId).LayoutLine(); + TRect indRect = IconWindowRect(componentLayout,mainRect); + TSize indSize(indRect.Size()); + mData->mIndicatorDimensions.height = indSize.iHeight; + mData->mIndicatorDimensions.width = indSize.iWidth; + mData->mIndicatorDimensions.posx = indRect.iTl.iX; + mData->mIndicatorDimensions.posy = indRect.iTl.iY; + + // crete counter + ApplyCounterAttribute(counterPaneVerityId,mainRect); + } + +// --------------------------------------------------------------------------- +// CreateLscStructure +// --------------------------------------------------------------------------- +// +void MulCoverFlowTemplate4::CreateLscStructure() + { + // list of all component lct verity id. + int mainPaneVerityId = 1; + int imagePaneVerityId = 6; + int videoPaneVerityId = 0; + int counterPaneVerityId = 8; + + CAlfVisual* main = mData->mBaseElement->findVisual(KMainLayoutIndex); + CAlfLayout* prntLay = main->Layout(); + TSize main_size = prntLay->Size().Target().AsSize(); + TAknWindowLineLayout componentLayout; + + // get for main layout + componentLayout = + AknLayoutScalable_UiAccel::main_aa_coverflow_pane(mainPaneVerityId).LayoutLine(); + TRect mainRect = IconWindowRect(componentLayout, main_size); + main->SetPos(TAlfRealPoint(0,0)); + main->SetSize(mainRect.Size()); + + // for deck layout + CAlfDeckLayout& deckLayout = static_cast( + static_cast(main)->Visual(KMainLayoutIndex) ); + deckLayout.SetSize(mainRect.Size(),0); + + // if set background with some skin id is called before calling set model + // then the visual and texture would be created with 0,0 sizes + // hence we need to resize them + CAlfVisual* backgroundVisual = deckLayout.FindTag(backgroundvisual); + if(backgroundVisual) + { + backgroundVisual->SetSize(mainRect.Size(),0); + } + + // for center item + + componentLayout = + AknLayoutScalable_UiAccel::aacf_image_pane(imagePaneVerityId).LayoutLine(); + TRect centerRect = IconWindowRect(componentLayout,mainRect); + + TMulCoverFlowItem highlightItem(centerRect.iTl.iX, + centerRect.iTl.iY,centerRect.Size().iWidth,centerRect.Size().iHeight); + + // apply attribute + mData->mBaseElement->StoreVisualDimensions(highlightItem,highlightItem,mData->mMaxVisibleCount ); + + + // for indicator icon + componentLayout = + AknLayoutScalable_UiAccel::main_aa_video_pane_g1(videoPaneVerityId).LayoutLine(); + TRect indRect = IconWindowRect(componentLayout,mainRect); + TSize indSize(indRect.Size()); + mData->mIndicatorDimensions.height = indSize.iHeight; + mData->mIndicatorDimensions.width = indSize.iWidth; + mData->mIndicatorDimensions.posx = indRect.iTl.iX; + mData->mIndicatorDimensions.posy = indRect.iTl.iY; + + // crete counter + ApplyCounterAttribute(counterPaneVerityId,mainRect); + } + +// --------------------------------------------------------------------------- +// ApplyCounterAttribute +// --------------------------------------------------------------------------- +// +void MulCoverFlowTemplate4::ApplyCounterAttribute(int acounterPaneVerityId,const TRect& aMainRect) + { + mData->mUiOnOffFlag = true; + TAknTextLineLayout counterComponentLayout = + AknLayoutScalable_UiAccel::main_aa_coverflow_pane_t1(acounterPaneVerityId).LayoutLine(); + + TRect counterRect = TextWindowRect(counterComponentLayout, aMainRect); + TSize counterSize(counterRect.Size()); + mData->mCounterDimensions.posx = counterRect.iTl.iX; + mData->mCounterDimensions.posy = counterRect.iTl.iY; + mData->mCounterDimensions.width = counterSize.iWidth; + mData->mCounterDimensions.height = counterSize.iHeight; + + // Create a Counter visual if it is not Created. + CAlfTextVisual& counterVisual = mData->mBaseElement->CounterVisual(); + + // Set Properties to Counter Visual if we are creating. + // no need to apply attribute for orientation change + // as all are same. + if(!mData->mOrientationChange) + { + //get font Id for counter + int fontId = counterComponentLayout.FontId(); + int counterFontId = 0x000000FF & fontId; + // apply default brush color to the counter background + ApplyBrush(counterVisual,KRgbBlack,0.5); + // apply default attribute + counterVisual.SetAlign(EAlfAlignHCenter,EAlfAlignVCenter); + SetTextStyle(counterFontId, counterVisual); + + // check if user has set some different attribute. + TMulVisualColorProperty counterColor = mData->mBaseElement->TextColor(ECounterVisual); + if (counterColor.mIsColorSet) + { + // apply the color set by the application + counterVisual.SetColor(counterColor.mColor); + } + else + { + // apply the default color + counterVisual.SetColor(KRgbWhite); + } + mData->mCounterFontMaxCharLength = UpdateMaxFontWidth(&counterVisual); + } + + } + + }//namespace ends