From cddfcba45015b91eeff6cbb6264b162632ded069 Mon Sep 17 00:00:00 2001 From: arcarum <134963929+arcarum@users.noreply.github.com> Date: Mon, 18 Dec 2023 17:52:58 +0400 Subject: [PATCH 01/17] Added support for inline autofill --- app/build.gradle | 1 + app/src/main/AndroidManifest.xml | 2 +- .../openboard/inputmethod/latin/LatinIME.java | 114 ++++++++++++++++++ .../suggestions/SuggestionStripView.java | 5 + app/src/main/res/xml/method.xml | 5 +- 5 files changed, 125 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 58f5b82d7..a8a8e7dc7 100755 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,6 +81,7 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1" // why not working with 1.6.0? implementation 'com.github.martin-stone:hsv-alpha-color-picker-android:3.1.0' + implementation 'androidx.autofill:autofill:1.1.0' testImplementation 'junit:junit:4.13.2' testImplementation 'org.mockito:mockito-core:3.12.4' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5acbd2444..2a6eeda06 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -56,7 +56,7 @@ - + presentationSpecs = new ArrayList<>(); + presentationSpecs.add(new InlinePresentationSpec.Builder(new Size(LayoutParams.WRAP_CONTENT, height), + new Size(LayoutParams.MATCH_PARENT, height)).setStyle(stylesBundle).build()); + + return new InlineSuggestionsRequest.Builder(presentationSpecs) + .setMaxSuggestionCount(6) + .build(); + } + + private int toPixel(int dp) { + return (int) TypedValue.applyDimension(COMPLEX_UNIT_DIP, dp, + getResources().getDisplayMetrics()); + } + + @Override + @RequiresApi(api = Build.VERSION_CODES.R) + public boolean onInlineSuggestionsResponse(InlineSuggestionsResponse response) { + Log.d(TAG,"onInlineSuggestionsResponse called"); + final int height = getResources().getDimensionPixelSize(R.dimen.config_suggestions_strip_height); + + // A container to hold all views + LinearLayout container = new LinearLayout(mDisplayContext); + + for (final InlineSuggestion s : response.getInlineSuggestions()) { + s.inflate(this, new Size(LayoutParams.WRAP_CONTENT, height), getMainExecutor(), (view) -> { + if (view != null) + container.addView(view); + }); + } + + HorizontalScrollView horizontalScrollView = new HorizontalScrollView(mDisplayContext); + horizontalScrollView.setLayoutParams(new ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + horizontalScrollView.setHorizontalScrollBarEnabled(false); + + horizontalScrollView.addView(container); + + // Delay required to show properly + new Handler().postDelayed(() -> mSuggestionStripView.addSuggestionView(horizontalScrollView), 200); + + return true; + } + private void updateSoftInputWindowLayoutParameters() { // Override layout parameters to expand {@link SoftInputWindow} to the entire screen. // See {@link InputMethodService#setinputView(View)} and diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java index 1f8c16619..9eb8e3674 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java @@ -279,6 +279,11 @@ public void setSuggestions(final SuggestedWords suggestedWords, final boolean is getContext(), mSuggestedWords, mSuggestionsStrip, this); } + public void addSuggestionView(final View view) { + mSuggestionsStrip.addView(view); + } + + public void setMoreSuggestionsHeight(final int remainingHeight) { mLayoutHelper.setMoreSuggestionsHeight(remainingHeight); } diff --git a/app/src/main/res/xml/method.xml b/app/src/main/res/xml/method.xml index 7cdfa197d..f620ec2b9 100644 --- a/app/src/main/res/xml/method.xml +++ b/app/src/main/res/xml/method.xml @@ -108,9 +108,12 @@ + android:supportsSwitchingToNextInputMethod="true" + android:supportsInlineSuggestions="true" + tools:targetApi="r"> Date: Mon, 18 Dec 2023 21:39:13 +0400 Subject: [PATCH 02/17] Replace this with mDisplayContext --- .../java/org/dslul/openboard/inputmethod/latin/LatinIME.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java index 74bbc4047..930be4c21 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java @@ -1368,7 +1368,7 @@ public InlineSuggestionsRequest onCreateInlineSuggestionsRequest(Bundle uiExtras // Revert to default behaviour if show_suggestions is disabled // (Maybe there is a better way to do this) - boolean isShowSuggestionsEnabled = DeviceProtectedUtils.getSharedPreferences(this).getBoolean(Settings.PREF_SHOW_SUGGESTIONS, true); + boolean isShowSuggestionsEnabled = DeviceProtectedUtils.getSharedPreferences(mDisplayContext).getBoolean(Settings.PREF_SHOW_SUGGESTIONS, true); if(!isShowSuggestionsEnabled){ return null; } From 22f6882cea65e68be745af25031535a451af1d8b Mon Sep 17 00:00:00 2001 From: arcarum <134963929+arcarum@users.noreply.github.com> Date: Mon, 18 Dec 2023 22:20:54 +0400 Subject: [PATCH 03/17] Replace variable name horizontalscrollview with view --- .../dslul/openboard/inputmethod/latin/LatinIME.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java index 930be4c21..78eb00a3c 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java @@ -1437,15 +1437,15 @@ public boolean onInlineSuggestionsResponse(InlineSuggestionsResponse response) { }); } - HorizontalScrollView horizontalScrollView = new HorizontalScrollView(mDisplayContext); - horizontalScrollView.setLayoutParams(new ViewGroup.LayoutParams( + HorizontalScrollView view = new HorizontalScrollView(mDisplayContext); + view.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); - horizontalScrollView.setHorizontalScrollBarEnabled(false); + view.setHorizontalScrollBarEnabled(false); - horizontalScrollView.addView(container); + view.addView(container); // Delay required to show properly - new Handler().postDelayed(() -> mSuggestionStripView.addSuggestionView(horizontalScrollView), 200); + new Handler().postDelayed(() -> mSuggestionStripView.addSuggestionView(view), 200); return true; } From 0c9728a1582608de2f33903e39f6ed74a55a50c0 Mon Sep 17 00:00:00 2001 From: arcarum <134963929+arcarum@users.noreply.github.com> Date: Tue, 19 Dec 2023 12:08:21 +0400 Subject: [PATCH 04/17] Revert Manifest change and add supportsInlineSuggestions in method_dummy --- app/src/main/AndroidManifest.xml | 2 +- app/src/main/res/xml/method_dummy.xml | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2a6eeda06..5acbd2444 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -56,7 +56,7 @@ - + + android:supportsSwitchingToNextInputMethod="true" + android:supportsInlineSuggestions="true" + tools:targetApi="r"> Date: Tue, 19 Dec 2023 13:42:03 +0400 Subject: [PATCH 05/17] Minor improvements --- .../org/dslul/openboard/inputmethod/latin/LatinIME.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java index 78eb00a3c..78b34a292 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java @@ -112,12 +112,13 @@ import androidx.annotation.RequiresApi; import androidx.appcompat.app.AlertDialog; import androidx.autofill.inline.UiVersions; +import androidx.autofill.inline.UiVersions.StylesBuilder; import androidx.autofill.inline.common.ImageViewStyle; import androidx.autofill.inline.common.TextViewStyle; import androidx.autofill.inline.common.ViewStyle; import androidx.autofill.inline.v1.InlineSuggestionUi; +import androidx.autofill.inline.v1.InlineSuggestionUi.Style; import androidx.core.content.ContextCompat; -import androidx.autofill.inline.UiVersions.StylesBuilder; /** * Input method implementation for Qwerty'ish keyboard. @@ -1376,17 +1377,17 @@ public InlineSuggestionsRequest onCreateInlineSuggestionsRequest(Bundle uiExtras final int height = getResources().getDimensionPixelSize(R.dimen.config_suggestions_strip_height); StylesBuilder stylesBuilder = UiVersions.newStylesBuilder(); - @SuppressLint("RestrictedApi") UiVersions.Style style = InlineSuggestionUi.newStyleBuilder() + @SuppressLint("RestrictedApi") Style style = InlineSuggestionUi.newStyleBuilder() .setSingleIconChipStyle( new ViewStyle.Builder() .setBackground( - Icon.createWithResource(this, androidx.autofill.R.drawable.autofill_inline_suggestion_chip_background)) + Icon.createWithResource(mDisplayContext, androidx.autofill.R.drawable.autofill_inline_suggestion_chip_background)) .setPadding(0, 0, 0, 0) .build()) .setChipStyle( new ViewStyle.Builder() .setBackground( - Icon.createWithResource(this, androidx.autofill.R.drawable.autofill_inline_suggestion_chip_background)) + Icon.createWithResource(mDisplayContext, androidx.autofill.R.drawable.autofill_inline_suggestion_chip_background)) .build()) .setStartIconStyle(new ImageViewStyle.Builder().setLayoutMargin(0, 0, 0, 0).build()) .setTitleStyle( From 07358eb9250c76439617830000f2ec91bcf5ca99 Mon Sep 17 00:00:00 2001 From: arcarum <134963929+arcarum@users.noreply.github.com> Date: Tue, 19 Dec 2023 14:10:03 +0400 Subject: [PATCH 06/17] Fix issue when rotating --- .../openboard/inputmethod/latin/LatinIME.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java index 78b34a292..a1f49f2a4 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java @@ -1374,8 +1374,6 @@ public InlineSuggestionsRequest onCreateInlineSuggestionsRequest(Bundle uiExtras return null; } - final int height = getResources().getDimensionPixelSize(R.dimen.config_suggestions_strip_height); - StylesBuilder stylesBuilder = UiVersions.newStylesBuilder(); @SuppressLint("RestrictedApi") Style style = InlineSuggestionUi.newStyleBuilder() .setSingleIconChipStyle( @@ -1409,8 +1407,8 @@ public InlineSuggestionsRequest onCreateInlineSuggestionsRequest(Bundle uiExtras Bundle stylesBundle = stylesBuilder.build(); final ArrayList presentationSpecs = new ArrayList<>(); - presentationSpecs.add(new InlinePresentationSpec.Builder(new Size(LayoutParams.WRAP_CONTENT, height), - new Size(LayoutParams.MATCH_PARENT, height)).setStyle(stylesBundle).build()); + presentationSpecs.add(new InlinePresentationSpec.Builder(new Size(LayoutParams.WRAP_CONTENT, getHeight()), + new Size(LayoutParams.MATCH_PARENT, getHeight())).setStyle(stylesBundle).build()); return new InlineSuggestionsRequest.Builder(presentationSpecs) .setMaxSuggestionCount(6) @@ -1422,17 +1420,21 @@ private int toPixel(int dp) { getResources().getDisplayMetrics()); } + private int getHeight() { + return getResources().getDimensionPixelSize(R.dimen.config_suggestions_strip_height); + } + @Override @RequiresApi(api = Build.VERSION_CODES.R) public boolean onInlineSuggestionsResponse(InlineSuggestionsResponse response) { Log.d(TAG,"onInlineSuggestionsResponse called"); - final int height = getResources().getDimensionPixelSize(R.dimen.config_suggestions_strip_height); // A container to hold all views LinearLayout container = new LinearLayout(mDisplayContext); for (final InlineSuggestion s : response.getInlineSuggestions()) { - s.inflate(this, new Size(LayoutParams.WRAP_CONTENT, height), getMainExecutor(), (view) -> { + s.inflate(this, new Size(ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.WRAP_CONTENT), getMainExecutor(), (view) -> { if (view != null) container.addView(view); }); From 70d1175b3f771ca19e201a6e291c03f575becbae Mon Sep 17 00:00:00 2001 From: arcarum <134963929+arcarum@users.noreply.github.com> Date: Tue, 19 Dec 2023 22:44:48 +0400 Subject: [PATCH 07/17] Hide Keys when displaying the suggestions --- .../openboard/inputmethod/latin/LatinIME.java | 26 ++++++++++++++----- .../suggestions/SuggestionStripView.java | 14 ++++++++++ 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java index a1f49f2a4..cae7d01b4 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java @@ -1364,7 +1364,7 @@ public void updateFullscreenMode() { // with some modifications @Override @RequiresApi(api = Build.VERSION_CODES.R) - public InlineSuggestionsRequest onCreateInlineSuggestionsRequest(Bundle uiExtras) { + public InlineSuggestionsRequest onCreateInlineSuggestionsRequest(@NonNull Bundle uiExtras) { Log.d(TAG,"onCreateInlineSuggestionsRequest called"); // Revert to default behaviour if show_suggestions is disabled @@ -1407,8 +1407,8 @@ public InlineSuggestionsRequest onCreateInlineSuggestionsRequest(Bundle uiExtras Bundle stylesBundle = stylesBuilder.build(); final ArrayList presentationSpecs = new ArrayList<>(); - presentationSpecs.add(new InlinePresentationSpec.Builder(new Size(LayoutParams.WRAP_CONTENT, getHeight()), - new Size(LayoutParams.MATCH_PARENT, getHeight())).setStyle(stylesBundle).build()); + presentationSpecs.add(new InlinePresentationSpec.Builder(new Size(100, getHeight()), + new Size(740, getHeight())).setStyle(stylesBundle).build()); return new InlineSuggestionsRequest.Builder(presentationSpecs) .setMaxSuggestionCount(6) @@ -1429,11 +1429,21 @@ private int getHeight() { public boolean onInlineSuggestionsResponse(InlineSuggestionsResponse response) { Log.d(TAG,"onInlineSuggestionsResponse called"); + final List inlineSuggestions = response.getInlineSuggestions(); + + if (inlineSuggestions.isEmpty()) { + return false; + } + + final int totalSuggestionsCount = inlineSuggestions.size(); + // A container to hold all views LinearLayout container = new LinearLayout(mDisplayContext); - for (final InlineSuggestion s : response.getInlineSuggestions()) { - s.inflate(this, new Size(ViewGroup.LayoutParams.WRAP_CONTENT, + for (int i = 0; i < totalSuggestionsCount; i++) { + final InlineSuggestion inlineSuggestion = inlineSuggestions.get(i); + + inlineSuggestion.inflate(this, new Size(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT), getMainExecutor(), (view) -> { if (view != null) container.addView(view); @@ -1448,7 +1458,11 @@ public boolean onInlineSuggestionsResponse(InlineSuggestionsResponse response) { view.addView(container); // Delay required to show properly - new Handler().postDelayed(() -> mSuggestionStripView.addSuggestionView(view), 200); + new Handler().postDelayed(() -> { + mSuggestionStripView.clear(); + mSuggestionStripView.hideKeys(); + mSuggestionStripView.addSuggestionView(view); + }, 200); return true; } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java index 9eb8e3674..a5da8a44a 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java @@ -283,6 +283,16 @@ public void addSuggestionView(final View view) { mSuggestionsStrip.addView(view); } + public void hideKeys() { + mToolbarKey.setVisibility(GONE); + mPinnedKeys.setVisibility(GONE); + } + + public void unhidekeys() { + mToolbarKey.setVisibility(VISIBLE); + mPinnedKeys.setVisibility(VISIBLE); + } + public void setMoreSuggestionsHeight(final int remainingHeight) { mLayoutHelper.setMoreSuggestionsHeight(remainingHeight); @@ -298,6 +308,10 @@ public void clear() { for (final TextView word : mWordViews) { word.setOnTouchListener(null); } + + if (mToolbarKey.getVisibility() != VISIBLE || mPinnedKeys.getVisibility() != VISIBLE){ + unhidekeys(); + } } private void removeAllDebugInfoViews() { From f8aea1dbe750ae6d5215b7171852eb7ae8459d62 Mon Sep 17 00:00:00 2001 From: arcarum <134963929+arcarum@users.noreply.github.com> Date: Wed, 20 Dec 2023 08:03:56 +0400 Subject: [PATCH 08/17] Fix Suggestions not showing --- .../java/org/dslul/openboard/inputmethod/latin/LatinIME.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java index cae7d01b4..32af693a4 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java @@ -1409,6 +1409,8 @@ public InlineSuggestionsRequest onCreateInlineSuggestionsRequest(@NonNull Bundle final ArrayList presentationSpecs = new ArrayList<>(); presentationSpecs.add(new InlinePresentationSpec.Builder(new Size(100, getHeight()), new Size(740, getHeight())).setStyle(stylesBundle).build()); + presentationSpecs.add(new InlinePresentationSpec.Builder(new Size(100, getHeight()), + new Size(740, getHeight())).setStyle(stylesBundle).build()); return new InlineSuggestionsRequest.Builder(presentationSpecs) .setMaxSuggestionCount(6) From 85240ee172b581bf5e8d41fbbc7b956a347632d1 Mon Sep 17 00:00:00 2001 From: arcarum <134963929+arcarum@users.noreply.github.com> Date: Wed, 20 Dec 2023 08:28:40 +0400 Subject: [PATCH 09/17] Remove unhidekeys function --- .../latin/suggestions/SuggestionStripView.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java index a5da8a44a..f1b1e50c5 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java @@ -288,12 +288,6 @@ public void hideKeys() { mPinnedKeys.setVisibility(GONE); } - public void unhidekeys() { - mToolbarKey.setVisibility(VISIBLE); - mPinnedKeys.setVisibility(VISIBLE); - } - - public void setMoreSuggestionsHeight(final int remainingHeight) { mLayoutHelper.setMoreSuggestionsHeight(remainingHeight); } @@ -310,7 +304,8 @@ public void clear() { } if (mToolbarKey.getVisibility() != VISIBLE || mPinnedKeys.getVisibility() != VISIBLE){ - unhidekeys(); + mToolbarKey.setVisibility(VISIBLE); + mPinnedKeys.setVisibility(VISIBLE); } } From 95aaaf9c2ebf6167bd974d95e62b7e7d4f5a6663 Mon Sep 17 00:00:00 2001 From: arcarum <134963929+arcarum@users.noreply.github.com> Date: Wed, 20 Dec 2023 16:12:58 +0400 Subject: [PATCH 10/17] Added theme support --- .../openboard/inputmethod/latin/LatinIME.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java index 32af693a4..c6141c650 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java @@ -13,6 +13,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.SharedPreferences; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Color; @@ -70,6 +71,7 @@ import org.dslul.openboard.inputmethod.keyboard.MainKeyboardView; import org.dslul.openboard.inputmethod.latin.Suggest.OnGetSuggestedWordsCallback; import org.dslul.openboard.inputmethod.latin.SuggestedWords.SuggestedWordInfo; +import org.dslul.openboard.inputmethod.latin.common.Colors; import org.dslul.openboard.inputmethod.latin.common.Constants; import org.dslul.openboard.inputmethod.latin.common.CoordinateUtils; import org.dslul.openboard.inputmethod.latin.common.InputPointers; @@ -1367,37 +1369,46 @@ public void updateFullscreenMode() { public InlineSuggestionsRequest onCreateInlineSuggestionsRequest(@NonNull Bundle uiExtras) { Log.d(TAG,"onCreateInlineSuggestionsRequest called"); + final SharedPreferences pref = DeviceProtectedUtils.getSharedPreferences(mDisplayContext); + // Revert to default behaviour if show_suggestions is disabled // (Maybe there is a better way to do this) - boolean isShowSuggestionsEnabled = DeviceProtectedUtils.getSharedPreferences(mDisplayContext).getBoolean(Settings.PREF_SHOW_SUGGESTIONS, true); + boolean isShowSuggestionsEnabled = pref.getBoolean(Settings.PREF_SHOW_SUGGESTIONS, true); if(!isShowSuggestionsEnabled){ return null; } + assert mDisplayContext != null; + final Colors themeColors = Settings.getColorsForCurrentTheme(mDisplayContext, pref); + StylesBuilder stylesBuilder = UiVersions.newStylesBuilder(); @SuppressLint("RestrictedApi") Style style = InlineSuggestionUi.newStyleBuilder() .setSingleIconChipStyle( new ViewStyle.Builder() .setBackground( - Icon.createWithResource(mDisplayContext, androidx.autofill.R.drawable.autofill_inline_suggestion_chip_background)) + Icon.createWithResource(mDisplayContext, + androidx.autofill.R.drawable.autofill_inline_suggestion_chip_background) + .setTint(themeColors.getBackground())) .setPadding(0, 0, 0, 0) .build()) .setChipStyle( new ViewStyle.Builder() .setBackground( - Icon.createWithResource(mDisplayContext, androidx.autofill.R.drawable.autofill_inline_suggestion_chip_background)) + Icon.createWithResource(mDisplayContext, + androidx.autofill.R.drawable.autofill_inline_suggestion_chip_background) + .setTint(themeColors.getBackground())) .build()) .setStartIconStyle(new ImageViewStyle.Builder().setLayoutMargin(0, 0, 0, 0).build()) .setTitleStyle( new TextViewStyle.Builder() .setLayoutMargin(toPixel(4), 0, toPixel(4), 0) - .setTextColor(Color.parseColor("#FF202124")) + .setTextColor(themeColors.getKeyText()) .setTextSize(12) .build()) .setSubtitleStyle( new TextViewStyle.Builder() .setLayoutMargin(0, 0, toPixel(4), 0) - .setTextColor(Color.parseColor("#99202124")) // 60% opacity + .setTextColor(themeColors.getKeyHintText()) .setTextSize(10) .build()) .setEndIconStyle(new ImageViewStyle.Builder().setLayoutMargin(0, 0, 0, 0).build()) From d8f40a1a64c45cd03ea51620555cd7b158cef115 Mon Sep 17 00:00:00 2001 From: arcarum <134963929+arcarum@users.noreply.github.com> Date: Sat, 23 Dec 2023 08:50:22 +0400 Subject: [PATCH 11/17] Removed theme support --- .../openboard/inputmethod/latin/LatinIME.java | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java index c6141c650..360d4a4a6 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java @@ -71,7 +71,6 @@ import org.dslul.openboard.inputmethod.keyboard.MainKeyboardView; import org.dslul.openboard.inputmethod.latin.Suggest.OnGetSuggestedWordsCallback; import org.dslul.openboard.inputmethod.latin.SuggestedWords.SuggestedWordInfo; -import org.dslul.openboard.inputmethod.latin.common.Colors; import org.dslul.openboard.inputmethod.latin.common.Constants; import org.dslul.openboard.inputmethod.latin.common.CoordinateUtils; import org.dslul.openboard.inputmethod.latin.common.InputPointers; @@ -1378,37 +1377,32 @@ public InlineSuggestionsRequest onCreateInlineSuggestionsRequest(@NonNull Bundle return null; } - assert mDisplayContext != null; - final Colors themeColors = Settings.getColorsForCurrentTheme(mDisplayContext, pref); - StylesBuilder stylesBuilder = UiVersions.newStylesBuilder(); @SuppressLint("RestrictedApi") Style style = InlineSuggestionUi.newStyleBuilder() .setSingleIconChipStyle( new ViewStyle.Builder() .setBackground( Icon.createWithResource(mDisplayContext, - androidx.autofill.R.drawable.autofill_inline_suggestion_chip_background) - .setTint(themeColors.getBackground())) + androidx.autofill.R.drawable.autofill_inline_suggestion_chip_background)) .setPadding(0, 0, 0, 0) .build()) .setChipStyle( new ViewStyle.Builder() .setBackground( Icon.createWithResource(mDisplayContext, - androidx.autofill.R.drawable.autofill_inline_suggestion_chip_background) - .setTint(themeColors.getBackground())) + androidx.autofill.R.drawable.autofill_inline_suggestion_chip_background)) .build()) .setStartIconStyle(new ImageViewStyle.Builder().setLayoutMargin(0, 0, 0, 0).build()) .setTitleStyle( new TextViewStyle.Builder() .setLayoutMargin(toPixel(4), 0, toPixel(4), 0) - .setTextColor(themeColors.getKeyText()) + .setTextColor(Color.parseColor("#FF202124")) .setTextSize(12) .build()) .setSubtitleStyle( new TextViewStyle.Builder() .setLayoutMargin(0, 0, toPixel(4), 0) - .setTextColor(themeColors.getKeyHintText()) + .setTextColor(Color.parseColor("#99202124")) .setTextSize(10) .build()) .setEndIconStyle(new ImageViewStyle.Builder().setLayoutMargin(0, 0, 0, 0).build()) From a052eab0ea9d6ff93eae201602316ceaa25f2abf Mon Sep 17 00:00:00 2001 From: arcarum <134963929+arcarum@users.noreply.github.com> Date: Mon, 25 Dec 2023 08:04:22 +0400 Subject: [PATCH 12/17] Moved some code to the newly created InlineAutofillUtils --- .../openboard/inputmethod/latin/LatinIME.java | 92 +------------- .../latin/utils/InlineAutofillUtils.java | 117 ++++++++++++++++++ 2 files changed, 120 insertions(+), 89 deletions(-) create mode 100644 app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InlineAutofillUtils.java diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java index 360d4a4a6..9b3db954f 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java @@ -6,9 +6,6 @@ package org.dslul.openboard.inputmethod.latin; -import static android.util.TypedValue.COMPLEX_UNIT_DIP; - -import android.annotation.SuppressLint; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -17,7 +14,6 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Color; -import android.graphics.drawable.Icon; import android.inputmethodservice.InputMethodService; import android.media.AudioManager; import android.os.Build; @@ -31,13 +27,10 @@ import android.util.Log; import android.util.PrintWriterPrinter; import android.util.Printer; -import android.util.Size; import android.util.SparseArray; -import android.util.TypedValue; import android.view.Gravity; import android.view.KeyEvent; import android.view.View; -import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.Window; import android.view.WindowManager; @@ -49,8 +42,6 @@ import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodSubtype; import android.widget.HorizontalScrollView; -import android.widget.LinearLayout; -import android.widget.inline.InlinePresentationSpec; import org.dslul.openboard.inputmethod.accessibility.AccessibilityUtils; import org.dslul.openboard.inputmethod.annotations.UsedForTesting; @@ -96,6 +87,7 @@ import org.dslul.openboard.inputmethod.latin.utils.StatsUtilsManager; import org.dslul.openboard.inputmethod.latin.utils.SubtypeLocaleUtils; import org.dslul.openboard.inputmethod.latin.utils.ViewLayoutUtils; +import org.dslul.openboard.inputmethod.latin.utils.InlineAutofillUtils; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -112,13 +104,6 @@ import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.appcompat.app.AlertDialog; -import androidx.autofill.inline.UiVersions; -import androidx.autofill.inline.UiVersions.StylesBuilder; -import androidx.autofill.inline.common.ImageViewStyle; -import androidx.autofill.inline.common.TextViewStyle; -import androidx.autofill.inline.common.ViewStyle; -import androidx.autofill.inline.v1.InlineSuggestionUi; -import androidx.autofill.inline.v1.InlineSuggestionUi.Style; import androidx.core.content.ContextCompat; /** @@ -1377,58 +1362,7 @@ public InlineSuggestionsRequest onCreateInlineSuggestionsRequest(@NonNull Bundle return null; } - StylesBuilder stylesBuilder = UiVersions.newStylesBuilder(); - @SuppressLint("RestrictedApi") Style style = InlineSuggestionUi.newStyleBuilder() - .setSingleIconChipStyle( - new ViewStyle.Builder() - .setBackground( - Icon.createWithResource(mDisplayContext, - androidx.autofill.R.drawable.autofill_inline_suggestion_chip_background)) - .setPadding(0, 0, 0, 0) - .build()) - .setChipStyle( - new ViewStyle.Builder() - .setBackground( - Icon.createWithResource(mDisplayContext, - androidx.autofill.R.drawable.autofill_inline_suggestion_chip_background)) - .build()) - .setStartIconStyle(new ImageViewStyle.Builder().setLayoutMargin(0, 0, 0, 0).build()) - .setTitleStyle( - new TextViewStyle.Builder() - .setLayoutMargin(toPixel(4), 0, toPixel(4), 0) - .setTextColor(Color.parseColor("#FF202124")) - .setTextSize(12) - .build()) - .setSubtitleStyle( - new TextViewStyle.Builder() - .setLayoutMargin(0, 0, toPixel(4), 0) - .setTextColor(Color.parseColor("#99202124")) - .setTextSize(10) - .build()) - .setEndIconStyle(new ImageViewStyle.Builder().setLayoutMargin(0, 0, 0, 0).build()) - .build(); - stylesBuilder.addStyle(style); - - Bundle stylesBundle = stylesBuilder.build(); - - final ArrayList presentationSpecs = new ArrayList<>(); - presentationSpecs.add(new InlinePresentationSpec.Builder(new Size(100, getHeight()), - new Size(740, getHeight())).setStyle(stylesBundle).build()); - presentationSpecs.add(new InlinePresentationSpec.Builder(new Size(100, getHeight()), - new Size(740, getHeight())).setStyle(stylesBundle).build()); - - return new InlineSuggestionsRequest.Builder(presentationSpecs) - .setMaxSuggestionCount(6) - .build(); - } - - private int toPixel(int dp) { - return (int) TypedValue.applyDimension(COMPLEX_UNIT_DIP, dp, - getResources().getDisplayMetrics()); - } - - private int getHeight() { - return getResources().getDimensionPixelSize(R.dimen.config_suggestions_strip_height); + return InlineAutofillUtils.createInlineSuggestionRequest(mDisplayContext); } @Override @@ -1442,27 +1376,7 @@ public boolean onInlineSuggestionsResponse(InlineSuggestionsResponse response) { return false; } - final int totalSuggestionsCount = inlineSuggestions.size(); - - // A container to hold all views - LinearLayout container = new LinearLayout(mDisplayContext); - - for (int i = 0; i < totalSuggestionsCount; i++) { - final InlineSuggestion inlineSuggestion = inlineSuggestions.get(i); - - inlineSuggestion.inflate(this, new Size(ViewGroup.LayoutParams.WRAP_CONTENT, - ViewGroup.LayoutParams.WRAP_CONTENT), getMainExecutor(), (view) -> { - if (view != null) - container.addView(view); - }); - } - - HorizontalScrollView view = new HorizontalScrollView(mDisplayContext); - view.setLayoutParams(new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); - view.setHorizontalScrollBarEnabled(false); - - view.addView(container); + HorizontalScrollView view = InlineAutofillUtils.createView(inlineSuggestions, mDisplayContext); // Delay required to show properly new Handler().postDelayed(() -> { diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InlineAutofillUtils.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InlineAutofillUtils.java new file mode 100644 index 000000000..028ed4c50 --- /dev/null +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InlineAutofillUtils.java @@ -0,0 +1,117 @@ +package org.dslul.openboard.inputmethod.latin.utils; + +import static android.util.TypedValue.COMPLEX_UNIT_DIP; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.graphics.Color; +import android.graphics.drawable.Icon; +import android.os.Build; +import android.os.Bundle; +import android.util.Size; +import android.util.TypedValue; +import android.view.ViewGroup; +import android.view.inputmethod.InlineSuggestion; +import android.view.inputmethod.InlineSuggestionsRequest; +import android.widget.HorizontalScrollView; +import android.widget.LinearLayout; +import android.widget.inline.InlinePresentationSpec; + +import androidx.annotation.RequiresApi; +import androidx.autofill.inline.UiVersions; +import androidx.autofill.inline.common.ImageViewStyle; +import androidx.autofill.inline.common.TextViewStyle; +import androidx.autofill.inline.common.ViewStyle; +import androidx.autofill.inline.v1.InlineSuggestionUi; + +import org.dslul.openboard.inputmethod.latin.R; + +import java.util.ArrayList; +import java.util.List; + +@RequiresApi(api = Build.VERSION_CODES.R) +public class InlineAutofillUtils { + + private static int toPixel(int dp, Context context) { + return (int) TypedValue.applyDimension(COMPLEX_UNIT_DIP, dp, + context.getResources().getDisplayMetrics()); + } + + private static int getHeight(Context context) { + return context.getResources().getDimensionPixelSize(R.dimen.config_suggestions_strip_height); + } + + public static InlineSuggestionsRequest createInlineSuggestionRequest(Context context) { + + UiVersions.StylesBuilder stylesBuilder = UiVersions.newStylesBuilder(); + @SuppressLint("RestrictedApi") InlineSuggestionUi.Style style = InlineSuggestionUi.newStyleBuilder() + .setSingleIconChipStyle( + new ViewStyle.Builder() + .setBackground( + Icon.createWithResource(context, + androidx.autofill.R.drawable.autofill_inline_suggestion_chip_background)) + .setPadding(0, 0, 0, 0) + .build()) + .setChipStyle( + new ViewStyle.Builder() + .setBackground( + Icon.createWithResource(context, + androidx.autofill.R.drawable.autofill_inline_suggestion_chip_background)) + .build()) + .setStartIconStyle(new ImageViewStyle.Builder().setLayoutMargin(0, 0, 0, 0).build()) + .setTitleStyle( + new TextViewStyle.Builder() + .setLayoutMargin(toPixel(4, context), 0, toPixel(4, context), 0) + .setTextColor(Color.parseColor("#FF202124")) + .setTextSize(12) + .build()) + .setSubtitleStyle( + new TextViewStyle.Builder() + .setLayoutMargin(0, 0, toPixel(4, context), 0) + .setTextColor(Color.parseColor("#99202124")) + .setTextSize(10) + .build()) + .setEndIconStyle(new ImageViewStyle.Builder().setLayoutMargin(0, 0, 0, 0).build()) + .build(); + stylesBuilder.addStyle(style); + + Bundle stylesBundle = stylesBuilder.build(); + + final ArrayList presentationSpecs = new ArrayList<>(); + presentationSpecs.add(new InlinePresentationSpec.Builder(new Size(100, getHeight(context)), + new Size(740, getHeight(context))).setStyle(stylesBundle).build()); + presentationSpecs.add(new InlinePresentationSpec.Builder(new Size(100, getHeight(context)), + new Size(740, getHeight(context))).setStyle(stylesBundle).build()); + + return new InlineSuggestionsRequest.Builder(presentationSpecs) + .setMaxSuggestionCount(6) + .build(); + } + + public static HorizontalScrollView createView(List inlineSuggestions, Context context) { + + final int totalSuggestionsCount = inlineSuggestions.size(); + + // A container to hold all views + LinearLayout container = new LinearLayout(context); + + for (int i = 0; i < totalSuggestionsCount; i++) { + final InlineSuggestion inlineSuggestion = inlineSuggestions.get(i); + + inlineSuggestion.inflate(context, new Size(ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.WRAP_CONTENT), context.getMainExecutor(), (view) -> { + if (view != null) + container.addView(view); + }); + } + + HorizontalScrollView view = new HorizontalScrollView(context); + view.setLayoutParams(new ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + view.setHorizontalScrollBarEnabled(false); + + view.addView(container); + + return view; + } +} From e89ddc95bc2a896585a950cbeddfadee6735717e Mon Sep 17 00:00:00 2001 From: arcarum <134963929+arcarum@users.noreply.github.com> Date: Mon, 25 Dec 2023 08:08:32 +0400 Subject: [PATCH 13/17] Moved location of an import statement --- .../java/org/dslul/openboard/inputmethod/latin/LatinIME.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java index 9b3db954f..adfc51005 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java @@ -80,6 +80,7 @@ import org.dslul.openboard.inputmethod.latin.utils.ApplicationUtils; import org.dslul.openboard.inputmethod.latin.utils.ColorUtilKt; import org.dslul.openboard.inputmethod.latin.utils.DeviceProtectedUtils; +import org.dslul.openboard.inputmethod.latin.utils.InlineAutofillUtils; import org.dslul.openboard.inputmethod.latin.utils.InputMethodPickerKt; import org.dslul.openboard.inputmethod.latin.utils.JniUtils; import org.dslul.openboard.inputmethod.latin.utils.LeakGuardHandlerWrapper; @@ -87,7 +88,6 @@ import org.dslul.openboard.inputmethod.latin.utils.StatsUtilsManager; import org.dslul.openboard.inputmethod.latin.utils.SubtypeLocaleUtils; import org.dslul.openboard.inputmethod.latin.utils.ViewLayoutUtils; -import org.dslul.openboard.inputmethod.latin.utils.InlineAutofillUtils; import java.io.FileDescriptor; import java.io.PrintWriter; From 12102c2f1d9878c7465ef5f644bdd82b754d034a Mon Sep 17 00:00:00 2001 From: arcarum <134963929+arcarum@users.noreply.github.com> Date: Mon, 25 Dec 2023 22:29:39 +0400 Subject: [PATCH 14/17] Replace SharedPreferences with mSettings --- .../org/dslul/openboard/inputmethod/latin/LatinIME.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java index adfc51005..e1bd4a9b0 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java @@ -10,7 +10,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.content.SharedPreferences; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Color; @@ -79,7 +78,6 @@ import org.dslul.openboard.inputmethod.latin.touchinputconsumer.GestureConsumer; import org.dslul.openboard.inputmethod.latin.utils.ApplicationUtils; import org.dslul.openboard.inputmethod.latin.utils.ColorUtilKt; -import org.dslul.openboard.inputmethod.latin.utils.DeviceProtectedUtils; import org.dslul.openboard.inputmethod.latin.utils.InlineAutofillUtils; import org.dslul.openboard.inputmethod.latin.utils.InputMethodPickerKt; import org.dslul.openboard.inputmethod.latin.utils.JniUtils; @@ -1353,12 +1351,9 @@ public void updateFullscreenMode() { public InlineSuggestionsRequest onCreateInlineSuggestionsRequest(@NonNull Bundle uiExtras) { Log.d(TAG,"onCreateInlineSuggestionsRequest called"); - final SharedPreferences pref = DeviceProtectedUtils.getSharedPreferences(mDisplayContext); - // Revert to default behaviour if show_suggestions is disabled // (Maybe there is a better way to do this) - boolean isShowSuggestionsEnabled = pref.getBoolean(Settings.PREF_SHOW_SUGGESTIONS, true); - if(!isShowSuggestionsEnabled){ + if(!mSettings.getCurrent().isSuggestionsEnabledPerUserSettings()){ return null; } From 9e0fe9fb54877c7d0a43696d84bbfb6904097948 Mon Sep 17 00:00:00 2001 From: arcarum <134963929+arcarum@users.noreply.github.com> Date: Tue, 26 Dec 2023 22:06:11 +0400 Subject: [PATCH 15/17] Potential fix for 1Password --- .../openboard/inputmethod/latin/utils/InlineAutofillUtils.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InlineAutofillUtils.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InlineAutofillUtils.java index 028ed4c50..98b1aa43b 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InlineAutofillUtils.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InlineAutofillUtils.java @@ -82,6 +82,8 @@ public static InlineSuggestionsRequest createInlineSuggestionRequest(Context con new Size(740, getHeight(context))).setStyle(stylesBundle).build()); presentationSpecs.add(new InlinePresentationSpec.Builder(new Size(100, getHeight(context)), new Size(740, getHeight(context))).setStyle(stylesBundle).build()); + presentationSpecs.add(new InlinePresentationSpec.Builder(new Size(100, getHeight(context)), + new Size(740, getHeight(context))).setStyle(stylesBundle).build()); return new InlineSuggestionsRequest.Builder(presentationSpecs) .setMaxSuggestionCount(6) From ffd6dce92638f77c02d10770a270e261a86746d5 Mon Sep 17 00:00:00 2001 From: arcarum <134963929+arcarum@users.noreply.github.com> Date: Fri, 29 Dec 2023 08:48:28 +0400 Subject: [PATCH 16/17] Add min and max variables --- .../latin/utils/InlineAutofillUtils.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InlineAutofillUtils.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InlineAutofillUtils.java index 98b1aa43b..531d953c2 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InlineAutofillUtils.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InlineAutofillUtils.java @@ -8,6 +8,7 @@ import android.graphics.drawable.Icon; import android.os.Build; import android.os.Bundle; +import android.util.Log; import android.util.Size; import android.util.TypedValue; import android.view.ViewGroup; @@ -77,13 +78,15 @@ public static InlineSuggestionsRequest createInlineSuggestionRequest(Context con Bundle stylesBundle = stylesBuilder.build(); + Size min = new Size(100, getHeight(context)); + Size max = new Size(740, getHeight(context)); + final ArrayList presentationSpecs = new ArrayList<>(); - presentationSpecs.add(new InlinePresentationSpec.Builder(new Size(100, getHeight(context)), - new Size(740, getHeight(context))).setStyle(stylesBundle).build()); - presentationSpecs.add(new InlinePresentationSpec.Builder(new Size(100, getHeight(context)), - new Size(740, getHeight(context))).setStyle(stylesBundle).build()); - presentationSpecs.add(new InlinePresentationSpec.Builder(new Size(100, getHeight(context)), - new Size(740, getHeight(context))).setStyle(stylesBundle).build()); + presentationSpecs.add(new InlinePresentationSpec.Builder(min, max).setStyle(stylesBundle).build()); + presentationSpecs.add(new InlinePresentationSpec.Builder(min, max).setStyle(stylesBundle).build()); + presentationSpecs.add(new InlinePresentationSpec.Builder(min, max).setStyle(stylesBundle).build()); + + Log.d("LatinIME","onCreateInlineSuggestionsRequest exited"); return new InlineSuggestionsRequest.Builder(presentationSpecs) .setMaxSuggestionCount(6) From cfa386b8ec660621386eb061248be7612876d7df Mon Sep 17 00:00:00 2001 From: arcarum <134963929+arcarum@users.noreply.github.com> Date: Fri, 29 Dec 2023 08:52:51 +0400 Subject: [PATCH 17/17] Add license header --- .../org/dslul/openboard/inputmethod/latin/LatinIME.java | 2 -- .../inputmethod/latin/utils/InlineAutofillUtils.java | 9 +++++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java index e1bd4a9b0..30d8eeb92 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java @@ -1344,8 +1344,6 @@ public void updateFullscreenMode() { updateSoftInputWindowLayoutParameters(); } - // Code from https://android.googlesource.com/platform/development/+/master/samples/AutofillKeyboard/ - // with some modifications @Override @RequiresApi(api = Build.VERSION_CODES.R) public InlineSuggestionsRequest onCreateInlineSuggestionsRequest(@NonNull Bundle uiExtras) { diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InlineAutofillUtils.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InlineAutofillUtils.java index 531d953c2..4155e595c 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InlineAutofillUtils.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/InlineAutofillUtils.java @@ -1,3 +1,9 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 + */ + package org.dslul.openboard.inputmethod.latin.utils; import static android.util.TypedValue.COMPLEX_UNIT_DIP; @@ -30,6 +36,7 @@ import java.util.ArrayList; import java.util.List; +// Modified code from https://android.googlesource.com/platform/development/+/master/samples/AutofillKeyboard/ @RequiresApi(api = Build.VERSION_CODES.R) public class InlineAutofillUtils { @@ -86,8 +93,6 @@ public static InlineSuggestionsRequest createInlineSuggestionRequest(Context con presentationSpecs.add(new InlinePresentationSpec.Builder(min, max).setStyle(stylesBundle).build()); presentationSpecs.add(new InlinePresentationSpec.Builder(min, max).setStyle(stylesBundle).build()); - Log.d("LatinIME","onCreateInlineSuggestionsRequest exited"); - return new InlineSuggestionsRequest.Builder(presentationSpecs) .setMaxSuggestionCount(6) .build();