Commit 36561731 authored by Gus Grubba's avatar Gus Grubba

Merge pull request #3027 from dogmaphobic/deleteOldMaps

Deleting old map tile disk cache if one is found.
parents 670eb375 5dd74dd7
...@@ -45,6 +45,8 @@ Q_DECLARE_METATYPE(QList<QGCTile*>) ...@@ -45,6 +45,8 @@ Q_DECLARE_METATYPE(QList<QGCTile*>)
static const char* kDbFileName = "qgcMapCache.db"; static const char* kDbFileName = "qgcMapCache.db";
static QLocale kLocale; static QLocale kLocale;
#define CACHE_PATH_VERSION "100"
struct stQGeoTileCacheQGCMapTypes { struct stQGeoTileCacheQGCMapTypes {
const char* name; const char* name;
UrlFactory::MapType type; UrlFactory::MapType type;
...@@ -157,10 +159,18 @@ QGCMapEngine::~QGCMapEngine() ...@@ -157,10 +159,18 @@ QGCMapEngine::~QGCMapEngine()
void void
QGCMapEngine::init() QGCMapEngine::init()
{ {
//-- Delete old style cache (if present)
#ifdef __mobile__ #ifdef __mobile__
QString cacheDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + QLatin1String("/QGCMapCache55"); QString oldCacheDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + QLatin1String("/QGCMapCache55");
#else #else
QString cacheDir = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + QLatin1String("/QGCMapCache55"); QString oldCacheDir = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + QLatin1String("/QGCMapCache55");
#endif
_wipeDirectory(oldCacheDir);
//-- Figure out cache path
#ifdef __mobile__
QString cacheDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + QLatin1String("/QGCMapCache" CACHE_PATH_VERSION);
#else
QString cacheDir = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + QLatin1String("/QGCMapCache" CACHE_PATH_VERSION);
#endif #endif
if(!QDir::root().mkpath(cacheDir)) { if(!QDir::root().mkpath(cacheDir)) {
qWarning() << "Could not create mapping disk cache directory: " << cacheDir; qWarning() << "Could not create mapping disk cache directory: " << cacheDir;
...@@ -182,6 +192,28 @@ QGCMapEngine::init() ...@@ -182,6 +192,28 @@ QGCMapEngine::init()
_worker.enqueueTask(task); _worker.enqueueTask(task);
} }
//-----------------------------------------------------------------------------
bool
QGCMapEngine::_wipeDirectory(const QString& dirPath)
{
bool result = true;
QDir dir(dirPath);
if (dir.exists(dirPath)) {
Q_FOREACH(QFileInfo info, dir.entryInfoList(QDir::NoDotAndDotDot | QDir::System | QDir::Hidden | QDir::AllDirs | QDir::Files, QDir::DirsFirst)) {
if (info.isDir()) {
result = _wipeDirectory(info.absoluteFilePath());
} else {
result = QFile::remove(info.absoluteFilePath());
}
if (!result) {
return result;
}
}
result = dir.rmdir(dirPath);
}
return result;
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void void
QGCMapEngine::addTask(QGCMapTask* task) QGCMapEngine::addTask(QGCMapTask* task)
......
...@@ -119,6 +119,9 @@ private slots: ...@@ -119,6 +119,9 @@ private slots:
signals: signals:
void updateTotals (quint32 totaltiles, quint64 totalsize, quint32 defaulttiles, quint64 defaultsize); void updateTotals (quint32 totaltiles, quint64 totalsize, quint32 defaulttiles, quint64 defaultsize);
private:
bool _wipeDirectory(const QString& dirPath);
private: private:
QGCCacheWorker _worker; QGCCacheWorker _worker;
QString _cachePath; QString _cachePath;
......
...@@ -194,10 +194,12 @@ QGeoTiledMappingManagerEngineQGC::_setCache(const QVariantMap &parameters) ...@@ -194,10 +194,12 @@ QGeoTiledMappingManagerEngineQGC::_setCache(const QVariantMap &parameters)
if (parameters.contains(QStringLiteral("mapping.cache.directory"))) if (parameters.contains(QStringLiteral("mapping.cache.directory")))
cacheDir = parameters.value(QStringLiteral("mapping.cache.directory")).toString(); cacheDir = parameters.value(QStringLiteral("mapping.cache.directory")).toString();
else { else {
cacheDir = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + QLatin1String("/QGCMapCache55"); cacheDir = getQGCMapEngine()->getCachePath();
if(!QDir::root().mkpath(cacheDir)) { if(!QFileInfo(cacheDir).exists()) {
qWarning() << "Could not create mapping disk cache directory: " << cacheDir; if(!QDir::root().mkpath(cacheDir)) {
cacheDir = QDir::homePath() + QLatin1String("/.qgcmapscache/"); qWarning() << "Could not create mapping disk cache directory: " << cacheDir;
cacheDir = QDir::homePath() + QLatin1String("/.qgcmapscache/");
}
} }
} }
if(!QFileInfo(cacheDir).exists()) { if(!QFileInfo(cacheDir).exists()) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment