Merge "Misc search fix"
This commit is contained in:
@@ -21,12 +21,16 @@ import android.app.LoaderManager;
|
||||
import android.content.Context;
|
||||
import android.content.Loader;
|
||||
import android.os.Bundle;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class SavedQueryController implements LoaderManager.LoaderCallbacks {
|
||||
public class SavedQueryController implements LoaderManager.LoaderCallbacks,
|
||||
MenuItem.OnMenuItemClickListener {
|
||||
|
||||
// TODO: make a generic background task manager to handle one-off tasks like this one.
|
||||
|
||||
@@ -35,6 +39,8 @@ public class SavedQueryController implements LoaderManager.LoaderCallbacks {
|
||||
private static final int LOADER_ID_SAVED_QUERIES = 2;
|
||||
private static final String ARG_QUERY = "remove_query";
|
||||
|
||||
private static final int MENU_SEARCH_HISTORY = 1000;
|
||||
|
||||
private final Context mContext;
|
||||
private final LoaderManager mLoaderManager;
|
||||
private final SearchFeatureProvider mSearchFeatureProvider;
|
||||
@@ -55,7 +61,7 @@ public class SavedQueryController implements LoaderManager.LoaderCallbacks {
|
||||
case LOADER_ID_SAVE_QUERY_TASK:
|
||||
return new SavedQueryRecorder(mContext, args.getString(ARG_QUERY));
|
||||
case LOADER_ID_REMOVE_QUERY_TASK:
|
||||
return new SavedQueryRemover(mContext, args.getString(ARG_QUERY));
|
||||
return new SavedQueryRemover(mContext);
|
||||
case LOADER_ID_SAVED_QUERIES:
|
||||
return mSearchFeatureProvider.getSavedQueryLoader(mContext);
|
||||
}
|
||||
@@ -76,7 +82,21 @@ public class SavedQueryController implements LoaderManager.LoaderCallbacks {
|
||||
|
||||
@Override
|
||||
public void onLoaderReset(Loader loader) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
if (item.getItemId() != MENU_SEARCH_HISTORY) {
|
||||
return false;
|
||||
}
|
||||
removeQueries();
|
||||
return true;
|
||||
}
|
||||
|
||||
public void buildMenuItem(Menu menu) {
|
||||
final MenuItem item =
|
||||
menu.add(Menu.NONE, MENU_SEARCH_HISTORY, Menu.NONE, R.string.search_clear_history);
|
||||
item.setOnMenuItemClickListener(this);
|
||||
}
|
||||
|
||||
public void saveQuery(String query) {
|
||||
@@ -85,9 +105,11 @@ public class SavedQueryController implements LoaderManager.LoaderCallbacks {
|
||||
mLoaderManager.restartLoader(LOADER_ID_SAVE_QUERY_TASK, args, this);
|
||||
}
|
||||
|
||||
public void removeQuery(String query) {
|
||||
/**
|
||||
* Remove all saved queries from DB
|
||||
*/
|
||||
public void removeQueries() {
|
||||
final Bundle args = new Bundle();
|
||||
args.putString(ARG_QUERY, query);
|
||||
mLoaderManager.restartLoader(LOADER_ID_REMOVE_QUERY_TASK, args, this);
|
||||
}
|
||||
|
||||
|
@@ -17,25 +17,21 @@
|
||||
|
||||
package com.android.settings.search;
|
||||
|
||||
import static com.android.settings.search.IndexDatabaseHelper.Tables.TABLE_SAVED_QUERIES;
|
||||
|
||||
import android.content.Context;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteException;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.settings.search.IndexDatabaseHelper;
|
||||
import com.android.settings.utils.AsyncLoader;
|
||||
|
||||
import static com.android.settings.search.IndexDatabaseHelper.Tables.TABLE_SAVED_QUERIES;
|
||||
|
||||
public class SavedQueryRemover extends AsyncLoader<Void> {
|
||||
|
||||
private static final String LOG_TAG = "SavedQueryRemover";
|
||||
|
||||
private final String mQuery;
|
||||
|
||||
public SavedQueryRemover(Context context, String query) {
|
||||
public SavedQueryRemover(Context context) {
|
||||
super(context);
|
||||
mQuery = query;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -44,8 +40,8 @@ public class SavedQueryRemover extends AsyncLoader<Void> {
|
||||
try {
|
||||
// First, delete all saved queries that are the same
|
||||
database.delete(TABLE_SAVED_QUERIES,
|
||||
IndexDatabaseHelper.SavedQueriesColumns.QUERY + " = ?",
|
||||
new String[]{mQuery});
|
||||
null /* where */,
|
||||
null /* whereArgs */);
|
||||
} catch (Exception e) {
|
||||
Log.d(LOG_TAG, "Cannot update saved Search queries", e);
|
||||
}
|
||||
|
@@ -25,12 +25,10 @@ import com.android.internal.logging.nano.MetricsProto;
|
||||
public class SavedQueryViewHolder extends SearchViewHolder {
|
||||
|
||||
public final TextView titleView;
|
||||
public final View removeButton;
|
||||
|
||||
public SavedQueryViewHolder(View view) {
|
||||
super(view);
|
||||
titleView = view.findViewById(android.R.id.title);
|
||||
removeButton = view.findViewById(android.R.id.icon);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -40,8 +38,7 @@ public class SavedQueryViewHolder extends SearchViewHolder {
|
||||
|
||||
@Override
|
||||
public void onBind(SearchFragment fragment, SearchResult result) {
|
||||
itemView.setOnClickListener(v -> fragment.onSavedQueryClicked(result.title));
|
||||
titleView.setText(result.title);
|
||||
titleView.setOnClickListener(v -> fragment.onSavedQueryClicked(result.title));
|
||||
removeButton.setOnClickListener(v -> fragment.onRemoveSavedQueryClicked(result.title));
|
||||
}
|
||||
}
|
@@ -32,6 +32,8 @@ import android.util.Log;
|
||||
import android.util.Pair;
|
||||
import android.util.TypedValue;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
@@ -103,7 +105,7 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O
|
||||
@VisibleForTesting
|
||||
SearchFeatureProvider mSearchFeatureProvider;
|
||||
|
||||
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
|
||||
@VisibleForTesting
|
||||
SearchResultsAdapter mSearchAdapter;
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -164,6 +166,12 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||
super.onCreateOptionsMenu(menu, inflater);
|
||||
mSavedQueryController.buildMenuItem(menu);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
@@ -361,10 +369,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O
|
||||
onQueryTextChange(queryString);
|
||||
}
|
||||
|
||||
public void onRemoveSavedQueryClicked(CharSequence title) {
|
||||
mSavedQueryController.removeQuery(title.toString());
|
||||
}
|
||||
|
||||
private void restartLoaders() {
|
||||
mShowingSavedQuery = false;
|
||||
final LoaderManager loaderManager = getLoaderManager();
|
||||
|
Reference in New Issue
Block a user