--- /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 <coemain.h>
+#include <f32file.h>
+#include <eikenv.h>
+#include <CWVSAPSettingsStore.h>
+#include <CWVSAPSettings.h>
+
+
+// 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