Changeset 197
- Timestamp:
- 05/02/08 15:04:09 (5 years ago)
- Location:
- bbtracker/trunk/src/org/bbtracker/mobile
- Files:
-
- 2 edited
-
TrackManager.java (modified) (5 diffs)
-
gui/MainCanvas.java (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
bbtracker/trunk/src/org/bbtracker/mobile/TrackManager.java
r184 r197 51 51 private int state; 52 52 53 // true if no new points are recorded in TRACKING state. 54 private boolean paused; 55 53 56 protected LocationProvider provider; 54 57 … … 77 80 trackInterrupted = false; 78 81 } 82 boolean currentPointChanged; 79 83 if (track != null) { 80 final int pointCount = track.getPointCount(); 81 if (currentPointIndex == pointCount - 1) { 82 // activate the new point only, when the last point is currently selected. 83 currentPointIndex = pointCount; 84 currentPoint = location; 84 currentPointChanged = false; 85 if (!paused) { 86 final int pointCount = track.getPointCount(); 87 if (currentPointIndex == pointCount - 1) { 88 // activate the new point only, when the last point is currently selected. 89 currentPointIndex = pointCount; 90 currentPoint = location; 91 currentPointChanged = true; 92 } 93 if (newSegment) { 94 track.newSegment(); 95 } 96 boundsChanged = track.addPoint(location); 85 97 } 86 boundsChanged = track.addPoint(location);87 98 } else { 88 99 currentPoint = location; 100 currentPointChanged = true; 89 101 } 90 fireNewPoint(currentPoint, boundsChanged, newSegment); 91 fireCurrentPointChanged(); 92 providerStateChanged(provider, provider.getState()); 102 fireNewPoint(location, boundsChanged, newSegment); 103 if (currentPointChanged) { 104 fireCurrentPointChanged(); 105 } 93 106 } else { 94 107 fireNewPoint(null, false, false); … … 97 110 98 111 public void providerStateChanged(final LocationProvider provider, final int newState) { 99 // TODO Auto-generated method stub 100 112 // noop 101 113 } 102 114 }; … … 182 194 } 183 195 return changed; 196 } 197 198 public void pauseTracking() { 199 if (state != STATE_TRACKING) { 200 throw new IllegalStateException("Not in tracking state! Can't pause tracking!"); 201 } 202 paused = true; 203 final int pc = track.getPointCount(); 204 if (track != null && pc > 0) { 205 final TrackPoint p = track.getPoint(pc - 1); 206 if (p.getName() == null) { 207 p.setName("paused"); 208 } 209 } 210 } 211 212 public void continueTracking() { 213 if (state != STATE_TRACKING) { 214 throw new IllegalStateException("Not in tracking state! Can't continue tracking!"); 215 } 216 trackInterrupted = true; 217 paused = false; 218 } 219 220 public boolean isPaused() { 221 return paused; 184 222 } 185 223 … … 224 262 track = new Track(name); 225 263 state = STATE_TRACKING; 264 paused = false; 226 265 227 266 currentPointIndex = -1; -
bbtracker/trunk/src/org/bbtracker/mobile/gui/MainCanvas.java
r194 r197 65 65 private final Command stopTrackingCommand; 66 66 67 private final Command pauseTrackingCommand; 68 69 private final Command continueTrackingCommand; 70 67 71 private final Command tracksCommand; 68 72 … … 101 105 newTrackCommand = new Command("Start Track", Command.SCREEN, 2); 102 106 stopTrackingCommand = new Command("Stop Track", Command.STOP, 3); 103 tracksCommand = new Command("Tracks", Command.SCREEN, 4); 104 optionsCommand = new Command("Options", Command.SCREEN, 5); 105 aboutCommand = new Command("About", Command.SCREEN, 6); 107 pauseTrackingCommand = new Command("Pause Track", Command.SCREEN, 4); 108 continueTrackingCommand = new Command("Continue Track", Command.SCREEN, 4); 109 tracksCommand = new Command("Tracks", Command.SCREEN, 5); 110 optionsCommand = new Command("Options", Command.SCREEN, 6); 111 aboutCommand = new Command("About", Command.SCREEN, 7); 106 112 // #ifndef AVOID_FILE_API 107 113 exportCommand = new Command("Export Track", Command.SCREEN, 1); … … 149 155 protected void setStatusMessage(final String statusMessage, final int duration) { 150 156 this.statusMessage = statusMessage; 151 statusMessageEndTime = System.currentTimeMillis() + duration; 152 BBTracker.getTimer().schedule(new RepaintTask(), duration + 10); 157 if (duration != -1) { 158 statusMessageEndTime = System.currentTimeMillis() + duration; 159 BBTracker.getTimer().schedule(new RepaintTask(), duration + 10); 160 } else { 161 statusMessageEndTime = Long.MAX_VALUE; 162 } 153 163 repaint(); 154 164 } … … 211 221 setStatusMessage("Static Track"); 212 222 removeCommand(stopTrackingCommand); 223 removeCommand(pauseTrackingCommand); 224 removeCommand(continueTrackingCommand); 213 225 removeCommand(markPointCommand); 214 226 // #ifndef AVOID_FILE_API … … 219 231 setStatusMessage("Tracking"); 220 232 addCommand(stopTrackingCommand); 233 addCommand(pauseTrackingCommand); 221 234 addCommand(markPointCommand); 222 235 // #ifndef AVOID_FILE_API … … 226 239 default: 227 240 removeCommand(stopTrackingCommand); 241 removeCommand(pauseTrackingCommand); 242 removeCommand(continueTrackingCommand); 243 removeCommand(markPointCommand); 228 244 // #ifndef AVOID_FILE_API 229 245 removeCommand(exportCommand); … … 276 292 } else if (command == markPointCommand) { 277 293 markPointAction(); 294 } else if (command == pauseTrackingCommand) { 295 pauseTrackingAction(); 296 } else if (command == continueTrackingCommand) { 297 continueTrackingAction(); 278 298 } else if (command == switchViewCommand) { 279 299 nextTileConfiguration(); … … 421 441 } 422 442 443 private void pauseTrackingAction() { 444 removeCommand(pauseTrackingCommand); 445 addCommand(continueTrackingCommand); 446 manager.pauseTracking(); 447 setStatusMessage("Paused!", -1); 448 } 449 450 private void continueTrackingAction() { 451 removeCommand(continueTrackingCommand); 452 addCommand(pauseTrackingCommand); 453 manager.continueTracking(); 454 setStatusMessage("Continuing..."); 455 } 456 423 457 protected void keyReleased(final int keyCode) { 424 458 final int gameAction = getGameAction(keyCode);
Note: See TracChangeset
for help on using the changeset viewer.