mirror of
https://github.com/tumic0/GPXSee.git
synced 2025-02-22 18:20:49 +01:00
Compare commits
No commits in common. "3dd21ade1939e586f2399dbfbc81c8aabac94ade" and "335df85faece022aab0b69d0dc4ca27f6c5a9db8" have entirely different histories.
3dd21ade19
...
335df85fae
@ -16,4 +16,4 @@ Icon=gpxsee
|
|||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
Categories=Graphics;Viewer;Education;Geography;Maps;Sports;Qt
|
Categories=Graphics;Viewer;Education;Geography;Maps;Sports;Qt
|
||||||
MimeType=x-scheme-handler/geo;application/gpx+xml;application/vnd.garmin.tcx+xml;application/vnd.ant.fit;application/vnd.google-earth.kml+xml;application/vnd.fai.igc;application/vnd.nmea.nmea;application/vnd.oziexplorer.plt;application/vnd.oziexplorer.rte;application/vnd.oziexplorer.wpt;application/vnd.groundspeak.loc+xml;application/vnd.sigma.slf+xml;application/geo+json;application/vnd.naviter.seeyou.cup;application/vnd.garmin.gpi;application/vnd.suunto.sml+xml;image/jpeg;text/csv;application/vnd.garmin.img;application/vnd.garmin.jnx;application/vnd.garmin.gmap+xml;image/vnd.maptech.kap;application/vnd.oziexplorer.map;application/vnd.mapbox.mbtiles;application/vnd.twonav.rmap;application/vnd.trekbuddy.tba;application/vnd.gpxsee.map+xml;application/x-tar;image/tiff;application/vnd.google-earth.kmz;application/vnd.alpinequest.aqm;application/vnd.cgtk.gemf;application/vnd.rmaps.sqlite;application/vnd.osmdroid.sqlite;application/vnd.mapsforge.map;application/vnd.tomtom.ov2;application/vnd.tomtom.itn;application/vnd.esri.wld;application/vnd.onmove.omd;application/vnd.onmove.ghp;application/vnd.memory-map.qct;application/vnd.twonav.trk;application/vnd.twonav.rte;application/vnd.twonav.wpt;application/vnd.orux.map+xml;application/vnd.iho.s57-data;application/vnd.iho.s57-catalogue;application/vnd.gpsdump.wpt;application/vnd.gpstuner.gmi
|
MimeType=application/gpx+xml;application/vnd.garmin.tcx+xml;application/vnd.ant.fit;application/vnd.google-earth.kml+xml;application/vnd.fai.igc;application/vnd.nmea.nmea;application/vnd.oziexplorer.plt;application/vnd.oziexplorer.rte;application/vnd.oziexplorer.wpt;application/vnd.groundspeak.loc+xml;application/vnd.sigma.slf+xml;application/geo+json;application/vnd.naviter.seeyou.cup;application/vnd.garmin.gpi;application/vnd.suunto.sml+xml;image/jpeg;text/csv;application/vnd.garmin.img;application/vnd.garmin.jnx;application/vnd.garmin.gmap+xml;image/vnd.maptech.kap;application/vnd.oziexplorer.map;application/vnd.mapbox.mbtiles;application/vnd.twonav.rmap;application/vnd.trekbuddy.tba;application/vnd.gpxsee.map+xml;application/x-tar;image/tiff;application/vnd.google-earth.kmz;application/vnd.alpinequest.aqm;application/vnd.cgtk.gemf;application/vnd.rmaps.sqlite;application/vnd.osmdroid.sqlite;application/vnd.mapsforge.map;application/vnd.tomtom.ov2;application/vnd.tomtom.itn;application/vnd.esri.wld;application/vnd.onmove.omd;application/vnd.onmove.ghp;application/vnd.memory-map.qct;application/vnd.twonav.trk;application/vnd.twonav.rte;application/vnd.twonav.wpt;application/vnd.orux.map+xml;application/vnd.iho.s57-data;application/vnd.iho.s57-catalogue;application/vnd.gpsdump.wpt;application/vnd.gpstuner.gmi
|
||||||
|
@ -738,20 +738,6 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
|
|
||||||
<key>CFBundleURLTypes</key>
|
|
||||||
<array>
|
|
||||||
<dict>
|
|
||||||
<key>CFBundleURLSchemes</key>
|
|
||||||
<array>
|
|
||||||
<string>geo</string>
|
|
||||||
</array>
|
|
||||||
<key>CFBundleURLName</key>
|
|
||||||
<string>org.geouri.geo</string>
|
|
||||||
<key>CFBundleTypeRole</key>
|
|
||||||
<string>Viewer</string>
|
|
||||||
</dict>
|
|
||||||
</array>
|
|
||||||
|
|
||||||
<key>UTImportedTypeDeclarations</key>
|
<key>UTImportedTypeDeclarations</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
|
@ -1069,16 +1069,6 @@ void GUI::openDir()
|
|||||||
|
|
||||||
bool GUI::openFile(const QString &fileName, bool tryUnknown, int &showError)
|
bool GUI::openFile(const QString &fileName, bool tryUnknown, int &showError)
|
||||||
{
|
{
|
||||||
QUrl url(fileName);
|
|
||||||
if (url.scheme() == "geo") {
|
|
||||||
if (loadURL(url, showError)) {
|
|
||||||
_fileActionGroup->setEnabled(true);
|
|
||||||
_reloadFileAction->setEnabled(false);
|
|
||||||
return true;
|
|
||||||
} else if (showError)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
QFileInfo fi(fileName);
|
QFileInfo fi(fileName);
|
||||||
QString canonicalFileName(fi.canonicalFilePath());
|
QString canonicalFileName(fi.canonicalFilePath());
|
||||||
|
|
||||||
@ -1109,36 +1099,6 @@ bool GUI::openFile(const QString &fileName, bool tryUnknown, int &showError)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GUI::loadURL(const QUrl &url, int &showError)
|
|
||||||
{
|
|
||||||
Data data(url);
|
|
||||||
|
|
||||||
if (data.isValid()) {
|
|
||||||
loadData(data);
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
if (showError) {
|
|
||||||
QString error = tr("Error loading geo URI:") + "\n" + url.toString()
|
|
||||||
+ ": " + data.errorString();
|
|
||||||
|
|
||||||
if (showError > 1) {
|
|
||||||
QMessageBox message(QMessageBox::Critical, APP_NAME, error,
|
|
||||||
QMessageBox::Ok, this);
|
|
||||||
QCheckBox checkBox(tr("Don't show again"));
|
|
||||||
message.setCheckBox(&checkBox);
|
|
||||||
message.exec();
|
|
||||||
if (checkBox.isChecked())
|
|
||||||
showError = 0;
|
|
||||||
} else
|
|
||||||
QMessageBox::critical(this, APP_NAME, error);
|
|
||||||
} else
|
|
||||||
qWarning("%s: %s", qUtf8Printable(url.toString()),
|
|
||||||
qUtf8Printable(data.errorString()));
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GUI::loadFile(const QString &fileName, bool tryUnknown, int &showError)
|
bool GUI::loadFile(const QString &fileName, bool tryUnknown, int &showError)
|
||||||
{
|
{
|
||||||
Data data(fileName, tryUnknown);
|
Data data(fileName, tryUnknown);
|
||||||
|
@ -158,7 +158,6 @@ private:
|
|||||||
#endif // Q_OS_ANDROID
|
#endif // Q_OS_ANDROID
|
||||||
bool openPOIFile(const QString &fileName);
|
bool openPOIFile(const QString &fileName);
|
||||||
bool loadFile(const QString &fileName, bool tryUnknown, int &showError);
|
bool loadFile(const QString &fileName, bool tryUnknown, int &showError);
|
||||||
bool loadURL(const QUrl &url, int &showError);
|
|
||||||
void loadData(const Data &data);
|
void loadData(const Data &data);
|
||||||
bool loadMapNode(const TreeNode<Map*> &node, MapAction *&action,
|
bool loadMapNode(const TreeNode<Map*> &node, MapAction *&action,
|
||||||
const QList<QAction*> &existingActions, int &showError);
|
const QList<QAction*> &existingActions, int &showError);
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include "common/util.h"
|
#include "common/util.h"
|
||||||
#include "map/crs.h"
|
|
||||||
#include "gpxparser.h"
|
#include "gpxparser.h"
|
||||||
#include "tcxparser.h"
|
#include "tcxparser.h"
|
||||||
#include "csvparser.h"
|
#include "csvparser.h"
|
||||||
@ -155,69 +154,6 @@ Data::Data(const QString &fileName, bool tryUnknown)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Data::Data(const QUrl &url)
|
|
||||||
{
|
|
||||||
bool caOk, cbOk, ccOk;
|
|
||||||
Coordinates c;
|
|
||||||
Projection proj;
|
|
||||||
|
|
||||||
_valid = false;
|
|
||||||
|
|
||||||
QStringList parts(url.path().split(';'));
|
|
||||||
if (parts.size() < 1) {
|
|
||||||
_errorString = "Syntax error";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
QStringList coords(parts.at(0).split(','));
|
|
||||||
if (coords.size() < 2 || coords.size() > 3) {
|
|
||||||
_errorString = "Syntax error";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
double ca = coords.at(0).toDouble(&caOk);
|
|
||||||
double cb = coords.at(1).toDouble(&cbOk);
|
|
||||||
double cc = NAN;
|
|
||||||
if (!(caOk && cbOk)) {
|
|
||||||
_errorString = "Invalid coordinates";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (coords.size() > 2) {
|
|
||||||
cc = coords.at(2).toDouble(&ccOk);
|
|
||||||
if (!ccOk) {
|
|
||||||
_errorString = "Invalid elevation";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parts.size() > 1) {
|
|
||||||
QStringList crsp(parts.at(1).split('='));
|
|
||||||
if (crsp.size() != 2) {
|
|
||||||
_errorString = "Syntax error";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!crsp.at(0).compare("crs", Qt::CaseInsensitive)) {
|
|
||||||
if (crsp.at(1).compare("wgs84", Qt::CaseInsensitive)) {
|
|
||||||
proj = CRS::projection(crsp.at(1));
|
|
||||||
if (!proj.isValid()) {
|
|
||||||
_errorString = "Unknown CRS";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
c = proj.isValid() ? proj.xy2ll(PointD(ca, cb)) : Coordinates(cb, ca);
|
|
||||||
if (!c.isValid()) {
|
|
||||||
_errorString = "Invalid coordinates";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Waypoint w(c);
|
|
||||||
w.setElevation(cc);
|
|
||||||
_waypoints.append(w);
|
|
||||||
|
|
||||||
_valid = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString Data::formats()
|
QString Data::formats()
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
|
@ -14,7 +14,6 @@ class Data
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Data(const QString &fileName, bool tryUnknown = true);
|
Data(const QString &fileName, bool tryUnknown = true);
|
||||||
Data(const QUrl &url);
|
|
||||||
|
|
||||||
bool isValid() const {return _valid;}
|
bool isValid() const {return _valid;}
|
||||||
const QString &errorString() const {return _errorString;}
|
const QString &errorString() const {return _errorString;}
|
||||||
|
@ -63,7 +63,7 @@ MapList::ParserMap MapList::parsers()
|
|||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
MapList::ParserMap MapList::_parsers = MapList::parsers();
|
MapList::ParserMap MapList::_parsers = parsers();
|
||||||
|
|
||||||
Map *MapList::loadFile(const QString &path, const Projection &proj, bool *isDir)
|
Map *MapList::loadFile(const QString &path, const Projection &proj, bool *isDir)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user