android-sdk: some work on button click

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1796 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
sekelsenmat
2011-08-10 13:44:23 +00:00
parent a99857032f
commit 93503cda15
2 changed files with 130 additions and 69 deletions

View File

@ -39,7 +39,7 @@
<PackageName Value="LCL"/> <PackageName Value="LCL"/>
</Item2> </Item2>
</RequiredPackages> </RequiredPackages>
<Units Count="22"> <Units Count="23">
<Unit0> <Unit0>
<Filename Value="android_bindings_generator.pas"/> <Filename Value="android_bindings_generator.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
@ -48,7 +48,7 @@
<WindowIndex Value="0"/> <WindowIndex Value="0"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<CursorPos X="15" Y="14"/> <CursorPos X="15" Y="14"/>
<UsageCount Value="34"/> <UsageCount Value="35"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit0> </Unit0>
<Unit1> <Unit1>
@ -61,7 +61,7 @@
<WindowIndex Value="0"/> <WindowIndex Value="0"/>
<TopLine Value="6"/> <TopLine Value="6"/>
<CursorPos X="1" Y="51"/> <CursorPos X="1" Y="51"/>
<UsageCount Value="34"/> <UsageCount Value="35"/>
<Loaded Value="True"/> <Loaded Value="True"/>
<LoadedDesigner Value="True"/> <LoadedDesigner Value="True"/>
</Unit1> </Unit1>
@ -120,9 +120,9 @@
<IsVisibleTab Value="True"/> <IsVisibleTab Value="True"/>
<EditorIndex Value="3"/> <EditorIndex Value="3"/>
<WindowIndex Value="0"/> <WindowIndex Value="0"/>
<TopLine Value="560"/> <TopLine Value="563"/>
<CursorPos X="28" Y="574"/> <CursorPos X="16" Y="600"/>
<UsageCount Value="34"/> <UsageCount Value="35"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit8> </Unit8>
<Unit9> <Unit9>
@ -152,8 +152,8 @@
<Unit12> <Unit12>
<Filename Value="../../../p-tools/turbochessclock4android/android/src/com/pascal/turbochessclock/AndroidView.java"/> <Filename Value="../../../p-tools/turbochessclock4android/android/src/com/pascal/turbochessclock/AndroidView.java"/>
<WindowIndex Value="0"/> <WindowIndex Value="0"/>
<TopLine Value="177"/> <TopLine Value="232"/>
<CursorPos X="39" Y="177"/> <CursorPos X="111" Y="259"/>
<UsageCount Value="15"/> <UsageCount Value="15"/>
<DefaultSyntaxHighlighter Value="Java"/> <DefaultSyntaxHighlighter Value="Java"/>
</Unit12> </Unit12>
@ -233,128 +233,132 @@
<UsageCount Value="10"/> <UsageCount Value="10"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit21> </Unit21>
<Unit22>
<Filename Value="../../examples/androidlcl/android/src/com/pascal/androidlcl/AndroidAll.java"/>
<WindowIndex Value="0"/>
<TopLine Value="53"/>
<CursorPos X="1" Y="1"/>
<UsageCount Value="10"/>
<DefaultSyntaxHighlighter Value="Java"/>
</Unit22>
</Units> </Units>
<JumpHistory Count="30" HistoryIndex="29"> <JumpHistory Count="29" HistoryIndex="28">
<Position1> <Position1>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="22" Column="27" TopLine="1"/> <Caret Line="22" Column="29" TopLine="1"/>
</Position1> </Position1>
<Position2> <Position2>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="60" Column="17" TopLine="31"/> <Caret Line="23" Column="15" TopLine="1"/>
</Position2> </Position2>
<Position3> <Position3>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="110" Column="18" TopLine="103"/> <Caret Line="106" Column="72" TopLine="106"/>
</Position3> </Position3>
<Position4> <Position4>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="375" Column="33" TopLine="343"/> <Caret Line="212" Column="35" TopLine="184"/>
</Position4> </Position4>
<Position5> <Position5>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="22" Column="29" TopLine="1"/> <Caret Line="375" Column="65" TopLine="351"/>
</Position5> </Position5>
<Position6> <Position6>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="23" Column="15" TopLine="1"/> <Caret Line="374" Column="50" TopLine="351"/>
</Position6> </Position6>
<Position7> <Position7>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="106" Column="72" TopLine="106"/> <Caret Line="36" Column="19" TopLine="3"/>
</Position7> </Position7>
<Position8> <Position8>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="212" Column="35" TopLine="184"/> <Caret Line="689" Column="24" TopLine="664"/>
</Position8> </Position8>
<Position9> <Position9>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="375" Column="65" TopLine="351"/> <Caret Line="375" Column="1" TopLine="352"/>
</Position9> </Position9>
<Position10> <Position10>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="374" Column="50" TopLine="351"/> <Caret Line="40" Column="18" TopLine="3"/>
</Position10> </Position10>
<Position11> <Position11>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="36" Column="19" TopLine="3"/> <Caret Line="713" Column="13" TopLine="689"/>
</Position11> </Position11>
<Position12> <Position12>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="689" Column="24" TopLine="664"/> <Caret Line="41" Column="53" TopLine="3"/>
</Position12> </Position12>
<Position13> <Position13>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="375" Column="1" TopLine="352"/> <Caret Line="677" Column="1" TopLine="673"/>
</Position13> </Position13>
<Position14> <Position14>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="40" Column="18" TopLine="3"/> <Caret Line="153" Column="40" TopLine="134"/>
</Position14> </Position14>
<Position15> <Position15>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="713" Column="13" TopLine="689"/> <Caret Line="171" Column="31" TopLine="134"/>
</Position15> </Position15>
<Position16> <Position16>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="41" Column="53" TopLine="3"/> <Caret Line="385" Column="1" TopLine="370"/>
</Position16> </Position16>
<Position17> <Position17>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="677" Column="1" TopLine="673"/> <Caret Line="325" Column="22" TopLine="309"/>
</Position17> </Position17>
<Position18> <Position18>
<Filename Value="android_sdk_bindings_gen.pas"/> <Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="153" Column="40" TopLine="134"/> <Caret Line="727" Column="32" TopLine="722"/>
</Position18> </Position18>
<Position19> <Position19>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="171" Column="31" TopLine="134"/>
</Position19>
<Position20>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="385" Column="1" TopLine="370"/>
</Position20>
<Position21>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="325" Column="22" TopLine="309"/>
</Position21>
<Position22>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="727" Column="32" TopLine="722"/>
</Position22>
<Position23>
<Filename Value="mainform.pas"/> <Filename Value="mainform.pas"/>
<Caret Line="38" Column="34" TopLine="1"/> <Caret Line="38" Column="34" TopLine="1"/>
</Position23> </Position19>
<Position24> <Position20>
<Filename Value="mainform.pas"/> <Filename Value="mainform.pas"/>
<Caret Line="40" Column="32" TopLine="2"/> <Caret Line="40" Column="32" TopLine="2"/>
</Position24> </Position20>
<Position25> <Position21>
<Filename Value="mainform.pas"/> <Filename Value="mainform.pas"/>
<Caret Line="48" Column="62" TopLine="2"/> <Caret Line="48" Column="62" TopLine="2"/>
</Position25> </Position21>
<Position26> <Position22>
<Filename Value="mainform.pas"/> <Filename Value="mainform.pas"/>
<Caret Line="49" Column="15" TopLine="5"/> <Caret Line="49" Column="15" TopLine="5"/>
</Position26> </Position22>
<Position27> <Position23>
<Filename Value="sdk_level_7/android_all.txt"/> <Filename Value="sdk_level_7/android_all.txt"/>
<Caret Line="63" Column="42" TopLine="51"/> <Caret Line="63" Column="42" TopLine="51"/>
</Position27> </Position23>
<Position28> <Position24>
<Filename Value="../../../lazarus/lcl/interfaces/lcl.pas"/> <Filename Value="../../../lazarus/lcl/interfaces/lcl.pas"/>
<Caret Line="1" Column="1" TopLine="1"/> <Caret Line="1" Column="1" TopLine="1"/>
</Position28> </Position24>
<Position29> <Position25>
<Filename Value="../../../lazarus/lcl/interfaces/lcl.pas"/> <Filename Value="../../../lazarus/lcl/interfaces/lcl.pas"/>
<Caret Line="10" Column="1" TopLine="1"/> <Caret Line="10" Column="1" TopLine="1"/>
</Position29> </Position25>
<Position30> <Position26>
<Filename Value="../../../lazarus/lcl/interfaces/lcl.pas"/> <Filename Value="../../../lazarus/lcl/interfaces/lcl.pas"/>
<Caret Line="20" Column="81" TopLine="1"/> <Caret Line="20" Column="81" TopLine="1"/>
</Position30> </Position26>
<Position27>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="789" Column="1" TopLine="760"/>
</Position27>
<Position28>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="623" Column="3" TopLine="593"/>
</Position28>
<Position29>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="667" Column="1" TopLine="644"/>
</Position29>
</JumpHistory> </JumpHistory>
</ProjectOptions> </ProjectOptions>
<CompilerOptions> <CompilerOptions>

View File

@ -15,8 +15,7 @@ type
private private
FSourceFile: TStringList; FSourceFile: TStringList;
FPasOutputTypes, FPasOutputClassesForward, FPasOutputClasses, FPasOutputTypes, FPasOutputClassesForward, FPasOutputClasses,
FPasOutputConsts, FPasOutputIDs, FPasOutputImpl, FPasOutputMessages, FPasOutputConsts, FPasOutputIDs, FPasOutputImpl, FPasOutputMessages: TStringList;
FPasOutputInterfaceConsts: TStringList;
FJavaOutputIDs, FJavaOutputMethods: TStringList; FJavaOutputIDs, FJavaOutputMethods: TStringList;
FClassName, FClassNamePas: string; // Class name of the class currently being parsed FClassName, FClassNamePas: string; // Class name of the class currently being parsed
FClassNum, FMethodNum: Integer; FClassNum, FMethodNum: Integer;
@ -77,18 +76,14 @@ begin
ADest.Add(' end;'); ADest.Add(' end;');
ADest.Add(''); ADest.Add('');
ADest.Add('const'); ADest.Add('const');
ADest.Add(' { Interface Constants }'); ADest.Add(' { Constants }');
ADest.AddStrings(FPasOutputInterfaceConsts); ADest.AddStrings(FPasOutputConsts);
ADest.Add(''); ADest.Add('');
ADest.Add('function HandleMessage(AFirstInt: Integer): Boolean;'); ADest.Add('function HandleMessage(AFirstInt: Integer): Boolean;');
ADest.Add(''); ADest.Add('');
ADest.Add('implementation'); ADest.Add('implementation');
ADest.Add(''); ADest.Add('');
ADest.Add('const'); ADest.Add('const');
ADest.Add(' { Implementation Constants }');
ADest.Add('');
ADest.AddStrings(FPasOutputConsts);
ADest.Add('');
ADest.Add(' { IDs }'); ADest.Add(' { IDs }');
ADest.Add(''); ADest.Add('');
ADest.AddStrings(FPasOutputIDs); ADest.AddStrings(FPasOutputIDs);
@ -571,7 +566,7 @@ begin
lConstValue := GetNextWord(ASourceLine, lReaderPos); lConstValue := GetNextWord(ASourceLine, lReaderPos);
// Method type and name // Method type and name
FPasOutputInterfaceConsts.Add(Format(' %s = %s;', [lConstName, lConstValue])); FPasOutputConsts.Add(Format(' %s = %s;', [lConstName, lConstValue]));
end; end;
// callbacksettercaller setOnClickListener callOnClickListener OnClickCallback = procedure (v: TView) of object; // callbacksettercaller setOnClickListener callOnClickListener OnClickCallback = procedure (v: TView) of object;
@ -581,6 +576,7 @@ var
lCurWord: string; lCurWord: string;
lSetterName, lCallerName, lCallbackName, lCallbackDeclaration: string; lSetterName, lCallerName, lCallbackName, lCallbackDeclaration: string;
lIDSetter, lIDStart, lIDFinished: String; lIDSetter, lIDStart, lIDFinished: String;
lJavaParamSelf: string;
begin begin
if ASourceLine = '' then Exit; if ASourceLine = '' then Exit;
@ -593,10 +589,13 @@ begin
lIDSetter := GetIDString(lSetterName); lIDSetter := GetIDString(lSetterName);
AddOutputIDs(lIDSetter); AddOutputIDs(lIDSetter);
Inc(FMethodNum);
lIDStart := GetIDString(lCallbackName + '_Start'); lIDStart := GetIDString(lCallbackName + '_Start');
AddOutputIDs(lIDStart); AddOutputIDs(lIDStart);
Inc(FMethodNum);
lIDFinished := GetIDString(lCallbackName + '_Finished'); lIDFinished := GetIDString(lCallbackName + '_Finished');
AddOutputIDs(lIDFinished); AddOutputIDs(lIDFinished);
Inc(FMethodNum);
FPasOutputTypes.Add(' T' + lCallbackDeclaration); FPasOutputTypes.Add(' T' + lCallbackDeclaration);
@ -638,6 +637,66 @@ begin
vAndroidPipesComm.SendInt(lInt); vAndroidPipesComm.SendInt(lInt);
end; end;
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( '');
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( ' MyAndroidPipesComm.SendResult();');
FJavaOutputMethods.Add( ' break;');
(* case amkUI_TextView_setOnClickListener:
DebugOut("amkUI_TextView_setOnClickListener");
// Get Self
lInt = MyAndroidPipesComm.GetInt();
lTextView = (TextView) ViewElements.get(lInt);
lPascalPointer = MyAndroidPipesComm.GetInt();
lTextView.setTag(Integer.valueOf(lPascalPointer));
// Run the code
lTextView.setOnClickListener(
new View.OnClickListener()
{
public void onClick(View v)
{
// Perform action on click
DebugOut("START TextView OnClickListener");
MyAndroidPipesComm.SendMessage(AndroidPipesComm.amkUICommand, amkUI_TextView_OnClickCallback_Start);
//lIndex := UIElements.indexOf(v);
//MyAndroidPipesComm.SendInt(lIndex);
Integer lTag = (Integer) v.getTag();
MyAndroidPipesComm.SendInt(lTag.intValue());
MyAndroidPipesComm.WaitForPascalMessage(AndroidPipesComm.amkUICommand, amkUI_TextView_OnClickCallback_Finished);
DebugOut("END TextView OnClickListener");
}
});
MyAndroidPipesComm.SendResult();
break;*)
end; end;
{ Reads one word in a string, starting at AStartPos (1-based index) { Reads one word in a string, starting at AStartPos (1-based index)
@ -769,7 +828,6 @@ begin
FPasOutputIDs := TStringList.Create; FPasOutputIDs := TStringList.Create;
FPasOutputConsts := TStringList.Create; FPasOutputConsts := TStringList.Create;
FPasOutputMessages := TStringList.Create; FPasOutputMessages := TStringList.Create;
FPasOutputInterfaceConsts := TStringList.Create;
FJavaOutputIDs := TStringList.Create; FJavaOutputIDs := TStringList.Create;
FJavaOutputMethods := TStringList.Create; FJavaOutputMethods := TStringList.Create;
@ -788,7 +846,6 @@ begin
FPasOutputIDs.Free; FPasOutputIDs.Free;
FPasOutputConsts.Free; FPasOutputConsts.Free;
FPasOutputMessages.Free; FPasOutputMessages.Free;
FPasOutputInterfaceConsts.Free;
FJavaOutputIDs.Free; FJavaOutputIDs.Free;
FJavaOutputMethods.Free; FJavaOutputMethods.Free;