From 335cffe433d8040fbccde605260f93419e893254 Mon Sep 17 00:00:00 2001 From: Emil Kosz Date: Wed, 23 Oct 2024 23:24:18 +0200 Subject: [PATCH] Bugfixes and possibility to have multiple-character symbols. --- .../cfpi_fpsi/eu/titanboard/InputMethod.java | 4 +- .../cfpi_fpsi/eu/titanboard/InputView.java | 14 +++++- .../cfpi_fpsi/eu/titanboard/SymbolCycler.java | 4 +- app/src/main/res/drawable/icon.xml | 11 ++++- app/src/main/res/drawable/triangle.xml | 27 ------------ app/src/main/res/layout/input.xml | 44 +------------------ app/src/main/res/values/styles.xml | 1 + app/src/main/res/xml/keymaps_titan.xml | 1 - 8 files changed, 30 insertions(+), 76 deletions(-) delete mode 100644 app/src/main/res/drawable/triangle.xml diff --git a/app/src/main/java/cfpi_fpsi/eu/titanboard/InputMethod.java b/app/src/main/java/cfpi_fpsi/eu/titanboard/InputMethod.java index 5a4e401..62a123b 100644 --- a/app/src/main/java/cfpi_fpsi/eu/titanboard/InputMethod.java +++ b/app/src/main/java/cfpi_fpsi/eu/titanboard/InputMethod.java @@ -35,7 +35,9 @@ import java.util.regex.Pattern; // TODO: Mode without the bottom input view, in case the user does not care about completions. // This will involve making a popup screen and a shortcut for changing languages. -/** @noinspection SizeReplaceableByIsEmpty*/ +/** + * @noinspection SizeReplaceableByIsEmpty + */ public class InputMethod extends InputMethodService { public MetaKeyManager mMetaKeyManager; public KeymapManager mKeymapManager; diff --git a/app/src/main/java/cfpi_fpsi/eu/titanboard/InputView.java b/app/src/main/java/cfpi_fpsi/eu/titanboard/InputView.java index 5894b78..51b2935 100644 --- a/app/src/main/java/cfpi_fpsi/eu/titanboard/InputView.java +++ b/app/src/main/java/cfpi_fpsi/eu/titanboard/InputView.java @@ -23,6 +23,7 @@ import android.content.Context; import android.content.Intent; import android.graphics.Paint; import android.util.AttributeSet; +import android.view.ContextThemeWrapper; import android.widget.Button; import android.widget.LinearLayout; import android.widget.RelativeLayout; @@ -74,11 +75,22 @@ public class InputView extends RelativeLayout { view.setVisibility(GONE); } + LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( + new ContextThemeWrapper(this.getContext(), R.style.InputViewSymbol), null); + if (symbols != null) { - for (int i = 0; i < Math.min(mSymbolsList.getChildCount(), symbols.size()); ++i) { + for (int i = 0; i < symbols.size(); ++i) { TextView view = (TextView) mSymbolsList.getChildAt(i); + + if (view == null) { + view = new TextView(new ContextThemeWrapper(this.getContext(), + R.style.InputViewSymbol), null, R.style.InputViewSymbol); + mSymbolsList.addView(view, lp); + } + view.setVisibility(VISIBLE); view.setText(symbols.get(i)); + if (i == index) { view.setTextAppearance(getContext(), R.style.InputViewSymbolSelected); } else { diff --git a/app/src/main/java/cfpi_fpsi/eu/titanboard/SymbolCycler.java b/app/src/main/java/cfpi_fpsi/eu/titanboard/SymbolCycler.java index b294c81..855022b 100644 --- a/app/src/main/java/cfpi_fpsi/eu/titanboard/SymbolCycler.java +++ b/app/src/main/java/cfpi_fpsi/eu/titanboard/SymbolCycler.java @@ -59,7 +59,9 @@ public class SymbolCycler extends Handler { public void cycle() { if (!hasCycled) { mInputMethod.mInputView.setSymbolsVisibility(true); - mConn.deleteSurroundingText(mSymbols.get(0).length(), 0); + // This works sort of like setComposingText. Good enough, and supports low APIs. + mConn.setSelection(mInputMethod.mCurrentCursorPosition - mSymbols.get(0).length(), + mInputMethod.mCurrentCursorPosition); hasCycled = true; } diff --git a/app/src/main/res/drawable/icon.xml b/app/src/main/res/drawable/icon.xml index 993ba6b..8d2a378 100644 --- a/app/src/main/res/drawable/icon.xml +++ b/app/src/main/res/drawable/icon.xml @@ -1,3 +1,10 @@ - - + + diff --git a/app/src/main/res/drawable/triangle.xml b/app/src/main/res/drawable/triangle.xml deleted file mode 100644 index ab389cf..0000000 --- a/app/src/main/res/drawable/triangle.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/layout/input.xml b/app/src/main/res/layout/input.xml index 414b94a..12d56ad 100644 --- a/app/src/main/res/layout/input.xml +++ b/app/src/main/res/layout/input.xml @@ -11,49 +11,7 @@ android:layout_height="match_parent" android:layout_alignTop="@id/input_state" android:layout_alignBottom="@id/input_state" - android:orientation="horizontal"> - - - - - - - - - - - - - - - - - - + android:orientation="horizontal" />