--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logsserviceextension/src/tlogsextutil.cpp Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,153 @@
+/*
+* Copyright (c) 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: Class that contains util-functions for logsserviceextension.
+*
+*/
+
+
+#include <e32base.h>
+#include <f32file.h>
+#include <spsettings.h>
+#include <spproperty.h>
+#include <spdefinitions.h>
+#include <cbsfactory.h>
+#include <mbsaccess.h>
+#include <cbsbitmap.h>
+#include <mbselement.h>
+
+#include "tlogsextutil.h"
+#include "logsextconsts.h"
+#include "simpledebug.h"
+
+// ---------------------------------------------------------------------------
+// Retrieves File handle and bitmask/bitmask id and takes service id and
+// element id as input parameters.
+// ---------------------------------------------------------------------------
+//
+void TLogsExtUtil::GetFileHandleL(
+ const TUint32 aServiceId,
+ const TDesC8& aElementId,
+ RFile& aBitmapFile,
+ TInt& aBitmapId,
+ TInt& aBitmapMaskId )
+ {
+ _LOG("TLogsExtUtil::GetFileHandleL() begin" )
+
+ CSPSettings* spSettings = CSPSettings::NewLC();
+ _LOG("TLogsExtUtil::GetFileHandleL() CSPSettings created" )
+
+ // get the service provider settings
+
+ // read the brand id from the settings table
+ CSPProperty* spProperty = CSPProperty::NewLC();
+
+ User::LeaveIfError(
+ spSettings->FindPropertyL(
+ aServiceId,
+ EPropertyBrandId,
+ *spProperty ) );
+
+ if ( !spProperty ) // check if the property was found
+ {
+ User::Leave( KErrNotFound );
+ }
+ _LOG("TLogsExtUtil::GetFileHandleL() CSPProperty retrieved ok" )
+
+ HBufC* brandId16 = HBufC::NewLC( KSPMaxDesLength );
+ TPtr brandIdPtr16( brandId16->Des() );
+ User::LeaveIfError( spProperty->GetValue( brandIdPtr16 ) );
+
+ HBufC8* brandId8 = HBufC8::NewLC( brandIdPtr16.Length() );
+ TPtr8 brandIdPtr8( brandId8->Des() );
+ brandIdPtr8.Copy( *brandId16 );
+
+ // read the language property from the settings table
+
+ // workaround for missing brand language value from ServiceSettingsTable:
+ // use hardcoded value
+ TInt err( KErrNone );
+ TInt languageId( ELangInternationalEnglish );
+ TRAP( err, err = spSettings->FindPropertyL(
+ aServiceId,
+ EPropertyBrandLanguage,
+ *spProperty ) );
+
+ if ( KErrNone == err )
+ {
+ User::LeaveIfError( spProperty->GetValue( languageId ) );
+ _LOG("TLogsExtUtil::GetFileHandleL()..." )
+ _LOG("...EPropertyBrandLanguage retrieved ok" )
+ }
+ else
+ {
+ _LOG("TLogsExtUtil::GetFileHandleL() ...")
+ _LOG("...retrieval of EPropertyBrandId failed.hardcoded...")
+ _LOGPP("...language id(%d) used! error=%d", languageId, err )
+ }
+
+ // connect to branding server
+ // KAppId defined in LogsExtConsts.h
+ CBSFactory* factory = CBSFactory::NewL( KDefaultBrandId, KAppId );
+ CleanupStack::PushL( factory );
+ _LOG("TLogsExtUtil::GetFileHandleL() CBSFactory created" )
+
+ // Create access to Branding server
+ MBSAccess* access =
+ factory->CreateAccessL( *brandId8, TLanguage( languageId ) );
+
+ _LOG("TLogsExtUtil::GetFileHandleL() MBSAccess created" )
+ CleanupClosePushL( *access );
+
+ // fetch the brand logo from the brand server
+ MBSElement* bitmapItem = NULL;
+
+ // get the structure containing the info for the bitmap
+ bitmapItem = access->GetStructureL( aElementId );
+ _LOG("TLogsExtUtil::GetFileHandleL() bitmapItem retrieved" )
+ User::LeaveIfNull( bitmapItem );
+
+ CleanupClosePushL( *bitmapItem );
+
+ if ( EBSBitmap != bitmapItem->ElementType() )
+ {
+ User::Leave( KErrNotFound );
+ }
+
+ // get the bitmap data from the bitmap element
+ const CBSBitmap* bsBitmap = &bitmapItem->BitmapDataL();
+ _LOG("TLogsExtUtil::GetFileHandleL() bsBitmap retrieved" )
+
+ // we need to get the bitmap file from where we can load the bitmap
+ access->GetFileL( bsBitmap->BitmapFileId(), aBitmapFile );
+
+ // set the return values
+ aBitmapId = bsBitmap->BitmapId();
+ aBitmapMaskId = bsBitmap->BitmapMaskId();
+
+ CleanupStack::PopAndDestroy( bitmapItem );
+ bitmapItem = NULL;
+ CleanupStack::PopAndDestroy( access );
+ access = NULL;
+ CleanupStack::PopAndDestroy( factory );
+ factory = NULL;
+ CleanupStack::PopAndDestroy( brandId8 );
+ brandId8 = NULL;
+ CleanupStack::PopAndDestroy( brandId16 );
+ brandId16 = NULL;
+ CleanupStack::PopAndDestroy( spProperty );
+ spProperty = NULL;
+ CleanupStack::PopAndDestroy( spSettings );
+ spSettings = NULL;
+ }
+