--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/sapi_backstepping/src/bsserviceinterface.cpp Thu Dec 17 08:54:17 2009 +0200
@@ -0,0 +1,271 @@
+/*
+* 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: Back Stepping Service Interface
+ *
+*/
+
+
+#include "bsserviceinterface.h"
+#include "bsserviceconstants.h"
+
+using namespace LIW;
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CBSServiceInterface::CBSServiceInterface()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CBSServiceInterface::ConstructL()
+ {
+ User::LeaveIfError( iBSClient.Connect( ) );
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CBSServiceInterface* CBSServiceInterface::NewLC()
+ {
+ CBSServiceInterface* self = new( ELeave ) CBSServiceInterface;
+ CleanupStack::PushL( self );
+ self->ConstructL( );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CBSServiceInterface::~CBSServiceInterface()
+ {
+ iBSClient.Close( );
+ }
+
+// ---------------------------------------------------------------------------
+// Executes the SAPI as per params
+// ---------------------------------------------------------------------------
+//
+void CBSServiceInterface::ExecuteCmdL( const TDesC8& aCmdName,
+ const CLiwGenericParamList& aInParamList,
+ CLiwGenericParamList& aOutParamList, TUint aCmdOptions,
+ MLiwNotifyCallback* aCallback )
+ {
+ if ( !aCallback && !aCmdOptions )
+ {
+ if ( !aCmdName.Compare( KBSCmdInitialize ) )
+ {
+ InitializeL( aInParamList, aOutParamList );
+ }
+ else if ( !aCmdName.Compare( KBSCmdForwardActivationEvent ) )
+ {
+ ForwardActivationEventL( aInParamList, aOutParamList );
+ }
+ else if ( !aCmdName.Compare( KBSCmdHandleBackCommand ) )
+ {
+ HandleBackCommandL( aInParamList, aOutParamList );
+ }
+ else
+ {
+ HandleErrorL( aOutParamList, KErrNotSupported );
+ }
+ }
+ else
+ {
+ HandleErrorL( aOutParamList, KErrNotSupported );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Closes the interface
+// ---------------------------------------------------------------------------
+//
+void CBSServiceInterface::Close()
+ {
+ delete this;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CBSServiceInterface::InitializeL(
+ const CLiwGenericParamList& aInParamList,
+ CLiwGenericParamList& aOutParamList )
+ {
+ TInt32 appUid;
+ TInt err = GetParam( aInParamList, KBSInParamAppUid, appUid );
+ if ( err == KErrNone )
+ {
+ TInt retVal = iBSClient.Initialize( TUid::Uid( appUid ) );
+ HandleResultL( aOutParamList, retVal );
+ return;
+ }
+
+ HandleErrorL( aOutParamList, err );
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CBSServiceInterface::ForwardActivationEventL(
+ const CLiwGenericParamList& aInParamList,
+ CLiwGenericParamList& aOutParamList )
+ {
+ TPtrC8 state;
+ TInt err = GetParam( aInParamList, KBSInParamState, state );
+ if ( err == KErrNone )
+ {
+ TBool enter;
+ err = GetParam( aInParamList, KBSInParamEnter, enter );
+ if ( err == KErrNone )
+ {
+ TInt retVal = iBSClient.ForwardActivationEvent( state, enter );
+ HandleResultL( aOutParamList, retVal );
+ return;
+ }
+ }
+
+ HandleErrorL( aOutParamList, err );
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CBSServiceInterface::HandleBackCommandL(
+ const CLiwGenericParamList& aInParamList,
+ CLiwGenericParamList& aOutParamList )
+ {
+ TPtrC8 state;
+ TInt err = GetParam( aInParamList, KBSInParamState, state );
+
+ TBool checkOnly(EFalse);
+ if ( GetParam( aInParamList, KBSInParamCheckOnly, checkOnly ) != KErrNone )
+ {
+ // use default value if parameter isn't correct
+ checkOnly = EFalse;
+ }
+
+ if ( err == KErrNone )
+ {
+ TInt retVal = iBSClient.HandleBackCommand( state, checkOnly );
+ HandleResultL( aOutParamList, retVal );
+ return;
+ }
+
+ HandleErrorL( aOutParamList, err );
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CBSServiceInterface::HandleErrorL( CLiwGenericParamList& aOutParamList,
+ const TInt aError )
+ {
+ aOutParamList.AppendL( TLiwGenericParam( EGenericParamError,
+ TLiwVariant( aError ) ) );
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CBSServiceInterface::HandleResultL( CLiwGenericParamList& aOutParamList,
+ const TInt aResult )
+ {
+ TLiwGenericParam statusInfo;
+ statusInfo.SetNameAndValueL( KBSOutParamStatusInfo, TLiwVariant( aResult ) );
+ aOutParamList.AppendL( statusInfo );
+ statusInfo.Reset( );
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TInt CBSServiceInterface::GetParam( const CLiwGenericParamList& aInParamList,
+ const TDesC8& aParamName, TPtrC8& aPtr ) const
+ {
+ TInt errCode(KErrArgument);
+
+ const TLiwGenericParam* param= NULL;
+ TInt pos( 0);
+ param = aInParamList.FindFirst( pos, aParamName );
+ if ( param && (pos != KErrNotFound ) )
+ {
+ if ( param->Value().Get( aPtr ) )
+ {
+ errCode = KErrNone;
+ }
+ }
+
+ return errCode;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TInt CBSServiceInterface::GetParam( const CLiwGenericParamList& aInParamList,
+ const TDesC8& aParamName, TInt32& aNumber ) const
+ {
+ TInt errCode(KErrArgument);
+
+ const TLiwGenericParam* param= NULL;
+ TInt pos( 0);
+ param = aInParamList.FindFirst( pos, aParamName );
+ if ( param && (pos != KErrNotFound ) )
+ {
+ if ( param->Value().Get( aNumber ) )
+ {
+ errCode = KErrNone;
+ }
+ }
+
+ return errCode;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TInt CBSServiceInterface::GetParam( const CLiwGenericParamList& aInParamList,
+ const TDesC8& aParamName, TBool& aBool ) const
+ {
+ TInt errCode(KErrArgument);
+
+ const TLiwGenericParam* param= NULL;
+ TInt pos( 0);
+ param = aInParamList.FindFirst( pos, aParamName );
+ if ( param && (pos != KErrNotFound ) )
+ {
+ if ( param->Value().Get( aBool ) )
+ {
+ errCode = KErrNone;
+ }
+ }
+
+ return errCode;
+ }