]> gitweb.fperrin.net Git - GpsPrune.git/commitdiff
Merge branch 'not-ready-for-upstreaming' into fp-integration v19.2.fp1
authorFrédéric Perrin <fred@fperrin.net>
Sat, 30 Nov 2019 20:50:38 +0000 (20:50 +0000)
committerFrédéric Perrin <fred@fperrin.net>
Sat, 30 Nov 2019 20:50:38 +0000 (20:50 +0000)
src/tim/prune/App.java
src/tim/prune/data/FileInfo.java
src/tim/prune/gui/SelectorDisplay.java
src/tim/prune/gui/map/MapSource.java
src/tim/prune/gui/map/OsmMapSource.java

index 54f1e98632c19ef76c7fa6af0d168bf02a763d1f..317064d39984acb566cee90940236c52c32fd58f 100644 (file)
@@ -51,6 +51,7 @@ public class App
 {
        // Instance variables
        private JFrame _frame = null;
+       private String _titlePrefix = null;
        private Track _track = null;
        private TrackInfo _trackInfo = null;
        private int _lastSavePosition = 0;
@@ -79,6 +80,7 @@ public class App
        public App(JFrame inFrame)
        {
                _frame = inFrame;
+               _titlePrefix = _frame.getTitle();
                _undoStack = new UndoStack();
                _track = new Track();
                _trackInfo = new TrackInfo(_track);
@@ -777,6 +779,8 @@ public class App
                _menuManager.informFileLoaded();
                // recentre viewport on new file data
                _viewport.recentreViewport();
+               // update main window title
+               updateTitle();
                // Remove busy lock
                _busyLoading = false;
                // load next file if there's a queue
@@ -1019,4 +1023,16 @@ public class App
        public void setCurrentMode(AppMode inMode) {
                _appMode = inMode;
        }
+
+       /** Update main window title **/
+       public void updateTitle() {
+               ArrayList<String> filenames = _trackInfo.getFileInfo().getFilenames();
+               if (filenames.size() > 0) {
+                       _frame.setTitle(_titlePrefix + ": " + String.join(", ", filenames));
+               }
+               else
+               {
+                       _frame.setTitle(_titlePrefix);
+               }
+       }
 }
index 41900cb8736df60d668238306079256bf2dca175..7eaac8f307d1bcde51f68a3bf662cd6879adeab2 100644 (file)
@@ -74,6 +74,19 @@ public class FileInfo
                return "";
        }
 
+       /**
+        * @return The source names
+        */
+       public ArrayList<String> getFilenames()
+       {
+               ArrayList<String> filenames = new ArrayList<String>();
+               for (SourceInfo source : _sources)
+               {
+                       filenames.add(source.getName());
+               }
+               return filenames;
+       }
+
        /**
         * @param inIndex index number, starting from zero
         * @return source info object
index fa6630dc5b71400bd4f7202fb688f9a911cc3f6f..9dfc24f42394ad624d925589a2acd344411c12a0 100644 (file)
@@ -228,8 +228,9 @@ public class SelectorDisplay extends GenericDisplay
                        else if (numFiles > 1)
                        {
                                final String labelText = I18nManager.getText("details.track.numfiles") + ": " + numFiles;
+                               final String filenameString = String.join(", ", _trackInfo.getFileInfo().getFilenames());
                                _filenameLabel.setText(labelText);
-                               _filenameLabel.setToolTipText(labelText);
+                               _filenameLabel.setToolTipText(filenameString);
                        }
                        else
                        {
index c4e294665e128def7d1fcbfb048cb516624d5d00..177ad670b14d89664f6129cf46d85038c3f8cd8e 100644 (file)
@@ -104,7 +104,7 @@ public abstract class MapSource
                        urlstr = "http://" + urlstr;
                }
                // check trailing /
-               if (!urlstr.endsWith("/")) {
+               if (!urlstr.endsWith("/") && !urlstr.contains("?")) {
                        urlstr = urlstr + "/";
                }
                // Validate current url, return null if not ok
index 925fcf623ea456154c512c5e5e89454eb5b46bf8..e3fe58987b800f54cf10b1b8bd9ed8fe023c0897 100644 (file)
@@ -152,12 +152,31 @@ public class OsmMapSource extends MapSource
 
        /**
         * Make the URL to get the specified tile
+        * @param inLayerNum layer number
+        * @param inZoom zoom level
+        * @param inX x coordinate
+        * @param inY y coordinate
+        * @return relative file path as String
         */
        public String makeURL(int inLayerNum, int inZoom, int inX, int inY)
        {
                // Check if the base url has a [1234], if so replace at random
-               StringBuffer url = new StringBuffer();
-               url.append(pickServerUrl(_baseUrls[inLayerNum]));
+               String baseUrl = pickServerUrl(_baseUrls[inLayerNum]);
+               return makeUrl(baseUrl, inLayerNum, inZoom, inX, inY);
+       }
+
+       public String makeUrl(String baseUrl, int inLayerNum, int inZoom, int inX, int inY)
+       {
+               // If the base URL has {x}/{y} placeholders, use them
+               if (baseUrl.contains("{x}")) {
+                       baseUrl = baseUrl.replace("{z}", Integer.toString(inZoom))
+                               .replace("{x}", Integer.toString(inX))
+                               .replace("{y}", Integer.toString(inY));
+                       return baseUrl;
+               }
+
+               // Else simply append the tile indices and file extension
+               StringBuffer url = new StringBuffer(baseUrl);
                url.append(inZoom).append('/').append(inX).append('/').append(inY);
                url.append('.').append(getFileExtension(inLayerNum));
                if (_apiKey != null)
@@ -167,6 +186,26 @@ public class OsmMapSource extends MapSource
                return url.toString();
        }
 
+       /**
+        * Make a relative file path from the base directory including site name
+        * @param inLayerNum layer number
+        * @param inZoom zoom level
+        * @param inX x coordinate
+        * @param inY y coordinate
+        * @return relative file path as String
+        */
+       public String makeFilePath(int inLayerNum, int inZoom, int inX, int inY)
+       {
+               String siteName = getSiteName(inLayerNum);
+               String filePath = makeUrl(siteName, inLayerNum, inZoom, inX, inY);
+               int indexParam = filePath.indexOf("?");
+               if (indexParam > 0)
+               {
+                       filePath = filePath.substring(0, indexParam);
+               }
+               return filePath;
+       }
+
        /**
         * @return maximum zoom level
         */