abouttreesummaryrefslogcommitdiff
path: root/srcs/juloo.keyboard2/suggestions/CandidatesView.java
diff options
context:
space:
mode:
authorPatrick2026-05-07 20:16:23 +0200
committerPatrick2026-05-07 20:16:23 +0200
commitb866f59e400973c2f7ba0e97517fdddeb3efbb33 (patch)
tree20c702893298303445e4513de78a9fd83ca5bf94 /srcs/juloo.keyboard2/suggestions/CandidatesView.java
parent5cfb4e328e4985f9ea7c145a76938f48e9df6fef (diff)
parentb807f217a06d3312e05a25c23342f41d339e76c6 (diff)
downloadunexpected-keyboard-b866f59e400973c2f7ba0e97517fdddeb3efbb33.tar.gz
unexpected-keyboard-b866f59e400973c2f7ba0e97517fdddeb3efbb33.zip
Merge branch 'master' into skintones
Diffstat (limited to 'srcs/juloo.keyboard2/suggestions/CandidatesView.java')
-rw-r--r--srcs/juloo.keyboard2/suggestions/CandidatesView.java46
1 files changed, 33 insertions, 13 deletions
diff --git a/srcs/juloo.keyboard2/suggestions/CandidatesView.java b/srcs/juloo.keyboard2/suggestions/CandidatesView.java
index 1768a52..5485ccf 100644
--- a/srcs/juloo.keyboard2/suggestions/CandidatesView.java
+++ b/srcs/juloo.keyboard2/suggestions/CandidatesView.java
@@ -1,6 +1,7 @@
package juloo.keyboard2.suggestions;
import android.content.Context;
+import android.os.Build.VERSION;
import android.text.InputType;
import android.util.AttributeSet;
import android.util.TypedValue;
@@ -16,10 +17,12 @@ import juloo.keyboard2.R;
public class CandidatesView extends LinearLayout
{
- static final int NUM_CANDIDATES = 3;
+ static final int NUM_CANDIDATES = 4;
/** Candidates currently visible. Entries can be [null] when there are less
- than [NUM_CANDIDATES] suggestions. */
+ than [NUM_CANDIDATES] suggestions.
+ - Entries at indexes [0] to [2] are word suggestions.
+ - Entry at index [3] is the emoji suggestion. */
String[] _items = new String[NUM_CANDIDATES];
/** Text views showing the candidates in [_items]. Text views visibility is
@@ -42,44 +45,55 @@ public class CandidatesView extends LinearLayout
setup_item_view(0, R.id.candidates_middle);
setup_item_view(1, R.id.candidates_right);
setup_item_view(2, R.id.candidates_left);
+ setup_item_view(3, R.id.candidates_emoji);
}
- public void set_candidates(List<String> suggestions)
+ public void set_candidates(Suggestions s)
{
- int s_count = suggestions.size();
+ int s_count = s.count;
+ for (int i = 0; i < Suggestions.MAX_COUNT; i++)
+ _items[i] = (i < s_count) ? s.suggestions[i] : null;
+ _items[3] = s.emoji_suggestion;
// Hide the status message when showing candidates.
if (s_count != 0 && _status_no_dict != null)
_status_no_dict.setVisibility(View.GONE);
for (int i = 0; i < _item_views.length; i++)
{
TextView v = _item_views[i];
- if (i < s_count)
+ if (_items[i] != null)
{
- String it = suggestions.get(i);
- _items[i] = it;
- v.setText(it);
+ v.setText(_items[i]);
v.setVisibility(View.VISIBLE);
}
else
{
- _items[i] = null;
v.setVisibility(View.GONE);
}
}
}
+ public void clear_candidates()
+ {
+ for (int i = 0; i < _item_views.length; i++)
+ {
+ _items[i] = null;
+ _item_views[i].setVisibility(View.GONE);
+ }
+ }
+
public void refresh_config(Config config)
{
- set_candidates(Suggestions.NO_SUGGESTIONS);
+ clear_candidates();
// The status message indicates whether the dictionaries should be
// installed.
_status_no_dict = inflate_and_show(_status_no_dict,
(config.current_dictionary == null),
R.layout.candidates_status_no_dict);
- set_height(config);
+ set_sizes(config);
}
- void set_height(Config config)
+ /** Set the height of the suggestion row and the text size. */
+ void set_sizes(Config config)
{
// Make the candidates view about as high as a keyboard row.
int height = (int)(config.keyboard_rows_height_pixels * (1 - config.key_vertical_margin));
@@ -88,11 +102,17 @@ public class CandidatesView extends LinearLayout
for (int i = 0; i < NUM_CANDIDATES; i++)
{
TextView v = _item_views[i];
+ // Set view height
ViewGroup.MarginLayoutParams p =
(ViewGroup.MarginLayoutParams)v.getLayoutParams();
p.height = height;
v.setLayoutParams(p);
- v.setTextSize(TypedValue.COMPLEX_UNIT_PX, text_size);
+ // Set text size and enable auto size if supported.
+ if (VERSION.SDK_INT < 26)
+ v.setTextSize(TypedValue.COMPLEX_UNIT_PX, text_size);
+ else
+ v.setAutoSizeTextTypeUniformWithConfiguration(
+ (int)(text_size / 2.), (int)text_size, 1, TypedValue.COMPLEX_UNIT_PX);
}
}