From fa39ec8d08357f8d1792b84b977e33ff09ed1adc Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Fri, 26 Jan 2024 23:06:12 +0100 Subject: [PATCH 1/3] feat(android): new event for empty TextFields --- .../java/ti/modules/titanium/ui/widget/TiUIText.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java index ada2e209be7..f3fc39fa822 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java @@ -135,6 +135,18 @@ public void onLayoutChange( this.tv.setOnEditorActionListener(this); this.tv.setOnFocusChangeListener(this); this.tv.setIncludeFontPadding(true); + this.tv.setOnKeyListener(new View.OnKeyListener() + { + @Override + public boolean onKey(View v, int keyCode, KeyEvent event) + { + KrollDict data = new KrollDict(); + data.put("keyCode", keyCode); + fireEvent("emptyField", data); + return false; + } + }); + if (field) { this.tv.setGravity(Gravity.CENTER_VERTICAL | Gravity.START); } else { From bbf97dd8a567d5f518d2a93bd35c4f75a1e53729 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Wed, 7 Feb 2024 13:28:09 +0100 Subject: [PATCH 2/3] docs and length check --- .../src/java/ti/modules/titanium/ui/widget/TiUIText.java | 8 +++++--- apidoc/Titanium/UI/TextField.yml | 9 +++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java index f3fc39fa822..db813925943 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java @@ -140,9 +140,11 @@ public void onLayoutChange( @Override public boolean onKey(View v, int keyCode, KeyEvent event) { - KrollDict data = new KrollDict(); - data.put("keyCode", keyCode); - fireEvent("emptyField", data); + if (tv.getText().length() == 0) { + KrollDict data = new KrollDict(); + data.put("keyCode", keyCode); + fireEvent("emptyField", data); + } return false; } }); diff --git a/apidoc/Titanium/UI/TextField.yml b/apidoc/Titanium/UI/TextField.yml index 20661b799e8..760498dc5f9 100644 --- a/apidoc/Titanium/UI/TextField.yml +++ b/apidoc/Titanium/UI/TextField.yml @@ -610,6 +610,15 @@ events: summary: New value of the field. type: String + - name: emptyField + summary: Fired when the field is empty and you press backspace key again. + since: {android: "12.4.0"} + platforms: [android] + properties: + - name: keyCode + summary: Key code of the key. + type: Number + - name: focus summary: Fired when the field gains focus. properties: From 17a7dc5784e700db58d5b40eef4f80102a0e5dfa Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 15 Jun 2024 15:13:46 +0200 Subject: [PATCH 3/3] rename and check for listener --- .../modules/titanium/ui/widget/TiUIText.java | 24 ++++++++++--------- apidoc/Titanium/UI/TextField.yml | 2 +- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java index db813925943..6ddb3dcc589 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java @@ -135,19 +135,21 @@ public void onLayoutChange( this.tv.setOnEditorActionListener(this); this.tv.setOnFocusChangeListener(this); this.tv.setIncludeFontPadding(true); - this.tv.setOnKeyListener(new View.OnKeyListener() - { - @Override - public boolean onKey(View v, int keyCode, KeyEvent event) + if (proxy.hasListeners("empty")) { + this.tv.setOnKeyListener(new View.OnKeyListener() { - if (tv.getText().length() == 0) { - KrollDict data = new KrollDict(); - data.put("keyCode", keyCode); - fireEvent("emptyField", data); + @Override + public boolean onKey(View v, int keyCode, KeyEvent event) + { + if (tv.getText().length() == 0) { + KrollDict data = new KrollDict(); + data.put("keyCode", keyCode); + fireEvent("empty", data); + } + return false; } - return false; - } - }); + }); + } if (field) { this.tv.setGravity(Gravity.CENTER_VERTICAL | Gravity.START); diff --git a/apidoc/Titanium/UI/TextField.yml b/apidoc/Titanium/UI/TextField.yml index 760498dc5f9..f107ba0a6a4 100644 --- a/apidoc/Titanium/UI/TextField.yml +++ b/apidoc/Titanium/UI/TextField.yml @@ -610,7 +610,7 @@ events: summary: New value of the field. type: String - - name: emptyField + - name: empty summary: Fired when the field is empty and you press backspace key again. since: {android: "12.4.0"} platforms: [android]