diff --git a/MyTracks/res/values/strings.xml b/MyTracks/res/values/strings.xml index cc6af877a..c6a22ca51 100644 --- a/MyTracks/res/values/strings.xml +++ b/MyTracks/res/values/strings.xml @@ -890,10 +890,6 @@ limitations under the License. translation_description="The accessibility description for the 'My Location' icon."> My Location - - Recording - Track diff --git a/MyTracks/src/com/google/android/apps/mytracks/MarkerListActivity.java b/MyTracks/src/com/google/android/apps/mytracks/MarkerListActivity.java index ceccdf0ff..648f8a684 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/MarkerListActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/MarkerListActivity.java @@ -84,9 +84,10 @@ public class MarkerListActivity extends AbstractMyTracksActivity { sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() { @Override 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) - .equals(key)) { + .equals(key) || PreferencesUtils.getKey( + MarkerListActivity.this, R.string.recording_track_paused_key).equals(key)) { updateMenu(); } } @@ -187,8 +188,11 @@ public class MarkerListActivity extends AbstractMyTracksActivity { private void updateMenu() { if (insertMarkerMenuItem != null) { - insertMarkerMenuItem.setVisible( - trackId == PreferencesUtils.getLong(this, R.string.recording_track_id_key)); + boolean isRecording = trackId + == 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); } } diff --git a/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java b/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java index 62ef8128d..d37ec84db 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java @@ -91,10 +91,18 @@ public class SearchListActivity extends AbstractMyTracksActivity implements Dele sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { - if (PreferencesUtils.getKey(SearchListActivity.this, R.string.recording_track_id_key) - .equals(key)) { + if (key == null || key.equals( + PreferencesUtils.getKey(SearchListActivity.this, R.string.recording_track_id_key))) { recordingTrackId = PreferencesUtils.getLong( 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(); } } @@ -115,6 +123,7 @@ public class SearchListActivity extends AbstractMyTracksActivity implements Dele private SearchRecentSuggestions searchRecentSuggestions; private MyTracksLocationManager myTracksLocationManager; private long recordingTrackId; + private boolean recordingTrackPaused; private boolean metricUnits; private ArrayAdapter> arrayAdapter; @@ -133,9 +142,10 @@ public class SearchListActivity extends AbstractMyTracksActivity implements Dele searchEngine = new SearchEngine(myTracksProviderUtils); searchRecentSuggestions = SearchEngineProvider.newHelper(this); myTracksLocationManager = new MyTracksLocationManager(this); - getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE) - .registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); - recordingTrackId = PreferencesUtils.getLong(this, R.string.recording_track_id_key); + SharedPreferences sharedPreferences = getSharedPreferences( + Constants.SETTINGS_NAME, Context.MODE_PRIVATE); + sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); + sharedPreferenceChangeListener.onSharedPreferenceChanged(sharedPreferences, null); listView = (ListView) findViewById(R.id.search_list); listView.setEmptyView(findViewById(R.id.search_list_empty)); @@ -425,10 +435,18 @@ public class SearchListActivity extends AbstractMyTracksActivity implements Dele boolean isRecording = track.getId() == recordingTrackId; TripStatistics tripStatitics = track.getTripStatistics(); resultMap.put(NAME_FIELD, track.getName()); - resultMap.put(ICON_FIELD, isRecording - ? R.drawable.menu_record_track : TrackIconUtils.getIconDrawable(track.getIcon())); - resultMap.put(ICON_CONTENT_DESCRIPTION_FIELD, getString(isRecording ? R.string.icon_recording - : R.string.icon_track)); + int iconId; + int iconContentDescriptionId; + if (isRecording) { + 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(TOTAL_TIME_FIELD, isRecording ? null : StringUtils.formatElapsedTime( tripStatitics.getTotalTime())); diff --git a/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java b/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java index aabc8f8e2..9c5b7a374 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java @@ -89,8 +89,6 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del private MenuItem insertMarkerMenuItem; private MenuItem playMenuItem; private MenuItem shareMenuItem; - private MenuItem voiceFrequencyMenuItem; - private MenuItem splitFrequencyMenuItem; private MenuItem sendGoogleMenuItem; private MenuItem saveMenuItem; @@ -110,7 +108,8 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del recordingTrackId = PreferencesUtils.getLong( TrackDetailActivity.this, R.string.recording_track_id_key); if (key != null) { - updateMenuItems(trackId == recordingTrackId); + updateMenuItems(trackId == recordingTrackId, recordingTrackPaused); + return; } } if (key == null || key.equals(PreferencesUtils.getKey( @@ -197,7 +196,7 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del super.onResume(); trackDataHub.loadTrack(trackId); TrackRecordingServiceConnectionUtils.resumeConnection(this, trackRecordingServiceConnection); - updateMenuItems(trackId == recordingTrackId); + updateMenuItems(trackId == recordingTrackId, recordingTrackPaused); } @Override @@ -237,12 +236,10 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del insertMarkerMenuItem = menu.findItem(R.id.track_detail_insert_marker); playMenuItem = menu.findItem(R.id.track_detail_play); 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); saveMenuItem = menu.findItem(R.id.track_detail_save); - updateMenuItems(trackId == recordingTrackId); + updateMenuItems(trackId == recordingTrackId, recordingTrackPaused); return true; } @@ -267,18 +264,15 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del Intent intent; switch (item.getItemId()) { case R.id.track_detail_record_track: - recordingTrackPaused = false; - updateMenuItems(true); + updateMenuItems(true, false); TrackRecordingServiceConnectionUtils.resumeTrack(trackRecordingServiceConnection); return true; case R.id.track_detail_pause_track: - recordingTrackPaused = true; - updateMenuItems(true); + updateMenuItems(true, true); TrackRecordingServiceConnectionUtils.pauseTrack(trackRecordingServiceConnection); return true; case R.id.track_detail_stop_recording: - recordingTrackPaused = true; - updateMenuItems(false); + updateMenuItems(false, true); TrackRecordingServiceConnectionUtils.stopRecording( this, trackRecordingServiceConnection, true); return true; @@ -369,7 +363,7 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del @Override public boolean onTrackballEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { - if (trackId == recordingTrackId) { + if (trackId == recordingTrackId && !recordingTrackPaused) { TrackRecordingServiceConnectionUtils.addMarker( this, trackRecordingServiceConnection, WaypointCreationRequest.DEFAULT_WAYPOINT); return true; @@ -442,18 +436,18 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del * * @param isRecording true if recording */ - private void updateMenuItems(boolean isRecording) { + private void updateMenuItems(boolean isRecording, boolean isPaused) { if (recordTrackMenuItem != null) { - recordTrackMenuItem.setVisible(isRecording && recordingTrackPaused); + recordTrackMenuItem.setVisible(isRecording && isPaused); } if (pauseTrackMenuItem != null) { - pauseTrackMenuItem.setVisible(isRecording && !recordingTrackPaused); + pauseTrackMenuItem.setVisible(isRecording && !isPaused); } if (stopRecordingMenuItem != null) { stopRecordingMenuItem.setVisible(isRecording); } if (insertMarkerMenuItem != null) { - insertMarkerMenuItem.setVisible(isRecording); + insertMarkerMenuItem.setVisible(isRecording && !isPaused); } if (playMenuItem != null) { playMenuItem.setVisible(!isRecording); @@ -461,12 +455,6 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del if (shareMenuItem != null) { shareMenuItem.setVisible(!isRecording); } - if (voiceFrequencyMenuItem != null) { - voiceFrequencyMenuItem.setVisible(isRecording); - } - if (splitFrequencyMenuItem != null) { - splitFrequencyMenuItem.setVisible(isRecording); - } if (sendGoogleMenuItem != null) { sendGoogleMenuItem.setVisible(!isRecording); } @@ -476,7 +464,7 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del String title; if (isRecording) { title = getString( - recordingTrackPaused ? R.string.generic_paused : R.string.generic_recording); + isPaused ? R.string.generic_paused : R.string.generic_recording); } else { Track track = MyTracksProviderUtils.Factory.get(this).getTrack(trackId); title = track != null ? track.getName() : getString(R.string.my_tracks_app_name); diff --git a/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java b/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java index 4ccd6b9b5..362060984 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java @@ -298,14 +298,17 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac boolean isRecording = cursor.getLong(idIndex) == recordingTrackId; String name = cursor.getString(nameIndex); int iconId; + int iconContentDescriptionId; if (isRecording) { iconId = recordingTrackPaused ? R.drawable.menu_pause_track : R.drawable.menu_record_track; + iconContentDescriptionId = recordingTrackPaused ? R.string.menu_pause_track + : R.string.menu_record_track; } else { iconId = TrackIconUtils.getIconDrawable(cursor.getString(iconIndex)); + iconContentDescriptionId = R.string.icon_track; } - String iconContentDescription = getString( - isRecording ? R.string.icon_recording : R.string.icon_track); + String iconContentDescription = getString(iconContentDescriptionId); String category = cursor.getString(categoryIndex); String totalTime = isRecording ? null : StringUtils.formatElapsedTime(cursor.getLong(totalTimeIndex)); diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/CreateAndSendTrackTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/CreateAndSendTrackTest.java index e6c819a0f..8b4e3517f 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/CreateAndSendTrackTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/CreateAndSendTrackTest.java @@ -161,7 +161,7 @@ public class CreateAndSendTrackTest extends ActivityInstrumentationTestCase2