From f247c2fa2207b880aba6135ae74532d4ccb2dc71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20T=C5=AFma?= Date: Fri, 1 Apr 2016 19:25:34 +0200 Subject: [PATCH] Added support for tiles cache clearing --- lang/gpxsee_cs.ts | 258 +++++++++++++++++++++++++--------------------- src/gui.cpp | 16 ++- src/gui.h | 2 + src/map.cpp | 14 ++- src/map.h | 7 +- src/trackview.h | 2 - 6 files changed, 174 insertions(+), 125 deletions(-) diff --git a/lang/gpxsee_cs.ts b/lang/gpxsee_cs.ts index c4944416..140a3ae5 100644 --- a/lang/gpxsee_cs.ts +++ b/lang/gpxsee_cs.ts @@ -1,6 +1,6 @@ - + ElevationGraph @@ -14,44 +14,44 @@ Výška - - + km km - - + + m m - + Ascent Stoupání - + Descent Klesání - + Minimum Minimum - + mi mi - + + ft ft - + Maximum Maximum @@ -59,356 +59,363 @@ GUI - + About Qt O Qt - + GPXSee is distributed under the terms of the GNU General Public License version 3. For more info about GPXSee visit the project homepage at 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 - + Open file Otevřít soubor - + Save as Uložit jako - + Open POI file Otevřít POI soubor - + Open Otevřít - + Quit Ukončit - - - + + + Keyboard controls Ovládací klávesy - + Save Uložit - + Close Zavřít - + Reload Znovu načíst - + Show Zobrazit - - + + File Soubor - - - + + + Data sources Zdroje dat - + Load POI file Nahrát POI soubor - + Close POI files - Zavřit soubory POI + Zavřit POI soubory - + Show POIs Zobrazit POI - + Show map Zobrazit mapu - + + Clear tile cache + Vymazat mezipaměť dlaždic + + + Show graphs Zobrazovat grafy - + Show toolbars Zobrazovat nástrojové lišty - + Metric Metrické - + Imperial Imperiální - + Next Následující - + Previous Předchozí - + Last Poslední - + First První - + Map Mapa - + POI POI - + POI files POI soubory - + Settings Nastavení - + Units Jednotky - + Help Nápověda - + No GPX files loaded Nejsou načteny žádné GPX soubory - + Elevation Výška - + Speed Rychlost - + Heart rate Tep - + Next file Následující soubor - + Previous file Předchozí soubor - + First file První soubor - + Last file Poslední soubor - + Append modifier Modifikátor nahradit/přidat - + Map (tiles) source URLs are read on program startup from the following file: URL mapových zdrojů (dlaždic) jsou načteny při startu programu z následujícího souboru: - + The file format is one map entry per line, consisting of the map name and tiles URL 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: Formát souboru je jeden mapový záznam na řádku, kde mapový záznam sestává ze jména mapy a URL dlaždic navzájem oddělených tabulátorem. Souřadnice dlaždice jsou v URL nahrazeny řetězci $x a $y, úroven přiblížení (zoom) pak řetězcem $z. Příklad: - + To make GPXSee load a POI file automatically on startup, add the file to the following directory: POI soubory, které se mají automaticky nahrát při startu programu jsou načítány z následujícího adresáře: - + GPX files (*.gpx);;All files (*) soubory GPX (*.gpx);;všechny soubory (*) - - + + Line: %1 Řádka: %1 - + GPX files (*.gpx);;CSV files (*.csv);;All files (*) soubory GPX (*.gpx);;soubory CSV (*.csv);;všechny soubory (*) - - + + mi mi - - - - + + + + + ft ft - - + + Maximum Maximum - - + + Minimum Minimum - - + + About GPXSee O aplikaci GPXSee - + Navigation Navigace - + GPX viewer and analyzer Prohlížeč a analyzátor GPX - + Map sources Mapové zdroje - + POIs POI body - - + + Distance Vzdálenost - - + + Time Čas - - + + Ascent Stoupání - - - - + + + + + m m - - + + Descent Klesání - + %1 tracks Počet tras: %1 - - + + km km - - + + Error Chyba - + Error loading GPX file: %1 Soubor GPX nelze otevřít: %1 - + Error loading POI file: %1 Soubor POI nelze otevřít: @@ -418,38 +425,47 @@ HeartRateGraph - + Distance Vzdálenost - + Heart rate Tep - - + km km - + 1/min 1/min - + Average Průměr - + Maximum Maximum - + + m + m + + + + ft + ft + + + mi mi @@ -480,44 +496,52 @@ SpeedGraph - + Distance Vzdálenost - + Speed Rychlost - + + m + m + + km - - + + ft + ft + + + km/h km/h - + Average Průměr - + Maximum Maximum - + mi mi - + mi/h mi/h diff --git a/src/gui.cpp b/src/gui.cpp index fa5c531c..527258a0 100644 --- a/src/gui.cpp +++ b/src/gui.cpp @@ -238,9 +238,13 @@ void GUI::createActions() _showMapAction->setCheckable(true); _showMapAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_M)); connect(_showMapAction, SIGNAL(triggered(bool)), this, SLOT(showMap(bool))); - if (_maps.empty()) + _clearMapCacheAction = new QAction(tr("Clear tile cache"), this); + connect(_clearMapCacheAction, SIGNAL(triggered()), this, + SLOT(clearMapCache())); + if (_maps.empty()) { _showMapAction->setEnabled(false); - else { + _clearMapCacheAction->setEnabled(false); + } else { createMapActions(); _showMapAction->setChecked(true); } @@ -307,6 +311,8 @@ void GUI::createMenus() _mapMenu = menuBar()->addMenu(tr("Map")); _mapMenu->addActions(_mapActions); _mapMenu->addSeparator(); + _mapMenu->addAction(_clearMapCacheAction); + _mapMenu->addSeparator(); _mapMenu->addAction(_showMapAction); _poiMenu = menuBar()->addMenu(tr("POI")); @@ -738,6 +744,12 @@ void GUI::showToolbars(bool checked) } } +void GUI::clearMapCache() +{ + _currentMap->clearCache(); + _track->redraw(); +} + void GUI::updateStatusBarInfo() { if (_files.count() == 0) { diff --git a/src/gui.h b/src/gui.h index 570ed54a..7ae9e5be 100644 --- a/src/gui.h +++ b/src/gui.h @@ -45,6 +45,7 @@ private slots: void showMap(bool checked); void showGraphs(bool checked); void showToolbars(bool checked); + void clearMapCache(); void mapChanged(int); void graphChanged(int); @@ -114,6 +115,7 @@ private: QAction *_closePOIAction; QAction *_showPOIAction; QAction *_showMapAction; + QAction *_clearMapCacheAction; QAction *_showGraphsAction; QAction *_showToolbarsAction; QAction *_nextAction; diff --git a/src/map.cpp b/src/map.cpp index 3f2c8de4..10b6864a 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -5,6 +5,8 @@ #include "config.h" #include "map.h" +#include + Map::Map(QObject *parent, const QString &name, const QString &url) : QObject(parent) @@ -16,7 +18,7 @@ Map::Map(QObject *parent, const QString &name, const QString &url) SLOT(emitLoaded())); QString path = TILES_DIR + QString("/") + _name; - if (!QDir::home().mkpath(path)) + if (!QDir().mkpath(path)) fprintf(stderr, "Error creating tiles dir: %s\n", qPrintable(path)); } @@ -54,3 +56,13 @@ void Map::loadTiles(QList &list) if (!dl.empty()) Downloader::instance().get(dl); } + +void Map::clearCache() +{ + QString path = TILES_DIR + QString("/") + _name; + QDir dir = QDir(path); + QStringList list = dir.entryList(); + + for (int i = 0; i < list.count(); i++) + dir.remove(list.at(i)); +} diff --git a/src/map.h b/src/map.h index 3a81c03c..271218bc 100644 --- a/src/map.h +++ b/src/map.h @@ -24,15 +24,16 @@ class Map : public QObject { Q_OBJECT -signals: - void loaded(); - public: Map(QObject *parent = 0, const QString &name = QString(), const QString &url = QString()); const QString &name() const {return _name;} void loadTiles(QList &list); + void clearCache(); + +signals: + void loaded(); private slots: void emitLoaded(); diff --git a/src/trackview.h b/src/trackview.h index b6a73f24..5bf826e6 100644 --- a/src/trackview.h +++ b/src/trackview.h @@ -42,8 +42,6 @@ public: public slots: void movePositionMarker(qreal val); - -private slots: void redraw(); private: