Changeset 14


Ignore:
Timestamp:
07/25/07 21:25:52 (6 years ago)
Author:
saua
Message:

more usefull information display

Location:
bbtracker/trunk/src/org/bbtracker/mobile
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • bbtracker/trunk/src/org/bbtracker/mobile/TrackListener.java

    r4 r14  
    66        public void newPoint(TrackPoint newPoint, boolean boundsChanged, boolean newSegment); 
    77 
     8        public void currentPointChanged(final TrackPoint newPoint, int newIndex); 
     9 
    810        public void stateChanged(int newState); 
    911} 
  • bbtracker/trunk/src/org/bbtracker/mobile/TrackManager.java

    r7 r14  
    3535        private TrackPoint currentPoint; 
    3636 
     37        private int currentPointIndex = -1; 
     38 
    3739        private boolean trackInterrupted; 
    3840 
     
    6062        } 
    6163 
     64        public int getCurrentPointIndex() { 
     65                return currentPointIndex; 
     66        } 
     67 
    6268        public Track getTrack() { 
    6369                return track; 
     
    6874                        return; 
    6975                } 
    70                 boolean boundsChanged = false; 
    71                 boolean newSegment = false; 
    7276                if (location.isValid()) { 
     77                        boolean boundsChanged = false; 
     78                        boolean newSegment = false; 
    7379                        if (trackInterrupted == true) { 
    7480                                newSegment = true; 
     
    7985                                        coordinates.getLongitude(), coordinates.getAltitude(), location.getSpeed(), location.getCourse(), 
    8086                                        false); 
    81                         if (track != null && state != STATE_STATIC) { 
     87                        if (track != null) { 
     88                                currentPointIndex = track.getPointCount(); 
    8289                                boundsChanged = track.addPoint(trackPoint); 
    8390                        } 
    8491                        currentPoint = trackPoint; 
    8592                        fireNewPoint(currentPoint, boundsChanged, newSegment); 
     93                        fireCurrentPointChanged(); 
    8694                        providerStateChanged(provider, provider.getState()); 
    8795                } else { 
    88                         fireNewPoint(null, boundsChanged, newSegment); 
     96                        fireNewPoint(null, false, false); 
    8997                } 
    9098        } 
     
    142150        } 
    143151 
     152        private void fireCurrentPointChanged() { 
     153                if (listeners == null) { 
     154                        return; 
     155                } 
     156 
     157                final Enumeration e = listeners.elements(); 
     158                while (e.hasMoreElements()) { 
     159                        ((TrackListener) e.nextElement()).currentPointChanged(currentPoint, currentPointIndex); 
     160                } 
     161        } 
     162 
    144163        /** 
    145164         * Start a new track. 
     
    156175                track = new Track(name); 
    157176                state = STATE_TRACKING; 
     177 
     178                currentPointIndex = -1; 
     179                currentPoint = null; 
     180                fireStateChanged(); 
     181                fireCurrentPointChanged(); 
    158182        } 
    159183 
     
    174198                if (track == null || track.getPointCount() == 0) { 
    175199                        currentPoint = null; 
     200                        currentPointIndex = -1; 
    176201                } else { 
    177202                        currentPoint = track.getPoint(0); 
    178                 } 
     203                        currentPointIndex = 0; 
     204                } 
     205                fireStateChanged(); 
     206                fireCurrentPointChanged(); 
    179207        } 
    180208 
  • bbtracker/trunk/src/org/bbtracker/mobile/gui/MainCanvas.java

    r7 r14  
    8787 
    8888        public void newPoint(final TrackPoint newPoint, final boolean boundsChanged, final boolean newSegment) { 
    89                 trackTile.setCurrentPoint(newPoint); 
    9089                if (boundsChanged) { 
    9190                        trackTile.onResize(); // XXX Make that nicer 
    9291                } 
    93                 if (isShown()) { 
    94                         repaint(); 
    95                 } 
     92                repaint(); 
     93        } 
     94 
     95        public void currentPointChanged(final TrackPoint newPoint, final int newIndex) { 
     96                trackTile.setCurrentPoint(newPoint); 
     97                repaint(); 
    9698        } 
    9799 
    98100        public void stateChanged(final int newState) { 
    99                 if (isShown()) { 
    100                         repaint(); 
    101                 } 
     101                repaint(); 
    102102        } 
    103103 
     
    119119                        setTrack(newTrack); 
    120120                } 
     121                trackTile.onResize(); 
    121122                manager.addPointListener(this); 
    122123        } 
  • bbtracker/trunk/src/org/bbtracker/mobile/gui/StatusTile.java

    r4 r14  
    1010 
    1111public class StatusTile extends Tile { 
    12  
    13         private static final int TOP_LEFT = Graphics.TOP | Graphics.LEFT; 
    14  
    15         private static final String LABEL_LONGITUDE = "Long.: "; 
    16  
    17         private static final String LABEL_LATITUDE = "Lat.: "; 
    18  
    19         private static final String LABEL_POINTS = "Points: "; 
    20  
    21         private static final String LABEL_AGE = "Age: "; 
    22  
    23         private static final String LABEL_SPEED = "Speed: "; 
    24  
    25         private static final String LABEL_COURSE = "Course: "; 
     12        public static final String MAX_DEGREE_STRING = "99" + Utils.DEGREE + "99" + Utils.MINUTE + "99.99" + Utils.SECOND + 
     13                        "W"; 
    2614 
    2715        private static final int MARGIN = 2; 
    2816 
     17        private static final int GAP = 5; 
     18 
    2919        private final TrackManager manager; 
    3020 
    31         private final Font labelFont; 
     21        private final Font font; 
    3222 
    33         private final Font valueFont; 
    34  
    35         private final int lineHeight; 
    36  
    37         private final int leftLabelWidth; 
    38  
    39         private final int rightLabelWidth; 
    40  
    41         private final int rightValueWidth; 
     23        private final int latWidth; 
    4224 
    4325        public StatusTile(final TrackManager manager) { 
    4426                this.manager = manager; 
    45                 labelFont = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_SMALL); 
    46                 valueFont = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_SMALL); 
    47                 lineHeight = Math.max(labelFont.getHeight(), valueFont.getHeight()); 
    48  
    49                 int w; 
    50  
    51                 w = maxWidth(labelFont, LABEL_LATITUDE, -1); 
    52                 w = maxWidth(labelFont, LABEL_LONGITUDE, w); 
    53                 w = maxWidth(labelFont, LABEL_SPEED, w); 
    54                 leftLabelWidth = w; 
    55  
    56                 w = maxWidth(labelFont, LABEL_POINTS, -1); 
    57                 w = maxWidth(labelFont, LABEL_AGE, w); 
    58                 w = maxWidth(labelFont, LABEL_COURSE, w); 
    59                 rightLabelWidth = w; 
    60  
    61                 rightValueWidth = valueFont.stringWidth("9999"); 
    62         } 
    63  
    64         private static final int maxWidth(final Font f, final String s, final int prevMax) { 
    65                 final int w = f.stringWidth(s); 
    66                 return Math.max(prevMax, w); 
     27                font = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_SMALL); 
     28                latWidth = font.stringWidth(MAX_DEGREE_STRING); 
    6729        } 
    6830 
     
    7032                final Track track = manager.getTrack(); 
    7133                final TrackPoint p = manager.getCurrentPoint(); 
     34                final int pi = manager.getCurrentPointIndex(); 
    7235 
    7336                g.setColor(0x00ffffff); 
    7437                g.fillRect(0, 0, width, height); 
    7538                g.setColor(0x00000000); 
    76                 g.setFont(labelFont); 
     39                g.setFont(font); 
    7740 
    78                 final String points = track == null ? "-" : String.valueOf(track.getPointCount()); 
     41                final String point; 
     42                if (pi == -1) { 
     43                        point = "-"; 
     44                } else { 
     45                        point = (pi + 1) + "/" + track.getPointCount(); 
     46                } 
    7947                final String lon; 
    8048                final String lat; 
    81                 final String age; 
    8249                final String speed; 
    8350                final String course; 
     51                final String elevation; 
    8452                if (p != null) { 
    8553                        lon = Utils.longitudeToString(p.getLongitude()); 
     
    8755                        speed = Utils.speedToString(p.getSpeed()); 
    8856                        course = Utils.courseToString(p.getCourse()); 
    89                         age = String.valueOf(((int) (System.currentTimeMillis() - p.getTimestamp()) / 100) / 10f) + 's'; 
     57                        elevation = Utils.elevationToString(p.getElevation()); 
    9058                } else { 
    9159                        lon = "-"; 
    9260                        lat = "-"; 
    93                         speed = "-"; 
    94                         course = "-"; 
    95                         age = "-"; 
     61                        speed = "- km/h"; 
     62                        course = "-" + Utils.DEGREE; 
     63                        elevation = "-m"; 
    9664                } 
    9765 
    9866                int y = MARGIN; 
    99                 int left = MARGIN; 
    100                 int right = width - rightLabelWidth - rightValueWidth - MARGIN; 
    101                 g.setFont(labelFont); 
    102                 g.drawString(LABEL_LONGITUDE, left, y, TOP_LEFT); 
    103                 g.drawString(LABEL_POINTS, right, y, TOP_LEFT); 
    104                 y += lineHeight; 
    105                 g.drawString(LABEL_LATITUDE, left, y, TOP_LEFT); 
    106                 g.drawString(LABEL_AGE, right, y, TOP_LEFT); 
    107                 y += lineHeight; 
    108                 g.drawString(LABEL_SPEED, left, y, TOP_LEFT); 
    109                 g.drawString(LABEL_COURSE, right, y, TOP_LEFT); 
    11067 
    111                 left += leftLabelWidth; 
    112                 right += rightLabelWidth; 
    113                 y = MARGIN; 
    114                 g.drawString(lon, left, y, TOP_LEFT); 
    115                 g.drawString(points, right, y, TOP_LEFT); 
    116                 y += lineHeight; 
    117                 g.drawString(lat, left, y, TOP_LEFT); 
    118                 g.drawString(age, right, y, TOP_LEFT); 
    119                 y += lineHeight; 
    120                 g.drawString(speed, left, y, TOP_LEFT); 
    121                 g.drawString(course, right, y, TOP_LEFT); 
     68                final int leftColumn = MARGIN + latWidth; 
     69                final int middleColumn = MARGIN + latWidth * 2 + GAP; 
     70                final int rightBorder = width - MARGIN; 
     71 
     72                g.drawString(lon, leftColumn, y, Graphics.TOP | Graphics.RIGHT); 
     73                g.drawString(lat, middleColumn, y, Graphics.TOP | Graphics.RIGHT); 
     74                g.drawString(elevation, rightBorder, y, Graphics.TOP | Graphics.RIGHT); 
     75                y += font.getHeight(); 
     76                g.drawString(speed, leftColumn, y, Graphics.TOP | Graphics.RIGHT); 
     77                g.drawString(course, middleColumn, y, Graphics.TOP | Graphics.RIGHT); 
     78                g.drawString(point, rightBorder, y, Graphics.TOP | Graphics.RIGHT); 
    12279        } 
    12380 
    12481        public int getPreferredHeight() { 
    125                 return MARGIN + lineHeight * 3 + MARGIN; 
     82                return (MARGIN + font.getHeight()) * 2; 
    12683        } 
    12784} 
Note: See TracChangeset for help on using the changeset viewer.