diff -r f5050f1da672 -r 04becd199f91 javauis/lcdui_akn/javalcdui/src/List.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/lcdui_akn/javalcdui/src/List.cpp Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,221 @@ +/* +* Copyright (c) 2001-2005 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 "CMIDToolkit.h" +#include "MIDUtils.h" +#include "javax_microedition_lcdui_List.h" +#include "lcdgr.h" + +struct TListCreate +{ + jweak iRef; + jint iDisplayable; + jint iType; +}; + +struct TListAttribs +{ + jint iHandle; + TSize iSize; +}; + +LOCAL_C void CreateListL(CMIDToolkit* aToolkit, TListCreate* aCreate, TListAttribs* aAttribs) +{ + MMIDDisplayable& displayable = *MIDUnhand(aCreate->iDisplayable); + MMIDComponentFactory& factory = *aToolkit->ComponentFactory(); + RArray dummyTextArray; + RArray dummyIconArray; + TInt type = aCreate->iType; + MMIDList* list = factory.CreateListL(type, displayable, dummyTextArray, dummyIconArray); + CleanupDisposePushL(list); + aAttribs->iHandle = aToolkit->RegisterComponentL(list, aCreate->iRef); + CleanupPopComponent(list); + aCreate->iRef = 0; + aAttribs->iSize = displayable.ContentSize(); +} + +JNIEXPORT jint JNICALL Java_javax_microedition_lcdui_List__1create +( + JNIEnv* aJni, + jobject aList, + jint aToolkit, + jint aDisplayable, + jint aType, + jintArray aCreateListReturn +) +{ + jint error = 0; + + TListCreate create; + create.iRef = aJni->NewWeakGlobalRef(aList); + create.iDisplayable=aDisplayable; + create.iType = aType; + + TListAttribs attribs; + attribs.iHandle = 0; + + if (create.iRef) + { + CMIDToolkit* toolkit = JavaUnhand(aToolkit); + error = toolkit->ExecuteTrap(CreateListL, toolkit, &create, &attribs); + } + else + { + error = KErrNoMemory; + } + + if (create.iRef) + { + // cleared in CreateListL if successful + aJni->DeleteWeakGlobalRef(create.iRef); + } + + ASSERT(aJni->GetArrayLength(aCreateListReturn) == 3); + jint arrayReturn[3]; + arrayReturn[0] = attribs.iHandle; + arrayReturn[1] = attribs.iSize.iWidth; + arrayReturn[2] = attribs.iSize.iHeight; + aJni->SetIntArrayRegion(aCreateListReturn, 0, 3, arrayReturn); + + return error; +} + +LOCAL_C void InvokeSetSelectCommand(jint aList, jint aID) +{ + MMIDList* list = MIDUnhandObject(aList); + list->SetSelectCommand(aID); +} + +JNIEXPORT void JNICALL Java_javax_microedition_lcdui_List__1setSelectCommand(JNIEnv*, jobject, jint aList, jint aToolkit, jint aID) +{ + JavaUnhand(aToolkit)->ExecuteV(&InvokeSetSelectCommand, aList, aID); +} + +LOCAL_C void InsertElementL(MMIDList* aChoice,TInt aIndex,const TDesC* aText,MMIDImage* aImage) +{ + aChoice->InsertElementL(aIndex,*aText,aImage); +} +JNIEXPORT jint JNICALL Java_javax_microedition_lcdui_List__1insert +( + JNIEnv* aEnv, + jobject, + jint aList, + jint aToolkit, + jint aIndex, + jstring aStringItem, + jint aImage +) +{ + RJString string(*aEnv,aStringItem); + CMIDToolkit* toolkit = JavaUnhand(aToolkit); + MMIDList* list = MIDUnhandObject(aList); + MMIDImage* image = MIDUnhandObject(aImage); + return toolkit->ExecuteTrap( + &InsertElementL, + list, + (TInt)aIndex, + (const TDesC*)&string, + image + ); +} + +LOCAL_C void DeleteElementL(MMIDList* aChoice,TInt aIndex) +{ + aChoice->DeleteElementL(aIndex); +} + +JNIEXPORT jint JNICALL Java_javax_microedition_lcdui_List__1delete +(JNIEnv *, jobject, jint aList, jint aToolkit, jint aIndex) +{ + MMIDList* list = MIDUnhandObject(aList); + return JavaUnhand(aToolkit)->ExecuteTrap(&DeleteElementL,list,(TInt)aIndex); +} + +LOCAL_C void DeleteAllL(MMIDList* aChoice) +{ + aChoice->DeleteAllL(); +} + +JNIEXPORT jint JNICALL Java_javax_microedition_lcdui_List__1deleteAll +(JNIEnv *, jobject, jint aList, jint aToolkit) +{ + MMIDList* list = MIDUnhandObject(aList); + return JavaUnhand(aToolkit)->ExecuteTrap(&DeleteAllL,list); +} + +LOCAL_C void SetElementL(MMIDList* aChoice,TInt aIndex,const TDesC* aText,MMIDImage* aImage) +{ + aChoice->SetElementL(aIndex,*aText,aImage); +} + +JNIEXPORT jint JNICALL Java_javax_microedition_lcdui_List__1set +(JNIEnv* aEnv,jobject,jint aList,jint aToolkit,jint aIndex,jstring aStringItem,jint aImage) +{ + RJString string(*aEnv,aStringItem); + CMIDToolkit* toolkit = JavaUnhand(aToolkit); + MMIDList* list = MIDUnhandObject(aList); + MMIDImage* image = MIDUnhandObject(aImage); + return toolkit->ExecuteTrap(&SetElementL, list,(TInt)aIndex,(const TDesC*)&string,image); +} + +LOCAL_C TBool IsSelected(MMIDList* aChoice,TInt aIndex) +{ + return aChoice->IsSelected(aIndex); +} + +JNIEXPORT jboolean JNICALL Java_javax_microedition_lcdui_List__1isSelected +(JNIEnv*,jobject,jint aList,jint aToolkit,jint aIndex) +{ + MMIDList* list = MIDUnhandObject(aList); + return (jboolean)JavaUnhand(aToolkit)->Execute(&IsSelected,list,(TInt)aIndex); +} + +LOCAL_C void SelectElementL(MMIDList* aChoice,TInt aIndex,TBool aSelected) +{ + aChoice->SelectElementL(aIndex,aSelected); +} + +JNIEXPORT jint JNICALL Java_javax_microedition_lcdui_List__1select +(JNIEnv*,jobject,jint aList,jint aToolkit,jint aIndex,jboolean aSelected) +{ + MMIDList* list = MIDUnhandObject(aList); + return JavaUnhand(aToolkit)->ExecuteTrap(&SelectElementL,list,(TInt)aIndex,(TBool)aSelected); +} + +LOCAL_C void SetFontL(MMIDList* aChoice,TInt aIndex, MMIDFont* aFont) +{ + aChoice->SetFontL(aIndex,aFont); +} +JNIEXPORT jint JNICALL Java_javax_microedition_lcdui_List__1setFont +(JNIEnv*,jobject,jint aItem,jint aToolkit,jint aIndex,jint aFont) +{ + MMIDList* choice = MIDUnhandObject(aItem); + MMIDFont* font = MIDUnhandObject(aFont); + CMIDToolkit* toolkit = JavaUnhand(aToolkit); + return toolkit->ExecuteTrap(&SetFontL,choice,(TInt)aIndex,font); +} + +LOCAL_C void SetFitPolicyL(MMIDList* aChoice,TInt aFitPolicy) +{ + aChoice->SetFitPolicyL(aFitPolicy); +} +JNIEXPORT jint JNICALL Java_javax_microedition_lcdui_List__1setFitPolicy +(JNIEnv*,jobject,jint aItem,jint aToolkit,jint aFitPolicy) +{ + MMIDList* choice = MIDUnhandObject(aItem); + return JavaUnhand(aToolkit)->ExecuteTrap(&SetFitPolicyL,choice,(TInt)aFitPolicy); +}