X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Fdata%2FTrack.java;h=9b88ade102519207d2bb730a44edc9b477386157;hb=140e9d165f85c3d4f0435a311e091209313faa2a;hp=08168d1fb6c348a43cc97eff367021b9c7241ab8;hpb=112bb0c9b46894adca9a33ed8c99ea712b253185;p=GpsPrune.git diff --git a/tim/prune/data/Track.java b/tim/prune/data/Track.java index 08168d1..9b88ade 100644 --- a/tim/prune/data/Track.java +++ b/tim/prune/data/Track.java @@ -2,8 +2,8 @@ package tim.prune.data; import java.util.List; -import tim.prune.Config; import tim.prune.UpdateMessageBroker; +import tim.prune.config.Config; import tim.prune.function.edit.FieldEdit; import tim.prune.function.edit.FieldEditList; import tim.prune.gui.map.MapUtils; @@ -101,6 +101,23 @@ public class Track _scaled = false; } + /** + * Request that a rescale be done to recalculate derived values + */ + public void requestRescale() + { + _scaled = false; + } + + /** + * Extend the track's field list with the given additional fields + * @param inFieldList list of fields to be added + */ + public void extendFieldList(FieldList inFieldList) + { + _masterFieldList = _masterFieldList.merge(inFieldList); + } + ////////////////// Modification methods ////////////////////// @@ -275,9 +292,10 @@ public class Track * @param inStart start of range * @param inEnd end of range * @param inOffset offset to add (-ve to subtract) + * @param inUndo true for undo operation * @return true on success */ - public boolean addTimeOffset(int inStart, int inEnd, long inOffset) + public boolean addTimeOffset(int inStart, int inEnd, long inOffset, boolean inUndo) { // sanity check if (inStart < 0 || inEnd < 0 || inStart >= inEnd || inEnd >= _numPoints) { @@ -293,6 +311,7 @@ public class Track // This point has a timestamp so add the offset to it foundTimestamp = true; timestamp.addOffset(inOffset); + _dataPoints[i].setModified(inUndo); } } return foundTimestamp; @@ -324,6 +343,7 @@ public class Track // This point has an altitude so add the offset to it foundAlt = true; alt.addOffset(inOffset, inFormat, inDecimals); + _dataPoints[i].setModified(false); } } // needs to be scaled again @@ -331,8 +351,6 @@ public class Track return foundAlt; } - // TODO: Function to collect and sort photo points by time or photo filename - // TODO: Function to convert waypoint names into timestamps /** * Collect all waypoints to the start or end of the track @@ -733,11 +751,14 @@ public class Track } /** - * @return true if track has altitude data (which are not all zero) + * @return true if track has altitude data */ public boolean hasAltitudeData() { - return getAltitudeRange().getMaximum() > 0; + for (int i=0; i<_numPoints; i++) { + if (_dataPoints[i].hasAltitude()) {return true;} + } + return false; } /** @@ -1120,9 +1141,10 @@ public class Track * Edit the specified point * @param inPoint point to edit * @param inEditList list of edits to make + * @param inUndo true if undo operation, false otherwise * @return true if successful */ - public boolean editPoint(DataPoint inPoint, FieldEditList inEditList) + public boolean editPoint(DataPoint inPoint, FieldEditList inEditList, boolean inUndo) { if (inPoint != null && inEditList != null && inEditList.getNumEdits() > 0) { @@ -1134,7 +1156,7 @@ public class Track { FieldEdit edit = inEditList.getEdit(i); Field editField = edit.getField(); - inPoint.setFieldValue(editField, edit.getValue()); + inPoint.setFieldValue(editField, edit.getValue(), inUndo); // Check that master field list has this field already (maybe point name has been added) if (!_masterFieldList.contains(editField)) { _masterFieldList.extendList(editField);