diff -r f742655b05bf -r d38647835c2e commsconfig/cscengine/src/cscengbrandinghandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commsconfig/cscengine/src/cscengbrandinghandler.cpp Wed Sep 01 12:29:57 2010 +0100 @@ -0,0 +1,194 @@ +/* +* Copyright (c) 2007-2007 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: For CSC needed branding server handling +* +*/ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cscenglogger.h" +#include "cscengbrandinghandler.h" + + +_LIT8( KDefaultAppId, "xsp" ); +_LIT8( KBrandedBitmapItemId, "default_brand_image" ); + +const TUint KVersion( 1 ); + +// ======== MEMBER FUNCTIONS ======== + + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +CCSCEngBrandingHandler::CCSCEngBrandingHandler() + { + } + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +void CCSCEngBrandingHandler::ConstructL() + { + CSCENGDEBUG( "CCSCEngBrandingHandler::ConstructL - begin" ); + + iFactory = CBSFactory::NewL( KNullDesC8, KDefaultAppId ); + + CSCENGDEBUG( "CCSCEngBrandingHandler::ConstructL - end" ); + } + + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +EXPORT_C CCSCEngBrandingHandler* CCSCEngBrandingHandler::NewL() + { + CCSCEngBrandingHandler* self = new (ELeave) CCSCEngBrandingHandler; + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +CCSCEngBrandingHandler::~CCSCEngBrandingHandler() + { + CSCENGDEBUG( + "CCSCEngBrandingHandler::~CCSCEngBrandingHandler - begin" ); + + delete iFactory; + + CSCENGDEBUG( + "CCSCEngBrandingHandler::~CCSCEngBrandingHandler - end" ); + } + + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +EXPORT_C void CCSCEngBrandingHandler::GetServiceBrandIconL( + const TDesC8& aBrandId, CFbsBitmap*& aBitmap, CFbsBitmap*& aMask, + TInt aIconSize ) + { + CSCENGDEBUG( + "CCSCEngBrandingHandler::GetServiceBrandIconL - begin" ); + + // Create access to Branding server + MBSAccess* access = iFactory->CreateAccessL( + aBrandId, ELangInternationalEnglish, KVersion ); + CleanupClosePushL( *access ); + + // start fetching of branding image + // get structure containing the info needed to load brand image + MBSElement* bitmapItem = NULL; + bitmapItem = access->GetStructureL( KBrandedBitmapItemId ); + CleanupClosePushL( *bitmapItem ); + + // get info from the bitmap element + const CBSBitmap& bsBitmap = bitmapItem->BitmapDataL(); + + RFile bitmapFile; + CleanupClosePushL( bitmapFile ); + + // get the bitmap file from where we can load the bitmap + access->GetFileL( bsBitmap.BitmapFileId(), bitmapFile ); + + TInt err = KErrNotFound; + CFbsBitmap* skinBitmap = NULL; + + // Try getting skinned images first + + if( CCoeEnv::Static() ) + { + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + + TAknsItemID itemId; + itemId.Set( bsBitmap.SkinIdMajor(), bsBitmap.SkinIdMinor() ); + + CleanupStack::PushL( skinBitmap ); + + TRAP( err, skinBitmap = AknsUtils::CreateBitmapL( skin, itemId ) ); + + CleanupStack::Pop( skinBitmap ); + } + + if( err == KErrNotFound ) // no skin bitmap found + { + iFile = bitmapFile; + AknIconUtils::CreateIconLC( aBitmap, + aMask, + *this, + bsBitmap.BitmapId(), + bsBitmap.BitmapMaskId() ); + + CleanupStack::Pop( aMask ); + CleanupStack::Pop( aBitmap ); + } + else if( err ) + { + User::Leave( err ); + } + else + { + aBitmap = skinBitmap; + aMask = NULL; + } + + TSize size( aIconSize, aIconSize ); + if ( aBitmap ) + { + AknIconUtils::SetSize( aBitmap, size ); + } + + if ( aMask ) + { + AknIconUtils::SetSize( aMask, size ); + } + + CleanupStack::PopAndDestroy( &bitmapFile ); + CleanupStack::PopAndDestroy( bitmapItem ); + CleanupStack::PopAndDestroy( access ); + + CSCENGDEBUG( + "CCSCEngBrandingHandler::GetServiceBrandIconL - end" ); + } + + +// --------------------------------------------------------------------------- +// From class MAknIconFileProvider +// For getting an open file handle to the icon file. +// --------------------------------------------------------------------------- +// +void CCSCEngBrandingHandler::RetrieveIconFileHandleL( + RFile& aFile, const TIconFileType /*aType*/ ) + { + aFile.Duplicate( iFile ); + } + + + + +