diff -r 2a9601315dfc -r 98ccebc37403 javauis/mmapi_qt/baseline/inc/mmafunctionserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/mmapi_qt/baseline/inc/mmafunctionserver.h Fri May 14 15:47:24 2010 +0300 @@ -0,0 +1,194 @@ +/* +* Copyright (c) 2002 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: This class provides CJavaEventSource services +* +*/ + + +#ifndef CMMAEVENTSOURCE_H +#define CMMAEVENTSOURCE_H + +// INCLUDES +#include "mmmaeventposter.h" +//#include +#include "functionserver.h" +#include "legacyeventserverwrapper.h" +#include +// FORWARD DECLARATIONS +class CApaWindowGroupName; +class CMMAPlayer; +class MMMAPlayerInstanceObserver; +#ifdef RD_JAVA_VOLUME_CONTROL +class CMMAGlobalVolume; +#endif // RD_JAVA_VOLUME_CONTROL + +// CLASS DECLARATION +/** +* This class provides CJavaEventSource services. +* +* +*/ + +class MMAFunctionServer : public java::util::FunctionServer,public LegacyEventServerWrapper, + public MMMAEventPoster +{ +public: + /** + * Default constructor. + */ + MMAFunctionServer(JNIEnv& aJni, jobject aPeer); + + /** + * Destructor. + */ + ~MMAFunctionServer(); + +public: // From CJavaEventSource, construction + /** + * Normal construction, Invoked from base class. + * Method is defined in the base class. + */ + void ConstructL(JNIEnv& aJni, + jobject aPeer + ); + + /** + * Server side construction. + */ + void ConstructSvrL(); + static TInt NewL(JNIEnv& aJni, jobject aPeer); + + void Dispose(); + + TBool IsDisposed() const + { + return iDisposed; + } + +public: // new methods + /** + * Adds object to cleanup. Added objects are deleted when event source + * is deleted. + * + * @param aEventSource Event source to use. + * @param aHandle Java handle to CBase object + */ + IMPORT_C static void StaticAddObjectFromHandleL(MMAFunctionServer* aEventSource, + TInt aHandle); + + /** + * Adds player object to cleanup. Added objects are deleted when event + * source is deleted. An object added to the event source must be + * deleted with DisposePlayer method. + * + * @param aEventSource Event source to use. + * @param aHandle Java handle to CBase object + */ + void AddPlayerL(CMMAPlayer* aPlayer); + + /** + * Removes player from array and deletes it. + * + * @param aPlayer Player to be deleted. + */ + void DisposePlayer(CMMAPlayer* aPlayer); + + /** + * Sets player instance observer. + * @param aObserver Will be informed when player is created or deleted. + */ + IMPORT_C void SetPlayerInstanceObserver(MMMAPlayerInstanceObserver* aObserver); + + /** + * Return reference to the array containing all players. + * @return All players + */ + IMPORT_C RPointerArray< CMMAPlayer >& Players(); + + /** + * Realeases resources. + */ + void Release(); + + /** + * Returns player pointer for java player handle if the native player + * peer exists. Otherwise returns null. + * @param aPlayerHandle Java side player handle integer + * @param CMMAPlayer* player pointer + */ + CMMAPlayer* FindPlayer(TInt aPlayerHandle); + + /** + * Sets MMA global volume handler + * @param aGlobalVolume Global volume handler. The onwership is + * transferred to this class + */ +#ifdef RD_JAVA_VOLUME_CONTROL + void SetGlobalVolume(CMMAGlobalVolume* aGlobalVolume); +#endif // RD_JAVA_VOLUME_CONTROL + + java::util::FunctionServer* getFunctionServer() const; + + JNIEnv* getValidJniEnv(); + jobject getPeer(); +private: + /** + * @see StaticAddObjectFromHandleL + * @param aHandle Java handle to CBase object + */ + void AddObjectFromHandleL(TInt aHandle); + +private: // from CJavaEventSource + void FinalizeSvr(); + +public: // MMMAEventPoster + void PostEvent(CMMAEvent* aEvent, TInt aPriority); + +private: + bool mVmAttached; + java::util::FunctionServer* iServer; +private: + /** + * Objects added with StaticAddObjectFromHandleL. Will be destroyed + * in server finalization. + */ + RPointerArray< CBase > iObjects; + + // Owned array of players. + RPointerArray< CMMAPlayer > iPlayers; + + /** + * MMA needs ui framework. Window group must be hidden from the + * user. + */ + CApaWindowGroupName* iWgName; + + /** + * Used to check if session was connected in the constructor. + */ + TBool iFbsSessionConnected; + TBool iDisposed; + + // Not owned. Will be informed if it is set. + MMMAPlayerInstanceObserver* iInstanceObserver; + + JavaVM* iJavaVM; + + // Global volume handler. Owned +#ifdef RD_JAVA_VOLUME_CONTROL + CMMAGlobalVolume* iGlobalVolume; +#endif // RD_JAVA_VOLUME_CONTROL +}; + +#endif // CMMAEVENTSOURCE_H