brandingserver/bsclient/cbsaccess.cpp
changeset 0 e6b17d312c8b
child 21 cfd5c2994f10
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/brandingserver/bsclient/cbsaccess.cpp	Thu Dec 17 08:54:49 2009 +0200
@@ -0,0 +1,291 @@
+/*
+* 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: CBSAccess.cpp
+*
+*/
+
+
+//  INCLUDE FILES
+
+#include <e32base.h>
+#include <AknsSkinInstance.h>	// skins 
+#include <AknsUtils.h>
+#include <coemain.h>
+
+#include "cbsaccess.h"
+#include "cbsbitmap.h"
+#include "debugtrace.h"
+#include "mbsaccess.h"
+#include "mbsupdater.h"
+#include "cbsiconfileprovider.h"
+
+void Panic(TInt aPanic)
+    {
+    _LIT( KPanic, "CBS" );
+    User::Panic( KPanic, aPanic );
+    }
+
+// Two-phased constructor.
+CBSAccess* CBSAccess::NewL( const TDesC8& aBrandId,
+							const TDesC8& aAppId,
+    					 	const TDesC8& aDefaultBrandId,
+							TLanguage aLanguageId,
+    					  	TBool aCacheData,
+							TInt aReserved )
+    {
+    CBSAccess* self = new ( ELeave ) CBSAccess( aLanguageId, aCacheData, aReserved) ;
+    CleanupStack::PushL( self );
+    self->ConstructL( aBrandId, aAppId, aDefaultBrandId );
+    CleanupStack::Pop( self );  //self
+    return self;
+    }
+
+// Symbian OS default constructor can leave.
+void CBSAccess::ConstructL( const TDesC8& aBrandId, const TDesC8& aAppId, 
+    					 	const TDesC8& aDefaultBrandId )
+    {
+    iBrand = aBrandId.AllocL();
+    iDefaultBrand = aDefaultBrandId.AllocL();
+    iAppId = aAppId.AllocL();
+    User::LeaveIfError( iClient.Connect() );
+    
+	iClient.StartTransactionL( *iAppId, *iBrand, aDefaultBrandId,
+								iLanguageId, EBSTxAccess, iReserved );
+    }
+
+// Destructor
+CBSAccess::~CBSAccess()
+    {
+    delete iBrand;
+    delete iDefaultBrand;
+    delete iAppId;
+    iClient.Close();
+    }
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CBSAccess::CBSAccess( TLanguage aLanguageId, TBool aCacheData, TInt aReserved )
+: iLanguageId( aLanguageId ), iUseCache( aCacheData ), iReserved( aReserved )
+	{
+	}
+
+// -----------------------------------------------------------------------------
+// CBSAccess::Close()
+// -----------------------------------------------------------------------------
+//
+void CBSAccess::Close()
+	{
+	delete this;
+	}
+
+// -----------------------------------------------------------------------------
+// CBSAccess::GetTextL()
+// -----------------------------------------------------------------------------
+//
+HBufC* CBSAccess::GetTextL( const TDesC8& aId )
+	{
+	HBufC* buffer = NULL;
+
+	iClient.GetTextL( aId, buffer );
+		
+    TRACE( T_LIT("iClient.GetText( iBrandId, aId, buffer )") );
+    return buffer;
+	}
+
+// -----------------------------------------------------------------------------
+// CBSAccess::GetTextLC()
+// -----------------------------------------------------------------------------
+//
+HBufC* CBSAccess::GetTextLC( const TDesC8& aId )
+	{
+	HBufC* buffer = NULL;
+    iClient.GetTextL( aId, buffer );
+    TRACE( T_LIT("iClient.GetText( aBrandId, aId, buffer )") );
+
+    CleanupStack::PushL( buffer );
+    return buffer;
+	}
+
+
+// -----------------------------------------------------------------------------
+// CBSAccess::GetIntL()
+// -----------------------------------------------------------------------------
+//
+TInt CBSAccess::GetIntL( const TDesC8& aId )
+	{
+	TInt value = 0;
+
+	iClient.GetIntL( aId, value );
+    return value;
+	}
+
+TInt CBSAccess :: isBrandUpdateRequiredL ()
+{
+	TInt updateRequired = -1; 
+	iClient.isBrandUpdateRequiredL (updateRequired);
+ 	return updateRequired;
+
+}
+
+// -----------------------------------------------------------------------------
+// CBSAccess::GetSeveralIntL()
+// -----------------------------------------------------------------------------
+//
+MBSElement* CBSAccess::GetSeveralL( MDesC8Array& aIds )
+	{
+	MBSElement* returnValue = iClient.GetSeveralL( aIds );
+	return returnValue;
+	}
+
+// -----------------------------------------------------------------------------
+// CBSAccess::GetFileL()
+// -----------------------------------------------------------------------------
+//
+void CBSAccess::GetFileL( const TDesC8& aId,
+					   	  RFile& aFile )
+	{
+	iClient.GetFileL( aId, aFile );
+	}
+
+// -----------------------------------------------------------------------------
+// CBSAccess::GetStructureL()
+// -----------------------------------------------------------------------------
+//
+MBSElement* CBSAccess::GetStructureL( const TDesC8& aId )
+	{
+	MBSElement* returnValue = NULL;
+
+	returnValue = iClient.GetStructureL( aId );
+	
+	return returnValue;
+	
+	}
+
+// -----------------------------------------------------------------------------
+// CBSAccess::GetBufferL()
+// -----------------------------------------------------------------------------
+//
+HBufC8* CBSAccess::GetBufferL( const TDesC8& aId )
+	{
+	HBufC8* buffer = NULL;
+	iClient.GetBufferL( aId, buffer );
+	return buffer;
+	}
+
+// -----------------------------------------------------------------------------
+// CBSAccess::GetBufferLC()
+// -----------------------------------------------------------------------------
+//
+HBufC8* CBSAccess::GetBufferLC( const TDesC8& aId )
+	{
+	HBufC8* buffer = GetBufferL( aId );
+	CleanupStack::PushL( buffer );
+	return buffer;
+	}
+
+// -----------------------------------------------------------------------------
+// CBSAccess::RegisterObserverL()
+// -----------------------------------------------------------------------------
+//
+void CBSAccess::RegisterObserverL( MBSBrandChangeObserver* aObserver, MBSBackupRestoreStateObserver* aBackupObserver)
+	{
+	iClient.RegisterObserverL( aObserver, aBackupObserver );
+	}
+
+// -----------------------------------------------------------------------------
+// CBSAccess::UnRegisterObserverL()
+// -----------------------------------------------------------------------------
+//
+void CBSAccess::UnRegisterObserverL( MBSBrandChangeObserver* aObserver, MBSBackupRestoreStateObserver* aBackupObserver )
+	{
+	iClient.UnRegisterObserverL( aObserver, aBackupObserver );
+	}
+
+// -----------------------------------------------------------------------------
+// CBSAccess::GetBitmapL()
+// -----------------------------------------------------------------------------
+//
+void CBSAccess::GetBitmapL( const TDesC8& aBitmapId,
+				 CFbsBitmap*& aBitmap,
+				 CFbsBitmap*& aMask )
+	{
+	TBool useSkins = ETrue;
+	CCoeEnv* coeEnv = CCoeEnv::Static();
+	if( !coeEnv )
+		{
+		TRACE( T_LIT("GETBITMAPL NO COE ENV ") );
+		// no CONE -> don't try to use skins
+		useSkins = EFalse;
+		}
+	
+	MBSElement* bitmapItem = NULL;
+
+	// get the structure containing the info for the bitmap
+	bitmapItem = GetStructureL( aBitmapId );
+	CleanupClosePushL( *bitmapItem );
+
+	// get the list from the bitmap element
+	const CBSBitmap* bitmap = &bitmapItem->BitmapDataL();
+	
+	RFile bitmapFile;
+	
+	// we need to get the bitmap file from where we can load the bitmap
+	GetFileL( bitmap->BitmapFileId(), bitmapFile );
+	
+	TInt err = KErrNotFound;
+	CFbsBitmap* skinBitmap = NULL;
+	if( useSkins )
+		{
+		MAknsSkinInstance* skin = AknsUtils::SkinInstance();	
+
+		TAknsItemID itemId;
+		itemId.Set( bitmap->SkinIdMajor(), bitmap->SkinIdMinor() );
+
+	    // Codescanner warning: neglected to put variable on cleanup stack (id:35)
+	    // This method cannot leave after this line if the bitmap is created
+	    TRAP( err, skinBitmap = AknsUtils::CreateBitmapL( skin, itemId ) ); // CSI: 35 # See above	
+		}
+    // if useSkins is TRUE that means there is a COE Env, and icons can be created
+	// otherwise, without CoeEnv, we cannot create icons, hence leave 
+    if( err == KErrNotFound && useSkins)
+    	{
+		// no skin bitmap found
+		
+	    // icon server take ownership of of icon file provider
+	    CBSIconFileProvider* ifp = CBSIconFileProvider::NewL( bitmapFile );
+	    CleanupStack::PushL( ifp );
+	
+	    AknIconUtils::CreateIconLC( aBitmap, aMask,
+                					*ifp,
+                					bitmap->BitmapId(), bitmap->BitmapMaskId() ); 
+                					  
+		CleanupStack::Pop( 2 ); // aBitmap, aMask
+		CleanupStack::Pop(ifp) ; 
+    	}
+    else if( err )
+    	{
+    	User::Leave( err );
+    	}
+	else
+		{
+		aBitmap = skinBitmap;
+		aMask = NULL;
+		}
+	bitmapFile.Close() ;
+	CleanupStack::PopAndDestroy(); // structure
+	}
+
+//  END OF FILE
+