diff -r 000000000000 -r 15bf7259bb7c uiacceltk/hitchcock/ServerCore/Src/alftextstylehandlers.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiacceltk/hitchcock/ServerCore/Src/alftextstylehandlers.cpp Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,271 @@ +/* +* Copyright (c) 2006 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: Text style handlers +* +*/ + + + +#include "alftextstylehandlers.h" +#include "alf/alfconstants.h" +#include +#include +#include + +//----------------------------------------------------------------------------- +// Create a handler for platform, preconfigured, or cloned text style +//----------------------------------------------------------------------------- +TAlfTextStyleHandler::TAlfTextStyleHandler( + MAlfInterfaceProvider& aResolver, + TInt aId1, + TInt aId2, + TInt aConstructionType) + : iResolver(aResolver), iTextStyle( NULL ) + { + // Retrieve the text style manager + CHuiTextStyleManager& manager = aResolver.SharedHuiEnv()->TextStyleManager(); + TInt id = KErrNotFound; + + + switch(aConstructionType) + { + case EAlfPlatformTextStyleCreate: + TRAP_IGNORE( + { + // Get parent text style handler + TAlfTextStyleHandler* parentHandler = + static_cast( + aResolver.GetInterfaceL(EAlfTextStyleHandler, aId2)); + + // Create a platform text style + id = manager.CreatePlatformTextStyleL( + aId1, + parentHandler->TextStyleId()); + }) + + iTextStyle = manager.TextStyle(id); + break; + + case EAlfPreconfiguredTextStyleCreate: + iTextStyle = manager.TextStyle(aId1); + break; + + case EAlfPlatformTextStyleCopy: + TRAP_IGNORE( + { + // Get parent text style handler + TAlfTextStyleHandler* sourceHandler = + static_cast( + aResolver.GetInterfaceL(EAlfTextStyleHandler, aId1)); + + // Create a platform text style + id = manager.CopyTextStyleL(sourceHandler->TextStyleId()); + }) + + iTextStyle = manager.TextStyle(id); + break; + + default: + break; + } + } + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +void TAlfTextStyleHandler::Release() + { + if ( iTextStyle ) + { + CHuiTextStyleManager& manager = iResolver.SharedHuiEnv()->TextStyleManager(); + (void)manager.DeleteTextStyle( iTextStyle->Id() ); // ignore error + } + delete this; + } + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +TAny* TAlfTextStyleHandler::GetInterface(const THuiInterfaceSupport& aInterface) + { + if(aInterface == EAlfTextStyleHandler) + { + return this; + } + return NULL; + } + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +void TAlfTextStyleHandler::HandleCmdL( + TInt aCommandId, + const TDesC8& aInputBuffer, + TDes8& aResponse) + { + switch (aCommandId) + { + case EAlfTextStyleSetParent: + { + TInt* param = (TInt*) aInputBuffer.Ptr(); + // Get parent text style handler + TAlfTextStyleHandler* parentHandler = + static_cast( + iResolver.GetInterfaceL(EAlfTextStyleHandler, *param)); + iTextStyle->SetParentId(parentHandler->TextStyleId()); + break; + } + + case EAlfTextStyleSetTextColor: + { + TRgb* param = (TRgb*) aInputBuffer.Ptr(); + iTextStyle->SetTextColor(*param); + break; + } + + case EAlfTextStyleSetTextSizeInTwips: + { + TInt2* params = (TInt2*) aInputBuffer.Ptr(); + iTextStyle->SetTextSizeInTwips(params->iInt1, params->iInt2); + break; + } + + case EAlfTextStyleSetTextSizeInPixels: + { + TInt2* params = (TInt2*) aInputBuffer.Ptr(); + iTextStyle->SetTextSizeInPixels(params->iInt1, params->iInt2); + break; + } + + case EAlfTextStyleSetBold: + { + TInt* param = (TInt*) aInputBuffer.Ptr(); + iTextStyle->SetStrokeWeight(*param); + break; + } + + case EAlfTextStyleSetItalic: + { + TInt* param = (TInt*) aInputBuffer.Ptr(); + iTextStyle->SetPosture(*param); + break; + } + + case EAlfTextStyleSetUnderline: + { + TInt* param = (TInt*) aInputBuffer.Ptr(); + iTextStyle->SetUnderline(*param); + break; + } + + case EAlfTextStyleSetStrikeThrough: + { + TInt* param = (TInt*) aInputBuffer.Ptr(); + iTextStyle->SetStrikeThrough(*param); + break; + } + + case EAlfTextStyleTextColor: + { + const TRgb textColor = iTextStyle->TextColor(); + TPckg resultPckg(textColor); + aResponse = resultPckg; + break; + } + + case EAlfTextStyleSizeInTwips: + { + TInt* param = (TInt*) aInputBuffer.Ptr(); + const TInt textSizeInTwips = iTextStyle->TextSizeInTwips(*param); + TPckg resultPckg(textSizeInTwips); + aResponse = resultPckg; + break; + } + + case EAlfTextStyleSizeInPixels: + { + TInt* param = (TInt*) aInputBuffer.Ptr(); + const TInt textSizeInPixels = iTextStyle->TextSizeInPixels(*param); + TPckg resultPckg(textSizeInPixels); + aResponse = resultPckg; + break; + } + + case EAlfTextStyleIsBold: + { + const TBool isBold = iTextStyle->StrokeWeight(); + TPckg resultPckg(isBold); + aResponse = resultPckg; + break; + } + + case EAlfTextStyleIsItalic: + { + const TBool isItalic = iTextStyle->Posture(); + TPckg resultPckg(isItalic); + aResponse = resultPckg; + break; + } + + case EAlfTextStyleIsUnderline: + { + const TBool isUnderline = iTextStyle->Underline(); + TPckg resultPckg(isUnderline); + aResponse = resultPckg; + break; + } + + case EAlfTextStyleIsStrikeThrough: + { + const TBool isStrikeThrough = iTextStyle->StrikeThrough(); + TPckg resultPckg(isStrikeThrough); + aResponse = resultPckg; + break; + } + + case EAlfTextStyleGetTypeface: + { + TTypeface typeface; + iTextStyle->GetTypeface( typeface ); + TPckg resultPckg(typeface); + aResponse = resultPckg; + break; + } + + case EAlfTextStyleSetTextPaneHeightInPixels: + { + TInt2* params = (TInt2*) aInputBuffer.Ptr(); + iTextStyle->SetTextPaneHeightInPixels(params->iInt1, params->iInt2); + break; + } + case EAlfTextStyleServerHandle: + { + TInt id = iTextStyle->Id(); + TPckg resultPckg(id); + aResponse = resultPckg; + break; + } + + default: + User::Leave(KErrNotSupported); + } + } + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +TInt TAlfTextStyleHandler::TextStyleId() const + { + return iTextStyle->Id(); + }