Misc search fix

- Remove incorrect summary from set date/time
- Remove some unused resources
- Remove ability to clear individual search history
- Add remove all query history menu item

Change-Id: I4383d075310297163fd2206d1a5b9c8f4ed94078
Fix: 62741488
Fix: 31589605
Test: robotests
This commit is contained in:
Fan Zhang
2017-07-14 13:29:50 -07:00
parent 4fefb21547
commit 4e7bd693b2
25 changed files with 128 additions and 230 deletions

View File

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

View File

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

View File

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

View File

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