--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/contextframework/cfwplugins/cenrepsourceplugin/src/cenrepattributes.cpp Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,180 @@
+/*
+* Copyright (c) 2007-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: CCenRepAttributes class implementation.
+*
+*/
+
+
+#include <cfdefinitions.h>
+#include <cfcontextsourcesetting.h>
+#include <cfcontextsourcesettingarray.h>
+
+#include "cenrepattributes.h"
+#include "cenreptrace.h"
+
+// Capabilities
+_LIT_SECURITY_POLICY_PASS( KCenRepSourceInteractionSec );
+
+// ======== LOCAL FUNCTIONS =========
+
+// ======== MEMBER FUNCTIONS ========
+
+CCenRepAttributes::~CCenRepAttributes()
+ {
+ FUNC_LOG;
+ // Delete context
+ delete iContext;
+ }
+
+CCenRepAttributes::CCenRepAttributes(
+ MCFContextInterface& aCF,
+ CCFContextSourceSettingArray& aSettings ) :
+ iSettings( aSettings ),
+ iCF( aCF )
+ {
+ FUNC_LOG;
+ }
+
+//----------------------------------------------------------------------------
+// CCenRepAttributes::ConvertToHex
+//----------------------------------------------------------------------------
+//
+TInt CCenRepAttributes::ConvertToHex( const TDesC& aString, TUint32& aValue )
+ {
+ FUNC_LOG;
+
+ const TUint KLimit = 0xffffffff;
+ _LIT( KHexPattern, "0x*" );
+ TInt err = KErrNotFound;
+
+ if ( err != aString.Match( KHexPattern ) )
+ {
+ TLex lex( aString );
+
+ // Get rid of '0x'
+ const TInt incAmount( 2 );
+ lex.Inc( incAmount );
+ err = lex.BoundedVal( aValue, EHex, KLimit );
+ }
+
+ return err;
+ }
+
+//----------------------------------------------------------------------------
+// CCenRepAttributes::ConvertToInt
+//----------------------------------------------------------------------------
+//
+TInt CCenRepAttributes::ConvertToInt( const TDesC& aString, TInt& aValue ) const
+ {
+ FUNC_LOG;
+
+ TInt err = KErrNone;
+
+ TLex lex( aString );
+
+ if( lex.Val( aValue ) != KErrNone )
+ {
+ err = KErrNotFound;
+ }
+
+ return err;
+ }
+
+// ---------------------------------------------------------------------------
+// CCenRepAttributes::InitCenRepKeyL
+// ---------------------------------------------------------------------------
+//
+TUint32 CCenRepAttributes::InitCenRepKeyL( TInt aIndex )
+ {
+ FUNC_LOG;
+
+ TUint32 cenRepKey = 0;
+
+ iParamArray = iSettings.Item( aIndex ).Parameters();
+ const RKeyValueArray& attrArray = iSettings.Item( aIndex ).Attributes();
+
+ iParamCount = iParamArray.Count();
+
+ // Check attributes
+ TInt attrCount = attrArray.Count();
+
+ DefineContext();
+
+ // Find given key
+ for( TInt i = 0; i < attrCount; i++ )
+ {
+ // Currently only interested given parameter key
+ if ( attrArray[i]->Key().CompareF( KKey ) == KErrNone )
+ {
+ TInt err = ConvertToHex( attrArray[i]->Value(), cenRepKey );
+ User::LeaveIfError( err );
+ }
+ }
+ return cenRepKey;
+ }
+
+// ---------------------------------------------------------------------------
+// CCenRepAttributes::DefineContext
+// ---------------------------------------------------------------------------
+//
+void CCenRepAttributes::DefineContext()
+ {
+ FUNC_LOG;
+
+ TPtrC value( KNullDesC );
+ TPtrC key( KNullDesC );
+
+ TPtrC conTypePtr ( KNullDesC );
+ TPtrC conSourcePtr ( KNullDesC );
+
+
+ for( TInt i = 0; i < iParamCount; i++ )
+ {
+ const RKeyValueArray& paramAttr = iParamArray[i]->Attributes();
+ TInt paramAttrCount = paramAttr.Count();
+ for( TInt j = 0; j < paramAttrCount; j++ )
+ {
+ key.Set( paramAttr[j]->Key() );
+ value.Set( paramAttr[j]->Value() );
+
+ // Check ContextSource
+ if ( key.CompareF( KContextSource ) == KErrNone )
+ {
+ conSourcePtr.Set( value );
+ }
+
+ // Check ContextType
+ else if ( key.CompareF( KContextType ) == KErrNone )
+ {
+ conTypePtr.Set( value);
+ }
+ }
+ iCF.DefineContext( conSourcePtr,
+ conTypePtr,
+ KCenRepSourceInteractionSec );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CCenRepAttributes::PublishContext
+// ---------------------------------------------------------------------------
+//
+void CCenRepAttributes::PublishContext()
+ {
+ FUNC_LOG;
+
+ RThread thread;
+ iCF.PublishContext( *iContext, thread );
+ thread.Close();
+ }