diff -r ae942d28ec0e -r 2455ef1f5bbc javauis/lcdui_akn/javalcdui/src/CustomItem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/lcdui_akn/javalcdui/src/CustomItem.cpp Wed Sep 01 12:33:18 2010 +0100 @@ -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 // 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(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(aToolkit); + MMIDCustomItem* customItem = MIDUnhand(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(&rect)); + rect.iBr.iX+=rect.iTl.iX; + rect.iBr.iY+=rect.iTl.iY; + } + MMIDCustomItem* item = MIDUnhandObject(aItem); + CMIDToolkit* toolkit = JavaUnhand(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(aToolkit); + MMIDCustomItem* customItem = MIDUnhand(aCustomItem); + TSize minSize(aMinWidth,aMinHeight); + TSize prefSize(aPreWidth, aPreHeight); + + toolkit->ExecuteV(Invalidate, customItem, minSize, prefSize); +}