javauis/lcdui_akn/javalcdui/src/List.cpp
branchRCL_3
changeset 19 04becd199f91
--- /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<MMIDDisplayable>(aCreate->iDisplayable);
+    MMIDComponentFactory& factory = *aToolkit->ComponentFactory();
+    RArray<TPtrC>      dummyTextArray;
+    RArray<MMIDImage*> 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<CMIDToolkit>(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<MMIDList>(aList);
+    list->SetSelectCommand(aID);
+}
+
+JNIEXPORT void JNICALL Java_javax_microedition_lcdui_List__1setSelectCommand(JNIEnv*, jobject, jint aList, jint aToolkit, jint aID)
+{
+    JavaUnhand<CMIDToolkit>(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<CMIDToolkit>(aToolkit);
+    MMIDList*  list  = MIDUnhandObject<MMIDList>(aList);
+    MMIDImage* image = MIDUnhandObject<MMIDImage>(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<MMIDList>(aList);
+    return JavaUnhand<CMIDToolkit>(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<MMIDList>(aList);
+    return JavaUnhand<CMIDToolkit>(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<CMIDToolkit>(aToolkit);
+    MMIDList*  list  = MIDUnhandObject<MMIDList>(aList);
+    MMIDImage* image = MIDUnhandObject<MMIDImage>(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<MMIDList>(aList);
+    return (jboolean)JavaUnhand<CMIDToolkit>(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<MMIDList>(aList);
+    return JavaUnhand<CMIDToolkit>(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<MMIDList>(aItem);
+    MMIDFont* font = MIDUnhandObject<MMIDFont>(aFont);
+    CMIDToolkit* toolkit = JavaUnhand<CMIDToolkit>(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<MMIDList>(aItem);
+    return JavaUnhand<CMIDToolkit>(aToolkit)->ExecuteTrap(&SetFitPolicyL,choice,(TInt)aFitPolicy);
+}