javauis/mmapi_qt/baseline/src/recordcontrol.cpp
branchRCL_3
changeset 65 ae942d28ec0e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/mmapi_qt/baseline/src/recordcontrol.cpp	Tue Aug 31 15:09:22 2010 +0300
@@ -0,0 +1,235 @@
+/*
+* 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 has JNI wrappers for CMMARecordControl
+*
+*/
+
+
+#include <logger.h>
+
+#include <JniEnvWrapper.h>
+
+#include "com_nokia_microedition_media_control_RecordControl.h"
+#include "mmafunctionserver.h"
+#include "cmmarecordcontrol.h"
+#include "s60commonutils.h"
+#include "jstringutils.h"
+using namespace java::util;
+
+
+void VVoidFuncL(CMMARecordControl* aControl, void(CMMARecordControl::*aFunc)())
+{
+    (aControl->*aFunc)();
+}
+
+void TIntFuncL(CMMARecordControl* aControl, TInt(CMMARecordControl::*aFunc)(TInt),
+               TInt* aReturnValue)
+{
+    *aReturnValue = (aControl->*aFunc)(*aReturnValue);
+}
+/*
+ * Class:     com_nokia_microedition_media_RecordControl
+ * Method:    int _startRecord( int aEventSourceHandle, int aRecordControlHandle );
+ * Signature: (II)I
+ */
+JNIEXPORT jint JNICALL Java_com_nokia_microedition_media_control_RecordControl__1startRecord
+(JNIEnv *, jclass, jint aEventSourceHandle, jint aRecordControlHandle)
+{
+    LOG(EJavaMMAPI, EInfo, "Java_com_nokia_microedition_media_control_RecordControl__1startRecord");
+
+    MMAFunctionServer* eventSource =
+        reinterpret_cast< MMAFunctionServer* >(aEventSourceHandle);
+
+    CMMARecordControl* recordControl =
+        reinterpret_cast< CMMARecordControl* >(aRecordControlHandle);
+
+    return eventSource->ExecuteTrap(&VVoidFuncL,
+                                    recordControl,
+                                    &CMMARecordControl::StartRecordL);
+}
+
+/*
+ * Class:     com_nokia_microedition_media_RecordControl
+ * Method:    int _stopRecord( int aEventSourceHandle, int aRecordControlHandle );
+ * Signature: (II)I
+ */
+JNIEXPORT jint JNICALL Java_com_nokia_microedition_media_control_RecordControl__1stopRecord
+(JNIEnv *, jclass, jint aEventSourceHandle, jint aRecordControlHandle)
+{
+    LOG(EJavaMMAPI, EInfo, "Java_com_nokia_microedition_media_control_RecordControl__1stopRecord");
+
+    MMAFunctionServer* eventSource =
+        reinterpret_cast< MMAFunctionServer *>(aEventSourceHandle);
+
+    CMMARecordControl* recordControl =
+        reinterpret_cast< CMMARecordControl* >(aRecordControlHandle);
+
+    return eventSource->ExecuteTrap(&VVoidFuncL,
+                                    recordControl,
+                                    &CMMARecordControl::StopRecordL);
+}
+
+void CMMAOutputStreamFunc(void(CMMARecordControl::*aFunc)(CMMAOutputStream*),CMMARecordControl* aControl,
+                          CMMAOutputStream* aOutputStream)
+{
+    (aControl->*aFunc)(aOutputStream);
+}
+/*
+ * Class:     com_nokia_microedition_media_RecordControl
+ */
+JNIEXPORT jint JNICALL Java_com_nokia_microedition_media_control_RecordControl__1setRecordStream
+(JNIEnv *aJni, jclass, jint aEventSourceHandle, jint aRecordControlHandle, jobject aOutputWriter)
+{
+    LOG(EJavaMMAPI, EInfo, "Java_com_nokia_microedition_media_control_RecordControl__1setRecordStream");
+
+    MMAFunctionServer* eventSource =
+        reinterpret_cast< MMAFunctionServer *>(aEventSourceHandle);
+
+    CMMARecordControl* recordControl =
+        reinterpret_cast< CMMARecordControl* >(aRecordControlHandle);
+
+    jobject writerRef = aJni->NewWeakGlobalRef(aOutputWriter);
+    CMMAOutputStream* outputStream;
+
+    TInt err = eventSource->ExecuteTrap(CMMAOutputStream::CreateL,
+                                        &outputStream,
+                                        eventSource,
+                                        aJni,
+                                        (MMMAEventPoster*)eventSource,
+                                        writerRef);
+
+    if (err == KErrNone)
+    {
+        eventSource->ExecuteV(&CMMAOutputStreamFunc,
+                              &CMMARecordControl::SetRecordStream,
+                              recordControl,
+                              outputStream);
+
+        return reinterpret_cast<TInt>(outputStream);
+    }
+    else
+    {
+        aJni->DeleteWeakGlobalRef((jweak)writerRef);
+        return err;
+    }
+}
+
+void HBufCFunc(CMMARecordControl* aControl, HBufC*(CMMARecordControl::*aFunc)(),
+               HBufC** aBuf)
+{
+    *aBuf = (aControl->*aFunc)();
+}
+
+/*
+ * Class:     com_nokia_microedition_media_RecordControl
+ * Method:    String _getContentType( int aEventSourceHandle, int aRecordControlHandle );
+ * Signature: (II)I
+ */
+JNIEXPORT jstring JNICALL Java_com_nokia_microedition_media_control_RecordControl__1getContentType
+(JNIEnv *aJniEnv, jclass, jint aEventSourceHandle, jint aRecordControlHandle)
+{
+    LOG(EJavaMMAPI, EInfo, "Java_com_nokia_microedition_media_control_RecordControl__1getContentType");
+
+    MMAFunctionServer* eventSource =
+        reinterpret_cast< MMAFunctionServer* >(aEventSourceHandle);
+
+    CMMARecordControl* recordControl =
+        reinterpret_cast< CMMARecordControl* >(aRecordControlHandle);
+
+    const HBufC* contentType = NULL;
+    eventSource->ExecuteTrap(&HBufCFunc,
+                             recordControl,
+                             &CMMARecordControl::GetContentTypeL,
+                             (HBufC**)&contentType);
+
+    if (contentType != NULL)
+    {
+        return S60CommonUtils::NativeToJavaString(*aJniEnv, *contentType);
+    }
+    // ContentType is not known (Player not started?)
+    return S60CommonUtils::NativeToJavaString(*aJniEnv, KNullDesC);
+}
+
+/*
+ * Class:     com_nokia_microedition_media_RecordControl
+ * Method:    int _commit( int aEventSourceHandle, int aRecordControlHandle );
+ * Signature: (II)I
+ */
+JNIEXPORT jint JNICALL Java_com_nokia_microedition_media_control_RecordControl__1commit
+(JNIEnv *, jclass, jint aEventSourceHandle, jint aRecordControlHandle)
+{
+    LOG(EJavaMMAPI, EInfo, "Java_com_nokia_microedition_media_control_RecordControl__1commit");
+
+    MMAFunctionServer* eventSource =
+        reinterpret_cast< MMAFunctionServer *>(aEventSourceHandle);
+
+    CMMARecordControl* recordControl =
+        reinterpret_cast< CMMARecordControl* >(aRecordControlHandle);
+
+    return eventSource->ExecuteTrap(&VVoidFuncL,
+                                    recordControl,
+                                    &CMMARecordControl::CommitL);
+}
+
+/*
+ * Class:     com_nokia_microedition_media_RecordControl
+ * Method:    int _setRecordSizeLimit( int aEventSourceHandle, int aRecordControlHandle, int aSize );
+ * Signature: (III)I
+ */
+JNIEXPORT jint JNICALL Java_com_nokia_microedition_media_control_RecordControl__1setRecordSizeLimit
+(JNIEnv *, jclass, jint aEventSourceHandle, jint aRecordControlHandle, jint aSize)
+{
+    LOG(EJavaMMAPI, EInfo, "Java_com_nokia_microedition_media_control_RecordControl__1setRecordSizeLimit");
+
+    MMAFunctionServer* eventSource =
+        reinterpret_cast< MMAFunctionServer *>(aEventSourceHandle);
+
+    CMMARecordControl* recordControl =
+        reinterpret_cast< CMMARecordControl *>(aRecordControlHandle);
+
+    TInt err = eventSource->ExecuteTrap(&TIntFuncL,
+                                        recordControl,
+                                        &CMMARecordControl::SetRecordSizeLimitL,
+                                        &aSize);
+    if (err != KErrNone)
+    {
+        return err;
+    }
+
+    // return size of the set record size
+    return aSize;
+}
+
+/*
+ * Class:     com_nokia_microedition_media_RecordControl
+ * Method:    int _reset( int aEventSourceHandle, int aRecordControlHandle );
+ * Signature: (II)I
+ */
+JNIEXPORT jint JNICALL Java_com_nokia_microedition_media_control_RecordControl__1reset
+(JNIEnv *, jclass, jint aEventSourceHandle, jint aRecordControlHandle)
+{
+    LOG(EJavaMMAPI, EInfo, "Java_com_nokia_microedition_media_control_RecordControl__1reset");
+
+    MMAFunctionServer* eventSource =
+        reinterpret_cast< MMAFunctionServer *>(aEventSourceHandle);
+
+    CMMARecordControl* recordControl =
+        reinterpret_cast< CMMARecordControl *>(aRecordControlHandle);
+
+    return eventSource->ExecuteTrap(&VVoidFuncL,
+                                    recordControl,
+                                    &CMMARecordControl::ResetL);
+}
+
+//  END OF FILE