//
// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of the License "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 "T_DataFbsBitGcFont.h"
/*@{*/
/// Parameters
_LIT(KFldHandle, "handle");
_LIT(KFontDataObjectName, "font_data_object_name");
/// Commands
_LIT(KCmdNewL, "NewL");
_LIT(KCmdDestructor, "~");
_LIT(KCmdAddress, "Address");
_LIT(KCmdDuplicate, "Duplicate");
_LIT(KCmdReset, "Reset");
/// Logs
_LIT(KLogMissingParameter, "Missing parameter '%S'");
_LIT(KLogErrNum, "Execute failed with error = %d!");
/*@}*/
/**
* Constructor
*/
CT_DataFbsBitGcFont* CT_DataFbsBitGcFont::NewL()
{
CT_DataFbsBitGcFont* ret = new (ELeave) CT_DataFbsBitGcFont();
CleanupStack::PushL(ret);
ret->ConstructL();
CleanupStack::Pop(ret);
return ret;
}
/**
* Protected constructor. First phase construction
*/
CT_DataFbsBitGcFont::CT_DataFbsBitGcFont()
: CT_DataFbsFont()
, iFbsBitGcFont(NULL)
{
}
/**
* Protected second phase construction
*/
void CT_DataFbsBitGcFont::ConstructL()
{
}
/**
* Destructor.
*/
CT_DataFbsBitGcFont::~CT_DataFbsBitGcFont()
{
DisownObjectL();
}
CFont* CT_DataFbsBitGcFont::GetFont() const
{
return iFbsBitGcFont;
}
CFbsFont* CT_DataFbsBitGcFont::GetFbsFont() const
{
return iFbsBitGcFont;
}
/**
* Return a pointer to the object that the data wraps
*
* @return pointer to the object that the data wraps
*/
TAny* CT_DataFbsBitGcFont::GetObject()
{
return iFbsBitGcFont;
}
void CT_DataFbsBitGcFont::SetObjectL(TAny* aObject)
{
iFbsBitGcFont = static_cast<CFbsBitGcFont*> (aObject);
}
void CT_DataFbsBitGcFont::DisownObjectL()
{
iFbsBitGcFont = NULL;
}
/**
* Process a command read from the ini file
*
* @param aDataWrapper test step requiring command to be processed
* @param aCommand the command to process
* @param aSection the entry in the ini file requiring the command to be processed
*
* @return ETrue if the command is processed
*/
TBool CT_DataFbsBitGcFont::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt aAsyncErrorIndex)
{
/* Another work package will complete the implement of this */
TBool retVal = ETrue;
if ( aCommand == KCmdNewL )
{
DoCmdNewL();
}
else if (aCommand == KCmdDestructor)
{
DoCmdDestructor();
}
else if (aCommand == KCmdAddress)
{
DoCmdAddress();
}
else if (aCommand == KCmdDuplicate)
{
DoCmdDuplicate(aSection);
}
else if (aCommand == KCmdReset)
{
DoCmdReset();
}
else
{
retVal = CT_DataFbsFont::DoCommandL(aCommand, aSection, aAsyncErrorIndex);
}
return retVal;
}
void CT_DataFbsBitGcFont::DoCmdNewL()
{
TInt err = KErrNone;
INFO_PRINTF1(_L("Create CFbsBitGcFont Object by CFbsBitGcFont() constructor function."));
TRAP(err, iFbsBitGcFont = new (ELeave) CFbsBitGcFont());
if ( err!=KErrNone )
{
ERR_PRINTF2(KLogErrNum, err);
SetError(err);
}
}
void CT_DataFbsBitGcFont::DoCmdDestructor()
{
DisownObjectL();
}
void CT_DataFbsBitGcFont::DoCmdAddress()
{
CBitmapFont* BitmapFontPtr = NULL;
INFO_PRINTF1(_L("Execute CFbsBitGcFont::Address() function."));
BitmapFontPtr = iFbsBitGcFont->Address();
if (NULL == BitmapFontPtr)
{
INFO_PRINTF1(_L("The CBitmapFont* returned is NULL."));
}
}
void CT_DataFbsBitGcFont::DoCmdDuplicate(const TDesC& aSection)
{
TInt handle = 0;
INFO_PRINTF1(_L("Execute CFbsBitGcFont::Duplicate(TInt aHandle) function."));
if(GetIntFromConfig(aSection,KFldHandle,handle))
{
INFO_PRINTF2(_L("Execute Duplicate(TInt aHandle) using the specified handle = %d"), handle);
}
else
{
TPtrC fontDataObjectName;
if (!GetStringFromConfig(aSection, KFontDataObjectName(), fontDataObjectName))
{
ERR_PRINTF2(KLogMissingParameter, &KFontDataObjectName);
SetBlockResult(EFail);
return;
}
else
{
CT_DataFbsBitGcFont* fontDataObject = NULL;
fontDataObject = static_cast<CT_DataFbsBitGcFont*>(GetDataWrapperL(fontDataObjectName));
if (NULL == fontDataObject)
{
ERR_PRINTF1(_L("Bad Object!"));
SetBlockResult(EFail);
return;
}
else
{
handle = ((CFbsBitGcFont*)fontDataObject->GetObject())->Handle();
INFO_PRINTF2(_L("Execute Duplicate(TInt aHandle) using CFbsBitGcFont Object's handle = %d"), handle);
}
}
}
TInt err = iFbsBitGcFont->Duplicate(handle);
if (KErrNone != err)
{
ERR_PRINTF2(KLogErrNum, err);
SetError(err);
}
}
void CT_DataFbsBitGcFont::DoCmdReset()
{
INFO_PRINTF1(_L("Execute CFbsBitGcFont::Reset() function."));
iFbsBitGcFont->Reset();
}