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); cache_dir.setPath(cache_root);
auto * provider = parent->downloader->provider; auto * provider = parent->downloader->provider;
if (provider) { if (provider) {
cache_dir.setPath(cache_root + "/" + provider->name()); cache_dir.setPath(cache_root + "/" + provider->cacheDir());
} }
qDebug() << "[MapViewTileCache] Cache dir" << cache_dir.absolutePath(); qDebug() << "[MapViewTileCache] Cache dir" << cache_dir.absolutePath();
if (!cache_dir.exists()) cache_dir.mkpath("."); if (!cache_dir.exists()) cache_dir.mkpath(".");

View File

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

View File

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

View File

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

View File

@@ -40,6 +40,7 @@ public:
virtual QString name() const = 0; virtual QString name() const = 0;
virtual bool requestTile(OSM::TileIndex index) = 0; virtual bool requestTile(OSM::TileIndex index) = 0;
virtual QSize tileSize() = 0; virtual QSize tileSize() = 0;
virtual QString cacheDir() const { return name(); }
protected: protected:
void initParameters(const PIValueTree & vt); void initParameters(const PIValueTree & vt);
@@ -47,10 +48,12 @@ protected:
virtual void applyParameters() {} virtual void applyParameters() {}
private: private:
void applyParametersIntenal();
PIValueTree parameters; PIValueTree parameters;
signals: signals:
void tileReady(OSM::TileIndex index, QPixmap pm); 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() { void MapViewTileProvider_MapTiler::applyParameters() {
url = PI2QString(getParameters().childValue("url").toString()); url = PI2QString(getParameters().childValue("url").toString());
key = PI2QString(getParameters().childValue("key").toString()); key = PI2QString(getParameters().childValue("key").toString());

View File

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