android: Adds title routines, updates bindings

git-svn-id: trunk@32032 -
This commit is contained in:
sekelsenmat 2011-08-22 08:48:57 +00:00
parent 9faa8a5364
commit 41360bd47d
6 changed files with 342 additions and 206 deletions

1
.gitattributes vendored
View File

@ -5087,6 +5087,7 @@ lcl/interfaces/android/androidint.pas svneol=native#text/pascal
lcl/interfaces/android/androidobject.inc svneol=native#text/pascal
lcl/interfaces/android/androidpipescomm.pas svneol=native#text/pascal
lcl/interfaces/android/androidprivate.pas svneol=native#text/pascal
lcl/interfaces/android/androidstringlists.pas svneol=native#text/pascal
lcl/interfaces/android/androidtimer.pas svneol=native#text/pascal
lcl/interfaces/android/androidwsfactory.pas svneol=native#text/pascal
lcl/interfaces/android/interfaces.pp svneol=native#text/plain

View File

@ -7,6 +7,7 @@ uses
androidwsforms,
androidwsstdctrls,
androidprivate,
androidstringlists,
interfaces;
implementation
end.

View File

@ -11,6 +11,7 @@ type
{ Forward declaration of classes }
TDisplayMetrics = class;
TActivity = class;
TDisplay = class;
TWindowManager = class;
TViewGroup_LayoutParams = class;
@ -56,6 +57,12 @@ type
function ydpi(): Single;
end;
TActivity = class(TJavaObject)
public
procedure setTitle(title: string);
function getTitle(): string;
end;
TDisplay = class(TJavaObject)
public
procedure getMetrics(outMetrics: TDisplayMetrics);
@ -79,7 +86,11 @@ type
TViewGroup = class(TView)
public
procedure addView(child: TView; params: TViewGroup_LayoutParams);
procedure addView(child: TView; aindex: Integer; params: TViewGroup_LayoutParams); overload;
procedure addView(child: TView; params: TViewGroup_LayoutParams); overload;
procedure addView(child: TView; aindex: Integer); overload;
procedure addView(child: TView); overload;
procedure addView(child: TView; width: Integer; height: Integer); overload;
end;
TLinearLayout = class(TViewGroup)
@ -203,6 +214,7 @@ type
const
{ Constants }
{ TDisplayMetrics }
{ TActivity }
{ TDisplay }
{ TWindowManager }
{ TViewGroup_LayoutParams }
@ -264,87 +276,97 @@ const
function HandleMessage(AFirstInt: Integer): Boolean;
var
activity: TActivity;
implementation
const
{ IDs }
// TDisplayMetrics
amkUI_TDisplayMetrics_Create = $00101000;
amkUI_TDisplayMetrics_density = $00101001;
amkUI_TDisplayMetrics_densityDpi = $00101002;
amkUI_TDisplayMetrics_heightPixels = $00101003;
amkUI_TDisplayMetrics_scaledDensity = $00101004;
amkUI_TDisplayMetrics_widthPixels = $00101005;
amkUI_TDisplayMetrics_xdpi = $00101006;
amkUI_TDisplayMetrics_ydpi = $00101007;
amkUI_TDisplayMetrics_Create_0 = $00101000;
amkUI_TDisplayMetrics_density_1 = $00101001;
amkUI_TDisplayMetrics_densityDpi_2 = $00101002;
amkUI_TDisplayMetrics_heightPixels_3 = $00101003;
amkUI_TDisplayMetrics_scaledDensity_4 = $00101004;
amkUI_TDisplayMetrics_widthPixels_5 = $00101005;
amkUI_TDisplayMetrics_xdpi_6 = $00101006;
amkUI_TDisplayMetrics_ydpi_7 = $00101007;
// TActivity
amkUI_TActivity_setTitle_0 = $00102000;
amkUI_TActivity_getTitle_1 = $00102001;
// TDisplay
amkUI_TDisplay_getMetrics = $00102000;
amkUI_TDisplay_getMetrics_0 = $00103000;
// TWindowManager
amkUI_TWindowManager_getDefaultDisplay = $00103000;
amkUI_TWindowManager_getDefaultDisplay_0 = $00104000;
// TViewGroup_LayoutParams
amkUI_TViewGroup_LayoutParams_Create = $00104000;
amkUI_TViewGroup_LayoutParams_Create_0 = $00105000;
// TView
amkUI_TView_setLayoutParams = $00105000;
amkUI_TView_setVisibility = $00105001;
amkUI_TView_setLayoutParams_0 = $00106000;
amkUI_TView_setVisibility_1 = $00106001;
// TViewGroup
amkUI_TViewGroup_addView = $00106000;
amkUI_TViewGroup_addView_0 = $00107000;
amkUI_TViewGroup_addView_1 = $00107001;
amkUI_TViewGroup_addView_2 = $00107002;
amkUI_TViewGroup_addView_3 = $00107003;
amkUI_TViewGroup_addView_4 = $00107004;
// TLinearLayout
amkUI_TLinearLayout_Create = $00107000;
amkUI_TLinearLayout_setOrientation = $00107001;
amkUI_TLinearLayout_Create_0 = $00108000;
amkUI_TLinearLayout_setOrientation_1 = $00108001;
// TAbsoluteLayout
amkUI_TAbsoluteLayout_Create = $00108000;
amkUI_TAbsoluteLayout_Create_0 = $00109000;
// TAbsoluteLayout_LayoutParams
amkUI_TAbsoluteLayout_LayoutParams_Create = $00109000;
amkUI_TAbsoluteLayout_LayoutParams_Create_0 = $0010A000;
// TTextView
amkUI_TTextView_Create = $0010A000;
amkUI_TTextView_setText = $0010A001;
amkUI_TTextView_setOnClickListener = $0010A002;
amkUI_TTextView_OnClickListener_Start = $0010A003;
amkUI_TTextView_OnClickListener_Finished = $0010A004;
amkUI_TTextView_setTextSize = $0010A005;
amkUI_TTextView_getText = $0010A006;
amkUI_TTextView_Create_0 = $0010B000;
amkUI_TTextView_setText_1 = $0010B001;
amkUI_TTextView_setOnClickListener_2 = $0010B002;
amkUI_TTextView_OnClickListener_Start_3 = $0010B003;
amkUI_TTextView_OnClickListener_Finished_4 = $0010B004;
amkUI_TTextView_setTextSize_5 = $0010B005;
amkUI_TTextView_getText_6 = $0010B006;
// TEditText
amkUI_TEditText_Create = $0010B000;
amkUI_TEditText_setText = $0010B001;
amkUI_TEditText_Create_0 = $0010C000;
amkUI_TEditText_setText_1 = $0010C001;
// TButton
amkUI_TButton_Create = $0010C000;
amkUI_TButton_setText = $0010C001;
amkUI_TButton_Create_0 = $0010D000;
amkUI_TButton_setText_1 = $0010D001;
// TFrameLayout
// TTimePicker
amkUI_TTimePicker_Create = $0010E000;
amkUI_TTimePicker_getCurrentHour = $0010E001;
amkUI_TTimePicker_setCurrentHour = $0010E002;
amkUI_TTimePicker_getCurrentMinute = $0010E003;
amkUI_TTimePicker_setCurrentMinute = $0010E004;
amkUI_TTimePicker_is24HourView = $0010E005;
amkUI_TTimePicker_setIs24HourView = $0010E006;
amkUI_TTimePicker_Create_0 = $0010F000;
amkUI_TTimePicker_getCurrentHour_1 = $0010F001;
amkUI_TTimePicker_setCurrentHour_2 = $0010F002;
amkUI_TTimePicker_getCurrentMinute_3 = $0010F003;
amkUI_TTimePicker_setCurrentMinute_4 = $0010F004;
amkUI_TTimePicker_is24HourView_5 = $0010F005;
amkUI_TTimePicker_setIs24HourView_6 = $0010F006;
// TScrollView
amkUI_TScrollView_Create = $0010F000;
amkUI_TScrollView_Create_0 = $00110000;
// TCompoundButton
amkUI_TCompoundButton_isChecked = $00110000;
amkUI_TCompoundButton_performClick = $00110001;
amkUI_TCompoundButton_setChecked = $00110002;
amkUI_TCompoundButton_toggle = $00110003;
amkUI_TCompoundButton_isChecked_0 = $00111000;
amkUI_TCompoundButton_performClick_1 = $00111001;
amkUI_TCompoundButton_setChecked_2 = $00111002;
amkUI_TCompoundButton_toggle_3 = $00111003;
// TCheckBox
amkUI_TCheckBox_Create = $00111000;
amkUI_TCheckBox_Create_0 = $00112000;
// TAdapterView
// TAbsSpinner
amkUI_TAbsSpinner_getCount = $00113000;
amkUI_TAbsSpinner_setAdapter = $00113001;
amkUI_TAbsSpinner_getCount_0 = $00114000;
amkUI_TAbsSpinner_setAdapter_1 = $00114001;
// TSpinner
amkUI_TSpinner_Create = $00114000;
amkUI_TSpinner_Create_0 = $00115000;
// TFilterable
// TAdapter
// TListAdapter
// TSpinnerAdapter
// TBaseAdapter
// TArrayAdapter_String_
amkUI_TArrayAdapter_String__Create = $0011A000;
amkUI_TArrayAdapter_String__add = $0011A001;
amkUI_TArrayAdapter_String__clear = $0011A002;
amkUI_TArrayAdapter_String__insert = $0011A003;
amkUI_TArrayAdapter_String__remove = $0011A004;
amkUI_TArrayAdapter_String__Create_0 = $0011B000;
amkUI_TArrayAdapter_String__add_1 = $0011B001;
amkUI_TArrayAdapter_String__clear_2 = $0011B002;
amkUI_TArrayAdapter_String__insert_3 = $0011B003;
amkUI_TArrayAdapter_String__remove_4 = $0011B004;
// Tlayout
{ Implementation of Classes }
@ -352,13 +374,13 @@ const
constructor TDisplayMetrics.Create();
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TDisplayMetrics_Create);
vAndroidPipesComm.SendInt(amkUI_TDisplayMetrics_Create_0);
Index := vAndroidPipesComm.WaitForIntReturn();
end;
function TDisplayMetrics.density(): Single;
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TDisplayMetrics_density);
vAndroidPipesComm.SendInt(amkUI_TDisplayMetrics_density_1);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
Result := Single(vAndroidPipesComm.WaitForIntReturn());
end;
@ -366,7 +388,7 @@ end;
function TDisplayMetrics.densityDpi(): Integer;
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TDisplayMetrics_densityDpi);
vAndroidPipesComm.SendInt(amkUI_TDisplayMetrics_densityDpi_2);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
Result := Integer(vAndroidPipesComm.WaitForIntReturn());
end;
@ -374,7 +396,7 @@ end;
function TDisplayMetrics.heightPixels(): Integer;
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TDisplayMetrics_heightPixels);
vAndroidPipesComm.SendInt(amkUI_TDisplayMetrics_heightPixels_3);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
Result := Integer(vAndroidPipesComm.WaitForIntReturn());
end;
@ -382,7 +404,7 @@ end;
function TDisplayMetrics.scaledDensity(): Single;
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TDisplayMetrics_scaledDensity);
vAndroidPipesComm.SendInt(amkUI_TDisplayMetrics_scaledDensity_4);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
Result := Single(vAndroidPipesComm.WaitForIntReturn());
end;
@ -390,7 +412,7 @@ end;
function TDisplayMetrics.widthPixels(): Integer;
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TDisplayMetrics_widthPixels);
vAndroidPipesComm.SendInt(amkUI_TDisplayMetrics_widthPixels_5);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
Result := Integer(vAndroidPipesComm.WaitForIntReturn());
end;
@ -398,7 +420,7 @@ end;
function TDisplayMetrics.xdpi(): Single;
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TDisplayMetrics_xdpi);
vAndroidPipesComm.SendInt(amkUI_TDisplayMetrics_xdpi_6);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
Result := Single(vAndroidPipesComm.WaitForIntReturn());
end;
@ -406,15 +428,34 @@ end;
function TDisplayMetrics.ydpi(): Single;
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TDisplayMetrics_ydpi);
vAndroidPipesComm.SendInt(amkUI_TDisplayMetrics_ydpi_7);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
Result := Single(vAndroidPipesComm.WaitForIntReturn());
end;
procedure TActivity.setTitle(title: string);
var
lString_1: TString;
begin
lString_1 := TString.Create(title);
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TActivity_setTitle_0);
vAndroidPipesComm.SendInt(lString_1.Index); // text
vAndroidPipesComm.WaitForReturn();
lString_1.Free;
end;
function TActivity.getTitle(): string;
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TActivity_getTitle_1);
Result := vAndroidPipesComm.WaitForStringReturn();
end;
procedure TDisplay.getMetrics(outMetrics: TDisplayMetrics);
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TDisplay_getMetrics);
vAndroidPipesComm.SendInt(amkUI_TDisplay_getMetrics_0);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(Integer(outMetrics.Index));
vAndroidPipesComm.WaitForReturn();
@ -423,7 +464,7 @@ end;
function TWindowManager.getDefaultDisplay(): TDisplay;
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TWindowManager_getDefaultDisplay);
vAndroidPipesComm.SendInt(amkUI_TWindowManager_getDefaultDisplay_0);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
Result := TDisplay(vAndroidPipesComm.WaitForIntReturn());
end;
@ -431,7 +472,7 @@ end;
constructor TViewGroup_LayoutParams.Create(width: Integer; height: Integer);
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TViewGroup_LayoutParams_Create);
vAndroidPipesComm.SendInt(amkUI_TViewGroup_LayoutParams_Create_0);
vAndroidPipesComm.SendInt(Integer(width));
vAndroidPipesComm.SendInt(Integer(height));
Index := vAndroidPipesComm.WaitForIntReturn();
@ -439,7 +480,7 @@ end;
procedure TView.setLayoutParams(params: TViewGroup_LayoutParams);
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TView_setLayoutParams);
vAndroidPipesComm.SendInt(amkUI_TView_setLayoutParams_0);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(Integer(params.Index));
vAndroidPipesComm.WaitForReturn();
@ -448,32 +489,73 @@ end;
procedure TView.setVisibility(visibility: Integer);
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TView_setVisibility);
vAndroidPipesComm.SendInt(amkUI_TView_setVisibility_1);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(Integer(visibility));
vAndroidPipesComm.WaitForReturn();
end;
procedure TViewGroup.addView(child: TView; aindex: Integer; params: TViewGroup_LayoutParams);
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TViewGroup_addView_0);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(Integer(child.Index));
vAndroidPipesComm.SendInt(Integer(aindex));
vAndroidPipesComm.SendInt(Integer(params.Index));
vAndroidPipesComm.WaitForReturn();
end;
procedure TViewGroup.addView(child: TView; params: TViewGroup_LayoutParams);
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TViewGroup_addView);
vAndroidPipesComm.SendInt(amkUI_TViewGroup_addView_1);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(Integer(child.Index));
vAndroidPipesComm.SendInt(Integer(params.Index));
vAndroidPipesComm.WaitForReturn();
end;
procedure TViewGroup.addView(child: TView; aindex: Integer);
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TViewGroup_addView_2);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(Integer(child.Index));
vAndroidPipesComm.SendInt(Integer(aindex));
vAndroidPipesComm.WaitForReturn();
end;
procedure TViewGroup.addView(child: TView);
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TViewGroup_addView_3);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(Integer(child.Index));
vAndroidPipesComm.WaitForReturn();
end;
procedure TViewGroup.addView(child: TView; width: Integer; height: Integer);
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TViewGroup_addView_4);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(Integer(child.Index));
vAndroidPipesComm.SendInt(Integer(width));
vAndroidPipesComm.SendInt(Integer(height));
vAndroidPipesComm.WaitForReturn();
end;
constructor TLinearLayout.Create();
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TLinearLayout_Create);
vAndroidPipesComm.SendInt(amkUI_TLinearLayout_Create_0);
Index := vAndroidPipesComm.WaitForIntReturn();
end;
procedure TLinearLayout.setOrientation(orientation: Integer);
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TLinearLayout_setOrientation);
vAndroidPipesComm.SendInt(amkUI_TLinearLayout_setOrientation_1);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(Integer(orientation));
vAndroidPipesComm.WaitForReturn();
@ -482,13 +564,13 @@ end;
constructor TAbsoluteLayout.Create();
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TAbsoluteLayout_Create);
vAndroidPipesComm.SendInt(amkUI_TAbsoluteLayout_Create_0);
Index := vAndroidPipesComm.WaitForIntReturn();
end;
constructor TAbsoluteLayout_LayoutParams.Create(param_width: Integer; param_height: Integer; param_x: Integer; param_y: Integer);
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TAbsoluteLayout_LayoutParams_Create);
vAndroidPipesComm.SendInt(amkUI_TAbsoluteLayout_LayoutParams_Create_0);
vAndroidPipesComm.SendInt(Integer(param_width));
vAndroidPipesComm.SendInt(Integer(param_height));
vAndroidPipesComm.SendInt(Integer(param_x));
@ -498,7 +580,7 @@ end;
constructor TTextView.Create();
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TTextView_Create);
vAndroidPipesComm.SendInt(amkUI_TTextView_Create_0);
Index := vAndroidPipesComm.WaitForIntReturn();
end;
procedure TTextView.setText(AText: string);
@ -507,7 +589,7 @@ var
begin
lString_1 := TString.Create(AText);
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TTextView_setText);
vAndroidPipesComm.SendInt(amkUI_TTextView_setText_1);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(lString_1.Index); // text
vAndroidPipesComm.WaitForReturn();
@ -518,7 +600,7 @@ procedure TTextView.setOnClickListener(ACallback: TOnClickListener);
begin
OnClickListener := ACallback;
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TTextView_setOnClickListener);
vAndroidPipesComm.SendInt(amkUI_TTextView_setOnClickListener_2);
vAndroidPipesComm.SendInt(Index); // Self, Java Index
vAndroidPipesComm.SendInt(PtrInt(Self)); // Self, Pascal pointer
vAndroidPipesComm.WaitForReturn();
@ -531,7 +613,7 @@ end;
procedure TTextView.setTextSize(unit_: Integer; size: Single);
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TTextView_setTextSize);
vAndroidPipesComm.SendInt(amkUI_TTextView_setTextSize_5);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(Integer(unit_));
vAndroidPipesComm.SendInt(Integer(size));
@ -541,7 +623,7 @@ end;
function TTextView.getText(): string;
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TTextView_getText);
vAndroidPipesComm.SendInt(amkUI_TTextView_getText_6);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
Result := vAndroidPipesComm.WaitForStringReturn();
end;
@ -549,7 +631,7 @@ end;
constructor TEditText.Create();
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TEditText_Create);
vAndroidPipesComm.SendInt(amkUI_TEditText_Create_0);
Index := vAndroidPipesComm.WaitForIntReturn();
end;
procedure TEditText.setText(AText: string);
@ -558,7 +640,7 @@ var
begin
lString_1 := TString.Create(AText);
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TEditText_setText);
vAndroidPipesComm.SendInt(amkUI_TEditText_setText_1);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(lString_1.Index); // text
vAndroidPipesComm.WaitForReturn();
@ -568,7 +650,7 @@ end;
constructor TButton.Create();
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TButton_Create);
vAndroidPipesComm.SendInt(amkUI_TButton_Create_0);
Index := vAndroidPipesComm.WaitForIntReturn();
end;
procedure TButton.setText(AText: string);
@ -577,7 +659,7 @@ var
begin
lString_1 := TString.Create(AText);
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TButton_setText);
vAndroidPipesComm.SendInt(amkUI_TButton_setText_1);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(lString_1.Index); // text
vAndroidPipesComm.WaitForReturn();
@ -587,13 +669,13 @@ end;
constructor TTimePicker.Create();
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TTimePicker_Create);
vAndroidPipesComm.SendInt(amkUI_TTimePicker_Create_0);
Index := vAndroidPipesComm.WaitForIntReturn();
end;
function TTimePicker.getCurrentHour(): Integer;
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TTimePicker_getCurrentHour);
vAndroidPipesComm.SendInt(amkUI_TTimePicker_getCurrentHour_1);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
Result := Integer(vAndroidPipesComm.WaitForIntReturn());
end;
@ -601,7 +683,7 @@ end;
procedure TTimePicker.setCurrentHour(currentHour: Integer);
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TTimePicker_setCurrentHour);
vAndroidPipesComm.SendInt(amkUI_TTimePicker_setCurrentHour_2);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(Integer(currentHour));
vAndroidPipesComm.WaitForReturn();
@ -610,7 +692,7 @@ end;
function TTimePicker.getCurrentMinute(): Integer;
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TTimePicker_getCurrentMinute);
vAndroidPipesComm.SendInt(amkUI_TTimePicker_getCurrentMinute_3);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
Result := Integer(vAndroidPipesComm.WaitForIntReturn());
end;
@ -618,7 +700,7 @@ end;
procedure TTimePicker.setCurrentMinute(currentMinute: Integer);
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TTimePicker_setCurrentMinute);
vAndroidPipesComm.SendInt(amkUI_TTimePicker_setCurrentMinute_4);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(Integer(currentMinute));
vAndroidPipesComm.WaitForReturn();
@ -627,7 +709,7 @@ end;
function TTimePicker.is24HourView(): Boolean;
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TTimePicker_is24HourView);
vAndroidPipesComm.SendInt(amkUI_TTimePicker_is24HourView_5);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
Result := Boolean(vAndroidPipesComm.WaitForIntReturn());
end;
@ -635,7 +717,7 @@ end;
procedure TTimePicker.setIs24HourView(AIs24HourView: Boolean);
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TTimePicker_setIs24HourView);
vAndroidPipesComm.SendInt(amkUI_TTimePicker_setIs24HourView_6);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(Integer(AIs24HourView));
vAndroidPipesComm.WaitForReturn();
@ -644,13 +726,13 @@ end;
constructor TScrollView.Create();
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TScrollView_Create);
vAndroidPipesComm.SendInt(amkUI_TScrollView_Create_0);
Index := vAndroidPipesComm.WaitForIntReturn();
end;
function TCompoundButton.isChecked(): Boolean;
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TCompoundButton_isChecked);
vAndroidPipesComm.SendInt(amkUI_TCompoundButton_isChecked_0);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
Result := Boolean(vAndroidPipesComm.WaitForIntReturn());
end;
@ -658,7 +740,7 @@ end;
function TCompoundButton.performClick(): Boolean;
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TCompoundButton_performClick);
vAndroidPipesComm.SendInt(amkUI_TCompoundButton_performClick_1);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
Result := Boolean(vAndroidPipesComm.WaitForIntReturn());
end;
@ -666,7 +748,7 @@ end;
procedure TCompoundButton.setChecked(checked: Boolean);
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TCompoundButton_setChecked);
vAndroidPipesComm.SendInt(amkUI_TCompoundButton_setChecked_2);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(Integer(checked));
vAndroidPipesComm.WaitForReturn();
@ -675,7 +757,7 @@ end;
procedure TCompoundButton.toggle();
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TCompoundButton_toggle);
vAndroidPipesComm.SendInt(amkUI_TCompoundButton_toggle_3);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.WaitForReturn();
end;
@ -683,13 +765,13 @@ end;
constructor TCheckBox.Create();
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TCheckBox_Create);
vAndroidPipesComm.SendInt(amkUI_TCheckBox_Create_0);
Index := vAndroidPipesComm.WaitForIntReturn();
end;
function TAbsSpinner.getCount(): Integer;
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TAbsSpinner_getCount);
vAndroidPipesComm.SendInt(amkUI_TAbsSpinner_getCount_0);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
Result := Integer(vAndroidPipesComm.WaitForIntReturn());
end;
@ -697,7 +779,7 @@ end;
procedure TAbsSpinner.setAdapter(adapter: TSpinnerAdapter);
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TAbsSpinner_setAdapter);
vAndroidPipesComm.SendInt(amkUI_TAbsSpinner_setAdapter_1);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(Integer(adapter.Index));
vAndroidPipesComm.WaitForReturn();
@ -706,13 +788,13 @@ end;
constructor TSpinner.Create();
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TSpinner_Create);
vAndroidPipesComm.SendInt(amkUI_TSpinner_Create_0);
Index := vAndroidPipesComm.WaitForIntReturn();
end;
constructor TArrayAdapter_String_.Create(textViewResourceId: Integer);
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TArrayAdapter_String__Create);
vAndroidPipesComm.SendInt(amkUI_TArrayAdapter_String__Create_0);
vAndroidPipesComm.SendInt(Integer(textViewResourceId));
Index := vAndroidPipesComm.WaitForIntReturn();
end;
@ -722,7 +804,7 @@ var
begin
lString_1 := TString.Create(aobject);
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TArrayAdapter_String__add);
vAndroidPipesComm.SendInt(amkUI_TArrayAdapter_String__add_1);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(lString_1.Index); // text
vAndroidPipesComm.WaitForReturn();
@ -732,7 +814,7 @@ end;
procedure TArrayAdapter_String_.clear();
begin
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TArrayAdapter_String__clear);
vAndroidPipesComm.SendInt(amkUI_TArrayAdapter_String__clear_2);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.WaitForReturn();
end;
@ -743,7 +825,7 @@ var
begin
lString_1 := TString.Create(aobject);
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TArrayAdapter_String__insert);
vAndroidPipesComm.SendInt(amkUI_TArrayAdapter_String__insert_3);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(lString_1.Index); // text
vAndroidPipesComm.SendInt(Integer(aindex));
@ -757,7 +839,7 @@ var
begin
lString_1 := TString.Create(aobject);
vAndroidPipesComm.SendByte(ShortInt(amkUICommand));
vAndroidPipesComm.SendInt(amkUI_TArrayAdapter_String__remove);
vAndroidPipesComm.SendInt(amkUI_TArrayAdapter_String__remove_4);
vAndroidPipesComm.SendInt(Index); // Self, Java Pointer
vAndroidPipesComm.SendInt(lString_1.Index); // text
vAndroidPipesComm.WaitForReturn();
@ -773,13 +855,17 @@ var
lPascalPointer: PtrInt = -1;
begin
case AFirstInt of
amkUI_TTextView_OnClickListener_Start:
amkUI_TTextView_OnClickListener_Start_3:
begin
lPascalPointer := vAndroidPipesComm.ReadInt();
TTextView(lPascalPointer).callOnClickListener();
vAndroidPipesComm.SendMessage(amkUICommand, amkUI_TTextView_OnClickListener_Finished);
vAndroidPipesComm.SendMessage(amkUICommand, amkUI_TTextView_OnClickListener_Finished_4);
end;
end;
end;
initialization
activity := TActivity.Create;
end.

View File

@ -27,7 +27,7 @@ interface
uses
// libs
android_all, androidpipescomm,
android_all, androidpipescomm, androidstringlists,
// wdgetset
WSLCLClasses, LCLClasses,
// LCL + RTL
@ -35,8 +35,6 @@ uses
AVL_Tree, LMessages, LCLMessageGlue, stdctrls, Forms;
type
TAndroidComboBoxStrings = class;
{ TAndroidView }
TAndroidView = class
@ -120,31 +118,11 @@ type
public
layout: TAbsoluteLayout;
scroller: TScrollView;
FVertScrollable: Boolean;
constructor Create(const AObject: TCustomForm; const AParams: TCreateParams);
destructor Destroy; override;
end;
// Now StringLists
{ TAndroidComboBoxStrings }
TAndroidComboBoxStrings = class(TStringList)
private
FWinControl: TWinControl;
FOwner: TAndroidComboBox;
protected
procedure Put(Index: Integer; const S: string); override;
procedure InsertItem(Index: Integer; const S: string); override;
procedure InsertItem(Index: Integer; const S: string; O: TObject); override;
public
constructor Create(AWinControl: TWinControl; AOwner: TAndroidComboBox);
procedure Assign(Source: TPersistent); override;
procedure Clear; override;
procedure Delete(Index: Integer); override;
procedure Sort; override;
procedure Exchange(AIndex1, AIndex2: Integer); override;
public
property Owner: TAndroidComboBox read FOwner;
function GetText: string;
procedure SetText(AText: string);
end;
//function CheckHandle(const AWinControl: TWinControl; const AClass: TClass; const DbgText: String): Boolean;
@ -178,80 +156,6 @@ begin
end;
end;
{ TAndroidComboBoxStrings }
procedure TAndroidComboBoxStrings.Put(Index: Integer; const S: string);
begin
inherited Put(Index, S);
//FOwner.BeginUpdate;
FOwner.Put(Index, S);
// FOwner.setItemText(Index, S);
// FOwner.EndUpdate;
end;
procedure TAndroidComboBoxStrings.InsertItem(Index: Integer; const S: string);
var
FSavedIndex: Integer;
FSavedText: WideString;
begin
inherited InsertItem(Index, S);
{ //FOwner.BeginUpdate;
FSavedText := FOwner.getText;
FSavedIndex := FOwner.currentIndex;}
FOwner.insertItem(Index, S);
{ if FOwner.getEditable then
begin
if (FSavedIndex <> FOwner.currentIndex) then
FOwner.setCurrentIndex(FSavedIndex);
FOwner.setText(FSavedText);
end;
FOwner.EndUpdate;}
end;
procedure TAndroidComboBoxStrings.InsertItem(Index: Integer; const S: string;
O: TObject);
begin
inherited InsertItem(Index, S, O);
end;
constructor TAndroidComboBoxStrings.Create(AWinControl: TWinControl;
AOwner: TAndroidComboBox);
begin
inherited Create;
FWinControl := AWinControl;
FOwner := AOwner;
{$ifdef LCL_ANDROID_STDCTRLS_VERBOSE}
vAndroidPipesComm.Log(Format('[TAndroidComboBox.Clear] AWinControl=%P AOwner=%P', [@AWinControl, @AOwner]));
{$endif}
end;
procedure TAndroidComboBoxStrings.Assign(Source: TPersistent);
begin
inherited Assign(Source);
end;
procedure TAndroidComboBoxStrings.Clear;
begin
inherited Clear;
FOwner.clear;
end;
procedure TAndroidComboBoxStrings.Delete(Index: Integer);
begin
inherited Delete(Index);
FOwner.delete(Index);
end;
procedure TAndroidComboBoxStrings.Sort;
begin
inherited Sort;
end;
procedure TAndroidComboBoxStrings.Exchange(AIndex1, AIndex2: Integer);
begin
inherited Exchange(AIndex1, AIndex2);
end;
{ TAndroidComboBox }
constructor TAndroidComboBox.Create(const AObject: TCustomComboBox;
@ -458,12 +362,24 @@ constructor TAndroidWindow.Create(const AObject: TCustomForm;
begin
LCLObject := AObject;
layout := TAbsoluteLayout.Create;
// scroller := TScrollView.Create;
// scroller.addView(layout);
FVertScrollable := AObject.VertScrollBar.Visible;
mainviewgroup := layout;
MainView := layout;//scroller;
if FVertScrollable then
begin
layout := TAbsoluteLayout.Create;
scroller := TScrollView.Create;
scroller.addView(layout);
mainviewgroup := layout;
MainView := scroller;
end
else
begin
layout := TAbsoluteLayout.Create;
mainviewgroup := layout;
MainView := layout;
end;
end;
destructor TAndroidWindow.Destroy;
@ -471,4 +387,14 @@ begin
inherited Destroy;
end;
function TAndroidWindow.GetText: string;
begin
Result := activity.getTitle();
end;
procedure TAndroidWindow.SetText(AText: string);
begin
activity.setTitle(AText);
end;
end.

View File

@ -0,0 +1,115 @@
unit androidstringlists;
{$mode objfpc}{$H+}
interface
uses
// libs
android_all, androidpipescomm,
// wdgetset
WSLCLClasses, LCLClasses,
// LCL + RTL
Types, Classes, SysUtils, Controls, LCLType, LCLProc, Graphics, Math, Contnrs,
AVL_Tree, LMessages, LCLMessageGlue, stdctrls, Forms;
type
{ TAndroidComboBoxStrings }
TAndroidComboBoxStrings = class(TStringList)
private
FWinControl: TWinControl;
FOwner: TObject;//TAndroidComboBox;
protected
procedure Put(Index: Integer; const S: string); override;
procedure InsertItem(Index: Integer; const S: string); override;
procedure InsertItem(Index: Integer; const S: string; O: TObject); override;
public
constructor Create(AWinControl: TWinControl; AOwner: TObject{TAndroidComboBox});
procedure Assign(Source: TPersistent); override;
procedure Clear; override;
procedure Delete(Index: Integer); override;
procedure Sort; override;
procedure Exchange(AIndex1, AIndex2: Integer); override;
end;
implementation
uses androidprivate;
{ TAndroidComboBoxStrings }
procedure TAndroidComboBoxStrings.Put(Index: Integer; const S: string);
begin
inherited Put(Index, S);
//FOwner.BeginUpdate;
TAndroidComboBox(FOwner).Put(Index, S);
// FOwner.setItemText(Index, S);
// FOwner.EndUpdate;
end;
procedure TAndroidComboBoxStrings.InsertItem(Index: Integer; const S: string);
var
FSavedIndex: Integer;
FSavedText: WideString;
begin
inherited InsertItem(Index, S);
{ //FOwner.BeginUpdate;
FSavedText := FOwner.getText;
FSavedIndex := FOwner.currentIndex;}
TAndroidComboBox(FOwner).insertItem(Index, S);
{ if FOwner.getEditable then
begin
if (FSavedIndex <> FOwner.currentIndex) then
FOwner.setCurrentIndex(FSavedIndex);
FOwner.setText(FSavedText);
end;
FOwner.EndUpdate;}
end;
procedure TAndroidComboBoxStrings.InsertItem(Index: Integer; const S: string;
O: TObject);
begin
inherited InsertItem(Index, S, O);
end;
constructor TAndroidComboBoxStrings.Create(AWinControl: TWinControl;
AOwner: TObject);
begin
inherited Create;
FWinControl := AWinControl;
FOwner := AOwner;
{$ifdef LCL_ANDROID_STDCTRLS_VERBOSE}
vAndroidPipesComm.Log(Format('[TAndroidComboBox.Clear] AWinControl=%P AOwner=%P', [@AWinControl, @AOwner]));
{$endif}
end;
procedure TAndroidComboBoxStrings.Assign(Source: TPersistent);
begin
inherited Assign(Source);
end;
procedure TAndroidComboBoxStrings.Clear;
begin
inherited Clear;
TAndroidComboBox(FOwner).clear;
end;
procedure TAndroidComboBoxStrings.Delete(Index: Integer);
begin
inherited Delete(Index);
TAndroidComboBox(FOwner).delete(Index);
end;
procedure TAndroidComboBoxStrings.Sort;
begin
inherited Sort;
end;
procedure TAndroidComboBoxStrings.Exchange(AIndex1, AIndex2: Integer);
begin
inherited Exchange(AIndex1, AIndex2);
end;
end.

View File

@ -24,6 +24,7 @@ type
public
FIndex: Integer;
constructor Create(AIndex: Integer); virtual;
constructor Create(); virtual;
function GetIndex: Integer;
procedure SetIndex(AValue: Integer);
property Index: Integer read GetIndex write SetIndex;
@ -70,6 +71,12 @@ begin
Index := AIndex;
end;
// For global objects which have no Index
constructor TJavaObject.Create;
begin
inherited Create;
end;
function TJavaObject.GetIndex: Integer;
begin
Result := FIndex;