Display search suggestion: did you mean & showing result for

This commit is contained in:
Roy Yosef 2020-04-21 02:06:10 +03:00 committed by Stypox
parent 248e2d7ee0
commit 4194ac2226
No known key found for this signature in database
GPG Key ID: 4BDF1B40A49FDD23
6 changed files with 63 additions and 4 deletions

View File

@ -143,6 +143,9 @@ public class SearchFragment extends BaseListFragment<SearchInfo, ListExtractor.I
private EditText searchEditText; private EditText searchEditText;
private View searchClear; private View searchClear;
private View correctSuggestionPanel;
private TextView correctSuggestionText;
private View suggestionsPanel; private View suggestionsPanel;
private RecyclerView suggestionsRecyclerView; private RecyclerView suggestionsRecyclerView;
@ -345,6 +348,9 @@ public class SearchFragment extends BaseListFragment<SearchInfo, ListExtractor.I
searchToolbarContainer = activity.findViewById(R.id.toolbar_search_container); searchToolbarContainer = activity.findViewById(R.id.toolbar_search_container);
searchEditText = searchToolbarContainer.findViewById(R.id.toolbar_search_edit_text); searchEditText = searchToolbarContainer.findViewById(R.id.toolbar_search_edit_text);
searchClear = searchToolbarContainer.findViewById(R.id.toolbar_search_clear); searchClear = searchToolbarContainer.findViewById(R.id.toolbar_search_clear);
correctSuggestionPanel = rootView.findViewById(R.id.correct_suggestion_panel);
correctSuggestionText = rootView.findViewById(R.id.correct_suggestion_text);
} }
/*////////////////////////////////////////////////////////////////////////// /*//////////////////////////////////////////////////////////////////////////
@ -497,6 +503,8 @@ public class SearchFragment extends BaseListFragment<SearchInfo, ListExtractor.I
return; return;
} }
correctSuggestionPanel.setVisibility(View.GONE);
searchEditText.setText(""); searchEditText.setText("");
suggestionListAdapter.setItems(new ArrayList<>()); suggestionListAdapter.setItems(new ArrayList<>());
showKeyboardSearch(); showKeyboardSearch();
@ -554,11 +562,13 @@ public class SearchFragment extends BaseListFragment<SearchInfo, ListExtractor.I
textWatcher = new TextWatcher() { textWatcher = new TextWatcher() {
@Override @Override
public void beforeTextChanged(final CharSequence s, final int start, public void beforeTextChanged(final CharSequence s, final int start,
final int count, final int after) { } final int count, final int after) {
}
@Override @Override
public void onTextChanged(final CharSequence s, final int start, public void onTextChanged(final CharSequence s, final int start,
final int before, final int count) { } final int before, final int count) {
}
@Override @Override
public void afterTextChanged(final Editable s) { public void afterTextChanged(final Editable s) {
@ -961,6 +971,8 @@ public class SearchFragment extends BaseListFragment<SearchInfo, ListExtractor.I
NewPipe.getNameOfService(serviceId), searchString, 0); NewPipe.getNameOfService(serviceId), searchString, 0);
} }
handleSearchSuggestion(result);
lastSearchedString = searchString; lastSearchedString = searchString;
nextPageUrl = result.getNextPageUrl(); nextPageUrl = result.getNextPageUrl();
currentPageUrl = result.getUrl(); currentPageUrl = result.getUrl();
@ -978,6 +990,26 @@ public class SearchFragment extends BaseListFragment<SearchInfo, ListExtractor.I
super.handleResult(result); super.handleResult(result);
} }
private void handleSearchSuggestion(@NonNull final SearchInfo result) {
if (!TextUtils.isEmpty(result.getSearchSuggestion())) {
String helperText = getString(result.isCorrectedSearch()
? R.string.search_showing_result_for
: R.string.did_you_mean);
correctSuggestionText.setText(String.format(helperText, result.getSearchSuggestion()));
correctSuggestionPanel.setOnClickListener(v -> {
correctSuggestionPanel.setVisibility(View.GONE);
search(result.getSearchSuggestion(), contentFilter, sortFilter);
searchEditText.setText(result.getSearchSuggestion());
});
correctSuggestionPanel.setVisibility(View.VISIBLE);
} else {
correctSuggestionPanel.setVisibility(View.GONE);
}
}
@Override @Override
public void handleNextItems(final ListExtractor.InfoItemsPage result) { public void handleNextItems(final ListExtractor.InfoItemsPage result) {
showListFooter(false); showListFooter(false);

View File

@ -6,13 +6,34 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<LinearLayout
android:id="@+id/correct_suggestion_panel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignTop="@id/error_panel"
android:layout_marginTop="0dp"
android:orientation="horizontal">
<TextView
android:id="@+id/correct_suggestion_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:textColor="@color/background_title_color"
android:textSize="@dimen/search_suggestion_text_size" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/items_list" android:id="@+id/items_list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_below="@+id/correct_suggestion_panel"
android:scrollbars="vertical" android:scrollbars="vertical"
app:layoutManager="LinearLayoutManager" app:layoutManager="LinearLayoutManager"
tools:listitem="@layout/list_stream_item"/> tools:listitem="@layout/list_stream_item" />
<ProgressBar <ProgressBar
android:id="@+id/loading_progress_bar" android:id="@+id/loading_progress_bar"
@ -58,6 +79,7 @@
android:background="?android:attr/windowBackground" android:background="?android:attr/windowBackground"
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:orientation="vertical"
android:visibility="gone" android:visibility="gone"
tools:background="@android:color/transparent" tools:background="@android:color/transparent"
tools:visibility="visible"> tools:visibility="visible">
@ -68,7 +90,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:scrollbars="vertical" android:scrollbars="vertical"
app:layoutManager="LinearLayoutManager" app:layoutManager="LinearLayoutManager"
tools:listitem="@layout/item_search_suggestion"/> tools:listitem="@layout/item_search_suggestion" />
</LinearLayout> </LinearLayout>
<!--ERROR PANEL--> <!--ERROR PANEL-->

View File

@ -51,4 +51,6 @@
<!-- File picker dimensions --> <!-- File picker dimensions -->
<dimen name="file_picker_items_text_size">16sp</dimen> <dimen name="file_picker_items_text_size">16sp</dimen>
<dimen name="search_suggestion_text_size">14sp</dimen>
</resources> </resources>

View File

@ -21,4 +21,5 @@
<!-- Paddings & Margins --> <!-- Paddings & Margins -->
<dimen name="video_item_detail_like_margin">10dp</dimen> <dimen name="video_item_detail_like_margin">10dp</dimen>
<dimen name="search_suggestion_text_size">14sp</dimen>
</resources> </resources>

View File

@ -115,4 +115,5 @@
<dimen name="feed_group_carousel_top_bottom_margin">2dp</dimen> <dimen name="feed_group_carousel_top_bottom_margin">2dp</dimen>
<dimen name="feed_group_carousel_between_items_margin">4dp</dimen> <dimen name="feed_group_carousel_between_items_margin">4dp</dimen>
<dimen name="search_suggestion_text_size">16sp</dimen>
</resources> </resources>

View File

@ -16,6 +16,7 @@
<string name="search">Search</string> <string name="search">Search</string>
<string name="settings">Settings</string> <string name="settings">Settings</string>
<string name="did_you_mean">Did you mean: %1$s?</string> <string name="did_you_mean">Did you mean: %1$s?</string>
<string name="search_showing_result_for">Showing results for: %s</string>
<string name="share_dialog_title">Share with</string> <string name="share_dialog_title">Share with</string>
<string name="choose_browser">Choose browser</string> <string name="choose_browser">Choose browser</string>
<string name="screen_rotation">rotation</string> <string name="screen_rotation">rotation</string>