voicerecorder/NewServiceSrc/CNewFileServiceClientImpl.cpp
branchRCL_3
changeset 21 c6bafb5162d8
parent 0 845549f293a7
--- /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