From 348a233427c3f4b000780c94d54ee789489edcc4 Mon Sep 17 00:00:00 2001 From: sekelsenmat Date: Wed, 28 Mar 2012 12:23:05 +0000 Subject: [PATCH] Initial work for Android menu support git-svn-id: trunk@36392 - --- .../src/com/pascal/lcltest/LCLActivity.java | 38 +++++++++++++++++++ examples/androidlcl/androidlcltest.lpi | 2 +- examples/androidlcl/androidlcltest.lpr | 1 + examples/androidlcl/mainform.lfm | 2 +- examples/androidlcl/mainform.pas | 2 +- 5 files changed, 42 insertions(+), 3 deletions(-) diff --git a/examples/androidlcl/android/src/com/pascal/lcltest/LCLActivity.java b/examples/androidlcl/android/src/com/pascal/lcltest/LCLActivity.java index c603287948..1e166bb488 100755 --- a/examples/androidlcl/android/src/com/pascal/lcltest/LCLActivity.java +++ b/examples/androidlcl/android/src/com/pascal/lcltest/LCLActivity.java @@ -9,6 +9,7 @@ import android.graphics.*; import android.text.*; import android.view.*; import android.view.inputmethod.*; +import android.view.MenuItem.*; import android.content.res.Configuration; import android.content.Intent; import android.hardware.Sensor; @@ -247,6 +248,40 @@ public class LCLActivity extends Activity implements SensorEventListener, Locati //Log.i("lclapp", "onConfigurationChanged finished"); } + @Override public boolean onPrepareOptionsMenu (Menu menu) + { + super.onPrepareOptionsMenu(menu); + + int i; + + // First clear the captions list + for (i = 0; i<6; i++) + lclmenu_captions[i] = ""; + + // Now ask the LCL to fill it + LCLOnMenuAction(0, 0); + + // And fill the menus with it + menu.clear(); + for (i = 0; i<6; i++) + { + if (lclmenu_captions[i] != "") + { + MenuItem lMenuItem = menu.add(0, i, 0, lclmenu_captions[i]); + lMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() + { + public boolean onMenuItemClick(MenuItem item) + { + LCLOnMenuAction(1, item.getItemId()); + return true; + } + }); + }; + }; + + return true; + } + // ------------------------------------------- // JNI table of Pascal functions // ------------------------------------------- @@ -258,6 +293,7 @@ public class LCLActivity extends Activity implements SensorEventListener, Locati public native int LCLOnTimer(Runnable timerid); public native int LCLOnConfigurationChanged(int ANewDPI, int ANewWidth); public native int LCLOnSensorChanged(int ASensorKind, double[] AValues); + public native int LCLOnMenuAction(int kind, int itemIndex); // ------------------------------------------- // Functions exported to the Pascal side @@ -628,6 +664,8 @@ public class LCLActivity extends Activity implements SensorEventListener, Locati // for LazDeviceAPIs public String lcldestination; public int lclkind; + // for the menus + public String[] lclmenu_captions = new String[6]; static { diff --git a/examples/androidlcl/androidlcltest.lpi b/examples/androidlcl/androidlcltest.lpi index 2985e319e8..d5159897e3 100644 --- a/examples/androidlcl/androidlcltest.lpi +++ b/examples/androidlcl/androidlcltest.lpi @@ -72,7 +72,7 @@ - + diff --git a/examples/androidlcl/androidlcltest.lpr b/examples/androidlcl/androidlcltest.lpr index d8130cad7c..e20f9647e3 100644 --- a/examples/androidlcl/androidlcltest.lpr +++ b/examples/androidlcl/androidlcltest.lpr @@ -17,6 +17,7 @@ exports Java_com_pascal_lclproject_LCLActivity_LCLOnTimer name 'Java_com_pascal_lcltest_LCLActivity_LCLOnTimer', Java_com_pascal_lclproject_LCLActivity_LCLOnConfigurationChanged name 'Java_com_pascal_lcltest_LCLActivity_LCLOnConfigurationChanged', Java_com_pascal_lclproject_LCLActivity_LCLOnSensorChanged name 'Java_com_pascal_lcltest_LCLActivity_LCLOnSensorChanged', + Java_com_pascal_lclproject_LCLActivity_LCLOnMenuAction name 'Java_com_pascal_lcltest_LCLActivity_LCLOnMenuAction', JNI_OnLoad name 'JNI_OnLoad', JNI_OnUnload name 'JNI_OnUnload'; diff --git a/examples/androidlcl/mainform.lfm b/examples/androidlcl/mainform.lfm index d7c6e3c556..da64ba0488 100644 --- a/examples/androidlcl/mainform.lfm +++ b/examples/androidlcl/mainform.lfm @@ -88,7 +88,7 @@ object Form1: TForm1 end object ComboBox1: TComboBox Left = 72 - Height = 27 + Height = 21 Top = 128 Width = 140 AutoSize = False diff --git a/examples/androidlcl/mainform.pas b/examples/androidlcl/mainform.pas index 5ce43c4966..dfcf8dc3ca 100644 --- a/examples/androidlcl/mainform.pas +++ b/examples/androidlcl/mainform.pas @@ -7,7 +7,7 @@ interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, LCLProc, Arrow, StdCtrls, ComCtrls, LCLType, LCLIntf, InterfaceBase, - lazdeviceapis; + lazdeviceapis, Menus; type TSubControl = class;