--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/mmapi_qt/volumekeys/src/Foreground.cpp Tue Aug 31 15:09:22 2010 +0300
@@ -0,0 +1,172 @@
+/*
+* Copyright (c) 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: JNI implementation for handling midlet foreground status
+*
+*/
+
+
+// EXTERNAL INCLUDES
+//#include <jutils.h>
+#include <logger.h>
+
+//#include <mswtclient.h>
+//#include <swtcliententry.h>
+
+// INTERNAL INCLUDES
+#include "com_nokia_microedition_volumekeys_ForegroundListener.h"
+#include "cmmaforeground.h"
+#include "mmafunctionserver.h"
+#include "cmmaglobalvolume.h"
+
+// for xm-radio fix
+//#include "CMIDToolkit.h"
+
+/**
+ * Static delegator function for initialize.
+ * @param aReturnHandle Native class object.
+ * @param aEventSource Event source handle.
+ * @param aForegroundListener ForegroundListener java object.
+ * @param aJavaMethod java method ID.
+ */
+LOCAL_C void CreateForegroundL(
+ TInt* aReturnHandle,
+ MMAFunctionServer* aEventSource,
+ jobject aForegroundListener,
+ jmethodID aJavaMethod/*,
+ CMIDToolkit* aToolkit*/) // xm-radio fix
+{
+ CMMAForeground* foreground =
+ CMMAForeground::NewL(aEventSource,
+ aForegroundListener,
+ aJavaMethod/*,
+ aToolkit */// xm-radio fix
+ );
+ CleanupStack::PushL(foreground);
+
+ // Create global volume which handles the volume events
+ CMMAGlobalVolume* globalVolume = CMMAGlobalVolume::NewL(foreground);
+ // Global volume takes the ownership of the foreground listener
+ CleanupStack::Pop(foreground);
+ // Set global volume to MMA event source. The ownership transfers to
+ // MMA event sources as it handles adding and removing players
+ aEventSource->SetGlobalVolume(globalVolume);
+ *aReturnHandle = reinterpret_cast <TInt>(foreground);
+}
+
+/*
+ * Class: com_nokia_microedition_volumekeys_ForegroundListener
+ * Method: _initialize
+ * Signature: (ILjava/lang/Object;)I
+ */
+JNIEXPORT jint JNICALL Java_com_nokia_microedition_volumekeys_ForegroundListener__1initialize
+(JNIEnv* aJni,
+ jobject /*aJobject*/,
+ jint aEventSourceHandle,
+ jobject aForegroundListener /*,
+ jint aToolkitHandle*/) // for xm-radio fix
+{
+ MMAFunctionServer* eventSource =
+ reinterpret_cast< MMAFunctionServer *>(aEventSourceHandle);
+
+ jobject fgListenerObject = NULL;
+ fgListenerObject = aJni->NewWeakGlobalRef(aForegroundListener);
+
+ jclass foregroundListenerClass = aJni->GetObjectClass(fgListenerObject);
+
+ jmethodID javaMethod = aJni->GetMethodID(
+ foregroundListenerClass,
+ "update",
+ "()V");
+
+ TInt foregroundHandle = NULL;
+
+ // xm-radio fix
+ /*
+ CMIDToolkit* ptoolkit = JavaUnhand< CMIDToolkit >(aToolkitHandle);
+ */
+ jint error = eventSource->ExecuteTrap(CreateForegroundL,
+ &foregroundHandle,
+ eventSource,
+ fgListenerObject,
+ javaMethod/*,
+ ptoolkit*/); // xm-radio fix
+
+ if (error != KErrNone)
+ {
+ aJni->DeleteGlobalRef(fgListenerObject);
+ }
+
+ return (error != KErrNone) ? error : foregroundHandle;
+}
+
+/**
+ * Static delegator function for setforeground
+ * @param aCMMAForeground native class.
+ * @param aIsForeground boolean is midlet foreground or not.
+
+ */
+LOCAL_C void SetForeground(
+ CMMAForeground* aCMMAForeground,
+ TBool aIsForeground)
+{
+ aCMMAForeground->SetForeground(aIsForeground);
+}
+
+/*
+* Class: com_nokia_microedition_volumekeys_ForegroundListener
+* Method: _setForeground
+* Signature: (IZ)V
+*/
+JNIEXPORT void JNICALL Java_com_nokia_microedition_volumekeys_ForegroundListener__1setForeground
+(JNIEnv* /*aJni*/,
+ jobject /*aJobject*/,
+ jint aEventSourceHandle,
+ jint aForegroundHandle,
+ jboolean aIsForeground)
+{
+ MMAFunctionServer* eventSource =
+ reinterpret_cast<MMAFunctionServer*>(aEventSourceHandle);
+
+ CMMAForeground* nativeHandle =
+ reinterpret_cast<CMMAForeground*>(aForegroundHandle);
+
+ eventSource->ExecuteV(SetForeground,
+ nativeHandle,
+ (TBool) aIsForeground);
+}
+
+
+/*
+JNIEXPORT jboolean JNICALL Java_com_nokia_microedition_volumekeys_ForegroundListener__1isESWT
+(JNIEnv *, jobject)
+{
+
+
+ MSwtClient* client = NULL;
+ TRAP_IGNORE(client = SWT::CreateClientL());
+
+ if (!client)
+ {
+ return false; // LCDUI midlet running
+ }
+ else
+ {
+ delete client;
+ client = NULL;
+ return true; // eSWT midlet running
+ }
+}
+
+*/
+// END OF FILE