diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/SuggestionOps.java b/app/src/main/java/io/github/sspanak/tt9/ime/SuggestionOps.java index 90ea4b02..ce7c5df8 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/SuggestionOps.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/SuggestionOps.java @@ -9,6 +9,7 @@ import androidx.annotation.NonNull; import java.util.ArrayList; import io.github.sspanak.tt9.ime.helpers.TextField; +import io.github.sspanak.tt9.preferences.settings.SettingsStore; import io.github.sspanak.tt9.ui.tray.SuggestionsBar; import io.github.sspanak.tt9.util.ConsumerCompat; @@ -19,11 +20,11 @@ public class SuggestionOps { @NonNull private TextField textField; - SuggestionOps(@NonNull TypingHandler tt9, View mainView, @NonNull ConsumerCompat onDelayedAccept) { + SuggestionOps(@NonNull SettingsStore settings, View mainView, @NonNull ConsumerCompat onDelayedAccept, @NonNull Runnable onSuggestionClick) { delayedAcceptHandler = new Handler(Looper.getMainLooper()); this.onDelayedAccept = onDelayedAccept; - suggestionBar = new SuggestionsBar(tt9, mainView); + suggestionBar = new SuggestionsBar(settings, mainView, onSuggestionClick); textField = new TextField(null, null); } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java index a329d324..0c6743dd 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java @@ -42,7 +42,7 @@ public abstract class TypingHandler extends KeyPadHandler { @Override protected void createSuggestionBar(View mainView) { - suggestionOps = new SuggestionOps(this, mainView, this::onAcceptSuggestionsDelayed); + suggestionOps = new SuggestionOps(settings, mainView, this::onAcceptSuggestionsDelayed, this::onOK); } @Override diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsAdapter.java b/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsAdapter.java index 653cb6de..5432a7c4 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsAdapter.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsAdapter.java @@ -12,8 +12,10 @@ import androidx.recyclerview.widget.RecyclerView; import java.util.List; +import io.github.sspanak.tt9.util.ConsumerCompat; + public class SuggestionsAdapter extends RecyclerView.Adapter { - private final SuggestionsBar suggestionsBar; + private final ConsumerCompat onItemClick; private final int layout; private final int textViewResourceId; private final LayoutInflater mInflater; @@ -24,8 +26,8 @@ public class SuggestionsAdapter extends RecyclerView.Adapter suggestions) { - this.suggestionsBar = suggestionBar; + public SuggestionsAdapter(Context context, ConsumerCompat onItemClick, int layout, int textViewResourceId, List suggestions) { + this.onItemClick = onItemClick; this.layout = layout; this.textViewResourceId = textViewResourceId; this.mInflater = LayoutInflater.from(context); @@ -45,7 +47,7 @@ public class SuggestionsAdapter extends RecyclerView.Adapter suggestionsBar.onItemClick(holder.getAdapterPosition())); + holder.suggestionItem.setOnClickListener(v -> onItemClick.accept(holder.getAdapterPosition())); } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java b/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java index 068f4b88..c7fe6f62 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java @@ -18,7 +18,6 @@ import java.util.ArrayList; import java.util.List; import io.github.sspanak.tt9.R; -import io.github.sspanak.tt9.ime.AbstractHandler; import io.github.sspanak.tt9.preferences.settings.SettingsStore; public class SuggestionsBar { @@ -26,18 +25,17 @@ public class SuggestionsBar { protected int selectedIndex = 0; private boolean isDarkThemeEnabled = false; + private final Runnable onItemClick; private final RecyclerView mView; - private final AbstractHandler tt9; + private final SettingsStore settings; private SuggestionsAdapter mSuggestionsAdapter; private final Handler alternativeScrollingHandler = new Handler(); - private final int suggestionScrollingDelay; - public SuggestionsBar(AbstractHandler tt9, View mainView) { - this.tt9 = tt9; - - suggestionScrollingDelay = tt9.getSettings().getSuggestionScrollingDelay(); + public SuggestionsBar(@NonNull SettingsStore settings, @NonNull View mainView, @NonNull Runnable onItemClick) { + this.onItemClick = onItemClick; + this.settings = settings; mView = mainView.findViewById(R.id.suggestions_bar); if (mView != null) { @@ -65,14 +63,14 @@ public class SuggestionsBar { private void initDataAdapter(Context context) { mSuggestionsAdapter = new SuggestionsAdapter( context, - this, - tt9.getSettings().isMainLayoutNumpad() ? R.layout.suggestion_list_numpad : R.layout.suggestion_list, + this::handleItemClick, + settings.isMainLayoutNumpad() ? R.layout.suggestion_list_numpad : R.layout.suggestion_list, R.id.suggestion_list_item, suggestions ); mView.setAdapter(mSuggestionsAdapter); - setDarkTheme(tt9.getSettings().getDarkTheme()); + setDarkTheme(settings.getDarkTheme()); } @@ -165,8 +163,8 @@ public class SuggestionsBar { mSuggestionsAdapter.notifyItemChanged(oldIndex); mSuggestionsAdapter.notifyItemChanged(selectedIndex); - if (suggestionScrollingDelay > 0) { - alternativeScrollingHandler.postDelayed(() -> mView.scrollToPosition(selectedIndex), suggestionScrollingDelay); + if (settings.getSuggestionScrollingDelay() > 0) { + alternativeScrollingHandler.postDelayed(() -> mView.scrollToPosition(selectedIndex), settings.getSuggestionScrollingDelay()); } else { mView.scrollToPosition(selectedIndex); } @@ -246,11 +244,11 @@ public class SuggestionsBar { /** - * onItemClick + * handleItemClick * Passes through suggestion selected using the touchscreen. */ - public void onItemClick(int position) { + private void handleItemClick(int position) { selectedIndex = position; - tt9.onOK(); + onItemClick.run(); } }