Ignore:
Timestamp:
21.06.2009 12:02:15 (3 years ago)
Author:
stoecker
Message:

fixed audio handling a bit

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java

    r1646 r1685  
    345345 
    346346    public static void playAudio() { 
     347        playAdjacentMarker(null, true); 
     348    } 
     349 
     350    public static void playNextMarker() { 
     351        playAdjacentMarker(AudioMarker.recentlyPlayedMarker(), true); 
     352    } 
     353 
     354    public static void playPreviousMarker() { 
     355        playAdjacentMarker(AudioMarker.recentlyPlayedMarker(), false); 
     356    } 
     357 
     358    private static Marker getAdjacentMarker(Marker startMarker, boolean next, Layer layer) { 
     359        Marker previousMarker = null; 
     360        boolean nextTime = false; 
     361        if (layer.getClass() == MarkerLayer.class) { 
     362            MarkerLayer markerLayer = (MarkerLayer) layer; 
     363            for (Marker marker : markerLayer.data) { 
     364                if (marker == startMarker) { 
     365                    if (next) 
     366                        nextTime = true; 
     367                    else { 
     368                        if (previousMarker == null) 
     369                            previousMarker = startMarker; // if no previous one, play the first one again 
     370                        return previousMarker; 
     371                    } 
     372                } 
     373                else if (marker.getClass() == AudioMarker.class) 
     374                { 
     375                    if(nextTime || startMarker == null) 
     376                        return marker; 
     377                    previousMarker = marker; 
     378                } 
     379            } 
     380            if (nextTime) // there was no next marker in that layer, so play the last one again 
     381                return startMarker; 
     382        } 
     383        return null; 
     384    } 
     385 
     386    private static void playAdjacentMarker(Marker startMarker, boolean next) { 
     387        Marker m = null; 
    347388        if (Main.map == null || Main.map.mapView == null) 
    348389            return; 
    349         for (Layer layer : Main.map.mapView.getAllLayers()) { 
    350             if (layer.getClass() == MarkerLayer.class) { 
    351                 MarkerLayer markerLayer = (MarkerLayer) layer; 
    352                 for (Marker marker : markerLayer.data) { 
    353                     if (marker.getClass() == AudioMarker.class) { 
    354                         ((AudioMarker)marker).play(); 
    355                         break; 
    356                     } 
    357                 } 
    358             } 
    359         } 
    360     } 
    361  
    362     public static void playNextMarker() { 
    363         playAdjacentMarker(true); 
    364     } 
    365  
    366     public static void playPreviousMarker() { 
    367         playAdjacentMarker(false); 
    368     } 
    369  
    370     private static void playAdjacentMarker(boolean next) { 
    371         Marker startMarker = AudioMarker.recentlyPlayedMarker(); 
    372         if (startMarker == null) { 
    373             // message? 
    374             return; 
    375         } 
    376         Marker previousMarker = null; 
    377         boolean nextTime = false; 
    378         if (Main.map == null || Main.map.mapView == null) 
    379             return; 
    380         for (Layer layer : Main.map.mapView.getAllLayers()) { 
    381             if (layer.getClass() == MarkerLayer.class) { 
    382                 MarkerLayer markerLayer = (MarkerLayer) layer; 
    383                 for (Marker marker : markerLayer.data) { 
    384                     if (marker == startMarker) { 
    385                         if (next) { 
    386                             nextTime = true; 
    387                         } else { 
    388                             if (previousMarker == null) 
    389                                 previousMarker = startMarker; // if no previous one, play the first one again 
    390                             ((AudioMarker)previousMarker).play(); 
    391                             break; 
    392                         } 
    393                     } else if (nextTime && marker.getClass() == AudioMarker.class) { 
    394                         ((AudioMarker)marker).play(); 
    395                         return; 
    396                     } 
    397                     if (marker.getClass() == AudioMarker.class) 
    398                         previousMarker = marker; 
    399                 } 
    400                 if (nextTime) { 
    401                     // there was no next marker in that layer, so play the last one again 
    402                     ((AudioMarker)startMarker).play(); 
    403                     return; 
    404                 } 
    405             } 
    406         } 
     390        Layer l = Main.map.mapView.getActiveLayer(); 
     391        if(l != null) 
     392            m = getAdjacentMarker(startMarker, next, l); 
     393        if(m == null) 
     394        { 
     395            for (Layer layer : Main.map.mapView.getAllLayers()) 
     396            { 
     397                m = getAdjacentMarker(startMarker, next, layer); 
     398                if(m != null) 
     399                    break; 
     400            } 
     401        } 
     402        if(m != null) 
     403            ((AudioMarker)m).play(); 
    407404    } 
    408405 
Note: See TracChangeset for help on using the changeset viewer.