Loading src/com/android/settings/search2/DatabaseIndexingManager.java +2 −2 Original line number Diff line number Diff line Loading @@ -515,7 +515,7 @@ public class DatabaseIndexingManager { if (count > 0) { while (cursor.moveToNext()) { final int providerRank = cursor.getInt(COLUMN_INDEX_XML_RES_RANK); // TODO remove provider rank final int xmlResId = cursor.getInt(COLUMN_INDEX_XML_RES_RESID); final String className = cursor.getString(COLUMN_INDEX_XML_RES_CLASS_NAME); Loading Loading @@ -560,7 +560,7 @@ public class DatabaseIndexingManager { if (count > 0) { while (cursor.moveToNext()) { final int providerRank = cursor.getInt(COLUMN_INDEX_RAW_RANK); // TODO Remove rank final String title = cursor.getString(COLUMN_INDEX_RAW_TITLE); final String summaryOn = cursor.getString(COLUMN_INDEX_RAW_SUMMARY_ON); final String summaryOff = cursor.getString(COLUMN_INDEX_RAW_SUMMARY_OFF); Loading src/com/android/settings/search2/SearchFragment.java +18 −2 Original line number Diff line number Diff line Loading @@ -167,6 +167,17 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O return view; } @Override public void onResume() { super.onResume(); if (TextUtils.isEmpty(mQuery)) { return; } final String query = mQuery; mQuery = ""; onQueryTextChange(query); } @Override public void onStop() { super.onStop(); Loading Loading @@ -206,7 +217,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O mResultClickCount = 0; mNeverEnteredQuery = false; mQuery = query; mSearchAdapter.clearResults(); if (isEmptyQuery) { final LoaderManager loaderManager = getLoaderManager(); Loading Loading @@ -252,7 +262,13 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O return; } final int resultCount = mSearchAdapter.displaySearchResults(); mNoResultsView.setVisibility(resultCount == 0 ? View.VISIBLE : View.GONE); if (resultCount == 0) { mNoResultsView.setVisibility(View.VISIBLE); } else { mNoResultsView.setVisibility(View.GONE); mResultsRecyclerView.scrollToPosition(0); } mSearchFeatureProvider.showFeedbackButton(this, getView()); } Loading src/com/android/settings/search2/SearchResult.java +20 −4 Original line number Diff line number Diff line Loading @@ -93,7 +93,7 @@ public class SearchResult implements Comparable<SearchResult> { icon = builder.mIcon; payload = builder.mResultPayload; viewType = payload.getType(); stableId = Objects.hash(title, summary, breadcrumbs, rank, icon, payload, viewType); stableId = Objects.hash(title, summary, breadcrumbs, rank, viewType); } @Override Loading @@ -104,6 +104,22 @@ public class SearchResult implements Comparable<SearchResult> { return this.rank - searchResult.rank; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof SearchResult)) { return false; } return this.stableId == ((SearchResult) obj).stableId; } @Override public int hashCode() { return (int) stableId; } public static class Builder { protected CharSequence mTitle; protected CharSequence mSummary; Loading src/com/android/settings/search2/SearchResultDiffCallback.java 0 → 100644 +56 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package com.android.settings.search2; import android.support.v7.util.DiffUtil; import java.util.List; /** * Callback for DiffUtil to elegantly update search data when the query changes. */ public class SearchResultDiffCallback extends DiffUtil.Callback { private List<SearchResult> mOldList; private List<SearchResult> mNewList; public SearchResultDiffCallback(List<SearchResult> oldList, List<SearchResult> newList) { mOldList = oldList; mNewList = newList; } @Override public int getOldListSize() { return mOldList.size(); } @Override public int getNewListSize() { return mNewList.size(); } @Override public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) { return mOldList.get(oldItemPosition).equals(mNewList.get(newItemPosition)); } @Override public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) { return mOldList.get(oldItemPosition).equals(mNewList.get(newItemPosition)); } } src/com/android/settings/search2/SearchResultsAdapter.java +12 −8 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.settings.search2; import android.content.Context; import android.support.annotation.MainThread; import android.support.annotation.VisibleForTesting; import android.support.v7.util.DiffUtil; import android.support.v7.widget.RecyclerView; import android.util.ArrayMap; import android.view.LayoutInflater; Loading @@ -37,8 +38,9 @@ import static com.android.settings.search2.SearchResult.TOP_RANK; public class SearchResultsAdapter extends RecyclerView.Adapter<SearchViewHolder> { private final List<SearchResult> mSearchResults; private final SearchFragment mFragment; private List<SearchResult> mSearchResults; private Map<String, List<? extends SearchResult>> mResultsMap; public SearchResultsAdapter(SearchFragment fragment) { Loading Loading @@ -128,7 +130,7 @@ public class SearchResultsAdapter extends RecyclerView.Adapter<SearchViewHolder> .get(InstalledAppResultLoader.class.getName()); final int dbSize = (databaseResults != null) ? databaseResults.size() : 0; final int appSize = (installedAppResults != null) ? installedAppResults.size() : 0; final List<SearchResult> results = new ArrayList<>(dbSize + appSize); final List<SearchResult> newResults = new ArrayList<>(dbSize + appSize); int dbIndex = 0; int appIndex = 0; Loading @@ -136,23 +138,25 @@ public class SearchResultsAdapter extends RecyclerView.Adapter<SearchViewHolder> while (rank <= BOTTOM_RANK) { while ((dbIndex < dbSize) && (databaseResults.get(dbIndex).rank == rank)) { results.add(databaseResults.get(dbIndex++)); newResults.add(databaseResults.get(dbIndex++)); } while ((appIndex < appSize) && (installedAppResults.get(appIndex).rank == rank)) { results.add(installedAppResults.get(appIndex++)); newResults.add(installedAppResults.get(appIndex++)); } rank++; } while (dbIndex < dbSize) { results.add(databaseResults.get(dbIndex++)); newResults.add(databaseResults.get(dbIndex++)); } while (appIndex < appSize) { results.add(installedAppResults.get(appIndex++)); newResults.add(installedAppResults.get(appIndex++)); } mSearchResults.addAll(results); notifyDataSetChanged(); final DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff( new SearchResultDiffCallback(mSearchResults, newResults), false /* detectMoves */); mSearchResults = newResults; diffResult.dispatchUpdatesTo(this); return mSearchResults.size(); } Loading Loading
src/com/android/settings/search2/DatabaseIndexingManager.java +2 −2 Original line number Diff line number Diff line Loading @@ -515,7 +515,7 @@ public class DatabaseIndexingManager { if (count > 0) { while (cursor.moveToNext()) { final int providerRank = cursor.getInt(COLUMN_INDEX_XML_RES_RANK); // TODO remove provider rank final int xmlResId = cursor.getInt(COLUMN_INDEX_XML_RES_RESID); final String className = cursor.getString(COLUMN_INDEX_XML_RES_CLASS_NAME); Loading Loading @@ -560,7 +560,7 @@ public class DatabaseIndexingManager { if (count > 0) { while (cursor.moveToNext()) { final int providerRank = cursor.getInt(COLUMN_INDEX_RAW_RANK); // TODO Remove rank final String title = cursor.getString(COLUMN_INDEX_RAW_TITLE); final String summaryOn = cursor.getString(COLUMN_INDEX_RAW_SUMMARY_ON); final String summaryOff = cursor.getString(COLUMN_INDEX_RAW_SUMMARY_OFF); Loading
src/com/android/settings/search2/SearchFragment.java +18 −2 Original line number Diff line number Diff line Loading @@ -167,6 +167,17 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O return view; } @Override public void onResume() { super.onResume(); if (TextUtils.isEmpty(mQuery)) { return; } final String query = mQuery; mQuery = ""; onQueryTextChange(query); } @Override public void onStop() { super.onStop(); Loading Loading @@ -206,7 +217,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O mResultClickCount = 0; mNeverEnteredQuery = false; mQuery = query; mSearchAdapter.clearResults(); if (isEmptyQuery) { final LoaderManager loaderManager = getLoaderManager(); Loading Loading @@ -252,7 +262,13 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O return; } final int resultCount = mSearchAdapter.displaySearchResults(); mNoResultsView.setVisibility(resultCount == 0 ? View.VISIBLE : View.GONE); if (resultCount == 0) { mNoResultsView.setVisibility(View.VISIBLE); } else { mNoResultsView.setVisibility(View.GONE); mResultsRecyclerView.scrollToPosition(0); } mSearchFeatureProvider.showFeedbackButton(this, getView()); } Loading
src/com/android/settings/search2/SearchResult.java +20 −4 Original line number Diff line number Diff line Loading @@ -93,7 +93,7 @@ public class SearchResult implements Comparable<SearchResult> { icon = builder.mIcon; payload = builder.mResultPayload; viewType = payload.getType(); stableId = Objects.hash(title, summary, breadcrumbs, rank, icon, payload, viewType); stableId = Objects.hash(title, summary, breadcrumbs, rank, viewType); } @Override Loading @@ -104,6 +104,22 @@ public class SearchResult implements Comparable<SearchResult> { return this.rank - searchResult.rank; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof SearchResult)) { return false; } return this.stableId == ((SearchResult) obj).stableId; } @Override public int hashCode() { return (int) stableId; } public static class Builder { protected CharSequence mTitle; protected CharSequence mSummary; Loading
src/com/android/settings/search2/SearchResultDiffCallback.java 0 → 100644 +56 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package com.android.settings.search2; import android.support.v7.util.DiffUtil; import java.util.List; /** * Callback for DiffUtil to elegantly update search data when the query changes. */ public class SearchResultDiffCallback extends DiffUtil.Callback { private List<SearchResult> mOldList; private List<SearchResult> mNewList; public SearchResultDiffCallback(List<SearchResult> oldList, List<SearchResult> newList) { mOldList = oldList; mNewList = newList; } @Override public int getOldListSize() { return mOldList.size(); } @Override public int getNewListSize() { return mNewList.size(); } @Override public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) { return mOldList.get(oldItemPosition).equals(mNewList.get(newItemPosition)); } @Override public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) { return mOldList.get(oldItemPosition).equals(mNewList.get(newItemPosition)); } }
src/com/android/settings/search2/SearchResultsAdapter.java +12 −8 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.settings.search2; import android.content.Context; import android.support.annotation.MainThread; import android.support.annotation.VisibleForTesting; import android.support.v7.util.DiffUtil; import android.support.v7.widget.RecyclerView; import android.util.ArrayMap; import android.view.LayoutInflater; Loading @@ -37,8 +38,9 @@ import static com.android.settings.search2.SearchResult.TOP_RANK; public class SearchResultsAdapter extends RecyclerView.Adapter<SearchViewHolder> { private final List<SearchResult> mSearchResults; private final SearchFragment mFragment; private List<SearchResult> mSearchResults; private Map<String, List<? extends SearchResult>> mResultsMap; public SearchResultsAdapter(SearchFragment fragment) { Loading Loading @@ -128,7 +130,7 @@ public class SearchResultsAdapter extends RecyclerView.Adapter<SearchViewHolder> .get(InstalledAppResultLoader.class.getName()); final int dbSize = (databaseResults != null) ? databaseResults.size() : 0; final int appSize = (installedAppResults != null) ? installedAppResults.size() : 0; final List<SearchResult> results = new ArrayList<>(dbSize + appSize); final List<SearchResult> newResults = new ArrayList<>(dbSize + appSize); int dbIndex = 0; int appIndex = 0; Loading @@ -136,23 +138,25 @@ public class SearchResultsAdapter extends RecyclerView.Adapter<SearchViewHolder> while (rank <= BOTTOM_RANK) { while ((dbIndex < dbSize) && (databaseResults.get(dbIndex).rank == rank)) { results.add(databaseResults.get(dbIndex++)); newResults.add(databaseResults.get(dbIndex++)); } while ((appIndex < appSize) && (installedAppResults.get(appIndex).rank == rank)) { results.add(installedAppResults.get(appIndex++)); newResults.add(installedAppResults.get(appIndex++)); } rank++; } while (dbIndex < dbSize) { results.add(databaseResults.get(dbIndex++)); newResults.add(databaseResults.get(dbIndex++)); } while (appIndex < appSize) { results.add(installedAppResults.get(appIndex++)); newResults.add(installedAppResults.get(appIndex++)); } mSearchResults.addAll(results); notifyDataSetChanged(); final DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff( new SearchResultDiffCallback(mSearchResults, newResults), false /* detectMoves */); mSearchResults = newResults; diffResult.dispatchUpdatesTo(this); return mSearchResults.size(); } Loading