commsconfig/cscengine/src/cscengbrandinghandler.cpp
changeset 0 a4daefaec16c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsconfig/cscengine/src/cscengbrandinghandler.cpp	Mon Jan 18 20:12:36 2010 +0200
@@ -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 );
+    }
+
+
+    
+
+