Android: Adds a solution for Java methods called create

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1834 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
sekelsenmat
2011-08-26 08:58:59 +00:00
parent c20f4e1ede
commit ebe2235117
4 changed files with 111 additions and 88 deletions

View File

@ -39,7 +39,7 @@
<PackageName Value="LCL"/> <PackageName Value="LCL"/>
</Item2> </Item2>
</RequiredPackages> </RequiredPackages>
<Units Count="35"> <Units Count="36">
<Unit0> <Unit0>
<Filename Value="android_bindings_generator.pas"/> <Filename Value="android_bindings_generator.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
@ -117,11 +117,10 @@
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="android_sdk_bindings_gen"/> <UnitName Value="android_sdk_bindings_gen"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="3"/> <EditorIndex Value="3"/>
<WindowIndex Value="0"/> <WindowIndex Value="0"/>
<TopLine Value="435"/> <TopLine Value="526"/>
<CursorPos X="3" Y="454"/> <CursorPos X="58" Y="569"/>
<UsageCount Value="73"/> <UsageCount Value="73"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit8> </Unit8>
@ -201,8 +200,8 @@
<Filename Value="sdk_level_7/android_all.txt"/> <Filename Value="sdk_level_7/android_all.txt"/>
<EditorIndex Value="4"/> <EditorIndex Value="4"/>
<WindowIndex Value="0"/> <WindowIndex Value="0"/>
<TopLine Value="1"/> <TopLine Value="267"/>
<CursorPos X="1" Y="1"/> <CursorPos X="19" Y="308"/>
<UsageCount Value="28"/> <UsageCount Value="28"/>
<Loaded Value="True"/> <Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="None"/> <DefaultSyntaxHighlighter Value="None"/>
@ -235,10 +234,11 @@
</Unit21> </Unit21>
<Unit22> <Unit22>
<Filename Value="../../examples/androidlcl/android/src/com/pascal/androidlcl/AndroidAll.java"/> <Filename Value="../../examples/androidlcl/android/src/com/pascal/androidlcl/AndroidAll.java"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="6"/> <EditorIndex Value="6"/>
<WindowIndex Value="0"/> <WindowIndex Value="0"/>
<TopLine Value="151"/> <TopLine Value="451"/>
<CursorPos X="35" Y="120"/> <CursorPos X="40" Y="451"/>
<UsageCount Value="12"/> <UsageCount Value="12"/>
<Loaded Value="True"/> <Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Java"/> <DefaultSyntaxHighlighter Value="Java"/>
@ -248,8 +248,8 @@
<UnitName Value="android_all"/> <UnitName Value="android_all"/>
<EditorIndex Value="5"/> <EditorIndex Value="5"/>
<WindowIndex Value="0"/> <WindowIndex Value="0"/>
<TopLine Value="99"/> <TopLine Value="882"/>
<CursorPos X="15" Y="99"/> <CursorPos X="34" Y="882"/>
<UsageCount Value="28"/> <UsageCount Value="28"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit23> </Unit23>
@ -341,127 +341,135 @@
<UsageCount Value="10"/> <UsageCount Value="10"/>
<DefaultSyntaxHighlighter Value="Java"/> <DefaultSyntaxHighlighter Value="Java"/>
</Unit34> </Unit34>
<Unit35>
<Filename Value="../../../lazarus/lcl/interfaces/android/javalang.pas"/>
<UnitName Value="javalang"/>
<WindowIndex Value="0"/>
<TopLine Value="53"/>
<CursorPos X="3" Y="77"/>
<UsageCount Value="10"/>
</Unit35>
</Units> </Units>
<JumpHistory Count="30" HistoryIndex="29"> <JumpHistory Count="30" HistoryIndex="29">
<Position1> <Position1>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="57" Column="26" TopLine="31"/> <Caret Line="164" Column="12" TopLine="123"/>
</Position1> </Position1>
<Position2> <Position2>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="784" Column="46" TopLine="743"/> <Caret Line="203" Column="12" TopLine="162"/>
</Position2> </Position2>
<Position3> <Position3>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="57" Column="15" TopLine="31"/> <Caret Line="231" Column="1" TopLine="183"/>
</Position3> </Position3>
<Position4> <Position4>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="784" Column="46" TopLine="743"/> <Caret Line="233" Column="12" TopLine="192"/>
</Position4> </Position4>
<Position5> <Position5>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="859" Column="60" TopLine="834"/> <Caret Line="236" Column="12" TopLine="195"/>
</Position5> </Position5>
<Position6> <Position6>
<Filename Value="../../examples/androidlcl/android/src/com/pascal/androidlcl/AndroidAll.java"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="140" Column="50" TopLine="96"/> <Caret Line="243" Column="12" TopLine="202"/>
</Position6> </Position6>
<Position7> <Position7>
<Filename Value="../../examples/androidlcl/android/src/com/pascal/androidlcl/AndroidAll.java"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="1" Column="1" TopLine="1"/> <Caret Line="246" Column="12" TopLine="205"/>
</Position7> </Position7>
<Position8> <Position8>
<Filename Value="../../examples/androidlcl/android/src/com/pascal/androidlcl/AndroidAll.java"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="39" Column="50" TopLine="1"/> <Caret Line="251" Column="12" TopLine="210"/>
</Position8> </Position8>
<Position9> <Position9>
<Filename Value="../../examples/androidlcl/android/src/com/pascal/androidlcl/AndroidAll.java"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="52" Column="1" TopLine="27"/> <Caret Line="260" Column="12" TopLine="219"/>
</Position9> </Position9>
<Position10> <Position10>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="192" Column="34" TopLine="178"/> <Caret Line="263" Column="13" TopLine="222"/>
</Position10> </Position10>
<Position11> <Position11>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="427" Column="17" TopLine="386"/> <Caret Line="271" Column="12" TopLine="230"/>
</Position11> </Position11>
<Position12> <Position12>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="1176" Column="46" TopLine="1138"/> <Caret Line="289" Column="12" TopLine="248"/>
</Position12> </Position12>
<Position13> <Position13>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="1" Column="1" TopLine="1"/> <Caret Line="286" Column="52" TopLine="267"/>
</Position13> </Position13>
<Position14> <Position14>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="71" Column="27" TopLine="30"/> <Caret Line="2" Column="1" TopLine="1"/>
</Position14> </Position14>
<Position15> <Position15>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="490" Column="1" TopLine="448"/> <Caret Line="24" Column="12" TopLine="1"/>
</Position15> </Position15>
<Position16> <Position16>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="626" Column="1" TopLine="584"/> <Caret Line="164" Column="12" TopLine="123"/>
</Position16> </Position16>
<Position17> <Position17>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="915" Column="1" TopLine="872"/> <Caret Line="203" Column="12" TopLine="162"/>
</Position17> </Position17>
<Position18> <Position18>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="920" Column="17" TopLine="879"/> <Caret Line="224" Column="12" TopLine="183"/>
</Position18> </Position18>
<Position19> <Position19>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="923" Column="17" TopLine="882"/> <Caret Line="230" Column="12" TopLine="189"/>
</Position19> </Position19>
<Position20> <Position20>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="926" Column="17" TopLine="885"/> <Caret Line="233" Column="12" TopLine="192"/>
</Position20> </Position20>
<Position21> <Position21>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="1180" Column="17" TopLine="1152"/> <Caret Line="236" Column="12" TopLine="195"/>
</Position21> </Position21>
<Position22> <Position22>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="1219" Column="17" TopLine="1178"/> <Caret Line="243" Column="12" TopLine="202"/>
</Position22> </Position22>
<Position23> <Position23>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="1244" Column="17" TopLine="1203"/> <Caret Line="246" Column="12" TopLine="205"/>
</Position23> </Position23>
<Position24> <Position24>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="1" Column="1" TopLine="1"/> <Caret Line="251" Column="12" TopLine="210"/>
</Position24> </Position24>
<Position25> <Position25>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="20" Column="19" TopLine="1"/> <Caret Line="260" Column="12" TopLine="219"/>
</Position25> </Position25>
<Position26> <Position26>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="192" Column="34" TopLine="151"/> <Caret Line="263" Column="13" TopLine="222"/>
</Position26> </Position26>
<Position27> <Position27>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="427" Column="17" TopLine="386"/> <Caret Line="271" Column="12" TopLine="230"/>
</Position27> </Position27>
<Position28> <Position28>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="1179" Column="17" TopLine="1138"/> <Caret Line="289" Column="12" TopLine="248"/>
</Position28> </Position28>
<Position29> <Position29>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="1219" Column="17" TopLine="1178"/> <Caret Line="277" Column="56" TopLine="267"/>
</Position29> </Position29>
<Position30> <Position30>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="917" Column="23" TopLine="909"/> <Caret Line="2" Column="1" TopLine="1"/>
</Position30> </Position30>
</JumpHistory> </JumpHistory>
</ProjectOptions> </ProjectOptions>

View File

@ -438,7 +438,7 @@ var
lReaderPos: Integer = 1; lReaderPos: Integer = 1;
lParamNum: Integer = 1; lParamNum: Integer = 1;
lCurWord, lParentClassName: string; lCurWord, lParentClassName: string;
lMethodReturn, lMethodReturnPas, lMethodName, lParamType, lParamTypePas, lParamName, lParamPrefix: string; lMethodReturn, lMethodReturnPas, lMethodName, lPasMethodName, lParamType, lParamTypePas, lParamName, lParamPrefix: string;
lMethodReturnJavaIdentifier: string; lMethodReturnJavaIdentifier: string;
DeclarationBase, TmpStr, lIDString: string; DeclarationBase, TmpStr, lIDString: string;
lJavaParamVar, lJavaParams, lJavaParamSelf: string; lJavaParamVar, lJavaParams, lJavaParamSelf: string;
@ -457,6 +457,8 @@ begin
lMethodReturn := GetNextWord(ASourceLine, lReaderPos); lMethodReturn := GetNextWord(ASourceLine, lReaderPos);
lMethodReturnPas := GetPascalTypeName(lMethodReturn); lMethodReturnPas := GetPascalTypeName(lMethodReturn);
lMethodName := GetNextWord(ASourceLine, lReaderPos); lMethodName := GetNextWord(ASourceLine, lReaderPos);
if lMethodName = 'create' then lPasMethodName := lMethodName + '_'
else lPasMethodName := lMethodName;
if lMethodReturn = 'void' then DeclarationBase := 'procedure ' if lMethodReturn = 'void' then DeclarationBase := 'procedure '
else DeclarationBase := 'function '; else DeclarationBase := 'function ';
@ -489,16 +491,16 @@ begin
AddOutputIDs(lIDString); AddOutputIDs(lIDString);
// Add all parameters // Add all parameters
TmpStr := lMethodName + '('; TmpStr := lPasMethodName + '(';
repeat repeat
lParamType := GetNextWord(ASourceLine, lReaderPos); lParamType := GetNextWord(ASourceLine, lReaderPos);
// Method modifiers // Method modifiers
if (lParamType = 'virtual') or (lParamType = 'override') then Continue; if (lParamType = 'virtual') or (lParamType = 'override')
if (lParamType = 'overload') then or (lParamType = 'overload') then
begin begin
lPascalMethodModifiers := ' overload;'; lPascalMethodModifiers := Format(' %s;', [lParamType]);
Continue; Continue;
end; end;
@ -552,6 +554,11 @@ begin
TmpStr := TmpStr + '): ' + lMethodReturnPas + ';'; TmpStr := TmpStr + '): ' + lMethodReturnPas + ';';
FPasOutputImpl.Add(' Result := vAndroidPipesComm.WaitForStringReturn();'); FPasOutputImpl.Add(' Result := vAndroidPipesComm.WaitForStringReturn();');
end end
else if not IsBasicJavaType(lMethodReturn) then
begin
TmpStr := TmpStr + '): ' + lMethodReturnPas + ';';
FPasOutputImpl.Add(' Result := ' + lMethodReturnPas + '.Create(vAndroidPipesComm.WaitForIntReturn());');
end
else else
begin begin
TmpStr := TmpStr + '): ' + lMethodReturnPas + ';'; TmpStr := TmpStr + '): ' + lMethodReturnPas + ';';
@ -612,6 +619,7 @@ var
lConstructorPasParams, lConstructorJavaParams, lParamPrefix, lJavaParamVar: string; lConstructorPasParams, lConstructorJavaParams, lParamPrefix, lJavaParamVar: string;
DeclarationBase, lIDString: string; DeclarationBase, lIDString: string;
HasActivityParam: Boolean = False; HasActivityParam: Boolean = False;
lPascalMethodModifiers: String = '';
begin begin
if ASourceLine = '' then Exit; if ASourceLine = '' then Exit;
@ -640,7 +648,11 @@ begin
lParamType := GetNextWord(ASourceLine, lReaderPos); lParamType := GetNextWord(ASourceLine, lReaderPos);
// Method modifiers // Method modifiers
if (lParamType = 'virtual') or (lParamType = 'override') then Continue; if (lParamType = 'virtual') or (lParamType = 'override') then
begin
lPascalMethodModifiers := Format(' %s;', [lParamType]);
Continue;
end;
// The Activity global object doesn't appear in the Pascal side and // The Activity global object doesn't appear in the Pascal side and
//comes as a single word in the txt file //comes as a single word in the txt file
@ -681,7 +693,7 @@ begin
// Finalization of the constructor // Finalization of the constructor
FPasOutputClasses.Add(Format(' constructor %s(%s);', [lMethodName, lConstructorPasParams])); FPasOutputClasses.Add(Format(' constructor %s(%s);%s', [lMethodName, lConstructorPasParams, lPascalMethodModifiers]));
// //
FPasOutputImpl.Insert(FPasOutputImplCurLine, FPasOutputImpl.Insert(FPasOutputImplCurLine,
Format('constructor %s.%s(%s);', [FClassNamePas, lMethodName, lConstructorPasParams])); Format('constructor %s.%s(%s);', [FClassNamePas, lMethodName, lConstructorPasParams]));

View File

@ -21,7 +21,7 @@
# android.util.* # android.util.*
# #
[DisplayMetrics] TJavaObject [DisplayMetrics] TJavaObject
constructor Create() constructor Create(); override;
field float density field float density
field int densityDpi field int densityDpi
field int heightPixels field int heightPixels
@ -35,6 +35,9 @@ field float ydpi
# #
{DialogInterface} {DialogInterface}
type DialogInterface.OnClickListener = void onClick(DialogInterface dialog, int which) type DialogInterface.OnClickListener = void onClick(DialogInterface dialog, int which)
const BUTTON_NEGATIVE = $fffffffe;
const BUTTON_NEUTRAL = $fffffffd;
const BUTTON_POSITIVE = $ffffffff;
# #
# android.app.* # android.app.*
@ -158,7 +161,7 @@ method void setTitle(CharSequence title)
method void setView(View view) method void setView(View view)
[AlertDialog.Builder] TJavaObject [AlertDialog.Builder] TJavaObject
constructor Create(Activity) constructor Create(Activity); override;
method AlertDialog create () method AlertDialog create ()
#public Context getContext () #public Context getContext ()
#public AlertDialog.Builder setAdapter (ListAdapter adapter, DialogInterface.OnClickListener listener) #public AlertDialog.Builder setAdapter (ListAdapter adapter, DialogInterface.OnClickListener listener)
@ -218,20 +221,20 @@ method void addView(View child, int width, int height); overload;
type View.OnClickListener = void onClick(View v) type View.OnClickListener = void onClick(View v)
[LinearLayout] ViewGroup [LinearLayout] ViewGroup
constructor Create(Activity); constructor Create(Activity); override;
method void setOrientation(int orientation); method void setOrientation(int orientation);
const HORIZONTAL = 0; const HORIZONTAL = 0;
const VERTICAL = 1; const VERTICAL = 1;
[AbsoluteLayout] ViewGroup [AbsoluteLayout] ViewGroup
constructor Create(Activity); constructor Create(Activity); override;
[AbsoluteLayout.LayoutParams] ViewGroup.LayoutParams [AbsoluteLayout.LayoutParams] ViewGroup.LayoutParams
constructor Create(int param_width, int param_height, int param_x, int param_y); constructor Create(int param_width, int param_height, int param_x, int param_y);
[TextView] View [TextView] View
constructor Create(Activity); virtual; constructor Create(Activity); override;
method void setText(CharSequence AText); virtual; method void setText(CharSequence AText);
callbacksetter void setOnClickListener($View.OnClickListener l) callbacksetter void setOnClickListener($View.OnClickListener l)
method void setTextSize(int unit_; float size); method void setTextSize(int unit_; float size);
method CharSequence getText() method CharSequence getText()
@ -245,7 +248,7 @@ constructor Create(Activity); override;
[FrameLayout] ViewGroup [FrameLayout] ViewGroup
[TimePicker] FrameLayout [TimePicker] FrameLayout
constructor Create(Activity); constructor Create(Activity); override;
method int getCurrentHour(); method int getCurrentHour();
method void setCurrentHour(int currentHour); method void setCurrentHour(int currentHour);
method int getCurrentMinute; method int getCurrentMinute;
@ -254,7 +257,7 @@ method boolean is24HourView;
method void setIs24HourView(boolean AIs24HourView); method void setIs24HourView(boolean AIs24HourView);
[ScrollView] FrameLayout [ScrollView] FrameLayout
constructor Create(Activity); constructor Create(Activity); override;
[CompoundButton] Button [CompoundButton] Button
#constructor Create(Activity) abstract #constructor Create(Activity) abstract
@ -265,7 +268,7 @@ method void setChecked(boolean checked)
method void toggle() method void toggle()
[CheckBox] CompoundButton [CheckBox] CompoundButton
constructor Create(Activity) constructor Create(Activity); override;
[AdapterView] ViewGroup [AdapterView] ViewGroup
method int getSelectedItemPosition() method int getSelectedItemPosition()
@ -283,7 +286,7 @@ methodo void setSelection(int position, boolean animate); overload;
method void setSelection(int position); overload; method void setSelection(int position); overload;
[Spinner] AbsSpinner [Spinner] AbsSpinner
constructor Create(Activity); constructor Create(Activity); override;
# #
# For info about the Adapter of a spinner see: # For info about the Adapter of a spinner see:

View File

@ -629,7 +629,7 @@ public class AndroidAll
ViewElementsTags.add(null); ViewElementsTags.add(null);
MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);
break; break;
// method void setText(CharSequence AText); virtual; // method void setText(CharSequence AText);
case amkUI_TTextView_setText_1: case amkUI_TTextView_setText_1:
DebugOut("amkUI_TTextView_setText_1"); DebugOut("amkUI_TTextView_setText_1");
// Self // Self