From aef035923af917e7d90a1e08d4609ee8baa3ef56 Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Wed, 13 Nov 2013 17:34:09 -0800 Subject: [PATCH] Update calorie when weight changes --- .../apps/mytracks/TrackDetailActivity.java | 4 ++-- .../apps/mytracks/TrackEditActivity.java | 9 +++++++-- .../ChooseActivityTypeDialogFragment.java | 18 +++++++++++++----- .../android/apps/mytracks/util/TrackUtils.java | 10 +++++----- 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java b/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java index 2a0590f40..6c625e604 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java @@ -626,11 +626,11 @@ public class TrackDetailActivity extends AbstractSendToGoogleActivity } @Override - public void onChooseActivityTypeDone(String iconValue) { + public void onChooseActivityTypeDone(String iconValue, boolean newWeight) { Track track = myTracksProviderUtils.getTrack(trackId); String category = getString(TrackIconUtils.getIconActivityType(iconValue)); TrackUtils.updateTrack( - this, track, null, category, null, myTracksProviderUtils, trackRecordingServiceConnection); + this, track, null, category, null, myTracksProviderUtils, trackRecordingServiceConnection, newWeight); // Add toast if cannot calculate calorie if (CalorieUtils.getActivityType(this, category) == ActivityType.INVALID) { diff --git a/MyTracks/src/com/google/android/apps/mytracks/TrackEditActivity.java b/MyTracks/src/com/google/android/apps/mytracks/TrackEditActivity.java index bbac28683..b4f74ccb8 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/TrackEditActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/TrackEditActivity.java @@ -64,6 +64,8 @@ public class TrackEditActivity extends AbstractMyTracksActivity private AutoCompleteTextView activityType; private Spinner activityTypeIcon; private EditText description; + + private boolean newWeight = false; @Override protected void onCreate(Bundle bundle) { @@ -153,7 +155,7 @@ public class TrackEditActivity extends AbstractMyTracksActivity public void onClick(View v) { TrackUtils.updateTrack(TrackEditActivity.this, track, name.getText().toString(), activityType.getText().toString(), description.getText().toString(), - myTracksProviderUtils, trackRecordingServiceConnection); + myTracksProviderUtils, trackRecordingServiceConnection, newWeight); finish(); } }); @@ -208,7 +210,10 @@ public class TrackEditActivity extends AbstractMyTracksActivity } @Override - public void onChooseActivityTypeDone(String value) { + public void onChooseActivityTypeDone(String value, boolean newWeight) { + if (!this.newWeight) { + this.newWeight = newWeight; + } setActivityTypeIcon(value); activityType.setText(getString(TrackIconUtils.getIconActivityType(value))); } diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseActivityTypeDialogFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseActivityTypeDialogFragment.java index 9a41024bb..3536f28fa 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseActivityTypeDialogFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseActivityTypeDialogFragment.java @@ -55,7 +55,7 @@ public class ChooseActivityTypeDialogFragment extends DialogFragment { /** * Called when choose activity type is done. */ - public void onChooseActivityTypeDone(String iconValue); + public void onChooseActivityTypeDone(String iconValue, boolean newWeight); } public static final String CHOOSE_ACTIVITY_TYPE_DIALOG_TAG = "chooseActivityType"; @@ -67,6 +67,7 @@ public class ChooseActivityTypeDialogFragment extends DialogFragment { private AlertDialog alertDialog; private View weightContainer; private TextView weight; + private String weightValue; public static ChooseActivityTypeDialogFragment newInstance(String category) { Bundle bundle = new Bundle(); @@ -127,11 +128,17 @@ public class ChooseActivityTypeDialogFragment extends DialogFragment { @Override public void onClick(DialogInterface dialog, int which) { + boolean newWeight = false; if (weightContainer.getVisibility() == View.VISIBLE) { - PreferencesUtils.storeWeightValue(getActivity(), weight.getText().toString()); + String newValue = weight.getText().toString(); + if (!newValue.equals(weightValue)) { + newWeight = true; + PreferencesUtils.storeWeightValue(getActivity(), newValue); + } } int selected = imageAdapter.getSelected(); - caller.onChooseActivityTypeDone(TrackIconUtils.getAllIconValues().get(selected)); + caller.onChooseActivityTypeDone( + TrackIconUtils.getAllIconValues().get(selected), newWeight); } }).setTitle(R.string.track_edit_activity_type_hint).setView(view).create(); alertDialog.setOnShowListener(new DialogInterface.OnShowListener() { @@ -145,8 +152,9 @@ public class ChooseActivityTypeDialogFragment extends DialogFragment { imageAdapter.notifyDataSetChanged(); } updateWeightContainer(position); - double weightValue = PreferencesUtils.getWeightDisplayValue(getActivity()); - weight.setText(StringUtils.formatWeight(weightValue)); + double weightDisplayValue = PreferencesUtils.getWeightDisplayValue(getActivity()); + weightValue = StringUtils.formatWeight(weightDisplayValue); + weight.setText(weightValue); } }); return alertDialog; diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/TrackUtils.java b/MyTracks/src/com/google/android/apps/mytracks/util/TrackUtils.java index cc37b0f94..b838bb200 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/util/TrackUtils.java +++ b/MyTracks/src/com/google/android/apps/mytracks/util/TrackUtils.java @@ -34,17 +34,17 @@ public class TrackUtils { public static void updateTrack(Context context, Track track, String name, String category, String description, MyTracksProviderUtils myTracksProviderUtils, - TrackRecordingServiceConnection trackRecordingServiceConnection) { + TrackRecordingServiceConnection trackRecordingServiceConnection, boolean newWeight) { if (name != null) { track.setName(name); } - boolean newCategory = false; + boolean updateCalorie = false; boolean isRecording = false; if (category != null) { - newCategory = !category.equals(track.getCategory()); + updateCalorie = !category.equals(track.getCategory()) || newWeight; track.setCategory(category); track.setIcon(TrackIconUtils.getIconValue(context, category)); - if (newCategory) { + if (updateCalorie) { isRecording = track.getId() == PreferencesUtils.getLong(context, R.string.recording_track_id_key); if (!isRecording) { @@ -61,7 +61,7 @@ public class TrackUtils { track.setModifiedTime(System.currentTimeMillis()); myTracksProviderUtils.updateTrack(track); - if (newCategory && isRecording) { + if (updateCalorie && isRecording) { // Update calorie through track recording service TrackRecordingServiceConnectionUtils.updateCalorie(trackRecordingServiceConnection); }