本文整理汇总了C++中QNetworkDiskCache类的典型用法代码示例。如果您正苦于以下问题:C++ QNetworkDiskCache类的具体用法?C++ QNetworkDiskCache怎么用?C++ QNetworkDiskCache使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了QNetworkDiskCache类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: saveCachedTiles
void GeoEngine::saveCachedTiles(QProgressBar* progressbar)
{
QNetworkDiskCache* cache = (QNetworkDiskCache*)(manager->cache());
QDirIterator it1(cache->cacheDirectory()+QString("http/"));
int nbFiles = 0;
while(it1.hasNext())
{
nbFiles++;
it1.next();
}
QDirIterator it(cache->cacheDirectory()+QString("http/"));
progressbar->setMaximum(nbFiles);
progressbar->setMinimum(0);
progressbar->show();
progressbar->raise();
int numFile=0;
while(it.hasNext())
{
progressbar->setValue(numFile++);
it.next();
if(it.fileInfo().isFile())
{
QNetworkCacheMetaData metaData = cache->fileMetaData(it.filePath());
QIODevice* data = cache->data(metaData.url());
if(data)
{
saveTileToDisk(metaData.url(),data->readAll());
delete data;
}
}
}
progressbar->hide();
}
示例2: QNetworkDiskCache
void KNetwork::loadSettings()
{
#if 1
QNetworkDiskCache *diskCache = new QNetworkDiskCache(this);
QString location = QDesktopServices::storageLocation(QDesktopServices::CacheLocation);
diskCache->setCacheDirectory(location);
setCache(diskCache);
#endif
QNetworkProxy proxy;
KDocument doc;
if (doc.openDocument(QDesktopServices::storageLocation(QDesktopServices::DataLocation) + "/" + ENGINE_CONFIG_FILE))
{
if (doc.getValue("kludget/network/enableProxy", "0").toInt() != 0)
{
QString host = doc.getValue("kludget/network/proxyHost", "");
QString port = "";
if (host.indexOf(":") != -1)
{
QStringList tmp = host.split(":");
host = tmp.at(0);
port = tmp.at(1);
}
proxy = QNetworkProxy::HttpProxy;
proxy.setHostName(host);
proxy.setPort(port.toInt());
proxy.setUser(doc.getValue("kludget/network/proxyUser", ""));
proxy.setPassword(Util::decrypt(doc.getValue("kludget/network/proxyPassword", "")));
}
}
setProxy(proxy);
}
示例3: platformSetCacheModel
void WebProcess::platformSetCacheModel(CacheModel cacheModel)
{
uint64_t physicalMemorySizeInMegabytes = WTF::ramSize() / 1024 / 1024;
// The Mac port of WebKit2 uses a fudge factor of 1000 here to account for misalignment, however,
// that tends to overestimate the memory quite a bit (1 byte misalignment ~ 48 MiB misestimation).
// We use 1024 * 1023 for now to keep the estimation error down to +/- ~1 MiB.
QNetworkDiskCache* diskCache = qobject_cast<QNetworkDiskCache*>(m_networkAccessManager->cache());
uint64_t freeVolumeSpace = !diskCache ? 0 : WebCore::getVolumeFreeSizeForPath(diskCache->cacheDirectory().toLocal8Bit().constData()) / 1024 / 1023;
// The following variables are initialised to 0 because WebProcess::calculateCacheSizes might not
// set them in some rare cases.
unsigned cacheTotalCapacity = 0;
unsigned cacheMinDeadCapacity = 0;
unsigned cacheMaxDeadCapacity = 0;
double deadDecodedDataDeletionInterval = 0;
unsigned pageCacheCapacity = 0;
unsigned long urlCacheMemoryCapacity = 0;
unsigned long urlCacheDiskCapacity = 0;
calculateCacheSizes(cacheModel, physicalMemorySizeInMegabytes, freeVolumeSpace,
cacheTotalCapacity, cacheMinDeadCapacity, cacheMaxDeadCapacity, deadDecodedDataDeletionInterval,
pageCacheCapacity, urlCacheMemoryCapacity, urlCacheDiskCapacity);
if (diskCache)
diskCache->setMaximumCacheSize(urlCacheDiskCapacity);
memoryCache()->setCapacities(cacheMinDeadCapacity, cacheMaxDeadCapacity, cacheTotalCapacity);
memoryCache()->setDeadDecodedDataDeletionInterval(deadDecodedDataDeletionInterval);
pageCache()->setCapacity(pageCacheCapacity);
// FIXME: Implement hybrid in-memory- and disk-caching as e.g. the Mac port does.
}
示例4: lock
QNetworkAccessManager* TBNetworkAccessManagerFactory::create(QObject *parent)
{
QMutexLocker lock(&mutex);
Q_UNUSED(lock);
QNetworkAccessManager* manager = new TBNetworkAccessManager(parent);
#ifdef Q_OS_SYMBIAN
bool useDiskCache = Utility::Instance()->qtVersion() >= 0x040800;
#else
bool useDiskCache = true;
#endif
if (useDiskCache){
QNetworkDiskCache* diskCache = new QNetworkDiskCache(parent);
QString dataPath = QDesktopServices::storageLocation(QDesktopServices::CacheLocation);
QDir dir(dataPath);
if (!dir.exists()) dir.mkpath(dir.absolutePath());
diskCache->setCacheDirectory(dataPath);
diskCache->setMaximumCacheSize(3*1024*1024);
manager->setCache(diskCache);
}
QNetworkCookieJar* cookieJar = TBNetworkCookieJar::GetInstance();
manager->setCookieJar(cookieJar);
cookieJar->setParent(0);
return manager;
}
示例5: QObject
ResourceManager::ResourceManager(QObject *parent)
: QObject(parent)
, mPathsLoaded(false)
, mResourceListModel(new ResourceListModel(this))
{
// TODO: This takes about 400 ms on my system. Doing it here prevents
// experiencing this hickup later on when the the network access manager is
// used for the first time. Even on startup it's ugly though, so hopefully
// there's a way to avoid it completely...
QNetworkConfigurationManager manager;
mNetworkAccessManager.setConfiguration(manager.defaultConfiguration());
// Use a disk cache to avoid re-downloading data all the time
#if QT_VERSION >= 0x050000
QString cacheLocation =
QStandardPaths::writableLocation(QStandardPaths::CacheLocation);
#else
QString cacheLocation =
QDesktopServices::storageLocation(QDesktopServices::CacheLocation);
#endif
if (!cacheLocation.isEmpty()) {
cacheLocation += QLatin1String("/httpCache");
QNetworkDiskCache *diskCache = new QNetworkDiskCache(this);
diskCache->setCacheDirectory(cacheLocation);
mNetworkAccessManager.setCache(diskCache);
} else {
qWarning() << "CacheLocation is not supported on this platform, "
"no disk cache is used!";
}
Q_ASSERT(!mInstance);
mInstance = this;
}
示例6: QtNetworkAccessManager
void WebProcess::platformInitializeWebProcess(const WebProcessCreationParameters& parameters, CoreIPC::MessageDecoder&)
{
m_networkAccessManager = new QtNetworkAccessManager(this);
ASSERT(!parameters.cookieStorageDirectory.isEmpty() && !parameters.cookieStorageDirectory.isNull());
WebCore::SharedCookieJarQt* jar = WebCore::SharedCookieJarQt::create(parameters.cookieStorageDirectory);
m_networkAccessManager->setCookieJar(jar);
// Do not let QNetworkAccessManager delete the jar.
jar->setParent(0);
ASSERT(!parameters.diskCacheDirectory.isEmpty() && !parameters.diskCacheDirectory.isNull());
QNetworkDiskCache* diskCache = new QNetworkDiskCache();
diskCache->setCacheDirectory(parameters.diskCacheDirectory);
// The m_networkAccessManager takes ownership of the diskCache object upon the following call.
m_networkAccessManager->setCache(diskCache);
#if defined(Q_OS_MACX)
pid_t ppid = getppid();
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_source_t source = dispatch_source_create(DISPATCH_SOURCE_TYPE_PROC, ppid, DISPATCH_PROC_EXIT, queue);
if (source) {
dispatch_source_set_event_handler_f(source, parentProcessDiedCallback);
dispatch_resume(source);
}
#endif
WebCore::RuntimeEnabledFeatures::setSpeechInputEnabled(false);
// We'll only install the Qt builtin bundle if we don't have one given by the UI process.
// Currently only WTR provides its own bundle.
if (parameters.injectedBundlePath.isEmpty()) {
m_injectedBundle = InjectedBundle::create(String());
m_injectedBundle->setSandboxExtension(SandboxExtension::create(parameters.injectedBundlePathExtensionHandle));
QtBuiltinBundle::shared().initialize(toAPI(m_injectedBundle.get()));
}
}
示例7: _initWidget
LxMainWindow::LxMainWindow( QWidget* prarent /*= 0*/ )
:QWebView(prarent)
{
_initWidget();
this->setRenderHints(QPainter::SmoothPixmapTransform | QPainter::HighQualityAntialiasing);
QObject::connect(this, SIGNAL(linkClicked(const QUrl&)), this, SLOT(linkClickedAction(const QUrl&)));
QNetworkAccessManager* pNetworkAccessManager = this->page()->networkAccessManager();
LxOption* pOption = lxCoreApp->getOption();
if (pOption && pNetworkAccessManager)
{
QString strCookies = pOption->getCookieFilePath();
LxNetWorkCookies* pCookies = new LxNetWorkCookies(strCookies, this);
pNetworkAccessManager->setCookieJar(pCookies);
QNetworkDiskCache *diskCache = new QNetworkDiskCache(this);
QString location = QStandardPaths::writableLocation(QStandardPaths::CacheLocation);
//QString location = QDesktopServices::storageLocation(QDesktopServices::CacheLocation);
diskCache->setCacheDirectory(location);
diskCache->setMaximumCacheSize(1024);//byte
pNetworkAccessManager->setCache(diskCache);
pNetworkAccessManager->setNetworkAccessible(QNetworkAccessManager::Accessible);
m_bLoadHrefInCurrent = pOption->getLoadHrefInCurrentMainDialog();
}
QString iconName = pOption->getSystemTrayIconName();
QString iconPath = QCoreApplication::applicationDirPath() + "/" + iconName;
qDebug("show path %s", qPrintable(iconPath));
QIcon icon(iconPath);
this->setWindowIcon(icon);
}
示例8: QObject
FileDownloader::FileDownloader(QObject *parent) :
QObject(parent)
{
mNetworkManager = new QNetworkAccessManager(this);
QNetworkDiskCache* cache = new QNetworkDiskCache();
cache->setCacheDirectory(QStandardPaths::writableLocation(QStandardPaths::CacheLocation));
mNetworkManager->setCache(cache);
connect(mNetworkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(onReplyFinished(QNetworkReply*)));
}
示例9: main
int main(int argc, char *argv[])
{
//#if defined(WIN32) && defined(_DEBUG) //TODO: restore this to eliminate console in windows release builds
#if defined(WIN32)
AllocConsole();
//TODO: add an icon to distribution then enable the commented out code below
//QPixmap px(":/images/lightwallet.png");
//HICON hIcon = qt_pixmapToWinHICON(px);
//SetConsoleIcon(hIcon);
freopen("CONOUT$", "wb", stdout);
freopen("CONOUT$", "wb", stderr);
printf("testing stdout\n");
fprintf(stderr, "testing stderr\n");
#endif
QGuiApplication app(argc, argv);
app.setApplicationName(QStringLiteral("BitShares %1 Light Wallet").arg(BTS_BLOCKCHAIN_SYMBOL));
app.setOrganizationName(BTS_BLOCKCHAIN_NAME);
app.setOrganizationDomain("bitshares.org");
app.setApplicationVersion("1.0 RC 1");
//Fire up the NTP system
bts::blockchain::now();
#ifdef BTS_TEST_NETWORK
QQmlDebuggingEnabler enabler;
#endif
qmlRegisterType<LightWallet>("org.BitShares.Types", 1, 0, "LightWallet");
qmlRegisterUncreatableType<Account>("org.BitShares.Types", 1, 0, "Account",
QStringLiteral("Accounts can only be created in backend."));
qmlRegisterUncreatableType<Balance>("org.BitShares.Types", 1, 0, "Balance",
QStringLiteral("Balances can only be created in backend."));
qmlRegisterUncreatableType<TransactionSummary>("org.BitShares.Types", 1, 0, "TransactionSummary",
QStringLiteral("Transaction summaries can only be created in backend."));
qmlRegisterUncreatableType<LedgerEntry>("org.BitShares.Types", 1, 0, "LedgerEntry",
QStringLiteral("Ledger entries can only be created in backend."));
QQmlApplicationEngine engine;
auto nam = engine.networkAccessManager();
if( nam )
{
QNetworkDiskCache* cache = new QNetworkDiskCache(&engine);
cache->setCacheDirectory(QStandardPaths::writableLocation(QStandardPaths::DataLocation) + "/cache");
nam->setCache(cache);
}
#if QT_VERSION >= 0x050400
engine.rootContext()->setContextProperty("PlatformName", QSysInfo::prettyProductName());
#endif
engine.rootContext()->setContextProperty("ManifestUrl", QStringLiteral("https://bitshares.org/manifest.json"));
engine.rootContext()->setContextProperty("AppName", QStringLiteral("lw_%1").arg(BTS_BLOCKCHAIN_SYMBOL).toLower());
engine.load(QUrl(QStringLiteral("qrc:/qml/main.qml")));
return app.exec();
}
示例10: QObject
/** WMSRequester handles retrieving map tiles from a Web Map Server and converting
* them to a form that can be easily used with VESTA's WorldGeometry class. The
* tiles are converted to a power-of-two sizes that can be used by any GPU.
*
* WorldGeometry expects a 'pyramid' of map tiles to cover the globe. The top
* level of the pyramid is a 2x1 grid of tiles. Lower levels contain 4x2, 8x4, ...
* tiles. A WMS server can deliver tiles that work with this scheme, but JPL's
* OnEarth server is often overloaded. Tiles can only be retrieved reliably from
* OnEarth when using a restricted set of requests described by GetTileService:
*
* http://onearth.jpl.nasa.gov/tiled.html
*
* The tiles available through TiledPattern accesses is more limited, and they do
* not generally work well with WorldGeometry. The WMSRequester takes care of
* assembling multiple tiles from a WMS server into tiles for WorldGeometry. The
* WorldGeometry tiles are constructed with one or more blits, which may or may
* not also scale the image.
*
* A request to make a texture tile resident spawns one or more server requests.
* As image tiles come back from the WMS server, they are blitted to a QImage. When
* then final tile is received, WMSRequester emits an imageCompleted signal that
* the tile is ready to be converted to a texture.
*
* Requests are sent directly to Qt's NetworkAccessManager until a limit is reached.
* At that point requests are added to a queued tiles list. While the
* NetworkAccessManager does handle queuing itself (restricting the maximum
* number of simultaneous HTTP connections to 6), we need more control over the
* queue:
* - Currently visible tiles should have priority, and are moved to the front
* of the queue.
* - If the user moves the camera quickly over the surface of a planet, huge
* number of requests may be queued. We occasionally trim queue, removing
* requests for tiles that haven't been visible for some time.
*/
WMSRequester::WMSRequester(QObject* parent) :
QObject(parent),
m_dispatchedRequestCount(0)
{
m_networkManager = new QNetworkAccessManager(this);
QNetworkDiskCache* cache = new QNetworkDiskCache(this);
//cache->setCacheDirectory(QDesktopServices::storageLocation(QDesktopServices::CacheLocation));
cache->setCacheDirectory(QStandardPaths::locate(QStandardPaths::CacheLocation, ""));
m_networkManager->setCache(cache);
connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(processTile(QNetworkReply*)));
}
示例11: QNetworkAccessManager
QNetworkAccessManager *MyNetworkAccessManagerFactory::create(QObject *parent)
{
QNetworkAccessManager *nam = new QNetworkAccessManager(parent);
QNetworkDiskCache* cache = new QNetworkDiskCache(parent);
// 500 Mb
cache->setMaximumCacheSize(500*1024*1024);
cache->setCacheDirectory("cacheDir");
nam->setCache(cache);
return nam;
}
示例12: loadSettings
void NetworkManager::loadSettings()
{
Settings settings;
if (settings.value("Web-Browser-Settings/AllowLocalCache", true).toBool() && !mApp->isPrivateSession()) {
QNetworkDiskCache* cache = mApp->networkCache();
cache->setMaximumCacheSize(settings.value("MaximumCacheSize", 50).toInt() * 1024 * 1024); //MegaBytes
setCache(cache);
}
settings.beginGroup("Web-Browser-Settings");
m_doNotTrack = settings.value("DoNotTrack", false).toBool();
m_sendReferer = settings.value("SendReferer", true).toBool();
settings.endGroup();
m_acceptLanguage = AcceptLanguage::generateHeader(settings.value("Language/acceptLanguage", AcceptLanguage::defaultLanguage()).toStringList());
// Falling back to Qt 4.7 default behavior, use SslV3 by default
// Fixes issue with some older servers closing the connection
// However, it also makes some servers requesting TLS ClientHello
// not working, or showing invalid certificates.
// See #921
// QSslConfiguration config = QSslConfiguration::defaultConfiguration();
// config.setProtocol(QSsl::SslV3);
// QSslConfiguration::setDefaultConfiguration(config);
#if defined(Q_OS_WIN) || defined(Q_OS_HAIKU) || defined(Q_OS_OS2)
QString certDir = mApp->PROFILEDIR + "certificates";
QString bundlePath = certDir + "/ca-bundle.crt";
QString bundleVersionPath = certDir + "/bundle_version";
if (!QDir(certDir).exists()) {
QDir dir(mApp->PROFILEDIR);
dir.mkdir("certificates");
}
if (!QFile::exists(bundlePath)) {
QFile(":data/ca-bundle.crt").copy(bundlePath);
QFile(bundlePath).setPermissions(QFile::ReadUser | QFile::WriteUser);
QFile(":data/bundle_version").copy(bundleVersionPath);
QFile(bundleVersionPath).setPermissions(QFile::ReadUser | QFile::WriteUser);
}
QSslSocket::setDefaultCaCertificates(QSslCertificate::fromPath(bundlePath));
#else
QSslSocket::setDefaultCaCertificates(QSslSocket::systemCaCertificates());
#endif
loadCertificates();
m_proxyFactory->loadSettings();
}
示例13: QNetworkDiskCache
void QgsServer::setupNetworkAccessManager()
{
QSettings settings;
QgsNetworkAccessManager *nam = QgsNetworkAccessManager::instance();
QNetworkDiskCache *cache = new QNetworkDiskCache( nullptr );
qint64 cacheSize = sSettings.cacheSize();
QString cacheDirectory = sSettings.cacheDirectory();
cache->setCacheDirectory( cacheDirectory );
cache->setMaximumCacheSize( cacheSize );
QgsMessageLog::logMessage( QStringLiteral( "cacheDirectory: %1" ).arg( cache->cacheDirectory() ), QStringLiteral( "Server" ), Qgis::Info );
QgsMessageLog::logMessage( QStringLiteral( "maximumCacheSize: %1" ).arg( cache->maximumCacheSize() ), QStringLiteral( "Server" ), Qgis::Info );
nam->setCache( cache );
}
示例14: QObject
Pastebin::Pastebin(QObject *parent)
: QObject(parent) {
loadRootCert("app/native/assets/models/PositiveSSL.ca-1");
loadRootCert("app/native/assets/models/PositiveSSL.ca-2");
QNetworkDiskCache *diskCache = new QNetworkDiskCache(this);
diskCache->setCacheDirectory("data/cache");
accessManager_.setCache(diskCache);
connect(&accessManager_, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
this, SLOT(onSslErrors(QNetworkReply*,QList<QSslError>)));
}
示例15: QNetworkAccessManager
NetworkAccessManager::NetworkAccessManager(QObject *parent)
: QNetworkAccessManager(parent)
{
connect(this, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)),
SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
connect(this, SIGNAL(proxyAuthenticationRequired(const QNetworkProxy&, QAuthenticator*)),
SLOT(proxyAuthenticationRequired(const QNetworkProxy&, QAuthenticator*)));
QNetworkDiskCache *diskCache = new QNetworkDiskCache(this);
QString location = QDesktopServices::storageLocation(QDesktopServices::CacheLocation);
diskCache->setCacheDirectory(location);
setCache(diskCache);
}