mmlibs/mmfw/tsrc/mmvalidationsuite/mmvalidationsuiteagents/inc/agentsutility.h
changeset 0 b8ed18f6c07b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmvalidationsuite/mmvalidationsuiteagents/inc/agentsutility.h	Thu Oct 07 22:34:12 2010 +0100
@@ -0,0 +1,137 @@
+// Copyright (c) 2005-2009 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:
+// Part of the MVS Agents for TechView
+//
+
+#ifndef AGENTSUTILITY_H
+#define AGENTSUTILITY_H
+
+#include <badesca.h>
+#include <mmf/common/mmfcontroller.h>
+#include <flogger.h>
+
+
+/**
+States of the Client
+*/
+enum TMVSState
+{
+	ENotReady	= 0,
+	EAudioOpening,
+	EAudioOpened,
+	EAudioPlaying,
+	EAudioRecording,
+	EAudioStopped,
+	EVideoOpening,
+	EVideoOpened,
+	EVideoPlaying,
+	EVideoRecording,
+	EVideoStopped,
+	EVideoPaused,
+	EAudioPaused
+};
+
+/**
+Modes of the Client
+*/
+enum TMVSMode
+{
+	EAudioRecord,
+	EAudioPlay,
+	EVideoRecord,
+	EVideoPlay,
+	EIdle
+};	
+ 
+
+/**
+@publishedPartner
+@prototype
+@test
+
+An interface to Client callback function
+This serves as the method of communication between the Client and the UI
+
+*/
+class MMVSClientObserver
+{
+public:
+	
+	/**
+	
+	Called when a multimedia controller plugin changes state e.g. when audio starts to play, 
+	the state changes from EAudioOpened to EAudioPlaying
+	
+	@param  aState
+	        Current State of the Client
+	@param  aError
+	        Error code. The status of the current operation
+	*/
+	virtual void UpdateStateChange(TMVSState aState, TInt aError) = 0;
+	
+	/**
+	Called when the audio resource becomes available but only if the resource was previously unavailable (e.g. if 
+	the audio resource is available when the client registers, then this callback is not received).
+
+	@param  aNotificationData
+			The data that corresponds to the notification event
+	*/
+	virtual void MvsResourceNotification(const TDesC8& aNotificationData) = 0;
+
+};
+
+
+/**
+@publishedPartner
+@prototype
+@test
+
+Utility class that does fetching the existing controller plugins,the extensions
+supported by them and finding the type of the media file for the UI.
+*/
+class CMVSControllerPluginInfo: public CBase
+{
+public:
+	IMPORT_C static CMVSControllerPluginInfo* NewL();
+	IMPORT_C ~CMVSControllerPluginInfo();
+
+	IMPORT_C  TInt GetPluginListL(CDesCArrayFlat* aDisplayNames, RArray<TUid>& aUidArray);
+	IMPORT_C  TInt GetAudioPluginListL(CDesCArrayFlat* aDisplayNames, RArray<TUid>& aUidArray,RArray<TUid>& aUidPlayArray, TDesC* aExt);
+	IMPORT_C  TInt GetVideoPluginListL(CDesCArrayFlat* aDisplayNames, RArray<TUid>& aUidArray, TDesC* aExt);	
+	IMPORT_C TInt GetExtensionListL(TBool aControllerUid, CDesCArrayFlat* aExtArray);
+	IMPORT_C TUid GetMediaTypeL(TDesC& aFileName);
+	IMPORT_C CMMFControllerImplementationInformation& GetControllerInfo(TUid aControllerUid);
+private:
+	void CollectAudioControllersL(TDesC* aExt);
+	void CollectAudioPlayControllersL(TDesC* aExt);
+	void CollectVideoControllersL(TDesC* aExt);
+	void ConstructL(); //populate iControllers
+	CMVSControllerPluginInfo();
+	void GetHeaderL(TDesC& aFileName, TDes8& aHeaderData);
+private:
+	//list of controller info objects
+	RMMFControllerImplInfoArray iControllers;
+	RMMFControllerImplInfoArray iSupportedControllers;
+	RArray<TUid> iUidArray;
+	RMMFControllerImplInfoArray iAudioControllers;
+	RMMFControllerImplInfoArray iVideoControllers;
+	RMMFControllerImplInfoArray iAudioPlayControllers;
+	RArray<TUid> iAudioUidArray;
+	RArray<TUid> iAudioPlayUidArray;
+	RArray<TUid> iVideoUidArray;
+	RFileLogger iFileLogger;
+};
+
+
+#endif AGENTSUTILITY_H