diff -r 000000000000 -r 15bf7259bb7c exampleapps/alfexstickers/src/alfexstickerlayout.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/exampleapps/alfexstickers/src/alfexstickerlayout.cpp Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,226 @@ +/* +* 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: +* +*/ + +#include +#include +#include +#include +#include + + +//Events +#include + +//Layouts +#include + +//Visuals +#include + +//Brushes +#include +#include +#include +#include +#include + +//Own +#include "alfexstickerlayout.h" +#include "alfexstickerscontrol.h" +#include + +//TEMP +#include + +//Literals + + +//Constants +const TInt KXCoordinate = 30; +const TInt KYCoordinate = 30; + + +//Factory functions are not currently used +CAlfExStickerLayout* CAlfExStickerLayout::NewL(CAlfExStickersControl& aControl, CAlfEnv& aEnv) + { + CAlfExStickerLayout* self = new (ELeave) CAlfExStickerLayout; + CleanupStack::PushL(self); + self->ConstructL(aControl, aEnv); + CleanupStack::Pop(); + return self; + } + + +CAlfExStickerLayout::CAlfExStickerLayout() + { + } + + +void CAlfExStickerLayout::ConstructL(CAlfExStickersControl& aControl, CAlfEnv& aEnv) + { + iControl = &aControl; + iEnv = &aEnv; + } + + +CAlfExStickerLayout::~CAlfExStickerLayout() + { + } + + +void CAlfExStickerLayout::SetStickerPlaceL(CAlfExStickersControl* aControl) + { + // Create TAlfRealRect which contains TextVisual placement (KXCoordinate, KYCoordinate) + // and TextVisual size (KStickerWidth, KStickerHeight). + TAlfRealRect rect(TRect(TPoint(KXCoordinate, KYCoordinate), TSize(KStickerWidth, KStickerHeight))); + + //Use SetRect function to set the afore mentioned placement and size + SetRect(rect); + + //Get parent control + CAlfControl* control = aControl->GetControl(); + + //Add new text visual into the deck layout + iTextVisual = CAlfTextVisual::AddNewL(*control, this); + + //Set the text visual to fill the same space as the deck layout + iTextVisual->SetRect(TAlfRealRect(TRect(TPoint(0, 0), TSize(KStickerWidth, KStickerHeight)))); + + //Set sticker size to small + iStickerIsLarge = ETrue; + } + + +void CAlfExStickerLayout::SetStickerTextContentL() + { + //Function is used to set text inside the text visual and to format it + //Set example text to sticker + iTextVisual->SetTextL(*StringLoader::LoadLC(R_ALFEXSTICKERS_DEFAULT_TEXT)); + CleanupStack::PopAndDestroy(1); + + //Set text to wrap so that the lines are broken to the visual's content area. + iTextVisual->SetWrapping(CAlfTextVisual::ELineWrapBreak); + + //Set text color to black + iTextVisual->SetColor(KRgbBlack); + + //Set line spacing + iTextVisual->EnableShadow(EFalse); + + //Set predefined style for the text + iTextVisual->SetTextStyle( EAlfTextStyleSmall ); + + //Align the text content to visuals center, in both axis + iTextVisual->SetAlign(EAlfAlignHCenter, EAlfAlignVCenter); + + //Add padding between text and visual border, 10 pixels to every side + iTextVisual->SetPadding(TAlfBoxMetric(10, 10, 10, 10)); + } + + +void CAlfExStickerLayout::SetStickerDropShadowBrushL() + { + //First we must enable brushes + //NOTE: Before adding brushes to visual, EnableBrushesL() needs to be invoked or the application crashes + EnableBrushesL(); + + //Create Drop Shadow Brush, second parameter is the shadow size in pixels + CAlfDropShadowBrush* dropBrush = CAlfDropShadowBrush::NewLC(Env(), 5); + + //Append the brush to the visual + Brushes()->AppendL(dropBrush, EAlfHasOwnership); + + CleanupStack::Pop(1, dropBrush); + } + + +void CAlfExStickerLayout::SetStickerImageBrushL(CAlfTexture& aTexture) + { + //NOTE: Before adding brushes to visual, EnableBrushesL() needs to be invoked or the application crashes + + //Create image brush using the texture from loaded above + CAlfImageBrush* imageBrush = CAlfImageBrush::NewLC(Env(), TAlfImage(aTexture)); + + //Set the image brush to background layer + imageBrush->SetLayer(EAlfBrushLayerBackground); + + //Append the brush to the visual + Brushes()->AppendL(imageBrush, EAlfHasOwnership); + + CleanupStack::Pop(1, imageBrush); + } + + +CAlfVisual* CAlfExStickerLayout::GetVisual() { + { + //Function return the text visual for the control, needed in event handling + return iTextVisual; + } +} + + +void CAlfExStickerLayout::ChangeStickerSizeL() + { + //Transformations need to be enabled or else the application crashes on scaling + iTextVisual->EnableTransformationL(); + + if (iStickerIsLarge) + { + //Timed values for scaling + TAlfTimedValue x; + TAlfTimedValue y; + + //Set starting state scale + x.SetValueNow(1.0); + y.SetValueNow(1.0); + + //Set scale target, halve the size and do it in 1000ms + x.SetTarget(0.5, 1000); + y.SetTarget(0.5, 1000); + + //Resize the deck + SetSize(TAlfRealSize(150, 150), 1000); + + //Scale the text visual + iTextVisual->Transformation().Scale(x, y); + + iStickerIsLarge = EFalse; + } + else if (!iStickerIsLarge) + { + //Timed values for scaling + TAlfTimedValue x; + TAlfTimedValue y; + + //Set starting state scale + x.SetValueNow(1.0); + y.SetValueNow(1.0); + + //Set scale target, double the size and do it in 1000ms + x.SetTarget(2.0, 1000); + y.SetTarget(2.0, 1000); + + //Scale the text visual + iTextVisual->Transformation().Scale(x, y); + + //Resize the deck + SetSize(TAlfRealSize(300, 300), 1000); + + iStickerIsLarge = ETrue; + } + } +