--- /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 <coemain.h>
+#include <AknsUtils.h>
+#include <cbsbitmap.h>
+#include <mbsaccess.h>
+#include <mbsupdater.h>
+#include <mbselement.h>
+#include <cbsfactory.h>
+#include <bselementfactory.h>
+#include <AknsSkinInstance.h>
+
+#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 );
+ }
+
+
+
+
+