In MarkerList, do not show insert waypoint if paused.

In SearchList, update icon based on recording or paused state.
In TrackDetail, do not show insert waypoint if paused.
In TrackDetail, always show voice frequency and split marker settings.
This commit is contained in:
Jimmy Shih
2012-08-30 13:21:46 -07:00
parent 3b83d12056
commit 378cae7151
6 changed files with 54 additions and 45 deletions
-4
View File
@@ -890,10 +890,6 @@ limitations under the License.
translation_description="The accessibility description for the 'My Location' icon."> translation_description="The accessibility description for the 'My Location' icon.">
My Location My Location
</string> </string>
<string name="icon_recording"
translation_description="The accessibility description for the 'Recording' icon.">
Recording
</string>
<string name="icon_track" <string name="icon_track"
translation_description="The accessibility description for the 'Track' icon."> translation_description="The accessibility description for the 'Track' icon.">
Track Track
@@ -84,9 +84,10 @@ public class MarkerListActivity extends AbstractMyTracksActivity {
sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() { sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() {
@Override @Override
public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
// Note that key can be null // Note that the key can be null
if (PreferencesUtils.getKey(MarkerListActivity.this, R.string.recording_track_id_key) if (PreferencesUtils.getKey(MarkerListActivity.this, R.string.recording_track_id_key)
.equals(key)) { .equals(key) || PreferencesUtils.getKey(
MarkerListActivity.this, R.string.recording_track_paused_key).equals(key)) {
updateMenu(); updateMenu();
} }
} }
@@ -187,8 +188,11 @@ public class MarkerListActivity extends AbstractMyTracksActivity {
private void updateMenu() { private void updateMenu() {
if (insertMarkerMenuItem != null) { if (insertMarkerMenuItem != null) {
insertMarkerMenuItem.setVisible( boolean isRecording = trackId
trackId == PreferencesUtils.getLong(this, R.string.recording_track_id_key)); == PreferencesUtils.getLong(this, R.string.recording_track_id_key);
boolean isPaused = PreferencesUtils.getBoolean(this, R.string.recording_track_paused_key,
PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT);
insertMarkerMenuItem.setVisible(isRecording && !isPaused);
} }
} }
@@ -91,10 +91,18 @@ public class SearchListActivity extends AbstractMyTracksActivity implements Dele
sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() { sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() {
@Override @Override
public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
if (PreferencesUtils.getKey(SearchListActivity.this, R.string.recording_track_id_key) if (key == null || key.equals(
.equals(key)) { PreferencesUtils.getKey(SearchListActivity.this, R.string.recording_track_id_key))) {
recordingTrackId = PreferencesUtils.getLong( recordingTrackId = PreferencesUtils.getLong(
SearchListActivity.this, R.string.recording_track_id_key); SearchListActivity.this, R.string.recording_track_id_key);
}
if (key == null || key.equals(PreferencesUtils.getKey(
SearchListActivity.this, R.string.recording_track_paused_key))) {
recordingTrackPaused = PreferencesUtils.getBoolean(SearchListActivity.this,
R.string.recording_track_paused_key,
PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT);
}
if (key != null) {
arrayAdapter.notifyDataSetChanged(); arrayAdapter.notifyDataSetChanged();
} }
} }
@@ -115,6 +123,7 @@ public class SearchListActivity extends AbstractMyTracksActivity implements Dele
private SearchRecentSuggestions searchRecentSuggestions; private SearchRecentSuggestions searchRecentSuggestions;
private MyTracksLocationManager myTracksLocationManager; private MyTracksLocationManager myTracksLocationManager;
private long recordingTrackId; private long recordingTrackId;
private boolean recordingTrackPaused;
private boolean metricUnits; private boolean metricUnits;
private ArrayAdapter<Map<String, Object>> arrayAdapter; private ArrayAdapter<Map<String, Object>> arrayAdapter;
@@ -133,9 +142,10 @@ public class SearchListActivity extends AbstractMyTracksActivity implements Dele
searchEngine = new SearchEngine(myTracksProviderUtils); searchEngine = new SearchEngine(myTracksProviderUtils);
searchRecentSuggestions = SearchEngineProvider.newHelper(this); searchRecentSuggestions = SearchEngineProvider.newHelper(this);
myTracksLocationManager = new MyTracksLocationManager(this); myTracksLocationManager = new MyTracksLocationManager(this);
getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE) SharedPreferences sharedPreferences = getSharedPreferences(
.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
recordingTrackId = PreferencesUtils.getLong(this, R.string.recording_track_id_key); sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
sharedPreferenceChangeListener.onSharedPreferenceChanged(sharedPreferences, null);
listView = (ListView) findViewById(R.id.search_list); listView = (ListView) findViewById(R.id.search_list);
listView.setEmptyView(findViewById(R.id.search_list_empty)); listView.setEmptyView(findViewById(R.id.search_list_empty));
@@ -425,10 +435,18 @@ public class SearchListActivity extends AbstractMyTracksActivity implements Dele
boolean isRecording = track.getId() == recordingTrackId; boolean isRecording = track.getId() == recordingTrackId;
TripStatistics tripStatitics = track.getTripStatistics(); TripStatistics tripStatitics = track.getTripStatistics();
resultMap.put(NAME_FIELD, track.getName()); resultMap.put(NAME_FIELD, track.getName());
resultMap.put(ICON_FIELD, isRecording int iconId;
? R.drawable.menu_record_track : TrackIconUtils.getIconDrawable(track.getIcon())); int iconContentDescriptionId;
resultMap.put(ICON_CONTENT_DESCRIPTION_FIELD, getString(isRecording ? R.string.icon_recording if (isRecording) {
: R.string.icon_track)); iconId = recordingTrackPaused ? R.drawable.menu_pause_track : R.drawable.menu_record_track;
iconContentDescriptionId = recordingTrackPaused ? R.string.menu_pause_track
: R.drawable.menu_record_track;
} else {
iconId = TrackIconUtils.getIconDrawable(track.getIcon());
iconContentDescriptionId = R.string.icon_track;
}
resultMap.put(ICON_FIELD, iconId);
resultMap.put(ICON_CONTENT_DESCRIPTION_FIELD, getString(iconContentDescriptionId));
resultMap.put(CATEGORY_FIELD, track.getCategory()); resultMap.put(CATEGORY_FIELD, track.getCategory());
resultMap.put(TOTAL_TIME_FIELD, isRecording ? null : StringUtils.formatElapsedTime( resultMap.put(TOTAL_TIME_FIELD, isRecording ? null : StringUtils.formatElapsedTime(
tripStatitics.getTotalTime())); tripStatitics.getTotalTime()));
@@ -89,8 +89,6 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
private MenuItem insertMarkerMenuItem; private MenuItem insertMarkerMenuItem;
private MenuItem playMenuItem; private MenuItem playMenuItem;
private MenuItem shareMenuItem; private MenuItem shareMenuItem;
private MenuItem voiceFrequencyMenuItem;
private MenuItem splitFrequencyMenuItem;
private MenuItem sendGoogleMenuItem; private MenuItem sendGoogleMenuItem;
private MenuItem saveMenuItem; private MenuItem saveMenuItem;
@@ -110,7 +108,8 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
recordingTrackId = PreferencesUtils.getLong( recordingTrackId = PreferencesUtils.getLong(
TrackDetailActivity.this, R.string.recording_track_id_key); TrackDetailActivity.this, R.string.recording_track_id_key);
if (key != null) { if (key != null) {
updateMenuItems(trackId == recordingTrackId); updateMenuItems(trackId == recordingTrackId, recordingTrackPaused);
return;
} }
} }
if (key == null || key.equals(PreferencesUtils.getKey( if (key == null || key.equals(PreferencesUtils.getKey(
@@ -197,7 +196,7 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
super.onResume(); super.onResume();
trackDataHub.loadTrack(trackId); trackDataHub.loadTrack(trackId);
TrackRecordingServiceConnectionUtils.resumeConnection(this, trackRecordingServiceConnection); TrackRecordingServiceConnectionUtils.resumeConnection(this, trackRecordingServiceConnection);
updateMenuItems(trackId == recordingTrackId); updateMenuItems(trackId == recordingTrackId, recordingTrackPaused);
} }
@Override @Override
@@ -237,12 +236,10 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
insertMarkerMenuItem = menu.findItem(R.id.track_detail_insert_marker); insertMarkerMenuItem = menu.findItem(R.id.track_detail_insert_marker);
playMenuItem = menu.findItem(R.id.track_detail_play); playMenuItem = menu.findItem(R.id.track_detail_play);
shareMenuItem = menu.findItem(R.id.track_detail_share); shareMenuItem = menu.findItem(R.id.track_detail_share);
voiceFrequencyMenuItem = menu.findItem(R.id.track_detail_voice_frequency);
splitFrequencyMenuItem = menu.findItem(R.id.track_detail_split_frequency);
sendGoogleMenuItem = menu.findItem(R.id.track_detail_send_google); sendGoogleMenuItem = menu.findItem(R.id.track_detail_send_google);
saveMenuItem = menu.findItem(R.id.track_detail_save); saveMenuItem = menu.findItem(R.id.track_detail_save);
updateMenuItems(trackId == recordingTrackId); updateMenuItems(trackId == recordingTrackId, recordingTrackPaused);
return true; return true;
} }
@@ -267,18 +264,15 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
Intent intent; Intent intent;
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.track_detail_record_track: case R.id.track_detail_record_track:
recordingTrackPaused = false; updateMenuItems(true, false);
updateMenuItems(true);
TrackRecordingServiceConnectionUtils.resumeTrack(trackRecordingServiceConnection); TrackRecordingServiceConnectionUtils.resumeTrack(trackRecordingServiceConnection);
return true; return true;
case R.id.track_detail_pause_track: case R.id.track_detail_pause_track:
recordingTrackPaused = true; updateMenuItems(true, true);
updateMenuItems(true);
TrackRecordingServiceConnectionUtils.pauseTrack(trackRecordingServiceConnection); TrackRecordingServiceConnectionUtils.pauseTrack(trackRecordingServiceConnection);
return true; return true;
case R.id.track_detail_stop_recording: case R.id.track_detail_stop_recording:
recordingTrackPaused = true; updateMenuItems(false, true);
updateMenuItems(false);
TrackRecordingServiceConnectionUtils.stopRecording( TrackRecordingServiceConnectionUtils.stopRecording(
this, trackRecordingServiceConnection, true); this, trackRecordingServiceConnection, true);
return true; return true;
@@ -369,7 +363,7 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
@Override @Override
public boolean onTrackballEvent(MotionEvent event) { public boolean onTrackballEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) { if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (trackId == recordingTrackId) { if (trackId == recordingTrackId && !recordingTrackPaused) {
TrackRecordingServiceConnectionUtils.addMarker( TrackRecordingServiceConnectionUtils.addMarker(
this, trackRecordingServiceConnection, WaypointCreationRequest.DEFAULT_WAYPOINT); this, trackRecordingServiceConnection, WaypointCreationRequest.DEFAULT_WAYPOINT);
return true; return true;
@@ -442,18 +436,18 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
* *
* @param isRecording true if recording * @param isRecording true if recording
*/ */
private void updateMenuItems(boolean isRecording) { private void updateMenuItems(boolean isRecording, boolean isPaused) {
if (recordTrackMenuItem != null) { if (recordTrackMenuItem != null) {
recordTrackMenuItem.setVisible(isRecording && recordingTrackPaused); recordTrackMenuItem.setVisible(isRecording && isPaused);
} }
if (pauseTrackMenuItem != null) { if (pauseTrackMenuItem != null) {
pauseTrackMenuItem.setVisible(isRecording && !recordingTrackPaused); pauseTrackMenuItem.setVisible(isRecording && !isPaused);
} }
if (stopRecordingMenuItem != null) { if (stopRecordingMenuItem != null) {
stopRecordingMenuItem.setVisible(isRecording); stopRecordingMenuItem.setVisible(isRecording);
} }
if (insertMarkerMenuItem != null) { if (insertMarkerMenuItem != null) {
insertMarkerMenuItem.setVisible(isRecording); insertMarkerMenuItem.setVisible(isRecording && !isPaused);
} }
if (playMenuItem != null) { if (playMenuItem != null) {
playMenuItem.setVisible(!isRecording); playMenuItem.setVisible(!isRecording);
@@ -461,12 +455,6 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
if (shareMenuItem != null) { if (shareMenuItem != null) {
shareMenuItem.setVisible(!isRecording); shareMenuItem.setVisible(!isRecording);
} }
if (voiceFrequencyMenuItem != null) {
voiceFrequencyMenuItem.setVisible(isRecording);
}
if (splitFrequencyMenuItem != null) {
splitFrequencyMenuItem.setVisible(isRecording);
}
if (sendGoogleMenuItem != null) { if (sendGoogleMenuItem != null) {
sendGoogleMenuItem.setVisible(!isRecording); sendGoogleMenuItem.setVisible(!isRecording);
} }
@@ -476,7 +464,7 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
String title; String title;
if (isRecording) { if (isRecording) {
title = getString( title = getString(
recordingTrackPaused ? R.string.generic_paused : R.string.generic_recording); isPaused ? R.string.generic_paused : R.string.generic_recording);
} else { } else {
Track track = MyTracksProviderUtils.Factory.get(this).getTrack(trackId); Track track = MyTracksProviderUtils.Factory.get(this).getTrack(trackId);
title = track != null ? track.getName() : getString(R.string.my_tracks_app_name); title = track != null ? track.getName() : getString(R.string.my_tracks_app_name);
@@ -298,14 +298,17 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac
boolean isRecording = cursor.getLong(idIndex) == recordingTrackId; boolean isRecording = cursor.getLong(idIndex) == recordingTrackId;
String name = cursor.getString(nameIndex); String name = cursor.getString(nameIndex);
int iconId; int iconId;
int iconContentDescriptionId;
if (isRecording) { if (isRecording) {
iconId = recordingTrackPaused ? R.drawable.menu_pause_track iconId = recordingTrackPaused ? R.drawable.menu_pause_track
: R.drawable.menu_record_track; : R.drawable.menu_record_track;
iconContentDescriptionId = recordingTrackPaused ? R.string.menu_pause_track
: R.string.menu_record_track;
} else { } else {
iconId = TrackIconUtils.getIconDrawable(cursor.getString(iconIndex)); iconId = TrackIconUtils.getIconDrawable(cursor.getString(iconIndex));
iconContentDescriptionId = R.string.icon_track;
} }
String iconContentDescription = getString( String iconContentDescription = getString(iconContentDescriptionId);
isRecording ? R.string.icon_recording : R.string.icon_track);
String category = cursor.getString(categoryIndex); String category = cursor.getString(categoryIndex);
String totalTime = isRecording ? null String totalTime = isRecording ? null
: StringUtils.formatElapsedTime(cursor.getLong(totalTimeIndex)); : StringUtils.formatElapsedTime(cursor.getLong(totalTimeIndex));
@@ -161,7 +161,7 @@ public class CreateAndSendTrackTest extends ActivityInstrumentationTestCase2<Tra
if (EndToEndTestUtils.hasActionBar) { if (EndToEndTestUtils.hasActionBar) {
// Check the title is Recording. // Check the title is Recording.
assertTrue(EndToEndTestUtils.SOLO.searchText(activityMyTracks assertTrue(EndToEndTestUtils.SOLO.searchText(activityMyTracks
.getString(R.string.icon_recording))); .getString(R.string.generic_recording)));
} }
createWaypoint(); createWaypoint();