mirror of
https://github.com/tumic0/GPXSee.git
synced 2025-07-17 20:34:23 +02:00
Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
3155e8436b | |||
69f9d05ccb | |||
e24a3cd99a | |||
a94fa9f0ea | |||
c4f2a44410 | |||
da4a51e7fa | |||
bb47a34823 | |||
11196c0e35 | |||
00ef815738 | |||
64f685cf60 | |||
7ab13ec8e5 | |||
d3fbbecb2d | |||
7bc83603ca |
@ -1,4 +1,4 @@
|
||||
version: 4.14.{build}
|
||||
version: 4.15.{build}
|
||||
configuration: Release
|
||||
platform: Any CPU
|
||||
environment:
|
||||
|
18
gpxsee.pro
18
gpxsee.pro
@ -1,5 +1,5 @@
|
||||
TARGET = GPXSee
|
||||
VERSION = 4.14
|
||||
VERSION = 4.15
|
||||
QT += core \
|
||||
gui \
|
||||
network
|
||||
@ -97,7 +97,13 @@ HEADERS += src/config.h \
|
||||
src/oddspinbox.h \
|
||||
src/rectc.h \
|
||||
src/searchpointer.h \
|
||||
src/percentslider.h
|
||||
src/percentslider.h \
|
||||
src/elevationgraphitem.h \
|
||||
src/speedgraphitem.h \
|
||||
src/heartrategraphitem.h \
|
||||
src/temperaturegraphitem.h \
|
||||
src/cadencegraphitem.h \
|
||||
src/powergraphitem.h
|
||||
SOURCES += src/main.cpp \
|
||||
src/gui.cpp \
|
||||
src/poi.cpp \
|
||||
@ -167,7 +173,13 @@ SOURCES += src/main.cpp \
|
||||
src/albersequal.cpp \
|
||||
src/oddspinbox.cpp \
|
||||
src/rectc.cpp \
|
||||
src/percentslider.cpp
|
||||
src/percentslider.cpp \
|
||||
src/elevationgraphitem.cpp \
|
||||
src/speedgraphitem.cpp \
|
||||
src/heartrategraphitem.cpp \
|
||||
src/temperaturegraphitem.cpp \
|
||||
src/cadencegraphitem.cpp \
|
||||
src/powergraphitem.cpp
|
||||
RESOURCES += gpxsee.qrc
|
||||
TRANSLATIONS = lang/gpxsee_cs.ts \
|
||||
lang/gpxsee_sv.ts \
|
||||
|
@ -25,6 +25,25 @@
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CadenceGraphItem</name>
|
||||
<message>
|
||||
<location filename="../src/cadencegraphitem.cpp" line="20"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/cadencegraphitem.cpp" line="21"/>
|
||||
<location filename="../src/cadencegraphitem.cpp" line="23"/>
|
||||
<source>1/min</source>
|
||||
<translation>1/min</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/cadencegraphitem.cpp" line="22"/>
|
||||
<source>Average</source>
|
||||
<translation>Průměr</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Data</name>
|
||||
<message>
|
||||
@ -82,36 +101,69 @@
|
||||
<translation>Výška</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraph.cpp" line="141"/>
|
||||
<location filename="../src/elevationgraph.cpp" line="122"/>
|
||||
<source>m</source>
|
||||
<translation>m</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraph.cpp" line="58"/>
|
||||
<location filename="../src/elevationgraph.cpp" line="57"/>
|
||||
<source>Ascent</source>
|
||||
<translation>Stoupání</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraph.cpp" line="60"/>
|
||||
<location filename="../src/elevationgraph.cpp" line="59"/>
|
||||
<source>Descent</source>
|
||||
<translation>Klesání</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraph.cpp" line="64"/>
|
||||
<location filename="../src/elevationgraph.cpp" line="63"/>
|
||||
<source>Minimum</source>
|
||||
<translation>Minimum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraph.cpp" line="144"/>
|
||||
<location filename="../src/elevationgraph.cpp" line="125"/>
|
||||
<source>ft</source>
|
||||
<translation>ft</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraph.cpp" line="62"/>
|
||||
<location filename="../src/elevationgraph.cpp" line="61"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ElevationGraphItem</name>
|
||||
<message>
|
||||
<location filename="../src/elevationgraphitem.cpp" line="26"/>
|
||||
<source>m</source>
|
||||
<translation>m</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraphitem.cpp" line="26"/>
|
||||
<source>ft</source>
|
||||
<translation>ft</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraphitem.cpp" line="28"/>
|
||||
<source>Ascent</source>
|
||||
<translation>Stoupání</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraphitem.cpp" line="30"/>
|
||||
<source>Descent</source>
|
||||
<translation>Klesání</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraphitem.cpp" line="32"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraphitem.cpp" line="34"/>
|
||||
<source>Minimum</source>
|
||||
<translation>Minimum</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ExportDialog</name>
|
||||
<message>
|
||||
@ -218,24 +270,24 @@
|
||||
<context>
|
||||
<name>Format</name>
|
||||
<message>
|
||||
<location filename="../src/format.cpp" line="22"/>
|
||||
<location filename="../src/format.cpp" line="43"/>
|
||||
<location filename="../src/format.cpp" line="26"/>
|
||||
<location filename="../src/format.cpp" line="47"/>
|
||||
<source>ft</source>
|
||||
<translation>ft</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/format.cpp" line="25"/>
|
||||
<location filename="../src/format.cpp" line="29"/>
|
||||
<source>mi</source>
|
||||
<translation>mi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/format.cpp" line="29"/>
|
||||
<location filename="../src/format.cpp" line="40"/>
|
||||
<location filename="../src/format.cpp" line="33"/>
|
||||
<location filename="../src/format.cpp" line="44"/>
|
||||
<source>m</source>
|
||||
<translation>m</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/format.cpp" line="32"/>
|
||||
<location filename="../src/format.cpp" line="36"/>
|
||||
<source>km</source>
|
||||
<translation>km</translation>
|
||||
</message>
|
||||
@ -243,17 +295,17 @@
|
||||
<context>
|
||||
<name>GUI</name>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="645"/>
|
||||
<location filename="../src/gui.cpp" line="648"/>
|
||||
<source>GPXSee is distributed under the terms of the GNU General Public License version 3. For more info about GPXSee visit the project homepage at </source>
|
||||
<translation>Program GPXSee je distribuován pod podmínkami licence GNU General Public License verze 3. Pro více informací navštivte stránky programu na adrese </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="725"/>
|
||||
<location filename="../src/gui.cpp" line="733"/>
|
||||
<source>Open file</source>
|
||||
<translation>Otevřít soubor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="815"/>
|
||||
<location filename="../src/gui.cpp" line="823"/>
|
||||
<source>Open POI file</source>
|
||||
<translation>Otevřít POI soubor</translation>
|
||||
</message>
|
||||
@ -264,8 +316,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="291"/>
|
||||
<location filename="../src/gui.cpp" line="662"/>
|
||||
<location filename="../src/gui.cpp" line="663"/>
|
||||
<location filename="../src/gui.cpp" line="665"/>
|
||||
<location filename="../src/gui.cpp" line="666"/>
|
||||
<source>Keyboard controls</source>
|
||||
<translation>Ovládací klávesy</translation>
|
||||
</message>
|
||||
@ -280,20 +332,20 @@
|
||||
<translation>Znovu načíst</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="574"/>
|
||||
<location filename="../src/gui.cpp" line="577"/>
|
||||
<source>Show</source>
|
||||
<translation>Zobrazit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="491"/>
|
||||
<location filename="../src/gui.cpp" line="568"/>
|
||||
<location filename="../src/gui.cpp" line="493"/>
|
||||
<location filename="../src/gui.cpp" line="571"/>
|
||||
<source>File</source>
|
||||
<translation>Soubor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="289"/>
|
||||
<location filename="../src/gui.cpp" line="691"/>
|
||||
<location filename="../src/gui.cpp" line="692"/>
|
||||
<location filename="../src/gui.cpp" line="699"/>
|
||||
<location filename="../src/gui.cpp" line="700"/>
|
||||
<source>Data sources</source>
|
||||
<translation>Zdroje dat</translation>
|
||||
</message>
|
||||
@ -345,7 +397,7 @@
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="367"/>
|
||||
<location filename="../src/gui.cpp" line="371"/>
|
||||
<location filename="../src/gui.cpp" line="674"/>
|
||||
<location filename="../src/gui.cpp" line="682"/>
|
||||
<source>Next map</source>
|
||||
<translation>Následující mapa</translation>
|
||||
</message>
|
||||
@ -375,194 +427,209 @@
|
||||
<translation>Zobrazit grafy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="426"/>
|
||||
<location filename="../src/gui.cpp" line="424"/>
|
||||
<source>Show grid</source>
|
||||
<translation>Zobrazit mřížku</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="432"/>
|
||||
<location filename="../src/gui.cpp" line="428"/>
|
||||
<source>Show slider info</source>
|
||||
<translation>Zobrazit informace o posuvníku</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="434"/>
|
||||
<source>Show toolbars</source>
|
||||
<translation>Zobrazovat nástrojové lišty</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="438"/>
|
||||
<location filename="../src/gui.cpp" line="440"/>
|
||||
<source>Total time</source>
|
||||
<translation>Celkový čas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="443"/>
|
||||
<location filename="../src/gui.cpp" line="986"/>
|
||||
<location filename="../src/gui.cpp" line="445"/>
|
||||
<location filename="../src/gui.cpp" line="994"/>
|
||||
<source>Moving time</source>
|
||||
<translation>Čistý čas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="450"/>
|
||||
<location filename="../src/gui.cpp" line="452"/>
|
||||
<source>Metric</source>
|
||||
<translation>Metrické</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="455"/>
|
||||
<location filename="../src/gui.cpp" line="457"/>
|
||||
<source>Imperial</source>
|
||||
<translation>Imperiální</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="461"/>
|
||||
<location filename="../src/gui.cpp" line="463"/>
|
||||
<source>Fullscreen mode</source>
|
||||
<translation>Celoobrazovkový režim</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="467"/>
|
||||
<location filename="../src/gui.cpp" line="469"/>
|
||||
<source>Options...</source>
|
||||
<translation>Nastavení...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="473"/>
|
||||
<location filename="../src/gui.cpp" line="475"/>
|
||||
<source>Next</source>
|
||||
<translation>Následující</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="476"/>
|
||||
<location filename="../src/gui.cpp" line="478"/>
|
||||
<source>Previous</source>
|
||||
<translation>Předchozí</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="480"/>
|
||||
<location filename="../src/gui.cpp" line="482"/>
|
||||
<source>Last</source>
|
||||
<translation>Poslední</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="483"/>
|
||||
<location filename="../src/gui.cpp" line="485"/>
|
||||
<source>First</source>
|
||||
<translation>První</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="505"/>
|
||||
<location filename="../src/gui.cpp" line="507"/>
|
||||
<source>Map</source>
|
||||
<translation>Mapa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="513"/>
|
||||
<location filename="../src/gui.cpp" line="515"/>
|
||||
<source>Graph</source>
|
||||
<translation>Graf</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="521"/>
|
||||
<location filename="../src/gui.cpp" line="524"/>
|
||||
<source>POI</source>
|
||||
<translation>POI</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="522"/>
|
||||
<location filename="../src/gui.cpp" line="525"/>
|
||||
<source>POI files</source>
|
||||
<translation>POI soubory</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="533"/>
|
||||
<location filename="../src/gui.cpp" line="536"/>
|
||||
<source>Data</source>
|
||||
<translation>Data</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="534"/>
|
||||
<location filename="../src/gui.cpp" line="537"/>
|
||||
<source>Display</source>
|
||||
<translation>Zobrazit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="542"/>
|
||||
<location filename="../src/gui.cpp" line="545"/>
|
||||
<source>Settings</source>
|
||||
<translation>Nastavení</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="546"/>
|
||||
<location filename="../src/gui.cpp" line="549"/>
|
||||
<source>Units</source>
|
||||
<translation>Jednotky</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="555"/>
|
||||
<location filename="../src/gui.cpp" line="558"/>
|
||||
<source>Help</source>
|
||||
<translation>Nápověda</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="672"/>
|
||||
<location filename="../src/gui.cpp" line="675"/>
|
||||
<source>Append file</source>
|
||||
<translation>Přidat soubor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="673"/>
|
||||
<location filename="../src/gui.cpp" line="676"/>
|
||||
<source>Next/Previous</source>
|
||||
<translation>Následující/Předchozí</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="676"/>
|
||||
<location filename="../src/gui.cpp" line="678"/>
|
||||
<source>Toggle graph type</source>
|
||||
<translation>Přepnout typ grafu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="680"/>
|
||||
<source>Toggle time type</source>
|
||||
<translation>Přepnout typ času</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="684"/>
|
||||
<source>Previous map</source>
|
||||
<translation>Předchozí mapa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="677"/>
|
||||
<location filename="../src/gui.cpp" line="685"/>
|
||||
<source>Zoom in</source>
|
||||
<translation>Přiblížit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="679"/>
|
||||
<location filename="../src/gui.cpp" line="687"/>
|
||||
<source>Zoom out</source>
|
||||
<translation>Oddálit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="681"/>
|
||||
<location filename="../src/gui.cpp" line="689"/>
|
||||
<source>Digital zoom</source>
|
||||
<translation>Digitální zoom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="682"/>
|
||||
<location filename="../src/gui.cpp" line="690"/>
|
||||
<source>Zoom</source>
|
||||
<translation>Zoom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="694"/>
|
||||
<location filename="../src/gui.cpp" line="702"/>
|
||||
<source>Online maps</source>
|
||||
<translation>Online mapy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="695"/>
|
||||
<location filename="../src/gui.cpp" line="703"/>
|
||||
<source>Online map URLs are read on program startup from the following file:</source>
|
||||
<translation>URL online map jsou načteny při startu programu z následujícího souboru:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="698"/>
|
||||
<location filename="../src/gui.cpp" line="706"/>
|
||||
<source>The file format is one map entry per line, consisting of the map name, tiles URL and an optional maximal zoom level delimited by a TAB character. The tile X and Y coordinates are replaced with $x and $y in the URL and the zoom level is replaced with $z. An example map file could look like:</source>
|
||||
<translation>Formát souboru je jeden mapový záznam na řádku, kde mapový záznam sestává ze jména mapy, URL dlaždic a volitelně maximálního zoomu navzájem oddělených tabulátorem. Souřadnice dlaždice jsou v URL nahrazeny řetězci $x a $y, zoom pak řetězcem $z. Příklad:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="707"/>
|
||||
<location filename="../src/gui.cpp" line="715"/>
|
||||
<source>Offline maps are loaded on program startup from the following directory:</source>
|
||||
<translation>Offline mapy jsou načítány při startu aplikace z následujícího adresáře:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="1179"/>
|
||||
<location filename="../src/gui.cpp" line="1193"/>
|
||||
<source>Open map file</source>
|
||||
<translation>Otevřít mapový soubor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="1215"/>
|
||||
<location filename="../src/gui.cpp" line="1229"/>
|
||||
<source>No files loaded</source>
|
||||
<translation>Nejsou načteny žádné soubory</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="972"/>
|
||||
<location filename="../src/gui.cpp" line="975"/>
|
||||
<location filename="../src/gui.cpp" line="980"/>
|
||||
<location filename="../src/gui.cpp" line="983"/>
|
||||
<source>Date</source>
|
||||
<translation>Datum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="964"/>
|
||||
<location filename="../src/gui.cpp" line="972"/>
|
||||
<source>Routes</source>
|
||||
<translation>Trasy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="1200"/>
|
||||
<location filename="../src/gui.cpp" line="1214"/>
|
||||
<source>Error loading map:</source>
|
||||
<translation>Mapu nelze načíst:</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui.cpp" line="1219"/>
|
||||
<location filename="../src/gui.cpp" line="1233"/>
|
||||
<source>%n files</source>
|
||||
<translation>
|
||||
<numerusform>%n soubor</numerusform>
|
||||
@ -571,12 +638,12 @@
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="666"/>
|
||||
<location filename="../src/gui.cpp" line="669"/>
|
||||
<source>Next file</source>
|
||||
<translation>Následující soubor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="642"/>
|
||||
<location filename="../src/gui.cpp" line="645"/>
|
||||
<source>Version </source>
|
||||
<translation>Verze </translation>
|
||||
</message>
|
||||
@ -591,12 +658,12 @@
|
||||
<translation>Exportovat do PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="966"/>
|
||||
<location filename="../src/gui.cpp" line="974"/>
|
||||
<source>Waypoints</source>
|
||||
<translation>Navigační body</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="667"/>
|
||||
<location filename="../src/gui.cpp" line="670"/>
|
||||
<source>Previous file</source>
|
||||
<translation>Předchozí soubor</translation>
|
||||
</message>
|
||||
@ -606,82 +673,82 @@
|
||||
<translation>Body tras</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="669"/>
|
||||
<location filename="../src/gui.cpp" line="672"/>
|
||||
<source>First file</source>
|
||||
<translation>První soubor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="671"/>
|
||||
<location filename="../src/gui.cpp" line="674"/>
|
||||
<source>Last file</source>
|
||||
<translation>Poslední soubor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="706"/>
|
||||
<location filename="../src/gui.cpp" line="714"/>
|
||||
<source>Offline maps</source>
|
||||
<translation>Offline mapy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="710"/>
|
||||
<location filename="../src/gui.cpp" line="718"/>
|
||||
<source>The expected structure is one map/atlas in a separate subdirectory. Supported map formats are OziExplorer maps and TrekBuddy maps/atlases (tared and non-tared).</source>
|
||||
<translation>Očekávaná struktura je jedna mapa/atlas v samostatném podadresáři. Podporované mapové formáty jsou OziExplorer mapy a TrekBuddy mapy/atlasy (včetně tar varianty).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="715"/>
|
||||
<location filename="../src/gui.cpp" line="723"/>
|
||||
<source>To make GPXSee load a POI file automatically on startup, add the file to the following directory:</source>
|
||||
<translation>POI soubory, které se mají automaticky nahrát při startu programu jsou načítány z následujícího adresáře:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="804"/>
|
||||
<location filename="../src/gui.cpp" line="812"/>
|
||||
<source>Error loading data file:</source>
|
||||
<translation>Datový soubor nelze načíst:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="807"/>
|
||||
<location filename="../src/gui.cpp" line="832"/>
|
||||
<location filename="../src/gui.cpp" line="815"/>
|
||||
<location filename="../src/gui.cpp" line="840"/>
|
||||
<source>Line: %1</source>
|
||||
<translation>Řádka: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="829"/>
|
||||
<location filename="../src/gui.cpp" line="837"/>
|
||||
<source>Error loading POI file:</source>
|
||||
<translation>Soubor POI nelze načíst:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="958"/>
|
||||
<location filename="../src/gui.cpp" line="966"/>
|
||||
<source>Name</source>
|
||||
<translation>Název</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="962"/>
|
||||
<location filename="../src/gui.cpp" line="970"/>
|
||||
<source>Tracks</source>
|
||||
<translation>Cesty</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="294"/>
|
||||
<location filename="../src/gui.cpp" line="641"/>
|
||||
<location filename="../src/gui.cpp" line="644"/>
|
||||
<source>About GPXSee</source>
|
||||
<translation>O aplikaci GPXSee</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="579"/>
|
||||
<location filename="../src/gui.cpp" line="582"/>
|
||||
<source>Navigation</source>
|
||||
<translation>Navigace</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="714"/>
|
||||
<location filename="../src/gui.cpp" line="722"/>
|
||||
<source>POIs</source>
|
||||
<translation>POI body</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="412"/>
|
||||
<location filename="../src/gui.cpp" line="982"/>
|
||||
<location filename="../src/gui.cpp" line="990"/>
|
||||
<source>Distance</source>
|
||||
<translation>Vzdálenost</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="419"/>
|
||||
<location filename="../src/gui.cpp" line="543"/>
|
||||
<location filename="../src/gui.cpp" line="984"/>
|
||||
<location filename="../src/gui.cpp" line="418"/>
|
||||
<location filename="../src/gui.cpp" line="546"/>
|
||||
<location filename="../src/gui.cpp" line="992"/>
|
||||
<source>Time</source>
|
||||
<translation>Čas</translation>
|
||||
</message>
|
||||
@ -689,48 +756,48 @@
|
||||
<context>
|
||||
<name>GraphView</name>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="108"/>
|
||||
<location filename="../src/graphview.cpp" line="109"/>
|
||||
<source>m</source>
|
||||
<translation>m</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="111"/>
|
||||
<location filename="../src/graphview.cpp" line="112"/>
|
||||
<source>km</source>
|
||||
<translation>km</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="116"/>
|
||||
<location filename="../src/graphview.cpp" line="117"/>
|
||||
<source>ft</source>
|
||||
<translation>ft</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="119"/>
|
||||
<location filename="../src/graphview.cpp" line="120"/>
|
||||
<source>mi</source>
|
||||
<translation>mi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="125"/>
|
||||
<location filename="../src/graphview.cpp" line="126"/>
|
||||
<source>s</source>
|
||||
<translation>s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="128"/>
|
||||
<location filename="../src/graphview.cpp" line="129"/>
|
||||
<source>min</source>
|
||||
<translation>min</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="131"/>
|
||||
<location filename="../src/graphview.cpp" line="132"/>
|
||||
<source>h</source>
|
||||
<translation>h</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="60"/>
|
||||
<location filename="../src/graphview.cpp" line="157"/>
|
||||
<location filename="../src/graphview.cpp" line="61"/>
|
||||
<location filename="../src/graphview.cpp" line="162"/>
|
||||
<source>Distance</source>
|
||||
<translation>Vzdálenost</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="159"/>
|
||||
<location filename="../src/graphview.cpp" line="164"/>
|
||||
<source>Time</source>
|
||||
<translation>Čas</translation>
|
||||
</message>
|
||||
@ -759,6 +826,25 @@
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>HeartRateGraphItem</name>
|
||||
<message>
|
||||
<location filename="../src/heartrategraphitem.cpp" line="20"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/heartrategraphitem.cpp" line="21"/>
|
||||
<location filename="../src/heartrategraphitem.cpp" line="23"/>
|
||||
<source>1/min</source>
|
||||
<translation>1/min</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/heartrategraphitem.cpp" line="22"/>
|
||||
<source>Average</source>
|
||||
<translation>Průměr</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
@ -1152,6 +1238,25 @@
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PowerGraphItem</name>
|
||||
<message>
|
||||
<location filename="../src/powergraphitem.cpp" line="20"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/powergraphitem.cpp" line="21"/>
|
||||
<location filename="../src/powergraphitem.cpp" line="23"/>
|
||||
<source>1/min</source>
|
||||
<translation>1/min</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/powergraphitem.cpp" line="22"/>
|
||||
<source>Average</source>
|
||||
<translation>Průměr</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RouteItem</name>
|
||||
<message>
|
||||
@ -1196,32 +1301,55 @@
|
||||
<context>
|
||||
<name>SpeedGraph</name>
|
||||
<message>
|
||||
<location filename="../src/speedgraph.cpp" line="13"/>
|
||||
<location filename="../src/speedgraph.cpp" line="14"/>
|
||||
<location filename="../src/speedgraph.h" line="14"/>
|
||||
<source>Speed</source>
|
||||
<translation>Rychlost</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraph.cpp" line="79"/>
|
||||
<location filename="../src/speedgraph.cpp" line="82"/>
|
||||
<source>km/h</source>
|
||||
<translation>km/h</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraph.cpp" line="21"/>
|
||||
<location filename="../src/speedgraph.cpp" line="22"/>
|
||||
<source>Average</source>
|
||||
<translation>Průměr</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraph.cpp" line="23"/>
|
||||
<location filename="../src/speedgraph.cpp" line="24"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraph.cpp" line="82"/>
|
||||
<location filename="../src/speedgraph.cpp" line="85"/>
|
||||
<source>mi/h</source>
|
||||
<translation>mi/h</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SpeedGraphItem</name>
|
||||
<message>
|
||||
<location filename="../src/speedgraphitem.cpp" line="20"/>
|
||||
<source>km/h</source>
|
||||
<translation>km/h</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraphitem.cpp" line="20"/>
|
||||
<source>mi/h</source>
|
||||
<translation>mi/h</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraphitem.cpp" line="22"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraphitem.cpp" line="24"/>
|
||||
<source>Average</source>
|
||||
<translation>Průměr</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TemperatureGraph</name>
|
||||
<message>
|
||||
@ -1246,16 +1374,44 @@
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraph.cpp" line="81"/>
|
||||
<location filename="../src/temperaturegraph.cpp" line="76"/>
|
||||
<source>C</source>
|
||||
<translation>C</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraph.cpp" line="85"/>
|
||||
<location filename="../src/temperaturegraph.cpp" line="80"/>
|
||||
<source>F</source>
|
||||
<translation>F</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TemperatureGraphItem</name>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraphitem.cpp" line="22"/>
|
||||
<source>C</source>
|
||||
<translation>C</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraphitem.cpp" line="22"/>
|
||||
<source>F</source>
|
||||
<translation>F</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraphitem.cpp" line="24"/>
|
||||
<source>Average</source>
|
||||
<translation>Průměr</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraphitem.cpp" line="26"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraphitem.cpp" line="28"/>
|
||||
<source>Minimum</source>
|
||||
<translation>Minimum</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TrackItem</name>
|
||||
<message>
|
||||
|
@ -25,6 +25,25 @@
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CadenceGraphItem</name>
|
||||
<message>
|
||||
<location filename="../src/cadencegraphitem.cpp" line="20"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/cadencegraphitem.cpp" line="21"/>
|
||||
<location filename="../src/cadencegraphitem.cpp" line="23"/>
|
||||
<source>1/min</source>
|
||||
<translation>1/min</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/cadencegraphitem.cpp" line="22"/>
|
||||
<source>Average</source>
|
||||
<translation>Durchschnitt</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Data</name>
|
||||
<message>
|
||||
@ -82,36 +101,69 @@
|
||||
<translation>Höhe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraph.cpp" line="141"/>
|
||||
<location filename="../src/elevationgraph.cpp" line="122"/>
|
||||
<source>m</source>
|
||||
<translation>m</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraph.cpp" line="58"/>
|
||||
<location filename="../src/elevationgraph.cpp" line="57"/>
|
||||
<source>Ascent</source>
|
||||
<translation>Steigung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraph.cpp" line="60"/>
|
||||
<location filename="../src/elevationgraph.cpp" line="59"/>
|
||||
<source>Descent</source>
|
||||
<translation>Gefälle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraph.cpp" line="64"/>
|
||||
<location filename="../src/elevationgraph.cpp" line="63"/>
|
||||
<source>Minimum</source>
|
||||
<translation>Minimum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraph.cpp" line="144"/>
|
||||
<location filename="../src/elevationgraph.cpp" line="125"/>
|
||||
<source>ft</source>
|
||||
<translation>ft</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraph.cpp" line="62"/>
|
||||
<location filename="../src/elevationgraph.cpp" line="61"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ElevationGraphItem</name>
|
||||
<message>
|
||||
<location filename="../src/elevationgraphitem.cpp" line="26"/>
|
||||
<source>m</source>
|
||||
<translation>m</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraphitem.cpp" line="26"/>
|
||||
<source>ft</source>
|
||||
<translation>ft</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraphitem.cpp" line="28"/>
|
||||
<source>Ascent</source>
|
||||
<translation>Steigung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraphitem.cpp" line="30"/>
|
||||
<source>Descent</source>
|
||||
<translation>Gefälle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraphitem.cpp" line="32"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraphitem.cpp" line="34"/>
|
||||
<source>Minimum</source>
|
||||
<translation>Minimum</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ExportDialog</name>
|
||||
<message>
|
||||
@ -218,24 +270,24 @@
|
||||
<context>
|
||||
<name>Format</name>
|
||||
<message>
|
||||
<location filename="../src/format.cpp" line="22"/>
|
||||
<location filename="../src/format.cpp" line="43"/>
|
||||
<location filename="../src/format.cpp" line="26"/>
|
||||
<location filename="../src/format.cpp" line="47"/>
|
||||
<source>ft</source>
|
||||
<translation>ft</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/format.cpp" line="25"/>
|
||||
<location filename="../src/format.cpp" line="29"/>
|
||||
<source>mi</source>
|
||||
<translation>mi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/format.cpp" line="29"/>
|
||||
<location filename="../src/format.cpp" line="40"/>
|
||||
<location filename="../src/format.cpp" line="33"/>
|
||||
<location filename="../src/format.cpp" line="44"/>
|
||||
<source>m</source>
|
||||
<translation>m</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/format.cpp" line="32"/>
|
||||
<location filename="../src/format.cpp" line="36"/>
|
||||
<source>km</source>
|
||||
<translation>km</translation>
|
||||
</message>
|
||||
@ -243,17 +295,17 @@
|
||||
<context>
|
||||
<name>GUI</name>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="645"/>
|
||||
<location filename="../src/gui.cpp" line="648"/>
|
||||
<source>GPXSee is distributed under the terms of the GNU General Public License version 3. For more info about GPXSee visit the project homepage at </source>
|
||||
<translation>GPXSee wird unter der GNU General Public License version 3 vertrieben. Mehr Informationen zu GPXSee auf der Homepage </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="725"/>
|
||||
<location filename="../src/gui.cpp" line="733"/>
|
||||
<source>Open file</source>
|
||||
<translation>Datei öffnen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="815"/>
|
||||
<location filename="../src/gui.cpp" line="823"/>
|
||||
<source>Open POI file</source>
|
||||
<translation>POI Datei öffnen</translation>
|
||||
</message>
|
||||
@ -264,8 +316,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="291"/>
|
||||
<location filename="../src/gui.cpp" line="662"/>
|
||||
<location filename="../src/gui.cpp" line="663"/>
|
||||
<location filename="../src/gui.cpp" line="665"/>
|
||||
<location filename="../src/gui.cpp" line="666"/>
|
||||
<source>Keyboard controls</source>
|
||||
<translation>Tastaturkürzel</translation>
|
||||
</message>
|
||||
@ -280,20 +332,20 @@
|
||||
<translation>Neu Laden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="574"/>
|
||||
<location filename="../src/gui.cpp" line="577"/>
|
||||
<source>Show</source>
|
||||
<translation>Ansicht</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="491"/>
|
||||
<location filename="../src/gui.cpp" line="568"/>
|
||||
<location filename="../src/gui.cpp" line="493"/>
|
||||
<location filename="../src/gui.cpp" line="571"/>
|
||||
<source>File</source>
|
||||
<translation>Datei</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="289"/>
|
||||
<location filename="../src/gui.cpp" line="691"/>
|
||||
<location filename="../src/gui.cpp" line="692"/>
|
||||
<location filename="../src/gui.cpp" line="699"/>
|
||||
<location filename="../src/gui.cpp" line="700"/>
|
||||
<source>Data sources</source>
|
||||
<translation>Datenquellen</translation>
|
||||
</message>
|
||||
@ -345,7 +397,7 @@
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="367"/>
|
||||
<location filename="../src/gui.cpp" line="371"/>
|
||||
<location filename="../src/gui.cpp" line="674"/>
|
||||
<location filename="../src/gui.cpp" line="682"/>
|
||||
<source>Next map</source>
|
||||
<translation>Nächste Karte</translation>
|
||||
</message>
|
||||
@ -375,188 +427,203 @@
|
||||
<translation>Graphen anzeigen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="426"/>
|
||||
<location filename="../src/gui.cpp" line="424"/>
|
||||
<source>Show grid</source>
|
||||
<translation>Gitter anzeigen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="432"/>
|
||||
<location filename="../src/gui.cpp" line="428"/>
|
||||
<source>Show slider info</source>
|
||||
<translation>Schieberinfo anzeigen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="434"/>
|
||||
<source>Show toolbars</source>
|
||||
<translation>Toolbars anzeigen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="438"/>
|
||||
<location filename="../src/gui.cpp" line="440"/>
|
||||
<source>Total time</source>
|
||||
<translation>Gesamtzeit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="443"/>
|
||||
<location filename="../src/gui.cpp" line="986"/>
|
||||
<location filename="../src/gui.cpp" line="445"/>
|
||||
<location filename="../src/gui.cpp" line="994"/>
|
||||
<source>Moving time</source>
|
||||
<translation>Bewegungszeit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="450"/>
|
||||
<location filename="../src/gui.cpp" line="452"/>
|
||||
<source>Metric</source>
|
||||
<translation>Metrisch</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="455"/>
|
||||
<location filename="../src/gui.cpp" line="457"/>
|
||||
<source>Imperial</source>
|
||||
<translation>Imperial</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="461"/>
|
||||
<location filename="../src/gui.cpp" line="463"/>
|
||||
<source>Fullscreen mode</source>
|
||||
<translation>Vollbildmodus</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="467"/>
|
||||
<location filename="../src/gui.cpp" line="469"/>
|
||||
<source>Options...</source>
|
||||
<translation>Einstellungen...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="473"/>
|
||||
<location filename="../src/gui.cpp" line="475"/>
|
||||
<source>Next</source>
|
||||
<translation>Nächste</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="476"/>
|
||||
<location filename="../src/gui.cpp" line="478"/>
|
||||
<source>Previous</source>
|
||||
<translation>Vorherige</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="480"/>
|
||||
<location filename="../src/gui.cpp" line="482"/>
|
||||
<source>Last</source>
|
||||
<translation>Letzte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="483"/>
|
||||
<location filename="../src/gui.cpp" line="485"/>
|
||||
<source>First</source>
|
||||
<translation>Erste</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="505"/>
|
||||
<location filename="../src/gui.cpp" line="507"/>
|
||||
<source>Map</source>
|
||||
<translation>Karte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="513"/>
|
||||
<location filename="../src/gui.cpp" line="515"/>
|
||||
<source>Graph</source>
|
||||
<translation>Graph</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="521"/>
|
||||
<location filename="../src/gui.cpp" line="524"/>
|
||||
<source>POI</source>
|
||||
<translation>POI</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="522"/>
|
||||
<location filename="../src/gui.cpp" line="525"/>
|
||||
<source>POI files</source>
|
||||
<translation>POI-Dateien</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="533"/>
|
||||
<location filename="../src/gui.cpp" line="536"/>
|
||||
<source>Data</source>
|
||||
<translation>Daten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="534"/>
|
||||
<location filename="../src/gui.cpp" line="537"/>
|
||||
<source>Display</source>
|
||||
<translation>Anzeige</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="542"/>
|
||||
<location filename="../src/gui.cpp" line="545"/>
|
||||
<source>Settings</source>
|
||||
<translation>Einstellungen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="546"/>
|
||||
<location filename="../src/gui.cpp" line="549"/>
|
||||
<source>Units</source>
|
||||
<translation>Einheiten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="555"/>
|
||||
<location filename="../src/gui.cpp" line="558"/>
|
||||
<source>Help</source>
|
||||
<translation>Hilfe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="672"/>
|
||||
<location filename="../src/gui.cpp" line="675"/>
|
||||
<source>Append file</source>
|
||||
<translation>An Datei anhängen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="673"/>
|
||||
<location filename="../src/gui.cpp" line="676"/>
|
||||
<source>Next/Previous</source>
|
||||
<translation>Nächste/Vorherige</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="676"/>
|
||||
<location filename="../src/gui.cpp" line="678"/>
|
||||
<source>Toggle graph type</source>
|
||||
<translation>Graphtyp umschalten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="680"/>
|
||||
<source>Toggle time type</source>
|
||||
<translation>Zeittyp umschalten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="684"/>
|
||||
<source>Previous map</source>
|
||||
<translation>Vorherige Karte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="677"/>
|
||||
<location filename="../src/gui.cpp" line="685"/>
|
||||
<source>Zoom in</source>
|
||||
<translation>Hineinzoomen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="679"/>
|
||||
<location filename="../src/gui.cpp" line="687"/>
|
||||
<source>Zoom out</source>
|
||||
<translation>Herauszoomen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="681"/>
|
||||
<location filename="../src/gui.cpp" line="689"/>
|
||||
<source>Digital zoom</source>
|
||||
<translation>Digitaler Zoom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="682"/>
|
||||
<location filename="../src/gui.cpp" line="690"/>
|
||||
<source>Zoom</source>
|
||||
<translation>Zoom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="694"/>
|
||||
<location filename="../src/gui.cpp" line="702"/>
|
||||
<source>Online maps</source>
|
||||
<translation>Onlinekarten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="695"/>
|
||||
<location filename="../src/gui.cpp" line="703"/>
|
||||
<source>Online map URLs are read on program startup from the following file:</source>
|
||||
<translation>Onlinekarten URLs werden zu Programmstart aus der folgenden Datei gelesen:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="698"/>
|
||||
<location filename="../src/gui.cpp" line="706"/>
|
||||
<source>The file format is one map entry per line, consisting of the map name, tiles URL and an optional maximal zoom level delimited by a TAB character. The tile X and Y coordinates are replaced with $x and $y in the URL and the zoom level is replaced with $z. An example map file could look like:</source>
|
||||
<translation>Das Dateiformat ist eine Karte pro Linie. Jede Linie besteht aus dem Kartenname, der Tiles URL und wahlweise dem maximalen Zoomlevel getrennt durch ein TAB Zeichen. X und Y Koordinate einer Tile werden in der URL durch $x und $y ersetzt und das Zoomlevel durch $z. Ein Beispiel einer Kartendatei könnte so aussehen:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="706"/>
|
||||
<location filename="../src/gui.cpp" line="714"/>
|
||||
<source>Offline maps</source>
|
||||
<translation>Offlinekarten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="707"/>
|
||||
<location filename="../src/gui.cpp" line="715"/>
|
||||
<source>Offline maps are loaded on program startup from the following directory:</source>
|
||||
<translation>Offlinekarten werden zu Programmstart aus dem folgenden Verzeichnis geladen:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="1179"/>
|
||||
<location filename="../src/gui.cpp" line="1193"/>
|
||||
<source>Open map file</source>
|
||||
<translation>Karte Datei öffnen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="1200"/>
|
||||
<location filename="../src/gui.cpp" line="1214"/>
|
||||
<source>Error loading map:</source>
|
||||
<translation>Fehler beim Laden der Karte-Datei:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="1215"/>
|
||||
<location filename="../src/gui.cpp" line="1229"/>
|
||||
<source>No files loaded</source>
|
||||
<translation>Keine Dateien geladen</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui.cpp" line="1219"/>
|
||||
<location filename="../src/gui.cpp" line="1233"/>
|
||||
<source>%n files</source>
|
||||
<translation>
|
||||
<numerusform>%n Datei</numerusform>
|
||||
@ -564,23 +631,23 @@
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="972"/>
|
||||
<location filename="../src/gui.cpp" line="975"/>
|
||||
<location filename="../src/gui.cpp" line="980"/>
|
||||
<location filename="../src/gui.cpp" line="983"/>
|
||||
<source>Date</source>
|
||||
<translation>Datum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="964"/>
|
||||
<location filename="../src/gui.cpp" line="972"/>
|
||||
<source>Routes</source>
|
||||
<translation>Routen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="666"/>
|
||||
<location filename="../src/gui.cpp" line="669"/>
|
||||
<source>Next file</source>
|
||||
<translation>Nächste Datei</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="642"/>
|
||||
<location filename="../src/gui.cpp" line="645"/>
|
||||
<source>Version </source>
|
||||
<translation>Version </translation>
|
||||
</message>
|
||||
@ -595,12 +662,12 @@
|
||||
<translation>Als PDF exportieren...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="966"/>
|
||||
<location filename="../src/gui.cpp" line="974"/>
|
||||
<source>Waypoints</source>
|
||||
<translation>Wegpunkte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="667"/>
|
||||
<location filename="../src/gui.cpp" line="670"/>
|
||||
<source>Previous file</source>
|
||||
<translation>Vorherige Datei</translation>
|
||||
</message>
|
||||
@ -610,77 +677,77 @@
|
||||
<translation>Routen Wegpunkte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="669"/>
|
||||
<location filename="../src/gui.cpp" line="672"/>
|
||||
<source>First file</source>
|
||||
<translation>Erste Datei</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="671"/>
|
||||
<location filename="../src/gui.cpp" line="674"/>
|
||||
<source>Last file</source>
|
||||
<translation>Letzte Datei</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="710"/>
|
||||
<location filename="../src/gui.cpp" line="718"/>
|
||||
<source>The expected structure is one map/atlas in a separate subdirectory. Supported map formats are OziExplorer maps and TrekBuddy maps/atlases (tared and non-tared).</source>
|
||||
<translation>Die erwartete Struktur ist eine Karte/ein Atlas pro Unterverzeichnis. Unterstützte Kartenformate sind OziExplorer Karten und TrekBuddy Karten/Atlanten (mit oder ohne tar Kompression).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="715"/>
|
||||
<location filename="../src/gui.cpp" line="723"/>
|
||||
<source>To make GPXSee load a POI file automatically on startup, add the file to the following directory:</source>
|
||||
<translation>Damit GPXSee zu Programmstart automatisch eine POI-Datei lädt, fügen Sie diese zu folgendem Verzeichnis hinzu:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="804"/>
|
||||
<location filename="../src/gui.cpp" line="812"/>
|
||||
<source>Error loading data file:</source>
|
||||
<translation>Fehler beim Laden der Datei:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="807"/>
|
||||
<location filename="../src/gui.cpp" line="832"/>
|
||||
<location filename="../src/gui.cpp" line="815"/>
|
||||
<location filename="../src/gui.cpp" line="840"/>
|
||||
<source>Line: %1</source>
|
||||
<translation>Linie: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="829"/>
|
||||
<location filename="../src/gui.cpp" line="837"/>
|
||||
<source>Error loading POI file:</source>
|
||||
<translation>Fehler beim Laden der POI-Datei:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="958"/>
|
||||
<location filename="../src/gui.cpp" line="966"/>
|
||||
<source>Name</source>
|
||||
<translation>Name</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="962"/>
|
||||
<location filename="../src/gui.cpp" line="970"/>
|
||||
<source>Tracks</source>
|
||||
<translation>Strecken</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="294"/>
|
||||
<location filename="../src/gui.cpp" line="641"/>
|
||||
<location filename="../src/gui.cpp" line="644"/>
|
||||
<source>About GPXSee</source>
|
||||
<translation>Über GPXSee</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="579"/>
|
||||
<location filename="../src/gui.cpp" line="582"/>
|
||||
<source>Navigation</source>
|
||||
<translation>Navigation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="714"/>
|
||||
<location filename="../src/gui.cpp" line="722"/>
|
||||
<source>POIs</source>
|
||||
<translation>POIs</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="412"/>
|
||||
<location filename="../src/gui.cpp" line="982"/>
|
||||
<location filename="../src/gui.cpp" line="990"/>
|
||||
<source>Distance</source>
|
||||
<translation>Distanz</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="419"/>
|
||||
<location filename="../src/gui.cpp" line="543"/>
|
||||
<location filename="../src/gui.cpp" line="984"/>
|
||||
<location filename="../src/gui.cpp" line="418"/>
|
||||
<location filename="../src/gui.cpp" line="546"/>
|
||||
<location filename="../src/gui.cpp" line="992"/>
|
||||
<source>Time</source>
|
||||
<translation>Zeit</translation>
|
||||
</message>
|
||||
@ -688,48 +755,48 @@
|
||||
<context>
|
||||
<name>GraphView</name>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="108"/>
|
||||
<location filename="../src/graphview.cpp" line="109"/>
|
||||
<source>m</source>
|
||||
<translation>m</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="111"/>
|
||||
<location filename="../src/graphview.cpp" line="112"/>
|
||||
<source>km</source>
|
||||
<translation>km</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="116"/>
|
||||
<location filename="../src/graphview.cpp" line="117"/>
|
||||
<source>ft</source>
|
||||
<translation>ft</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="119"/>
|
||||
<location filename="../src/graphview.cpp" line="120"/>
|
||||
<source>mi</source>
|
||||
<translation>mi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="125"/>
|
||||
<location filename="../src/graphview.cpp" line="126"/>
|
||||
<source>s</source>
|
||||
<translation>sek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="128"/>
|
||||
<location filename="../src/graphview.cpp" line="129"/>
|
||||
<source>min</source>
|
||||
<translation>min</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="131"/>
|
||||
<location filename="../src/graphview.cpp" line="132"/>
|
||||
<source>h</source>
|
||||
<translation>tim</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="60"/>
|
||||
<location filename="../src/graphview.cpp" line="157"/>
|
||||
<location filename="../src/graphview.cpp" line="61"/>
|
||||
<location filename="../src/graphview.cpp" line="162"/>
|
||||
<source>Distance</source>
|
||||
<translation>Distanz</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="159"/>
|
||||
<location filename="../src/graphview.cpp" line="164"/>
|
||||
<source>Time</source>
|
||||
<translation>Zeit</translation>
|
||||
</message>
|
||||
@ -758,6 +825,25 @@
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>HeartRateGraphItem</name>
|
||||
<message>
|
||||
<location filename="../src/heartrategraphitem.cpp" line="20"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/heartrategraphitem.cpp" line="21"/>
|
||||
<location filename="../src/heartrategraphitem.cpp" line="23"/>
|
||||
<source>1/min</source>
|
||||
<translation>1/min</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/heartrategraphitem.cpp" line="22"/>
|
||||
<source>Average</source>
|
||||
<translation>Durchschnitt</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
@ -1151,6 +1237,25 @@
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PowerGraphItem</name>
|
||||
<message>
|
||||
<location filename="../src/powergraphitem.cpp" line="20"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/powergraphitem.cpp" line="21"/>
|
||||
<location filename="../src/powergraphitem.cpp" line="23"/>
|
||||
<source>1/min</source>
|
||||
<translation>1/min</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/powergraphitem.cpp" line="22"/>
|
||||
<source>Average</source>
|
||||
<translation>Durchschnitt</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RouteItem</name>
|
||||
<message>
|
||||
@ -1195,32 +1300,55 @@
|
||||
<context>
|
||||
<name>SpeedGraph</name>
|
||||
<message>
|
||||
<location filename="../src/speedgraph.cpp" line="13"/>
|
||||
<location filename="../src/speedgraph.cpp" line="14"/>
|
||||
<location filename="../src/speedgraph.h" line="14"/>
|
||||
<source>Speed</source>
|
||||
<translation>Geschwindigkeit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraph.cpp" line="79"/>
|
||||
<location filename="../src/speedgraph.cpp" line="82"/>
|
||||
<source>km/h</source>
|
||||
<translation>km/h</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraph.cpp" line="21"/>
|
||||
<location filename="../src/speedgraph.cpp" line="22"/>
|
||||
<source>Average</source>
|
||||
<translation>Durchschnitt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraph.cpp" line="23"/>
|
||||
<location filename="../src/speedgraph.cpp" line="24"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraph.cpp" line="82"/>
|
||||
<location filename="../src/speedgraph.cpp" line="85"/>
|
||||
<source>mi/h</source>
|
||||
<translation>mi/h</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SpeedGraphItem</name>
|
||||
<message>
|
||||
<location filename="../src/speedgraphitem.cpp" line="20"/>
|
||||
<source>km/h</source>
|
||||
<translation>km/h</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraphitem.cpp" line="20"/>
|
||||
<source>mi/h</source>
|
||||
<translation>mi/h</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraphitem.cpp" line="22"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraphitem.cpp" line="24"/>
|
||||
<source>Average</source>
|
||||
<translation>Durchschnitt</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TemperatureGraph</name>
|
||||
<message>
|
||||
@ -1245,16 +1373,44 @@
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraph.cpp" line="81"/>
|
||||
<location filename="../src/temperaturegraph.cpp" line="76"/>
|
||||
<source>C</source>
|
||||
<translation>C</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraph.cpp" line="85"/>
|
||||
<location filename="../src/temperaturegraph.cpp" line="80"/>
|
||||
<source>F</source>
|
||||
<translation>F</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TemperatureGraphItem</name>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraphitem.cpp" line="22"/>
|
||||
<source>C</source>
|
||||
<translation>C</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraphitem.cpp" line="22"/>
|
||||
<source>F</source>
|
||||
<translation>F</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraphitem.cpp" line="24"/>
|
||||
<source>Average</source>
|
||||
<translation>Durchschnitt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraphitem.cpp" line="26"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraphitem.cpp" line="28"/>
|
||||
<source>Minimum</source>
|
||||
<translation>Minimum</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TrackItem</name>
|
||||
<message>
|
||||
|
@ -22,7 +22,26 @@
|
||||
<message>
|
||||
<location filename="../src/cadencegraph.cpp" line="21"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximal</translation>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CadenceGraphItem</name>
|
||||
<message>
|
||||
<location filename="../src/cadencegraphitem.cpp" line="20"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/cadencegraphitem.cpp" line="21"/>
|
||||
<location filename="../src/cadencegraphitem.cpp" line="23"/>
|
||||
<source>1/min</source>
|
||||
<translation>1/min</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/cadencegraphitem.cpp" line="22"/>
|
||||
<source>Average</source>
|
||||
<translation>Medel</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -82,36 +101,69 @@
|
||||
<translation>Höjd</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraph.cpp" line="141"/>
|
||||
<location filename="../src/elevationgraph.cpp" line="122"/>
|
||||
<source>m</source>
|
||||
<translation>m</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraph.cpp" line="58"/>
|
||||
<location filename="../src/elevationgraph.cpp" line="57"/>
|
||||
<source>Ascent</source>
|
||||
<translation>Stigning</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraph.cpp" line="60"/>
|
||||
<location filename="../src/elevationgraph.cpp" line="59"/>
|
||||
<source>Descent</source>
|
||||
<translation>Nedstigning</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraph.cpp" line="64"/>
|
||||
<location filename="../src/elevationgraph.cpp" line="63"/>
|
||||
<source>Minimum</source>
|
||||
<translation>Minimum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraph.cpp" line="144"/>
|
||||
<location filename="../src/elevationgraph.cpp" line="125"/>
|
||||
<source>ft</source>
|
||||
<translation>ft</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraph.cpp" line="62"/>
|
||||
<location filename="../src/elevationgraph.cpp" line="61"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ElevationGraphItem</name>
|
||||
<message>
|
||||
<location filename="../src/elevationgraphitem.cpp" line="26"/>
|
||||
<source>m</source>
|
||||
<translation>m</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraphitem.cpp" line="26"/>
|
||||
<source>ft</source>
|
||||
<translation>ft</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraphitem.cpp" line="28"/>
|
||||
<source>Ascent</source>
|
||||
<translation>Stigning</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraphitem.cpp" line="30"/>
|
||||
<source>Descent</source>
|
||||
<translation>Nedstigning</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraphitem.cpp" line="32"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/elevationgraphitem.cpp" line="34"/>
|
||||
<source>Minimum</source>
|
||||
<translation>Minimum</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ExportDialog</name>
|
||||
<message>
|
||||
@ -218,24 +270,24 @@
|
||||
<context>
|
||||
<name>Format</name>
|
||||
<message>
|
||||
<location filename="../src/format.cpp" line="22"/>
|
||||
<location filename="../src/format.cpp" line="43"/>
|
||||
<location filename="../src/format.cpp" line="26"/>
|
||||
<location filename="../src/format.cpp" line="47"/>
|
||||
<source>ft</source>
|
||||
<translation>ft</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/format.cpp" line="25"/>
|
||||
<location filename="../src/format.cpp" line="29"/>
|
||||
<source>mi</source>
|
||||
<translation>mi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/format.cpp" line="29"/>
|
||||
<location filename="../src/format.cpp" line="40"/>
|
||||
<location filename="../src/format.cpp" line="33"/>
|
||||
<location filename="../src/format.cpp" line="44"/>
|
||||
<source>m</source>
|
||||
<translation>m</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/format.cpp" line="32"/>
|
||||
<location filename="../src/format.cpp" line="36"/>
|
||||
<source>km</source>
|
||||
<translation>km</translation>
|
||||
</message>
|
||||
@ -243,17 +295,17 @@
|
||||
<context>
|
||||
<name>GUI</name>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="645"/>
|
||||
<location filename="../src/gui.cpp" line="648"/>
|
||||
<source>GPXSee is distributed under the terms of the GNU General Public License version 3. For more info about GPXSee visit the project homepage at </source>
|
||||
<translation>GPXSee distribueras under vilkoren för GNU General Public License version 3. För mer info om GPXSee, besök hemsidan på </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="725"/>
|
||||
<location filename="../src/gui.cpp" line="733"/>
|
||||
<source>Open file</source>
|
||||
<translation>Öppna fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="815"/>
|
||||
<location filename="../src/gui.cpp" line="823"/>
|
||||
<source>Open POI file</source>
|
||||
<translation>Öppna POI-fil</translation>
|
||||
</message>
|
||||
@ -264,8 +316,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="291"/>
|
||||
<location filename="../src/gui.cpp" line="662"/>
|
||||
<location filename="../src/gui.cpp" line="663"/>
|
||||
<location filename="../src/gui.cpp" line="665"/>
|
||||
<location filename="../src/gui.cpp" line="666"/>
|
||||
<source>Keyboard controls</source>
|
||||
<translation>Snabbtangenter</translation>
|
||||
</message>
|
||||
@ -280,20 +332,20 @@
|
||||
<translation>Uppdatera</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="574"/>
|
||||
<location filename="../src/gui.cpp" line="577"/>
|
||||
<source>Show</source>
|
||||
<translation>Visa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="491"/>
|
||||
<location filename="../src/gui.cpp" line="568"/>
|
||||
<location filename="../src/gui.cpp" line="493"/>
|
||||
<location filename="../src/gui.cpp" line="571"/>
|
||||
<source>File</source>
|
||||
<translation>Arkiv</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="289"/>
|
||||
<location filename="../src/gui.cpp" line="691"/>
|
||||
<location filename="../src/gui.cpp" line="692"/>
|
||||
<location filename="../src/gui.cpp" line="699"/>
|
||||
<location filename="../src/gui.cpp" line="700"/>
|
||||
<source>Data sources</source>
|
||||
<translation>Datakällor</translation>
|
||||
</message>
|
||||
@ -345,7 +397,7 @@
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="367"/>
|
||||
<location filename="../src/gui.cpp" line="371"/>
|
||||
<location filename="../src/gui.cpp" line="674"/>
|
||||
<location filename="../src/gui.cpp" line="682"/>
|
||||
<source>Next map</source>
|
||||
<translation>Nästa karta</translation>
|
||||
</message>
|
||||
@ -375,188 +427,203 @@
|
||||
<translation>Visa diagram</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="426"/>
|
||||
<location filename="../src/gui.cpp" line="424"/>
|
||||
<source>Show grid</source>
|
||||
<translation>Visa stödlinjer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="432"/>
|
||||
<location filename="../src/gui.cpp" line="428"/>
|
||||
<source>Show slider info</source>
|
||||
<translation>Visa reglageinfo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="434"/>
|
||||
<source>Show toolbars</source>
|
||||
<translation>Visa verktygsfält</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="438"/>
|
||||
<location filename="../src/gui.cpp" line="440"/>
|
||||
<source>Total time</source>
|
||||
<translation>Total tid</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="443"/>
|
||||
<location filename="../src/gui.cpp" line="986"/>
|
||||
<location filename="../src/gui.cpp" line="445"/>
|
||||
<location filename="../src/gui.cpp" line="994"/>
|
||||
<source>Moving time</source>
|
||||
<translation>Förflyttningstid</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="450"/>
|
||||
<location filename="../src/gui.cpp" line="452"/>
|
||||
<source>Metric</source>
|
||||
<translation>Meter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="455"/>
|
||||
<location filename="../src/gui.cpp" line="457"/>
|
||||
<source>Imperial</source>
|
||||
<translation>Imperial</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="461"/>
|
||||
<location filename="../src/gui.cpp" line="463"/>
|
||||
<source>Fullscreen mode</source>
|
||||
<translation>Helskärmsläge</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="467"/>
|
||||
<location filename="../src/gui.cpp" line="469"/>
|
||||
<source>Options...</source>
|
||||
<translation>Alternativ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="473"/>
|
||||
<location filename="../src/gui.cpp" line="475"/>
|
||||
<source>Next</source>
|
||||
<translation>Nästa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="476"/>
|
||||
<location filename="../src/gui.cpp" line="478"/>
|
||||
<source>Previous</source>
|
||||
<translation>Föregående</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="480"/>
|
||||
<location filename="../src/gui.cpp" line="482"/>
|
||||
<source>Last</source>
|
||||
<translation>Sista</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="483"/>
|
||||
<location filename="../src/gui.cpp" line="485"/>
|
||||
<source>First</source>
|
||||
<translation>Första</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="505"/>
|
||||
<location filename="../src/gui.cpp" line="507"/>
|
||||
<source>Map</source>
|
||||
<translation>Karta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="513"/>
|
||||
<location filename="../src/gui.cpp" line="515"/>
|
||||
<source>Graph</source>
|
||||
<translation>Diagram</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="521"/>
|
||||
<location filename="../src/gui.cpp" line="524"/>
|
||||
<source>POI</source>
|
||||
<translation>POI</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="522"/>
|
||||
<location filename="../src/gui.cpp" line="525"/>
|
||||
<source>POI files</source>
|
||||
<translation>POI-filer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="533"/>
|
||||
<location filename="../src/gui.cpp" line="536"/>
|
||||
<source>Data</source>
|
||||
<translation>Data</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="534"/>
|
||||
<location filename="../src/gui.cpp" line="537"/>
|
||||
<source>Display</source>
|
||||
<translation>Visa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="542"/>
|
||||
<location filename="../src/gui.cpp" line="545"/>
|
||||
<source>Settings</source>
|
||||
<translation>Inställningar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="546"/>
|
||||
<location filename="../src/gui.cpp" line="549"/>
|
||||
<source>Units</source>
|
||||
<translation>Enhet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="555"/>
|
||||
<location filename="../src/gui.cpp" line="558"/>
|
||||
<source>Help</source>
|
||||
<translation>Hjälp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="672"/>
|
||||
<location filename="../src/gui.cpp" line="675"/>
|
||||
<source>Append file</source>
|
||||
<translation>Lägg till fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="673"/>
|
||||
<location filename="../src/gui.cpp" line="676"/>
|
||||
<source>Next/Previous</source>
|
||||
<translation>Nästa/Föregående</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="676"/>
|
||||
<location filename="../src/gui.cpp" line="678"/>
|
||||
<source>Toggle graph type</source>
|
||||
<translation>Växla diagramtyp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="680"/>
|
||||
<source>Toggle time type</source>
|
||||
<translation>Växla tidstyp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="684"/>
|
||||
<source>Previous map</source>
|
||||
<translation>Föregående karta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="677"/>
|
||||
<location filename="../src/gui.cpp" line="685"/>
|
||||
<source>Zoom in</source>
|
||||
<translation>Zooma in</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="679"/>
|
||||
<location filename="../src/gui.cpp" line="687"/>
|
||||
<source>Zoom out</source>
|
||||
<translation>Zooma ut</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="681"/>
|
||||
<location filename="../src/gui.cpp" line="689"/>
|
||||
<source>Digital zoom</source>
|
||||
<translation>Digital zoom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="682"/>
|
||||
<location filename="../src/gui.cpp" line="690"/>
|
||||
<source>Zoom</source>
|
||||
<translation>Zoom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="694"/>
|
||||
<location filename="../src/gui.cpp" line="702"/>
|
||||
<source>Online maps</source>
|
||||
<translation>Online-kartor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="695"/>
|
||||
<location filename="../src/gui.cpp" line="703"/>
|
||||
<source>Online map URLs are read on program startup from the following file:</source>
|
||||
<translation>Online-kartors URL:er, läses från följande fil vid programstart:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="698"/>
|
||||
<location filename="../src/gui.cpp" line="706"/>
|
||||
<source>The file format is one map entry per line, consisting of the map name, tiles URL and an optional maximal zoom level delimited by a TAB character. The tile X and Y coordinates are replaced with $x and $y in the URL and the zoom level is replaced with $z. An example map file could look like:</source>
|
||||
<translation>Filformatet är en kartpost per rad, bestående av kartans namn, webbadress och maximal zoomnivå om tillämpligt, Kartrutans X- och Y-koordinater ersätts med $x och $y, i webbadressen och zoomnivån ersätts med $z. Ett exempel på en kartfil kan se ut så här:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="706"/>
|
||||
<location filename="../src/gui.cpp" line="714"/>
|
||||
<source>Offline maps</source>
|
||||
<translation>Offline-kartor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="707"/>
|
||||
<location filename="../src/gui.cpp" line="715"/>
|
||||
<source>Offline maps are loaded on program startup from the following directory:</source>
|
||||
<translation>Offline-kartor läses in från följande mapp vid programstart:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="1179"/>
|
||||
<location filename="../src/gui.cpp" line="1193"/>
|
||||
<source>Open map file</source>
|
||||
<translation>Öppna kartfil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="1200"/>
|
||||
<location filename="../src/gui.cpp" line="1214"/>
|
||||
<source>Error loading map:</source>
|
||||
<translation>Fel vid inläsning av karta:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="1215"/>
|
||||
<location filename="../src/gui.cpp" line="1229"/>
|
||||
<source>No files loaded</source>
|
||||
<translation>Inga filer inlästa</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui.cpp" line="1219"/>
|
||||
<location filename="../src/gui.cpp" line="1233"/>
|
||||
<source>%n files</source>
|
||||
<translation>
|
||||
<numerusform>%n filer</numerusform>
|
||||
@ -564,23 +631,23 @@
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="972"/>
|
||||
<location filename="../src/gui.cpp" line="975"/>
|
||||
<location filename="../src/gui.cpp" line="980"/>
|
||||
<location filename="../src/gui.cpp" line="983"/>
|
||||
<source>Date</source>
|
||||
<translation>Datum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="964"/>
|
||||
<location filename="../src/gui.cpp" line="972"/>
|
||||
<source>Routes</source>
|
||||
<translation>Rutter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="666"/>
|
||||
<location filename="../src/gui.cpp" line="669"/>
|
||||
<source>Next file</source>
|
||||
<translation>Nästa fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="642"/>
|
||||
<location filename="../src/gui.cpp" line="645"/>
|
||||
<source>Version </source>
|
||||
<translation>Version </translation>
|
||||
</message>
|
||||
@ -595,12 +662,12 @@
|
||||
<translation>Exportera till PDF...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="966"/>
|
||||
<location filename="../src/gui.cpp" line="974"/>
|
||||
<source>Waypoints</source>
|
||||
<translation>Vägpunkter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="667"/>
|
||||
<location filename="../src/gui.cpp" line="670"/>
|
||||
<source>Previous file</source>
|
||||
<translation>Föregående fil</translation>
|
||||
</message>
|
||||
@ -610,77 +677,77 @@
|
||||
<translation>Ruttvägpunkter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="669"/>
|
||||
<location filename="../src/gui.cpp" line="672"/>
|
||||
<source>First file</source>
|
||||
<translation>Första filen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="671"/>
|
||||
<location filename="../src/gui.cpp" line="674"/>
|
||||
<source>Last file</source>
|
||||
<translation>Sista filen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="710"/>
|
||||
<location filename="../src/gui.cpp" line="718"/>
|
||||
<source>The expected structure is one map/atlas in a separate subdirectory. Supported map formats are OziExplorer maps and TrekBuddy maps/atlases (tared and non-tared).</source>
|
||||
<translation>Den förväntade strukturen är en karta/atlas i en separat undermapp. Kartformat som stöds är OziExplorer kartor och TrekBuddy-kartor/-kartsamlingar (tarerade och icke tarerade).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="715"/>
|
||||
<location filename="../src/gui.cpp" line="723"/>
|
||||
<source>To make GPXSee load a POI file automatically on startup, add the file to the following directory:</source>
|
||||
<translation>För att GPXSee skall läsa in en POI-fil automatiskt vid programstart, läggs filen i följande mapp:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="804"/>
|
||||
<location filename="../src/gui.cpp" line="812"/>
|
||||
<source>Error loading data file:</source>
|
||||
<translation>Fel vid inläsning av datafil:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="807"/>
|
||||
<location filename="../src/gui.cpp" line="832"/>
|
||||
<location filename="../src/gui.cpp" line="815"/>
|
||||
<location filename="../src/gui.cpp" line="840"/>
|
||||
<source>Line: %1</source>
|
||||
<translation>Rad: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="829"/>
|
||||
<location filename="../src/gui.cpp" line="837"/>
|
||||
<source>Error loading POI file:</source>
|
||||
<translation>Fel vid inläsning av POI-fil:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="958"/>
|
||||
<location filename="../src/gui.cpp" line="966"/>
|
||||
<source>Name</source>
|
||||
<translation>Namn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="962"/>
|
||||
<location filename="../src/gui.cpp" line="970"/>
|
||||
<source>Tracks</source>
|
||||
<translation>Spår</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="294"/>
|
||||
<location filename="../src/gui.cpp" line="641"/>
|
||||
<location filename="../src/gui.cpp" line="644"/>
|
||||
<source>About GPXSee</source>
|
||||
<translation>Om GPXSee</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="579"/>
|
||||
<location filename="../src/gui.cpp" line="582"/>
|
||||
<source>Navigation</source>
|
||||
<translation>Navigation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="714"/>
|
||||
<location filename="../src/gui.cpp" line="722"/>
|
||||
<source>POIs</source>
|
||||
<translation>POI:er</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="412"/>
|
||||
<location filename="../src/gui.cpp" line="982"/>
|
||||
<location filename="../src/gui.cpp" line="990"/>
|
||||
<source>Distance</source>
|
||||
<translation>Avstånd</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui.cpp" line="419"/>
|
||||
<location filename="../src/gui.cpp" line="543"/>
|
||||
<location filename="../src/gui.cpp" line="984"/>
|
||||
<location filename="../src/gui.cpp" line="418"/>
|
||||
<location filename="../src/gui.cpp" line="546"/>
|
||||
<location filename="../src/gui.cpp" line="992"/>
|
||||
<source>Time</source>
|
||||
<translation>Tid</translation>
|
||||
</message>
|
||||
@ -688,48 +755,48 @@
|
||||
<context>
|
||||
<name>GraphView</name>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="108"/>
|
||||
<location filename="../src/graphview.cpp" line="109"/>
|
||||
<source>m</source>
|
||||
<translation>m</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="111"/>
|
||||
<location filename="../src/graphview.cpp" line="112"/>
|
||||
<source>km</source>
|
||||
<translation>km</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="116"/>
|
||||
<location filename="../src/graphview.cpp" line="117"/>
|
||||
<source>ft</source>
|
||||
<translation>ft</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="119"/>
|
||||
<location filename="../src/graphview.cpp" line="120"/>
|
||||
<source>mi</source>
|
||||
<translation>mi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="125"/>
|
||||
<location filename="../src/graphview.cpp" line="126"/>
|
||||
<source>s</source>
|
||||
<translation>sek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="128"/>
|
||||
<location filename="../src/graphview.cpp" line="129"/>
|
||||
<source>min</source>
|
||||
<translation>min</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="131"/>
|
||||
<location filename="../src/graphview.cpp" line="132"/>
|
||||
<source>h</source>
|
||||
<translation>tim</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="60"/>
|
||||
<location filename="../src/graphview.cpp" line="157"/>
|
||||
<location filename="../src/graphview.cpp" line="61"/>
|
||||
<location filename="../src/graphview.cpp" line="162"/>
|
||||
<source>Distance</source>
|
||||
<translation>Avstånd</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/graphview.cpp" line="159"/>
|
||||
<location filename="../src/graphview.cpp" line="164"/>
|
||||
<source>Time</source>
|
||||
<translation>Tid</translation>
|
||||
</message>
|
||||
@ -758,6 +825,25 @@
|
||||
<translation>Max</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>HeartRateGraphItem</name>
|
||||
<message>
|
||||
<location filename="../src/heartrategraphitem.cpp" line="20"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/heartrategraphitem.cpp" line="21"/>
|
||||
<location filename="../src/heartrategraphitem.cpp" line="23"/>
|
||||
<source>1/min</source>
|
||||
<translation>1/min</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/heartrategraphitem.cpp" line="22"/>
|
||||
<source>Average</source>
|
||||
<translation>Medel</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MapList</name>
|
||||
<message>
|
||||
@ -1151,6 +1237,25 @@
|
||||
<translation>Max</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PowerGraphItem</name>
|
||||
<message>
|
||||
<location filename="../src/powergraphitem.cpp" line="20"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/powergraphitem.cpp" line="21"/>
|
||||
<location filename="../src/powergraphitem.cpp" line="23"/>
|
||||
<source>1/min</source>
|
||||
<translation>1/min</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/powergraphitem.cpp" line="22"/>
|
||||
<source>Average</source>
|
||||
<translation>Medel</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RouteItem</name>
|
||||
<message>
|
||||
@ -1195,32 +1300,55 @@
|
||||
<context>
|
||||
<name>SpeedGraph</name>
|
||||
<message>
|
||||
<location filename="../src/speedgraph.cpp" line="13"/>
|
||||
<location filename="../src/speedgraph.cpp" line="14"/>
|
||||
<location filename="../src/speedgraph.h" line="14"/>
|
||||
<source>Speed</source>
|
||||
<translation>Hastighet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraph.cpp" line="79"/>
|
||||
<location filename="../src/speedgraph.cpp" line="82"/>
|
||||
<source>km/h</source>
|
||||
<translation>km/h</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraph.cpp" line="21"/>
|
||||
<location filename="../src/speedgraph.cpp" line="22"/>
|
||||
<source>Average</source>
|
||||
<translation>Medel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraph.cpp" line="23"/>
|
||||
<location filename="../src/speedgraph.cpp" line="24"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Max</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraph.cpp" line="82"/>
|
||||
<location filename="../src/speedgraph.cpp" line="85"/>
|
||||
<source>mi/h</source>
|
||||
<translation>mi/h</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SpeedGraphItem</name>
|
||||
<message>
|
||||
<location filename="../src/speedgraphitem.cpp" line="20"/>
|
||||
<source>km/h</source>
|
||||
<translation>km/h</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraphitem.cpp" line="20"/>
|
||||
<source>mi/h</source>
|
||||
<translation>mi/h</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraphitem.cpp" line="22"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/speedgraphitem.cpp" line="24"/>
|
||||
<source>Average</source>
|
||||
<translation>Medel</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TemperatureGraph</name>
|
||||
<message>
|
||||
@ -1245,16 +1373,44 @@
|
||||
<translation>Max</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraph.cpp" line="81"/>
|
||||
<location filename="../src/temperaturegraph.cpp" line="76"/>
|
||||
<source>C</source>
|
||||
<translation>C</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraph.cpp" line="85"/>
|
||||
<location filename="../src/temperaturegraph.cpp" line="80"/>
|
||||
<source>F</source>
|
||||
<translation>F</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TemperatureGraphItem</name>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraphitem.cpp" line="22"/>
|
||||
<source>C</source>
|
||||
<translation>C</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraphitem.cpp" line="22"/>
|
||||
<source>F</source>
|
||||
<translation>F</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraphitem.cpp" line="24"/>
|
||||
<source>Average</source>
|
||||
<translation>Medel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraphitem.cpp" line="26"/>
|
||||
<source>Maximum</source>
|
||||
<translation>Maximum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/temperaturegraphitem.cpp" line="28"/>
|
||||
<source>Minimum</source>
|
||||
<translation>Minimum</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TrackItem</name>
|
||||
<message>
|
||||
|
@ -5,7 +5,7 @@
|
||||
; The name of the installer
|
||||
Name "GPXSee"
|
||||
; Program version
|
||||
!define VERSION "4.14"
|
||||
!define VERSION "4.15"
|
||||
|
||||
; The file to write
|
||||
OutFile "GPXSee-${VERSION}.exe"
|
||||
|
@ -5,7 +5,7 @@
|
||||
; The name of the installer
|
||||
Name "GPXSee"
|
||||
; Program version
|
||||
!define VERSION "4.14"
|
||||
!define VERSION "4.15"
|
||||
|
||||
; The file to write
|
||||
OutFile "GPXSee-${VERSION}_x64.exe"
|
||||
|
@ -1,10 +1,10 @@
|
||||
#include "data.h"
|
||||
#include "cadencegraphitem.h"
|
||||
#include "cadencegraph.h"
|
||||
|
||||
|
||||
CadenceGraph::CadenceGraph(QWidget *parent) : GraphTab(parent)
|
||||
{
|
||||
_units = Metric;
|
||||
_showTracks = true;
|
||||
|
||||
GraphView::setYUnits(tr("1/min"));
|
||||
@ -28,21 +28,16 @@ void CadenceGraph::loadData(const Data &data, const QList<PathItem *> &paths)
|
||||
{
|
||||
for (int i = 0; i < data.tracks().count(); i++) {
|
||||
const Graph &graph = data.tracks().at(i)->cadence();
|
||||
qreal sum = 0, w = 0;
|
||||
|
||||
if (graph.size() < 2) {
|
||||
skipColor();
|
||||
continue;
|
||||
}
|
||||
|
||||
for (int j = 1; j < graph.size(); j++) {
|
||||
qreal ds = graph.at(j).s() - graph.at(j-1).s();
|
||||
sum += graph.at(j).y() * ds;
|
||||
w += ds;
|
||||
}
|
||||
_avg.append(QPointF(data.tracks().at(i)->distance(), sum/w));
|
||||
CadenceGraphItem *gi = new CadenceGraphItem(graph, _graphType);
|
||||
GraphView::addGraph(gi, paths.at(i));
|
||||
|
||||
GraphView::loadGraph(graph, paths.at(i));
|
||||
_avg.append(QPointF(data.tracks().at(i)->distance(), gi->avg()));
|
||||
}
|
||||
|
||||
for (int i = 0; i < data.routes().count(); i++)
|
||||
|
@ -23,7 +23,6 @@ private:
|
||||
|
||||
QList<QPointF> _avg;
|
||||
|
||||
enum Units _units;
|
||||
bool _showTracks;
|
||||
};
|
||||
|
||||
|
26
src/cadencegraphitem.cpp
Normal file
26
src/cadencegraphitem.cpp
Normal file
@ -0,0 +1,26 @@
|
||||
#include "tooltip.h"
|
||||
#include "cadencegraphitem.h"
|
||||
|
||||
CadenceGraphItem::CadenceGraphItem(const Graph &graph, GraphType type,
|
||||
QGraphicsItem *parent) : GraphItem(graph, type, parent)
|
||||
{
|
||||
qreal sum = 0;
|
||||
|
||||
for (int j = 1; j < graph.size(); j++)
|
||||
sum += graph.at(j).y() * (graph.at(j).s() - graph.at(j-1).s());
|
||||
_avg = sum/graph.last().s();
|
||||
|
||||
setToolTip(toolTip());
|
||||
}
|
||||
|
||||
QString CadenceGraphItem::toolTip() const
|
||||
{
|
||||
ToolTip tt;
|
||||
|
||||
tt.insert(tr("Maximum"), QString::number(max(), 'f', 1)
|
||||
+ UNIT_SPACE + tr("1/min"));
|
||||
tt.insert(tr("Average"), QString::number(avg(), 'f', 1)
|
||||
+ UNIT_SPACE + tr("1/min"));
|
||||
|
||||
return tt.toString();
|
||||
}
|
23
src/cadencegraphitem.h
Normal file
23
src/cadencegraphitem.h
Normal file
@ -0,0 +1,23 @@
|
||||
#ifndef CADENCEGRAPHITEM_H
|
||||
#define CADENCEGRAPHITEM_H
|
||||
|
||||
#include "graphitem.h"
|
||||
|
||||
class CadenceGraphItem : public GraphItem
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
CadenceGraphItem(const Graph &graph, GraphType type,
|
||||
QGraphicsItem *parent = 0);
|
||||
|
||||
qreal max() const {return -bounds().top();}
|
||||
qreal avg() const {return _avg;}
|
||||
|
||||
private:
|
||||
QString toolTip() const;
|
||||
|
||||
qreal _avg;
|
||||
};
|
||||
|
||||
#endif // CADENCEGRAPHITEM_H
|
@ -1,6 +1,8 @@
|
||||
#include <cmath>
|
||||
#include "config.h"
|
||||
#include "data.h"
|
||||
#include "tooltip.h"
|
||||
#include "elevationgraphitem.h"
|
||||
#include "elevationgraph.h"
|
||||
|
||||
|
||||
@ -42,11 +44,8 @@ ElevationGraph::ElevationGraph(QWidget *parent) : GraphTab(parent)
|
||||
_showRoutes = true;
|
||||
_showTracks = true;
|
||||
|
||||
_units = Metric;
|
||||
|
||||
setYUnits();
|
||||
setYUnits(Metric);
|
||||
setYLabel(tr("Elevation"));
|
||||
|
||||
setMinYRange(50.0);
|
||||
}
|
||||
|
||||
@ -68,43 +67,25 @@ void ElevationGraph::setInfo()
|
||||
|
||||
void ElevationGraph::loadGraph(const Graph &graph, Type type, PathItem *path)
|
||||
{
|
||||
qreal ascent = 0, descent = 0;
|
||||
qreal min, max;
|
||||
|
||||
if (graph.size() < 2) {
|
||||
skipColor();
|
||||
return;
|
||||
}
|
||||
|
||||
max = min = graph.at(0).y();
|
||||
for (int j = 1; j < graph.size(); j++) {
|
||||
qreal cur = graph.at(j).y();
|
||||
qreal prev = graph.at(j-1).y();
|
||||
|
||||
if (cur > prev)
|
||||
ascent += cur - prev;
|
||||
if (cur < prev)
|
||||
descent += prev - cur;
|
||||
|
||||
if (cur < min)
|
||||
min = cur;
|
||||
if (cur > max)
|
||||
max = cur;
|
||||
}
|
||||
ElevationGraphItem *gi = new ElevationGraphItem(graph, _graphType);
|
||||
GraphView::addGraph(gi, path, type);
|
||||
|
||||
if (type == Track) {
|
||||
_trackAscent += ascent;
|
||||
_trackDescent += descent;
|
||||
_trackMax = nMax(_trackMax, max);
|
||||
_trackMin = nMin(_trackMin, min);
|
||||
_trackAscent += gi->ascent();
|
||||
_trackDescent += gi->descent();
|
||||
_trackMax = nMax(_trackMax, gi->max());
|
||||
_trackMin = nMin(_trackMin, gi->min());
|
||||
} else {
|
||||
_routeAscent += ascent;
|
||||
_routeDescent += descent;
|
||||
_routeMax = nMax(_routeMax, max);
|
||||
_routeMin = nMin(_routeMin, min);
|
||||
_routeAscent += gi->ascent();
|
||||
_routeDescent += gi->descent();
|
||||
_routeMax = nMax(_routeMax, gi->max());
|
||||
_routeMin = nMin(_routeMin, gi->min());
|
||||
}
|
||||
|
||||
GraphView::loadGraph(graph, path, type);
|
||||
}
|
||||
|
||||
void ElevationGraph::loadData(const Data &data, const QList<PathItem *> &paths)
|
||||
@ -135,9 +116,9 @@ void ElevationGraph::clear()
|
||||
GraphView::clear();
|
||||
}
|
||||
|
||||
void ElevationGraph::setYUnits()
|
||||
void ElevationGraph::setYUnits(Units units)
|
||||
{
|
||||
if (_units == Metric) {
|
||||
if (units == Metric) {
|
||||
GraphView::setYUnits(tr("m"));
|
||||
setYScale(1);
|
||||
} else {
|
||||
@ -146,15 +127,12 @@ void ElevationGraph::setYUnits()
|
||||
}
|
||||
}
|
||||
|
||||
void ElevationGraph::setUnits(enum Units units)
|
||||
void ElevationGraph::setUnits(Units units)
|
||||
{
|
||||
_units = units;
|
||||
|
||||
setYUnits();
|
||||
setYUnits(units);
|
||||
setInfo();
|
||||
GraphView::setUnits(units);
|
||||
|
||||
redraw();
|
||||
GraphView::setUnits(units);
|
||||
}
|
||||
|
||||
void ElevationGraph::showTracks(bool show)
|
||||
|
@ -25,7 +25,7 @@ private:
|
||||
qreal ascent() const;
|
||||
qreal descent() const;
|
||||
|
||||
void setYUnits();
|
||||
void setYUnits(Units units);
|
||||
void setInfo();
|
||||
|
||||
void loadGraph(const Graph &graph, Type type, PathItem *path);
|
||||
@ -35,7 +35,6 @@ private:
|
||||
qreal _trackMax, _routeMax;
|
||||
qreal _trackMin, _routeMin;
|
||||
|
||||
enum Units _units;
|
||||
bool _showTracks, _showRoutes;
|
||||
};
|
||||
|
||||
|
43
src/elevationgraphitem.cpp
Normal file
43
src/elevationgraphitem.cpp
Normal file
@ -0,0 +1,43 @@
|
||||
#include "tooltip.h"
|
||||
#include "elevationgraphitem.h"
|
||||
|
||||
ElevationGraphItem::ElevationGraphItem(const Graph &graph, GraphType type,
|
||||
QGraphicsItem *parent) : GraphItem(graph, type, parent)
|
||||
{
|
||||
_ascent = _descent = 0;
|
||||
|
||||
for (int j = 1; j < graph.size(); j++) {
|
||||
qreal cur = graph.at(j).y();
|
||||
qreal prev = graph.at(j-1).y();
|
||||
|
||||
if (cur > prev)
|
||||
_ascent += cur - prev;
|
||||
if (cur < prev)
|
||||
_descent += prev - cur;
|
||||
}
|
||||
|
||||
setToolTip(toolTip(Metric));
|
||||
}
|
||||
|
||||
QString ElevationGraphItem::toolTip(Units units) const
|
||||
{
|
||||
ToolTip tt;
|
||||
qreal scale = (units == Metric) ? 1.0 : M2FT;
|
||||
QString su = (units == Metric) ? tr("m") : tr("ft");
|
||||
|
||||
tt.insert(tr("Ascent"), QString::number(ascent() * scale, 'f', 0)
|
||||
+ UNIT_SPACE + su);
|
||||
tt.insert(tr("Descent"), QString::number(descent() * scale, 'f', 0)
|
||||
+ UNIT_SPACE + su);
|
||||
tt.insert(tr("Maximum"), QString::number(max() * scale, 'f', 0)
|
||||
+ UNIT_SPACE + su);
|
||||
tt.insert(tr("Minimum"), QString::number(min() * scale, 'f', 0)
|
||||
+ UNIT_SPACE + su);
|
||||
|
||||
return tt.toString();
|
||||
}
|
||||
|
||||
void ElevationGraphItem::setUnits(Units units)
|
||||
{
|
||||
setToolTip(toolTip(units));
|
||||
}
|
27
src/elevationgraphitem.h
Normal file
27
src/elevationgraphitem.h
Normal file
@ -0,0 +1,27 @@
|
||||
#ifndef ELEVATIONGRAPHITEM_H
|
||||
#define ELEVATIONGRAPHITEM_H
|
||||
|
||||
#include "graphitem.h"
|
||||
|
||||
class ElevationGraphItem : public GraphItem
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ElevationGraphItem(const Graph &graph, GraphType type,
|
||||
QGraphicsItem *parent = 0);
|
||||
|
||||
qreal ascent() const {return _ascent;}
|
||||
qreal descent() const {return _descent;}
|
||||
qreal min() const {return -bounds().bottom();}
|
||||
qreal max() const {return -bounds().top();}
|
||||
|
||||
void setUnits(Units units);
|
||||
|
||||
private:
|
||||
QString toolTip(Units units) const;
|
||||
|
||||
qreal _ascent, _descent;
|
||||
};
|
||||
|
||||
#endif // ELEVATIONGRAPHITEM_H
|
@ -2,7 +2,7 @@
|
||||
#include "coordinates.h"
|
||||
#include "format.h"
|
||||
|
||||
QString Format::timeSpan(qreal time)
|
||||
QString Format::timeSpan(qreal time, bool full)
|
||||
{
|
||||
unsigned h, m, s;
|
||||
|
||||
@ -10,8 +10,12 @@ QString Format::timeSpan(qreal time)
|
||||
m = (time - (h * 3600)) / 60;
|
||||
s = time - (h * 3600) - (m * 60);
|
||||
|
||||
return QString("%1:%2:%3").arg(h).arg(m, 2, 10, QChar('0'))
|
||||
.arg(s, 2, 10, QChar('0'));
|
||||
if (full || h)
|
||||
return QString("%1:%2:%3").arg(h, 2, 10, QChar('0'))
|
||||
.arg(m, 2, 10, QChar('0')).arg(s, 2, 10, QChar('0'));
|
||||
else
|
||||
return QString("%1:%2").arg(m, 2, 10, QChar('0'))
|
||||
.arg(s, 2, 10, QChar('0'));
|
||||
}
|
||||
|
||||
QString Format::distance(qreal value, Units units)
|
||||
|
@ -8,7 +8,7 @@ class Coordinates;
|
||||
|
||||
namespace Format
|
||||
{
|
||||
QString timeSpan(qreal time);
|
||||
QString timeSpan(qreal time, bool full = true);
|
||||
QString distance(qreal value, Units units);
|
||||
QString elevation(qreal value, Units units);
|
||||
QString coordinates(const Coordinates &value);
|
||||
|
@ -2,7 +2,7 @@
|
||||
#include "graphitem.h"
|
||||
|
||||
|
||||
GraphItem::GraphItem(const Graph &graph, QGraphicsItem *parent)
|
||||
GraphItem::GraphItem(const Graph &graph, GraphType type, QGraphicsItem *parent)
|
||||
: QGraphicsObject(parent)
|
||||
{
|
||||
_id = 0;
|
||||
@ -10,7 +10,7 @@ GraphItem::GraphItem(const Graph &graph, QGraphicsItem *parent)
|
||||
|
||||
_pen = QPen(Qt::black, _width);
|
||||
|
||||
_type = Distance;
|
||||
_type = type;
|
||||
_graph = graph;
|
||||
_sx = 1.0; _sy = 1.0;
|
||||
|
||||
@ -25,7 +25,17 @@ GraphItem::GraphItem(const Graph &graph, QGraphicsItem *parent)
|
||||
setZValue(1.0);
|
||||
|
||||
updatePath();
|
||||
updateShape();
|
||||
updateBounds();
|
||||
|
||||
setAcceptHoverEvents(true);
|
||||
}
|
||||
|
||||
void GraphItem::updateShape()
|
||||
{
|
||||
QPainterPathStroker s;
|
||||
s.setWidth(_width + 1);
|
||||
_shape = s.createStroke(_path);
|
||||
}
|
||||
|
||||
void GraphItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
||||
@ -46,25 +56,37 @@ void GraphItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
||||
|
||||
void GraphItem::setGraphType(GraphType type)
|
||||
{
|
||||
if (type == _type)
|
||||
return;
|
||||
|
||||
prepareGeometryChange();
|
||||
|
||||
_type = type;
|
||||
updatePath();
|
||||
updateShape();
|
||||
updateBounds();
|
||||
}
|
||||
|
||||
void GraphItem::setColor(const QColor &color)
|
||||
{
|
||||
if (_pen.color() == color)
|
||||
return;
|
||||
|
||||
_pen.setColor(color);
|
||||
update();
|
||||
}
|
||||
|
||||
void GraphItem::setWidth(int width)
|
||||
{
|
||||
if (width == _width)
|
||||
return;
|
||||
|
||||
prepareGeometryChange();
|
||||
|
||||
_width = width;
|
||||
_pen.setWidth(width);
|
||||
|
||||
updateShape();
|
||||
}
|
||||
|
||||
qreal GraphItem::yAtX(qreal x)
|
||||
@ -143,9 +165,9 @@ void GraphItem::emitSliderPositionChanged(qreal pos)
|
||||
emit sliderPositionChanged(pos);
|
||||
}
|
||||
|
||||
void GraphItem::selected(bool selected)
|
||||
void GraphItem::hover(bool hover)
|
||||
{
|
||||
if (selected) {
|
||||
if (hover) {
|
||||
_pen.setWidth(_width + 1);
|
||||
setZValue(zValue() + 1.0);
|
||||
} else {
|
||||
@ -165,6 +187,7 @@ void GraphItem::setScale(qreal sx, qreal sy)
|
||||
|
||||
_sx = sx; _sy = sy;
|
||||
updatePath();
|
||||
updateShape();
|
||||
}
|
||||
|
||||
void GraphItem::updatePath()
|
||||
@ -199,3 +222,25 @@ void GraphItem::updateBounds()
|
||||
|
||||
_bounds = QRectF(QPointF(left, top), QPointF(right, bottom));
|
||||
}
|
||||
|
||||
void GraphItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
|
||||
{
|
||||
Q_UNUSED(event);
|
||||
|
||||
_pen.setWidthF(_width + 1);
|
||||
setZValue(zValue() + 1.0);
|
||||
update();
|
||||
|
||||
emit selected(true);
|
||||
}
|
||||
|
||||
void GraphItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
|
||||
{
|
||||
Q_UNUSED(event);
|
||||
|
||||
_pen.setWidthF(_width);
|
||||
setZValue(zValue() - 1.0);
|
||||
update();
|
||||
|
||||
emit selected(false);
|
||||
}
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
#include <QGraphicsObject>
|
||||
#include <QPen>
|
||||
#include "units.h"
|
||||
#include "graph.h"
|
||||
|
||||
class GraphItem : public QGraphicsObject
|
||||
@ -10,34 +11,42 @@ class GraphItem : public QGraphicsObject
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
GraphItem(const Graph &graph, QGraphicsItem *parent = 0);
|
||||
GraphItem(const Graph &graph, GraphType type, QGraphicsItem *parent = 0);
|
||||
|
||||
QRectF boundingRect() const
|
||||
{return _path.boundingRect();}
|
||||
QPainterPath shape() const {return _shape;}
|
||||
QRectF boundingRect() const {return _shape.boundingRect();}
|
||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
||||
QWidget *widget);
|
||||
|
||||
const QRectF &bounds() const {return _bounds;}
|
||||
void setScale(qreal sx, qreal sy);
|
||||
|
||||
void setScale(qreal sx, qreal sy);
|
||||
void setGraphType(GraphType type);
|
||||
int id() const {return _id;}
|
||||
void setId(int id) {_id = id;}
|
||||
void setColor(const QColor &color);
|
||||
void setWidth(int width);
|
||||
virtual void setUnits(Units units) {Q_UNUSED(units);}
|
||||
|
||||
qreal yAtX(qreal x);
|
||||
qreal distanceAtTime(qreal time);
|
||||
|
||||
void redraw();
|
||||
|
||||
signals:
|
||||
void sliderPositionChanged(qreal);
|
||||
void selected(bool);
|
||||
|
||||
public slots:
|
||||
void emitSliderPositionChanged(qreal);
|
||||
void selected(bool selected);
|
||||
void hover(bool hover);
|
||||
|
||||
private:
|
||||
void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
|
||||
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
|
||||
|
||||
void updatePath();
|
||||
void updateShape();
|
||||
void updateBounds();
|
||||
|
||||
int _id;
|
||||
@ -48,6 +57,7 @@ private:
|
||||
GraphType _type;
|
||||
|
||||
QPainterPath _path;
|
||||
QPainterPath _shape;
|
||||
QRectF _bounds;
|
||||
qreal _sx, _sy;
|
||||
|
||||
|
@ -19,8 +19,9 @@ public:
|
||||
|
||||
virtual QString label() const = 0;
|
||||
virtual void loadData(const Data &data, const QList<PathItem *> &paths) = 0;
|
||||
virtual void clear() {}
|
||||
virtual void clear() {GraphView::clear();}
|
||||
virtual void setUnits(enum Units units) {GraphView::setUnits(units);}
|
||||
virtual void setGraphType(GraphType type) {GraphView::setGraphType(type);}
|
||||
virtual void setTimeType(enum TimeType type) {Q_UNUSED(type)}
|
||||
virtual void showTracks(bool show) {Q_UNUSED(show)}
|
||||
virtual void showRoutes(bool show) {Q_UNUSED(show)}
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include "graph.h"
|
||||
#include "graphitem.h"
|
||||
#include "pathitem.h"
|
||||
#include "format.h"
|
||||
#include "graphview.h"
|
||||
|
||||
|
||||
@ -139,7 +140,13 @@ void GraphView::setXUnits()
|
||||
void GraphView::setUnits(Units units)
|
||||
{
|
||||
_units = units;
|
||||
|
||||
for (int i = 0; i < _graphs.count(); i++)
|
||||
_graphs.at(i)->setUnits(units);
|
||||
|
||||
setXUnits();
|
||||
|
||||
redraw();
|
||||
}
|
||||
|
||||
void GraphView::setGraphType(GraphType type)
|
||||
@ -167,29 +174,31 @@ void GraphView::showGrid(bool show)
|
||||
_grid->setVisible(show);
|
||||
}
|
||||
|
||||
void GraphView::loadGraph(const Graph &graph, PathItem *path, int id)
|
||||
void GraphView::showSliderInfo(bool show)
|
||||
{
|
||||
if (graph.size() < 2)
|
||||
return;
|
||||
_sliderInfo->setVisible(show);
|
||||
}
|
||||
|
||||
GraphItem *gi = new GraphItem(graph);
|
||||
gi->setGraphType(_graphType);
|
||||
gi->setId(id);
|
||||
gi->setColor(_palette.nextColor());
|
||||
gi->setWidth(_width);
|
||||
void GraphView::addGraph(GraphItem *graph, PathItem *path, int id)
|
||||
{
|
||||
graph->setUnits(_units);
|
||||
graph->setId(id);
|
||||
graph->setColor(_palette.nextColor());
|
||||
graph->setWidth(_width);
|
||||
|
||||
connect(this, SIGNAL(sliderPositionChanged(qreal)), gi,
|
||||
connect(this, SIGNAL(sliderPositionChanged(qreal)), graph,
|
||||
SLOT(emitSliderPositionChanged(qreal)));
|
||||
connect(gi, SIGNAL(sliderPositionChanged(qreal)), path,
|
||||
connect(graph, SIGNAL(sliderPositionChanged(qreal)), path,
|
||||
SLOT(moveMarker(qreal)));
|
||||
connect(path, SIGNAL(selected(bool)), gi, SLOT(selected(bool)));
|
||||
connect(path, SIGNAL(selected(bool)), graph, SLOT(hover(bool)));
|
||||
connect(graph, SIGNAL(selected(bool)), path, SLOT(hover(bool)));
|
||||
|
||||
_graphs.append(gi);
|
||||
_graphs.append(graph);
|
||||
|
||||
if (!_hide.contains(id)) {
|
||||
_visible.append(gi);
|
||||
_scene->addItem(gi);
|
||||
_bounds |= gi->bounds();
|
||||
_visible.append(graph);
|
||||
_scene->addItem(graph);
|
||||
_bounds |= graph->bounds();
|
||||
setXUnits();
|
||||
}
|
||||
}
|
||||
@ -227,11 +236,6 @@ void GraphView::showGraph(bool show, int id)
|
||||
}
|
||||
}
|
||||
|
||||
void GraphView::redraw()
|
||||
{
|
||||
redraw(viewport()->size() - QSizeF(MARGIN, MARGIN));
|
||||
}
|
||||
|
||||
QRectF GraphView::bounds() const
|
||||
{
|
||||
QRectF br(_bounds);
|
||||
@ -239,6 +243,11 @@ QRectF GraphView::bounds() const
|
||||
return br;
|
||||
}
|
||||
|
||||
void GraphView::redraw()
|
||||
{
|
||||
redraw(viewport()->size() - QSizeF(MARGIN, MARGIN));
|
||||
}
|
||||
|
||||
void GraphView::redraw(const QSizeF &size)
|
||||
{
|
||||
QRectF r;
|
||||
@ -372,22 +381,26 @@ void GraphView::updateSliderPosition()
|
||||
_slider->setVisible(false);
|
||||
}
|
||||
|
||||
updateSliderInfo();
|
||||
if (_slider->isVisible())
|
||||
updateSliderInfo();
|
||||
}
|
||||
|
||||
void GraphView::updateSliderInfo()
|
||||
{
|
||||
_sliderInfo->setVisible(_visible.count() == 1);
|
||||
if (!_sliderInfo->isVisible())
|
||||
return;
|
||||
qreal r, y;
|
||||
|
||||
QRectF br(_visible.first()->bounds());
|
||||
if (br.height() < _minYRange)
|
||||
br.adjust(0, -(_minYRange/2 - br.height()/2), 0,
|
||||
_minYRange/2 - br.height()/2);
|
||||
if (_visible.count() > 1) {
|
||||
r = 0;
|
||||
y = 0;
|
||||
} else {
|
||||
QRectF br(_visible.first()->bounds());
|
||||
if (br.height() < _minYRange)
|
||||
br.adjust(0, -(_minYRange/2 - br.height()/2), 0,
|
||||
_minYRange/2 - br.height()/2);
|
||||
|
||||
qreal y = _visible.first()->yAtX(_sliderPos);
|
||||
qreal r = (y - br.bottom()) / br.height();
|
||||
y = _visible.first()->yAtX(_sliderPos);
|
||||
r = (y - br.bottom()) / br.height();
|
||||
}
|
||||
|
||||
qreal pos = (_sliderPos / bounds().width()) * _slider->area().width();
|
||||
SliderInfoItem::Side s = (pos + _sliderInfo->boundingRect().width()
|
||||
@ -395,8 +408,11 @@ void GraphView::updateSliderInfo()
|
||||
|
||||
_sliderInfo->setSide(s);
|
||||
_sliderInfo->setPos(QPointF(0, _slider->boundingRect().height() * r));
|
||||
_sliderInfo->setText(QString::number(-y * _yScale + _yOffset, 'f',
|
||||
_precision));
|
||||
_sliderInfo->setText(_graphType == Time ? Format::timeSpan(_sliderPos,
|
||||
bounds().width() > 3600) : QString::number(_sliderPos * _xScale, 'f', 1)
|
||||
+ UNIT_SPACE + _xUnits, (_visible.count() > 1) ? QString()
|
||||
: QString::number(-y * _yScale + _yOffset, 'f', _precision) + UNIT_SPACE
|
||||
+ _yUnits);
|
||||
}
|
||||
|
||||
void GraphView::emitSliderPositionChanged(const QPointF &pos)
|
||||
@ -452,6 +468,8 @@ void GraphView::setGraphWidth(int width)
|
||||
|
||||
for (int i = 0; i < _graphs.count(); i++)
|
||||
_graphs.at(i)->setWidth(width);
|
||||
|
||||
redraw();
|
||||
}
|
||||
|
||||
void GraphView::useOpenGL(bool use)
|
||||
|
@ -4,9 +4,9 @@
|
||||
#include <QGraphicsView>
|
||||
#include <QList>
|
||||
#include <QSet>
|
||||
#include "graph.h"
|
||||
#include "palette.h"
|
||||
#include "units.h"
|
||||
#include "graph.h"
|
||||
|
||||
|
||||
class AxisItem;
|
||||
@ -25,18 +25,29 @@ public:
|
||||
GraphView(QWidget *parent = 0);
|
||||
~GraphView();
|
||||
|
||||
void loadGraph(const Graph &graph, PathItem *path, int id = 0);
|
||||
int count() const {return _graphs.count();}
|
||||
void redraw();
|
||||
bool isEmpty() const {return _graphs.isEmpty();}
|
||||
void clear();
|
||||
|
||||
void plot(QPainter *painter, const QRectF &target, qreal scale);
|
||||
|
||||
void setPalette(const Palette &palette);
|
||||
void setGraphWidth(int width);
|
||||
void showGrid(bool show);
|
||||
void showSliderInfo(bool show);
|
||||
void useOpenGL(bool use);
|
||||
void useAntiAliasing(bool use);
|
||||
|
||||
void setSliderPosition(qreal pos);
|
||||
|
||||
signals:
|
||||
void sliderPositionChanged(qreal);
|
||||
|
||||
protected:
|
||||
void addGraph(GraphItem *graph, PathItem *path, int id = 0);
|
||||
|
||||
void showGraph(bool show, int id = 0);
|
||||
void setGraphType(GraphType type);
|
||||
void setUnits(Units units);
|
||||
void showGrid(bool show);
|
||||
|
||||
void setPalette(const Palette &palette);
|
||||
void setGraphWidth(int width);
|
||||
|
||||
const QString &yLabel() const {return _yLabel;}
|
||||
const QString &yUnits() const {return _yUnits;}
|
||||
@ -50,24 +61,16 @@ public:
|
||||
void setSliderPrecision(int precision) {_precision = precision;}
|
||||
void setMinYRange(qreal range) {_minYRange = range;}
|
||||
|
||||
qreal sliderPosition() const {return _sliderPos;}
|
||||
void setSliderPosition(qreal pos);
|
||||
|
||||
void plot(QPainter *painter, const QRectF &target, qreal scale);
|
||||
|
||||
void useOpenGL(bool use);
|
||||
void useAntiAliasing(bool use);
|
||||
|
||||
signals:
|
||||
void sliderPositionChanged(qreal);
|
||||
|
||||
protected:
|
||||
QRectF bounds() const;
|
||||
void redraw();
|
||||
void redraw(const QSizeF &size);
|
||||
void addInfo(const QString &key, const QString &value);
|
||||
void clearInfo();
|
||||
void skipColor() {_palette.nextColor();}
|
||||
|
||||
QList<GraphItem*> _graphs;
|
||||
GraphType _graphType;
|
||||
|
||||
private slots:
|
||||
void emitSliderPositionChanged(const QPointF &pos);
|
||||
void newSliderPosition(const QPointF &pos);
|
||||
@ -84,6 +87,7 @@ private:
|
||||
void resizeEvent(QResizeEvent *);
|
||||
void mousePressEvent(QMouseEvent *);
|
||||
|
||||
Units _units;
|
||||
qreal _xScale, _yScale;
|
||||
qreal _yOffset;
|
||||
QString _xUnits, _yUnits;
|
||||
@ -100,15 +104,11 @@ private:
|
||||
InfoItem *_info;
|
||||
GridItem *_grid;
|
||||
|
||||
QList<GraphItem*> _graphs;
|
||||
QList<GraphItem*> _visible;
|
||||
QSet<int> _hide;
|
||||
QRectF _bounds;
|
||||
Palette _palette;
|
||||
int _width;
|
||||
|
||||
Units _units;
|
||||
GraphType _graphType;
|
||||
};
|
||||
|
||||
#endif // GRAPHVIEW_H
|
||||
|
58
src/gui.cpp
58
src/gui.cpp
@ -361,7 +361,7 @@ void GUI::createActions()
|
||||
tr("Load map..."), this);
|
||||
connect(_loadMapAction, SIGNAL(triggered()), this, SLOT(loadMap()));
|
||||
_clearMapCacheAction = new QAction(tr("Clear tile cache"), this);
|
||||
connect(_clearMapCacheAction, SIGNAL(triggered()), this,
|
||||
connect(_clearMapCacheAction, SIGNAL(triggered()), _pathView,
|
||||
SLOT(clearMapCache()));
|
||||
createMapActions();
|
||||
_nextMapAction = new QAction(tr("Next map"), this);
|
||||
@ -412,14 +412,12 @@ void GUI::createActions()
|
||||
_distanceGraphAction = new QAction(tr("Distance"), this);
|
||||
_distanceGraphAction->setCheckable(true);
|
||||
_distanceGraphAction->setActionGroup(ag);
|
||||
_distanceGraphAction->setShortcut(DISTANCE_GRAPH_SHORTCUT);
|
||||
connect(_distanceGraphAction, SIGNAL(triggered()), this,
|
||||
SLOT(setDistanceGraph()));
|
||||
addAction(_distanceGraphAction);
|
||||
_timeGraphAction = new QAction(tr("Time"), this);
|
||||
_timeGraphAction->setCheckable(true);
|
||||
_timeGraphAction->setActionGroup(ag);
|
||||
_timeGraphAction->setShortcut(TIME_GRAPH_SHORTCUT);
|
||||
connect(_timeGraphAction, SIGNAL(triggered()), this,
|
||||
SLOT(setTimeGraph()));
|
||||
addAction(_timeGraphAction);
|
||||
@ -427,6 +425,10 @@ void GUI::createActions()
|
||||
_showGraphGridAction->setCheckable(true);
|
||||
connect(_showGraphGridAction, SIGNAL(triggered(bool)), this,
|
||||
SLOT(showGraphGrids(bool)));
|
||||
_showGraphSliderInfoAction = new QAction(tr("Show slider info"), this);
|
||||
_showGraphSliderInfoAction->setCheckable(true);
|
||||
connect(_showGraphSliderInfoAction, SIGNAL(triggered(bool)), this,
|
||||
SLOT(showGraphSliderInfo(bool)));
|
||||
|
||||
// Settings actions
|
||||
_showToolbarsAction = new QAction(tr("Show toolbars"), this);
|
||||
@ -515,6 +517,7 @@ void GUI::createMenus()
|
||||
graphMenu->addAction(_timeGraphAction);
|
||||
graphMenu->addSeparator();
|
||||
graphMenu->addAction(_showGraphGridAction);
|
||||
graphMenu->addAction(_showGraphSliderInfoAction);
|
||||
graphMenu->addSeparator();
|
||||
graphMenu->addAction(_showGraphsAction);
|
||||
|
||||
@ -671,7 +674,12 @@ void GUI::keys()
|
||||
+ tr("Last file") + "</td><td><i>" + QKeySequence(LAST_KEY).toString()
|
||||
+ "</i></td></tr><tr><td>" + tr("Append file")
|
||||
+ "</td><td><i>" + QKeySequence(MODIFIER).toString() + tr("Next/Previous")
|
||||
+ "</i></td></tr><tr><td></td><td></td></tr><tr><td>" + tr("Next map")
|
||||
+ "</i></td></tr><tr><td></td><td></td></tr><tr><td>"
|
||||
+ tr("Toggle graph type") + "</td><td><i>"
|
||||
+ QKeySequence(TOGGLE_GRAPH_TYPE_KEY).toString() + "</i></td></tr><tr><td>"
|
||||
+ tr("Toggle time type") + "</td><td><i>"
|
||||
+ QKeySequence(TOGGLE_TIME_TYPE_KEY).toString()
|
||||
+ "<tr><td></td><td></td></tr><tr><td>" + tr("Next map")
|
||||
+ "</td><td><i>" + NEXT_MAP_SHORTCUT.toString() + "</i></td></tr><tr><td>"
|
||||
+ tr("Previous map") + "</td><td><i>" + PREV_MAP_SHORTCUT.toString()
|
||||
+ "</i></td></tr><tr><td></td><td></td></tr><tr><td>" + tr("Zoom in")
|
||||
@ -1014,7 +1022,7 @@ void GUI::plot(QPrinter *printer)
|
||||
|
||||
int cnt = 0;
|
||||
for (int i = 0; i < _tabs.size(); i++)
|
||||
if (_tabs.at(i)->count())
|
||||
if (!_tabs.at(i)->isEmpty())
|
||||
cnt++;
|
||||
|
||||
qreal sp = ratio * 20;
|
||||
@ -1023,7 +1031,7 @@ void GUI::plot(QPrinter *printer)
|
||||
|
||||
qreal y = 0;
|
||||
for (int i = 0; i < _tabs.size(); i++) {
|
||||
if (_tabs.at(i)->count()) {
|
||||
if (!_tabs.at(i)->isEmpty()) {
|
||||
_tabs.at(i)->plot(&p, QRectF(0, y, printer->width(), gh),
|
||||
ratio);
|
||||
y += gh + sp;
|
||||
@ -1174,6 +1182,12 @@ void GUI::showGraphGrids(bool show)
|
||||
_tabs.at(i)->showGrid(show);
|
||||
}
|
||||
|
||||
void GUI::showGraphSliderInfo(bool show)
|
||||
{
|
||||
for (int i = 0; i < _tabs.size(); i++)
|
||||
_tabs.at(i)->showSliderInfo(show);
|
||||
}
|
||||
|
||||
void GUI::loadMap()
|
||||
{
|
||||
QString fileName = QFileDialog::getOpenFileName(this, tr("Open map file"),
|
||||
@ -1203,12 +1217,6 @@ void GUI::loadMap()
|
||||
}
|
||||
}
|
||||
|
||||
void GUI::clearMapCache()
|
||||
{
|
||||
_map->clearCache();
|
||||
_pathView->redraw();
|
||||
}
|
||||
|
||||
void GUI::updateStatusBarInfo()
|
||||
{
|
||||
if (_files.count() == 0)
|
||||
@ -1320,13 +1328,13 @@ void GUI::updateGraphTabs()
|
||||
|
||||
for (int i = 0; i < _tabs.size(); i++) {
|
||||
tab = _tabs.at(i);
|
||||
if (!tab->count() && (index = _graphTabWidget->indexOf(tab)) >= 0)
|
||||
if (tab->isEmpty() && (index = _graphTabWidget->indexOf(tab)) >= 0)
|
||||
_graphTabWidget->removeTab(index);
|
||||
}
|
||||
|
||||
for (int i = 0; i < _tabs.size(); i++) {
|
||||
tab = _tabs.at(i);
|
||||
if (tab->count() && _graphTabWidget->indexOf(tab) < 0)
|
||||
if (!tab->isEmpty() && _graphTabWidget->indexOf(tab) < 0)
|
||||
_graphTabWidget->insertTab(i, tab, _tabs.at(i)->label());
|
||||
}
|
||||
|
||||
@ -1433,6 +1441,19 @@ void GUI::keyPressEvent(QKeyEvent *event)
|
||||
file = _browser->last();
|
||||
break;
|
||||
|
||||
case TOGGLE_GRAPH_TYPE_KEY:
|
||||
if (_timeGraphAction->isChecked())
|
||||
_distanceGraphAction->activate(QAction::Trigger);
|
||||
else
|
||||
_timeGraphAction->activate(QAction::Trigger);
|
||||
break;
|
||||
case TOGGLE_TIME_TYPE_KEY:
|
||||
if (_movingTimeAction->isChecked())
|
||||
_totalTimeAction->activate(QAction::Trigger);
|
||||
else
|
||||
_movingTimeAction->activate(QAction::Trigger);
|
||||
break;
|
||||
|
||||
case Qt::Key_Escape:
|
||||
if (_fullscreenAction->isChecked()) {
|
||||
_fullscreenAction->setChecked(false);
|
||||
@ -1521,6 +1542,10 @@ void GUI::writeSettings()
|
||||
if (_showGraphGridAction->isChecked() != SHOW_GRAPH_GRIDS_DEFAULT)
|
||||
settings.setValue(SHOW_GRAPH_GRIDS_SETTING,
|
||||
_showGraphGridAction->isChecked());
|
||||
if (_showGraphSliderInfoAction->isChecked()
|
||||
!= SHOW_GRAPH_SLIDER_INFO_DEFAULT)
|
||||
settings.setValue(SHOW_GRAPH_SLIDER_INFO_SETTING,
|
||||
_showGraphSliderInfoAction->isChecked());
|
||||
settings.endGroup();
|
||||
|
||||
settings.beginGroup(POI_SETTINGS_GROUP);
|
||||
@ -1708,6 +1733,11 @@ void GUI::readSettings()
|
||||
showGraphGrids(false);
|
||||
else
|
||||
_showGraphGridAction->setChecked(true);
|
||||
if (!settings.value(SHOW_GRAPH_SLIDER_INFO_SETTING,
|
||||
SHOW_GRAPH_SLIDER_INFO_DEFAULT).toBool())
|
||||
showGraphSliderInfo(false);
|
||||
else
|
||||
_showGraphSliderInfoAction->setChecked(true);
|
||||
settings.endGroup();
|
||||
|
||||
settings.beginGroup(POI_SETTINGS_GROUP);
|
||||
|
@ -51,12 +51,12 @@ private slots:
|
||||
void closePOIFiles();
|
||||
void showGraphs(bool show);
|
||||
void showGraphGrids(bool show);
|
||||
void showGraphSliderInfo(bool show);
|
||||
void showToolbars(bool show);
|
||||
void showFullscreen(bool show);
|
||||
void showTracks(bool show);
|
||||
void showRoutes(bool show);
|
||||
void loadMap();
|
||||
void clearMapCache();
|
||||
void nextMap();
|
||||
void prevMap();
|
||||
void openOptions();
|
||||
@ -156,6 +156,7 @@ private:
|
||||
QAction *_clearMapCacheAction;
|
||||
QAction *_showGraphsAction;
|
||||
QAction *_showGraphGridAction;
|
||||
QAction *_showGraphSliderInfoAction;
|
||||
QAction *_distanceGraphAction;
|
||||
QAction *_timeGraphAction;
|
||||
QAction *_showToolbarsAction;
|
||||
|
@ -1,10 +1,10 @@
|
||||
#include "data.h"
|
||||
#include "heartrategraphitem.h"
|
||||
#include "heartrategraph.h"
|
||||
|
||||
|
||||
HeartRateGraph::HeartRateGraph(QWidget *parent) : GraphTab(parent)
|
||||
{
|
||||
_units = Metric;
|
||||
_showTracks = true;
|
||||
|
||||
GraphView::setYUnits(tr("1/min"));
|
||||
@ -28,21 +28,16 @@ void HeartRateGraph::loadData(const Data &data, const QList<PathItem *> &paths)
|
||||
{
|
||||
for (int i = 0; i < data.tracks().count(); i++) {
|
||||
const Graph &graph = data.tracks().at(i)->heartRate();
|
||||
qreal sum = 0, w = 0;
|
||||
|
||||
if (graph.size() < 2) {
|
||||
skipColor();
|
||||
continue;
|
||||
}
|
||||
|
||||
for (int j = 1; j < graph.size(); j++) {
|
||||
qreal ds = graph.at(j).s() - graph.at(j-1).s();
|
||||
sum += graph.at(j).y() * ds;
|
||||
w += ds;
|
||||
}
|
||||
_avg.append(QPointF(data.tracks().at(i)->distance(), sum/w));
|
||||
HeartRateGraphItem *gi = new HeartRateGraphItem(graph, _graphType);
|
||||
GraphView::addGraph(gi, paths.at(i));
|
||||
|
||||
GraphView::loadGraph(graph, paths.at(i));
|
||||
_avg.append(QPointF(data.tracks().at(i)->distance(), gi->avg()));
|
||||
}
|
||||
|
||||
for (int i = 0; i < data.routes().count(); i++)
|
||||
|
@ -22,7 +22,6 @@ private:
|
||||
|
||||
QList<QPointF> _avg;
|
||||
|
||||
enum Units _units;
|
||||
bool _showTracks;
|
||||
};
|
||||
|
||||
|
26
src/heartrategraphitem.cpp
Normal file
26
src/heartrategraphitem.cpp
Normal file
@ -0,0 +1,26 @@
|
||||
#include "tooltip.h"
|
||||
#include "heartrategraphitem.h"
|
||||
|
||||
HeartRateGraphItem::HeartRateGraphItem(const Graph &graph, GraphType type,
|
||||
QGraphicsItem *parent) : GraphItem(graph, type, parent)
|
||||
{
|
||||
qreal sum = 0;
|
||||
|
||||
for (int j = 1; j < graph.size(); j++)
|
||||
sum += graph.at(j).y() * (graph.at(j).s() - graph.at(j-1).s());
|
||||
_avg = sum/graph.last().s();
|
||||
|
||||
setToolTip(toolTip());
|
||||
}
|
||||
|
||||
QString HeartRateGraphItem::toolTip() const
|
||||
{
|
||||
ToolTip tt;
|
||||
|
||||
tt.insert(tr("Maximum"), QString::number(max(), 'f', 0)
|
||||
+ UNIT_SPACE + tr("1/min"));
|
||||
tt.insert(tr("Average"), QString::number(avg(), 'f', 0)
|
||||
+ UNIT_SPACE + tr("1/min"));
|
||||
|
||||
return tt.toString();
|
||||
}
|
23
src/heartrategraphitem.h
Normal file
23
src/heartrategraphitem.h
Normal file
@ -0,0 +1,23 @@
|
||||
#ifndef HEARTRATEGRAPHITEM_H
|
||||
#define HEARTRATEGRAPHITEM_H
|
||||
|
||||
#include "graphitem.h"
|
||||
|
||||
class HeartRateGraphItem : public GraphItem
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
HeartRateGraphItem(const Graph &graph, GraphType type,
|
||||
QGraphicsItem *parent = 0);
|
||||
|
||||
qreal max() const {return -bounds().top();}
|
||||
qreal avg() const {return _avg;}
|
||||
|
||||
private:
|
||||
QString toolTip() const;
|
||||
|
||||
qreal _avg;
|
||||
};
|
||||
|
||||
#endif // HEARTRATEGRAPHITEM_H
|
@ -13,6 +13,9 @@
|
||||
#define ZOOM_IN QKeySequence::ZoomIn
|
||||
#define ZOOM_OUT QKeySequence::ZoomOut
|
||||
|
||||
#define TOGGLE_GRAPH_TYPE_KEY Qt::Key_X
|
||||
#define TOGGLE_TIME_TYPE_KEY Qt::Key_T
|
||||
|
||||
#define QUIT_SHORTCUT QKeySequence(QKeySequence::Quit)
|
||||
#define OPEN_SHORTCUT QKeySequence(QKeySequence::Open)
|
||||
#define CLOSE_SHORTCUT QKeySequence(QKeySequence::Close)
|
||||
@ -23,8 +26,6 @@
|
||||
#define NEXT_MAP_SHORTCUT QKeySequence(QKeySequence::Forward)
|
||||
#define PREV_MAP_SHORTCUT QKeySequence(QKeySequence::Back)
|
||||
#define SHOW_GRAPHS_SHORTCUT QKeySequence(Qt::CTRL + Qt::Key_G)
|
||||
#define DISTANCE_GRAPH_SHORTCUT QKeySequence(Qt::CTRL + Qt::Key_D)
|
||||
#define TIME_GRAPH_SHORTCUT QKeySequence(Qt::CTRL + Qt::Key_T)
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
#define FULLSCREEN_SHORTCUT QKeySequence(Qt::META + Qt::CTRL + Qt::Key_F)
|
||||
|
@ -56,13 +56,21 @@ OnlineMap::OnlineMap(const QString &name, const QString &url,
|
||||
_zooms = zooms;
|
||||
_zoom = zooms.max();
|
||||
|
||||
connect(downloader, SIGNAL(finished()), this, SLOT(emitLoaded()));
|
||||
|
||||
QString path = TILES_DIR + QString("/") + name;
|
||||
if (!QDir().mkpath(path))
|
||||
qWarning("Error creating tiles dir: %s\n", qPrintable(path));
|
||||
}
|
||||
|
||||
void OnlineMap::load()
|
||||
{
|
||||
connect(downloader, SIGNAL(finished()), this, SLOT(emitLoaded()));
|
||||
}
|
||||
|
||||
void OnlineMap::unload()
|
||||
{
|
||||
disconnect(downloader, SIGNAL(finished()), this, SLOT(emitLoaded()));
|
||||
}
|
||||
|
||||
void OnlineMap::fillTile(Tile &tile)
|
||||
{
|
||||
tile.pixmap() = QPixmap(TILE_SIZE, TILE_SIZE);
|
||||
|
@ -37,6 +37,9 @@ public:
|
||||
static void setDownloader(Downloader *downloader)
|
||||
{OnlineMap::downloader = downloader;}
|
||||
|
||||
void load();
|
||||
void unload();
|
||||
|
||||
private slots:
|
||||
void emitLoaded();
|
||||
|
||||
|
@ -66,9 +66,10 @@ void PathItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
||||
|
||||
void PathItem::setMap(Map *map)
|
||||
{
|
||||
_map = map;
|
||||
prepareGeometryChange();
|
||||
|
||||
_map = map;
|
||||
|
||||
updatePainterPath(map);
|
||||
updateShape();
|
||||
|
||||
@ -77,12 +78,18 @@ void PathItem::setMap(Map *map)
|
||||
|
||||
void PathItem::setColor(const QColor &color)
|
||||
{
|
||||
if (_pen.color() == color)
|
||||
return;
|
||||
|
||||
_pen.setColor(color);
|
||||
update();
|
||||
}
|
||||
|
||||
void PathItem::setWidth(qreal width)
|
||||
{
|
||||
if (_width == width)
|
||||
return;
|
||||
|
||||
prepareGeometryChange();
|
||||
|
||||
_width = width;
|
||||
@ -93,12 +100,18 @@ void PathItem::setWidth(qreal width)
|
||||
|
||||
void PathItem::setStyle(Qt::PenStyle style)
|
||||
{
|
||||
if (_pen.style() == style)
|
||||
return;
|
||||
|
||||
_pen.setStyle(style);
|
||||
update();
|
||||
}
|
||||
|
||||
void PathItem::setDigitalZoom(int zoom)
|
||||
{
|
||||
if (_digitalZoom == zoom)
|
||||
return;
|
||||
|
||||
prepareGeometryChange();
|
||||
|
||||
_digitalZoom = zoom;
|
||||
@ -154,6 +167,19 @@ void PathItem::moveMarker(qreal distance)
|
||||
_marker->setVisible(false);
|
||||
}
|
||||
|
||||
void PathItem::hover(bool hover)
|
||||
{
|
||||
if (hover) {
|
||||
_pen.setWidth(_width + 1);
|
||||
setZValue(zValue() + 1.0);
|
||||
} else {
|
||||
_pen.setWidth(_width);
|
||||
setZValue(zValue() - 1.0);
|
||||
}
|
||||
|
||||
update();
|
||||
}
|
||||
|
||||
void PathItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
|
||||
{
|
||||
Q_UNUSED(event);
|
||||
|
@ -32,6 +32,7 @@ public:
|
||||
|
||||
public slots:
|
||||
void moveMarker(qreal distance);
|
||||
void hover(bool hover);
|
||||
|
||||
signals:
|
||||
void selected(bool);
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include <QWheelEvent>
|
||||
#include <QApplication>
|
||||
#include <QPixmapCache>
|
||||
#include <QScrollBar>
|
||||
#include "opengl.h"
|
||||
#include "misc.h"
|
||||
#include "poi.h"
|
||||
@ -39,10 +40,11 @@ PathView::PathView(Map *map, POI *poi, QWidget *parent)
|
||||
|
||||
_mapScale = new ScaleItem();
|
||||
_mapScale->setZValue(2.0);
|
||||
_scene->addItem(_mapScale);
|
||||
|
||||
_map = map;
|
||||
_poi = poi;
|
||||
connect(_map, SIGNAL(loaded()), this, SLOT(redraw()));
|
||||
connect(_map, SIGNAL(loaded()), this, SLOT(reloadMap()));
|
||||
connect(_poi, SIGNAL(pointsChanged()), this, SLOT(updatePOI()));
|
||||
|
||||
_units = Metric;
|
||||
@ -72,13 +74,26 @@ PathView::PathView(Map *map, POI *poi, QWidget *parent)
|
||||
|
||||
_map->setBackgroundColor(_backgroundColor);
|
||||
_scene->setSceneRect(_map->bounds());
|
||||
_res = _map->resolution(_scene->sceneRect().center());
|
||||
|
||||
centerOn(_scene->sceneRect().center());
|
||||
}
|
||||
|
||||
PathView::~PathView()
|
||||
void PathView::centerOn(const QPointF &pos)
|
||||
{
|
||||
if (_mapScale->scene() != _scene)
|
||||
delete _mapScale;
|
||||
QGraphicsView::centerOn(pos);
|
||||
|
||||
/* Fix the offset caused by QGraphicsView::centerOn() approximation */
|
||||
QPointF center = mapToScene(viewport()->rect().center());
|
||||
QPoint offset((int)(pos.x() - center.x()), (int)(pos.y() - center.y()));
|
||||
if (qAbs(offset.x()) == 1)
|
||||
horizontalScrollBar()->setValue(horizontalScrollBar()->value()
|
||||
+ offset.x());
|
||||
if (qAbs(offset.y()) == 1)
|
||||
verticalScrollBar()->setValue(verticalScrollBar()->value()
|
||||
+ offset.y());
|
||||
|
||||
_res = _map->resolution(pos);
|
||||
_mapScale->setResolution(_res);
|
||||
}
|
||||
|
||||
PathItem *PathView::addTrack(const Track &track)
|
||||
@ -169,13 +184,7 @@ QList<PathItem *> PathView::loadData(const Data &data)
|
||||
else
|
||||
updatePOIVisibility();
|
||||
|
||||
QPointF center = contentCenter();
|
||||
centerOn(center);
|
||||
|
||||
_res = _map->resolution(center);
|
||||
_mapScale->setResolution(_res);
|
||||
if (_mapScale->scene() != _scene)
|
||||
_scene->addItem(_mapScale);
|
||||
centerOn(contentCenter());
|
||||
|
||||
return paths;
|
||||
}
|
||||
@ -260,11 +269,11 @@ void PathView::setMap(Map *map)
|
||||
qreal resolution = _map->resolution(pos);
|
||||
|
||||
_map->unload();
|
||||
disconnect(_map, SIGNAL(loaded()), this, SLOT(redraw()));
|
||||
disconnect(_map, SIGNAL(loaded()), this, SLOT(reloadMap()));
|
||||
|
||||
_map = map;
|
||||
_map->load();
|
||||
connect(_map, SIGNAL(loaded()), this, SLOT(redraw()));
|
||||
connect(_map, SIGNAL(loaded()), this, SLOT(reloadMap()));
|
||||
|
||||
resetDigitalZoom();
|
||||
|
||||
@ -283,11 +292,7 @@ void PathView::setMap(Map *map)
|
||||
it.value()->setMap(_map);
|
||||
updatePOIVisibility();
|
||||
|
||||
pos = _map->ll2xy(center);
|
||||
centerOn(pos);
|
||||
|
||||
_res = _map->resolution(pos);
|
||||
_mapScale->setResolution(_res);
|
||||
centerOn(_map->ll2xy(center));
|
||||
|
||||
resetCachedContent();
|
||||
QPixmapCache::clear();
|
||||
@ -361,8 +366,9 @@ void PathView::setUnits(enum Units units)
|
||||
it.value()->setUnits(units);
|
||||
}
|
||||
|
||||
void PathView::redraw()
|
||||
void PathView::clearMapCache()
|
||||
{
|
||||
_map->clearCache();
|
||||
resetCachedContent();
|
||||
}
|
||||
|
||||
@ -421,15 +427,8 @@ void PathView::zoom(int zoom, const QPoint &pos, const Coordinates &c)
|
||||
ns = (zoom > 0) ? _map->zoomIn() : _map->zoomOut();
|
||||
|
||||
if (ns != os) {
|
||||
QPoint offset = pos - viewport()->rect().center();
|
||||
|
||||
rescale();
|
||||
|
||||
QPointF center = _map->ll2xy(c) - offset;
|
||||
centerOn(center);
|
||||
|
||||
_res = _map->resolution(center);
|
||||
_mapScale->setResolution(_res);
|
||||
centerOn(_map->ll2xy(c) - (pos - viewport()->rect().center()));
|
||||
} else {
|
||||
if (shift)
|
||||
digitalZoom(zoom);
|
||||
@ -523,11 +522,11 @@ void PathView::plot(QPainter *painter, const QRectF &target, qreal scale,
|
||||
adj = QRect(0, 0, adj.width() * s.x(), adj.height() * s.y());
|
||||
_map->zoomFit(adj.size(), _tr | _rr | _wr);
|
||||
rescale();
|
||||
|
||||
QPointF center = contentCenter();
|
||||
centerOn(center);
|
||||
adj.moveCenter(mapFromScene(center));
|
||||
|
||||
_mapScale->setResolution(_map->resolution(_map->ll2xy(origLL)));
|
||||
_mapScale->setDigitalZoom(-log2(s.x() / q));
|
||||
_mapScale->setPos(mapToScene(QPoint(adj.bottomRight() + QPoint(
|
||||
-(SCALE_OFFSET + _mapScale->boundingRect().width()) * (s.x() / q),
|
||||
@ -547,7 +546,6 @@ void PathView::plot(QPainter *painter, const QRectF &target, qreal scale,
|
||||
_map->zoomFit(origRes, origLL);
|
||||
rescale();
|
||||
centerOn(origScene);
|
||||
_mapScale->setResolution(origRes);
|
||||
}
|
||||
_mapScale->setDigitalZoom(0);
|
||||
_mapScale->setPos(origPos);
|
||||
@ -560,14 +558,15 @@ void PathView::plot(QPainter *painter, const QRectF &target, qreal scale,
|
||||
|
||||
void PathView::clear()
|
||||
{
|
||||
if (_mapScale->scene() == _scene)
|
||||
_scene->removeItem(_mapScale);
|
||||
|
||||
_pois.clear();
|
||||
_tracks.clear();
|
||||
_routes.clear();
|
||||
_waypoints.clear();
|
||||
|
||||
_scene->removeItem(_mapScale);
|
||||
_scene->clear();
|
||||
_scene->addItem(_mapScale);
|
||||
|
||||
_palette.reset();
|
||||
|
||||
_tr = RectC();
|
||||
@ -756,11 +755,7 @@ void PathView::resizeEvent(QResizeEvent *event)
|
||||
if (mapZoom() != zoom)
|
||||
rescale();
|
||||
|
||||
QPointF center = contentCenter();
|
||||
centerOn(center);
|
||||
|
||||
_res = _map->resolution(center);
|
||||
_mapScale->setResolution(_res);
|
||||
centerOn(contentCenter());
|
||||
|
||||
QGraphicsView::resizeEvent(event);
|
||||
}
|
||||
@ -801,3 +796,8 @@ void PathView::useAntiAliasing(bool use)
|
||||
{
|
||||
setRenderHint(QPainter::Antialiasing, use);
|
||||
}
|
||||
|
||||
void PathView::reloadMap()
|
||||
{
|
||||
resetCachedContent();
|
||||
}
|
||||
|
@ -28,7 +28,6 @@ class PathView : public QGraphicsView
|
||||
|
||||
public:
|
||||
PathView(Map *map, POI *poi, QWidget *parent = 0);
|
||||
~PathView();
|
||||
|
||||
QList<PathItem*> loadData(const Data &data);
|
||||
|
||||
@ -59,8 +58,6 @@ public:
|
||||
void useAntiAliasing(bool use);
|
||||
|
||||
public slots:
|
||||
void redraw();
|
||||
|
||||
void showMap(bool show);
|
||||
void showPOI(bool show);
|
||||
void setPOIOverlap(bool overlap);
|
||||
@ -70,9 +67,11 @@ public slots:
|
||||
void showRoutes(bool show);
|
||||
void showWaypoints(bool show);
|
||||
void showRouteWaypoints(bool show);
|
||||
void clearMapCache();
|
||||
|
||||
private slots:
|
||||
void updatePOI();
|
||||
void reloadMap();
|
||||
|
||||
private:
|
||||
PathItem *addTrack(const Track &track);
|
||||
@ -85,6 +84,7 @@ private:
|
||||
qreal mapZoom() const;
|
||||
QPointF contentCenter() const;
|
||||
void rescale();
|
||||
void centerOn(const QPointF &pos);
|
||||
void zoom(int zoom, const QPoint &pos, const Coordinates &c);
|
||||
void digitalZoom(int zoom);
|
||||
void resetDigitalZoom();
|
||||
|
@ -1,10 +1,10 @@
|
||||
#include "data.h"
|
||||
#include "powergraphitem.h"
|
||||
#include "powergraph.h"
|
||||
|
||||
|
||||
PowerGraph::PowerGraph(QWidget *parent) : GraphTab(parent)
|
||||
{
|
||||
_units = Metric;
|
||||
_showTracks = true;
|
||||
|
||||
GraphView::setYUnits(tr("W"));
|
||||
@ -28,21 +28,16 @@ void PowerGraph::loadData(const Data &data, const QList<PathItem *> &paths)
|
||||
{
|
||||
for (int i = 0; i < data.tracks().count(); i++) {
|
||||
const Graph &graph = data.tracks().at(i)->power();
|
||||
qreal sum = 0, w = 0;
|
||||
|
||||
if (graph.size() < 2) {
|
||||
skipColor();
|
||||
continue;
|
||||
}
|
||||
|
||||
for (int j = 1; j < graph.size(); j++) {
|
||||
qreal ds = graph.at(j).s() - graph.at(j-1).s();
|
||||
sum += graph.at(j).y() * ds;
|
||||
w += ds;
|
||||
}
|
||||
_avg.append(QPointF(data.tracks().at(i)->distance(), sum/w));
|
||||
PowerGraphItem *gi = new PowerGraphItem(graph, _graphType);
|
||||
GraphView::addGraph(gi, paths.at(i));
|
||||
|
||||
GraphView::loadGraph(graph, paths.at(i));
|
||||
_avg.append(QPointF(data.tracks().at(i)->distance(), gi->avg()));
|
||||
}
|
||||
|
||||
for (int i = 0; i < data.routes().count(); i++)
|
||||
|
@ -22,7 +22,6 @@ private:
|
||||
|
||||
QList<QPointF> _avg;
|
||||
|
||||
enum Units _units;
|
||||
bool _showTracks;
|
||||
};
|
||||
|
||||
|
26
src/powergraphitem.cpp
Normal file
26
src/powergraphitem.cpp
Normal file
@ -0,0 +1,26 @@
|
||||
#include "tooltip.h"
|
||||
#include "powergraphitem.h"
|
||||
|
||||
PowerGraphItem::PowerGraphItem(const Graph &graph, GraphType type,
|
||||
QGraphicsItem *parent) : GraphItem(graph, type, parent)
|
||||
{
|
||||
qreal sum = 0;
|
||||
|
||||
for (int j = 1; j < graph.size(); j++)
|
||||
sum += graph.at(j).y() * (graph.at(j).s() - graph.at(j-1).s());
|
||||
_avg = sum/graph.last().s();
|
||||
|
||||
setToolTip(toolTip());
|
||||
}
|
||||
|
||||
QString PowerGraphItem::toolTip() const
|
||||
{
|
||||
ToolTip tt;
|
||||
|
||||
tt.insert(tr("Maximum"), QString::number(max(), 'f', 1)
|
||||
+ UNIT_SPACE + tr("1/min"));
|
||||
tt.insert(tr("Average"), QString::number(avg(), 'f', 1)
|
||||
+ UNIT_SPACE + tr("1/min"));
|
||||
|
||||
return tt.toString();
|
||||
}
|
23
src/powergraphitem.h
Normal file
23
src/powergraphitem.h
Normal file
@ -0,0 +1,23 @@
|
||||
#ifndef POWERGRAPHITEM_H
|
||||
#define POWERGRAPHITEM_H
|
||||
|
||||
#include "graphitem.h"
|
||||
|
||||
class PowerGraphItem : public GraphItem
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
PowerGraphItem(const Graph &graph, GraphType type,
|
||||
QGraphicsItem *parent = 0);
|
||||
|
||||
qreal max() const {return -bounds().top();}
|
||||
qreal avg() const {return _avg;}
|
||||
|
||||
private:
|
||||
QString toolTip() const;
|
||||
|
||||
qreal _avg;
|
||||
};
|
||||
|
||||
#endif // POWERGRAPHITEM_H
|
@ -7,7 +7,7 @@
|
||||
#include "routeitem.h"
|
||||
|
||||
|
||||
QString RouteItem::toolTip(Units units)
|
||||
QString RouteItem::toolTip(Units units) const
|
||||
{
|
||||
ToolTip tt;
|
||||
|
||||
|
@ -14,7 +14,6 @@ class RouteItem : public PathItem
|
||||
public:
|
||||
RouteItem(const Route &route, Map *map, QGraphicsItem *parent = 0);
|
||||
|
||||
//void setScale(qreal scale);
|
||||
void setMap(Map *map);
|
||||
|
||||
void setUnits(Units units);
|
||||
@ -22,7 +21,7 @@ public:
|
||||
void showWaypointLabels(bool show);
|
||||
|
||||
private:
|
||||
QString toolTip(Units units);
|
||||
QString toolTip(Units units) const;
|
||||
|
||||
QString _name;
|
||||
QString _desc;
|
||||
|
@ -25,6 +25,8 @@
|
||||
#define GRAPH_TYPE_DEFAULT Distance
|
||||
#define SHOW_GRAPH_GRIDS_SETTING "grid"
|
||||
#define SHOW_GRAPH_GRIDS_DEFAULT true
|
||||
#define SHOW_GRAPH_SLIDER_INFO_SETTING "sliderInfo"
|
||||
#define SHOW_GRAPH_SLIDER_INFO_DEFAULT true
|
||||
|
||||
#define MAP_SETTINGS_GROUP "Map"
|
||||
#define CURRENT_MAP_SETTING "map"
|
||||
|
@ -17,10 +17,12 @@ void SliderInfoItem::updateBoundingRect()
|
||||
font.setFamily(FONT_FAMILY);
|
||||
QFontMetrics fm(font);
|
||||
|
||||
qreal width = qMax(fm.width(_x), fm.width(_y));
|
||||
qreal height = 2 * fm.height() - 2*fm.descent();
|
||||
|
||||
_boundingRect = (_side == Right)
|
||||
? QRectF(-SIZE/2, 0, fm.width(_text) + SIZE, fm.height())
|
||||
: QRectF(-(fm.width(_text) + SIZE/2), 0, fm.width(_text) + SIZE,
|
||||
fm.height());
|
||||
? QRectF(-SIZE/2, -height/2, width + 1.5*SIZE, height)
|
||||
: QRectF(-(width + SIZE), -height/2, width + 1.5*SIZE, height);
|
||||
}
|
||||
|
||||
void SliderInfoItem::paint(QPainter *painter, const QStyleOptionGraphicsItem
|
||||
@ -32,25 +34,48 @@ void SliderInfoItem::paint(QPainter *painter, const QStyleOptionGraphicsItem
|
||||
font.setPixelSize(FONT_SIZE);
|
||||
font.setFamily(FONT_FAMILY);
|
||||
QFontMetrics fm(font);
|
||||
QRectF rx, ry;
|
||||
|
||||
|
||||
qreal width = qMax(fm.width(_x), fm.width(_y));
|
||||
if (_side == Right) {
|
||||
ry = QRectF(SIZE, -fm.height() + fm.descent(), fm.width(_y),
|
||||
fm.height() - fm.descent());
|
||||
rx = QRectF(SIZE, 0, fm.width(_x), fm.height()
|
||||
- fm.descent());
|
||||
} else {
|
||||
ry = QRectF(-(width + SIZE), -fm.height() + fm.descent(), fm.width(_y),
|
||||
fm.height() - fm.descent());
|
||||
rx = QRectF(-(width + SIZE), 0, fm.width(_x), fm.height()
|
||||
- fm.descent());
|
||||
}
|
||||
|
||||
painter->setPen(Qt::NoPen);
|
||||
painter->setBrush(QBrush(QColor(255, 255, 255, 196)));
|
||||
painter->drawRect(ry);
|
||||
painter->drawRect(rx);
|
||||
painter->setBrush(Qt::NoBrush);
|
||||
|
||||
painter->setFont(font);
|
||||
painter->setRenderHint(QPainter::Antialiasing, false);
|
||||
painter->setPen(Qt::red);
|
||||
|
||||
if (_side == Right)
|
||||
painter->drawText(SIZE, fm.height() - fm.descent(), _text);
|
||||
else
|
||||
painter->drawText(-(fm.width(_text) + SIZE/2),
|
||||
fm.height() - fm.descent(), _text);
|
||||
if (_side == Right) {
|
||||
painter->drawText(SIZE, -fm.descent()/2, _y);
|
||||
painter->drawText(SIZE, fm.height() - fm.descent()*1.5, _x);
|
||||
} else {
|
||||
painter->drawText(-(width + SIZE), -fm.descent()/2, _y);
|
||||
painter->drawText(-(width + SIZE), fm.height() - fm.descent()*1.5, _x);
|
||||
}
|
||||
painter->drawLine(QPointF(-SIZE/2, 0), QPointF(SIZE/2, 0));
|
||||
|
||||
//painter->drawRect(boundingRect());
|
||||
}
|
||||
|
||||
void SliderInfoItem::setText(const QString &text)
|
||||
void SliderInfoItem::setText(const QString &x, const QString &y)
|
||||
{
|
||||
prepareGeometryChange();
|
||||
_text = text;
|
||||
_x = x; _y = y;
|
||||
updateBoundingRect();
|
||||
}
|
||||
|
||||
|
@ -14,14 +14,14 @@ public:
|
||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
||||
QWidget *widget);
|
||||
|
||||
void setText(const QString &text);
|
||||
void setText(const QString &x, const QString &y);
|
||||
void setSide(Side side);
|
||||
|
||||
private:
|
||||
void updateBoundingRect();
|
||||
|
||||
Side _side;
|
||||
QString _text;
|
||||
QString _x, _y;
|
||||
QRectF _boundingRect;
|
||||
};
|
||||
|
||||
|
@ -1,15 +1,16 @@
|
||||
#include "config.h"
|
||||
#include "data.h"
|
||||
#include "tooltip.h"
|
||||
#include "speedgraphitem.h"
|
||||
#include "speedgraph.h"
|
||||
|
||||
|
||||
SpeedGraph::SpeedGraph(QWidget *parent) : GraphTab(parent)
|
||||
{
|
||||
_units = Metric;
|
||||
_timeType = Total;
|
||||
_showTracks = true;
|
||||
|
||||
setYUnits();
|
||||
setYUnits(Metric);
|
||||
setYLabel(tr("Speed"));
|
||||
|
||||
setSliderPrecision(1);
|
||||
@ -29,18 +30,21 @@ void SpeedGraph::setInfo()
|
||||
void SpeedGraph::loadData(const Data &data, const QList<PathItem *> &paths)
|
||||
{
|
||||
for (int i = 0; i < data.tracks().count(); i++) {
|
||||
const Graph &graph = data.tracks().at(i)->speed();
|
||||
const Track *track = data.tracks().at(i);
|
||||
const Graph &graph = track->speed();
|
||||
|
||||
if (graph.size() < 2) {
|
||||
skipColor();
|
||||
continue;
|
||||
}
|
||||
|
||||
_avg.append(QPointF(data.tracks().at(i)->distance(),
|
||||
data.tracks().at(i)->distance() / data.tracks().at(i)->time()));
|
||||
_avgM.append(QPointF(data.tracks().at(i)->distance(),
|
||||
data.tracks().at(i)->distance() / data.tracks().at(i)->movingTime()));
|
||||
SpeedGraphItem *gi = new SpeedGraphItem(graph, _graphType,
|
||||
track->movingTime());
|
||||
gi->setTimeType(_timeType);
|
||||
GraphView::addGraph(gi, paths.at(i));
|
||||
|
||||
GraphView::loadGraph(graph, paths.at(i));
|
||||
_avg.append(QPointF(track->distance(), gi->avg()));
|
||||
_mavg.append(QPointF(track->distance(), gi->mavg()));
|
||||
}
|
||||
|
||||
for (int i = 0; i < data.routes().count(); i++)
|
||||
@ -55,7 +59,7 @@ qreal SpeedGraph::avg() const
|
||||
{
|
||||
qreal sum = 0, w = 0;
|
||||
QList<QPointF>::const_iterator it;
|
||||
const QList<QPointF> &list = (_timeType == Moving) ? _avgM : _avg;
|
||||
const QList<QPointF> &list = (_timeType == Moving) ? _mavg : _avg;
|
||||
|
||||
for (it = list.begin(); it != list.end(); it++) {
|
||||
sum += it->y() * it->x();
|
||||
@ -68,14 +72,14 @@ qreal SpeedGraph::avg() const
|
||||
void SpeedGraph::clear()
|
||||
{
|
||||
_avg.clear();
|
||||
_avgM.clear();
|
||||
_mavg.clear();
|
||||
|
||||
GraphView::clear();
|
||||
}
|
||||
|
||||
void SpeedGraph::setYUnits()
|
||||
void SpeedGraph::setYUnits(Units units)
|
||||
{
|
||||
if (_units == Metric) {
|
||||
if (units == Metric) {
|
||||
GraphView::setYUnits(tr("km/h"));
|
||||
setYScale(MS2KMH);
|
||||
} else {
|
||||
@ -84,21 +88,21 @@ void SpeedGraph::setYUnits()
|
||||
}
|
||||
}
|
||||
|
||||
void SpeedGraph::setUnits(enum Units units)
|
||||
void SpeedGraph::setUnits(Units units)
|
||||
{
|
||||
_units = units;
|
||||
|
||||
setYUnits();
|
||||
setYUnits(units);
|
||||
setInfo();
|
||||
GraphView::setUnits(units);
|
||||
|
||||
redraw();
|
||||
GraphView::setUnits(units);
|
||||
}
|
||||
|
||||
void SpeedGraph::setTimeType(enum TimeType type)
|
||||
{
|
||||
_timeType = type;
|
||||
|
||||
for (int i = 0; i < _graphs.size(); i++)
|
||||
static_cast<SpeedGraphItem*>(_graphs.at(i))->setTimeType(type);
|
||||
|
||||
setInfo();
|
||||
redraw();
|
||||
}
|
||||
|
@ -14,20 +14,19 @@ public:
|
||||
QString label() const {return tr("Speed");}
|
||||
void loadData(const Data &data, const QList<PathItem *> &paths);
|
||||
void clear();
|
||||
void setUnits(enum Units units);
|
||||
void setTimeType(enum TimeType type);
|
||||
void setUnits(Units units);
|
||||
void setTimeType(TimeType type);
|
||||
void showTracks(bool show);
|
||||
|
||||
private:
|
||||
qreal avg() const;
|
||||
qreal max() const {return bounds().bottom();}
|
||||
void setYUnits();
|
||||
void setYUnits(Units units);
|
||||
void setInfo();
|
||||
|
||||
QList<QPointF> _avg;
|
||||
QList<QPointF> _avgM;
|
||||
QList<QPointF> _mavg;
|
||||
|
||||
enum Units _units;
|
||||
enum TimeType _timeType;
|
||||
bool _showTracks;
|
||||
};
|
||||
|
40
src/speedgraphitem.cpp
Normal file
40
src/speedgraphitem.cpp
Normal file
@ -0,0 +1,40 @@
|
||||
#include "tooltip.h"
|
||||
#include "speedgraphitem.h"
|
||||
|
||||
SpeedGraphItem::SpeedGraphItem(const Graph &graph, GraphType type,
|
||||
qreal movingTime, QGraphicsItem *parent) : GraphItem(graph, type, parent)
|
||||
{
|
||||
_units = Metric;
|
||||
_timeType = Total;
|
||||
|
||||
_avg = graph.last().s() / graph.last().t();
|
||||
_mavg = graph.last().s() / movingTime;
|
||||
|
||||
setToolTip(toolTip());
|
||||
}
|
||||
|
||||
QString SpeedGraphItem::toolTip() const
|
||||
{
|
||||
ToolTip tt;
|
||||
qreal scale = (_units == Metric) ? MS2KMH : MS2MIH;
|
||||
QString su = (_units == Metric) ? tr("km/h") : tr("mi/h");
|
||||
|
||||
tt.insert(tr("Maximum"), QString::number(max() * scale, 'f', 1)
|
||||
+ UNIT_SPACE + su);
|
||||
tt.insert(tr("Average"), QString::number((_timeType == Total)
|
||||
? avg() * scale : mavg() * scale, 'f', 1) + UNIT_SPACE + su);
|
||||
|
||||
return tt.toString();
|
||||
}
|
||||
|
||||
void SpeedGraphItem::setUnits(Units units)
|
||||
{
|
||||
_units = units;
|
||||
setToolTip(toolTip());
|
||||
}
|
||||
|
||||
void SpeedGraphItem::setTimeType(TimeType type)
|
||||
{
|
||||
_timeType = type;
|
||||
setToolTip(toolTip());
|
||||
}
|
31
src/speedgraphitem.h
Normal file
31
src/speedgraphitem.h
Normal file
@ -0,0 +1,31 @@
|
||||
#ifndef SPEEDGRAPHITEM_H
|
||||
#define SPEEDGRAPHITEM_H
|
||||
|
||||
#include "timetype.h"
|
||||
#include "graphitem.h"
|
||||
|
||||
class SpeedGraphItem : public GraphItem
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
SpeedGraphItem(const Graph &graph, GraphType type, qreal movingTime,
|
||||
QGraphicsItem *parent = 0);
|
||||
|
||||
qreal max() const {return -bounds().top();}
|
||||
qreal avg() const {return _avg;}
|
||||
qreal mavg() const {return _mavg;}
|
||||
|
||||
void setUnits(Units units);
|
||||
void setTimeType(TimeType type);
|
||||
|
||||
private:
|
||||
QString toolTip() const;
|
||||
|
||||
qreal _avg, _mavg;
|
||||
|
||||
Units _units;
|
||||
TimeType _timeType;
|
||||
};
|
||||
|
||||
#endif // SPEEDGRAPHITEM_H
|
@ -1,13 +1,13 @@
|
||||
#include "data.h"
|
||||
#include "temperaturegraphitem.h"
|
||||
#include "temperaturegraph.h"
|
||||
|
||||
|
||||
TemperatureGraph::TemperatureGraph(QWidget *parent) : GraphTab(parent)
|
||||
{
|
||||
_units = Metric;
|
||||
_showTracks = true;
|
||||
|
||||
setYUnits();
|
||||
setYUnits(Metric);
|
||||
setYLabel(tr("Temperature"));
|
||||
|
||||
setSliderPrecision(1);
|
||||
@ -30,21 +30,16 @@ void TemperatureGraph::loadData(const Data &data, const QList<PathItem *> &paths
|
||||
{
|
||||
for (int i = 0; i < data.tracks().count(); i++) {
|
||||
const Graph &graph = data.tracks().at(i)->temperature();
|
||||
qreal sum = 0, w = 0;
|
||||
|
||||
if (graph.size() < 2) {
|
||||
skipColor();
|
||||
continue;
|
||||
}
|
||||
|
||||
for (int j = 1; j < graph.size(); j++) {
|
||||
qreal ds = graph.at(j).s() - graph.at(j-1).s();
|
||||
sum += graph.at(j).y() * ds;
|
||||
w += ds;
|
||||
}
|
||||
_avg.append(QPointF(data.tracks().at(i)->distance(), sum/w));
|
||||
TemperatureGraphItem *gi = new TemperatureGraphItem(graph, _graphType);
|
||||
GraphView::addGraph(gi, paths.at(i));
|
||||
|
||||
GraphView::loadGraph(graph, paths.at(i));
|
||||
_avg.append(QPointF(data.tracks().at(i)->distance(), gi->avg()));
|
||||
}
|
||||
|
||||
for (int i = 0; i < data.routes().count(); i++)
|
||||
@ -75,9 +70,9 @@ void TemperatureGraph::clear()
|
||||
GraphView::clear();
|
||||
}
|
||||
|
||||
void TemperatureGraph::setYUnits()
|
||||
void TemperatureGraph::setYUnits(Units units)
|
||||
{
|
||||
if (_units == Metric) {
|
||||
if (units == Metric) {
|
||||
GraphView::setYUnits(QChar(0x00B0) + tr("C"));
|
||||
setYScale(1);
|
||||
setYOffset(0);
|
||||
@ -88,15 +83,12 @@ void TemperatureGraph::setYUnits()
|
||||
}
|
||||
}
|
||||
|
||||
void TemperatureGraph::setUnits(enum Units units)
|
||||
void TemperatureGraph::setUnits(Units units)
|
||||
{
|
||||
_units = units;
|
||||
|
||||
setYUnits();
|
||||
setYUnits(units);
|
||||
setInfo();
|
||||
GraphView::setUnits(units);
|
||||
|
||||
redraw();
|
||||
GraphView::setUnits(units);
|
||||
}
|
||||
|
||||
void TemperatureGraph::showTracks(bool show)
|
||||
|
@ -20,12 +20,11 @@ private:
|
||||
qreal avg() const;
|
||||
qreal min() const {return bounds().top();}
|
||||
qreal max() const {return bounds().bottom();}
|
||||
void setYUnits();
|
||||
void setYUnits(Units units);
|
||||
void setInfo();
|
||||
|
||||
QList<QPointF> _avg;
|
||||
|
||||
enum Units _units;
|
||||
bool _showTracks;
|
||||
};
|
||||
|
||||
|
37
src/temperaturegraphitem.cpp
Normal file
37
src/temperaturegraphitem.cpp
Normal file
@ -0,0 +1,37 @@
|
||||
#include "tooltip.h"
|
||||
#include "temperaturegraphitem.h"
|
||||
|
||||
TemperatureGraphItem::TemperatureGraphItem(const Graph &graph, GraphType type,
|
||||
QGraphicsItem *parent) : GraphItem(graph, type, parent)
|
||||
{
|
||||
qreal sum = 0;
|
||||
|
||||
for (int j = 1; j < graph.size(); j++)
|
||||
sum += graph.at(j).y() * (graph.at(j).s() - graph.at(j-1).s());
|
||||
_avg = sum/graph.last().s();
|
||||
|
||||
setToolTip(toolTip(Metric));
|
||||
}
|
||||
|
||||
QString TemperatureGraphItem::toolTip(Units units) const
|
||||
{
|
||||
ToolTip tt;
|
||||
qreal scale = (units == Metric) ? 1.0 : C2FS;
|
||||
qreal offset = (units == Metric) ? 0 : C2FO;
|
||||
QString su = (units == Metric) ?
|
||||
QChar(0x00B0) + tr("C") : QChar(0x00B0) + tr("F");
|
||||
|
||||
tt.insert(tr("Average"), QString::number(avg() * scale + offset, 'f', 1)
|
||||
+ UNIT_SPACE + su);
|
||||
tt.insert(tr("Maximum"), QString::number(max() * scale + offset, 'f', 1)
|
||||
+ UNIT_SPACE + su);
|
||||
tt.insert(tr("Minimum"), QString::number(min() * scale + offset, 'f', 1)
|
||||
+ UNIT_SPACE + su);
|
||||
|
||||
return tt.toString();
|
||||
}
|
||||
|
||||
void TemperatureGraphItem::setUnits(Units units)
|
||||
{
|
||||
setToolTip(toolTip(units));
|
||||
}
|
26
src/temperaturegraphitem.h
Normal file
26
src/temperaturegraphitem.h
Normal file
@ -0,0 +1,26 @@
|
||||
#ifndef TEMPERATUREGRAPHITEM_H
|
||||
#define TEMPERATUREGRAPHITEM_H
|
||||
|
||||
#include "graphitem.h"
|
||||
|
||||
class TemperatureGraphItem : public GraphItem
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TemperatureGraphItem(const Graph &graph, GraphType type,
|
||||
QGraphicsItem *parent = 0);
|
||||
|
||||
qreal max() const {return -bounds().top();}
|
||||
qreal min() const {return -bounds().bottom();}
|
||||
qreal avg() const {return _avg;}
|
||||
|
||||
void setUnits(Units units);
|
||||
|
||||
private:
|
||||
QString toolTip(Units units) const;
|
||||
|
||||
qreal _avg;
|
||||
};
|
||||
|
||||
#endif // TEMPERATUREGRAPHITEM_H
|
@ -5,7 +5,7 @@
|
||||
#include "trackitem.h"
|
||||
|
||||
|
||||
QString TrackItem::toolTip(Units units)
|
||||
QString TrackItem::toolTip(Units units) const
|
||||
{
|
||||
ToolTip tt;
|
||||
|
||||
|
@ -19,7 +19,7 @@ public:
|
||||
void setUnits(Units units);
|
||||
|
||||
private:
|
||||
QString toolTip(Units units);
|
||||
QString toolTip(Units units) const;
|
||||
|
||||
QString _name;
|
||||
QString _desc;
|
||||
|
Reference in New Issue
Block a user