1
0
Fork 0

SuggestionBar code cleanup

This commit is contained in:
sspanak 2024-03-30 16:47:43 +02:00 committed by Dimo Karaivanov
parent 680b22eda1
commit f13297f6b9
4 changed files with 23 additions and 22 deletions

View file

@ -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<String> onDelayedAccept) {
SuggestionOps(@NonNull SettingsStore settings, View mainView, @NonNull ConsumerCompat<String> 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);
}

View file

@ -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

View file

@ -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<SuggestionsAdapter.ViewHolder> {
private final SuggestionsBar suggestionsBar;
private final ConsumerCompat<Integer> onItemClick;
private final int layout;
private final int textViewResourceId;
private final LayoutInflater mInflater;
@ -24,8 +26,8 @@ public class SuggestionsAdapter extends RecyclerView.Adapter<SuggestionsAdapter.
private int selectedIndex = 0;
public SuggestionsAdapter(Context context, SuggestionsBar suggestionBar, int layout, int textViewResourceId, List<String> suggestions) {
this.suggestionsBar = suggestionBar;
public SuggestionsAdapter(Context context, ConsumerCompat<Integer> onItemClick, int layout, int textViewResourceId, List<String> 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<SuggestionsAdapter.
holder.suggestionItem.setText(mSuggestions.get(position));
holder.suggestionItem.setTextColor(colorDefault);
holder.suggestionItem.setBackgroundColor(selectedIndex == position ? colorHighlight : Color.TRANSPARENT);
holder.suggestionItem.setOnClickListener(v -> suggestionsBar.onItemClick(holder.getAdapterPosition()));
holder.suggestionItem.setOnClickListener(v -> onItemClick.accept(holder.getAdapterPosition()));
}

View file

@ -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();
}
}