exampleapps/alfexstickers/src/alfexstickerlayout.cpp
changeset 0 15bf7259bb7c
equal deleted inserted replaced
-1:000000000000 0:15bf7259bb7c
       
     1 /*
       
     2 * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:   
       
    15 *
       
    16 */
       
    17 
       
    18 #include <alf/alfenv.h> 
       
    19 #include <alf/alftexture.h>
       
    20 #include <StringLoader.h>
       
    21 #include <alf/alfroster.h>
       
    22 #include <alf/alftransformation.h>
       
    23 
       
    24 
       
    25 //Events
       
    26 #include <alf/alfevent.h>
       
    27 
       
    28 //Layouts
       
    29 #include <alf/alfdecklayout.h>
       
    30 
       
    31 //Visuals
       
    32 #include <alf/alftextvisual.h>
       
    33 
       
    34 //Brushes
       
    35 #include <alf/alfborderbrush.h>
       
    36 #include <alf/alfimagebrush.h>
       
    37 #include <alf/alfdropshadowbrush.h>
       
    38 #include <alf/alfbrush.h>
       
    39 #include <alf/alfbrusharray.h>
       
    40 	
       
    41 //Own
       
    42 #include "alfexstickerlayout.h"
       
    43 #include "alfexstickerscontrol.h"
       
    44 #include <alfexstickers.rsg>
       
    45 
       
    46 //TEMP
       
    47 #include <alf/alfcontrol.h>
       
    48 
       
    49 //Literals
       
    50 
       
    51 
       
    52 //Constants
       
    53 const TInt KXCoordinate = 30;
       
    54 const TInt KYCoordinate = 30;
       
    55 
       
    56 
       
    57 //Factory functions are not currently used
       
    58 CAlfExStickerLayout* CAlfExStickerLayout::NewL(CAlfExStickersControl& aControl, CAlfEnv& aEnv)
       
    59     {
       
    60     CAlfExStickerLayout* self = new (ELeave) CAlfExStickerLayout;
       
    61     CleanupStack::PushL(self);
       
    62     self->ConstructL(aControl, aEnv);
       
    63     CleanupStack::Pop();
       
    64     return self;
       
    65     }
       
    66 
       
    67 
       
    68 CAlfExStickerLayout::CAlfExStickerLayout()
       
    69     {
       
    70     }
       
    71 
       
    72 
       
    73 void CAlfExStickerLayout::ConstructL(CAlfExStickersControl& aControl, CAlfEnv& aEnv)
       
    74     {
       
    75     iControl = &aControl;
       
    76     iEnv = &aEnv;
       
    77     }
       
    78     
       
    79 
       
    80 CAlfExStickerLayout::~CAlfExStickerLayout()
       
    81     {
       
    82     }
       
    83     
       
    84 
       
    85 void CAlfExStickerLayout::SetStickerPlaceL(CAlfExStickersControl* aControl)
       
    86 	{
       
    87 	// Create TAlfRealRect which contains TextVisual placement (KXCoordinate, KYCoordinate)
       
    88 	// and TextVisual size (KStickerWidth, KStickerHeight).
       
    89     TAlfRealRect rect(TRect(TPoint(KXCoordinate, KYCoordinate), TSize(KStickerWidth, KStickerHeight)));
       
    90     
       
    91     //Use SetRect function to set the afore mentioned placement and size
       
    92     SetRect(rect);
       
    93     
       
    94     //Get parent control
       
    95     CAlfControl* control = aControl->GetControl();
       
    96     
       
    97     //Add new text visual into the deck layout
       
    98     iTextVisual = CAlfTextVisual::AddNewL(*control, this);
       
    99     
       
   100     //Set the text visual to fill the same space as the deck layout
       
   101     iTextVisual->SetRect(TAlfRealRect(TRect(TPoint(0, 0), TSize(KStickerWidth, KStickerHeight))));
       
   102     
       
   103     //Set sticker size to small
       
   104     iStickerIsLarge = ETrue;
       
   105 	}
       
   106 
       
   107 
       
   108 void CAlfExStickerLayout::SetStickerTextContentL()
       
   109 	{
       
   110 	//Function is used to set text inside the text visual and to format it
       
   111 	//Set example text to sticker
       
   112 	iTextVisual->SetTextL(*StringLoader::LoadLC(R_ALFEXSTICKERS_DEFAULT_TEXT));
       
   113     CleanupStack::PopAndDestroy(1);
       
   114     
       
   115 	//Set text to wrap so that the lines are broken to the visual's content area.
       
   116 	iTextVisual->SetWrapping(CAlfTextVisual::ELineWrapBreak);
       
   117 	
       
   118 	//Set text color to black
       
   119 	iTextVisual->SetColor(KRgbBlack);
       
   120 	
       
   121 	//Set line spacing
       
   122 	iTextVisual->EnableShadow(EFalse);
       
   123 	
       
   124 	//Set predefined style for the text
       
   125 	iTextVisual->SetTextStyle( EAlfTextStyleSmall );
       
   126 	
       
   127 	//Align the text content to visuals center, in both axis
       
   128 	iTextVisual->SetAlign(EAlfAlignHCenter, EAlfAlignVCenter);
       
   129 	
       
   130 	//Add padding between text and visual border, 10 pixels to every side
       
   131 	iTextVisual->SetPadding(TAlfBoxMetric(10, 10, 10, 10));
       
   132 	}
       
   133 
       
   134 
       
   135 void CAlfExStickerLayout::SetStickerDropShadowBrushL()
       
   136 	{
       
   137 	//First we must enable brushes
       
   138 	//NOTE: Before adding brushes to visual, EnableBrushesL() needs to be invoked or the application crashes
       
   139 	EnableBrushesL();	
       
   140 	
       
   141 	//Create Drop Shadow Brush, second parameter is the shadow size in pixels
       
   142 	CAlfDropShadowBrush* dropBrush = CAlfDropShadowBrush::NewLC(Env(), 5);
       
   143     
       
   144     //Append the brush to the visual
       
   145 	Brushes()->AppendL(dropBrush, EAlfHasOwnership);
       
   146     
       
   147     CleanupStack::Pop(1, dropBrush); 
       
   148 	}
       
   149 
       
   150 
       
   151 void CAlfExStickerLayout::SetStickerImageBrushL(CAlfTexture& aTexture)
       
   152 	{
       
   153 	//NOTE: Before adding brushes to visual, EnableBrushesL() needs to be invoked or the application crashes
       
   154 	
       
   155 	//Create image brush using the texture from loaded above
       
   156 	CAlfImageBrush* imageBrush = CAlfImageBrush::NewLC(Env(), TAlfImage(aTexture));
       
   157 	
       
   158     //Set the image brush to background layer
       
   159 	imageBrush->SetLayer(EAlfBrushLayerBackground);
       
   160 	
       
   161 	//Append the brush to the visual
       
   162 	Brushes()->AppendL(imageBrush, EAlfHasOwnership);
       
   163 	
       
   164 	CleanupStack::Pop(1, imageBrush);
       
   165 	}
       
   166 
       
   167 
       
   168 CAlfVisual* CAlfExStickerLayout::GetVisual() {
       
   169 	{
       
   170 	//Function return the text visual for the control, needed in event handling
       
   171 	return iTextVisual;
       
   172 	}
       
   173 }
       
   174 
       
   175 
       
   176 void CAlfExStickerLayout::ChangeStickerSizeL()
       
   177 	{
       
   178 	//Transformations need to be enabled or else the application crashes on scaling
       
   179 	iTextVisual->EnableTransformationL();
       
   180 	
       
   181 	if (iStickerIsLarge)
       
   182 		{
       
   183 	    //Timed values for scaling
       
   184 	    TAlfTimedValue x;
       
   185 		TAlfTimedValue y;
       
   186 		
       
   187 		//Set starting state scale
       
   188 		x.SetValueNow(1.0);
       
   189 		y.SetValueNow(1.0);
       
   190 		
       
   191 		//Set scale target, halve the size and do it in 1000ms
       
   192 		x.SetTarget(0.5, 1000);
       
   193 		y.SetTarget(0.5, 1000);
       
   194 		
       
   195 		//Resize the deck
       
   196 		SetSize(TAlfRealSize(150, 150), 1000);
       
   197 		
       
   198 		//Scale the text visual
       
   199 		iTextVisual->Transformation().Scale(x, y);
       
   200 				
       
   201 		iStickerIsLarge = EFalse;
       
   202 		}
       
   203 	else if (!iStickerIsLarge)
       
   204 		{
       
   205 	    //Timed values for scaling
       
   206 		TAlfTimedValue x;
       
   207 		TAlfTimedValue y;
       
   208 		
       
   209 		//Set starting state scale
       
   210 		x.SetValueNow(1.0);
       
   211 		y.SetValueNow(1.0);
       
   212 		
       
   213 		//Set scale target, double the size and do it in 1000ms
       
   214 		x.SetTarget(2.0, 1000);
       
   215 		y.SetTarget(2.0, 1000);
       
   216 		
       
   217 		//Scale the text visual
       
   218 		iTextVisual->Transformation().Scale(x, y);
       
   219 		
       
   220 		//Resize the deck
       
   221 		SetSize(TAlfRealSize(300, 300), 1000);
       
   222 
       
   223 		iStickerIsLarge = ETrue;
       
   224 		}
       
   225 	}
       
   226