diff --git a/bindings/android-sdk/android_bindings_generator.lpi b/bindings/android-sdk/android_bindings_generator.lpi
index d781dcf58..1932ee8dd 100644
--- a/bindings/android-sdk/android_bindings_generator.lpi
+++ b/bindings/android-sdk/android_bindings_generator.lpi
@@ -39,7 +39,7 @@
-
+
@@ -48,7 +48,7 @@
-
+
@@ -59,9 +59,9 @@
-
+
-
+
@@ -71,7 +71,7 @@
-
+
@@ -79,7 +79,7 @@
-
+
@@ -87,7 +87,7 @@
-
+
@@ -95,7 +95,7 @@
-
+
@@ -103,25 +103,26 @@
-
+
-
+
+
-
-
-
+
+
+
@@ -130,7 +131,7 @@
-
+
@@ -138,14 +139,14 @@
-
+
-
+
@@ -153,7 +154,7 @@
-
+
@@ -162,7 +163,7 @@
-
+
@@ -170,7 +171,7 @@
-
+
@@ -178,7 +179,7 @@
-
+
@@ -186,23 +187,23 @@
-
+
-
+
-
-
-
+
+
+
@@ -212,14 +213,14 @@
-
+
-
+
@@ -229,36 +230,37 @@
-
+
+
-
-
-
+
+
+
+
-
-
-
-
+
+
+
-
+
-
+
@@ -267,200 +269,200 @@
-
+
-
-
-
+
-
-
-
+
-
-
-
+
-
-
-
+
-
-
-
+
-
-
-
+
-
+
-
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
+
+
+
+
diff --git a/bindings/android-sdk/android_sdk_bindings_gen.pas b/bindings/android-sdk/android_sdk_bindings_gen.pas
index 637e849d1..78d1dd942 100644
--- a/bindings/android-sdk/android_sdk_bindings_gen.pas
+++ b/bindings/android-sdk/android_sdk_bindings_gen.pas
@@ -22,17 +22,27 @@ type
FClassNum, FMethodNum: Integer;
FIsGlobalObject: Boolean;
FGlobalObject: string;
+ // List of Callback types which are used later
+ FCallbackTypesJavaName: TStringList;
+ FCallbackTypesParams: TStringList;
+ FCallbackTypesInnerName: TStringList;
+ FCallbackTypesFirstParam: TStringList;
//
// ProcessMethodReturnValue
FMethodReturnPas, FDeclarationBase: string;
FDeclarationIsFunction: Boolean;
// ProcessMethodName
FMethodName: string;
+ // ProcessMethodPreface
+ FJavaParamSelf: String;
+ FIDString: String;
+ FIDSetter, FIDStart, FIDFinished: String;
+ FCallbackName, FSetterName, FCallerName: string;
// ProcessMethodParameters
- FPascalParams, FJavaParams: string;
+ FPascalParams, FJavaParams, FFirstParam: string;
FHasStringParam: Boolean;
FPasOutputImplCurLine: Integer;
- FCallbackTypePas: string;
+ FCallbackTypePas, FCallbackTypeJava: string;
//
procedure GeneratePascalFile(ASourceFile: string; ADest: TStringList);
procedure GenerateJavaFile(ASourceFile: string; ADest: TStringList);
@@ -47,6 +57,7 @@ type
//
procedure ProcessMethodReturnValue(ASourceLine: string; var lReaderPos: Integer);
procedure ProcessMethodName(ASourceLine: string; var lReaderPos: Integer);
+ procedure ProcessMethodPreface(ASourceLine: string; AIsCallback: Boolean);
procedure ProcessMethodParameters(ASourceLine: string; var lReaderPos: Integer; AAddParamRead: Boolean = True);
//
function GetNextWord(ALine: string; var AStartPos: Integer): string;
@@ -162,6 +173,7 @@ begin
ADest.Add(' JavaLang MyJavaLang;');
ADest.Add(' // lists of variables');
ADest.Add(' ArrayList ViewElements;');
+ ADest.Add(' ArrayList ViewElementsTags;');
ADest.Add('');
ADest.Add(' public AndroidAll(AndroidPipesComm AAndroidPipesComm, Activity AActivity, JavaLang AJavaLang)');
ADest.Add(' {');
@@ -169,6 +181,7 @@ begin
ADest.Add(' MyAndroidPipesComm = AAndroidPipesComm;');
ADest.Add(' MyJavaLang = AJavaLang;');
ADest.Add(' ViewElements = new ArrayList();');
+ ADest.Add(' ViewElementsTags = new ArrayList();');
ADest.Add(' }');
ADest.Add('');
ADest.Add(' public void DebugOut(String Str)');
@@ -205,13 +218,15 @@ begin
ADest.Add(' ArrayAdapter param_self_ArrayAdapter_String_;');
ADest.Add(' AdapterView param_self_AdapterView;');
ADest.Add(' AlertDialog.Builder param_self_AlertDialog_Builder;');
+ ADest.Add(' Dialog param_self_Dialog;');
+ ADest.Add(' AlertDialog param_self_AlertDialog;');
ADest.Add(' //');
ADest.Add(' // Params');
ADest.Add(' //');
ADest.Add(' ViewGroup.LayoutParams lViewGroup_LayoutParams_1, lViewGroup_LayoutParams_2, lViewGroup_LayoutParams_3;');
ADest.Add(' SpinnerAdapter lSpinnerAdapter_1;');
ADest.Add(' DisplayMetrics lDisplayMetrics_1;');
- ADest.Add(' CharSequence lCharSequence_1;');
+ ADest.Add(' CharSequence lCharSequence_1, lCharSequence_2;');
ADest.Add(' String lString_1;');
ADest.Add(' View lView_1;');
ADest.Add(' int lint_1, lint_2, lint_3, lint_4;');
@@ -579,6 +594,7 @@ begin
else
begin
FJavaOutputMethods.Add(Format(' ViewElements.add(%s);', [lMethodReturnJavaIdentifier]));
+ FJavaOutputMethods.Add( ' ViewElementsTags.add(null);');
FJavaOutputMethods.Add(Format(' MyAndroidPipesComm.%s(ViewElements.size() - 1);', [GetJavaResultFunction(lMethodReturn)]))
end;
end;
@@ -673,6 +689,7 @@ begin
FPasOutputImpl.Add('end;');
FJavaOutputMethods.Add(' ViewElements.add(new ' + FClassName + '(' + lConstructorJavaParams + '));');
+ FJavaOutputMethods.Add(' ViewElementsTags.add(null);');
FJavaOutputMethods.Add(' MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);');
FJavaOutputMethods.Add(' break;');
@@ -701,10 +718,12 @@ procedure TAndroidSDKBindingsGen.ProcessModelCallbackSetter(ASourceLine: string)
var
lReaderPos: Integer = 1;
lCurWord: string;
- lSetterName, lCallerName, lCallbackName, lCallbackDeclaration: string;
- lIDSetter, lIDStart, lIDFinished: String;
- lJavaParamSelf: string;
lStr: String;
+ lSeparator: String;
+ lJavaCallbackIndex: Integer;
+ lJavaCallbackParams, lJavaCallbackInnerName, lFirstCallbackParam: String;
+ lHugeParamList: TStringList;
+ lHugeParamListText: String;
begin
if ASourceLine = '' then Exit;
@@ -712,49 +731,40 @@ begin
ProcessMethodReturnValue(ASourceLine, lReaderPos);
ProcessMethodName(ASourceLine, lReaderPos);
+
+ // Pascal and Java Implementation Start
+ ProcessMethodPreface(ASourceLine, True);
+
ProcessMethodParameters(ASourceLine, lReaderPos);
- lSetterName := FMethodName;
- lIDSetter := GetIDString(lSetterName);
- lCallbackName := Copy(lSetterName, 4, Length(lSetterName)); // remove the "set" from the setter name
- lCallerName := 'call' + lCallbackName;
- AddOutputIDs(lIDSetter);
- Inc(FMethodNum);
- lIDStart := GetIDString(lCallbackName + '_Start');
- AddOutputIDs(lIDStart);
- Inc(FMethodNum);
- lIDFinished := GetIDString(lCallbackName + '_Finished');
- AddOutputIDs(lIDFinished);
- Inc(FMethodNum);
+ // Pascal implementation continuation
+ if FPascalParams = '' then lSeparator := ''
+ else lSeparator := '; ';
+ FPasOutputImpl.Insert(FPasOutputImplCurLine,
+ Format('procedure %s.%s(%s%sACallback: %s);', [FClassNamePas, FSetterName, FPascalParams, lSeparator, FCallbackTypePas]));
- FPasOutputClasses.Add( ' public');
- FPasOutputClasses.Add(Format(' %s: %s;', [lCallbackName, FCallbackTypePas]));
- FPasOutputClasses.Add(Format(' procedure %s(ACallback: %s);', [lSetterName, FCallbackTypePas]));
- FPasOutputClasses.Add(Format(' procedure %s();', [lCallerName]));
- FPasOutputClasses.Add( ' public');
-
- FPasOutputImpl.Add(Format('procedure %s.%s(ACallback: %s);', [FClassNamePas, lSetterName, FCallbackTypePas]));
- FPasOutputImpl.Add( 'begin');
- FPasOutputImpl.Add( ' OnClickListener := ACallback;');
- FPasOutputImpl.Add( ' vAndroidPipesComm.SendByte(ShortInt(amkUICommand));');
- FPasOutputImpl.Add( ' vAndroidPipesComm.SendInt(' + lIDSetter + ');');
- FPasOutputImpl.Add( ' vAndroidPipesComm.SendInt(Index); // Self, Java Index');
- FPasOutputImpl.Add( ' vAndroidPipesComm.SendInt(PtrInt(Self)); // Self, Pascal pointer');
FPasOutputImpl.Add( ' vAndroidPipesComm.WaitForReturn();');
FPasOutputImpl.Add( 'end;');
FPasOutputImpl.Add( '');
- FPasOutputImpl.Add(Format('procedure %s.%s();', [FClassNamePas, lCallerName]));
+ FPasOutputImpl.Add(Format('procedure %s.%s();', [FClassNamePas, FCallerName]));
FPasOutputImpl.Add( 'begin');
- FPasOutputImpl.Add( ' if Assigned(OnClickListener) then OnClickListener(Self);');
+ FPasOutputImpl.Add(Format(' if Assigned(%s) then %s();', [FCallbackName, FCallbackName]));
FPasOutputImpl.Add( 'end;');
- // Method type and name
- FPasOutputMessages.Add(' ' + lIDStart + ':');
- FPasOutputMessages.Add(' begin');
- FPasOutputMessages.Add(' lPascalPointer := vAndroidPipesComm.ReadInt();');
- FPasOutputMessages.Add(' TTextView(lPascalPointer).callOnClickListener();');
- FPasOutputMessages.Add(' vAndroidPipesComm.SendMessage(amkUICommand, ' + lIDFinished + ');');
- FPasOutputMessages.Add(' end;');
+ // Pascal Interface
+ FPasOutputClasses.Add( ' public');
+ FPasOutputClasses.Add(Format(' %s: %s;', [FCallbackName, FCallbackTypePas]));
+ FPasOutputClasses.Add(Format(' procedure %s(%s%sACallback: %s);', [FSetterName, FPascalParams, lSeparator, FCallbackTypePas]));
+ FPasOutputClasses.Add(Format(' procedure %s();', [FCallerName]));
+ FPasOutputClasses.Add( ' public');
+
+ // Pascal Message Reader
+ FPasOutputMessages.Add( ' ' + FIDStart + ':');
+ FPasOutputMessages.Add( ' begin');
+ FPasOutputMessages.Add( ' lPascalPointer := vAndroidPipesComm.ReadInt();');
+ FPasOutputMessages.Add(Format(' %s(lPascalPointer).%s();', [FClassNamePas, FCallerName]));
+ FPasOutputMessages.Add( ' vAndroidPipesComm.SendMessage(amkUICommand, ' + FIDFinished + ');');
+ FPasOutputMessages.Add( ' end;');
{ amkUI_MenuItem_setOnMenuItemClickListener_Start:
begin
lInt := ReadInt();
@@ -766,36 +776,35 @@ begin
end;
end;}
-
// -----------------------------------------------
// Now Java:
// -----------------------------------------------
- lJavaParamSelf := 'param_self_' + FClassName;
- FJavaOutputMethods.Add( ' // ' + ASourceLine);
- FJavaOutputMethods.Add( ' case ' + lIDSetter + ':');
- FJavaOutputMethods.Add( ' DebugOut("' + lIDSetter + '");');
- FJavaOutputMethods.Add( ' // Self');
- FJavaOutputMethods.Add( ' lInt = MyAndroidPipesComm.GetInt();');
- FJavaOutputMethods.Add( ' ' + lJavaParamSelf + ' = (' + FClassName + ') ViewElements.get(lInt);');
- FJavaOutputMethods.Add( ' lPascalPointer = MyAndroidPipesComm.GetInt();');
- FJavaOutputMethods.Add(Format(' %s.setTag(Integer.valueOf(lPascalPointer));', [lJavaParamSelf]));
- FJavaOutputMethods.Add( '');
+ lJavaCallbackIndex := FCallbackTypesJavaName.IndexOf(FCallbackTypeJava);
+ lJavaCallbackParams := FCallbackTypesParams.Strings[lJavaCallbackIndex];
+ lJavaCallbackInnerName := FCallbackTypesInnerName.Strings[lJavaCallbackIndex];
+ lFirstCallbackParam := FCallbackTypesFirstParam.Strings[lJavaCallbackIndex];
+
+ lHugeParamList := TStringList.Create;
+ lHugeParamList.Add(Format(' new %s()', [FCallbackTypeJava]));
+ lHugeParamList.Add( ' {');
+ lHugeParamList.Add(Format(' public void %s(%s)', [lJavaCallbackInnerName, lJavaCallbackParams]));
+ lHugeParamList.Add( ' {');
+ lHugeParamList.Add( ' // Perform action');
+ lHugeParamList.Add(Format(' DebugOut("START %s");', [FCallbackTypeJava]));
+ lHugeParamList.Add(Format(' MyAndroidPipesComm.SendMessage(AndroidPipesComm.amkUICommand, %s);', [FIDStart]));
+ lHugeParamList.Add(Format(' Integer lTag = (Integer) ViewElementsTags.get(ViewElements.indexOf(%s));', [lFirstCallbackParam]));
+ //FJavaOutputMethods.Add( ' Integer lTag = (Integer) v.getTag();');
+ lHugeParamList.Add( ' MyAndroidPipesComm.SendInt(lTag.intValue());');
+ lHugeParamList.Add(Format(' MyAndroidPipesComm.WaitForPascalMessage(AndroidPipesComm.amkUICommand, %s);', [FIDFinished]));
+ lHugeParamList.Add(Format(' DebugOut("END %s");', [FCallbackTypeJava]));
+ lHugeParamList.Add( ' }');
+ lHugeParamList.Add( ' }');
+ lHugeParamListText := StringReplace(FJavaParams, '$', lHugeParamList.Text, []);
+ lHugeParamList.Free;
+
FJavaOutputMethods.Add( ' // Run the code');
- FJavaOutputMethods.Add(Format(' %s.setOnClickListener(', [lJavaParamSelf]));
- FJavaOutputMethods.Add(Format(' new View.OnClickListener()', []));
- FJavaOutputMethods.Add( ' {');
- FJavaOutputMethods.Add( ' public void onClick(View v)');
- FJavaOutputMethods.Add( ' {');
- FJavaOutputMethods.Add( ' // Perform action');
- FJavaOutputMethods.Add( ' DebugOut("START TextView OnClickListener");');
- FJavaOutputMethods.Add(Format(' MyAndroidPipesComm.SendMessage(AndroidPipesComm.amkUICommand, %s);', [lIDStart]));
- FJavaOutputMethods.Add( ' Integer lTag = (Integer) v.getTag();');
- FJavaOutputMethods.Add( ' MyAndroidPipesComm.SendInt(lTag.intValue());');
- FJavaOutputMethods.Add(Format(' MyAndroidPipesComm.WaitForPascalMessage(AndroidPipesComm.amkUICommand, %s);', [lIDFinished]));
- FJavaOutputMethods.Add( ' DebugOut("END TextView OnClickListener");');
- FJavaOutputMethods.Add( ' }');
- FJavaOutputMethods.Add( ' });');
+ FJavaOutputMethods.Add(Format(' %s.%s(%s);', [FJavaParamSelf, FMethodName, lHugeParamListText]));
FJavaOutputMethods.Add( ' MyAndroidPipesComm.SendResult();');
FJavaOutputMethods.Add( ' break;');
(* case amkUI_TextView_setOnClickListener:
@@ -833,22 +842,40 @@ var
lReaderPos: Integer = 1;
lCurWord: string;
lStr, lCallbackDeclaration, lPascalType: String;
+ lJavaName, lJavaParams, lFirstParam: String;
begin
if ASourceLine = '' then Exit;
lStr := GetNextWord(ASourceLine, lReaderPos);
lStr := GetNextWord(ASourceLine, lReaderPos);
+ lJavaName := lStr;
lPascalType := GetPascalTypeName(lStr);
ProcessMethodReturnValue(ASourceLine, lReaderPos);
ProcessMethodName(ASourceLine, lReaderPos);
+ lJavaParams := Copy(ASourceLine, lReaderPos, Length(ASourceLine));
+ lJavaParams := Trim(lJavaParams);
+ lJavaParams := Copy(lJavaParams, 2, Length(lJavaParams)-2);
+
ProcessMethodParameters(ASourceLine, lReaderPos, False);
+ // Correct code, but at the moment too complex
+
+ {$IFDEF CORRECT_TYPES}
if FDeclarationIsFunction then
FPasOutputTypes.Add(Format(' %s = %s (%s): %s of object;', [lPascalType, FDeclarationBase, FPascalParams, FMethodReturnPas]))
else
FPasOutputTypes.Add(Format(' %s = %s (%s) of object;', [lPascalType, FDeclarationBase, FPascalParams]));
+ {$ELSE}
+ FPasOutputTypes.Add(Format(' %s = procedure () of object;', [lPascalType, FDeclarationBase, FPascalParams]));
+ {$ENDIF}
+
+ // Also add to the lists
+ FCallbackTypesJavaName.Add(lJavaName);
+ FCallbackTypesParams.Add(lJavaParams);
+ FCallbackTypesInnerName.Add(FMethodName);
+ FCallbackTypesFirstParam.Add(FFirstParam);
end;
procedure TAndroidSDKBindingsGen.ProcessMethodReturnValue(ASourceLine: string;
@@ -878,6 +905,65 @@ begin
FMethodName := GetNextWord(ASourceLine, lReaderPos);
end;
+procedure TAndroidSDKBindingsGen.ProcessMethodPreface(ASourceLine: string; AIsCallback: Boolean);
+begin
+ FIDString := GetIDString(FMethodName);
+ // Lists of constants for the IDs
+
+ if not AIsCallback then AddOutputIDs(FIDString)
+ else
+ begin
+ FSetterName := FMethodName;
+ FIDSetter := GetIDString(FSetterName);
+ FCallbackName := Copy(FSetterName, 4, Length(FSetterName)); // remove the "set" from the setter name
+ FCallerName := 'call' + FCallbackName;
+ AddOutputIDs(FIDSetter);
+ Inc(FMethodNum);
+ FIDStart := GetIDString(FCallbackName + '_Start');
+ AddOutputIDs(FIDStart);
+ Inc(FMethodNum);
+ FIDFinished := GetIDString(FCallbackName + '_Finished');
+ AddOutputIDs(FIDFinished);
+ Inc(FMethodNum);
+ end;
+
+ // Pascal implementation start, without method title
+ FPasOutputImplCurLine := FPasOutputImpl.Count;
+ FPasOutputImpl.Add( 'begin');
+ if AIsCallback then
+ FPasOutputImpl.Add(Format(' %s := ACallback;', [FCallbackName]));
+ FPasOutputImpl.Add( ' vAndroidPipesComm.SendByte(ShortInt(amkUICommand));');
+ FPasOutputImpl.Add( ' vAndroidPipesComm.SendInt(' + FIDSetter + ');');
+ if not FIsGlobalObject then
+ FPasOutputImpl.Add( ' vAndroidPipesComm.SendInt(Index); // Self, Java Index');
+ if AIsCallback then
+ FPasOutputImpl.Add( ' vAndroidPipesComm.SendInt(PtrInt(Self)); // Self, Pascal pointer');
+
+ // Java implementation
+ FJavaParamSelf := 'param_self_' + JavaRemoveGeneric(ConvertPointToUnderline(FClassName));
+ FJavaOutputMethods.Add(Format(' // %s', [ASourceLine]));
+ FJavaOutputMethods.Add(Format(' case %s:', [FIDString]));
+ FJavaOutputMethods.Add(Format(' DebugOut("%s");', [FIDString]));
+ if not FIsGlobalObject then
+ begin
+ FJavaOutputMethods.Add( ' // Self');
+ FJavaOutputMethods.Add( ' lInt = MyAndroidPipesComm.GetInt();');
+ FJavaOutputMethods.Add(Format(' %s = (%s) ViewElements.get(lInt);', [FJavaParamSelf, FClassName]));
+ end
+ else
+ FJavaParamSelf := FGlobalObject;
+
+ FJavaOutputMethods.Add(' // params');
+
+ if AIsCallback then
+ begin
+ FJavaOutputMethods.Add( ' lPascalPointer = MyAndroidPipesComm.GetInt();');
+ FJavaOutputMethods.Add(Format(' ViewElementsTags.set(lInt, new Integer(lPascalPointer));', [fJavaParamSelf]));
+ //FJavaOutputMethods.Add(Format(' %s.setTag(Integer.valueOf(lPascalPointer));', [lJavaParamSelf]));
+ FJavaOutputMethods.Add( '');
+ end;
+end;
+
// callbacksetter void setOnClickListener($View.OnClickListener l)
// $ indicates that this parameter should be skipped
procedure TAndroidSDKBindingsGen.ProcessMethodParameters(ASourceLine: string;
@@ -889,12 +975,14 @@ var
lParamTypePas, lParamName, lParamPrefix: String;
lJavaParams, lJavaParamVar: String;
StringParamCount: Integer = 0;
+ i: Integer;
begin
// Add all parameters
TmpStr := '';
lJavaParams := '';
FHasStringParam := False;
FCallbackTypePas := '';
+ FFirstParam := '';
repeat
lParamType := GetNextWord(ASourceLine, lReaderPos);
@@ -909,10 +997,11 @@ begin
Continue;
end;
- // Parameter to skip because it is a callback name, just write $,
+ // Parameter to skip because it is a callback name, just write "$, " to the Java Params
if lParamType[1] = '$' then
begin
- TmpStr := TmpStr + '$, ';
+ lJavaParams := lJavaParams + '$, ';
+ FCallbackTypeJava := StringReplace(lParamType, '$', '', [rfReplaceAll]);
FCallbackTypePas := GetPascalTypeName(lParamType);
FCallbackTypePas := StringReplace(FCallbackTypePas, '$', '', [rfReplaceAll]);
lParamType := GetNextWord(ASourceLine, lReaderPos);
@@ -921,6 +1010,7 @@ begin
lParamTypePas := GetPascalTypeName(lParamType);
lParamName := GetNextWord(ASourceLine, lReaderPos);
+ if FFirstParam = '' then FFirstParam := lParamName;
if PassByReference(lParamType) then lParamPrefix := 'var '
else lParamPrefix := '';
@@ -961,6 +1051,21 @@ begin
FPascalParams := TmpStr;
// And for Java params too
FJavaParams := System.Copy(lJavaParams, 0, Length(lJavaParams)-2);
+
+ // Insert the start
+ //FPasOutputClasses.Add(' ' + DeclarationBase + TmpStr + lPascalMethodModifiers);
+ //FPasOutputImpl.Insert(FPasOutputImplCurLine, DeclarationBase + FClassNamePas + '.' + TmpStr);
+ if FHasStringParam then
+ begin
+ FPasOutputImpl.Insert(FPasOutputImplCurLine, 'var');
+ for i := 1 to StringParamCount do
+ begin
+ FPasOutputImpl.Insert(FPasOutputImplCurLine+i, Format(' lString_%d: TString;', [i]));
+ FPasOutputImpl.Add(Format(' lString_%d.Free;', [i]));
+ end;
+ end;
+ //FPasOutputImpl.Add('end;');
+ //FPasOutputImpl.Add('');
end;
{ Reads one word in a string, starting at AStartPos (1-based index)
@@ -1114,6 +1219,11 @@ begin
FJavaOutputIDs := TStringList.Create;
FJavaOutputMethods := TStringList.Create;
+ FCallbackTypesJavaName := TStringList.Create;
+ FCallbackTypesParams := TStringList.Create;
+ FCallbackTypesInnerName := TStringList.Create;
+ FCallbackTypesFirstParam := TStringList.Create;
+
FClassNum := $100;
end;
@@ -1134,6 +1244,11 @@ begin
FJavaOutputIDs.Free;
FJavaOutputMethods.Free;
+ FCallbackTypesJavaName.Free;
+ FCallbackTypesParams.Free;
+ FCallbackTypesInnerName.Free;
+ FCallbackTypesFirstParam.Free;
+
inherited Destroy;
end;
diff --git a/bindings/android-sdk/sdk_level_7/android_all.txt b/bindings/android-sdk/sdk_level_7/android_all.txt
index 3400ad3ed..876b35074 100644
--- a/bindings/android-sdk/sdk_level_7/android_all.txt
+++ b/bindings/android-sdk/sdk_level_7/android_all.txt
@@ -50,12 +50,116 @@ method void getMetrics(DisplayMetrics outMetrics)
method Display getDefaultDisplay()
[Dialog] TJavaObject
+#void addContentView(View view, ViewGroup.LayoutParams params)
+#void cancel()
+#void closeOptionsMenu()
+#void dismiss()
+#boolean dispatchGenericMotionEvent(MotionEvent ev)
+#boolean dispatchKeyEvent(KeyEvent event)
+#boolean dispatchKeyShortcutEvent(KeyEvent event)
+#boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event)
+#boolean dispatchTouchEvent(MotionEvent ev)
+#boolean dispatchTrackballEvent(MotionEvent ev)
+#View findViewById(int id)
+#ActionBar getActionBar()
+#final Context getContext()
+#View getCurrentFocus()
+#LayoutInflater getLayoutInflater()
+#final Activity getOwnerActivity()
+#final int getVolumeControlStream()
+#Window getWindow()
+#void hide()
+#void invalidateOptionsMenu()
+#boolean isShowing()
+#void onActionModeFinished(ActionMode mode)
+#void onActionModeStarted(ActionMode mode)
+#void onAttachedToWindow()
+#void onBackPressed()
+#void onContentChanged()
+#boolean onContextItemSelected(MenuItem item)
+#void onContextMenuClosed(Menu menu)
+#void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
+#boolean onCreateOptionsMenu(Menu menu)
+#boolean onCreatePanelMenu(int featureId, Menu menu)
+#View onCreatePanelView(int featureId)
+#void onDetachedFromWindow()
+#boolean onGenericMotionEvent(MotionEvent event)
+#boolean onKeyDown(int keyCode, KeyEvent event)
+#boolean onKeyLongPress(int keyCode, KeyEvent event)
+#boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event)
+#boolean onKeyShortcut(int keyCode, KeyEvent event)
+#boolean onKeyUp(int keyCode, KeyEvent event)
+#boolean onMenuItemSelected(int featureId, MenuItem item)
+#boolean onMenuOpened(int featureId, Menu menu)
+#boolean onOptionsItemSelected(MenuItem item)
+#void onOptionsMenuClosed(Menu menu)
+#void onPanelClosed(int featureId, Menu menu)
+#boolean onPrepareOptionsMenu(Menu menu)
+#boolean onPreparePanel(int featureId, View view, Menu menu)
+#void onRestoreInstanceState(Bundle savedInstanceState)
+#Bundle onSaveInstanceState()
+#boolean onSearchRequested()
+#boolean onTouchEvent(MotionEvent event)
+#boolean onTrackballEvent(MotionEvent event)
+#void onWindowAttributesChanged(WindowManager.LayoutParams params)
+#void onWindowFocusChanged(boolean hasFocus)
+#ActionMode onWindowStartingActionMode(ActionMode.Callback callback)
+#void openContextMenu(View view)
+#void openOptionsMenu()
+#void registerForContextMenu(View view)
+#final boolean requestWindowFeature(int featureId)
+#void setCancelMessage(Message msg)
+#void setCancelable(boolean flag)
+#void setCanceledOnTouchOutside(boolean cancel)
+#void setContentView(View view)
+#void setContentView(int layoutResID)
+#void setContentView(View view, ViewGroup.LayoutParams params)
+#void setDismissMessage(Message msg)
+#final void setFeatureDrawable(int featureId, Drawable drawable)
+#final void setFeatureDrawableAlpha(int featureId, int alpha)
+#final void setFeatureDrawableResource(int featureId, int resId)
+#final void setFeatureDrawableUri(int featureId, Uri uri)
+#void setOnCancelListener(DialogInterface.OnCancelListener listener)
+#void setOnDismissListener(DialogInterface.OnDismissListener listener)
+#void setOnKeyListener(DialogInterface.OnKeyListener onKeyListener)
+#void setOnShowListener(DialogInterface.OnShowListener listener)
+#final void setOwnerActivity(Activity activity)
+#void setTitle(int titleId)
+#void setTitle(CharSequence title)
+#final void setVolumeControlStream(int streamType)
+method void show()
+#void takeKeyEvents(boolean get)
+#void unregisterForContextMenu(View view)
[AlertDialog] Dialog
+const THEME_HOLO_DARK = $00000002;
+const THEME_HOLO_LIGHT = $00000003;
+const THEME_TRADITIONAL = $00000001;
+# Button getButton(int whichButton)
+# ListView getListView()
+# boolean onKeyDown(int keyCode, KeyEvent event)
+# boolean onKeyUp(int keyCode, KeyEvent event)
+# void setButton(CharSequence text, Message msg)
+callbacksetter void setButton(int whichButton, CharSequence text, $DialogInterface.OnClickListener listener)
+# void setButton(CharSequence text, DialogInterface.OnClickListener listener)
+# void setButton(int whichButton, CharSequence text, Message msg)
+# void setButton2(CharSequence text, DialogInterface.OnClickListener listener)
+# void setButton2(CharSequence text, Message msg)
+# void setButton3(CharSequence text, DialogInterface.OnClickListener listener)
+# void setButton3(CharSequence text, Message msg)
+# void setCustomTitle(View customTitleView)
+#void setIcon(Drawable icon)
+#void setIcon(int resId)
+#void setIconAttribute(int attrId)
+# void setInverseBackgroundForced(boolean forceInverseBackground)
+method void setMessage(CharSequence message)
+method void setTitle(CharSequence title)
+#void setView(View view, int viewSpacingLeft, int viewSpacingTop, int viewSpacingRight, int viewSpacingBottom)
+method void setView(View view)
[AlertDialog.Builder] TJavaObject
constructor Create(Activity)
-#public AlertDialog create ()
+method AlertDialog create ()
#public Context getContext ()
#public AlertDialog.Builder setAdapter (ListAdapter adapter, DialogInterface.OnClickListener listener)
#public AlertDialog.Builder setCancelable (boolean cancelable)
@@ -79,7 +183,7 @@ method AlertDialog.Builder setMessage (CharSequence message)
#public AlertDialog.Builder setOnKeyListener (DialogInterface.OnKeyListener onKeyListener)
#public AlertDialog.Builder setPositiveButton (int textId, DialogInterface.OnClickListener listener)
#public AlertDialog.Builder setPositiveButton (CharSequence text, DialogInterface.OnClickListener listener)
-# callbacksetter AlertDialog.Builder setPositiveButton (CharSequence text, DialogInterface.OnClickListener $listener)
+#callbacksetter AlertDialog.Builder setPositiveButton (CharSequence text, $DialogInterface.OnClickListener listener)
#public AlertDialog.Builder setSingleChoiceItems (CharSequence[] items, int checkedItem, DialogInterface.OnClickListener listener)
#public AlertDialog.Builder setSingleChoiceItems (ListAdapter adapter, int checkedItem, DialogInterface.OnClickListener listener)
#public AlertDialog.Builder setSingleChoiceItems (int itemsId, int checkedItem, DialogInterface.OnClickListener listener)
diff --git a/examples/androidlcl/android/src/com/pascal/androidlcl/AndroidAll.java b/examples/androidlcl/android/src/com/pascal/androidlcl/AndroidAll.java
index 531774619..afde62b34 100644
--- a/examples/androidlcl/android/src/com/pascal/androidlcl/AndroidAll.java
+++ b/examples/androidlcl/android/src/com/pascal/androidlcl/AndroidAll.java
@@ -19,6 +19,7 @@ public class AndroidAll
JavaLang MyJavaLang;
// lists of variables
ArrayList ViewElements;
+ ArrayList ViewElementsTags;
public AndroidAll(AndroidPipesComm AAndroidPipesComm, Activity AActivity, JavaLang AJavaLang)
{
@@ -26,6 +27,7 @@ public class AndroidAll
MyAndroidPipesComm = AAndroidPipesComm;
MyJavaLang = AJavaLang;
ViewElements = new ArrayList();
+ ViewElementsTags = new ArrayList();
}
public void DebugOut(String Str)
@@ -42,88 +44,97 @@ public class AndroidAll
static final int amkUI_TDisplayMetrics_widthPixels_5 = 0x00101005;
static final int amkUI_TDisplayMetrics_xdpi_6 = 0x00101006;
static final int amkUI_TDisplayMetrics_ydpi_7 = 0x00101007;
+ // DialogInterface
// Activity
- static final int amkUI_TActivity_setTitle_0 = 0x00102000;
- static final int amkUI_TActivity_getTitle_1 = 0x00102001;
+ static final int amkUI_TActivity_setTitle_0 = 0x00103000;
+ static final int amkUI_TActivity_getTitle_1 = 0x00103001;
// Display
- static final int amkUI_TDisplay_getMetrics_0 = 0x00103000;
+ static final int amkUI_TDisplay_getMetrics_0 = 0x00104000;
// WindowManager
- static final int amkUI_TWindowManager_getDefaultDisplay_0 = 0x00104000;
+ static final int amkUI_TWindowManager_getDefaultDisplay_0 = 0x00105000;
// Dialog
+ static final int amkUI_TDialog_show_0 = 0x00106000;
// AlertDialog
+ static final int amkUI_TAlertDialog_setButton_0 = 0x00107000;
+ static final int amkUI_TAlertDialog_Button_Start_1 = 0x00107001;
+ static final int amkUI_TAlertDialog_Button_Finished_2 = 0x00107002;
+ static final int amkUI_TAlertDialog_setMessage_3 = 0x00107003;
+ static final int amkUI_TAlertDialog_setTitle_4 = 0x00107004;
+ static final int amkUI_TAlertDialog_setView_5 = 0x00107005;
// AlertDialog.Builder
- static final int amkUI_TAlertDialog_Builder_Create_0 = 0x00107000;
- static final int amkUI_TAlertDialog_Builder_setMessage_1 = 0x00107001;
- static final int amkUI_TAlertDialog_Builder_setTitle_2 = 0x00107002;
- static final int amkUI_TAlertDialog_Builder_setView_3 = 0x00107003;
- static final int amkUI_TAlertDialog_Builder_show_4 = 0x00107004;
+ static final int amkUI_TAlertDialog_Builder_Create_0 = 0x00108000;
+ static final int amkUI_TAlertDialog_Builder_create_1 = 0x00108001;
+ static final int amkUI_TAlertDialog_Builder_setMessage_2 = 0x00108002;
+ static final int amkUI_TAlertDialog_Builder_setTitle_3 = 0x00108003;
+ static final int amkUI_TAlertDialog_Builder_setView_4 = 0x00108004;
+ static final int amkUI_TAlertDialog_Builder_show_5 = 0x00108005;
// ViewGroup.LayoutParams
- static final int amkUI_TViewGroup_LayoutParams_Create_0 = 0x00108000;
+ static final int amkUI_TViewGroup_LayoutParams_Create_0 = 0x00109000;
// View
- static final int amkUI_TView_setLayoutParams_0 = 0x00109000;
- static final int amkUI_TView_setVisibility_1 = 0x00109001;
+ static final int amkUI_TView_setLayoutParams_0 = 0x0010A000;
+ static final int amkUI_TView_setVisibility_1 = 0x0010A001;
// ViewGroup
- static final int amkUI_TViewGroup_addView_0 = 0x0010A000;
- static final int amkUI_TViewGroup_addView_1 = 0x0010A001;
- static final int amkUI_TViewGroup_addView_2 = 0x0010A002;
- static final int amkUI_TViewGroup_addView_3 = 0x0010A003;
- static final int amkUI_TViewGroup_addView_4 = 0x0010A004;
+ static final int amkUI_TViewGroup_addView_0 = 0x0010B000;
+ static final int amkUI_TViewGroup_addView_1 = 0x0010B001;
+ static final int amkUI_TViewGroup_addView_2 = 0x0010B002;
+ static final int amkUI_TViewGroup_addView_3 = 0x0010B003;
+ static final int amkUI_TViewGroup_addView_4 = 0x0010B004;
// LinearLayout
- static final int amkUI_TLinearLayout_Create_0 = 0x0010B000;
- static final int amkUI_TLinearLayout_setOrientation_1 = 0x0010B001;
+ static final int amkUI_TLinearLayout_Create_0 = 0x0010C000;
+ static final int amkUI_TLinearLayout_setOrientation_1 = 0x0010C001;
// AbsoluteLayout
- static final int amkUI_TAbsoluteLayout_Create_0 = 0x0010C000;
+ static final int amkUI_TAbsoluteLayout_Create_0 = 0x0010D000;
// AbsoluteLayout.LayoutParams
- static final int amkUI_TAbsoluteLayout_LayoutParams_Create_0 = 0x0010D000;
+ static final int amkUI_TAbsoluteLayout_LayoutParams_Create_0 = 0x0010E000;
// TextView
- static final int amkUI_TTextView_Create_0 = 0x0010E000;
- static final int amkUI_TTextView_setText_1 = 0x0010E001;
- static final int amkUI_TTextView_setOnClickListener_2 = 0x0010E002;
- static final int amkUI_TTextView_OnClickListener_Start_3 = 0x0010E003;
- static final int amkUI_TTextView_OnClickListener_Finished_4 = 0x0010E004;
- static final int amkUI_TTextView_setTextSize_5 = 0x0010E005;
- static final int amkUI_TTextView_getText_6 = 0x0010E006;
+ static final int amkUI_TTextView_Create_0 = 0x0010F000;
+ static final int amkUI_TTextView_setText_1 = 0x0010F001;
+ static final int amkUI_TTextView_setOnClickListener_2 = 0x0010F002;
+ static final int amkUI_TTextView_OnClickListener_Start_3 = 0x0010F003;
+ static final int amkUI_TTextView_OnClickListener_Finished_4 = 0x0010F004;
+ static final int amkUI_TTextView_setTextSize_5 = 0x0010F005;
+ static final int amkUI_TTextView_getText_6 = 0x0010F006;
// EditText
- static final int amkUI_TEditText_Create_0 = 0x0010F000;
+ static final int amkUI_TEditText_Create_0 = 0x00110000;
// Button
- static final int amkUI_TButton_Create_0 = 0x00110000;
+ static final int amkUI_TButton_Create_0 = 0x00111000;
// FrameLayout
// TimePicker
- static final int amkUI_TTimePicker_Create_0 = 0x00112000;
- static final int amkUI_TTimePicker_getCurrentHour_1 = 0x00112001;
- static final int amkUI_TTimePicker_setCurrentHour_2 = 0x00112002;
- static final int amkUI_TTimePicker_getCurrentMinute_3 = 0x00112003;
- static final int amkUI_TTimePicker_setCurrentMinute_4 = 0x00112004;
- static final int amkUI_TTimePicker_is24HourView_5 = 0x00112005;
- static final int amkUI_TTimePicker_setIs24HourView_6 = 0x00112006;
+ static final int amkUI_TTimePicker_Create_0 = 0x00113000;
+ static final int amkUI_TTimePicker_getCurrentHour_1 = 0x00113001;
+ static final int amkUI_TTimePicker_setCurrentHour_2 = 0x00113002;
+ static final int amkUI_TTimePicker_getCurrentMinute_3 = 0x00113003;
+ static final int amkUI_TTimePicker_setCurrentMinute_4 = 0x00113004;
+ static final int amkUI_TTimePicker_is24HourView_5 = 0x00113005;
+ static final int amkUI_TTimePicker_setIs24HourView_6 = 0x00113006;
// ScrollView
- static final int amkUI_TScrollView_Create_0 = 0x00113000;
+ static final int amkUI_TScrollView_Create_0 = 0x00114000;
// CompoundButton
- static final int amkUI_TCompoundButton_isChecked_0 = 0x00114000;
- static final int amkUI_TCompoundButton_performClick_1 = 0x00114001;
- static final int amkUI_TCompoundButton_setChecked_2 = 0x00114002;
- static final int amkUI_TCompoundButton_toggle_3 = 0x00114003;
+ static final int amkUI_TCompoundButton_isChecked_0 = 0x00115000;
+ static final int amkUI_TCompoundButton_performClick_1 = 0x00115001;
+ static final int amkUI_TCompoundButton_setChecked_2 = 0x00115002;
+ static final int amkUI_TCompoundButton_toggle_3 = 0x00115003;
// CheckBox
- static final int amkUI_TCheckBox_Create_0 = 0x00115000;
+ static final int amkUI_TCheckBox_Create_0 = 0x00116000;
// AdapterView
- static final int amkUI_TAdapterView_getSelectedItemPosition_0 = 0x00116000;
+ static final int amkUI_TAdapterView_getSelectedItemPosition_0 = 0x00117000;
// AbsSpinner
- static final int amkUI_TAbsSpinner_getCount_0 = 0x00117000;
- static final int amkUI_TAbsSpinner_setAdapter_1 = 0x00117001;
- static final int amkUI_TAbsSpinner_setSelection_2 = 0x00117002;
+ static final int amkUI_TAbsSpinner_getCount_0 = 0x00118000;
+ static final int amkUI_TAbsSpinner_setAdapter_1 = 0x00118001;
+ static final int amkUI_TAbsSpinner_setSelection_2 = 0x00118002;
// Spinner
- static final int amkUI_TSpinner_Create_0 = 0x00118000;
+ static final int amkUI_TSpinner_Create_0 = 0x00119000;
// Filterable
// Adapter
// ListAdapter
// SpinnerAdapter
// BaseAdapter
// ArrayAdapter
- static final int amkUI_TArrayAdapter_String__Create_0 = 0x0011E000;
- static final int amkUI_TArrayAdapter_String__add_1 = 0x0011E001;
- static final int amkUI_TArrayAdapter_String__clear_2 = 0x0011E002;
- static final int amkUI_TArrayAdapter_String__insert_3 = 0x0011E003;
- static final int amkUI_TArrayAdapter_String__remove_4 = 0x0011E004;
+ static final int amkUI_TArrayAdapter_String__Create_0 = 0x0011F000;
+ static final int amkUI_TArrayAdapter_String__add_1 = 0x0011F001;
+ static final int amkUI_TArrayAdapter_String__clear_2 = 0x0011F002;
+ static final int amkUI_TArrayAdapter_String__insert_3 = 0x0011F003;
+ static final int amkUI_TArrayAdapter_String__remove_4 = 0x0011F004;
// layout
public boolean ProcessCommand(int Buffer)
@@ -153,13 +164,15 @@ public class AndroidAll
ArrayAdapter param_self_ArrayAdapter_String_;
AdapterView param_self_AdapterView;
AlertDialog.Builder param_self_AlertDialog_Builder;
+ Dialog param_self_Dialog;
+ AlertDialog param_self_AlertDialog;
//
// Params
//
ViewGroup.LayoutParams lViewGroup_LayoutParams_1, lViewGroup_LayoutParams_2, lViewGroup_LayoutParams_3;
SpinnerAdapter lSpinnerAdapter_1;
DisplayMetrics lDisplayMetrics_1;
- CharSequence lCharSequence_1;
+ CharSequence lCharSequence_1, lCharSequence_2;
String lString_1;
View lView_1;
int lint_1, lint_2, lint_3, lint_4;
@@ -182,6 +195,7 @@ public class AndroidAll
case amkUI_TDisplayMetrics_Create_0:
DebugOut("amkUI_TDisplayMetrics_Create_0");
ViewElements.add(new DisplayMetrics());
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
// field float density
@@ -302,16 +316,112 @@ public class AndroidAll
//
lResult_Display = param_self_WindowManager.getDefaultDisplay();
ViewElements.add(lResult_Display);
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
+ // method void show()
+ case amkUI_TDialog_show_0:
+ DebugOut("amkUI_TDialog_show_0");
+ // Self
+ lInt = MyAndroidPipesComm.GetInt();
+ param_self_Dialog = (Dialog) ViewElements.get(lInt);
+ // params
+ //
+ param_self_Dialog.show();
+ MyAndroidPipesComm.SendResult();
+ break;
+ // callbacksetter void setButton(int whichButton, CharSequence text, $DialogInterface.OnClickListener listener)
+ case amkUI_TAlertDialog_setButton_0:
+ DebugOut("amkUI_TAlertDialog_setButton_0");
+ // Self
+ lInt = MyAndroidPipesComm.GetInt();
+ param_self_AlertDialog = (AlertDialog) ViewElements.get(lInt);
+ // params
+ lPascalPointer = MyAndroidPipesComm.GetInt();
+ ViewElementsTags.set(lInt, new Integer(lPascalPointer));
+
+ lInt = MyAndroidPipesComm.GetInt();
+ lint_1 = lInt;
+ lInt = MyAndroidPipesComm.GetInt();
+ lCharSequence_2 = (CharSequence) MyJavaLang.LangElements.get(lInt);
+ // Run the code
+ param_self_AlertDialog.setButton(lint_1, lCharSequence_2, new DialogInterface.OnClickListener()
+ {
+ public void onClick(DialogInterface dialog, int which)
+ {
+ // Perform action
+ DebugOut("START DialogInterface.OnClickListener");
+ MyAndroidPipesComm.SendMessage(AndroidPipesComm.amkUICommand, amkUI_TAlertDialog_Button_Start_1);
+ Integer lTag = (Integer) ViewElementsTags.get(ViewElements.indexOf(dialog));
+ MyAndroidPipesComm.SendInt(lTag.intValue());
+ MyAndroidPipesComm.WaitForPascalMessage(AndroidPipesComm.amkUICommand, amkUI_TAlertDialog_Button_Finished_2);
+ DebugOut("END DialogInterface.OnClickListener");
+ }
+ }
+);
+ MyAndroidPipesComm.SendResult();
+ break;
+ // method void setMessage(CharSequence message)
+ case amkUI_TAlertDialog_setMessage_3:
+ DebugOut("amkUI_TAlertDialog_setMessage_3");
+ // Self
+ lInt = MyAndroidPipesComm.GetInt();
+ param_self_AlertDialog = (AlertDialog) ViewElements.get(lInt);
+ // params
+ lInt = MyAndroidPipesComm.GetInt();
+ lCharSequence_1 = (CharSequence) MyJavaLang.LangElements.get(lInt);
+ //
+ param_self_AlertDialog.setMessage(lCharSequence_1);
+ MyAndroidPipesComm.SendResult();
+ break;
+ // method void setTitle(CharSequence title)
+ case amkUI_TAlertDialog_setTitle_4:
+ DebugOut("amkUI_TAlertDialog_setTitle_4");
+ // Self
+ lInt = MyAndroidPipesComm.GetInt();
+ param_self_AlertDialog = (AlertDialog) ViewElements.get(lInt);
+ // params
+ lInt = MyAndroidPipesComm.GetInt();
+ lCharSequence_1 = (CharSequence) MyJavaLang.LangElements.get(lInt);
+ //
+ param_self_AlertDialog.setTitle(lCharSequence_1);
+ MyAndroidPipesComm.SendResult();
+ break;
+ // method void setView(View view)
+ case amkUI_TAlertDialog_setView_5:
+ DebugOut("amkUI_TAlertDialog_setView_5");
+ // Self
+ lInt = MyAndroidPipesComm.GetInt();
+ param_self_AlertDialog = (AlertDialog) ViewElements.get(lInt);
+ // params
+ lInt = MyAndroidPipesComm.GetInt();
+ lView_1 = (View) ViewElements.get(lInt);
+ //
+ param_self_AlertDialog.setView(lView_1);
+ MyAndroidPipesComm.SendResult();
+ break;
case amkUI_TAlertDialog_Builder_Create_0:
DebugOut("amkUI_TAlertDialog_Builder_Create_0");
ViewElements.add(new AlertDialog.Builder(activity));
+ ViewElementsTags.add(null);
+ MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
+ break;
+ // method AlertDialog create ()
+ case amkUI_TAlertDialog_Builder_create_1:
+ DebugOut("amkUI_TAlertDialog_Builder_create_1");
+ // Self
+ lInt = MyAndroidPipesComm.GetInt();
+ param_self_AlertDialog_Builder = (AlertDialog.Builder) ViewElements.get(lInt);
+ // params
+ //
+ lResult_AlertDialog = param_self_AlertDialog_Builder.create();
+ ViewElements.add(lResult_AlertDialog);
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
// method AlertDialog.Builder setMessage (CharSequence message)
- case amkUI_TAlertDialog_Builder_setMessage_1:
- DebugOut("amkUI_TAlertDialog_Builder_setMessage_1");
+ case amkUI_TAlertDialog_Builder_setMessage_2:
+ DebugOut("amkUI_TAlertDialog_Builder_setMessage_2");
// Self
lInt = MyAndroidPipesComm.GetInt();
param_self_AlertDialog_Builder = (AlertDialog.Builder) ViewElements.get(lInt);
@@ -321,11 +431,12 @@ public class AndroidAll
//
lResult_AlertDialog_Builder = param_self_AlertDialog_Builder.setMessage(lCharSequence_1);
ViewElements.add(lResult_AlertDialog_Builder);
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
// method AlertDialog.Builder setTitle (CharSequence title)
- case amkUI_TAlertDialog_Builder_setTitle_2:
- DebugOut("amkUI_TAlertDialog_Builder_setTitle_2");
+ case amkUI_TAlertDialog_Builder_setTitle_3:
+ DebugOut("amkUI_TAlertDialog_Builder_setTitle_3");
// Self
lInt = MyAndroidPipesComm.GetInt();
param_self_AlertDialog_Builder = (AlertDialog.Builder) ViewElements.get(lInt);
@@ -335,11 +446,12 @@ public class AndroidAll
//
lResult_AlertDialog_Builder = param_self_AlertDialog_Builder.setTitle(lCharSequence_1);
ViewElements.add(lResult_AlertDialog_Builder);
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
// method AlertDialog.Builder setView (View view)
- case amkUI_TAlertDialog_Builder_setView_3:
- DebugOut("amkUI_TAlertDialog_Builder_setView_3");
+ case amkUI_TAlertDialog_Builder_setView_4:
+ DebugOut("amkUI_TAlertDialog_Builder_setView_4");
// Self
lInt = MyAndroidPipesComm.GetInt();
param_self_AlertDialog_Builder = (AlertDialog.Builder) ViewElements.get(lInt);
@@ -349,11 +461,12 @@ public class AndroidAll
//
lResult_AlertDialog_Builder = param_self_AlertDialog_Builder.setView(lView_1);
ViewElements.add(lResult_AlertDialog_Builder);
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
// method AlertDialog show ()
- case amkUI_TAlertDialog_Builder_show_4:
- DebugOut("amkUI_TAlertDialog_Builder_show_4");
+ case amkUI_TAlertDialog_Builder_show_5:
+ DebugOut("amkUI_TAlertDialog_Builder_show_5");
// Self
lInt = MyAndroidPipesComm.GetInt();
param_self_AlertDialog_Builder = (AlertDialog.Builder) ViewElements.get(lInt);
@@ -361,6 +474,7 @@ public class AndroidAll
//
lResult_AlertDialog = param_self_AlertDialog_Builder.show();
ViewElements.add(lResult_AlertDialog);
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
case amkUI_TViewGroup_LayoutParams_Create_0:
@@ -368,6 +482,7 @@ public class AndroidAll
lint_1 = MyAndroidPipesComm.GetInt();
lint_2 = MyAndroidPipesComm.GetInt();
ViewElements.add(new ViewGroup.LayoutParams(lint_1, lint_2));
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
// method void setLayoutParams(ViewGroup.LayoutParams params);
@@ -476,6 +591,7 @@ public class AndroidAll
case amkUI_TLinearLayout_Create_0:
DebugOut("amkUI_TLinearLayout_Create_0");
ViewElements.add(new LinearLayout(activity));
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
// method void setOrientation(int orientation);
@@ -494,6 +610,7 @@ public class AndroidAll
case amkUI_TAbsoluteLayout_Create_0:
DebugOut("amkUI_TAbsoluteLayout_Create_0");
ViewElements.add(new AbsoluteLayout(activity));
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
case amkUI_TAbsoluteLayout_LayoutParams_Create_0:
@@ -503,11 +620,13 @@ public class AndroidAll
lint_3 = MyAndroidPipesComm.GetInt();
lint_4 = MyAndroidPipesComm.GetInt();
ViewElements.add(new AbsoluteLayout.LayoutParams(lint_1, lint_2, lint_3, lint_4));
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
case amkUI_TTextView_Create_0:
DebugOut("amkUI_TTextView_Create_0");
ViewElements.add(new TextView(activity));
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
// method void setText(CharSequence AText); virtual;
@@ -523,30 +642,31 @@ public class AndroidAll
param_self_TextView.setText(lCharSequence_1);
MyAndroidPipesComm.SendResult();
break;
- // callbacksettercaller setOnClickListener callOnClickListener OnClickListener = procedure (v: TView) of object;
+ // callbacksetter void setOnClickListener($View.OnClickListener l)
case amkUI_TTextView_setOnClickListener_2:
DebugOut("amkUI_TTextView_setOnClickListener_2");
// Self
lInt = MyAndroidPipesComm.GetInt();
param_self_TextView = (TextView) ViewElements.get(lInt);
+ // params
lPascalPointer = MyAndroidPipesComm.GetInt();
- param_self_TextView.setTag(Integer.valueOf(lPascalPointer));
+ ViewElementsTags.set(lInt, new Integer(lPascalPointer));
// Run the code
- param_self_TextView.setOnClickListener(
- new View.OnClickListener()
+ param_self_TextView.setOnClickListener( new View.OnClickListener()
{
public void onClick(View v)
{
// Perform action
- DebugOut("START TextView OnClickListener");
+ DebugOut("START View.OnClickListener");
MyAndroidPipesComm.SendMessage(AndroidPipesComm.amkUICommand, amkUI_TTextView_OnClickListener_Start_3);
- Integer lTag = (Integer) v.getTag();
+ Integer lTag = (Integer) ViewElementsTags.get(ViewElements.indexOf(v));
MyAndroidPipesComm.SendInt(lTag.intValue());
MyAndroidPipesComm.WaitForPascalMessage(AndroidPipesComm.amkUICommand, amkUI_TTextView_OnClickListener_Finished_4);
- DebugOut("END TextView OnClickListener");
+ DebugOut("END View.OnClickListener");
}
- });
+ }
+);
MyAndroidPipesComm.SendResult();
break;
// method void setTextSize(int unit_; float size);
@@ -578,16 +698,19 @@ public class AndroidAll
case amkUI_TEditText_Create_0:
DebugOut("amkUI_TEditText_Create_0");
ViewElements.add(new EditText(activity));
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
case amkUI_TButton_Create_0:
DebugOut("amkUI_TButton_Create_0");
ViewElements.add(new Button(activity));
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
case amkUI_TTimePicker_Create_0:
DebugOut("amkUI_TTimePicker_Create_0");
ViewElements.add(new TimePicker(activity));
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
// method int getCurrentHour();
@@ -665,6 +788,7 @@ public class AndroidAll
case amkUI_TScrollView_Create_0:
DebugOut("amkUI_TScrollView_Create_0");
ViewElements.add(new ScrollView(activity));
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
// method boolean isChecked()
@@ -716,6 +840,7 @@ public class AndroidAll
case amkUI_TCheckBox_Create_0:
DebugOut("amkUI_TCheckBox_Create_0");
ViewElements.add(new CheckBox(activity));
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
// method int getSelectedItemPosition()
@@ -769,12 +894,14 @@ public class AndroidAll
case amkUI_TSpinner_Create_0:
DebugOut("amkUI_TSpinner_Create_0");
ViewElements.add(new Spinner(activity));
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
case amkUI_TArrayAdapter_String__Create_0:
DebugOut("amkUI_TArrayAdapter_String__Create_0");
lint_1 = MyAndroidPipesComm.GetInt();
ViewElements.add(new ArrayAdapter(activity, lint_1));
+ ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break;
// method void add(String aobject)