javauis/mmapi_qt/baseline/inc/mmafunctionserver.h
changeset 23 98ccebc37403
child 26 dc7c549001d5
--- /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 <jutils.h>
+#include "functionserver.h"
+#include "legacyeventserverwrapper.h"
+#include <logger.h>
+// 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