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

View File

@ -15,8 +15,7 @@ type
private
FSourceFile: TStringList;
FPasOutputTypes, FPasOutputClassesForward, FPasOutputClasses,
FPasOutputConsts, FPasOutputIDs, FPasOutputImpl, FPasOutputMessages,
FPasOutputInterfaceConsts: TStringList;
FPasOutputConsts, FPasOutputIDs, FPasOutputImpl, FPasOutputMessages: TStringList;
FJavaOutputIDs, FJavaOutputMethods: TStringList;
FClassName, FClassNamePas: string; // Class name of the class currently being parsed
FClassNum, FMethodNum: Integer;
@ -77,18 +76,14 @@ begin
ADest.Add(' end;');
ADest.Add('');
ADest.Add('const');
ADest.Add(' { Interface Constants }');
ADest.AddStrings(FPasOutputInterfaceConsts);
ADest.Add(' { Constants }');
ADest.AddStrings(FPasOutputConsts);
ADest.Add('');
ADest.Add('function HandleMessage(AFirstInt: Integer): Boolean;');
ADest.Add('');
ADest.Add('implementation');
ADest.Add('');
ADest.Add('const');
ADest.Add(' { Implementation Constants }');
ADest.Add('');
ADest.AddStrings(FPasOutputConsts);
ADest.Add('');
ADest.Add(' { IDs }');
ADest.Add('');
ADest.AddStrings(FPasOutputIDs);
@ -571,7 +566,7 @@ begin
lConstValue := GetNextWord(ASourceLine, lReaderPos);
// Method type and name
FPasOutputInterfaceConsts.Add(Format(' %s = %s;', [lConstName, lConstValue]));
FPasOutputConsts.Add(Format(' %s = %s;', [lConstName, lConstValue]));
end;
// callbacksettercaller setOnClickListener callOnClickListener OnClickCallback = procedure (v: TView) of object;
@ -581,6 +576,7 @@ var
lCurWord: string;
lSetterName, lCallerName, lCallbackName, lCallbackDeclaration: string;
lIDSetter, lIDStart, lIDFinished: String;
lJavaParamSelf: string;
begin
if ASourceLine = '' then Exit;
@ -593,10 +589,13 @@ begin
lIDSetter := GetIDString(lSetterName);
AddOutputIDs(lIDSetter);
Inc(FMethodNum);
lIDStart := GetIDString(lCallbackName + '_Start');
AddOutputIDs(lIDStart);
Inc(FMethodNum);
lIDFinished := GetIDString(lCallbackName + '_Finished');
AddOutputIDs(lIDFinished);
Inc(FMethodNum);
FPasOutputTypes.Add(' T' + lCallbackDeclaration);
@ -638,6 +637,66 @@ begin
vAndroidPipesComm.SendInt(lInt);
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;
{ Reads one word in a string, starting at AStartPos (1-based index)
@ -769,7 +828,6 @@ begin
FPasOutputIDs := TStringList.Create;
FPasOutputConsts := TStringList.Create;
FPasOutputMessages := TStringList.Create;
FPasOutputInterfaceConsts := TStringList.Create;
FJavaOutputIDs := TStringList.Create;
FJavaOutputMethods := TStringList.Create;
@ -788,7 +846,6 @@ begin
FPasOutputIDs.Free;
FPasOutputConsts.Free;
FPasOutputMessages.Free;
FPasOutputInterfaceConsts.Free;
FJavaOutputIDs.Free;
FJavaOutputMethods.Free;