| 1 | Index: C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/BBTracker.java
|
|---|
| 2 | ===================================================================
|
|---|
| 3 | --- C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/BBTracker.java (revision 109)
|
|---|
| 4 | +++ C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/BBTracker.java (working copy)
|
|---|
| 5 | @@ -132,6 +132,15 @@
|
|---|
| 6 | public static Timer getTimer() { |
|---|
| 7 | return instance.timer; |
|---|
| 8 | } |
|---|
| 9 | + |
|---|
| 10 | + public void resetApp(){ |
|---|
| 11 | + firstStart = true; |
|---|
| 12 | + try { |
|---|
| 13 | + startApp(); |
|---|
| 14 | + } catch (MIDletStateChangeException e) { |
|---|
| 15 | + e.printStackTrace(); |
|---|
| 16 | + } |
|---|
| 17 | + } |
|---|
| 18 | |
|---|
| 19 | public static void nonFatal(final Throwable t, final String action, final Displayable next) { |
|---|
| 20 | log(BBTracker.class, t, "non-fatal " + action); |
|---|
| 21 | Index: C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/FileTrackStore.java
|
|---|
| 22 | ===================================================================
|
|---|
| 23 | --- C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/FileTrackStore.java (revision 109)
|
|---|
| 24 | +++ C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/FileTrackStore.java (working copy)
|
|---|
| 25 | @@ -139,7 +139,9 @@
|
|---|
| 26 | } |
|---|
| 27 | |
|---|
| 28 | private String getTrackDirectory() throws TrackStoreException { |
|---|
| 29 | + //Updated 2007 SIB to store in BBT Directory |
|---|
| 30 | final String dir = Preferences.getInstance().getTrackDirectory(); |
|---|
| 31 | + //End Update 2007 SIB |
|---|
| 32 | if (dir == null) { |
|---|
| 33 | throw new TrackStoreException("No track directory set, please configure it on the options screen!"); |
|---|
| 34 | } |
|---|
| 35 | Index: C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/Preferences.java
|
|---|
| 36 | ===================================================================
|
|---|
| 37 | --- C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/Preferences.java (revision 109)
|
|---|
| 38 | +++ C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/Preferences.java (working copy)
|
|---|
| 39 | @@ -95,6 +95,10 @@
|
|---|
| 40 | private int detailsFontSize = Font.SIZE_MEDIUM; |
|---|
| 41 | |
|---|
| 42 | private String trackDirectory; |
|---|
| 43 | + |
|---|
| 44 | + //Added 2007 SIB |
|---|
| 45 | + private String exportDirectory; |
|---|
| 46 | + //End Added 2007 SIB |
|---|
| 47 | |
|---|
| 48 | private UnitConverter unitConverter; |
|---|
| 49 | |
|---|
| 50 | @@ -120,6 +124,12 @@
|
|---|
| 51 | public String getTrackDirectory() { |
|---|
| 52 | return trackDirectory; |
|---|
| 53 | } |
|---|
| 54 | + |
|---|
| 55 | + //Added 2007 SIB |
|---|
| 56 | + public String getExportDirectory() { |
|---|
| 57 | + return exportDirectory; |
|---|
| 58 | + } |
|---|
| 59 | + //End Added 2007 SIB |
|---|
| 60 | |
|---|
| 61 | public void setTrackDirectory(final String trackDirectory) { |
|---|
| 62 | if (trackDirectory == null || trackDirectory.length() == 0) { |
|---|
| 63 | @@ -131,6 +141,19 @@
|
|---|
| 64 | } |
|---|
| 65 | } |
|---|
| 66 | } |
|---|
| 67 | + |
|---|
| 68 | + //Added 2007 SIB |
|---|
| 69 | + public void setExportDirectory(final String exportDirectory) { |
|---|
| 70 | + if (exportDirectory == null || exportDirectory.length() == 0) { |
|---|
| 71 | + this.exportDirectory = null; |
|---|
| 72 | + } else { |
|---|
| 73 | + this.exportDirectory = exportDirectory; |
|---|
| 74 | + if (!this.exportDirectory.endsWith("/")) { |
|---|
| 75 | + this.exportDirectory += "/"; |
|---|
| 76 | + } |
|---|
| 77 | + } |
|---|
| 78 | + } |
|---|
| 79 | + //End Added 2007 SIB |
|---|
| 80 | |
|---|
| 81 | public void setExportFormat(final int index, final boolean value) { |
|---|
| 82 | if (index >= EXPORT_FORMATS.length || index < 0) { |
|---|
| 83 | @@ -220,11 +243,18 @@
|
|---|
| 84 | startAction = in.readShort(); |
|---|
| 85 | sampleInterval = in.readInt(); |
|---|
| 86 | trackNumber = in.readInt(); |
|---|
| 87 | - if (in.readByte() != 0) { |
|---|
| 88 | + if (in.readByte() == 1) { |
|---|
| 89 | trackDirectory = in.readUTF(); |
|---|
| 90 | } else { |
|---|
| 91 | trackDirectory = null; |
|---|
| 92 | } |
|---|
| 93 | + //Added 2007 SIB |
|---|
| 94 | + if (in.readByte() == 3) { |
|---|
| 95 | + exportDirectory = in.readUTF(); |
|---|
| 96 | + } else { |
|---|
| 97 | + exportDirectory = null; |
|---|
| 98 | + } |
|---|
| 99 | + //End Added 2007 SIB |
|---|
| 100 | exportFormats = in.readInt(); |
|---|
| 101 | units = in.readInt(); |
|---|
| 102 | statusFontSize = in.readInt(); |
|---|
| 103 | @@ -268,11 +298,24 @@
|
|---|
| 104 | out.writeShort(startAction); |
|---|
| 105 | out.writeInt(sampleInterval); |
|---|
| 106 | out.writeInt(trackNumber); |
|---|
| 107 | - if (trackDirectory == null) { |
|---|
| 108 | - out.writeByte(0); |
|---|
| 109 | - } else { |
|---|
| 110 | + if (trackDirectory == null && exportDirectory != null){ |
|---|
| 111 | out.writeByte(1); |
|---|
| 112 | + out.writeUTF(exportDirectory); |
|---|
| 113 | + out.writeByte(3); |
|---|
| 114 | + out.writeUTF(exportDirectory); |
|---|
| 115 | + } else if (trackDirectory != null & exportDirectory == null){ |
|---|
| 116 | + out.writeByte(1); |
|---|
| 117 | out.writeUTF(trackDirectory); |
|---|
| 118 | + out.writeByte(3); |
|---|
| 119 | + out.writeUTF(trackDirectory); |
|---|
| 120 | + } else if (trackDirectory != null && exportDirectory != null){ |
|---|
| 121 | + out.writeByte(1); |
|---|
| 122 | + out.writeUTF(trackDirectory); |
|---|
| 123 | + out.writeByte(3); |
|---|
| 124 | + out.writeUTF(exportDirectory); |
|---|
| 125 | + } else { |
|---|
| 126 | + out.writeByte(0); |
|---|
| 127 | + out.writeByte(2); |
|---|
| 128 | } |
|---|
| 129 | out.writeInt(exportFormats); |
|---|
| 130 | out.writeInt(units); |
|---|
| 131 | Index: C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/StatusTile.java
|
|---|
| 132 | ===================================================================
|
|---|
| 133 | --- C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/StatusTile.java (revision 109)
|
|---|
| 134 | +++ C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/StatusTile.java (working copy)
|
|---|
| 135 | @@ -67,6 +67,7 @@
|
|---|
| 136 | |
|---|
| 137 | private int pointWidth; |
|---|
| 138 | |
|---|
| 139 | + |
|---|
| 140 | private boolean twoLineLayout = true; |
|---|
| 141 | |
|---|
| 142 | public StatusTile(final TrackManager manager) { |
|---|
| 143 | @@ -123,6 +124,7 @@
|
|---|
| 144 | float courseValue = Float.NaN; |
|---|
| 145 | float elevationValue = Float.NaN; |
|---|
| 146 | double lengthValue = Double.NaN; |
|---|
| 147 | + String timeString = "-"; |
|---|
| 148 | if (p != null) { |
|---|
| 149 | lonValue = p.getLongitude(); |
|---|
| 150 | latValue = p.getLatitude(); |
|---|
| 151 | @@ -132,8 +134,12 @@
|
|---|
| 152 | } |
|---|
| 153 | if (track != null) { |
|---|
| 154 | lengthValue = track.getLength(); |
|---|
| 155 | + if (p != null) { |
|---|
| 156 | + final long offset = track.getPointOffset(p); |
|---|
| 157 | + timeString = Utils.durationToString(offset); |
|---|
| 158 | + } |
|---|
| 159 | } |
|---|
| 160 | - |
|---|
| 161 | + |
|---|
| 162 | final String lon = Utils.longitudeToString(lonValue); |
|---|
| 163 | final String lat = Utils.latitudeToString(latValue); |
|---|
| 164 | final String course = Utils.courseToHeadingString(courseValue); |
|---|
| 165 | @@ -170,20 +176,28 @@
|
|---|
| 166 | int lengthY; |
|---|
| 167 | final int pointX; |
|---|
| 168 | int pointY; |
|---|
| 169 | + int timeY; |
|---|
| 170 | |
|---|
| 171 | if (twoLineLayout) { |
|---|
| 172 | lengthX = width - MARGIN; |
|---|
| 173 | lengthY = line1; |
|---|
| 174 | pointX = lengthX; |
|---|
| 175 | pointY = line2; |
|---|
| 176 | + timeY = line2; |
|---|
| 177 | } else { |
|---|
| 178 | lengthX = width / 2; |
|---|
| 179 | lengthY = line2 + font.getHeight(); |
|---|
| 180 | pointX = width - MARGIN; |
|---|
| 181 | pointY = lengthY; |
|---|
| 182 | + //Added 2007 SIB |
|---|
| 183 | + timeY = lengthY; |
|---|
| 184 | + //End Added 2007 SIB |
|---|
| 185 | } |
|---|
| 186 | g.drawString(length, lengthX, lengthY, Graphics.TOP | Graphics.RIGHT); |
|---|
| 187 | g.drawString(point, pointX, pointY, Graphics.TOP | Graphics.RIGHT); |
|---|
| 188 | + //Added 2007 SIB |
|---|
| 189 | + g.drawString(timeString, 1, timeY, Graphics.TOP | Graphics.LEFT); |
|---|
| 190 | + //End Added 2007 SIB |
|---|
| 191 | } |
|---|
| 192 | |
|---|
| 193 | public void showNotify() { |
|---|
| 194 | Index: C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/DetailsTile.java
|
|---|
| 195 | ===================================================================
|
|---|
| 196 | --- C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/DetailsTile.java (revision 109)
|
|---|
| 197 | +++ C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/DetailsTile.java (working copy)
|
|---|
| 198 | @@ -45,6 +45,8 @@
|
|---|
| 199 | private static final String DISTANCE_LABEL = "Distance: ";
|
|---|
| 200 |
|
|---|
| 201 | private static final String SPEED_LABEL = "Speed: ";
|
|---|
| 202 | +
|
|---|
| 203 | + private static final String PACE_LABEL = "Pace: ";
|
|---|
| 204 |
|
|---|
| 205 | private static final String POINT_LABEL = "Point: ";
|
|---|
| 206 |
|
|---|
| 207 | @@ -74,6 +76,7 @@
|
|---|
| 208 | updateLabeWidth(SPEED_LABEL);
|
|---|
| 209 | updateLabeWidth(POINT_LABEL);
|
|---|
| 210 | updateLabeWidth(NAME_LABEL);
|
|---|
| 211 | + updateLabeWidth(PACE_LABEL);
|
|---|
| 212 | }
|
|---|
| 213 |
|
|---|
| 214 | private void updateLabeWidth(final String label) {
|
|---|
| 215 | Index: C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/TracksForm.java
|
|---|
| 216 | ===================================================================
|
|---|
| 217 | --- C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/TracksForm.java (revision 109)
|
|---|
| 218 | +++ C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/TracksForm.java (working copy)
|
|---|
| 219 | @@ -135,7 +135,7 @@
|
|---|
| 220 | BBTracker.getInstance().showMainCanvas(); |
|---|
| 221 | } else if (command == exportCommand) { |
|---|
| 222 | final Preferences preferences = Preferences.getInstance(); |
|---|
| 223 | - final String dir = preferences.getTrackDirectory(); |
|---|
| 224 | + final String dir = preferences.getExportDirectory(); |
|---|
| 225 | if (dir == null) { |
|---|
| 226 | final Alert alert = new Alert("No track directory defined!", |
|---|
| 227 | "Please define an export directory in the options screen.", null, AlertType.WARNING); |
|---|
| 228 | Index: C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/SummaryTile.java
|
|---|
| 229 | ===================================================================
|
|---|
| 230 | --- C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/SummaryTile.java (revision 0)
|
|---|
| 231 | +++ C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/SummaryTile.java (revision 0)
|
|---|
| 232 | @@ -0,0 +1,196 @@
|
|---|
| 233 | +/*
|
|---|
| 234 | + * Copyright 2007 SIB
|
|---|
| 235 | + * Copyright 2007 Joachim Sauer
|
|---|
| 236 | + *
|
|---|
| 237 | + * This file is part of bbTracker.
|
|---|
| 238 | + *
|
|---|
| 239 | + * bbTracker is free software; you can redistribute it and/or modify
|
|---|
| 240 | + * it under the terms of the GNU General Public License version 2 as
|
|---|
| 241 | + * published by the Free Software Foundation.
|
|---|
| 242 | + *
|
|---|
| 243 | + * bbTracker is distributed in the hope that it will be useful,
|
|---|
| 244 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|---|
| 245 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|---|
| 246 | + * GNU General Public License for more details.
|
|---|
| 247 | + *
|
|---|
| 248 | + * You should have received a copy of the GNU General Public License
|
|---|
| 249 | + * along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|---|
| 250 | + */
|
|---|
| 251 | +package org.bbtracker.mobile.gui;
|
|---|
| 252 | +
|
|---|
| 253 | +import java.util.Date;
|
|---|
| 254 | +
|
|---|
| 255 | +import javax.microedition.lcdui.Font;
|
|---|
| 256 | +import javax.microedition.lcdui.Graphics;
|
|---|
| 257 | +
|
|---|
| 258 | +import org.bbtracker.Track;
|
|---|
| 259 | +import org.bbtracker.TrackPoint;
|
|---|
| 260 | +import org.bbtracker.UnitConverter;
|
|---|
| 261 | +import org.bbtracker.Utils;
|
|---|
| 262 | +import org.bbtracker.mobile.Preferences;
|
|---|
| 263 | +import org.bbtracker.mobile.TrackManager;
|
|---|
| 264 | +
|
|---|
| 265 | +public class SummaryTile extends Tile {
|
|---|
| 266 | +
|
|---|
| 267 | + private static final String MAX_ELEVATION_LABEL = "Max Elev: ";
|
|---|
| 268 | +
|
|---|
| 269 | + private static final String MIN_ELEVATION_LABEL = "Min Elev: ";
|
|---|
| 270 | +
|
|---|
| 271 | + private static final String GAIN_ELEVATION_LABEL = "Total Gain: ";
|
|---|
| 272 | +
|
|---|
| 273 | + private static final String TIME_LABEL = "Time: ";
|
|---|
| 274 | +
|
|---|
| 275 | + private static final String START_TIME_LABEL = "Start Time: ";
|
|---|
| 276 | +
|
|---|
| 277 | + private static final String END_TIME_LABEL = "End Time: ";
|
|---|
| 278 | +
|
|---|
| 279 | + private static final String DISTANCE_LABEL = "Distance: ";
|
|---|
| 280 | +
|
|---|
| 281 | + private static final String MAX_SPEED_LABEL = "Max Speed: ";
|
|---|
| 282 | +
|
|---|
| 283 | + private static final String AVG_SPEED_LABEL = "Avg Speed: ";
|
|---|
| 284 | +
|
|---|
| 285 | + private static final String POINTS_LABEL = "Points: ";
|
|---|
| 286 | +
|
|---|
| 287 | + private static final String NAME_LABEL = "Name: ";
|
|---|
| 288 | +
|
|---|
| 289 | + private static final int MARGIN = 2;
|
|---|
| 290 | +
|
|---|
| 291 | + private final TrackManager manager;
|
|---|
| 292 | +
|
|---|
| 293 | + private Font font;
|
|---|
| 294 | +
|
|---|
| 295 | + private int labelWidth;
|
|---|
| 296 | +
|
|---|
| 297 | + public SummaryTile(final TrackManager manager) {
|
|---|
| 298 | + this.manager = manager;
|
|---|
| 299 | + setFontSize(Font.SIZE_SMALL);
|
|---|
| 300 | + }
|
|---|
| 301 | +
|
|---|
| 302 | + private void setFontSize(final int fontSize) {
|
|---|
| 303 | + font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, fontSize);
|
|---|
| 304 | + labelWidth = 0;
|
|---|
| 305 | + updateLabeWidth(MAX_ELEVATION_LABEL);
|
|---|
| 306 | + updateLabeWidth(MIN_ELEVATION_LABEL);
|
|---|
| 307 | + updateLabeWidth(GAIN_ELEVATION_LABEL);
|
|---|
| 308 | + updateLabeWidth(TIME_LABEL);
|
|---|
| 309 | + updateLabeWidth(START_TIME_LABEL);
|
|---|
| 310 | + updateLabeWidth(END_TIME_LABEL);
|
|---|
| 311 | + updateLabeWidth(DISTANCE_LABEL);
|
|---|
| 312 | + updateLabeWidth(MAX_SPEED_LABEL);
|
|---|
| 313 | + updateLabeWidth(AVG_SPEED_LABEL);
|
|---|
| 314 | + updateLabeWidth(POINTS_LABEL);
|
|---|
| 315 | + updateLabeWidth(NAME_LABEL);
|
|---|
| 316 | + }
|
|---|
| 317 | +
|
|---|
| 318 | + private void updateLabeWidth(final String label) {
|
|---|
| 319 | + final int w = font.stringWidth(label);
|
|---|
| 320 | + if (w > labelWidth) {
|
|---|
| 321 | + labelWidth = w;
|
|---|
| 322 | + }
|
|---|
| 323 | + }
|
|---|
| 324 | +
|
|---|
| 325 | + protected void doPaint(final Graphics g) {
|
|---|
| 326 | + final Track track = manager.getTrack();
|
|---|
| 327 | +
|
|---|
| 328 | + g.setColor(0x00ffffff);
|
|---|
| 329 | + g.fillRect(0, 0, width, height);
|
|---|
| 330 | + g.setColor(0x00000000);
|
|---|
| 331 | + g.setFont(font);
|
|---|
| 332 | +
|
|---|
| 333 | + float avgspeedValue = Float.NaN;
|
|---|
| 334 | + float avgmovingspeedValue = Float.NaN;
|
|---|
| 335 | + float maxspeedValue = Float.NaN;
|
|---|
| 336 | + float maxelevationValue = Float.NaN;
|
|---|
| 337 | + float minelevationValue = Float.NaN;
|
|---|
| 338 | + float gainelevationValue = Float.NaN;
|
|---|
| 339 | + double lengthValue = Double.NaN;
|
|---|
| 340 | + int pointcountValue = 0;
|
|---|
| 341 | + int pointcountEndTime = 0;
|
|---|
| 342 | + String timeString = "-";
|
|---|
| 343 | + String pointendTime = "-";
|
|---|
| 344 | + String pointstartTime = "-";
|
|---|
| 345 | + String points = "-";
|
|---|
| 346 | + if (track != null) {
|
|---|
| 347 | + lengthValue = track.getLength();
|
|---|
| 348 | + maxspeedValue = track.getMaxSpeed();
|
|---|
| 349 | + avgspeedValue = track.getAvgSpeed();
|
|---|
| 350 | + avgmovingspeedValue = track.getAvgMovingSpeed();
|
|---|
| 351 | + maxelevationValue = track.getMaxElevation();
|
|---|
| 352 | + minelevationValue = track.getMinElevation();
|
|---|
| 353 | + gainelevationValue = track.getElevationGain();
|
|---|
| 354 | + pointcountValue = track.getPointCount();
|
|---|
| 355 | + points = pointcountValue + "";
|
|---|
| 356 | + if (track.getPointCount() > 0) {
|
|---|
| 357 | + final TrackPoint lastPoint = track.getPoint(track.getPointCount() - 1);
|
|---|
| 358 | + final long duration = track.getPointOffset(lastPoint);
|
|---|
| 359 | + timeString = Utils.durationToString(duration);
|
|---|
| 360 | + pointcountEndTime = track.getPointCount() - 1;
|
|---|
| 361 | + TrackPoint pEnd = track.getPoint(pointcountEndTime);
|
|---|
| 362 | + pointendTime = new Date(pEnd.getTimestamp()).toString().substring(11, 19);
|
|---|
| 363 | + TrackPoint pStart = track.getPoint(0);
|
|---|
| 364 | + pointstartTime = new Date(pStart.getTimestamp()).toString().substring(11, 19);
|
|---|
| 365 | + }
|
|---|
| 366 | + }
|
|---|
| 367 | +
|
|---|
| 368 | + final String trackName;
|
|---|
| 369 | + if (track == null) {
|
|---|
| 370 | + trackName = "-";
|
|---|
| 371 | + } else {
|
|---|
| 372 | + if (manager.getState() == TrackManager.STATE_STATIC) {
|
|---|
| 373 | + trackName = track.getName() + " (static)";
|
|---|
| 374 | + } else {
|
|---|
| 375 | + trackName = track.getName();
|
|---|
| 376 | + }
|
|---|
| 377 | + }
|
|---|
| 378 | +
|
|---|
| 379 | + final UnitConverter unit = Preferences.getInstance().getUnitsConverter();
|
|---|
| 380 | + final String maxspeed = unit.speedToString(maxspeedValue);
|
|---|
| 381 | + final String avgspeed = unit.speedToString(avgspeedValue) + " (" + unit.speedToString(avgmovingspeedValue) + ")";
|
|---|
| 382 | + final String maxelevation = unit.elevationToString(maxelevationValue);
|
|---|
| 383 | + final String minelevation = unit.elevationToString(minelevationValue);
|
|---|
| 384 | + final String gainelevation = unit.elevationToString(gainelevationValue);
|
|---|
| 385 | + final String length = unit.distanceToString(lengthValue);
|
|---|
| 386 | +
|
|---|
| 387 | + final int fontHeight = font.getHeight();
|
|---|
| 388 | + final int x = MARGIN + labelWidth;
|
|---|
| 389 | + int y = MARGIN;
|
|---|
| 390 | +
|
|---|
| 391 | + g.drawString(NAME_LABEL, MARGIN, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 392 | + g.drawString(trackName, x, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 393 | + y += fontHeight;
|
|---|
| 394 | + g.drawString(POINTS_LABEL, MARGIN, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 395 | + g.drawString(points, x, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 396 | + y += fontHeight;
|
|---|
| 397 | + g.drawString(DISTANCE_LABEL, MARGIN, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 398 | + g.drawString(length, x, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 399 | + y += fontHeight;
|
|---|
| 400 | + g.drawString(START_TIME_LABEL, MARGIN, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 401 | + g.drawString(pointstartTime, x, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 402 | + y += fontHeight;
|
|---|
| 403 | + g.drawString(END_TIME_LABEL, MARGIN, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 404 | + g.drawString(pointendTime, x, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 405 | + y += fontHeight;
|
|---|
| 406 | + g.drawString(TIME_LABEL, MARGIN, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 407 | + g.drawString(timeString, x, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 408 | + y += fontHeight * 2;
|
|---|
| 409 | + g.drawString(MAX_SPEED_LABEL, MARGIN, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 410 | + g.drawString(maxspeed, x, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 411 | + y += fontHeight;
|
|---|
| 412 | + g.drawString(AVG_SPEED_LABEL, MARGIN, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 413 | + g.drawString(avgspeed, x, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 414 | + y += fontHeight * 2;
|
|---|
| 415 | + g.drawString(MAX_ELEVATION_LABEL, MARGIN, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 416 | + g.drawString(maxelevation, x, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 417 | + y += fontHeight;
|
|---|
| 418 | + g.drawString(MIN_ELEVATION_LABEL, MARGIN, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 419 | + g.drawString(minelevation, x, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 420 | + y += fontHeight;
|
|---|
| 421 | + g.drawString(GAIN_ELEVATION_LABEL, MARGIN, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 422 | + g.drawString(gainelevation, x, y, Graphics.TOP | Graphics.LEFT);
|
|---|
| 423 | + }
|
|---|
| 424 | +
|
|---|
| 425 | + public void showNotify() {
|
|---|
| 426 | + setFontSize(Preferences.getInstance().getDetailsFontSize());
|
|---|
| 427 | + }
|
|---|
| 428 | +}
|
|---|
| 429 | \ No newline at end of file
|
|---|
| 430 | Index: C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/OptionsForm.java
|
|---|
| 431 | ===================================================================
|
|---|
| 432 | --- C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/OptionsForm.java (revision 109)
|
|---|
| 433 | +++ C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/OptionsForm.java (working copy)
|
|---|
| 434 | @@ -50,13 +50,19 @@
|
|---|
| 435 | private final Command cancelCommand; |
|---|
| 436 | |
|---|
| 437 | private final Command browseCommand; |
|---|
| 438 | + |
|---|
| 439 | + //Added 2007 SIB |
|---|
| 440 | + private final Command browseExportCommand; |
|---|
| 441 | |
|---|
| 442 | + private final TextField exportdirectoryField; |
|---|
| 443 | + //End Added 2007 SIB |
|---|
| 444 | + |
|---|
| 445 | private final TextField sampleField; |
|---|
| 446 | |
|---|
| 447 | private final ChoiceGroup startTypeGroup; |
|---|
| 448 | |
|---|
| 449 | private final TextField directoryField; |
|---|
| 450 | - |
|---|
| 451 | + |
|---|
| 452 | private final ChoiceGroup exportFormatGroup; |
|---|
| 453 | |
|---|
| 454 | private final ChoiceGroup unitsGroup; |
|---|
| 455 | @@ -97,11 +103,18 @@
|
|---|
| 456 | browseCommand = new Command("Browse", Command.ITEM, 1); |
|---|
| 457 | directoryField.setDefaultCommand(browseCommand); |
|---|
| 458 | directoryField.setItemCommandListener(this); |
|---|
| 459 | - |
|---|
| 460 | + |
|---|
| 461 | exportFormatGroup = new ChoiceGroup("Export to: ", Choice.MULTIPLE, Preferences.EXPORT_FORMATS, null); |
|---|
| 462 | for (int i = 0; i < Preferences.EXPORT_FORMATS.length; i++) { |
|---|
| 463 | exportFormatGroup.setSelectedIndex(i, pref.getExportFormat(i)); |
|---|
| 464 | } |
|---|
| 465 | + |
|---|
| 466 | + //Added 2007 SIB |
|---|
| 467 | + exportdirectoryField = new TextField("Export directory: ", pref.getExportDirectory(), 100, TextField.URL); |
|---|
| 468 | + browseExportCommand = new Command("Browse", Command.ITEM, 1); |
|---|
| 469 | + exportdirectoryField.setDefaultCommand(browseExportCommand); |
|---|
| 470 | + exportdirectoryField.setItemCommandListener(this); |
|---|
| 471 | + //End Added 2007 SIB |
|---|
| 472 | |
|---|
| 473 | append(sampleField); |
|---|
| 474 | append(unitsGroup); |
|---|
| 475 | @@ -109,8 +122,13 @@
|
|---|
| 476 | append(detailsFontSizeGroup); |
|---|
| 477 | append(startTypeGroup); |
|---|
| 478 | append(directoryField); |
|---|
| 479 | + //Added 2007 SIB |
|---|
| 480 | + append(""); |
|---|
| 481 | + append(exportdirectoryField); |
|---|
| 482 | + append(""); |
|---|
| 483 | + //End Added 2007 SIB |
|---|
| 484 | append(exportFormatGroup); |
|---|
| 485 | - |
|---|
| 486 | + |
|---|
| 487 | okCommand = new Command("OK", Command.OK, 0); |
|---|
| 488 | cancelCommand = new Command("Cancel", Command.CANCEL, 1); |
|---|
| 489 | |
|---|
| 490 | @@ -185,9 +203,26 @@
|
|---|
| 491 | |
|---|
| 492 | private String validatePreferences() { |
|---|
| 493 | final String trackDir = directoryField.getString(); |
|---|
| 494 | + //Added 2007 SIB |
|---|
| 495 | + final String exportDir = exportdirectoryField.getString(); |
|---|
| 496 | + //End Added 2007 SIB |
|---|
| 497 | if (trackDir == null || trackDir.length() == 0) { |
|---|
| 498 | - return "No track directory has been selected!"; |
|---|
| 499 | - } else { |
|---|
| 500 | + if (exportDir == null || exportDir.length()== 0){ |
|---|
| 501 | + return "No directories have been selected!"; |
|---|
| 502 | + } else { |
|---|
| 503 | + return "No Track Directory has been selected! The Export Directory will be used! (" + exportDir + ")"; |
|---|
| 504 | + } |
|---|
| 505 | + //Added 2007 SIB |
|---|
| 506 | + }else if (exportDir == null || exportDir.length()== 0){ |
|---|
| 507 | + if (trackDir == null || trackDir.length() == 0){ |
|---|
| 508 | + return "No directories have been selected!"; |
|---|
| 509 | + } else { |
|---|
| 510 | + return "No Export Directory has been selected! The Track Directory will be used! (" + trackDir + ")"; |
|---|
| 511 | + } |
|---|
| 512 | + // End Added 2007 SIB |
|---|
| 513 | + // Updated 2007 SIB |
|---|
| 514 | + } else if (trackDir != null){ |
|---|
| 515 | + // End Updated 2007 SIB |
|---|
| 516 | FileConnection connection = null; |
|---|
| 517 | try { |
|---|
| 518 | connection = (FileConnection) Connector.open("file:///" + trackDir, Connector.READ); |
|---|
| 519 | @@ -211,7 +246,33 @@
|
|---|
| 520 | } |
|---|
| 521 | } |
|---|
| 522 | } |
|---|
| 523 | + //Added 2007 SIB |
|---|
| 524 | + } else if (exportDir != null){ |
|---|
| 525 | + FileConnection connection = null; |
|---|
| 526 | + try { |
|---|
| 527 | + connection = (FileConnection) Connector.open("file:///" + exportDir, Connector.READ); |
|---|
| 528 | + if (!connection.exists()) { |
|---|
| 529 | + return "The directory identified by <" + exportDir + "> does not exist."; |
|---|
| 530 | + } else if (!connection.isDirectory()) { |
|---|
| 531 | + return "The file identified by <" + exportDir + "> is not a directory."; |
|---|
| 532 | + } else if (!connection.canWrite()) { |
|---|
| 533 | + return "The directory identified by <" + exportDir + "> is not writeable."; |
|---|
| 534 | + } |
|---|
| 535 | + } catch (final IOException e) { |
|---|
| 536 | + return "Could not verify track directory <" + exportDir + ">: " + e.getMessage(); |
|---|
| 537 | + } catch (final IllegalArgumentException e) { |
|---|
| 538 | + return "Malformed track directory <" + exportDir + ">!"; |
|---|
| 539 | + } finally { |
|---|
| 540 | + if (connection != null) { |
|---|
| 541 | + try { |
|---|
| 542 | + connection.close(); |
|---|
| 543 | + } catch (final IOException ignored) { |
|---|
| 544 | + // ignore |
|---|
| 545 | + } |
|---|
| 546 | + } |
|---|
| 547 | + } |
|---|
| 548 | } |
|---|
| 549 | + //End Added 2007 SIB |
|---|
| 550 | return null; |
|---|
| 551 | } |
|---|
| 552 | |
|---|
| 553 | @@ -228,6 +289,7 @@
|
|---|
| 554 | } |
|---|
| 555 | pref.setStartAction(startTypeGroup.getSelectedIndex()); |
|---|
| 556 | pref.setTrackDirectory(directoryField.getString()); |
|---|
| 557 | + pref.setExportDirectory(exportdirectoryField.getString()); |
|---|
| 558 | BBTracker.initLog(); |
|---|
| 559 | |
|---|
| 560 | for (int i = 0; i < Preferences.EXPORT_FORMATS.length; i++) { |
|---|
| 561 | @@ -251,7 +313,7 @@
|
|---|
| 562 | |
|---|
| 563 | public void commandAction(final Command command, final Item item) { |
|---|
| 564 | if (command == browseCommand) { |
|---|
| 565 | - final BrowseForm browser = new BrowseForm("Save Directory", directoryField.getString()); |
|---|
| 566 | + final BrowseForm browser = new BrowseForm("Save Track Directory", directoryField.getString()); |
|---|
| 567 | final Display display = BBTracker.getDisplay(); |
|---|
| 568 | browser.setCallback(new Runnable() { |
|---|
| 569 | |
|---|
| 570 | @@ -266,5 +328,23 @@
|
|---|
| 571 | }); |
|---|
| 572 | display.setCurrent(browser); |
|---|
| 573 | } |
|---|
| 574 | + //Added 2007 SIB |
|---|
| 575 | + if (command == browseExportCommand) { |
|---|
| 576 | + final BrowseForm browser = new BrowseForm("Save Export Directory", exportdirectoryField.getString()); |
|---|
| 577 | + final Display display = BBTracker.getDisplay(); |
|---|
| 578 | + browser.setCallback(new Runnable() { |
|---|
| 579 | + |
|---|
| 580 | + public void run() { |
|---|
| 581 | + final String selectedPath = browser.getPath(); |
|---|
| 582 | + if (selectedPath != null) { |
|---|
| 583 | + exportdirectoryField.setString(selectedPath); |
|---|
| 584 | + } |
|---|
| 585 | + display.setCurrent(OptionsForm.this); |
|---|
| 586 | + } |
|---|
| 587 | + |
|---|
| 588 | + }); |
|---|
| 589 | + display.setCurrent(browser); |
|---|
| 590 | + } |
|---|
| 591 | + //End Add 2007 SIB |
|---|
| 592 | } |
|---|
| 593 | } |
|---|
| 594 | Index: C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/MainCanvas.java
|
|---|
| 595 | ===================================================================
|
|---|
| 596 | --- C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/MainCanvas.java (revision 109)
|
|---|
| 597 | +++ C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/MainCanvas.java (working copy)
|
|---|
| 598 | @@ -17,8 +17,12 @@
|
|---|
| 599 | */ |
|---|
| 600 | package org.bbtracker.mobile.gui; |
|---|
| 601 | |
|---|
| 602 | +import java.io.IOException; |
|---|
| 603 | +import java.io.OutputStream; |
|---|
| 604 | import java.util.TimerTask; |
|---|
| 605 | |
|---|
| 606 | +import javax.microedition.io.Connector; |
|---|
| 607 | +import javax.microedition.io.file.FileConnection; |
|---|
| 608 | import javax.microedition.lcdui.Alert; |
|---|
| 609 | import javax.microedition.lcdui.AlertType; |
|---|
| 610 | import javax.microedition.lcdui.Canvas; |
|---|
| 611 | @@ -28,11 +32,16 @@
|
|---|
| 612 | import javax.microedition.lcdui.Font; |
|---|
| 613 | import javax.microedition.lcdui.Graphics; |
|---|
| 614 | |
|---|
| 615 | +import org.bbtracker.Track; |
|---|
| 616 | import org.bbtracker.TrackPoint; |
|---|
| 617 | import org.bbtracker.mobile.BBTracker; |
|---|
| 618 | +import org.bbtracker.mobile.Preferences; |
|---|
| 619 | import org.bbtracker.mobile.TrackListener; |
|---|
| 620 | import org.bbtracker.mobile.TrackManager; |
|---|
| 621 | import org.bbtracker.mobile.TrackStore.TrackStoreException; |
|---|
| 622 | +import org.bbtracker.mobile.exporter.GpxTrackExporter; |
|---|
| 623 | +import org.bbtracker.mobile.exporter.KmlTrackExporter; |
|---|
| 624 | +import org.bbtracker.mobile.exporter.TrackExporter; |
|---|
| 625 | |
|---|
| 626 | public class MainCanvas extends Canvas implements TrackListener, CommandListener { |
|---|
| 627 | private static final int DEFAULT_STATUS_TIMEOUT = 5 * 1000; |
|---|
| 628 | @@ -44,13 +53,15 @@
|
|---|
| 629 | private final TrackManager manager; |
|---|
| 630 | |
|---|
| 631 | private final Tile trackTile; |
|---|
| 632 | + |
|---|
| 633 | + private final Tile paceTile; |
|---|
| 634 | |
|---|
| 635 | private final Tile elevationProfileTile; |
|---|
| 636 | |
|---|
| 637 | private final Tile speedProfileTile; |
|---|
| 638 | |
|---|
| 639 | private final StatusTile statusTile; |
|---|
| 640 | - |
|---|
| 641 | + |
|---|
| 642 | private final Tile detailsTile; |
|---|
| 643 | |
|---|
| 644 | private final Command newTrackCommand; |
|---|
| 645 | @@ -66,6 +77,18 @@
|
|---|
| 646 | private final Command aboutCommand; |
|---|
| 647 | |
|---|
| 648 | private final Command exitCommand; |
|---|
| 649 | + |
|---|
| 650 | + //Added 2007 SIB |
|---|
| 651 | + private final Tile summaryTile; |
|---|
| 652 | + |
|---|
| 653 | + private final Command exportCommand; |
|---|
| 654 | + |
|---|
| 655 | + private int canvasView = 0; |
|---|
| 656 | + |
|---|
| 657 | + private final Command detailsViewCommand; |
|---|
| 658 | + |
|---|
| 659 | + private final Command plotterViewCommand; |
|---|
| 660 | + //End Added 2007 SIB |
|---|
| 661 | |
|---|
| 662 | private String statusMessage = null; |
|---|
| 663 | |
|---|
| 664 | @@ -81,14 +104,21 @@
|
|---|
| 665 | speedProfileTile = new SpeedPlotterTile(manager, DataProvider.TIME); |
|---|
| 666 | statusTile = new StatusTile(manager); |
|---|
| 667 | detailsTile = new DetailsTile(manager); |
|---|
| 668 | + summaryTile = new SummaryTile(manager); |
|---|
| 669 | + paceTile = new PaceTile(manager); |
|---|
| 670 | |
|---|
| 671 | - switchViewCommand = new Command("Switch View", Command.SCREEN, 0); |
|---|
| 672 | - newTrackCommand = new Command("New Track", Command.SCREEN, 1); |
|---|
| 673 | - stopTrackingCommand = new Command("Stop tracking", Command.STOP, 2); |
|---|
| 674 | - tracksCommand = new Command("Track Manager", Command.SCREEN, 3); |
|---|
| 675 | + switchViewCommand = new Command("Switch View", Command.SCREEN, 11); |
|---|
| 676 | + newTrackCommand = new Command("Start Track", Command.SCREEN, 1); |
|---|
| 677 | + stopTrackingCommand = new Command("Stop Track", Command.STOP, 2); |
|---|
| 678 | + tracksCommand = new Command("Tracks", Command.SCREEN, 3); |
|---|
| 679 | optionsCommand = new Command("Options", Command.SCREEN, 4); |
|---|
| 680 | aboutCommand = new Command("About", Command.SCREEN, 5); |
|---|
| 681 | - exitCommand = new Command("Exit", Command.EXIT, 6); |
|---|
| 682 | + //Added 2007 SIB |
|---|
| 683 | + exportCommand = new Command("Export Track", Command.SCREEN, 0); |
|---|
| 684 | + detailsViewCommand = new Command("Details View", Command.SCREEN, 9); |
|---|
| 685 | + plotterViewCommand = new Command("Plotter View", Command.SCREEN, 9); |
|---|
| 686 | + //End Added 2007 SIB |
|---|
| 687 | + exitCommand = new Command("Exit", Command.EXIT, 11); |
|---|
| 688 | |
|---|
| 689 | addCommand(switchViewCommand); |
|---|
| 690 | addCommand(newTrackCommand); |
|---|
| 691 | @@ -96,6 +126,7 @@
|
|---|
| 692 | addCommand(optionsCommand); |
|---|
| 693 | addCommand(aboutCommand); |
|---|
| 694 | addCommand(exitCommand); |
|---|
| 695 | + addCommand(detailsViewCommand); |
|---|
| 696 | |
|---|
| 697 | setCommandListener(this); |
|---|
| 698 | |
|---|
| 699 | @@ -181,8 +212,17 @@
|
|---|
| 700 | public void stateChanged(final int newState) { |
|---|
| 701 | if (newState == TrackManager.STATE_TRACKING) { |
|---|
| 702 | addCommand(stopTrackingCommand); |
|---|
| 703 | + //Added 2007 SIB |
|---|
| 704 | + removeCommand(exportCommand); |
|---|
| 705 | + } else if (newState == TrackManager.STATE_STATIC){ |
|---|
| 706 | + removeCommand(stopTrackingCommand); |
|---|
| 707 | + addCommand(exportCommand); |
|---|
| 708 | + //End Added 2007 SIB |
|---|
| 709 | } else { |
|---|
| 710 | removeCommand(stopTrackingCommand); |
|---|
| 711 | + //Added 2007 SIB |
|---|
| 712 | + removeCommand(exportCommand); |
|---|
| 713 | + //End Added 2007 SIB |
|---|
| 714 | } |
|---|
| 715 | updateStatusText(newState); |
|---|
| 716 | for (int i = 0; i < visibleTiles.length && visibleTiles[i] != null; i++) { |
|---|
| 717 | @@ -203,24 +243,42 @@
|
|---|
| 718 | } |
|---|
| 719 | |
|---|
| 720 | private void nextTileConfiguration() { |
|---|
| 721 | - tileConfiguration = (tileConfiguration + 1) % 4; |
|---|
| 722 | - switch (tileConfiguration) { |
|---|
| 723 | - case 0: |
|---|
| 724 | - setMainTile(trackTile, true); |
|---|
| 725 | - setStatusMessage("Track view"); |
|---|
| 726 | - break; |
|---|
| 727 | - case 1: |
|---|
| 728 | - setMainTile(elevationProfileTile, true); |
|---|
| 729 | - setStatusMessage("Elevation over time"); |
|---|
| 730 | - break; |
|---|
| 731 | - case 2: |
|---|
| 732 | - setMainTile(speedProfileTile, true); |
|---|
| 733 | - setStatusMessage("Speed over time"); |
|---|
| 734 | - break; |
|---|
| 735 | - case 3: |
|---|
| 736 | - setMainTile(detailsTile, false); |
|---|
| 737 | - setStatusMessage("Details"); |
|---|
| 738 | - break; |
|---|
| 739 | + if (canvasView == 1){ |
|---|
| 740 | + addCommand(plotterViewCommand); |
|---|
| 741 | + removeCommand(detailsViewCommand); |
|---|
| 742 | + tileConfiguration = (tileConfiguration + 1) % 3; |
|---|
| 743 | + switch (tileConfiguration) { |
|---|
| 744 | + case 0: |
|---|
| 745 | + setMainTile(detailsTile, false); |
|---|
| 746 | + setStatusMessage("Details"); |
|---|
| 747 | + break; |
|---|
| 748 | + case 1: |
|---|
| 749 | + setMainTile(summaryTile, false); |
|---|
| 750 | + setStatusMessage("Summary"); |
|---|
| 751 | + break; |
|---|
| 752 | + case 2: |
|---|
| 753 | + setMainTile(paceTile, false); |
|---|
| 754 | + setStatusMessage("Pace"); |
|---|
| 755 | + break; |
|---|
| 756 | + } |
|---|
| 757 | + } else { |
|---|
| 758 | + removeCommand(plotterViewCommand); |
|---|
| 759 | + addCommand(detailsViewCommand); |
|---|
| 760 | + tileConfiguration = (tileConfiguration + 1) % 3; |
|---|
| 761 | + switch (tileConfiguration) { |
|---|
| 762 | + case 0: |
|---|
| 763 | + setMainTile(trackTile, true); |
|---|
| 764 | + setStatusMessage("Track view"); |
|---|
| 765 | + break; |
|---|
| 766 | + case 1: |
|---|
| 767 | + setMainTile(elevationProfileTile, true); |
|---|
| 768 | + setStatusMessage("Elevation over time"); |
|---|
| 769 | + break; |
|---|
| 770 | + case 2: |
|---|
| 771 | + setMainTile(speedProfileTile, true); |
|---|
| 772 | + setStatusMessage("Speed over time"); |
|---|
| 773 | + break; |
|---|
| 774 | + } |
|---|
| 775 | } |
|---|
| 776 | } |
|---|
| 777 | |
|---|
| 778 | @@ -239,8 +297,15 @@
|
|---|
| 779 | final int state = manager.getState(); |
|---|
| 780 | if (state == TrackManager.STATE_TRACKING) { |
|---|
| 781 | addCommand(stopTrackingCommand); |
|---|
| 782 | - } else { |
|---|
| 783 | + //Added 2007 SIB |
|---|
| 784 | + removeCommand(exportCommand); |
|---|
| 785 | + } else if (state == TrackManager.STATE_STATIC){ |
|---|
| 786 | removeCommand(stopTrackingCommand); |
|---|
| 787 | + addCommand(exportCommand); |
|---|
| 788 | + //End Added 2007 SIB |
|---|
| 789 | + }else { |
|---|
| 790 | + removeCommand(stopTrackingCommand); |
|---|
| 791 | + removeCommand(exportCommand); |
|---|
| 792 | } |
|---|
| 793 | updateStatusText(state); |
|---|
| 794 | } |
|---|
| 795 | @@ -249,7 +314,37 @@
|
|---|
| 796 | if (command == exitCommand) { |
|---|
| 797 | exitAction(); |
|---|
| 798 | } else if (command == switchViewCommand) { |
|---|
| 799 | - nextTileConfiguration(); |
|---|
| 800 | + nextTileConfiguration(); |
|---|
| 801 | + } else if (command == detailsViewCommand) { |
|---|
| 802 | + canvasView = 1; |
|---|
| 803 | + setMainTile(detailsTile, false); |
|---|
| 804 | + setStatusMessage("Details"); |
|---|
| 805 | + } else if (command == plotterViewCommand) { |
|---|
| 806 | + canvasView = 0; |
|---|
| 807 | + setMainTile(trackTile, true); |
|---|
| 808 | + setStatusMessage("Track view"); |
|---|
| 809 | + //Added 2007 SIB |
|---|
| 810 | + }else if (command == exportCommand){ |
|---|
| 811 | + final Preferences preferences = Preferences.getInstance(); |
|---|
| 812 | + final String dir = preferences.getExportDirectory(); |
|---|
| 813 | + final Track track = manager.getTrack(); |
|---|
| 814 | + if (dir == null) { |
|---|
| 815 | + final Alert alert = new Alert("No track directory defined!", |
|---|
| 816 | + "Please define an export directory in the options screen.", null, AlertType.WARNING); |
|---|
| 817 | + BBTracker.alert(alert, this); |
|---|
| 818 | + return; |
|---|
| 819 | + } |
|---|
| 820 | + int count; |
|---|
| 821 | + try { |
|---|
| 822 | + count = exportTrack(dir, track); |
|---|
| 823 | + } catch (final IOException e) { |
|---|
| 824 | + BBTracker.nonFatal(e, "exporting track", this); |
|---|
| 825 | + return; |
|---|
| 826 | + } |
|---|
| 827 | + final Alert alert = new Alert("Finished exporting", "The track " + track.getName() + |
|---|
| 828 | + " has been exported successfully to " + count + " formats!", null, AlertType.INFO); |
|---|
| 829 | + BBTracker.alert(alert, this); |
|---|
| 830 | + //End Added 2007 SIB |
|---|
| 831 | } else { |
|---|
| 832 | final Displayable nextDisplayable; |
|---|
| 833 | if (command == aboutCommand) { |
|---|
| 834 | @@ -381,4 +476,48 @@
|
|---|
| 835 | MainCanvas.this.repaint(); |
|---|
| 836 | } |
|---|
| 837 | } |
|---|
| 838 | + |
|---|
| 839 | + //Added 2007 SIB from code on TracksForm |
|---|
| 840 | + private int exportTrack(final String dir, final Track track) throws IOException { |
|---|
| 841 | + final Preferences pref = Preferences.getInstance(); |
|---|
| 842 | + int exportCount = 0; |
|---|
| 843 | + if (pref.getExportFormat(0)) { |
|---|
| 844 | + export(dir, track, new KmlTrackExporter()); |
|---|
| 845 | + exportCount++; |
|---|
| 846 | + } |
|---|
| 847 | + if (pref.getExportFormat(1)) { |
|---|
| 848 | + export(dir, track, new GpxTrackExporter()); |
|---|
| 849 | + exportCount++; |
|---|
| 850 | + } |
|---|
| 851 | + return exportCount; |
|---|
| 852 | + } |
|---|
| 853 | + |
|---|
| 854 | + private void export(final String dir, final Track track, final TrackExporter exporter) throws IOException { |
|---|
| 855 | + final String fileName = exporter.getFileName(track); |
|---|
| 856 | + final String fullName = dir.endsWith("/") ? dir + fileName : dir + "/" + fileName; |
|---|
| 857 | + FileConnection connection = null; |
|---|
| 858 | + OutputStream out = null; |
|---|
| 859 | + try { |
|---|
| 860 | + connection = (FileConnection) Connector.open("file:///" + fullName, Connector.READ_WRITE); |
|---|
| 861 | + connection.create(); |
|---|
| 862 | + out = connection.openOutputStream(); |
|---|
| 863 | + exporter.export(out, track); |
|---|
| 864 | + } finally { |
|---|
| 865 | + if (out != null) { |
|---|
| 866 | + try { |
|---|
| 867 | + out.close(); |
|---|
| 868 | + } catch (final IOException ignored) { |
|---|
| 869 | + // ignore |
|---|
| 870 | + } |
|---|
| 871 | + } |
|---|
| 872 | + if (connection != null) { |
|---|
| 873 | + try { |
|---|
| 874 | + connection.close(); |
|---|
| 875 | + } catch (final IOException ignored) { |
|---|
| 876 | + // ignore |
|---|
| 877 | + } |
|---|
| 878 | + } |
|---|
| 879 | + } |
|---|
| 880 | + } |
|---|
| 881 | + //End Added 2007 SIB |
|---|
| 882 | }
|
|---|
| 883 | \ No newline at end of file
|
|---|
| 884 | Index: C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/PaceTile.java
|
|---|
| 885 | ===================================================================
|
|---|
| 886 | --- C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/PaceTile.java (revision 0)
|
|---|
| 887 | +++ C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/gui/PaceTile.java (revision 0)
|
|---|
| 888 | @@ -0,0 +1,97 @@
|
|---|
| 889 | +/*
|
|---|
| 890 | + * Copyright 2007 SIB
|
|---|
| 891 | + * Copyright 2007 Joachim Sauer
|
|---|
| 892 | + *
|
|---|
| 893 | + * This file is part of bbTracker.
|
|---|
| 894 | + *
|
|---|
| 895 | + * bbTracker is free software; you can redistribute it and/or modify
|
|---|
| 896 | + * it under the terms of the GNU General Public License version 2 as
|
|---|
| 897 | + * published by the Free Software Foundation.
|
|---|
| 898 | + *
|
|---|
| 899 | + * bbTracker is distributed in the hope that it will be useful,
|
|---|
| 900 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|---|
| 901 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|---|
| 902 | + * GNU General Public License for more details.
|
|---|
| 903 | + *
|
|---|
| 904 | + * You should have received a copy of the GNU General Public License
|
|---|
| 905 | + * along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|---|
| 906 | + */
|
|---|
| 907 | +package org.bbtracker.mobile.gui;
|
|---|
| 908 | +
|
|---|
| 909 | +import javax.microedition.lcdui.*;
|
|---|
| 910 | +
|
|---|
| 911 | +import org.bbtracker.Track;
|
|---|
| 912 | +import org.bbtracker.TrackPoint;
|
|---|
| 913 | +import org.bbtracker.UnitConverter;
|
|---|
| 914 | +import org.bbtracker.Utils;
|
|---|
| 915 | +import org.bbtracker.mobile.Preferences;
|
|---|
| 916 | +import org.bbtracker.mobile.TrackManager;
|
|---|
| 917 | +
|
|---|
| 918 | +public class PaceTile extends Tile {
|
|---|
| 919 | +
|
|---|
| 920 | + private static final int MARGIN = 2;
|
|---|
| 921 | +
|
|---|
| 922 | + private final TrackManager manager;
|
|---|
| 923 | +
|
|---|
| 924 | + private Font font;
|
|---|
| 925 | +
|
|---|
| 926 | + public PaceTile(final TrackManager manager) {
|
|---|
| 927 | + this.manager = manager;
|
|---|
| 928 | + setFontSize(Font.SIZE_LARGE);
|
|---|
| 929 | + }
|
|---|
| 930 | +
|
|---|
| 931 | + private void setFontSize(final int fontSize) {
|
|---|
| 932 | + font = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, fontSize);
|
|---|
| 933 | + }
|
|---|
| 934 | +
|
|---|
| 935 | +
|
|---|
| 936 | + protected void doPaint(final Graphics g) {
|
|---|
| 937 | + final Track track = manager.getTrack();
|
|---|
| 938 | +
|
|---|
| 939 | + g.setColor(0x00ffffff);
|
|---|
| 940 | + g.fillRect(0, 0, width, height);
|
|---|
| 941 | + g.setColor(0x00000000);
|
|---|
| 942 | + g.setFont(font);
|
|---|
| 943 | +
|
|---|
| 944 | + double lengthValue = Double.NaN;
|
|---|
| 945 | + float speedValue = Float.NaN;
|
|---|
| 946 | + float avgspeedValue = Float.NaN;
|
|---|
| 947 | + long duration = 0;
|
|---|
| 948 | + String timeString = "-";
|
|---|
| 949 | + if (track != null) {
|
|---|
| 950 | + lengthValue = track.getLength();
|
|---|
| 951 | + avgspeedValue = track.getAvgSpeed();
|
|---|
| 952 | + if (track.getPointCount() > 0) {
|
|---|
| 953 | + final TrackPoint lastPoint = track.getPoint(track.getPointCount() - 1);
|
|---|
| 954 | + duration = track.getPointOffset(lastPoint);
|
|---|
| 955 | + if (manager.getState() == TrackManager.STATE_TRACKING) {
|
|---|
| 956 | + speedValue = lastPoint.getSpeed();
|
|---|
| 957 | + } else {
|
|---|
| 958 | + speedValue = track.getAvgSpeed();
|
|---|
| 959 | + }
|
|---|
| 960 | + timeString = Utils.durationToString(duration);
|
|---|
| 961 | + }
|
|---|
| 962 | + }
|
|---|
| 963 | +
|
|---|
| 964 | + final UnitConverter unit = Preferences.getInstance().getUnitsConverter();
|
|---|
| 965 | + final String length = unit.distanceToString(lengthValue);
|
|---|
| 966 | + final String pace = unit.paceToString(avgspeedValue);
|
|---|
| 967 | + final String speed = unit.speedToString(speedValue);
|
|---|
| 968 | +
|
|---|
| 969 | + final int fontHeight = font.getHeight();
|
|---|
| 970 | + int x = (width/2);
|
|---|
| 971 | + int y = height/2 - ((fontHeight + MARGIN)*2);
|
|---|
| 972 | +
|
|---|
| 973 | + g.drawString(timeString, x, y, Graphics.TOP | Graphics.HCENTER);
|
|---|
| 974 | + y += fontHeight + MARGIN;
|
|---|
| 975 | + g.drawString(length, x, y, Graphics.TOP | Graphics.HCENTER);
|
|---|
| 976 | + y += fontHeight + MARGIN;
|
|---|
| 977 | + g.drawString(speed, x, y, Graphics.TOP | Graphics.HCENTER);
|
|---|
| 978 | + y += fontHeight + MARGIN;
|
|---|
| 979 | + g.drawString(pace, x, y, Graphics.TOP | Graphics.HCENTER);
|
|---|
| 980 | + y += fontHeight + MARGIN;
|
|---|
| 981 | + }
|
|---|
| 982 | +
|
|---|
| 983 | + public void showNotify() {
|
|---|
| 984 | + }
|
|---|
| 985 | +}
|
|---|
| 986 | \ No newline at end of file
|
|---|
| 987 | Index: C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/exporter/KmlTrackExporter.java
|
|---|
| 988 | ===================================================================
|
|---|
| 989 | --- C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/exporter/KmlTrackExporter.java (revision 109)
|
|---|
| 990 | +++ C:/Projects/bbTracker/stable/0412/bbtracker/src/org/bbtracker/mobile/exporter/KmlTrackExporter.java (working copy)
|
|---|
| 991 | @@ -63,6 +63,7 @@
|
|---|
| 992 | final String maxElevString = unit.elevationToString(track.getMaxElevation()); |
|---|
| 993 | final String minElevString = unit.elevationToString(track.getMinElevation()); |
|---|
| 994 | final String maxSpeedString = unit.speedToString(track.getMaxSpeed()); |
|---|
| 995 | + final String avgSpeedString = unit.speedToString(track.getAvgSpeed());; |
|---|
| 996 | |
|---|
| 997 | w = new OutputStreamWriter(out, "UTF-8"); |
|---|
| 998 | w.write(XML_HEADER); |
|---|
| 999 | @@ -93,6 +94,11 @@
|
|---|
| 1000 | w.write("<tr><td><b>Max Speed: </b>"); |
|---|
| 1001 | w.write(maxSpeedString); |
|---|
| 1002 | w.write("</td></tr>\n"); |
|---|
| 1003 | + //Added New Field 2007 SIB |
|---|
| 1004 | + w.write("<tr><td><b>Average Speed: </b>"); |
|---|
| 1005 | + w.write(avgSpeedString); |
|---|
| 1006 | + w.write("</td></tr>\n"); |
|---|
| 1007 | + //End Added SIB |
|---|
| 1008 | w.write("<tr><td><b>Max Elevation: </b>"); |
|---|
| 1009 | w.write(maxElevString); |
|---|
| 1010 | w.write("</td></tr>\n"); |
|---|