show/hid track controller when search is shown/dismissed

This commit is contained in:
Jimmy Shih
2013-05-01 15:30:01 -07:00
parent 244219bdde
commit b0215058d2
8 changed files with 66 additions and 15 deletions
@@ -226,7 +226,7 @@ public class MarkerListActivity extends AbstractMyTracksActivity implements Dele
getMenuInflater().inflate(R.menu.marker_list, menu); getMenuInflater().inflate(R.menu.marker_list, menu);
insertMarkerMenuItem = menu.findItem(R.id.marker_list_insert_marker); insertMarkerMenuItem = menu.findItem(R.id.marker_list_insert_marker);
searchMenuItem = menu.findItem(R.id.marker_list_search); searchMenuItem = menu.findItem(R.id.marker_list_search);
ApiAdapterFactory.getApiAdapter().configureSearchWidget(this, searchMenuItem); ApiAdapterFactory.getApiAdapter().configureSearchWidget(this, searchMenuItem, null);
updateMenu(); updateMenu();
return true; return true;
} }
@@ -280,7 +280,7 @@ public class SearchListActivity extends AbstractSendToGoogleActivity
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.search_list, menu); getMenuInflater().inflate(R.menu.search_list, menu);
searchMenuItem = menu.findItem(R.id.search_list_search); searchMenuItem = menu.findItem(R.id.search_list_search);
ApiAdapterFactory.getApiAdapter().configureSearchWidget(this, searchMenuItem); ApiAdapterFactory.getApiAdapter().configureSearchWidget(this, searchMenuItem, null);
return true; return true;
} }
@@ -133,6 +133,14 @@ public class TrackController {
stopTimer(); stopTimer();
} }
public void hide() {
containerView.setVisibility(View.GONE);
}
public void show() {
containerView.setVisibility(View.VISIBLE);
}
/** /**
* Stops the timer. * Stops the timer.
*/ */
@@ -57,6 +57,7 @@ import com.google.android.maps.mytracks.BuildConfig;
import com.google.android.maps.mytracks.R; import com.google.android.maps.mytracks.R;
import android.app.Dialog; import android.app.Dialog;
import android.app.SearchManager;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
@@ -370,10 +371,8 @@ public class TrackListActivity extends AbstractSendToGoogleActivity
ApiAdapterFactory.getApiAdapter().enableStrictMode(); ApiAdapterFactory.getApiAdapter().enableStrictMode();
} }
Intent intent = new Intent(this, RemoveTempFilesService.class); Intent intent = new Intent(this, RemoveTempFilesService.class);
startService(intent); startService(intent);
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
myTracksProviderUtils = MyTracksProviderUtils.Factory.get(this); myTracksProviderUtils = MyTracksProviderUtils.Factory.get(this);
sharedPreferences = getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE); sharedPreferences = getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
@@ -383,6 +382,16 @@ public class TrackListActivity extends AbstractSendToGoogleActivity
trackController = new TrackController( trackController = new TrackController(
this, trackRecordingServiceConnection, true, recordListener, stopListener); this, trackRecordingServiceConnection, true, recordListener, stopListener);
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
// Show trackController when search dialog is dismissed
SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
searchManager.setOnDismissListener(new SearchManager.OnDismissListener() {
@Override
public void onDismiss() {
trackController.show();
}
});
listView = (ListView) findViewById(R.id.track_list); listView = (ListView) findViewById(R.id.track_list);
listView.setEmptyView(findViewById(R.id.track_list_empty_view)); listView.setEmptyView(findViewById(R.id.track_list_empty_view));
listView.setOnItemClickListener(new OnItemClickListener() { listView.setOnItemClickListener(new OnItemClickListener() {
@@ -547,7 +556,7 @@ public class TrackListActivity extends AbstractSendToGoogleActivity
feedbackMenuItem = menu.findItem(R.id.track_list_feedback); feedbackMenuItem = menu.findItem(R.id.track_list_feedback);
feedbackMenuItem.setVisible(GoogleFeedbackUtils.isAvailable(this)); feedbackMenuItem.setVisible(GoogleFeedbackUtils.isAvailable(this));
ApiAdapterFactory.getApiAdapter().configureSearchWidget(this, searchMenuItem); ApiAdapterFactory.getApiAdapter().configureSearchWidget(this, searchMenuItem, trackController);
updateMenuItems(recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT); updateMenuItems(recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT);
return true; return true;
} }
@@ -640,6 +649,13 @@ public class TrackListActivity extends AbstractSendToGoogleActivity
} }
return super.onKeyUp(keyCode, event); return super.onKeyUp(keyCode, event);
} }
@Override
public boolean onSearchRequested() {
// Hide trackController when search dialog is shown
trackController.hide();
return super.onSearchRequested();
};
@Override @Override
public TrackRecordingServiceConnection getTrackRecordingServiceConnection() { public TrackRecordingServiceConnection getTrackRecordingServiceConnection() {
@@ -17,6 +17,7 @@
package com.google.android.apps.mytracks.util; package com.google.android.apps.mytracks.util;
import com.google.android.apps.mytracks.ContextualActionModeCallback; import com.google.android.apps.mytracks.ContextualActionModeCallback;
import com.google.android.apps.mytracks.TrackController;
import com.google.android.maps.mytracks.R; import com.google.android.maps.mytracks.R;
import android.annotation.TargetApi; import android.annotation.TargetApi;
@@ -198,11 +199,26 @@ public class Api11Adapter extends Api10Adapter {
} }
@Override @Override
public void configureSearchWidget(Activity activity, final MenuItem menuItem) { public void configureSearchWidget(
Activity activity, MenuItem menuItem, final TrackController trackController) {
SearchManager searchManager = (SearchManager) activity.getSystemService(Context.SEARCH_SERVICE); SearchManager searchManager = (SearchManager) activity.getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menuItem.getActionView(); SearchView searchView = (SearchView) menuItem.getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(activity.getComponentName())); searchView.setSearchableInfo(searchManager.getSearchableInfo(activity.getComponentName()));
searchView.setQueryRefinementEnabled(true); searchView.setQueryRefinementEnabled(true);
searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// Hide and show trackController when search widget has focus/no focus
if (trackController != null) {
if (hasFocus) {
trackController.hide();
} else {
trackController.show();
}
}
}
});
} }
@Override @Override
@@ -16,6 +16,8 @@
package com.google.android.apps.mytracks.util; package com.google.android.apps.mytracks.util;
import com.google.android.apps.mytracks.TrackController;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.app.ActionBar; import android.app.ActionBar;
import android.app.Activity; import android.app.Activity;
@@ -38,16 +40,18 @@ public class Api14Adapter extends Api11Adapter {
} }
@Override @Override
public void configureSearchWidget(Activity activity, final MenuItem menuItem) { public void configureSearchWidget(
super.configureSearchWidget(activity, menuItem); Activity activity, final MenuItem menuItem, TrackController trackController) {
super.configureSearchWidget(activity, menuItem, trackController);
SearchView searchView = (SearchView) menuItem.getActionView(); SearchView searchView = (SearchView) menuItem.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override @Override
public boolean onQueryTextSubmit(String query) { public boolean onQueryTextSubmit(String query) {
menuItem.collapseActionView(); menuItem.collapseActionView();
return false; return false;
} }
@Override
@Override
public boolean onQueryTextChange(String newText) { public boolean onQueryTextChange(String newText) {
return false; return false;
} }
@@ -57,7 +61,8 @@ public class Api14Adapter extends Api11Adapter {
public boolean onSuggestionSelect(int position) { public boolean onSuggestionSelect(int position) {
return false; return false;
} }
@Override
@Override
public boolean onSuggestionClick(int position) { public boolean onSuggestionClick(int position) {
menuItem.collapseActionView(); menuItem.collapseActionView();
return false; return false;
@@ -17,6 +17,7 @@ package com.google.android.apps.mytracks.util;
import com.google.android.apps.mytracks.Constants; import com.google.android.apps.mytracks.Constants;
import com.google.android.apps.mytracks.ContextualActionModeCallback; import com.google.android.apps.mytracks.ContextualActionModeCallback;
import com.google.android.apps.mytracks.TrackController;
import com.google.android.apps.mytracks.services.sensors.BluetoothConnectionManager; import com.google.android.apps.mytracks.services.sensors.BluetoothConnectionManager;
import com.google.android.apps.mytracks.widgets.TrackWidgetProvider; import com.google.android.apps.mytracks.widgets.TrackWidgetProvider;
import com.google.api.client.http.HttpTransport; import com.google.api.client.http.HttpTransport;
@@ -111,7 +112,8 @@ public class Api8Adapter implements ApiAdapter {
} }
@Override @Override
public void configureSearchWidget(Activity activity, MenuItem menuItem) { public void configureSearchWidget(
Activity activity, MenuItem menuItem, TrackController trackController) {
// Do nothing // Do nothing
} }
@@ -16,6 +16,7 @@
package com.google.android.apps.mytracks.util; package com.google.android.apps.mytracks.util;
import com.google.android.apps.mytracks.ContextualActionModeCallback; import com.google.android.apps.mytracks.ContextualActionModeCallback;
import com.google.android.apps.mytracks.TrackController;
import com.google.api.client.http.HttpTransport; import com.google.api.client.http.HttpTransport;
import android.app.Activity; import android.app.Activity;
@@ -134,8 +135,11 @@ public interface ApiAdapter {
* *
* @param activity the activity * @param activity the activity
* @param menuItem the search menu item * @param menuItem the search menu item
* @param trackController the track controller to hide/show when search widget
* is expanded/collapsed. Can be null
*/ */
public void configureSearchWidget(Activity activity, MenuItem menuItem); public void configureSearchWidget(
Activity activity, MenuItem menuItem, TrackController trackController);
/** /**
* Handles the search menu selection. Returns true if handled. * Handles the search menu selection. Returns true if handled.