MapViewTileProviderBase add cacheDir()

This commit is contained in:
2025-03-18 15:17:14 +03:00
parent 347104d512
commit a0f2d80b4f
7 changed files with 26 additions and 3 deletions

View File

@@ -79,7 +79,7 @@ void MapViewTileCache::tileProviderChanged() {
cache_dir.setPath(cache_root);
auto * provider = parent->downloader->provider;
if (provider) {
cache_dir.setPath(cache_root + "/" + provider->name());
cache_dir.setPath(cache_root + "/" + provider->cacheDir());
}
qDebug() << "[MapViewTileCache] Cache dir" << cache_dir.absolutePath();
if (!cache_dir.exists()) cache_dir.mkpath(".");

View File

@@ -50,11 +50,13 @@ void MapViewTileDownloader::clearQueue() {
void MapViewTileDownloader::setTileProvider(MapViewTileProviderBase * p) {
if (provider) {
disconnect(provider, &MapViewTileProviderBase::tileReady, this, &MapViewTileDownloader::tileReady);
disconnect(provider, &MapViewTileProviderBase::parametersChanged, this, &MapViewTileDownloader::parametersChanged);
provider->deleteLater();
}
provider = p;
if (provider) {
connect(provider, &MapViewTileProviderBase::tileReady, this, &MapViewTileDownloader::tileReady);
connect(provider, &MapViewTileProviderBase::parametersChanged, this, &MapViewTileDownloader::parametersChanged);
}
parent->cache->tileProviderChanged();
}
@@ -75,6 +77,11 @@ void MapViewTileDownloader::tileReady(OSM::TileIndex index, QPixmap pm) {
}
void MapViewTileDownloader::parametersChanged() {
parent->cache->tileProviderChanged();
}
void MapViewTileDownloader::run() {
while (!isInterruptionRequested()) {
cond_mutex.lock();

View File

@@ -65,6 +65,7 @@ public slots:
private slots:
void tileReady(OSM::TileIndex index, QPixmap pm);
void parametersChanged();
signals:
void tileDone();

View File

@@ -3,11 +3,17 @@
void MapViewTileProviderBase::setParameters(const PIValueTree & vt) {
parameters.applyValues(vt);
applyParameters();
applyParametersIntenal();
}
void MapViewTileProviderBase::initParameters(const PIValueTree & vt) {
parameters = vt;
applyParameters();
applyParametersIntenal();
}
void MapViewTileProviderBase::applyParametersIntenal() {
applyParameters();
emit parametersChanged();
}

View File

@@ -40,6 +40,7 @@ public:
virtual QString name() const = 0;
virtual bool requestTile(OSM::TileIndex index) = 0;
virtual QSize tileSize() = 0;
virtual QString cacheDir() const { return name(); }
protected:
void initParameters(const PIValueTree & vt);
@@ -47,10 +48,12 @@ protected:
virtual void applyParameters() {}
private:
void applyParametersIntenal();
PIValueTree parameters;
signals:
void tileReady(OSM::TileIndex index, QPixmap pm);
void parametersChanged();
};

View File

@@ -58,6 +58,11 @@ QSize MapViewTileProvider_MapTiler::tileSize() {
}
QString MapViewTileProvider_MapTiler::cacheDir() const {
return name() + "/" + tileset;
}
void MapViewTileProvider_MapTiler::applyParameters() {
url = PI2QString(getParameters().childValue("url").toString());
key = PI2QString(getParameters().childValue("key").toString());

View File

@@ -35,6 +35,7 @@ public:
QString name() const override;
bool requestTile(OSM::TileIndex index) override;
QSize tileSize() override;
QString cacheDir() const override;
protected:
void applyParameters() override;