From 8ac7330c9d71feb9159ace8e8cbfd09ad13fbdbb Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Tue, 1 May 2012 14:56:49 -0700 Subject: [PATCH] Minor UI improvements. - close contextual menu after an item is selected - collapse the search widget after a search request is sent - show keyboard by default for the editors - in the search list, if edit or delete is selected in the contextual menu, close the search list since its content will get changed. - enable QueryRefinement in search widget - do not call super.onNewIntent - update search.xml to include imeOptions, queryAfterZeroResults, and set searchSuggestionThreshold to 1. --- MyTracks/AndroidManifest.xml | 6 ++-- MyTracks/res/xml/search.xml | 20 +++++++------ .../apps/mytracks/SearchListActivity.java | 3 +- .../apps/mytracks/TrackDetailActivity.java | 1 - .../DeleteOneMarkerDialogFragment.java | 2 ++ .../DeleteOneTrackDialogFragment.java | 2 ++ .../apps/mytracks/util/Api11Adapter.java | 28 ++++++++++++++++++- 7 files changed, 46 insertions(+), 16 deletions(-) diff --git a/MyTracks/AndroidManifest.xml b/MyTracks/AndroidManifest.xml index f575a4318..34fbb187e 100755 --- a/MyTracks/AndroidManifest.xml +++ b/MyTracks/AndroidManifest.xml @@ -158,8 +158,7 @@ limitations under the License. + android:name="com.google.android.apps.mytracks.MarkerEditActivity" /> + android:name="com.google.android.apps.mytracks.TrackEditActivity" /> diff --git a/MyTracks/res/xml/search.xml b/MyTracks/res/xml/search.xml index 46ce021ed..a4dfcbda5 100644 --- a/MyTracks/res/xml/search.xml +++ b/MyTracks/res/xml/search.xml @@ -1,11 +1,13 @@ \ No newline at end of file + android:hint="@string/search_hint" + android:imeOptions="actionSearch" + android:includeInGlobalSearch="true" + android:label="@string/my_tracks_app_name" + android:queryAfterZeroResults="true" + android:searchSettingsDescription="@string/search_global_description" + android:searchSuggestAuthority="com.google.android.maps.mytracks.search" + android:searchSuggestSelection=" ? " + android:searchSuggestThreshold="1" + android:voicePromptText="@string/search_voice_prompt" + android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" /> diff --git a/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java b/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java index d5d960567..25a9d9c9f 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java @@ -190,7 +190,6 @@ public class SearchListActivity extends AbstractMyTracksActivity { @Override public void onNewIntent(Intent intent) { - super.onNewIntent(intent); setIntent(intent); handleIntent(intent); } @@ -270,6 +269,8 @@ public class SearchListActivity extends AbstractMyTracksActivity { .putExtra(TrackEditActivity.EXTRA_TRACK_ID, trackId); } startActivity(intent); + // Close the search result since its content can change after edit. + finish(); return true; case R.id.list_context_menu_delete: if (markerId != null) { diff --git a/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java b/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java index 54ecbdf7e..3c25dcedf 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java @@ -161,7 +161,6 @@ public class TrackDetailActivity extends AbstractMyTracksActivity @Override public void onNewIntent(Intent intent) { - super.onNewIntent(intent); setIntent(intent); handleIntent(intent); } diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/DeleteOneMarkerDialogFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/DeleteOneMarkerDialogFragment.java index d1f503b62..f21d25d74 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/DeleteOneMarkerDialogFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/DeleteOneMarkerDialogFragment.java @@ -61,6 +61,8 @@ public class DeleteOneMarkerDialogFragment extends DialogFragment { Intent intent = IntentUtils.newIntent(getActivity(), MarkerListActivity.class) .putExtra(MarkerListActivity.EXTRA_TRACK_ID, getArguments().getLong(KEY_TRACK_ID)); startActivity(intent); + // Close the activity since its content can change after delete. + getActivity().finish(); } }); } diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/DeleteOneTrackDialogFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/DeleteOneTrackDialogFragment.java index 58630656e..fef67d9ce 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/DeleteOneTrackDialogFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/DeleteOneTrackDialogFragment.java @@ -57,6 +57,8 @@ public class DeleteOneTrackDialogFragment extends DialogFragment { .deleteTrack(getArguments().getLong(KEY_TRACK_ID)); Intent intent = IntentUtils.newIntent(getActivity(), TrackListActivity.class); startActivity(intent); + // Close the activity since its content can change after delete. + getActivity().finish(); } }); } diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/Api11Adapter.java b/MyTracks/src/com/google/android/apps/mytracks/util/Api11Adapter.java index 90996ae28..71d61cd2b 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/util/Api11Adapter.java +++ b/MyTracks/src/com/google/android/apps/mytracks/util/Api11Adapter.java @@ -86,6 +86,7 @@ public class Api11Adapter extends Api10Adapter { @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + mode.finish(); return contextualActionModeCallback.onClick(item.getItemId(), position, id); } }); @@ -100,10 +101,35 @@ public class Api11Adapter extends Api10Adapter { }; @Override - public void configureSearchWidget(Activity activity, MenuItem menuItem) { + public void configureSearchWidget(Activity activity, final MenuItem menuItem) { SearchManager searchManager = (SearchManager) activity.getSystemService(Context.SEARCH_SERVICE); SearchView searchView = (SearchView) menuItem.getActionView(); searchView.setSearchableInfo(searchManager.getSearchableInfo(activity.getComponentName())); + searchView.setQueryRefinementEnabled(true); + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + menuItem.collapseActionView(); + return false; + } + + @Override + public boolean onQueryTextChange(String newText) { + return false; + } + }); + searchView.setOnSuggestionListener(new SearchView.OnSuggestionListener() { + @Override + public boolean onSuggestionSelect(int position) { + return false; + } + + @Override + public boolean onSuggestionClick(int position) { + menuItem.collapseActionView(); + return false; + } + }); } @Override