void ImageLoader::start() { if (path.startsWith("http://")) { QNetworkRequest req = QNetworkRequest(QUrl(path)); // Define that preference should be given to cached files (no etag checks) req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache); req.setRawHeader("User-Agent", StelUtils::getApplicationName().toAscii()); networkReply = StelApp::getInstance().getNetworkAccessManager()->get(req); connect(networkReply, SIGNAL(finished()), this, SLOT(onNetworkReply())); } else { // At next loop iteration we start to load from the file. QTimer::singleShot(0, this, SLOT(directLoad())); } // Move this object outside of the main thread. StelTextureMgr* textureMgr = &StelApp::getInstance().getTextureManager(); moveToThread(textureMgr->loaderThread); }
bool StelTexture::bind(int slot) { if (id != 0) { // The texture is already fully loaded, just bind and return true; glActiveTexture(GL_TEXTURE0 + slot); glBindTexture(GL_TEXTURE_2D, id); return true; } if (errorOccured) return false; // If the file is remote, start a network connection. if (loader == NULL && networkReply == NULL && fullPath.startsWith("http://")) { QNetworkRequest req = QNetworkRequest(QUrl(fullPath)); // Define that preference should be given to cached files (no etag checks) req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache); req.setRawHeader("User-Agent", StelUtils::getApplicationName().toLatin1()); networkReply = StelApp::getInstance().getNetworkAccessManager()->get(req); connect(networkReply, SIGNAL(finished()), this, SLOT(onNetworkReply())); return false; } // The network connection is still running. if (networkReply != NULL) return false; // Not a remote file, start a loader from local file. if (loader == NULL) { loader = new QFuture<GLData>(QtConcurrent::run(loadFromPath, fullPath)); return false; } // Wait until the loader finish. if (!loader->isFinished()) return false; // Finally load the data in the main thread. glLoad(loader->result()); delete loader; loader = NULL; return true; }
foreach (QString key, keys) { params.addQueryItem( key, parameters[key].toString() ); } QByteArray data; data.append( params.toString() ); data.remove(0,1); init(); QNetworkRequest qnr(uri); qnr.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); QNetworkReply* reply = m_networkManager->post(qnr, data); connect( reply, SIGNAL( downloadProgress(qint64,qint64) ), this, SLOT( downloadProgress(qint64,qint64) ) ); connect( reply, SIGNAL( finished() ), this, SLOT( onNetworkReply() ) ); reply->setProperty(KEY_COOKIE, cookie); m_currentRequests << reply; } void NetworkProcessor::init() { if (m_networkManager == NULL) { m_networkManager = new QNetworkAccessManager(this); } } void NetworkProcessor::doGet(QUrl const& uri, QVariant const& cookie)