diff -r 000000000000 -r 094583676ce7 wvuing/wvvariant/Src/CCAOpBrandVariant20.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wvuing/wvvariant/Src/CCAOpBrandVariant20.cpp Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,239 @@ +/* +* Copyright (c) 2002 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: Concrete implementation of res.file& bitmap changing feature. +* +*/ + + + +// INCLUDE FILES +#include "CCAOpBrandVariant20.h" +#include "CAlternator.h" +#include +#include +#include +#include +#include + + +// CONSTANTS +_LIT( KChatAppModuleIdForBranding, "IMApp" ); +_LIT( KChatEngModuleIdForBranding, "IMEng" ); + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CCAOpBrandVariant20::CCAOpBrandVariant20 +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CCAOpBrandVariant20::CCAOpBrandVariant20() + { + } + +// ----------------------------------------------------------------------------- +// CCAOpBrandVariant20::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CCAOpBrandVariant20::ConstructL() + { + iAlternator = CAlternator::InstanceL(); + } + +// ----------------------------------------------------------------------------- +// CCAOpBrandVariant20::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CCAOpBrandVariant20* CCAOpBrandVariant20::NewL() + { + CCAOpBrandVariant20* self = new( ELeave ) CCAOpBrandVariant20; + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + + return self; + } + + +// Destructor +CCAOpBrandVariant20::~CCAOpBrandVariant20() + { + iCoeEnv->DeleteResourceFile( iAppResFileOffset ); + iCoeEnv->DeleteResourceFile( iEngResFileOffset ); + + if ( iOrigCommUiResource.Length() > 0 ) // added 31.7.03 by kikangas to support 2.1 release + { + iCoeEnv->DeleteResourceFile( iCommUiResFileOffset ); + } + + delete iServerName; + } + +void CCAOpBrandVariant20::RemoveAppResourceL( CCoeEnv* aCoeEnv, TInt& aAppResFileOffset ) + { + aCoeEnv->DeleteResourceFile( aAppResFileOffset ); + aAppResFileOffset = NULL; + } + +void CCAOpBrandVariant20::RetrieveSavedSettingsL( CCoeEnv* aCoeEnv, const TDesC& aOrigAppResPath, + const TDesC& aOrigEngResPath, + const TDesC& aOrigCommUiResPath, + TDes& aBitmapPath ) + { + iCoeEnv = aCoeEnv; + + // store original paths + iOrigAppResource = aOrigAppResPath; + iOrigEngResource = aOrigEngResPath; + iOrigCommUiResource = aOrigCommUiResPath; + iOrigBitmapPath = aBitmapPath; + + CWVSAPSettingsStore* sapStore = CWVSAPSettingsStore::NewL(); + CleanupStack::PushL( sapStore ); + + // if there are no SAPs then don't try the get default + if ( sapStore->SAPCountL() > 0 ) + { + CWVSAPSettings* sap = CWVSAPSettings::NewLC(); + sapStore->GetDefaultL( *sap ); + HBufC* server = sap->SAPName().AllocLC(); + + ActivateBrandL( *server, aBitmapPath ); + CleanupStack::PopAndDestroy( 2 ); // server, sap + } + else + { + // loads original resource files + TBuf<1> empty; + ActivateBrandL( empty, aBitmapPath ); + } + CleanupStack::PopAndDestroy(); // sapStore + } + +void CCAOpBrandVariant20::ActivateBrandL( const TDesC& aServer, TDes& aBitmapPath ) + { +#ifdef _DEBUG + RDebug::Print( _L( "iAlternator->ChangeResourceL" ) ); +#endif + + delete iServerName; + iServerName = NULL; + iServerName = aServer.AllocL(); + + // APPLICATION RESOURCE + TParsePtrC parseApp( iOrigAppResource ); + + // if ok, removes the previous resource and adds new one + TInt err = iAlternator->ChangeResourceL( KChatAppModuleId, aServer, parseApp.NameAndExt(), iAppResFileOffset ); + // if not ok + if ( err ) + { + // delete the old one + CEikonEnv::Static()->DeleteResourceFile( iAppResFileOffset ); + // load original app resource + // Code scanner warning Id 53 "not using + // BaflUtils::NearestLanguageFile() when loading a resource file" + // is not applicable to this case. + iAppResFileOffset = CEikonEnv::Static()->AddResourceFileL( + iOrigAppResource ); // CSI: 53 # See above + } + + + // ENGINE RESOURCE + + TParsePtrC parseEng( iOrigEngResource ); + + // if ok, removes the previous resource and adds new one + err = iAlternator->ChangeResourceL( KChatAppModuleId, aServer, parseEng.NameAndExt(), iEngResFileOffset ); + // if not ok + if ( err ) + { + // delete the old one + CEikonEnv::Static()->DeleteResourceFile( iEngResFileOffset ); + // load original eng resource + // Code scanner warning Id 53 "not using + // BaflUtils::NearestLanguageFile() when loading a resource file" + // is not applicable to this case. + iEngResFileOffset = CEikonEnv::Static()->AddResourceFileL( + iOrigEngResource ); // CSI: 53 # See above + } + + // COMMON UI RESOURCE + if ( iOrigCommUiResource.Length() > 0 ) + { + TParsePtrC parseCUI( iOrigCommUiResource ); + + // if ok, removes the previous resource and adds new one + err = iAlternator->ChangeResourceL( KChatAppModuleId, aServer, parseCUI.NameAndExt(), iCommUiResFileOffset ); + // if not ok + if ( err ) + { + // delete the old one + CEikonEnv::Static()->DeleteResourceFile( iCommUiResFileOffset ); + // load original eng resource + // Code scanner warning Id 53 "not using + // BaflUtils::NearestLanguageFile() when loading a resource file" + // is not applicable to this case. + iCommUiResFileOffset = CEikonEnv::Static()->AddResourceFileL( + iOrigCommUiResource ); // CSI: 53 # See above + } + } + + + // BITMAP + TParsePtrC parseBitmap( iOrigBitmapPath ); + if ( iAlternator->ChangeBitmapFileL( KChatAppModuleId, aServer, parseBitmap.NameAndExt() ) == KErrNone ) + { + // set branded bitmap + aBitmapPath.Zero(); + aBitmapPath.Append( iAlternator->CurrentBitmapFile( KChatAppModuleId, aServer, parseBitmap.NameAndExt() ) ); + } + else + { + // else set to app defaults!! + aBitmapPath.Zero(); + aBitmapPath.Append( iOrigBitmapPath ); + + } + } + +void CCAOpBrandVariant20::DeleteResource( CCoeEnv* aCoeEnv ) + { + aCoeEnv->DeleteResourceFile( iAppResFileOffset ); + } + +TBool CCAOpBrandVariant20::BrandBitmapsActivated() const + { + + TParsePtrC parseBitmap( iOrigBitmapPath ); + TPtrC origFileName( parseBitmap.NameAndExt() ); + + // returns zero length path if brand bitmap path is not set + if ( iAlternator->CurrentBitmapFile( KChatAppModuleId, *iServerName, origFileName ).Length() == 0 ) + { + return EFalse; + } + + return ETrue; + } +void CCAOpBrandVariant20::CurrentResourceFileL( const TDesC& /*aServer*/, const TDesC& /*aResourceFile*/, TDes& /*aFullPath*/ ) + { + } + +// End of File