--- /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 <s32mem.h>
+#include <e32cmn.h>
+#include <AiwGenericParam.h>
+
+#include "NewFileServiceClient.h"
+#include "RNewFileServiceClient.h"
+#include "CNewFileServiceClientImpl.h"
+
+#include <VoiceRecorderUID.h>
+#include <CcorUiConstants.h>
+#include <avkon.hrh>
+
+
+// ============================ 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