diff -r 1fa9b890f29c -r 9dbc70490d9a brandingserver/BSClient/cbsaccess.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/brandingserver/BSClient/cbsaccess.cpp Sun Apr 11 15:33:49 2010 +0530 @@ -0,0 +1,292 @@ +/* +* 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 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: CBSAccess.cpp +* +*/ + + + +// INCLUDE FILES + +#include +#include // skins +#include +#include + +#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 +