SuggestionBar code cleanup
This commit is contained in:
parent
680b22eda1
commit
f13297f6b9
4 changed files with 23 additions and 22 deletions
|
|
@ -9,6 +9,7 @@ import androidx.annotation.NonNull;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import io.github.sspanak.tt9.ime.helpers.TextField;
|
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.ui.tray.SuggestionsBar;
|
||||||
import io.github.sspanak.tt9.util.ConsumerCompat;
|
import io.github.sspanak.tt9.util.ConsumerCompat;
|
||||||
|
|
||||||
|
|
@ -19,11 +20,11 @@ public class SuggestionOps {
|
||||||
@NonNull private TextField textField;
|
@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());
|
delayedAcceptHandler = new Handler(Looper.getMainLooper());
|
||||||
this.onDelayedAccept = onDelayedAccept;
|
this.onDelayedAccept = onDelayedAccept;
|
||||||
|
|
||||||
suggestionBar = new SuggestionsBar(tt9, mainView);
|
suggestionBar = new SuggestionsBar(settings, mainView, onSuggestionClick);
|
||||||
textField = new TextField(null, null);
|
textField = new TextField(null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ public abstract class TypingHandler extends KeyPadHandler {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void createSuggestionBar(View mainView) {
|
protected void createSuggestionBar(View mainView) {
|
||||||
suggestionOps = new SuggestionOps(this, mainView, this::onAcceptSuggestionsDelayed);
|
suggestionOps = new SuggestionOps(settings, mainView, this::onAcceptSuggestionsDelayed, this::onOK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,10 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import io.github.sspanak.tt9.util.ConsumerCompat;
|
||||||
|
|
||||||
public class SuggestionsAdapter extends RecyclerView.Adapter<SuggestionsAdapter.ViewHolder> {
|
public class SuggestionsAdapter extends RecyclerView.Adapter<SuggestionsAdapter.ViewHolder> {
|
||||||
private final SuggestionsBar suggestionsBar;
|
private final ConsumerCompat<Integer> onItemClick;
|
||||||
private final int layout;
|
private final int layout;
|
||||||
private final int textViewResourceId;
|
private final int textViewResourceId;
|
||||||
private final LayoutInflater mInflater;
|
private final LayoutInflater mInflater;
|
||||||
|
|
@ -24,8 +26,8 @@ public class SuggestionsAdapter extends RecyclerView.Adapter<SuggestionsAdapter.
|
||||||
private int selectedIndex = 0;
|
private int selectedIndex = 0;
|
||||||
|
|
||||||
|
|
||||||
public SuggestionsAdapter(Context context, SuggestionsBar suggestionBar, int layout, int textViewResourceId, List<String> suggestions) {
|
public SuggestionsAdapter(Context context, ConsumerCompat<Integer> onItemClick, int layout, int textViewResourceId, List<String> suggestions) {
|
||||||
this.suggestionsBar = suggestionBar;
|
this.onItemClick = onItemClick;
|
||||||
this.layout = layout;
|
this.layout = layout;
|
||||||
this.textViewResourceId = textViewResourceId;
|
this.textViewResourceId = textViewResourceId;
|
||||||
this.mInflater = LayoutInflater.from(context);
|
this.mInflater = LayoutInflater.from(context);
|
||||||
|
|
@ -45,7 +47,7 @@ public class SuggestionsAdapter extends RecyclerView.Adapter<SuggestionsAdapter.
|
||||||
holder.suggestionItem.setText(mSuggestions.get(position));
|
holder.suggestionItem.setText(mSuggestions.get(position));
|
||||||
holder.suggestionItem.setTextColor(colorDefault);
|
holder.suggestionItem.setTextColor(colorDefault);
|
||||||
holder.suggestionItem.setBackgroundColor(selectedIndex == position ? colorHighlight : Color.TRANSPARENT);
|
holder.suggestionItem.setBackgroundColor(selectedIndex == position ? colorHighlight : Color.TRANSPARENT);
|
||||||
holder.suggestionItem.setOnClickListener(v -> suggestionsBar.onItemClick(holder.getAdapterPosition()));
|
holder.suggestionItem.setOnClickListener(v -> onItemClick.accept(holder.getAdapterPosition()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.github.sspanak.tt9.R;
|
import io.github.sspanak.tt9.R;
|
||||||
import io.github.sspanak.tt9.ime.AbstractHandler;
|
|
||||||
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
|
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
|
||||||
|
|
||||||
public class SuggestionsBar {
|
public class SuggestionsBar {
|
||||||
|
|
@ -26,18 +25,17 @@ public class SuggestionsBar {
|
||||||
protected int selectedIndex = 0;
|
protected int selectedIndex = 0;
|
||||||
private boolean isDarkThemeEnabled = false;
|
private boolean isDarkThemeEnabled = false;
|
||||||
|
|
||||||
|
private final Runnable onItemClick;
|
||||||
private final RecyclerView mView;
|
private final RecyclerView mView;
|
||||||
private final AbstractHandler tt9;
|
private final SettingsStore settings;
|
||||||
private SuggestionsAdapter mSuggestionsAdapter;
|
private SuggestionsAdapter mSuggestionsAdapter;
|
||||||
|
|
||||||
private final Handler alternativeScrollingHandler = new Handler();
|
private final Handler alternativeScrollingHandler = new Handler();
|
||||||
private final int suggestionScrollingDelay;
|
|
||||||
|
|
||||||
|
|
||||||
public SuggestionsBar(AbstractHandler tt9, View mainView) {
|
public SuggestionsBar(@NonNull SettingsStore settings, @NonNull View mainView, @NonNull Runnable onItemClick) {
|
||||||
this.tt9 = tt9;
|
this.onItemClick = onItemClick;
|
||||||
|
this.settings = settings;
|
||||||
suggestionScrollingDelay = tt9.getSettings().getSuggestionScrollingDelay();
|
|
||||||
|
|
||||||
mView = mainView.findViewById(R.id.suggestions_bar);
|
mView = mainView.findViewById(R.id.suggestions_bar);
|
||||||
if (mView != null) {
|
if (mView != null) {
|
||||||
|
|
@ -65,14 +63,14 @@ public class SuggestionsBar {
|
||||||
private void initDataAdapter(Context context) {
|
private void initDataAdapter(Context context) {
|
||||||
mSuggestionsAdapter = new SuggestionsAdapter(
|
mSuggestionsAdapter = new SuggestionsAdapter(
|
||||||
context,
|
context,
|
||||||
this,
|
this::handleItemClick,
|
||||||
tt9.getSettings().isMainLayoutNumpad() ? R.layout.suggestion_list_numpad : R.layout.suggestion_list,
|
settings.isMainLayoutNumpad() ? R.layout.suggestion_list_numpad : R.layout.suggestion_list,
|
||||||
R.id.suggestion_list_item,
|
R.id.suggestion_list_item,
|
||||||
suggestions
|
suggestions
|
||||||
);
|
);
|
||||||
mView.setAdapter(mSuggestionsAdapter);
|
mView.setAdapter(mSuggestionsAdapter);
|
||||||
|
|
||||||
setDarkTheme(tt9.getSettings().getDarkTheme());
|
setDarkTheme(settings.getDarkTheme());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -165,8 +163,8 @@ public class SuggestionsBar {
|
||||||
mSuggestionsAdapter.notifyItemChanged(oldIndex);
|
mSuggestionsAdapter.notifyItemChanged(oldIndex);
|
||||||
mSuggestionsAdapter.notifyItemChanged(selectedIndex);
|
mSuggestionsAdapter.notifyItemChanged(selectedIndex);
|
||||||
|
|
||||||
if (suggestionScrollingDelay > 0) {
|
if (settings.getSuggestionScrollingDelay() > 0) {
|
||||||
alternativeScrollingHandler.postDelayed(() -> mView.scrollToPosition(selectedIndex), suggestionScrollingDelay);
|
alternativeScrollingHandler.postDelayed(() -> mView.scrollToPosition(selectedIndex), settings.getSuggestionScrollingDelay());
|
||||||
} else {
|
} else {
|
||||||
mView.scrollToPosition(selectedIndex);
|
mView.scrollToPosition(selectedIndex);
|
||||||
}
|
}
|
||||||
|
|
@ -246,11 +244,11 @@ public class SuggestionsBar {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* onItemClick
|
* handleItemClick
|
||||||
* Passes through suggestion selected using the touchscreen.
|
* Passes through suggestion selected using the touchscreen.
|
||||||
*/
|
*/
|
||||||
public void onItemClick(int position) {
|
private void handleItemClick(int position) {
|
||||||
selectedIndex = position;
|
selectedIndex = position;
|
||||||
tt9.onOK();
|
onItemClick.run();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue