diff -r 072a5fa0c63b -r c6bafb5162d8 voicerecorder/NewServiceSrc/CNewFileServiceClientImpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/voicerecorder/NewServiceSrc/CNewFileServiceClientImpl.cpp Wed Sep 01 12:29:14 2010 +0100 @@ -0,0 +1,255 @@ +/* +* Copyright (c) 2002-2006 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: Implementation for Client side API +* +*/ + + +// INCLUDE FILES + +#include +#include +#include + +#include "NewFileServiceClient.h" +#include "RNewFileServiceClient.h" +#include "CNewFileServiceClientImpl.h" + +#include +#include +#include + + +// ============================ MEMBER FUNCTIONS =============================== + +// ---------------------------------------------------------------------------- +// NewFileServiceFactory::NewClientL +// +// ---------------------------------------------------------------------------- +// +EXPORT_C CNewFileServiceClient* NewFileServiceFactory::NewClientL() + { + return CNewFileServiceClientImpl::NewL(); + } + + +// ---------------------------------------------------------------------------- +// CNewFileServiceClientImpl::NewL +// +// ---------------------------------------------------------------------------- +// +CNewFileServiceClientImpl* CNewFileServiceClientImpl::NewL() + { + CNewFileServiceClientImpl* self = + new( ELeave )CNewFileServiceClientImpl; + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + return self; + } + + +// ---------------------------------------------------------------------------- +// CNewFileServiceClientImpl::~CNewFileServiceClientImpl +// +// ---------------------------------------------------------------------------- +// +CNewFileServiceClientImpl::~CNewFileServiceClientImpl() + { + delete iServerAppMonitor; + iClient.Close(); + if(iClient.iError == KErrAbort) + { + iClient.iError = 0; + MAknServerAppExitObserver::HandleServerAppExit(EAknCmdExit); + } + } + + +// ---------------------------------------------------------------------------- +// CNewFileServiceClientImpl::ConstructL +// +// ---------------------------------------------------------------------------- +// +void CNewFileServiceClientImpl::ConstructL() + { + iClient.SetFileServiceClient(this); + } + + +// ---------------------------------------------------------------------------- +// CNewFileServiceClientImpl::NewFileL +// +// ---------------------------------------------------------------------------- +// +TBool CNewFileServiceClientImpl::NewFileL( CDesCArray& aFileNames, + CAiwGenericParamList* aParams, + TNewServiceFileType aFileType, + TBool aMultipleFiles ) + { + TUid uid( KNullUid ); + + switch ( aFileType ) + { + case ENewFileServiceAudio: + { + uid = TUid::Uid( KVoiceRecorderAppUID3 ); + break; + } + + case ENewFileServiceVideo: + case ENewFileServiceImage: + { + uid = KUidCamcorder; + break; + } + default: + { + User::Leave( KErrNotSupported ); + } + }; + + return NewFileL( uid, aFileNames, aParams, aFileType, aMultipleFiles ); + } + + +// ---------------------------------------------------------------------------- +// CNewFileServiceClientImpl::HandleServerAppExit +// +// ---------------------------------------------------------------------------- +// +void CNewFileServiceClientImpl::HandleServerAppExit(TInt aReason) + { +#ifdef _DEBUG + RDebug::Print( _L("CNewFileServiceClientImpl::HandleServerAppExit") ); +#endif + iClient.Close(); + MAknServerAppExitObserver::HandleServerAppExit(aReason); + } + + +// ---------------------------------------------------------------------------- +// CNewFileServiceClientImpl::NewFileL +// +// ---------------------------------------------------------------------------- +// +TBool CNewFileServiceClientImpl::NewFileL( TUid aApplicationUid, + CDesCArray& aFileNames, + CAiwGenericParamList* aParams, + TNewServiceFileType aFileType, + TBool aMultipleFiles ) + { + iClient.ConnectChainedAppL( aApplicationUid ); + + if ( !iServerAppMonitor ) + { + iServerAppMonitor = CApaServerAppExitMonitor::NewL( iClient, *this, + CActive::EPriorityStandard ); + } + + HBufC8* serializedParams = SerializeGenericParamListLC( aParams ); + TBool ret = iClient.NewFileL( aFileNames, serializedParams, + aFileType, aMultipleFiles ); + CleanupStack::PopAndDestroy(); // serializedParams + return ret; + } + + +// ---------------------------------------------------------------------------- +// CNewFileServiceClientImpl::NewFileL +// +// ---------------------------------------------------------------------------- +// +TBool CNewFileServiceClientImpl::NewFileL( RFile& aFileHandle, + CAiwGenericParamList* aParams, + TNewServiceFileType aFileType ) + { + TUid uid( KNullUid ); + + switch ( aFileType ) + { + case ENewFileServiceAudio: + { + uid = TUid::Uid( KVoiceRecorderAppUID3 ); + break; + } + + case ENewFileServiceVideo: + case ENewFileServiceImage: + { + uid = KUidCamcorder; + break; + } + default: + { + User::Leave( KErrNotSupported ); + } + }; + + return NewFileL( uid, aFileHandle, aParams, aFileType ); + } + + +// ---------------------------------------------------------------------------- +// CNewFileServiceClientImpl::NewFileL +// +// ---------------------------------------------------------------------------- +// +TBool CNewFileServiceClientImpl::NewFileL( TUid aApplicationUid, + RFile& aFileHandle, + CAiwGenericParamList* aParams, + TNewServiceFileType aFileType ) + { + + iClient.ConnectChainedAppL( aApplicationUid ); + + if ( !iServerAppMonitor ) + { + iServerAppMonitor = CApaServerAppExitMonitor::NewL( iClient, *this, + CActive::EPriorityStandard ); + } + + HBufC8* serializedParams = SerializeGenericParamListLC( aParams ); + TBool ret = iClient.NewFileL( aFileHandle, serializedParams, aFileType ); + + CleanupStack::PopAndDestroy(); // serializedParams + + return ret; + } + + +// ---------------------------------------------------------------------------- +// CNewFileServiceClientImpl::SerializeGenericParamListLC +// +// ---------------------------------------------------------------------------- +// +HBufC8* CNewFileServiceClientImpl::SerializeGenericParamListLC( + CAiwGenericParamList* aParams ) + { + if ( !aParams ) + { + HBufC8* dummy = HBufC8::NewLC( 0 ); // return dummy + return dummy; + } + + TInt size( aParams->Size() ); + HBufC8* serialized = HBufC8::NewLC( size ); + TPtr8 ptr = serialized->Des(); + RDesWriteStream stream( ptr ); + aParams->ExternalizeL( stream ); + stream.Close(); + return serialized; + } + +// End of File