mirror of
https://github.com/tumic0/GPXSee.git
synced 2025-07-01 21:39:15 +02:00
Compare commits
49 Commits
Author | SHA1 | Date | |
---|---|---|---|
fafe6c4b03 | |||
b156e25023 | |||
e15deccfca | |||
9b24bccfed | |||
589c602d21 | |||
b7df3cbe0e | |||
f08f5893a3 | |||
1d5f7db12f | |||
532a1eb69f | |||
1efb4e494d | |||
4653f771a6 | |||
22e5ffaa0c | |||
9a4514a464 | |||
7d47f243ea | |||
18c2613302 | |||
e2bdc1aae6 | |||
a245043573 | |||
42dbc91143 | |||
23a7c6d4eb | |||
b6b4319f89 | |||
8673c00a23 | |||
90280fb018 | |||
285022c17a | |||
e76bb40d10 | |||
bbf5c09377 | |||
e1c7ad18e6 | |||
99792f2984 | |||
6d2e6f64d3 | |||
183cb4825c | |||
7b8fff7440 | |||
a01ff33768 | |||
c3117bb3ac | |||
20fe804293 | |||
525f70f15e | |||
209df67380 | |||
6e40d8cbc7 | |||
0ef28cda0f | |||
1b83f88b27 | |||
a40ed633ae | |||
399299d192 | |||
ec68557de5 | |||
c68fc72387 | |||
3c9da66a51 | |||
22e56e06fd | |||
2e9d173f53 | |||
84b7da13f0 | |||
ed74d0c069 | |||
218eb3be56 | |||
5795395107 |
@ -1,4 +1,4 @@
|
||||
version: 11.2.{build}
|
||||
version: 11.4.{build}
|
||||
|
||||
configuration:
|
||||
- Release
|
||||
@ -11,7 +11,7 @@ environment:
|
||||
OPENSSLDIR: C:\OpenSSL-v111-Win64\bin
|
||||
matrix:
|
||||
- QTDIR: C:\Qt\5.15\msvc2019_64
|
||||
- QTDIR: C:\Qt\6.2\msvc2019_64
|
||||
- QTDIR: C:\Qt\6.3\msvc2019_64
|
||||
NSISDEF: /DQT6
|
||||
|
||||
install:
|
||||
|
13
.github/workflows/android.yml
vendored
13
.github/workflows/android.yml
vendored
@ -11,10 +11,11 @@ jobs:
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
- name: set up JDK 11
|
||||
uses: actions/setup-java@v1
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'zulu'
|
||||
java-version: '11'
|
||||
- name: Setup Android SDK
|
||||
uses: android-actions/setup-android@v2
|
||||
@ -22,16 +23,18 @@ jobs:
|
||||
run: ${ANDROID_HOME}/tools/bin/sdkmanager --update
|
||||
- name: Install android platform, platform-tools, build-tools and ndk
|
||||
run: ${ANDROID_HOME}/tools/bin/sdkmanager --install "cmdline-tools;latest" "platform-tools" "platforms;android-31" "build-tools;31.0.0" "ndk;22.1.7171670"
|
||||
- name: Setup NDK path
|
||||
run: echo "ANDROID_NDK_ROOT=${ANDROID_HOME}/ndk/22.1.7171670/" >> $GITHUB_ENV
|
||||
- name: Install Qt (Desktop)
|
||||
uses: jurplel/install-qt-action@v2
|
||||
with:
|
||||
aqtversion: '==2.1.0'
|
||||
version: '6.3.0'
|
||||
version: '6.3.1'
|
||||
- name: Install Qt (Android)
|
||||
uses: jurplel/install-qt-action@v2
|
||||
with:
|
||||
aqtversion: '==2.1.0'
|
||||
version: '6.3.0'
|
||||
version: '6.3.1'
|
||||
target: 'android'
|
||||
arch: 'android_armv7'
|
||||
modules: qtpositioning qt5compat
|
||||
@ -40,7 +43,7 @@ jobs:
|
||||
- name: Create localization
|
||||
run: lrelease gpxsee.pro
|
||||
- name: Configure build
|
||||
run: qmake gpxsee.pro OPENSSL_PATH=android_openssl
|
||||
run: qmake gpxsee.pro OPENSSL_PATH=android_openssl
|
||||
- name: Build project
|
||||
run: make -j2 apk
|
||||
- name: Upload artifacts
|
||||
|
2
.github/workflows/osx.yml
vendored
2
.github/workflows/osx.yml
vendored
@ -8,7 +8,7 @@ on:
|
||||
jobs:
|
||||
qt5:
|
||||
name: GPXSee Qt5 build
|
||||
runs-on: macos-10.15
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- name: Set environment variables
|
||||
run: echo "PATH=/usr/local/opt/qt@5/bin:$PATH" >> $GITHUB_ENV
|
||||
|
@ -11,7 +11,8 @@ GPS log file formats.
|
||||
* Offline maps (MBTiles, OziExplorer maps, TrekBuddy maps/atlases,
|
||||
Garmin IMG/GMAP & JNX maps, TwoNav RMaps, GeoTIFF images, BSB charts, KMZ maps,
|
||||
AlpineQuest maps, Locus/OsmAnd/RMaps SQLite maps, Mapsforge vector maps,
|
||||
QCT maps, ESRI World-File georeferenced images).
|
||||
QCT maps, GEMF maps, Osmdroid SQLite maps, Orux maps,
|
||||
ESRI World-File georeferenced images).
|
||||
* Elevation, speed, heart rate, cadence, power, temperature and gear ratio/shifts
|
||||
graphs.
|
||||
* Support for DEM files (SRTM HGT).
|
||||
|
@ -3,7 +3,7 @@ unix:!macx:!android {
|
||||
} else {
|
||||
TARGET = GPXSee
|
||||
}
|
||||
VERSION = 11.2
|
||||
VERSION = 11.4
|
||||
|
||||
QT += core \
|
||||
gui \
|
||||
@ -117,6 +117,7 @@ HEADERS += src/common/config.h \
|
||||
src/data/twonavparser.h \
|
||||
src/map/IMG/section.h \
|
||||
src/map/gemfmap.h \
|
||||
src/map/oruxmap.h \
|
||||
src/map/osmdroidmap.h \
|
||||
src/map/proj/polyconic.h \
|
||||
src/map/proj/webmercator.h \
|
||||
@ -321,6 +322,7 @@ SOURCES += src/main.cpp \
|
||||
src/GUI/passwordedit.cpp \
|
||||
src/data/twonavparser.cpp \
|
||||
src/map/gemfmap.cpp \
|
||||
src/map/oruxmap.cpp \
|
||||
src/map/osmdroidmap.cpp \
|
||||
src/map/proj/polyconic.cpp \
|
||||
src/map/proj/webmercator.cpp \
|
||||
@ -506,7 +508,8 @@ win32 {
|
||||
icons/formats/omd.ico \
|
||||
icons/formats/ghp.ico \
|
||||
icons/formats/qct.ico \
|
||||
icons/formats/trk.ico
|
||||
icons/formats/trk.ico \
|
||||
icons/formats/gemf.ico
|
||||
DEFINES += _USE_MATH_DEFINES \
|
||||
NOGDI
|
||||
}
|
||||
|
2523
lang/gpxsee_ca.ts
Normal file
2523
lang/gpxsee_ca.ts
Normal file
File diff suppressed because it is too large
Load Diff
@ -287,22 +287,23 @@
|
||||
<context>
|
||||
<name>FileSelectWidget</name>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="41"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="44"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="49"/>
|
||||
<source>Select file</source>
|
||||
<translation>Vybrat soubor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="51"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="59"/>
|
||||
<source>No output file selected.</source>
|
||||
<translation>Nebyl zvolen žádný výstupní soubor.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="61"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="69"/>
|
||||
<source>%1 is a directory.</source>
|
||||
<translation>%1 je adresář.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="65"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="73"/>
|
||||
<source>%1 is not writable.</source>
|
||||
<translation>%1 nelze zapsat.</translation>
|
||||
</message>
|
||||
@ -1204,97 +1205,102 @@
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="152"/>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<source>Supported files</source>
|
||||
<translation>Podporované soubory</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<source>MBTiles maps</source>
|
||||
<translation>MBTiles mapy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<source>Garmin JNX maps</source>
|
||||
<translation>Garmin JNX mapy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<location filename="../src/map/maplist.cpp" line="156"/>
|
||||
<source>AlpineQuest maps</source>
|
||||
<translation>AlpineQuest mapy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="155"/>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<source>Garmin IMG maps</source>
|
||||
<translation>Garmin IMG mapy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<source>BSB nautical charts</source>
|
||||
<translation>BSB námořní mapy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="159"/>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<source>GEMF maps</source>
|
||||
<translation>GEMF mapy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<source>KMZ maps</source>
|
||||
<translation>KMZ mapy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<source>Mapsforge maps</source>
|
||||
<translation>Mapsforge mapy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<source>OziExplorer maps</source>
|
||||
<translation>OziExplorer mapy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<source>Orux maps</source>
|
||||
<translation>Orux mapy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<source>QuickChart maps</source>
|
||||
<translation>QuickChart mapy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<source>Osmdroid SQLite maps</source>
|
||||
<translation>Osmdroid SQLite mapy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<location filename="../src/map/maplist.cpp" line="172"/>
|
||||
<source>TrekBuddy maps/atlases</source>
|
||||
<translation>TrekBuddy mapy/atlasy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<source>GeoTIFF images</source>
|
||||
<translation>GeoTIFF obrázky</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<location filename="../src/map/maplist.cpp" line="177"/>
|
||||
<source>All files</source>
|
||||
<translation>Všechny soubory</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<location filename="../src/map/maplist.cpp" line="168"/>
|
||||
<source>TwoNav maps</source>
|
||||
<translation>TwoNav mapy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<source>Locus/OsmAnd/RMaps SQLite maps</source>
|
||||
<translation>Locus/OsmAnd/RMaps SQLite mapy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="171"/>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<source>World-file georeferenced images</source>
|
||||
<translation>Georeferencované obrázky - world-file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<location filename="../src/map/maplist.cpp" line="176"/>
|
||||
<source>Online map sources</source>
|
||||
<translation>Online mapové zdroje</translation>
|
||||
</message>
|
||||
|
@ -287,22 +287,23 @@
|
||||
<context>
|
||||
<name>FileSelectWidget</name>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="41"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="44"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="49"/>
|
||||
<source>Select file</source>
|
||||
<translation>Vælg fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="51"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="59"/>
|
||||
<source>No output file selected.</source>
|
||||
<translation>Ingen uddatafil valgt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="61"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="69"/>
|
||||
<source>%1 is a directory.</source>
|
||||
<translation>%1 er en mappe.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="65"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="73"/>
|
||||
<source>%1 is not writable.</source>
|
||||
<translation>%1 er skrivebeskyttet.</translation>
|
||||
</message>
|
||||
@ -1203,97 +1204,102 @@
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="152"/>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<source>Supported files</source>
|
||||
<translation>Understøttede filer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<source>MBTiles maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<source>Garmin JNX maps</source>
|
||||
<translation>Garmin JNX-kort</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<location filename="../src/map/maplist.cpp" line="156"/>
|
||||
<source>AlpineQuest maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="155"/>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<source>Garmin IMG maps</source>
|
||||
<translation>Garmin IMG-kort</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<source>BSB nautical charts</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="159"/>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<source>GEMF maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<source>KMZ maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<source>Mapsforge maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<source>OziExplorer maps</source>
|
||||
<translation>OziExplorer-kort</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<source>QuickChart maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<source>Osmdroid SQLite maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<source>TrekBuddy maps/atlases</source>
|
||||
<translation>TrekBuddy kort/atlas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<source>GeoTIFF images</source>
|
||||
<translation>GeoTIFF billeder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<source>All files</source>
|
||||
<translation type="unfinished">Alle filer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<source>TwoNav maps</source>
|
||||
<source>Orux maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<source>QuickChart maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<source>Osmdroid SQLite maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="172"/>
|
||||
<source>TrekBuddy maps/atlases</source>
|
||||
<translation>TrekBuddy kort/atlas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<source>GeoTIFF images</source>
|
||||
<translation>GeoTIFF billeder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="177"/>
|
||||
<source>All files</source>
|
||||
<translation type="unfinished">Alle filer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="168"/>
|
||||
<source>TwoNav maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<source>Locus/OsmAnd/RMaps SQLite maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="171"/>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<source>World-file georeferenced images</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<location filename="../src/map/maplist.cpp" line="176"/>
|
||||
<source>Online map sources</source>
|
||||
<translation>Online-kort kilder</translation>
|
||||
</message>
|
||||
|
@ -287,22 +287,23 @@
|
||||
<context>
|
||||
<name>FileSelectWidget</name>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="41"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="44"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="49"/>
|
||||
<source>Select file</source>
|
||||
<translation>Datei auswählen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="51"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="59"/>
|
||||
<source>No output file selected.</source>
|
||||
<translation>Keine Ausgabedatei ausgewählt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="61"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="69"/>
|
||||
<source>%1 is a directory.</source>
|
||||
<translation>%1 ist ein Verzeichnis.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="65"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="73"/>
|
||||
<source>%1 is not writable.</source>
|
||||
<translation>%1 ist nicht beschreibbar.</translation>
|
||||
</message>
|
||||
@ -1203,97 +1204,102 @@
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="152"/>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<source>Supported files</source>
|
||||
<translation>Unterstützte Dateien</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<source>MBTiles maps</source>
|
||||
<translation>MBTiles-Karten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<source>Garmin JNX maps</source>
|
||||
<translation>Garmin JNX-Karten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<location filename="../src/map/maplist.cpp" line="156"/>
|
||||
<source>AlpineQuest maps</source>
|
||||
<translation>AlpineQuest-Karten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="155"/>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<source>Garmin IMG maps</source>
|
||||
<translation>Garmin IMG-Karten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<source>BSB nautical charts</source>
|
||||
<translation>BSB-Seekarten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="159"/>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<source>GEMF maps</source>
|
||||
<translation>GEMF-Karten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<source>KMZ maps</source>
|
||||
<translation>KMZ-Karten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<source>Mapsforge maps</source>
|
||||
<translation>Mapsforge-Karten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<source>OziExplorer maps</source>
|
||||
<translation>OziExplorer-Karten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<source>Orux maps</source>
|
||||
<translation>Orux-Karten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<source>QuickChart maps</source>
|
||||
<translation>QuickChart-Karten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<source>Osmdroid SQLite maps</source>
|
||||
<translation>Osmdroid SQLite-Karten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<location filename="../src/map/maplist.cpp" line="172"/>
|
||||
<source>TrekBuddy maps/atlases</source>
|
||||
<translation>TrekBuddy-Karten/Atlanten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<source>GeoTIFF images</source>
|
||||
<translation>GeoTIFF-Bilder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<location filename="../src/map/maplist.cpp" line="177"/>
|
||||
<source>All files</source>
|
||||
<translation>Alle Dateien</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<location filename="../src/map/maplist.cpp" line="168"/>
|
||||
<source>TwoNav maps</source>
|
||||
<translation>TwoNav-Karten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<source>Locus/OsmAnd/RMaps SQLite maps</source>
|
||||
<translation>Locus/OsmAnd/RMaps SQLite-Karten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="171"/>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<source>World-file georeferenced images</source>
|
||||
<translation>World-File georeferenzierte Bilder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<location filename="../src/map/maplist.cpp" line="176"/>
|
||||
<source>Online map sources</source>
|
||||
<translation>Online-Kartenquellen</translation>
|
||||
</message>
|
||||
|
@ -287,22 +287,23 @@
|
||||
<context>
|
||||
<name>FileSelectWidget</name>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="41"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="44"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="49"/>
|
||||
<source>Select file</source>
|
||||
<translation>Elekti dosieron</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="51"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="59"/>
|
||||
<source>No output file selected.</source>
|
||||
<translation>Neniu eligdosiero estas elektita.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="61"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="69"/>
|
||||
<source>%1 is a directory.</source>
|
||||
<translation>%1 estas dosierujo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="65"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="73"/>
|
||||
<source>%1 is not writable.</source>
|
||||
<translation>%1 ne estas skribebla.</translation>
|
||||
</message>
|
||||
@ -1203,97 +1204,102 @@
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="152"/>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<source>Supported files</source>
|
||||
<translation>Subtenataj dosieroj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<location filename="../src/map/maplist.cpp" line="156"/>
|
||||
<source>AlpineQuest maps</source>
|
||||
<translation>AlpineQuest-mapoj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="155"/>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<source>Garmin IMG maps</source>
|
||||
<translation>Garmin IMG -mapoj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<source>Garmin JNX maps</source>
|
||||
<translation>Garmin JNX -mapoj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<source>BSB nautical charts</source>
|
||||
<translation>BSB -maraj mapoj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="159"/>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<source>GEMF maps</source>
|
||||
<translation>GEMF-mapoj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<source>KMZ maps</source>
|
||||
<translation>KMZ-mapoj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<source>Mapsforge maps</source>
|
||||
<translation>Mapsforge-mapoj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<source>OziExplorer maps</source>
|
||||
<translation>OziExplorer-mapoj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<source>MBTiles maps</source>
|
||||
<translation>MBTiles-mapoj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<source>Orux maps</source>
|
||||
<translation>Orux-mapoj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<source>QuickChart maps</source>
|
||||
<translation>QuickChart-mapoj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<source>Osmdroid SQLite maps</source>
|
||||
<translation>Osmdroid SQLite -mapoj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<location filename="../src/map/maplist.cpp" line="172"/>
|
||||
<source>TrekBuddy maps/atlases</source>
|
||||
<translation>TrekBuddy-mapoj/maparoj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<source>GeoTIFF images</source>
|
||||
<translation>GeoTIFF-bildoj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<location filename="../src/map/maplist.cpp" line="177"/>
|
||||
<source>All files</source>
|
||||
<translation>Ĉiuj dosieroj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<location filename="../src/map/maplist.cpp" line="168"/>
|
||||
<source>TwoNav maps</source>
|
||||
<translation>TwoNav-mapoj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<source>Locus/OsmAnd/RMaps SQLite maps</source>
|
||||
<translation>Locus/OsmAnd/RMaps SQLite -mapoj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="171"/>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<source>World-file georeferenced images</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<location filename="../src/map/maplist.cpp" line="176"/>
|
||||
<source>Online map sources</source>
|
||||
<translation>Fontoj de Online-mapoj</translation>
|
||||
</message>
|
||||
|
@ -287,22 +287,23 @@
|
||||
<context>
|
||||
<name>FileSelectWidget</name>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="41"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="44"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="49"/>
|
||||
<source>Select file</source>
|
||||
<translation>Escoger archivo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="51"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="59"/>
|
||||
<source>No output file selected.</source>
|
||||
<translation>Falta nombre de archivo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="61"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="69"/>
|
||||
<source>%1 is a directory.</source>
|
||||
<translation>%1 es una carpeta.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="65"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="73"/>
|
||||
<source>%1 is not writable.</source>
|
||||
<translation>%1 es de solo lectura.</translation>
|
||||
</message>
|
||||
@ -1203,97 +1204,102 @@
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="152"/>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<source>Supported files</source>
|
||||
<translation>Formatos admitidos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<source>MBTiles maps</source>
|
||||
<translation>Mapas MBTiles</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<source>Garmin JNX maps</source>
|
||||
<translation>Mapas Garmin JNX</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<location filename="../src/map/maplist.cpp" line="156"/>
|
||||
<source>AlpineQuest maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="155"/>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<source>Garmin IMG maps</source>
|
||||
<translation>Mapas Garmin IMG</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<source>BSB nautical charts</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="159"/>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<source>GEMF maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<source>KMZ maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<source>Mapsforge maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<source>OziExplorer maps</source>
|
||||
<translation>Mapas OziExplorer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<source>Orux maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<source>QuickChart maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<source>Osmdroid SQLite maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<location filename="../src/map/maplist.cpp" line="172"/>
|
||||
<source>TrekBuddy maps/atlases</source>
|
||||
<translation>Mapas/atlas TrekBuddy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<source>GeoTIFF images</source>
|
||||
<translation>Imágenes GeoTIFF</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<location filename="../src/map/maplist.cpp" line="177"/>
|
||||
<source>All files</source>
|
||||
<translation type="unfinished">Todos los archivos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<location filename="../src/map/maplist.cpp" line="168"/>
|
||||
<source>TwoNav maps</source>
|
||||
<translation>Mapas TwoNav</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<source>Locus/OsmAnd/RMaps SQLite maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="171"/>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<source>World-file georeferenced images</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<location filename="../src/map/maplist.cpp" line="176"/>
|
||||
<source>Online map sources</source>
|
||||
<translation>Fuentes de mapas en línea</translation>
|
||||
</message>
|
||||
|
@ -287,22 +287,23 @@
|
||||
<context>
|
||||
<name>FileSelectWidget</name>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="41"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="44"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="49"/>
|
||||
<source>Select file</source>
|
||||
<translation>Valitse tiedosto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="51"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="59"/>
|
||||
<source>No output file selected.</source>
|
||||
<translation>Ei tulostustiedostoa valittu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="61"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="69"/>
|
||||
<source>%1 is a directory.</source>
|
||||
<translation>%1 on hakemisto.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="65"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="73"/>
|
||||
<source>%1 is not writable.</source>
|
||||
<translation>%1 ei voi kirjoittaa.</translation>
|
||||
</message>
|
||||
@ -1203,97 +1204,102 @@
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="152"/>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<source>Supported files</source>
|
||||
<translation>Tuetut tiedostot</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<source>MBTiles maps</source>
|
||||
<translation>MBTiles-kartat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<source>Garmin JNX maps</source>
|
||||
<translation>Garmin JNX -kartat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<location filename="../src/map/maplist.cpp" line="156"/>
|
||||
<source>AlpineQuest maps</source>
|
||||
<translation>AlpineQuest-kartat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="155"/>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<source>Garmin IMG maps</source>
|
||||
<translation>Garmin IMG -kartat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<source>BSB nautical charts</source>
|
||||
<translation>BSB-merikartat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="159"/>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<source>GEMF maps</source>
|
||||
<translation>GEMF-kartat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<source>KMZ maps</source>
|
||||
<translation>KMZ-kartat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<source>Mapsforge maps</source>
|
||||
<translation>Mapsforge-kartat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<source>OziExplorer maps</source>
|
||||
<translation>OziExplorer-kartat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<source>Orux maps</source>
|
||||
<translation>Orux-kartat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<source>QuickChart maps</source>
|
||||
<translation>QuickChart-kartat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<source>Osmdroid SQLite maps</source>
|
||||
<translation>Osmdroid SQLite -kartat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<location filename="../src/map/maplist.cpp" line="172"/>
|
||||
<source>TrekBuddy maps/atlases</source>
|
||||
<translation>TrekBuddy-kartat/kartastot</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<source>GeoTIFF images</source>
|
||||
<translation>GeoTIFF -kuvat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<location filename="../src/map/maplist.cpp" line="177"/>
|
||||
<source>All files</source>
|
||||
<translation>Kaikki tiedostot</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<location filename="../src/map/maplist.cpp" line="168"/>
|
||||
<source>TwoNav maps</source>
|
||||
<translation>TwoNav-kartat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<source>Locus/OsmAnd/RMaps SQLite maps</source>
|
||||
<translation>Locus/OsmAnd/RMaps SQLite -kartat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="171"/>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<source>World-file georeferenced images</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<location filename="../src/map/maplist.cpp" line="176"/>
|
||||
<source>Online map sources</source>
|
||||
<translation>Online-karttojen lähteet</translation>
|
||||
</message>
|
||||
|
@ -287,22 +287,23 @@
|
||||
<context>
|
||||
<name>FileSelectWidget</name>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="41"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="44"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="49"/>
|
||||
<source>Select file</source>
|
||||
<translation>Sélectionner un fichier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="51"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="59"/>
|
||||
<source>No output file selected.</source>
|
||||
<translation>Auncun fichier sélectionné.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="61"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="69"/>
|
||||
<source>%1 is a directory.</source>
|
||||
<translation>%1 est un dossier.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="65"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="73"/>
|
||||
<source>%1 is not writable.</source>
|
||||
<translation>%1 n'est pas inscriptible.</translation>
|
||||
</message>
|
||||
@ -1203,97 +1204,102 @@
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="152"/>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<source>Supported files</source>
|
||||
<translation>Formats pris en charge</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<source>MBTiles maps</source>
|
||||
<translation>Cartes MBTiles</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<source>Garmin JNX maps</source>
|
||||
<translation>Cartes Garmin JNX</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<location filename="../src/map/maplist.cpp" line="156"/>
|
||||
<source>AlpineQuest maps</source>
|
||||
<translation>Cartes AlpineQuest</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="155"/>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<source>Garmin IMG maps</source>
|
||||
<translation>Cartes Garmin IMG</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<source>BSB nautical charts</source>
|
||||
<translation>Cartes marines BSB</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="159"/>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<source>GEMF maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<source>KMZ maps</source>
|
||||
<translation>Cartes KMZ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<source>Mapsforge maps</source>
|
||||
<translation>Cartes Mapsforge</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<source>OziExplorer maps</source>
|
||||
<translation>Cartes OziExplorer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<source>Orux maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<source>QuickChart maps</source>
|
||||
<translation>Cartes QuickChart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<source>Osmdroid SQLite maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<location filename="../src/map/maplist.cpp" line="172"/>
|
||||
<source>TrekBuddy maps/atlases</source>
|
||||
<translation>Cartes ou atlas TrekBuddy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<source>GeoTIFF images</source>
|
||||
<translation>Images GeoTIFF</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<location filename="../src/map/maplist.cpp" line="177"/>
|
||||
<source>All files</source>
|
||||
<translation type="unfinished">Tous les fichiers</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<location filename="../src/map/maplist.cpp" line="168"/>
|
||||
<source>TwoNav maps</source>
|
||||
<translation>Cartes TwoNav</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<source>Locus/OsmAnd/RMaps SQLite maps</source>
|
||||
<translation>Cartes SQLite Locus, OsmAnd ou RMaps</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="171"/>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<source>World-file georeferenced images</source>
|
||||
<translation>Images de carte positionnées par world file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<location filename="../src/map/maplist.cpp" line="176"/>
|
||||
<source>Online map sources</source>
|
||||
<translation>Cartes en ligne</translation>
|
||||
</message>
|
||||
|
@ -287,22 +287,23 @@
|
||||
<context>
|
||||
<name>FileSelectWidget</name>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="41"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="44"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="49"/>
|
||||
<source>Select file</source>
|
||||
<translation>Fájl választása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="51"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="59"/>
|
||||
<source>No output file selected.</source>
|
||||
<translation>Nincs kiválasztott kimeneti fájl.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="61"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="69"/>
|
||||
<source>%1 is a directory.</source>
|
||||
<translation>A(z) %1 egy mappa.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="65"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="73"/>
|
||||
<source>%1 is not writable.</source>
|
||||
<translation>A(z) %1 írásvédett.</translation>
|
||||
</message>
|
||||
@ -1013,7 +1014,6 @@
|
||||
<source>%n files</source>
|
||||
<translation>
|
||||
<numerusform>%n fájl</numerusform>
|
||||
<numerusform>%n fájl</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
</context>
|
||||
@ -1203,97 +1203,102 @@
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="152"/>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<source>Supported files</source>
|
||||
<translation>Támogatott fájltípusok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<location filename="../src/map/maplist.cpp" line="156"/>
|
||||
<source>AlpineQuest maps</source>
|
||||
<translation>AlpineQuest térképek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="155"/>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<source>Garmin IMG maps</source>
|
||||
<translation>Garmin IMG térképek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<source>Garmin JNX maps</source>
|
||||
<translation>Garmin JNX térképek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<source>BSB nautical charts</source>
|
||||
<translation>BSB tengeri térképek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="159"/>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<source>GEMF maps</source>
|
||||
<translation>GEMF térképek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<source>KMZ maps</source>
|
||||
<translation>KMZ térképek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<source>Mapsforge maps</source>
|
||||
<translation>Mapsforge térképek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<source>OziExplorer maps</source>
|
||||
<translation>OziExplorer térképek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<source>MBTiles maps</source>
|
||||
<translation>MBTiles térképek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<source>Orux maps</source>
|
||||
<translation>Orux térképek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<source>QuickChart maps</source>
|
||||
<translation>QuickChart térképek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<source>Osmdroid SQLite maps</source>
|
||||
<translation>Osmdroid SQLite térképek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<location filename="../src/map/maplist.cpp" line="172"/>
|
||||
<source>TrekBuddy maps/atlases</source>
|
||||
<translation>TrekBuddy térképek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<source>GeoTIFF images</source>
|
||||
<translation>GeoTIFF képek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<location filename="../src/map/maplist.cpp" line="177"/>
|
||||
<source>All files</source>
|
||||
<translation>Minden fájl</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<location filename="../src/map/maplist.cpp" line="168"/>
|
||||
<source>TwoNav maps</source>
|
||||
<translation>TwoNav térképek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<source>Locus/OsmAnd/RMaps SQLite maps</source>
|
||||
<translation>Locus/OsmAnd/RMaps SQLite térképek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="171"/>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<source>World-file georeferenced images</source>
|
||||
<translation>Georeferált világ-fájlképek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<location filename="../src/map/maplist.cpp" line="176"/>
|
||||
<source>Online map sources</source>
|
||||
<translation>Online térképforrások</translation>
|
||||
</message>
|
||||
|
@ -287,22 +287,23 @@
|
||||
<context>
|
||||
<name>FileSelectWidget</name>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="41"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="44"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="49"/>
|
||||
<source>Select file</source>
|
||||
<translation>Seleziona file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="51"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="59"/>
|
||||
<source>No output file selected.</source>
|
||||
<translation>Nessun file di output selezionato.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="61"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="69"/>
|
||||
<source>%1 is a directory.</source>
|
||||
<translation>%1 è una cartella.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="65"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="73"/>
|
||||
<source>%1 is not writable.</source>
|
||||
<translation>%1 non è scrivibile.</translation>
|
||||
</message>
|
||||
@ -1203,97 +1204,102 @@
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="152"/>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<source>Supported files</source>
|
||||
<translation>File supportati</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<location filename="../src/map/maplist.cpp" line="156"/>
|
||||
<source>AlpineQuest maps</source>
|
||||
<translation>Mappe AlpineQuest</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="155"/>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<source>Garmin IMG maps</source>
|
||||
<translation>Mappe Garmin IMG</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<source>Garmin JNX maps</source>
|
||||
<translation>Mappe Garmin JNX</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<source>BSB nautical charts</source>
|
||||
<translation>Carte nautiche BSB</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="159"/>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<source>GEMF maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<source>KMZ maps</source>
|
||||
<translation>Mappe KMZ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<source>Mapsforge maps</source>
|
||||
<translation>Mappe Mapsforge</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<source>OziExplorer maps</source>
|
||||
<translation>Mappe OziExplorer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<source>MBTiles maps</source>
|
||||
<translation>Mappe MBTiles</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<source>Orux maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<source>QuickChart maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<source>Osmdroid SQLite maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<location filename="../src/map/maplist.cpp" line="172"/>
|
||||
<source>TrekBuddy maps/atlases</source>
|
||||
<translation>Mappe/Atlanti TrekBuddy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<source>GeoTIFF images</source>
|
||||
<translation>Immagini GeoTIFF</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<location filename="../src/map/maplist.cpp" line="177"/>
|
||||
<source>All files</source>
|
||||
<translation type="unfinished">Tutti i file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<location filename="../src/map/maplist.cpp" line="168"/>
|
||||
<source>TwoNav maps</source>
|
||||
<translation>Mappe TwoNav</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<source>Locus/OsmAnd/RMaps SQLite maps</source>
|
||||
<translation>Mappe Locus/OsmAnd/RMaps o SQLite</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="171"/>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<source>World-file georeferenced images</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<location filename="../src/map/maplist.cpp" line="176"/>
|
||||
<source>Online map sources</source>
|
||||
<translation>Mappe online</translation>
|
||||
</message>
|
||||
|
@ -200,13 +200,13 @@
|
||||
<location filename="../src/GUI/elevationgraph.cpp" line="60"/>
|
||||
<source>Up</source>
|
||||
<extracomment>Use an Unicode arrow (U+2197) when there is no abbreviation or extremly short term for "Up" in your language</extracomment>
|
||||
<translation type="unfinished">Opp</translation>
|
||||
<translation>Opp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/elevationgraph.cpp" line="64"/>
|
||||
<source>Down</source>
|
||||
<extracomment>Use an Unicode arrow (U+2198) when there is no abbreviation or extremly short term for "Down" in your language</extracomment>
|
||||
<translation type="unfinished">Ned</translation>
|
||||
<translation>Ned</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/elevationgraph.cpp" line="67"/>
|
||||
@ -287,22 +287,23 @@
|
||||
<context>
|
||||
<name>FileSelectWidget</name>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="41"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="44"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="49"/>
|
||||
<source>Select file</source>
|
||||
<translation>Velg fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="51"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="59"/>
|
||||
<source>No output file selected.</source>
|
||||
<translation>Ingen utdatafil valgt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="61"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="69"/>
|
||||
<source>%1 is a directory.</source>
|
||||
<translation>%1 er en mappe.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="65"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="73"/>
|
||||
<source>%1 is not writable.</source>
|
||||
<translation>%1 er skrivebeskyttet.</translation>
|
||||
</message>
|
||||
@ -373,7 +374,7 @@
|
||||
<message>
|
||||
<location filename="../src/GUI/gui.cpp" line="219"/>
|
||||
<source>Open directory...</source>
|
||||
<translation type="unfinished">Åpne mappe …</translation>
|
||||
<translation>Åpne mappe …</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/gui.cpp" line="224"/>
|
||||
@ -597,7 +598,7 @@
|
||||
<message>
|
||||
<location filename="../src/GUI/gui.cpp" line="477"/>
|
||||
<source>Show tabs</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Vis faner</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/gui.cpp" line="486"/>
|
||||
@ -711,7 +712,7 @@
|
||||
<message>
|
||||
<location filename="../src/GUI/gui.cpp" line="955"/>
|
||||
<source>Open directory</source>
|
||||
<translation type="unfinished">Åpne mappe</translation>
|
||||
<translation>Åpne mappe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/gui.cpp" line="1959"/>
|
||||
@ -1028,7 +1029,7 @@
|
||||
<message>
|
||||
<location filename="../src/GUI/gearratiograph.cpp" line="28"/>
|
||||
<source>Top</source>
|
||||
<translation type="unfinished">Topp</translation>
|
||||
<translation>Topp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/gearratiograph.cpp" line="30"/>
|
||||
@ -1203,97 +1204,102 @@
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="152"/>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<source>Supported files</source>
|
||||
<translation>Støttede filer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<source>MBTiles maps</source>
|
||||
<translation>MBTiles-kart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<source>Garmin JNX maps</source>
|
||||
<translation>Garmin JNX-kart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<location filename="../src/map/maplist.cpp" line="156"/>
|
||||
<source>AlpineQuest maps</source>
|
||||
<translation>AlpineQuest-kart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="155"/>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<source>Garmin IMG maps</source>
|
||||
<translation>Garmin IMG-kart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<source>BSB nautical charts</source>
|
||||
<translation>BSB-sjøkart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="159"/>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<source>GEMF maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>GEMF-kart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<source>KMZ maps</source>
|
||||
<translation>KMZ-kart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<source>Mapsforge maps</source>
|
||||
<translation>Mapsforge-kart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<source>OziExplorer maps</source>
|
||||
<translation>OziExplorer-kart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<source>Orux maps</source>
|
||||
<translation>Orux-kart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<source>QuickChart maps</source>
|
||||
<translation>QuickChart-kart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<source>Osmdroid SQLite maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Osmdroid SQLite-kart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<source>Locus/OsmAnd/RMaps SQLite maps</source>
|
||||
<translation>Locus/OsmAnd/RMaps-SQLite-kart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<location filename="../src/map/maplist.cpp" line="172"/>
|
||||
<source>TrekBuddy maps/atlases</source>
|
||||
<translation>TrekBuddy-kart/atlas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<source>GeoTIFF images</source>
|
||||
<translation>GeoTIFF-bilder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<location filename="../src/map/maplist.cpp" line="177"/>
|
||||
<source>All files</source>
|
||||
<translation type="unfinished">Alle filer</translation>
|
||||
<translation>Alle filer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<location filename="../src/map/maplist.cpp" line="168"/>
|
||||
<source>TwoNav maps</source>
|
||||
<translation>TwoNav-kart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="171"/>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<source>World-file georeferenced images</source>
|
||||
<translation>World-file georefererte bilder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<location filename="../src/map/maplist.cpp" line="176"/>
|
||||
<source>Online map sources</source>
|
||||
<translation>Nettbaserte kartkilder</translation>
|
||||
</message>
|
||||
@ -1915,7 +1921,7 @@
|
||||
<message>
|
||||
<location filename="../src/GUI/optionsdialog.cpp" line="779"/>
|
||||
<source>Initial paths</source>
|
||||
<translation type="unfinished">Forvalgte stier</translation>
|
||||
<translation>Forvalgte stier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/optionsdialog.cpp" line="814"/>
|
||||
|
@ -287,22 +287,23 @@
|
||||
<context>
|
||||
<name>FileSelectWidget</name>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="41"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="44"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="49"/>
|
||||
<source>Select file</source>
|
||||
<translation>Wybierz plik</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="51"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="59"/>
|
||||
<source>No output file selected.</source>
|
||||
<translation>Nie wybrano pliku docelowego.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="61"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="69"/>
|
||||
<source>%1 is a directory.</source>
|
||||
<translation>%1 jest katalogiem.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="65"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="73"/>
|
||||
<source>%1 is not writable.</source>
|
||||
<translation>%1 nie jest zapisywalny.</translation>
|
||||
</message>
|
||||
@ -1204,97 +1205,102 @@
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="152"/>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<source>Supported files</source>
|
||||
<translation>Obsługiwane pliki</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<source>MBTiles maps</source>
|
||||
<translation>Mapy MBTiles</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<source>Garmin JNX maps</source>
|
||||
<translation>Mapy Garmin JNX</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<location filename="../src/map/maplist.cpp" line="156"/>
|
||||
<source>AlpineQuest maps</source>
|
||||
<translation>Mapy AlpineQuest</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="155"/>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<source>Garmin IMG maps</source>
|
||||
<translation>Mapy Garmin IMG</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<source>BSB nautical charts</source>
|
||||
<translation>Mapy morskie BSB</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="159"/>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<source>GEMF maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<source>KMZ maps</source>
|
||||
<translation>Mapy KMZ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<source>Mapsforge maps</source>
|
||||
<translation>Mapy Mapsforge</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<source>OziExplorer maps</source>
|
||||
<translation>Mapy OziExplorer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<source>Orux maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<source>QuickChart maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<source>Osmdroid SQLite maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<location filename="../src/map/maplist.cpp" line="172"/>
|
||||
<source>TrekBuddy maps/atlases</source>
|
||||
<translation>Mapy/atlasy TrekBuddy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<source>GeoTIFF images</source>
|
||||
<translation>Obrazy GeoTIFF</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<location filename="../src/map/maplist.cpp" line="177"/>
|
||||
<source>All files</source>
|
||||
<translation type="unfinished">Wszystkie pliki</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<location filename="../src/map/maplist.cpp" line="168"/>
|
||||
<source>TwoNav maps</source>
|
||||
<translation>Mapy TwoNav</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<source>Locus/OsmAnd/RMaps SQLite maps</source>
|
||||
<translation>Mapy Locus/OsmAnd/RMaps SQLite</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="171"/>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<source>World-file georeferenced images</source>
|
||||
<translation>Obrazy georeferencyjne z plikami ze świata</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<location filename="../src/map/maplist.cpp" line="176"/>
|
||||
<source>Online map sources</source>
|
||||
<translation>Źródła map online</translation>
|
||||
</message>
|
||||
|
@ -287,22 +287,23 @@
|
||||
<context>
|
||||
<name>FileSelectWidget</name>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="41"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="44"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="49"/>
|
||||
<source>Select file</source>
|
||||
<translation>Selecionar arquivo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="51"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="59"/>
|
||||
<source>No output file selected.</source>
|
||||
<translation>Nenhum arquivo de saída selecionado.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="61"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="69"/>
|
||||
<source>%1 is a directory.</source>
|
||||
<translation>%1 é uma pasta.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="65"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="73"/>
|
||||
<source>%1 is not writable.</source>
|
||||
<translation>%1 é apenas para leitura.</translation>
|
||||
</message>
|
||||
@ -1203,97 +1204,102 @@
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="152"/>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<source>Supported files</source>
|
||||
<translation>Formatos suportados</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<source>MBTiles maps</source>
|
||||
<translation>Mapas MBTiles</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<source>Garmin JNX maps</source>
|
||||
<translation>Mapas Garmin JNX</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<location filename="../src/map/maplist.cpp" line="156"/>
|
||||
<source>AlpineQuest maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="155"/>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<source>Garmin IMG maps</source>
|
||||
<translation>Mapas Garmin IMG</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<source>BSB nautical charts</source>
|
||||
<translation>Cartas náuticas BSB</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="159"/>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<source>GEMF maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<source>KMZ maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<source>Mapsforge maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<source>OziExplorer maps</source>
|
||||
<translation>Mapas OziExplorer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<source>Orux maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<source>QuickChart maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<source>Osmdroid SQLite maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<location filename="../src/map/maplist.cpp" line="172"/>
|
||||
<source>TrekBuddy maps/atlases</source>
|
||||
<translation>Mapas/Atlas TrekBuddy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<source>GeoTIFF images</source>
|
||||
<translation>Imagens GeoTIFF</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<location filename="../src/map/maplist.cpp" line="177"/>
|
||||
<source>All files</source>
|
||||
<translation type="unfinished">Todos os arquivos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<location filename="../src/map/maplist.cpp" line="168"/>
|
||||
<source>TwoNav maps</source>
|
||||
<translation>Mapas TwoNav</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<source>Locus/OsmAnd/RMaps SQLite maps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="171"/>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<source>World-file georeferenced images</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<location filename="../src/map/maplist.cpp" line="176"/>
|
||||
<source>Online map sources</source>
|
||||
<translation>Mapas online</translation>
|
||||
</message>
|
||||
|
@ -287,22 +287,23 @@
|
||||
<context>
|
||||
<name>FileSelectWidget</name>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="41"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="44"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="49"/>
|
||||
<source>Select file</source>
|
||||
<translation>Выбрать файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="51"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="59"/>
|
||||
<source>No output file selected.</source>
|
||||
<translation>Не выбран файл вывода.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="61"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="69"/>
|
||||
<source>%1 is a directory.</source>
|
||||
<translation>%1 - это директория.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="65"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="73"/>
|
||||
<source>%1 is not writable.</source>
|
||||
<translation>%1 не доступен для записи.</translation>
|
||||
</message>
|
||||
@ -1204,97 +1205,102 @@
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="152"/>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<source>Supported files</source>
|
||||
<translation>Все поддерживаемые файлы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<source>MBTiles maps</source>
|
||||
<translation>MBTiles карты</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<source>Garmin JNX maps</source>
|
||||
<translation>Garmin JNX карты</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<location filename="../src/map/maplist.cpp" line="156"/>
|
||||
<source>AlpineQuest maps</source>
|
||||
<translation>AlpineQuest карты</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="155"/>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<source>Garmin IMG maps</source>
|
||||
<translation>Garmin IMG карты</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<source>BSB nautical charts</source>
|
||||
<translation>BSB навигационные карты</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="159"/>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<source>GEMF maps</source>
|
||||
<translation>GEMF карты</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<source>KMZ maps</source>
|
||||
<translation>KMZ карты</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<source>Mapsforge maps</source>
|
||||
<translation>Карты Mapsforge</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<source>OziExplorer maps</source>
|
||||
<translation>OziExplorer карты</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<source>Orux maps</source>
|
||||
<translation>Orux карты</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<source>QuickChart maps</source>
|
||||
<translation>QuickChart карты</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<source>Osmdroid SQLite maps</source>
|
||||
<translation>Osmdroid SQLite карты</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<location filename="../src/map/maplist.cpp" line="172"/>
|
||||
<source>TrekBuddy maps/atlases</source>
|
||||
<translation>TrekBuddy карты/атласы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<source>GeoTIFF images</source>
|
||||
<translation>GeoTIFF изображения</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<location filename="../src/map/maplist.cpp" line="177"/>
|
||||
<source>All files</source>
|
||||
<translation>Все файлы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<location filename="../src/map/maplist.cpp" line="168"/>
|
||||
<source>TwoNav maps</source>
|
||||
<translation>TwoNav карты</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<source>Locus/OsmAnd/RMaps SQLite maps</source>
|
||||
<translation>Locus/OsmAnd/RMaps SQLite карты</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="171"/>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<source>World-file georeferenced images</source>
|
||||
<translation>Изображения с геопривязкой World-файлe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<location filename="../src/map/maplist.cpp" line="176"/>
|
||||
<source>Online map sources</source>
|
||||
<translation>Источники онлайн карт</translation>
|
||||
</message>
|
||||
|
@ -287,22 +287,23 @@
|
||||
<context>
|
||||
<name>FileSelectWidget</name>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="41"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="44"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="49"/>
|
||||
<source>Select file</source>
|
||||
<translation>Välj fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="51"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="59"/>
|
||||
<source>No output file selected.</source>
|
||||
<translation>Ingen utdatafil vald.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="61"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="69"/>
|
||||
<source>%1 is a directory.</source>
|
||||
<translation>%1 är en mapp.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="65"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="73"/>
|
||||
<source>%1 is not writable.</source>
|
||||
<translation>%1 är skrivskyddad.</translation>
|
||||
</message>
|
||||
@ -1203,97 +1204,102 @@
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="152"/>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<source>Supported files</source>
|
||||
<translation>Filer som stöds</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<source>MBTiles maps</source>
|
||||
<translation>MBTiles-kartor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<source>Garmin JNX maps</source>
|
||||
<translation>Garmin JNX-kartor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<location filename="../src/map/maplist.cpp" line="156"/>
|
||||
<source>AlpineQuest maps</source>
|
||||
<translation>AlpineQuest kartor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="155"/>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<source>Garmin IMG maps</source>
|
||||
<translation>Garmin IMG-kartor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<source>BSB nautical charts</source>
|
||||
<translation>BSB nautiska sjökort</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="159"/>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<source>GEMF maps</source>
|
||||
<translation>GEMF-kartor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<source>KMZ maps</source>
|
||||
<translation>KMZ-kartor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<source>Mapsforge maps</source>
|
||||
<translation>Mapsforge-kartor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<source>OziExplorer maps</source>
|
||||
<translation>OziExplorer-kartor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<source>Orux maps</source>
|
||||
<translation>Orux-kartor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<source>QuickChart maps</source>
|
||||
<translation>QuickChart-kartor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<source>Osmdroid SQLite maps</source>
|
||||
<translation>Osmdroid SQLite-kartor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<location filename="../src/map/maplist.cpp" line="172"/>
|
||||
<source>TrekBuddy maps/atlases</source>
|
||||
<translation>TrekBuddy-kartor/-atlaser</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<source>GeoTIFF images</source>
|
||||
<translation>GeoTIFF-bilder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<location filename="../src/map/maplist.cpp" line="177"/>
|
||||
<source>All files</source>
|
||||
<translation>Alla filer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<location filename="../src/map/maplist.cpp" line="168"/>
|
||||
<source>TwoNav maps</source>
|
||||
<translation>TwoNav-kartor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<source>Locus/OsmAnd/RMaps SQLite maps</source>
|
||||
<translation>Locus/OsmAnd/RMaps SQLite-kartor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="171"/>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<source>World-file georeferenced images</source>
|
||||
<translation>Georefererade bilder i världsfil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<location filename="../src/map/maplist.cpp" line="176"/>
|
||||
<source>Online map sources</source>
|
||||
<translation>Online-kartkällor</translation>
|
||||
</message>
|
||||
|
@ -287,22 +287,23 @@
|
||||
<context>
|
||||
<name>FileSelectWidget</name>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="41"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="44"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="49"/>
|
||||
<source>Select file</source>
|
||||
<translation>Dosya seç</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="51"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="59"/>
|
||||
<source>No output file selected.</source>
|
||||
<translation>Çıktı dosyası seçilmedi.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="61"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="69"/>
|
||||
<source>%1 is a directory.</source>
|
||||
<translation>%1 bir dizin.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="65"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="73"/>
|
||||
<source>%1 is not writable.</source>
|
||||
<translation>%1 yazılabilir değil.</translation>
|
||||
</message>
|
||||
@ -1202,97 +1203,102 @@
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="152"/>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<source>Supported files</source>
|
||||
<translation>Desteklenen dosyalar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<source>MBTiles maps</source>
|
||||
<translation>MBTiles haritaları</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<source>Garmin JNX maps</source>
|
||||
<translation>Garmin JNX haritaları</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<location filename="../src/map/maplist.cpp" line="156"/>
|
||||
<source>AlpineQuest maps</source>
|
||||
<translation>AlpineQuest haritaları</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="155"/>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<source>Garmin IMG maps</source>
|
||||
<translation>Garmin IMG haritaları</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<source>BSB nautical charts</source>
|
||||
<translation>BSB denizcilik haritaları</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="159"/>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<source>GEMF maps</source>
|
||||
<translation>GEMF haritaları</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<source>KMZ maps</source>
|
||||
<translation>KMZ haritaları</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<source>Mapsforge maps</source>
|
||||
<translation>Mapsforge haritaları</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<source>OziExplorer maps</source>
|
||||
<translation>OziExplorer haritaları</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<source>Orux maps</source>
|
||||
<translation>Orux haritaları</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<source>QuickChart maps</source>
|
||||
<translation>QuickChart haritaları</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<source>Osmdroid SQLite maps</source>
|
||||
<translation>Osmdroid SQLite haritaları</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<location filename="../src/map/maplist.cpp" line="172"/>
|
||||
<source>TrekBuddy maps/atlases</source>
|
||||
<translation>TrekBuddy haritaları/atlasları</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<source>GeoTIFF images</source>
|
||||
<translation>GeoTIFF görüntüleri</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<location filename="../src/map/maplist.cpp" line="177"/>
|
||||
<source>All files</source>
|
||||
<translation>Tüm dosyalar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<location filename="../src/map/maplist.cpp" line="168"/>
|
||||
<source>TwoNav maps</source>
|
||||
<translation>TwoNav haritaları</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<source>Locus/OsmAnd/RMaps SQLite maps</source>
|
||||
<translation>Locus/OsmAnd/RMaps SQLite haritaları</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="171"/>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<source>World-file georeferenced images</source>
|
||||
<translation>World-file coğrafi referanslı görüntüleri</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<location filename="../src/map/maplist.cpp" line="176"/>
|
||||
<source>Online map sources</source>
|
||||
<translation>Çevrim içi harita kaynakları</translation>
|
||||
</message>
|
||||
|
@ -287,22 +287,23 @@
|
||||
<context>
|
||||
<name>FileSelectWidget</name>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="41"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="44"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="49"/>
|
||||
<source>Select file</source>
|
||||
<translation>Вибрати файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="51"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="59"/>
|
||||
<source>No output file selected.</source>
|
||||
<translation>Не обрано вихідний файл.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="61"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="69"/>
|
||||
<source>%1 is a directory.</source>
|
||||
<translation>%1 є каталогом.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="65"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="73"/>
|
||||
<source>%1 is not writable.</source>
|
||||
<translation>%1 недоступний для запису.</translation>
|
||||
</message>
|
||||
@ -1204,97 +1205,102 @@
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="152"/>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<source>Supported files</source>
|
||||
<translation>Всі підтримувані формати</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<location filename="../src/map/maplist.cpp" line="156"/>
|
||||
<source>AlpineQuest maps</source>
|
||||
<translation>AlpineQuest мапи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="155"/>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<source>Garmin IMG maps</source>
|
||||
<translation>Garmin IMG мапи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<source>Garmin JNX maps</source>
|
||||
<translation>Garmin JNX мапи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<source>BSB nautical charts</source>
|
||||
<translation>BSB навігаційні мапи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="159"/>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<source>GEMF maps</source>
|
||||
<translation>GEMF мапи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<source>KMZ maps</source>
|
||||
<translation>KMZ мапи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<source>Mapsforge maps</source>
|
||||
<translation>Mapsforge мапи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<source>OziExplorer maps</source>
|
||||
<translation>OziExplorer мапи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<source>MBTiles maps</source>
|
||||
<translation>MBTiles мапи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<source>Orux maps</source>
|
||||
<translation>Orux мапи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<source>QuickChart maps</source>
|
||||
<translation>QuickChart мапи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<source>Osmdroid SQLite maps</source>
|
||||
<translation>Osmdroid SQLite мапи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<location filename="../src/map/maplist.cpp" line="172"/>
|
||||
<source>TrekBuddy maps/atlases</source>
|
||||
<translation>TrekBuddy мапи/атласи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<source>GeoTIFF images</source>
|
||||
<translation>GeoTIFF зображення</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<location filename="../src/map/maplist.cpp" line="177"/>
|
||||
<source>All files</source>
|
||||
<translation>Всі файли</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<location filename="../src/map/maplist.cpp" line="168"/>
|
||||
<source>TwoNav maps</source>
|
||||
<translation>TwoNav мапи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<source>Locus/OsmAnd/RMaps SQLite maps</source>
|
||||
<translation>Locus/OsmAnd/RMaps SQLite мапи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="171"/>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<source>World-file georeferenced images</source>
|
||||
<translation>Зображення з геоприв’язками World-файлу</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<location filename="../src/map/maplist.cpp" line="176"/>
|
||||
<source>Online map sources</source>
|
||||
<translation>Онлайнові джерела мап</translation>
|
||||
</message>
|
||||
|
@ -287,22 +287,23 @@
|
||||
<context>
|
||||
<name>FileSelectWidget</name>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="41"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="44"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="49"/>
|
||||
<source>Select file</source>
|
||||
<translation>选择文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="51"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="59"/>
|
||||
<source>No output file selected.</source>
|
||||
<translation>未选择输出文件。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="61"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="69"/>
|
||||
<source>%1 is a directory.</source>
|
||||
<translation>%1 是一个目录。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="65"/>
|
||||
<location filename="../src/GUI/fileselectwidget.cpp" line="73"/>
|
||||
<source>%1 is not writable.</source>
|
||||
<translation>%1 不可写。</translation>
|
||||
</message>
|
||||
@ -1202,97 +1203,102 @@
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="152"/>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<source>Supported files</source>
|
||||
<translation>支持的文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="154"/>
|
||||
<location filename="../src/map/maplist.cpp" line="156"/>
|
||||
<source>AlpineQuest maps</source>
|
||||
<translation>AlpineQuest 地图</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="155"/>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<source>Garmin IMG maps</source>
|
||||
<translation>佳明 IMG 地图</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<source>Garmin JNX maps</source>
|
||||
<translation>佳明 JNX 地图</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="158"/>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<source>BSB nautical charts</source>
|
||||
<translation>BSB 海图</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="159"/>
|
||||
<location filename="../src/map/maplist.cpp" line="157"/>
|
||||
<source>GEMF maps</source>
|
||||
<translation>GEMF 地图</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="160"/>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<source>KMZ maps</source>
|
||||
<translation>KMZ 地图</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="161"/>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<source>Mapsforge maps</source>
|
||||
<translation>Mapsforge 地图</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="162"/>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<source>OziExplorer maps</source>
|
||||
<translation>OziExplorer 地图</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="163"/>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<source>MBTiles maps</source>
|
||||
<translation>MBTiles 地图</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="164"/>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<source>Orux maps</source>
|
||||
<translation>Orux 地图</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<source>QuickChart maps</source>
|
||||
<translation>QuickChart 地图</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="165"/>
|
||||
<location filename="../src/map/maplist.cpp" line="168"/>
|
||||
<source>TwoNav maps</source>
|
||||
<translation>TwoNav 地图</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="166"/>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<source>Osmdroid SQLite maps</source>
|
||||
<translation>Osmdroid SQLite 地图</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="167"/>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<source>Locus/OsmAnd/RMaps SQLite maps</source>
|
||||
<translation>Locus/OsmAnd/RMaps SQLite 地图</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="169"/>
|
||||
<location filename="../src/map/maplist.cpp" line="172"/>
|
||||
<source>TrekBuddy maps/atlases</source>
|
||||
<translation>TrekBuddy 地图/地图集</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="170"/>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<source>GeoTIFF images</source>
|
||||
<translation>GeoTIFF 图像</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="171"/>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<source>World-file georeferenced images</source>
|
||||
<translation>World-file georeferenced 图像</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="173"/>
|
||||
<location filename="../src/map/maplist.cpp" line="176"/>
|
||||
<source>Online map sources</source>
|
||||
<translation>在线地图源</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/map/maplist.cpp" line="174"/>
|
||||
<location filename="../src/map/maplist.cpp" line="177"/>
|
||||
<source>All files</source>
|
||||
<translation>所有文件</translation>
|
||||
</message>
|
||||
|
@ -462,6 +462,20 @@
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Viewer</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>xml</string>
|
||||
</array>
|
||||
<key>CFBundleTypeMIMETypes</key>
|
||||
<array>
|
||||
<string>application/vnd.orux.map+xml</string>
|
||||
</array>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>Orux Map File</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Viewer</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
@ -1524,6 +1538,27 @@
|
||||
<string>application/vnd.twonav.trk</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>UTTypeIdentifier</key>
|
||||
<string>com.oruxmap.xml</string>
|
||||
<key>UTTypeReferenceURL</key>
|
||||
<string>https://www.oruxmaps.com/OruxMapsManual-9.0_en.pdf</string>
|
||||
<key>UTTypeDescription</key>
|
||||
<string>Orux Map File</string>
|
||||
<key>UTTypeConformsTo</key>
|
||||
<array>
|
||||
<string>public.xml</string>
|
||||
</array>
|
||||
<key>UTTypeTagSpecification</key>
|
||||
<dict>
|
||||
<key>public.filename-extension</key>
|
||||
<array>
|
||||
<string>xml</string>
|
||||
</array>
|
||||
<key>public.mime-type</key>
|
||||
<string>application/vnd.orux.map+xml</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
|
||||
<key>UTExportedTypeDeclarations</key>
|
||||
|
@ -22,7 +22,8 @@
|
||||
TwoNav RMaps, Garmin IMG & JNX maps, GeoTIFF images,
|
||||
BSB nautical charts, KMZ maps, AlpineQuest maps,
|
||||
Locus/OsmAnd/RMaps SQLite maps, Osmdroid SQLite maps,
|
||||
Mapsforge maps, QCT maps, ESRI world files).</li>
|
||||
Mapsforge maps, QCT maps, GEMF maps, Orux maps,
|
||||
ESRI world files).</li>
|
||||
<li>Elevation, speed, heart rate, cadence, power, temperature and
|
||||
gear ratio graphs.</li>
|
||||
<li>Support for multiple tracks in one view.</li>
|
||||
@ -105,5 +106,6 @@
|
||||
<mimetype>application/vnd.twonav.rte</mimetype>
|
||||
<mimetype>application/vnd.twonav.wpt</mimetype>
|
||||
<mimetype>application/vnd.cgtk.gemf</mimetype>
|
||||
<mimetype>application/vnd.orux.map+xml</mimetype>
|
||||
</mimetypes>
|
||||
</component>
|
||||
|
@ -15,4 +15,4 @@ Icon=gpxsee
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Graphics;Viewer;Education;Geography;Maps;Sports;Qt
|
||||
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
|
||||
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
|
||||
|
@ -331,4 +331,12 @@
|
||||
<glob pattern="*.qct"/>
|
||||
</mime-type>
|
||||
|
||||
<mime-type type="application/vnd.orux.map+xml">
|
||||
<comment>Orux Map File</comment>
|
||||
<sub-class-of type="application/xml"/>
|
||||
<generic-icon name="application-xml"/>
|
||||
<root-XML namespaceURI="http://oruxtracker.com/app/res/calibration" localName="OruxTracker"/>
|
||||
<glob pattern="*.otrk2.xml"/>
|
||||
</mime-type>
|
||||
|
||||
</mime-info>
|
||||
|
@ -37,7 +37,7 @@ Unicode true
|
||||
; The name of the installer
|
||||
Name "GPXSee"
|
||||
; Program version
|
||||
!define VERSION "11.2"
|
||||
!define VERSION "11.4"
|
||||
|
||||
; The file to write
|
||||
OutFile "GPXSee-${VERSION}_x64.exe"
|
||||
|
@ -5,13 +5,16 @@
|
||||
#include <QFileInfo>
|
||||
#include <QApplication>
|
||||
#include <QFontMetrics>
|
||||
#include "common/util.h"
|
||||
#include "fileselectwidget.h"
|
||||
|
||||
|
||||
FileSelectWidget::FileSelectWidget(QWidget *parent) : QWidget(parent)
|
||||
{
|
||||
_edit = new QLineEdit();
|
||||
#ifndef Q_OS_ANDROID
|
||||
#ifdef Q_OS_ANDROID
|
||||
_edit->setDisabled(true);
|
||||
#else // Q_OS_ANDROID
|
||||
QFontMetrics fm(QApplication::font());
|
||||
_edit->setMinimumWidth(fm.averageCharWidth() * (QDir::homePath().length()
|
||||
+ 12));
|
||||
@ -37,39 +40,44 @@ FileSelectWidget::FileSelectWidget(QWidget *parent) : QWidget(parent)
|
||||
|
||||
void FileSelectWidget::browse()
|
||||
{
|
||||
#ifdef Q_OS_ANDROID
|
||||
_fileName = QFileDialog::getSaveFileName(this, tr("Select file"));
|
||||
if (!_fileName.isEmpty())
|
||||
_edit->setText(Util::displayName(_fileName));
|
||||
#else // Q_OS_ANDROID
|
||||
QFileInfo fi(_edit->text());
|
||||
QString fileName = QFileDialog::getSaveFileName(this, tr("Select file"),
|
||||
fi.dir().absolutePath(), _filter);
|
||||
|
||||
if (!fileName.isEmpty())
|
||||
_edit->setText(fileName);
|
||||
#endif // Q_OS_ANDROID
|
||||
}
|
||||
|
||||
bool FileSelectWidget::checkFile(QString &error) const
|
||||
{
|
||||
if (_edit->text().isEmpty()) {
|
||||
if (file().isEmpty()) {
|
||||
error = tr("No output file selected.");
|
||||
return false;
|
||||
}
|
||||
|
||||
QFile file(_edit->text());
|
||||
QFileInfo fi(file);
|
||||
QFile f(file());
|
||||
QFileInfo fi(f);
|
||||
bool exists = fi.exists();
|
||||
bool opened = false;
|
||||
|
||||
if (exists && fi.isDir()) {
|
||||
error = tr("%1 is a directory.").arg(file.fileName());
|
||||
error = tr("%1 is a directory.").arg(f.fileName());
|
||||
return false;
|
||||
} else if ((exists && !fi.isWritable())
|
||||
|| !(opened = file.open(QFile::Append))) {
|
||||
error = tr("%1 is not writable.").arg(file.fileName());
|
||||
|| !(opened = f.open(QFile::Append))) {
|
||||
error = tr("%1 is not writable.").arg(f.fileName());
|
||||
return false;
|
||||
}
|
||||
|
||||
if (opened) {
|
||||
file.close();
|
||||
f.close();
|
||||
if (!exists)
|
||||
file.remove();
|
||||
f.remove();
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -14,9 +14,13 @@ class FileSelectWidget : public QWidget
|
||||
public:
|
||||
FileSelectWidget(QWidget *parent = 0);
|
||||
|
||||
#ifdef Q_OS_ANDROID
|
||||
QString file() const {return _fileName;}
|
||||
#else // Q_OS_ANDROID
|
||||
QString file() const {return _edit->text();}
|
||||
void setFile(const QString &file) {_edit->setText(file);}
|
||||
void setFilter(const QString &filter) {_filter = filter;}
|
||||
#endif // Q_OS_ANDROID
|
||||
bool checkFile(QString &error) const;
|
||||
|
||||
private slots:
|
||||
@ -29,8 +33,11 @@ private:
|
||||
#else // Q_OS_WIN32
|
||||
QToolButton *_button;
|
||||
#endif // Q_OS_WIN32
|
||||
|
||||
#ifdef Q_OS_ANDROID
|
||||
QString _fileName;
|
||||
#else // Q_OS_ANDROID
|
||||
QString _filter;
|
||||
#endif // Q_OS_ANDROID
|
||||
};
|
||||
|
||||
#endif // FILESELECTWIDGET_H
|
||||
|
@ -27,8 +27,8 @@ PDFExportDialog::PDFExportDialog(PDFExport &exp, Units units, QWidget *parent)
|
||||
#ifndef Q_OS_ANDROID
|
||||
_fileSelect->setFilter(tr("PDF files") + " (*.pdf);;" + tr("All files")
|
||||
+ " (*)");
|
||||
#endif // Q_OS_ANDROID
|
||||
_fileSelect->setFile(_export.fileName);
|
||||
#endif // Q_OS_ANDROID
|
||||
|
||||
_paperSize = new QComboBox();
|
||||
_paperSize->addItem("A2", QPageSize::PageSizeId::A2);
|
||||
|
@ -24,8 +24,8 @@ PNGExportDialog::PNGExportDialog(PNGExport &exp, QWidget *parent)
|
||||
#ifndef Q_OS_ANDROID
|
||||
_fileSelect->setFilter(tr("PNG files") + " (*.png);;" + tr("All files")
|
||||
+ " (*)");
|
||||
#endif // Q_OS_ANDROID
|
||||
_fileSelect->setFile(_export.fileName);
|
||||
#endif // Q_OS_ANDROID
|
||||
|
||||
_width = new QSpinBox();
|
||||
_width->setMinimum(256);
|
||||
|
@ -99,18 +99,26 @@ void WaypointItem::updateCache()
|
||||
QPainterPath p;
|
||||
qreal pointSize = _font.bold() ? HS(_size) : _size;
|
||||
|
||||
if (_showLabel) {
|
||||
if (_showLabel && !_waypoint.name().isEmpty()) {
|
||||
QFontMetrics fm(_font);
|
||||
_labelBB = fm.tightBoundingRect(_waypoint.name());
|
||||
|
||||
if (_showIcon && _icon) {
|
||||
if (_font.bold())
|
||||
p.addRect(-_icon->width() * 0.625, -_icon->height() * 1.25,
|
||||
p.addRect(-_icon->width() * 0.625, _waypoint.icon().isNull()
|
||||
? -_icon->height() * 1.25 : -_icon->height() * 0.625,
|
||||
_icon->width() * 1.25, _icon->height() * 1.25);
|
||||
else
|
||||
p.addRect(-_icon->width()/2.0, -_icon->height(), _icon->width(),
|
||||
p.addRect(-_icon->width()/2.0, _waypoint.icon().isNull()
|
||||
? -_icon->height() : -_icon->height()/2, _icon->width(),
|
||||
_icon->height());
|
||||
p.addRect(0, 0, _labelBB.width(), _labelBB.height() + fm.descent());
|
||||
|
||||
if (_waypoint.icon().isNull())
|
||||
p.addRect(0, 0, _labelBB.width(), _labelBB.height()
|
||||
+ fm.descent());
|
||||
else
|
||||
p.addRect(_icon->width()/2, _icon->height()/2, _labelBB.width(),
|
||||
_labelBB.height() + fm.descent());
|
||||
} else {
|
||||
p.addRect(-pointSize/2, -pointSize/2, pointSize, pointSize);
|
||||
p.addRect(pointSize/2, pointSize/2, _labelBB.width(),
|
||||
@ -119,10 +127,12 @@ void WaypointItem::updateCache()
|
||||
} else {
|
||||
if (_showIcon && _icon) {
|
||||
if (_font.bold())
|
||||
p.addRect(-_icon->width() * 0.625, -_icon->height() * 1.25,
|
||||
p.addRect(-_icon->width() * 0.625, _waypoint.icon().isNull()
|
||||
? -_icon->height() * 1.25 : -_icon->height() * 0.625,
|
||||
_icon->width() * 1.25, _icon->height() * 1.25);
|
||||
else
|
||||
p.addRect(-_icon->width()/2, -_icon->height(), _icon->width(),
|
||||
p.addRect(-_icon->width()/2, _waypoint.icon().isNull()
|
||||
? -_icon->height() : -_icon->height()/2, _icon->width(),
|
||||
_icon->height());
|
||||
} else
|
||||
p.addRect(-pointSize/2, -pointSize/2, pointSize, pointSize);
|
||||
@ -140,12 +150,16 @@ void WaypointItem::paint(QPainter *painter,
|
||||
|
||||
painter->setPen(_color);
|
||||
|
||||
if (_showLabel) {
|
||||
if (_showLabel && !_waypoint.name().isEmpty()) {
|
||||
painter->setFont(_font);
|
||||
if (_showIcon && _icon)
|
||||
painter->drawText(-qMax(_labelBB.x(), 0), _labelBB.height(),
|
||||
_waypoint.name());
|
||||
else
|
||||
if (_showIcon && _icon) {
|
||||
if (_waypoint.icon().isNull())
|
||||
painter->drawText(-qMax(_labelBB.x(), 0), _labelBB.height(),
|
||||
_waypoint.name());
|
||||
else
|
||||
painter->drawText(_icon->width()/2 - qMax(_labelBB.x(), 0),
|
||||
_icon->height()/2 + _labelBB.height(), _waypoint.name());
|
||||
} else
|
||||
painter->drawText(pointSize/2 - qMax(_labelBB.x(), 0), pointSize/2
|
||||
+ _labelBB.height(), _waypoint.name());
|
||||
}
|
||||
@ -153,11 +167,13 @@ void WaypointItem::paint(QPainter *painter,
|
||||
painter->setBrush(QBrush(_color, Qt::SolidPattern));
|
||||
if (_showIcon && _icon) {
|
||||
if (_font.bold())
|
||||
painter->drawPixmap(-_icon->width() * 0.625, -_icon->height() * 1.25,
|
||||
painter->drawPixmap(-_icon->width() * 0.625, _waypoint.icon().isNull()
|
||||
? -_icon->height() * 1.25 : -_icon->height() * 0.625,
|
||||
_icon->scaled(_icon->width() * 1.25, _icon->height() * 1.25,
|
||||
Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
|
||||
else
|
||||
painter->drawPixmap(-_icon->width()/2.0, -_icon->height(), *_icon);
|
||||
painter->drawPixmap(-_icon->width()/2.0, _waypoint.icon().isNull()
|
||||
? -_icon->height() : -_icon->height()/2, *_icon);
|
||||
} else
|
||||
painter->drawEllipse(-pointSize/2, -pointSize/2, pointSize, pointSize);
|
||||
|
||||
|
@ -68,7 +68,7 @@ void NetworkTimeout::timerEvent(QTimerEvent *ev)
|
||||
return;
|
||||
QNetworkReply *reply = static_cast<QNetworkReply*>(parent());
|
||||
if (reply->isRunning())
|
||||
reply->close();
|
||||
reply->abort();
|
||||
_timer.stop();
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
#include <cctype>
|
||||
#include <cmath>
|
||||
#include <QFileInfo>
|
||||
#include <QTemporaryDir>
|
||||
#ifdef Q_OS_ANDROID
|
||||
#include <QUrl>
|
||||
#include <QCoreApplication>
|
||||
@ -139,3 +140,9 @@ QString Util::displayName(const QString &path)
|
||||
return path;
|
||||
#endif // Q_OS_ANDROID
|
||||
}
|
||||
|
||||
const QTemporaryDir &Util::tempDir()
|
||||
{
|
||||
static QTemporaryDir dir;
|
||||
return dir;
|
||||
}
|
||||
|
@ -3,12 +3,15 @@
|
||||
|
||||
#include <QString>
|
||||
|
||||
class QTemporaryDir;
|
||||
|
||||
namespace Util
|
||||
{
|
||||
int str2int(const char *str, int len);
|
||||
double niceNum(double x, bool round);
|
||||
QString file2name(const QString &path);
|
||||
QString displayName(const QString &path);
|
||||
const QTemporaryDir &tempDir();
|
||||
}
|
||||
|
||||
#endif // UTIL_H
|
||||
|
@ -53,6 +53,7 @@ static QMultiMap<QString, Parser*> parsers()
|
||||
map.insert("gpx", &gpx);
|
||||
map.insert("tcx", &tcx);
|
||||
map.insert("kml", &kml);
|
||||
map.insert("kmz", &kml);
|
||||
map.insert("fit", &fit);
|
||||
map.insert("csv", &csv);
|
||||
map.insert("igc", &igc);
|
||||
@ -162,7 +163,7 @@ QString Data::formats()
|
||||
+ qApp->translate("Data", "IGC files") + " (*.igc);;"
|
||||
+ qApp->translate("Data", "ITN files") + " (*.itn);;"
|
||||
+ qApp->translate("Data", "JPEG images") + " (*.jpg *.jpeg);;"
|
||||
+ qApp->translate("Data", "KML files") + " (*.kml);;"
|
||||
+ qApp->translate("Data", "KML files") + " (*.kml *.kmz);;"
|
||||
+ qApp->translate("Data", "LOC files") + " (*.loc);;"
|
||||
+ qApp->translate("Data", "NMEA files") + " (*.nmea);;"
|
||||
+ qApp->translate("Data", "ONmove files") + " (*.omd *.ghp);;"
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include "common/garmin.h"
|
||||
#include "common/textcodec.h"
|
||||
#include "common/color.h"
|
||||
#include "common/util.h"
|
||||
#include "address.h"
|
||||
#include "gpiparser.h"
|
||||
|
||||
@ -388,12 +389,6 @@ static quint32 readAddress(DataStream &stream, Waypoint &waypoint)
|
||||
return rs + rh.size;
|
||||
}
|
||||
|
||||
static const QTemporaryDir &tempDir()
|
||||
{
|
||||
static QTemporaryDir dir;
|
||||
return dir;
|
||||
}
|
||||
|
||||
static quint32 readImageInfo(DataStream &stream, Waypoint &waypoint,
|
||||
const QString &fileName, int &imgId)
|
||||
{
|
||||
@ -408,12 +403,12 @@ static quint32 readImageInfo(DataStream &stream, Waypoint &waypoint,
|
||||
ba.resize(size);
|
||||
stream.readRawData(ba.data(), ba.size());
|
||||
|
||||
if (tempDir().isValid()) {
|
||||
if (Util::tempDir().isValid()) {
|
||||
QBuffer buf(&ba);
|
||||
QImageReader ir(&buf);
|
||||
|
||||
QByteArray id(fileName.toUtf8() + QByteArray::number(imgId++));
|
||||
QFile imgFile(tempDir().path() + "/" + QString("%0.%1").arg(
|
||||
QFile imgFile(Util::tempDir().path() + "/" + QString("%0.%1").arg(
|
||||
QCryptographicHash::hash(id, QCryptographicHash::Sha1).toHex(),
|
||||
QString(ir.format())));
|
||||
imgFile.open(QIODevice::WriteOnly);
|
||||
|
@ -1,5 +1,33 @@
|
||||
/*
|
||||
WARNING: This code uses internal Qt API - the QZipReader class for reading
|
||||
ZIP files - and things may break if Qt changes the API. For Qt5 this is not
|
||||
a problem as we can "see the future" now and there are no changes in all
|
||||
the supported Qt5 versions up to the last one (5.15). In Qt6 the class
|
||||
might change or even disappear in the future, but this is very unlikely
|
||||
as there were no changes for several years and The Qt Company's policy
|
||||
is: "do not invest any resources into any desktop related stuff unless
|
||||
absolutely necessary". There is an issue (QTBUG-3897) since the year 2009 to
|
||||
include the ZIP reader into the public API, which aptly illustrates the
|
||||
effort The Qt Company is willing to make about anything desktop related...
|
||||
*/
|
||||
|
||||
#include <QFileInfo>
|
||||
#include <QTemporaryDir>
|
||||
#include <QCryptographicHash>
|
||||
#include <QtEndian>
|
||||
#include <QUrl>
|
||||
#include <QRegularExpression>
|
||||
#include <private/qzipreader_p.h>
|
||||
#include "common/util.h"
|
||||
#include "kmlparser.h"
|
||||
|
||||
static bool isZIP(QFile *file)
|
||||
{
|
||||
quint32 magic;
|
||||
|
||||
return (file->read((char *)&magic, sizeof(magic)) == (qint64)sizeof(magic)
|
||||
&& qFromLittleEndian(magic) == 0x04034b50);
|
||||
}
|
||||
|
||||
qreal KMLParser::number()
|
||||
{
|
||||
@ -463,6 +491,9 @@ void KMLParser::multiGeometry(QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints, const QString &name, const QString &desc,
|
||||
const QDateTime ×tamp)
|
||||
{
|
||||
TrackData *tp = 0;
|
||||
Area *ap = 0;
|
||||
|
||||
while (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("Point")) {
|
||||
waypoints.append(Waypoint());
|
||||
@ -472,28 +503,90 @@ void KMLParser::multiGeometry(QList<TrackData> &tracks, QList<Area> &areas,
|
||||
w.setTimestamp(timestamp);
|
||||
point(w);
|
||||
} else if (_reader.name() == QLatin1String("LineString")) {
|
||||
tracks.append(TrackData());
|
||||
TrackData &t = tracks.last();
|
||||
t.append(SegmentData());
|
||||
t.setName(name);
|
||||
t.setDescription(desc);
|
||||
lineString(t.last());
|
||||
if (!tp) {
|
||||
tracks.append(TrackData());
|
||||
tp = &tracks.last();
|
||||
tp->setName(name);
|
||||
tp->setDescription(desc);
|
||||
}
|
||||
tp->append(SegmentData());
|
||||
lineString(tp->last());
|
||||
} else if (_reader.name() == QLatin1String("Polygon")) {
|
||||
areas.append(Area());
|
||||
Area &a = areas.last();
|
||||
a.setName(name);
|
||||
a.setDescription(desc);
|
||||
polygon(a);
|
||||
if (!ap) {
|
||||
areas.append(Area());
|
||||
ap = &areas.last();
|
||||
ap->setName(name);
|
||||
ap->setDescription(desc);
|
||||
}
|
||||
polygon(*ap);
|
||||
} else
|
||||
_reader.skipCurrentElement();
|
||||
}
|
||||
}
|
||||
|
||||
void KMLParser::placemark(QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints)
|
||||
void KMLParser::photoOverlay(const Ctx &ctx, QVector<Waypoint> &waypoints,
|
||||
QMap<QString, QPixmap> &icons)
|
||||
{
|
||||
QString name, desc, phone, address;
|
||||
QString img, id;
|
||||
Waypoint w;
|
||||
static QRegularExpression re("\\$\\[[^\\]]+\\]");
|
||||
|
||||
while (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("name"))
|
||||
w.setName(_reader.readElementText());
|
||||
else if (_reader.name() == QLatin1String("description"))
|
||||
w.setDescription(_reader.readElementText());
|
||||
else if (_reader.name() == QLatin1String("phoneNumber"))
|
||||
w.setPhone(_reader.readElementText());
|
||||
else if (_reader.name() == QLatin1String("address"))
|
||||
w.setAddress(_reader.readElementText());
|
||||
else if (_reader.name() == QLatin1String("TimeStamp"))
|
||||
w.setTimestamp(timeStamp());
|
||||
else if (_reader.name() == QLatin1String("Style")) {
|
||||
style(ctx.dir, icons);
|
||||
id = QString();
|
||||
} else if (_reader.name() == QLatin1String("StyleMap"))
|
||||
styleMap(icons);
|
||||
else if (_reader.name() == QLatin1String("Icon"))
|
||||
img = icon();
|
||||
else if (_reader.name() == QLatin1String("Point"))
|
||||
point(w);
|
||||
else if (_reader.name() == QLatin1String("styleUrl"))
|
||||
id = styleUrl();
|
||||
else
|
||||
_reader.skipCurrentElement();
|
||||
}
|
||||
|
||||
if (!w.coordinates().isNull()) {
|
||||
w.setIcon(icons.value(id));
|
||||
|
||||
img.replace(re, "0");
|
||||
if (!QUrl(img).scheme().isEmpty())
|
||||
w.addLink(Link(img, "Photo Overlay"));
|
||||
else if (ctx.zip && Util::tempDir().isValid()) {
|
||||
QFileInfo fi(img);
|
||||
QByteArray id(ctx.path.toUtf8() + img.toUtf8());
|
||||
QString path(Util::tempDir().path() + "/" + QString("%0.%1")
|
||||
.arg(QCryptographicHash::hash(id, QCryptographicHash::Sha1)
|
||||
.toHex(), QString(fi.suffix())));
|
||||
QFile::rename(ctx.dir.absoluteFilePath(img), path);
|
||||
w.addImage(path);
|
||||
} else if (!ctx.zip)
|
||||
w.addImage(ctx.dir.absoluteFilePath(img));
|
||||
|
||||
waypoints.append(w);
|
||||
}
|
||||
}
|
||||
|
||||
void KMLParser::placemark(const Ctx &ctx, QList<TrackData> &tracks,
|
||||
QList<Area> &areas, QVector<Waypoint> &waypoints,
|
||||
QMap<QString, QPixmap> &icons)
|
||||
{
|
||||
QString name, desc, phone, address, id;
|
||||
QDateTime timestamp;
|
||||
Waypoint *wp = 0;
|
||||
TrackData *tp = 0;
|
||||
Area *ap = 0;
|
||||
|
||||
while (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("name"))
|
||||
@ -506,87 +599,185 @@ void KMLParser::placemark(QList<TrackData> &tracks, QList<Area> &areas,
|
||||
address = _reader.readElementText();
|
||||
else if (_reader.name() == QLatin1String("TimeStamp"))
|
||||
timestamp = timeStamp();
|
||||
else if (_reader.name() == QLatin1String("Style")) {
|
||||
style(ctx.dir, icons);
|
||||
id = QString();
|
||||
} else if (_reader.name() == QLatin1String("StyleMap"))
|
||||
styleMap(icons);
|
||||
else if (_reader.name() == QLatin1String("MultiGeometry"))
|
||||
multiGeometry(tracks, areas, waypoints, name, desc, timestamp);
|
||||
else if (_reader.name() == QLatin1String("Point")) {
|
||||
waypoints.append(Waypoint());
|
||||
Waypoint &w = waypoints.last();
|
||||
w.setName(name);
|
||||
w.setDescription(desc);
|
||||
w.setTimestamp(timestamp);
|
||||
w.setAddress(address);
|
||||
w.setPhone(phone);
|
||||
point(w);
|
||||
wp = &waypoints.last();
|
||||
point(*wp);
|
||||
} else if (_reader.name() == QLatin1String("LineString")
|
||||
|| _reader.name() == QLatin1String("LinearRing")) {
|
||||
tracks.append(TrackData());
|
||||
TrackData &t = tracks.last();
|
||||
t.append(SegmentData());
|
||||
t.setName(name);
|
||||
t.setDescription(desc);
|
||||
lineString(t.last());
|
||||
tp = &tracks.last();
|
||||
tp->append(SegmentData());
|
||||
lineString(tp->last());
|
||||
} else if (_reader.name() == QLatin1String("Track")) {
|
||||
tracks.append(TrackData());
|
||||
TrackData &t = tracks.last();
|
||||
t.append(SegmentData());
|
||||
t.setName(name);
|
||||
t.setDescription(desc);
|
||||
track(t.last());
|
||||
tp = &tracks.last();
|
||||
tp->append(SegmentData());
|
||||
track(tp->last());
|
||||
} else if (_reader.name() == QLatin1String("MultiTrack")) {
|
||||
tracks.append(TrackData());
|
||||
TrackData &t = tracks.last();
|
||||
t.setName(name);
|
||||
t.setDescription(desc);
|
||||
multiTrack(t);
|
||||
tp = &tracks.last();
|
||||
multiTrack(*tp);
|
||||
} else if (_reader.name() == QLatin1String("Polygon")) {
|
||||
areas.append(Area());
|
||||
Area &a = areas.last();
|
||||
a.setName(name);
|
||||
a.setDescription(desc);
|
||||
polygon(a);
|
||||
} else
|
||||
ap = &areas.last();
|
||||
polygon(*ap);
|
||||
} else if (_reader.name() == QLatin1String("styleUrl"))
|
||||
id = styleUrl();
|
||||
else
|
||||
_reader.skipCurrentElement();
|
||||
}
|
||||
|
||||
if (wp) {
|
||||
wp->setName(name);
|
||||
wp->setDescription(desc);
|
||||
wp->setTimestamp(timestamp);
|
||||
wp->setAddress(address);
|
||||
wp->setPhone(phone);
|
||||
wp->setIcon(icons.value(id));
|
||||
} else if (tp) {
|
||||
tp->setName(name);
|
||||
tp->setDescription(desc);
|
||||
} else if (ap) {
|
||||
ap->setName(name);
|
||||
ap->setDescription(desc);
|
||||
}
|
||||
}
|
||||
|
||||
void KMLParser::folder(QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints)
|
||||
QString KMLParser::icon()
|
||||
{
|
||||
QString path;
|
||||
|
||||
while (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("href"))
|
||||
path = _reader.readElementText();
|
||||
else
|
||||
_reader.skipCurrentElement();
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
QString KMLParser::styleUrl()
|
||||
{
|
||||
QString id(_reader.readElementText());
|
||||
return (id.at(0) == '#') ? id.right(id.size() - 1) : QString();
|
||||
}
|
||||
|
||||
void KMLParser::iconStyle(const QDir &dir, const QString &id,
|
||||
QMap<QString, QPixmap> &icons)
|
||||
{
|
||||
while (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("Placemark"))
|
||||
placemark(tracks, areas, waypoints);
|
||||
else if (_reader.name() == QLatin1String("Folder"))
|
||||
folder(tracks, areas, waypoints);
|
||||
if (_reader.name() == QLatin1String("Icon"))
|
||||
icons.insert(id, QPixmap(dir.absoluteFilePath(icon())));
|
||||
else
|
||||
_reader.skipCurrentElement();
|
||||
}
|
||||
}
|
||||
|
||||
void KMLParser::document(QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints)
|
||||
void KMLParser::styleMapPair(const QString &id, QMap<QString, QPixmap> &icons)
|
||||
{
|
||||
QString key, url;
|
||||
|
||||
while (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("Document"))
|
||||
document(tracks, areas, waypoints);
|
||||
else if (_reader.name() == QLatin1String("Placemark"))
|
||||
placemark(tracks, areas, waypoints);
|
||||
else if (_reader.name() == QLatin1String("Folder"))
|
||||
folder(tracks, areas, waypoints);
|
||||
if (_reader.name() == QLatin1String("key"))
|
||||
key = _reader.readElementText();
|
||||
else if (_reader.name() == QLatin1String("styleUrl"))
|
||||
url = styleUrl();
|
||||
else
|
||||
_reader.skipCurrentElement();
|
||||
}
|
||||
|
||||
if (key == "normal")
|
||||
icons.insert(id, icons.value(url));
|
||||
}
|
||||
|
||||
void KMLParser::styleMap(QMap<QString, QPixmap> &icons)
|
||||
{
|
||||
QString id = _reader.attributes().value("id").toString();
|
||||
|
||||
while (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("Pair"))
|
||||
styleMapPair(id, icons);
|
||||
else
|
||||
_reader.skipCurrentElement();
|
||||
}
|
||||
}
|
||||
|
||||
void KMLParser::kml(QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints)
|
||||
void KMLParser::style(const QDir &dir, QMap<QString, QPixmap> &icons)
|
||||
{
|
||||
QString id = _reader.attributes().value("id").toString();
|
||||
|
||||
while (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("IconStyle"))
|
||||
iconStyle(dir, id, icons);
|
||||
else
|
||||
_reader.skipCurrentElement();
|
||||
}
|
||||
}
|
||||
|
||||
void KMLParser::folder(const Ctx &ctx, QList<TrackData> &tracks,
|
||||
QList<Area> &areas, QVector<Waypoint> &waypoints,
|
||||
QMap<QString, QPixmap> &icons)
|
||||
{
|
||||
while (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("Document"))
|
||||
document(tracks, areas, waypoints);
|
||||
else if (_reader.name() == QLatin1String("Placemark"))
|
||||
placemark(tracks, areas, waypoints);
|
||||
document(ctx, tracks, areas, waypoints);
|
||||
else if (_reader.name() == QLatin1String("Folder"))
|
||||
folder(tracks, areas, waypoints);
|
||||
folder(ctx, tracks, areas, waypoints, icons);
|
||||
else if (_reader.name() == QLatin1String("Placemark"))
|
||||
placemark(ctx, tracks, areas, waypoints, icons);
|
||||
else if (_reader.name() == QLatin1String("PhotoOverlay"))
|
||||
photoOverlay(ctx, waypoints, icons);
|
||||
else
|
||||
_reader.skipCurrentElement();
|
||||
}
|
||||
}
|
||||
|
||||
void KMLParser::document(const Ctx &ctx, QList<TrackData> &tracks,
|
||||
QList<Area> &areas, QVector<Waypoint> &waypoints)
|
||||
{
|
||||
QMap<QString, QPixmap> icons;
|
||||
|
||||
while (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("Document"))
|
||||
document(ctx, tracks, areas, waypoints);
|
||||
else if (_reader.name() == QLatin1String("Folder"))
|
||||
folder(ctx, tracks, areas, waypoints, icons);
|
||||
else if (_reader.name() == QLatin1String("Placemark"))
|
||||
placemark(ctx, tracks, areas, waypoints, icons);
|
||||
else if (_reader.name() == QLatin1String("PhotoOverlay"))
|
||||
photoOverlay(ctx, waypoints, icons);
|
||||
else if (_reader.name() == QLatin1String("Style"))
|
||||
style(ctx.dir, icons);
|
||||
else if (_reader.name() == QLatin1String("StyleMap"))
|
||||
styleMap(icons);
|
||||
else
|
||||
_reader.skipCurrentElement();
|
||||
}
|
||||
}
|
||||
|
||||
void KMLParser::kml(const Ctx &ctx, QList<TrackData> &tracks,
|
||||
QList<Area> &areas, QVector<Waypoint> &waypoints)
|
||||
{
|
||||
QMap<QString, QPixmap> icons;
|
||||
|
||||
while (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("Document"))
|
||||
document(ctx, tracks, areas, waypoints);
|
||||
else if (_reader.name() == QLatin1String("Folder"))
|
||||
folder(ctx, tracks, areas, waypoints, icons);
|
||||
else if (_reader.name() == QLatin1String("Placemark"))
|
||||
placemark(ctx, tracks, areas, waypoints, icons);
|
||||
else if (_reader.name() == QLatin1String("PhotoOverlay"))
|
||||
photoOverlay(ctx, waypoints, icons);
|
||||
else
|
||||
_reader.skipCurrentElement();
|
||||
}
|
||||
@ -596,15 +787,50 @@ bool KMLParser::parse(QFile *file, QList<TrackData> &tracks,
|
||||
QList<RouteData> &routes, QList<Area> &areas, QVector<Waypoint> &waypoints)
|
||||
{
|
||||
Q_UNUSED(routes);
|
||||
QFileInfo fi(*file);
|
||||
|
||||
_reader.clear();
|
||||
_reader.setDevice(file);
|
||||
|
||||
if (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("kml"))
|
||||
kml(tracks, areas, waypoints);
|
||||
else
|
||||
_reader.raiseError("Not a KML file");
|
||||
if (isZIP(file)) {
|
||||
QZipReader zip(fi.absoluteFilePath(), QIODevice::ReadOnly);
|
||||
QTemporaryDir tempDir;
|
||||
if (!tempDir.isValid() || !zip.extractAll(tempDir.path()))
|
||||
_reader.raiseError("Error extracting ZIP file");
|
||||
else {
|
||||
QDir zipDir(tempDir.path());
|
||||
QFileInfoList files(zipDir.entryInfoList(QStringList("*.kml"),
|
||||
QDir::Files));
|
||||
|
||||
if (files.isEmpty())
|
||||
_reader.raiseError("No KML file found in ZIP file");
|
||||
else {
|
||||
QFile kmlFile(files.first().absoluteFilePath());
|
||||
if (!kmlFile.open(QIODevice::ReadOnly))
|
||||
_reader.raiseError("Error opening KML file");
|
||||
else {
|
||||
_reader.setDevice(&kmlFile);
|
||||
|
||||
if (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("kml"))
|
||||
kml(Ctx(fi.absoluteFilePath(), zipDir, true),
|
||||
tracks, areas, waypoints);
|
||||
else
|
||||
_reader.raiseError("Not a KML file");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
file->reset();
|
||||
_reader.setDevice(file);
|
||||
|
||||
if (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("kml"))
|
||||
kml(Ctx(fi.absoluteFilePath(), fi.absoluteDir(), false), tracks,
|
||||
areas, waypoints);
|
||||
else
|
||||
_reader.raiseError("Not a KML file");
|
||||
}
|
||||
}
|
||||
|
||||
return !_reader.error();
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
#include <QXmlStreamReader>
|
||||
#include <QDateTime>
|
||||
#include <QDir>
|
||||
#include "parser.h"
|
||||
|
||||
class KMLParser : public Parser
|
||||
@ -14,17 +15,28 @@ public:
|
||||
int errorLine() const {return _reader.lineNumber();}
|
||||
|
||||
private:
|
||||
void kml(QList<TrackData> &tracks, QList<Area> &areas,
|
||||
struct Ctx {
|
||||
Ctx(const QString &path, const QDir &dir, bool zip)
|
||||
: path(path), dir(dir), zip(zip) {}
|
||||
|
||||
QString path;
|
||||
QDir dir;
|
||||
bool zip;
|
||||
};
|
||||
|
||||
void kml(const Ctx &ctx, QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints);
|
||||
void document(QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints);
|
||||
void folder(QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints);
|
||||
void placemark(QList<TrackData> &tracks, QList<Area> &areas,
|
||||
void document(const Ctx &ctx, QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints);
|
||||
void folder(const Ctx &ctx, QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints, QMap<QString, QPixmap> &icons);
|
||||
void placemark(const Ctx &ctx, QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints, QMap<QString, QPixmap> &icons);
|
||||
void multiGeometry(QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints, const QString &name, const QString &desc,
|
||||
const QDateTime ×tamp);
|
||||
void photoOverlay(const Ctx &ctx, QVector<Waypoint> &waypoints,
|
||||
QMap<QString, QPixmap> &icons);
|
||||
void track(SegmentData &segment);
|
||||
void multiTrack(TrackData &t);
|
||||
void lineString(SegmentData &segment);
|
||||
@ -45,6 +57,13 @@ private:
|
||||
QDateTime timeStamp();
|
||||
qreal number();
|
||||
QDateTime time();
|
||||
QString icon();
|
||||
QString styleUrl();
|
||||
void style(const QDir &dir, QMap<QString, QPixmap> &icons);
|
||||
void styleMapPair(const QString &id, QMap<QString, QPixmap> &icons);
|
||||
void styleMap(QMap<QString, QPixmap> &icons);
|
||||
void iconStyle(const QDir &dir, const QString &id,
|
||||
QMap<QString, QPixmap> &icons);
|
||||
|
||||
QXmlStreamReader _reader;
|
||||
};
|
||||
|
@ -53,6 +53,7 @@ const GCS &GCS::WGS84()
|
||||
QList<GCS::Entry> GCS::defaults()
|
||||
{
|
||||
QList<GCS::Entry> list;
|
||||
list.append(GCS::Entry(4326, 6326, "WGS 1984", WGS84()));
|
||||
list.append(GCS::Entry(4326, 6326, "WGS 84", WGS84()));
|
||||
list.append(GCS::Entry(4326, 6326, "WGS84", WGS84()));
|
||||
return list;
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include "qctmap.h"
|
||||
#include "osmdroidmap.h"
|
||||
#include "gemfmap.h"
|
||||
#include "oruxmap.h"
|
||||
#include "invalidmap.h"
|
||||
#include "maplist.h"
|
||||
|
||||
@ -52,6 +53,7 @@ MapList::ParserMap MapList::parsers()
|
||||
map.insert("qct", &QCTMap::create);
|
||||
map.insert("sqlite", &OsmdroidMap::create);
|
||||
map.insert("gemf", &GEMFMap::create);
|
||||
map.insert("otrk2.xml", &OruxMap::create);
|
||||
|
||||
return map;
|
||||
}
|
||||
@ -62,7 +64,7 @@ Map *MapList::loadFile(const QString &path, const Projection &proj, bool *isDir)
|
||||
{
|
||||
ParserMap::iterator it;
|
||||
QFileInfo fi(path);
|
||||
QString suffix(fi.suffix().toLower());
|
||||
QString suffix(fi.completeSuffix().toLower());
|
||||
Map *map = 0;
|
||||
QStringList errors;
|
||||
|
||||
@ -161,6 +163,7 @@ QString MapList::formats()
|
||||
+ qApp->translate("MapList", "Mapsforge maps") + " (*.map);;"
|
||||
+ qApp->translate("MapList", "OziExplorer maps") + " (*.map);;"
|
||||
+ qApp->translate("MapList", "MBTiles maps") + " (*.mbtiles);;"
|
||||
+ qApp->translate("MapList", "Orux maps") + " (*.otrk2.xml);;"
|
||||
+ qApp->translate("MapList", "QuickChart maps") + " (*.qct);;"
|
||||
+ qApp->translate("MapList", "TwoNav maps") + " (*.rmap *.rtmap);;"
|
||||
+ qApp->translate("MapList", "Osmdroid SQLite maps") + " (*.sqlite);;"
|
||||
|
603
src/map/oruxmap.cpp
Normal file
603
src/map/oruxmap.cpp
Normal file
@ -0,0 +1,603 @@
|
||||
#include <QPainter>
|
||||
#include <QPixmapCache>
|
||||
#include <QSqlQuery>
|
||||
#include <QSqlRecord>
|
||||
#include <QSqlField>
|
||||
#include <QFile>
|
||||
#include <QFileInfo>
|
||||
#include <QDir>
|
||||
#include <QXmlStreamReader>
|
||||
#include "pcs.h"
|
||||
#include "utm.h"
|
||||
#include "oruxmap.h"
|
||||
|
||||
|
||||
#define META_TYPE(type) static_cast<QMetaType::Type>(type)
|
||||
|
||||
static bool intAttr(QXmlStreamReader &reader, const QXmlStreamAttributes &attr,
|
||||
const QString &name, int &val)
|
||||
{
|
||||
bool ok;
|
||||
if (!attr.hasAttribute(name)) {
|
||||
reader.raiseError(QString("Missing %1 attribute").arg(name));
|
||||
return false;
|
||||
}
|
||||
val = attr.value(name).toInt(&ok);
|
||||
if (!ok) {
|
||||
reader.raiseError(QString("Invalid %1 attribute").arg(name));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool dblAttr(QXmlStreamReader &reader, const QXmlStreamAttributes &attr,
|
||||
const QString &name, double &val)
|
||||
{
|
||||
bool ok;
|
||||
if (!attr.hasAttribute(name)) {
|
||||
reader.raiseError(QString("Missing %1 attribute").arg(name));
|
||||
return false;
|
||||
}
|
||||
val = attr.value(name).toDouble(&ok);
|
||||
if (!ok) {
|
||||
reader.raiseError(QString("Invalid %1 attribute").arg(name));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool strAttr(QXmlStreamReader &reader, const QXmlStreamAttributes &attr,
|
||||
const QString &name, QString &val)
|
||||
{
|
||||
if (!attr.hasAttribute(name)) {
|
||||
reader.raiseError(QString("Missing %1 attribute").arg(name));
|
||||
return false;
|
||||
}
|
||||
|
||||
val = attr.value(name).toString();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static PointD corner2point(const QString &name, const QSize &size)
|
||||
{
|
||||
if (name == "TL")
|
||||
return PointD(0, 0);
|
||||
else if (name == "BR")
|
||||
return PointD(size.width(), size.height());
|
||||
else if (name == "TR")
|
||||
return PointD(size.width(), 0);
|
||||
else if (name == "BL")
|
||||
return PointD(0, size.height());
|
||||
else
|
||||
return PointD();
|
||||
}
|
||||
|
||||
static Projection::Setup lcc2setup(const QStringList &list)
|
||||
{
|
||||
double params[6];
|
||||
bool ok;
|
||||
|
||||
if (list.size() < 7)
|
||||
return Projection::Setup();
|
||||
for (int i = 1; i < 7; i++) {
|
||||
params[i - 1] = list.at(i).toDouble(&ok);
|
||||
if (!ok)
|
||||
return Projection::Setup();
|
||||
}
|
||||
|
||||
return Projection::Setup(params[0], params[1], NAN, params[4],
|
||||
params[5], params[2], params[3]);
|
||||
}
|
||||
|
||||
static Projection::Setup laea2setup(const QStringList &list)
|
||||
{
|
||||
double params[2];
|
||||
bool ok;
|
||||
|
||||
if (list.size() < 3)
|
||||
return Projection::Setup();
|
||||
for (int i = 1; i < 3; i++) {
|
||||
params[i - 1] = list.at(i).toDouble(&ok);
|
||||
if (!ok)
|
||||
return Projection::Setup();
|
||||
}
|
||||
|
||||
return Projection::Setup(params[1], params[0], NAN, 0, 0, NAN, NAN);
|
||||
}
|
||||
|
||||
static Projection::Setup polyconic2setup(const QStringList &list)
|
||||
{
|
||||
double params[3];
|
||||
bool ok;
|
||||
|
||||
if (list.size() < 4)
|
||||
return Projection::Setup();
|
||||
for (int i = 1; i < 4; i++) {
|
||||
params[i - 1] = list.at(i).toDouble(&ok);
|
||||
if (!ok)
|
||||
return Projection::Setup();
|
||||
}
|
||||
|
||||
return Projection::Setup(NAN, params[0], NAN, params[1], params[2], NAN,
|
||||
NAN);
|
||||
}
|
||||
|
||||
static Projection::Setup tm2setup(const QStringList &list)
|
||||
{
|
||||
double params[5];
|
||||
bool ok;
|
||||
|
||||
if (list.size() < 6)
|
||||
return Projection::Setup();
|
||||
for (int i = 1; i < 6; i++) {
|
||||
params[i - 1] = list.at(i).toDouble(&ok);
|
||||
if (!ok)
|
||||
return Projection::Setup();
|
||||
}
|
||||
|
||||
return Projection::Setup(params[1], params[0], params[2], params[3],
|
||||
params[4], NAN, NAN);
|
||||
}
|
||||
|
||||
static Projection::Setup utm2setup(const QStringList &list)
|
||||
{
|
||||
bool ok;
|
||||
if (list.size() < 2)
|
||||
return Projection::Setup();
|
||||
int zone = list.at(1).toInt(&ok);
|
||||
return ok ? UTM::setup(zone) : Projection::Setup();
|
||||
}
|
||||
|
||||
static Projection::Setup mercator2setup(const QStringList &list)
|
||||
{
|
||||
double lon;
|
||||
bool ok;
|
||||
|
||||
if (list.size() < 2)
|
||||
return Projection::Setup(0, 0, NAN, 0, 0, NAN, NAN);
|
||||
lon = list.at(1).toDouble(&ok);
|
||||
|
||||
return ok ? Projection::Setup(0, lon, NAN, 0, 0, NAN, NAN)
|
||||
: Projection::Setup();
|
||||
}
|
||||
|
||||
static GCS createGCS(const QString &datum)
|
||||
{
|
||||
QStringList dl(datum.split(':'));
|
||||
return (GCS::gcs(dl.first()));
|
||||
}
|
||||
|
||||
static Projection createProjection(const GCS &gcs, const QString &name)
|
||||
{
|
||||
PCS pcs;
|
||||
QStringList pl(name.split(','));
|
||||
|
||||
if (pl.first() == "Latitude/Longitude")
|
||||
return Projection(gcs);
|
||||
else if (pl.first() == "UTM")
|
||||
pcs = PCS(gcs, 9807, utm2setup(pl), 9001);
|
||||
else if (pl.first() == "Mercator")
|
||||
pcs = PCS(gcs, 1024, Projection::Setup(), 9001);
|
||||
else if (pl.first() == "Mercator Ellipsoidal")
|
||||
pcs = PCS(gcs, 9804, mercator2setup(pl), 9001);
|
||||
else if (pl.first() == "Transverse Mercator")
|
||||
pcs = PCS(gcs, 9807, tm2setup(pl), 9001);
|
||||
else if (pl.first() == "Lambert Conformal Conic")
|
||||
pcs = PCS(gcs, 9802, lcc2setup(pl), 9001);
|
||||
else if (pl.first() == "(A)Lambert Azimuthual Equal Area")
|
||||
pcs = PCS(gcs, 9820, laea2setup(pl), 9001);
|
||||
else if (pl.first() == "Polyconic (American)")
|
||||
pcs = PCS(gcs, 9818, polyconic2setup(pl), 9001);
|
||||
else if (pl.first() == "(IG) Irish Grid")
|
||||
pcs = PCS(gcs, 9807, Projection::Setup(53.5, -8, 1.000035, 200000,
|
||||
250000, NAN, NAN), 9001);
|
||||
else if (pl.first() == "(SUI) Swiss Grid")
|
||||
pcs = PCS(gcs, 9815, Projection::Setup(46.570866, 7.26225, 1.0, 600000,
|
||||
200000, 90.0, 90.0), 9001);
|
||||
else if (pl.first() == "Rijksdriehoeksmeting")
|
||||
pcs = PCS(gcs, 9809, Projection::Setup(52.1561605555556,
|
||||
5.38763888888889, 0.9999079, 155000, 463000, NAN, NAN), 9001);
|
||||
else
|
||||
return Projection();
|
||||
|
||||
return Projection(pcs);
|
||||
}
|
||||
|
||||
static Transform computeTransformation(const Projection &proj,
|
||||
const QList<CalibrationPoint> &points)
|
||||
{
|
||||
QList<ReferencePoint> rp;
|
||||
|
||||
for (int i = 0; i < points.size(); i++)
|
||||
rp.append(points.at(i).rp(proj));
|
||||
|
||||
return Transform(rp);
|
||||
}
|
||||
|
||||
void OruxMap::calibrationPoints(QXmlStreamReader &reader, const QSize &size,
|
||||
QList<CalibrationPoint> &points)
|
||||
{
|
||||
while (reader.readNextStartElement()) {
|
||||
if (reader.name() == QLatin1String("CalibrationPoint")) {
|
||||
double lon, lat;
|
||||
QString corner;
|
||||
|
||||
QXmlStreamAttributes attr = reader.attributes();
|
||||
if (!dblAttr(reader, attr, "lat", lat))
|
||||
return;
|
||||
if (!dblAttr(reader, attr, "lon", lon))
|
||||
return;
|
||||
if (!strAttr(reader, attr, "corner", corner))
|
||||
return;
|
||||
|
||||
CalibrationPoint p(corner2point(corner, size), Coordinates(lon, lat));
|
||||
if (!p.isValid()) {
|
||||
reader.raiseError(QString("invalid calibration point"));
|
||||
return;
|
||||
}
|
||||
points.append(p);
|
||||
|
||||
reader.readElementText();
|
||||
} else
|
||||
reader.skipCurrentElement();
|
||||
}
|
||||
}
|
||||
|
||||
void OruxMap::mapCalibration(QXmlStreamReader &reader, const QString &dir,
|
||||
int level)
|
||||
{
|
||||
int zoom;
|
||||
QSize tileSize, size, calibrationSize;
|
||||
QString fileName;
|
||||
Projection proj;
|
||||
Transform t;
|
||||
|
||||
QXmlStreamAttributes attr = reader.attributes();
|
||||
if (!intAttr(reader, attr, "layerLevel", zoom))
|
||||
return;
|
||||
|
||||
while (reader.readNextStartElement()) {
|
||||
if (reader.name() == QLatin1String("OruxTracker"))
|
||||
oruxTracker(reader, dir, level + 1);
|
||||
else if (reader.name() == QLatin1String("MapName")) {
|
||||
QString name(reader.readElementText());
|
||||
if (!level && dir.isEmpty())
|
||||
_name = name;
|
||||
} else if (reader.name() == QLatin1String("MapChunks")) {
|
||||
int xMax, yMax, width, height;
|
||||
QString datum, projection;
|
||||
|
||||
QXmlStreamAttributes attr = reader.attributes();
|
||||
if (!intAttr(reader, attr, "xMax", xMax))
|
||||
return;
|
||||
if (!intAttr(reader, attr, "yMax", yMax))
|
||||
return;
|
||||
if (!intAttr(reader, attr, "img_width", width))
|
||||
return;
|
||||
if (!intAttr(reader, attr, "img_height", height))
|
||||
return;
|
||||
if (!strAttr(reader, attr, "datum", datum))
|
||||
return;
|
||||
if (!strAttr(reader, attr, "projection", projection))
|
||||
return;
|
||||
if (!strAttr(reader, attr, "file_name", fileName))
|
||||
return;
|
||||
|
||||
tileSize = QSize(width, height);
|
||||
size = QSize(xMax * width, yMax * height);
|
||||
calibrationSize = size;
|
||||
|
||||
GCS gcs(createGCS(datum));
|
||||
if (!gcs.isValid()) {
|
||||
reader.raiseError(QString("%1: invalid/unknown datum")
|
||||
.arg(datum));
|
||||
return;
|
||||
}
|
||||
proj = createProjection(gcs, projection);
|
||||
if (!proj.isValid()) {
|
||||
reader.raiseError(QString("%1: invalid/unknown projection")
|
||||
.arg(projection));
|
||||
return;
|
||||
}
|
||||
|
||||
reader.readElementText();
|
||||
|
||||
} else if (reader.name() == QLatin1String("MapDimensions")) {
|
||||
int height, width;
|
||||
|
||||
QXmlStreamAttributes attr = reader.attributes();
|
||||
if (!intAttr(reader, attr, "height", height))
|
||||
return;
|
||||
if (!intAttr(reader, attr, "width", width))
|
||||
return;
|
||||
|
||||
calibrationSize = QSize(width, height);
|
||||
|
||||
reader.readElementText();
|
||||
} else if (reader.name() == QLatin1String("CalibrationPoints")) {
|
||||
QList<CalibrationPoint> points;
|
||||
|
||||
calibrationPoints(reader, calibrationSize, points);
|
||||
|
||||
t = computeTransformation(proj, points);
|
||||
if (!t.isValid()) {
|
||||
reader.raiseError(t.errorString());
|
||||
return;
|
||||
}
|
||||
} else
|
||||
reader.skipCurrentElement();
|
||||
}
|
||||
|
||||
if (tileSize.isValid()) {
|
||||
if (!t.isValid()) {
|
||||
reader.raiseError("Invalid map calibration");
|
||||
return;
|
||||
}
|
||||
|
||||
QDir mapDir(QFileInfo(path()).absoluteDir());
|
||||
QDir subDir = dir.isEmpty()
|
||||
? mapDir : QDir(mapDir.absoluteFilePath(dir));
|
||||
QString set(subDir.absoluteFilePath("set"));
|
||||
|
||||
_zooms.append(Zoom(zoom, tileSize, size, proj, t, fileName, set));
|
||||
}
|
||||
}
|
||||
|
||||
void OruxMap::oruxTracker(QXmlStreamReader &reader, const QString &dir,
|
||||
int level)
|
||||
{
|
||||
if (level > 1 || (level && !dir.isEmpty())) {
|
||||
reader.raiseError("invalid map nesting");
|
||||
return;
|
||||
}
|
||||
|
||||
while (reader.readNextStartElement()) {
|
||||
if (reader.name() == QLatin1String("MapCalibration"))
|
||||
mapCalibration(reader, dir, level);
|
||||
else
|
||||
reader.skipCurrentElement();
|
||||
}
|
||||
}
|
||||
|
||||
bool OruxMap::readXML(const QString &path, const QString &dir)
|
||||
{
|
||||
QFile file(path);
|
||||
|
||||
if (!file.open(QFile::ReadOnly | QFile::Text))
|
||||
return false;
|
||||
|
||||
QXmlStreamReader reader(&file);
|
||||
if (reader.readNextStartElement()) {
|
||||
if (reader.name() == QLatin1String("OruxTracker"))
|
||||
oruxTracker(reader, dir, 0);
|
||||
else
|
||||
reader.raiseError("Not a Orux map calibration file");
|
||||
}
|
||||
if (reader.error()) {
|
||||
_errorString = QString("%1: %2").arg(reader.lineNumber())
|
||||
.arg(reader.errorString());
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
OruxMap::OruxMap(const QString &fileName, QObject *parent)
|
||||
: Map(fileName, parent), _zoom(0), _mapRatio(1.0), _valid(false)
|
||||
{
|
||||
QFileInfo fi(fileName);
|
||||
QDir dir(fi.absoluteDir());
|
||||
|
||||
if (!readXML(fileName))
|
||||
return;
|
||||
if (_zooms.isEmpty()) {
|
||||
QStringList list(dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot));
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
QDir subDir(dir.absoluteFilePath(list.at(i)));
|
||||
if (!readXML(subDir.absoluteFilePath(list.at(i) + ".otrk2.xml"),
|
||||
list.at(i))) {
|
||||
_errorString = list.at(i) + ": " + _errorString;
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (_zooms.isEmpty()) {
|
||||
_errorString = "No usable zoom level found";
|
||||
return;
|
||||
}
|
||||
}
|
||||
std::sort(_zooms.begin(), _zooms.end());
|
||||
|
||||
|
||||
if (dir.exists("OruxMapsImages.db")) {
|
||||
QString dbFile(dir.absoluteFilePath("OruxMapsImages.db"));
|
||||
_db = QSqlDatabase::addDatabase("QSQLITE", dbFile);
|
||||
_db.setDatabaseName(dbFile);
|
||||
_db.setConnectOptions("QSQLITE_OPEN_READONLY");
|
||||
if (!_db.open()) {
|
||||
_errorString = "Error opening database file";
|
||||
return;
|
||||
}
|
||||
|
||||
QSqlRecord r = _db.record("tiles");
|
||||
if (r.isEmpty()
|
||||
|| r.field(0).name() != "x"
|
||||
|| META_TYPE(r.field(0).type()) != QMetaType::Int
|
||||
|| r.field(1).name() != "y"
|
||||
|| META_TYPE(r.field(1).type()) != QMetaType::Int
|
||||
|| r.field(2).name() != "z"
|
||||
|| META_TYPE(r.field(2).type()) != QMetaType::Int
|
||||
|| r.field(3).name() != "image"
|
||||
|| META_TYPE(r.field(3).type()) != QMetaType::QByteArray) {
|
||||
_errorString = "Invalid table format";
|
||||
return;
|
||||
}
|
||||
|
||||
_db.close();
|
||||
} else {
|
||||
for (int i = 0; i < _zooms.size(); i++) {
|
||||
if (!_zooms.at(i).set.exists()) {
|
||||
_errorString = "missing set directory (level "
|
||||
+ QString::number(_zooms.at(i).zoom) + ")";
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_valid = true;
|
||||
}
|
||||
|
||||
int OruxMap::zoomFit(const QSize &size, const RectC &rect)
|
||||
{
|
||||
if (!rect.isValid())
|
||||
_zoom = _zooms.size() - 1;
|
||||
else {
|
||||
for (int i = 1; i < _zooms.size(); i++) {
|
||||
_zoom = i;
|
||||
QRect sbr(QPoint(ll2xy(rect.topLeft()).toPoint()),
|
||||
QPoint(ll2xy(rect.bottomRight()).toPoint()));
|
||||
if (sbr.size().width() >= size.width() || sbr.size().height()
|
||||
>= size.height()) {
|
||||
_zoom--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return _zoom;
|
||||
}
|
||||
|
||||
int OruxMap::zoomIn()
|
||||
{
|
||||
_zoom = qMin(_zoom + 1, _zooms.size() - 1);
|
||||
return _zoom;
|
||||
}
|
||||
|
||||
int OruxMap::zoomOut()
|
||||
{
|
||||
_zoom = qMax(_zoom - 1, 0);
|
||||
return _zoom;
|
||||
}
|
||||
|
||||
void OruxMap::load()
|
||||
{
|
||||
if (_db.isValid())
|
||||
_db.open();
|
||||
}
|
||||
|
||||
void OruxMap::unload()
|
||||
{
|
||||
if (_db.isValid())
|
||||
_db.close();
|
||||
}
|
||||
|
||||
void OruxMap::setDevicePixelRatio(qreal deviceRatio, qreal mapRatio)
|
||||
{
|
||||
Q_UNUSED(deviceRatio);
|
||||
_mapRatio = mapRatio;
|
||||
}
|
||||
|
||||
QPixmap OruxMap::tile(const Zoom &z, int x, int y) const
|
||||
{
|
||||
if (_db.isValid()) {
|
||||
QSqlQuery query(_db);
|
||||
query.prepare("SELECT image FROM tiles WHERE z=:z AND x=:x AND y=:y");
|
||||
query.bindValue(":z", z.zoom);
|
||||
query.bindValue(":x", x);
|
||||
query.bindValue(":y", y);
|
||||
query.exec();
|
||||
|
||||
if (!query.first()) {
|
||||
qWarning("%s: SQL %d-%d-%d: not found", qPrintable(name()), z.zoom,
|
||||
x, y);
|
||||
return QPixmap();
|
||||
} else {
|
||||
QImage img(QImage::fromData(query.value(0).toByteArray()));
|
||||
return QPixmap::fromImage(img);
|
||||
}
|
||||
} else {
|
||||
QString fileName(z.fileName + "_" + QString::number(x) + "_"
|
||||
+ QString::number(y) + ".omc2");
|
||||
QString path(z.set.absoluteFilePath(fileName));
|
||||
if (!QFileInfo::exists(path)) {
|
||||
qWarning("%s: %s: not found", qPrintable(name()),
|
||||
qPrintable(fileName));
|
||||
return QPixmap();
|
||||
} else {
|
||||
QImage img(path);
|
||||
return QPixmap::fromImage(img);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OruxMap::draw(QPainter *painter, const QRectF &rect, Flags flags)
|
||||
{
|
||||
Q_UNUSED(flags);
|
||||
const Zoom &z = _zooms.at(_zoom);
|
||||
QSizeF ts(z.tileSize.width() / _mapRatio, z.tileSize.height() / _mapRatio);
|
||||
QPointF tl(floor(rect.left() / ts.width()) * ts.width(),
|
||||
floor(rect.top() / ts.height()) * ts.height());
|
||||
|
||||
QSizeF s(rect.right() - tl.x(), rect.bottom() - tl.y());
|
||||
for (int i = 0; i < ceil(s.width() / ts.width()); i++) {
|
||||
for (int j = 0; j < ceil(s.height() / ts.height()); j++) {
|
||||
int x = round(tl.x() * _mapRatio + i * z.tileSize.width());
|
||||
int y = round(tl.y() * _mapRatio + j * z.tileSize.height());
|
||||
|
||||
QPixmap pixmap;
|
||||
QString key = path() + "/" + QString::number(z.zoom)
|
||||
+ "_" + QString::number(x/z.tileSize.width())
|
||||
+ "_" + QString::number(y/z.tileSize.height());
|
||||
if (!QPixmapCache::find(key, &pixmap)) {
|
||||
pixmap = tile(z, x/z.tileSize.width(), y/z.tileSize.height());
|
||||
if (!pixmap.isNull())
|
||||
QPixmapCache::insert(key, pixmap);
|
||||
}
|
||||
|
||||
if (!pixmap.isNull()) {
|
||||
pixmap.setDevicePixelRatio(_mapRatio);
|
||||
QPointF tp(tl.x() + i * ts.width(), tl.y() + j * ts.height());
|
||||
painter->drawPixmap(tp, pixmap);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QRectF OruxMap::bounds()
|
||||
{
|
||||
const Zoom &z = _zooms.at(_zoom);
|
||||
return QRectF(QPointF(0, 0), z.size / _mapRatio);
|
||||
}
|
||||
|
||||
QPointF OruxMap::ll2xy(const Coordinates &c)
|
||||
{
|
||||
const Zoom &z = _zooms.at(_zoom);
|
||||
QPointF p(z.transform.proj2img(z.projection.ll2xy(c)));
|
||||
return (p / _mapRatio);
|
||||
}
|
||||
|
||||
Coordinates OruxMap::xy2ll(const QPointF &p)
|
||||
{
|
||||
const Zoom &z = _zooms.at(_zoom);
|
||||
return z.projection.xy2ll(z.transform.img2proj(p * _mapRatio));
|
||||
}
|
||||
|
||||
Map *OruxMap::create(const QString &path, const Projection &, bool *isDir)
|
||||
{
|
||||
if (isDir)
|
||||
*isDir = true;
|
||||
|
||||
return new OruxMap(path);
|
||||
}
|
||||
|
||||
#ifndef QT_NO_DEBUG
|
||||
QDebug operator<<(QDebug dbg, const OruxMap::Zoom &zoom)
|
||||
{
|
||||
dbg.nospace() << "Zoom(" << zoom.zoom << ", " << zoom.tileSize << ", "
|
||||
<< zoom.size << ")";
|
||||
|
||||
return dbg.space();
|
||||
}
|
||||
#endif // QT_NO_DEBUG
|
83
src/map/oruxmap.h
Normal file
83
src/map/oruxmap.h
Normal file
@ -0,0 +1,83 @@
|
||||
#ifndef ORUXMAP_H
|
||||
#define ORUXMAP_H
|
||||
|
||||
#include <QDebug>
|
||||
#include <QSqlDatabase>
|
||||
#include <QDir>
|
||||
#include "map.h"
|
||||
#include "projection.h"
|
||||
#include "transform.h"
|
||||
#include "calibrationpoint.h"
|
||||
|
||||
class QXmlStreamReader;
|
||||
|
||||
class OruxMap : public Map
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
OruxMap(const QString &fileName, QObject *parent = 0);
|
||||
|
||||
QString name() const {return _name;}
|
||||
|
||||
QRectF bounds();
|
||||
|
||||
int zoom() const {return _zoom;}
|
||||
void setZoom(int zoom) {_zoom = zoom;}
|
||||
int zoomFit(const QSize &size, const RectC &rect);
|
||||
int zoomIn();
|
||||
int zoomOut();
|
||||
|
||||
QPointF ll2xy(const Coordinates &c);
|
||||
Coordinates xy2ll(const QPointF &p);
|
||||
|
||||
void draw(QPainter *painter, const QRectF &rect, Flags flags);
|
||||
|
||||
void setDevicePixelRatio(qreal deviceRatio, qreal mapRatio);
|
||||
void load();
|
||||
void unload();
|
||||
|
||||
bool isValid() const {return _valid;}
|
||||
QString errorString() const {return _errorString;}
|
||||
|
||||
static Map *create(const QString &path, const Projection &, bool *isDir);
|
||||
|
||||
private:
|
||||
struct Zoom {
|
||||
Zoom(int zoom, const QSize &tileSize, const QSize &size,
|
||||
const Projection &proj, const Transform &transform,
|
||||
const QString &fileName, const QString &set)
|
||||
: zoom(zoom), tileSize(tileSize), size(size), projection(proj),
|
||||
transform(transform), fileName(fileName), set(set) {}
|
||||
bool operator<(const Zoom &other) const
|
||||
{return zoom < other.zoom;}
|
||||
|
||||
int zoom;
|
||||
QSize tileSize;
|
||||
QSize size;
|
||||
Projection projection;
|
||||
Transform transform;
|
||||
QString fileName;
|
||||
QDir set;
|
||||
};
|
||||
|
||||
bool readXML(const QString &path, const QString &dir = QString());
|
||||
void oruxTracker(QXmlStreamReader &reader, const QString &dir, int level);
|
||||
void mapCalibration(QXmlStreamReader &reader, const QString &dir, int level);
|
||||
void calibrationPoints(QXmlStreamReader &reader, const QSize &size,
|
||||
QList<CalibrationPoint> &points);
|
||||
QPixmap tile(const Zoom &z, int x, int y) const;
|
||||
|
||||
friend QDebug operator<<(QDebug dbg, const Zoom &zoom);
|
||||
|
||||
QString _name;
|
||||
QList<Zoom> _zooms;
|
||||
QSqlDatabase _db;
|
||||
int _zoom;
|
||||
qreal _mapRatio;
|
||||
|
||||
bool _valid;
|
||||
QString _errorString;
|
||||
};
|
||||
|
||||
#endif // ORUXMAP_H
|
Reference in New Issue
Block a user