From 378cae71518fd46a92e1bc28ae5db56388f91414 Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Thu, 30 Aug 2012 13:21:46 -0700 Subject: [PATCH] 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. --- MyTracks/res/values/strings.xml | 4 -- .../apps/mytracks/MarkerListActivity.java | 12 ++++-- .../apps/mytracks/SearchListActivity.java | 36 +++++++++++++----- .../apps/mytracks/TrackDetailActivity.java | 38 +++++++------------ .../apps/mytracks/TrackListActivity.java | 7 +++- .../endtoendtest/CreateAndSendTrackTest.java | 2 +- 6 files changed, 54 insertions(+), 45 deletions(-) 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