diff --git a/src/app/options/qgsoptions.cpp b/src/app/options/qgsoptions.cpp index 0d70420ffd8f..2b7afc7e04b2 100644 --- a/src/app/options/qgsoptions.cpp +++ b/src/app/options/qgsoptions.cpp @@ -482,12 +482,12 @@ QgsOptions::QgsOptions( QWidget *parent, Qt::WindowFlags fl, const QListsetText( mSettings->value( QStringLiteral( "cache/directory" ) ).toString() ); + mCacheDirectory->setText( QgsSettingsRegistryCore::settingsNetworkCacheDirectory->value() ); mCacheDirectory->setPlaceholderText( QStandardPaths::writableLocation( QStandardPaths::CacheLocation ) ); mCacheSize->setMinimum( 0 ); mCacheSize->setMaximum( std::numeric_limits::max() ); mCacheSize->setSingleStep( 50 ); - qint64 cacheSize = mSettings->value( QStringLiteral( "cache/size_bytes" ), 0 ).toLongLong(); + qint64 cacheSize = QgsSettingsRegistryCore::settingsNetworkCacheSize->value(); mCacheSize->setValue( static_cast( cacheSize / 1024 / 1024 ) ); mCacheSize->setClearValue( 0 ); connect( mBrowseCacheDirectory, &QAbstractButton::clicked, this, &QgsOptions::browseCacheDirectory ); @@ -1579,11 +1579,11 @@ void QgsOptions::saveOptions() mSettings->setValue( QStringLiteral( "proxy/proxyType" ), mProxyTypeComboBox->currentText() ); if ( !mCacheDirectory->text().isEmpty() ) - mSettings->setValue( QStringLiteral( "cache/directory" ), mCacheDirectory->text() ); + QgsSettingsRegistryCore::settingsNetworkCacheDirectory->setValue( mCacheDirectory->text() ); else - mSettings->remove( QStringLiteral( "cache/directory" ) ); + QgsSettingsRegistryCore::settingsNetworkCacheDirectory->remove(); - mSettings->setValue( QStringLiteral( "cache/size_bytes" ), QVariant::fromValue( mCacheSize->value() * 1024LL * 1024LL ) ); + QgsSettingsRegistryCore::settingsNetworkCacheSize->setValue( mCacheSize->value() * 1024LL * 1024LL ); //url with no proxy at all QStringList noProxyUrls; @@ -2260,7 +2260,7 @@ void QgsOptions::clearCache() QgsNetworkAccessManager::instance()->cache()->clear(); // Clear WFS XSD cache used by OGR GMLAS driver - QString cacheDirectory = mSettings->value( QStringLiteral( "cache/directory" ) ).toString(); + QString cacheDirectory = QgsSettingsRegistryCore::settingsNetworkCacheDirectory->value(); if ( cacheDirectory.isEmpty() ) cacheDirectory = QStandardPaths::writableLocation( QStandardPaths::CacheLocation ); if ( !cacheDirectory.endsWith( QDir::separator() ) ) diff --git a/src/core/network/qgsnetworkaccessmanager.cpp b/src/core/network/qgsnetworkaccessmanager.cpp index 261e090d6310..bbb03011d20b 100644 --- a/src/core/network/qgsnetworkaccessmanager.cpp +++ b/src/core/network/qgsnetworkaccessmanager.cpp @@ -24,6 +24,7 @@ #include "qgsapplication.h" #include "qgsmessagelog.h" #include "qgssettings.h" +#include "qgssettingsregistrycore.h" #include "qgslogger.h" #include "qgis.h" #include "qgsnetworkdiskcache.h" @@ -749,11 +750,11 @@ void QgsNetworkAccessManager::setupDefaultProxyAndCache( Qt::ConnectionType conn if ( !newcache ) newcache = new QgsNetworkDiskCache( this ); - QString cacheDirectory = settings.value( QStringLiteral( "cache/directory" ) ).toString(); + QString cacheDirectory = QgsSettingsRegistryCore::settingsNetworkCacheDirectory->value(); if ( cacheDirectory.isEmpty() ) cacheDirectory = QStandardPaths::writableLocation( QStandardPaths::CacheLocation ); newcache->setCacheDirectory( cacheDirectory ); - qint64 cacheSize = settings.value( QStringLiteral( "cache/size_bytes" ), 0 ).toLongLong(); + qint64 cacheSize = QgsSettingsRegistryCore::settingsNetworkCacheSize->value(); newcache->setMaximumCacheSize( cacheSize ); QgsDebugMsgLevel( QStringLiteral( "cacheDirectory: %1" ).arg( newcache->cacheDirectory() ), 4 ); diff --git a/src/core/qgstiledownloadmanager.cpp b/src/core/qgstiledownloadmanager.cpp index 31c9fca722c7..bd2ce162295e 100644 --- a/src/core/qgstiledownloadmanager.cpp +++ b/src/core/qgstiledownloadmanager.cpp @@ -21,6 +21,8 @@ #include "qgsnetworkaccessmanager.h" #include "qgsrangerequestcache.h" #include "qgssettings.h" +#include "qgssettingsregistrycore.h" +#include "qgssettingsentryimpl.h" #include #include @@ -190,7 +192,7 @@ QgsTileDownloadManager::QgsTileDownloadManager() mRangesCache.reset( new QgsRangeRequestCache ); const QgsSettings settings; - QString cacheDirectory = settings.value( QStringLiteral( "cache/directory" ) ).toString(); + QString cacheDirectory = QgsSettingsRegistryCore::settingsNetworkCacheDirectory->value(); if ( cacheDirectory.isEmpty() ) cacheDirectory = QStandardPaths::writableLocation( QStandardPaths::CacheLocation ); if ( !cacheDirectory.endsWith( QDir::separator() ) ) @@ -199,7 +201,7 @@ QgsTileDownloadManager::QgsTileDownloadManager() } cacheDirectory += QLatin1String( "http-ranges" ); mRangesCache->setCacheDirectory( cacheDirectory ); - qint64 cacheSize = settings.value( QStringLiteral( "cache/size_bytes" ), 0 ).toLongLong(); + qint64 cacheSize = QgsSettingsRegistryCore::settingsNetworkCacheSize->value(); mRangesCache->setCacheSize( cacheSize ); } diff --git a/src/core/settings/qgssettingsregistrycore.cpp b/src/core/settings/qgssettingsregistrycore.cpp index d25920fe2521..1fb3209c9499 100644 --- a/src/core/settings/qgssettingsregistrycore.cpp +++ b/src/core/settings/qgssettingsregistrycore.cpp @@ -115,6 +115,10 @@ const QgsSettingsEntryInteger *QgsSettingsRegistryCore::settingsLayerParallelLoa const QgsSettingsEntryBool *QgsSettingsRegistryCore::settingsLayerParallelLoading = new QgsSettingsEntryBool( QStringLiteral( "provider-parallel-loading" ), QgsSettingsTree::sTreeCore, true, QStringLiteral( "Load layers in parallel (only available for some providers (GDAL and PostgreSQL)" ), Qgis::SettingsOption() ); +const QgsSettingsEntryString *QgsSettingsRegistryCore::settingsNetworkCacheDirectory = new QgsSettingsEntryString( QStringLiteral( "directory" ), QgsSettingsTree::sTreeNetworkCache, QString(), QStringLiteral( "Network disk cache directory" ) ); + +const QgsSettingsEntryInteger64 *QgsSettingsRegistryCore::settingsNetworkCacheSize = new QgsSettingsEntryInteger64( QStringLiteral( "size-bytes" ), QgsSettingsTree::sTreeNetworkCache, 0, QStringLiteral( "Network disk cache size in bytes (0 = automatic size)" ) ); + QgsSettingsRegistryCore::QgsSettingsRegistryCore() : QgsSettingsRegistry() { diff --git a/src/core/settings/qgssettingsregistrycore.h b/src/core/settings/qgssettingsregistrycore.h index ff536fbdbff8..fe3ec0df8844 100644 --- a/src/core/settings/qgssettingsregistrycore.h +++ b/src/core/settings/qgssettingsregistrycore.h @@ -26,6 +26,7 @@ class QgsSettingsEntryBool; class QgsSettingsEntryColor; class QgsSettingsEntryDouble; class QgsSettingsEntryInteger; +class QgsSettingsEntryInteger64; class QgsSettingsEntryString; class QgsSettingsEntryStringList; template class QgsSettingsEntryEnumFlag; @@ -165,6 +166,12 @@ class CORE_EXPORT QgsSettingsRegistryCore : public QgsSettingsRegistry //! Settings entry whether layer are loading in parallel static const QgsSettingsEntryBool *settingsLayerParallelLoading; + //! Settings entry network cache directory + static const QgsSettingsEntryString *settingsNetworkCacheDirectory; + + //! Settings entry network cache directory + static const QgsSettingsEntryInteger64 *settingsNetworkCacheSize; + private: friend class QgsApplication; diff --git a/src/core/settings/qgssettingstree.h b/src/core/settings/qgssettingstree.h index 1dc8ce95471f..36a6221d8c73 100644 --- a/src/core/settings/qgssettingstree.h +++ b/src/core/settings/qgssettingstree.h @@ -63,6 +63,7 @@ class CORE_EXPORT QgsSettingsTree static inline QgsSettingsTreeNode *sTreeWms = treeRoot()->createChildNode( QStringLiteral( "wms" ) ); static inline QgsSettingsTreeNode *sTreeMeasure = treeRoot()->createChildNode( QStringLiteral( "measure" ) ); static inline QgsSettingsTreeNode *sTreeAnnotations = treeRoot()->createChildNode( QStringLiteral( "annotations" ) ); + static inline QgsSettingsTreeNode *sTreeNetworkCache = treeRoot()->createChildNode( QStringLiteral( "cache" ) ); #endif diff --git a/src/server/qgsserversettings.cpp b/src/server/qgsserversettings.cpp index 7b8e695c0644..26d602210247 100644 --- a/src/server/qgsserversettings.cpp +++ b/src/server/qgsserversettings.cpp @@ -124,7 +124,7 @@ void QgsServerSettings::initSettings() const Setting sCacheSize = { QgsServerSettingsEnv::QGIS_SERVER_CACHE_SIZE, QgsServerSettingsEnv::DEFAULT_VALUE, QStringLiteral( "Specify the cache size (0 = automatic size)" ), - QStringLiteral( "/cache/size_bytes" ), + QStringLiteral( "/cache/size-bytes" ), QMetaType::Type::LongLong, 0, QVariant() diff --git a/tests/testdata/qgis_server_settings/conf0.ini b/tests/testdata/qgis_server_settings/conf0.ini index bae08269774c..e6c5f8e15ea9 100644 --- a/tests/testdata/qgis_server_settings/conf0.ini +++ b/tests/testdata/qgis_server_settings/conf0.ini @@ -1,6 +1,6 @@ [cache] directory= -size_bytes=@Variant(\0\0\0\x81\0\0\0\0\x3 \0\0) +size-bytes=@Variant(\0\0\0\x81\0\0\0\0\x3 \0\0) [qgis] parallel_rendering=true diff --git a/tests/testdata/qgis_server_settings/conf1.ini b/tests/testdata/qgis_server_settings/conf1.ini index 0a3a2dd0748f..c4f62f0b56d1 100644 --- a/tests/testdata/qgis_server_settings/conf1.ini +++ b/tests/testdata/qgis_server_settings/conf1.ini @@ -1,6 +1,6 @@ [cache] directory=/tmp/mycache -size_bytes=@Variant(\0\0\0\x81\0\0\0\0\x3 \0\0) +size-bytes=@Variant(\0\0\0\x81\0\0\0\0\x3 \0\0) [qgis] parallel_rendering=false