javauis/lcdui_akn/javalcdui/src/CustomItem.cpp
branchRCL_3
changeset 19 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/lcdui_akn/javalcdui/src/CustomItem.cpp	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,121 @@
+/*
+* Copyright (c) 1999 - 2003 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:
+*
+*/
+
+#include <e32def.h> // MAKE_TINT_64
+#include "javax_microedition_lcdui_CustomItem.h"
+#include "CMIDToolkit.h"
+#include "MIDUtils.h"
+
+LOCAL_C void CreateL
+(
+    CMIDToolkit*    aToolkit,
+    TInt*       aHandle,
+    jobject     aReference,
+    const TDesC*    aLabel
+)
+//
+// Creates the plataform dependent MMIDCustomItem
+//
+{
+    MMIDCustomItem* customItem = aToolkit->ComponentFactory()->CreateCustomItemL(*aLabel);
+    CleanupDisposePushL(customItem);
+    *aHandle = aToolkit->RegisterComponentL(customItem, aReference);
+    CleanupPopComponent(customItem);
+}
+JNIEXPORT jint JNICALL Java_javax_microedition_lcdui_CustomItem__1create
+(
+    JNIEnv* aJni,
+    jobject,
+    jint    aToolkit,
+    jobject aCustomItem,
+    jstring aLabel
+)
+{
+    jobject customItem = aJni->NewWeakGlobalRef(aCustomItem);
+    if (customItem == 0)
+        return KErrNoMemory;
+
+    //
+    CMIDToolkit* toolkit = JavaUnhand<CMIDToolkit>(aToolkit);
+    RJString label(*aJni,aLabel);
+
+    TInt handle = 0;
+    TInt err = toolkit->ExecuteTrap(&CreateL,toolkit,&handle,customItem,(const TDesC*)&label);
+    if (err!=KErrNone)
+    {
+        aJni->DeleteWeakGlobalRef((jweak)customItem);
+        return err;
+    }
+
+    return handle;
+}
+
+
+
+LOCAL_C TInt InvokeInteractionModes(MMIDCustomItem* aItem)
+{
+    return aItem->InteractionModes();
+}
+JNIEXPORT jint JNICALL Java_javax_microedition_lcdui_CustomItem__1getInteractionModes
+(
+    JNIEnv*,
+    jobject,
+    jint    aToolkit,
+    jint    aItem
+)
+{
+    CMIDToolkit* toolkit = JavaUnhand<CMIDToolkit>(aToolkit);
+    MMIDCustomItem* customItem = MIDUnhand<MMIDCustomItem>(aItem);
+    return toolkit->Execute(InvokeInteractionModes, customItem);
+}
+
+LOCAL_C void InvokeSetFocusAndScroll(MMIDCustomItem* aItem, TBool aKeepFocus, const TRect* aRect,TInt aDirection)
+{
+    aItem->SetFocusAndScroll(aKeepFocus, aRect, aDirection);
+}
+JNIEXPORT void JNICALL Java_javax_microedition_lcdui_CustomItem__1setFocusAndScroll
+(JNIEnv* aJni,jobject,jint aToolkit,jint aItem,jboolean aKeepFocus,jintArray aScrollRect,jint aDirection)
+{
+    TRect rect;
+    const TRect* pRect = (aScrollRect != NULL ? &rect : NULL);
+    if (pRect)
+    {
+        ASSERT(sizeof(TRect) == 4*sizeof(jint));
+        aJni->GetIntArrayRegion(aScrollRect, 0, 4, reinterpret_cast<jint*>(&rect));
+        rect.iBr.iX+=rect.iTl.iX;
+        rect.iBr.iY+=rect.iTl.iY;
+    }
+    MMIDCustomItem* item = MIDUnhandObject<MMIDCustomItem>(aItem);
+    CMIDToolkit* toolkit = JavaUnhand<CMIDToolkit>(aToolkit);
+
+    toolkit->ExecuteV(InvokeSetFocusAndScroll, item, (TBool)aKeepFocus, pRect,(TInt)aDirection);
+}
+
+LOCAL_C void Invalidate(MMIDCustomItem* aCustomItem, TSize aMinSize, TSize aPrefSize)
+{
+    aCustomItem->Invalidate(aMinSize,aPrefSize);
+}
+JNIEXPORT void JNICALL Java_javax_microedition_lcdui_CustomItem__1invalidate
+(JNIEnv*,jobject,jint aToolkit,jint aCustomItem,jint aMinWidth,jint aMinHeight,jint aPreWidth,jint aPreHeight)
+{
+    CMIDToolkit*    toolkit    = JavaUnhand<CMIDToolkit>(aToolkit);
+    MMIDCustomItem* customItem = MIDUnhand<MMIDCustomItem>(aCustomItem);
+    TSize minSize(aMinWidth,aMinHeight);
+    TSize prefSize(aPreWidth, aPreHeight);
+
+    toolkit->ExecuteV(Invalidate, customItem, minSize, prefSize);
+}