void PreFlightWeatherPage::downloadWeatherData( QList<QString>& stations ) { if( stations.size() == 0 ) { return; } if( m_updateIsRunning == true ) { // Do not allow multiple calls, if download is already running. return; } // set update marker m_updateIsRunning = true; // Disable update buttons. switchUpdateButtons( false ); if( m_downloadManger == 0 ) { m_downloadManger = new DownloadManager(this); connect( m_downloadManger, SIGNAL(finished( int, int )), this, SLOT(slotDownloadsFinished( int, int )) ); connect( m_downloadManger, SIGNAL(networkError()), this, SLOT(slotNetworkError()) ); connect( m_downloadManger, SIGNAL(fileDownloaded(QString&)), this, SLOT(slotNewWeaterReport(QString&)) ); // connect( m_downloadManger, SIGNAL(status( const QString& )), // _globalMapView, SLOT(slot_info( const QString& )) ); }
//------------------------------------------------------------------------------- void FileLoaderGRIB::slotFinished_step1 () { // DBG("slotFinished_step1"); if (!downloadError) { //------------------------------------------- // Retour de l'étape 1 : préparation du fichier //------------------------------------------- QByteArray data = reply_step1->readAll (); QString strbuf (data); QStringList lsbuf = strbuf.split("\n"); QString status; for (int i=0; i < lsbuf.size(); i++) { QStringList lsval = lsbuf.at(i).split(":"); if (lsval.size() >= 2) { if (lsval.at(0) == "status") status = lsval.at(1); else if (lsval.at(0) == "file") fileName = QString(lsval.at(1)).replace(".grb","%20"); else if (lsval.at(0) == "size") fileSize = lsval.at(1).toInt(); else if (lsval.at(0) == "checksum") checkSumSHA1 = lsval.at(1); else if (lsval.at(0) == "message") { QString m = QUrl::fromPercentEncoding (lsval.at(1).toUtf8()); QMessageBox::warning (parent, tr("Information"), m); } } } //------------------------------------------------------------- // Lance l'étape 2 : Demande le contenu du fichier Grib //------------------------------------------------------------- if (status == "ok") { QString page; step = 2; QString s; s = tr("Total size : ") + QString("%1 ko").arg(fileSize/1024, 0); emit signalGribSendMessage(s); QTextStream(&page) << scriptpath <<"313O562/"<<fileName; emit signalGribStartLoadData(); QNetworkRequest request; request.setUrl (QUrl("http://"+host+page) ); reply_step2 = networkManager->get (request); connect (reply_step2, SIGNAL(downloadProgress (qint64,qint64)), this, SLOT(downloadProgress (qint64,qint64))); connect (reply_step2, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(slotNetworkError (QNetworkReply::NetworkError))); connect (reply_step2, SIGNAL(finished()), this, SLOT(slotFinished_step2 ())); } else { emit signalGribLoadError (status); downloadError = true; } } }
bool PictureContent::loadFromNetwork(const QString & url, QNetworkReply * reply, const QString & title, int width, int height) { dropNetworkConnection(); delete m_photo; m_cachedPhoto = QPixmap(); m_opaquePhoto = false; m_photo = 0; m_fileUrl = url; m_netWidth = width; m_netHeight = height; // start a download if not passed as a paramenter if (!reply) { // the QNAM will be auto-deleted on closure QNetworkAccessManager * nam = new QNetworkAccessManager(this); QNetworkRequest request(url); m_netReply = nam->get(request); } else m_netReply = reply; // set title if (!title.isEmpty()) { setFrameTextEnabled(true); setFrameText(title); } #if QT_VERSION >= 0x040600 // Immediate Decode: just handle the reply if done if (m_netReply->isFinished()) return slotLoadNetworkData(); #else // No Precaching ensures signals to be emitted later #endif // Deferred Decode: listen to the network job setAcceptHoverEvents(false); setControlsVisible(false); m_progress = 0.01; connect(m_netReply, SIGNAL(finished()), this, SLOT(slotLoadNetworkData())); connect(m_netReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(slotNetworkError())); connect(m_netReply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(slotNetworkProgress(qint64,qint64))); // reset size, if got the network one if (m_netWidth > 0 && m_netHeight > 0) resetContentsRatio(); return true; }
//------------------------------------------------------------------------------- void FileLoaderGRIB::getGribFile( float x0, float y0, float x1, float y1, float resolution, int interval, int days, bool wind, bool pressure, bool rain, bool cloud, bool temp, bool humid, bool isotherm0, bool tempMin, bool tempMax, bool snowDepth, bool snowCateg, bool frzRainCateg, bool CAPEsfc, bool altitudeData200, bool altitudeData300, bool altitudeData500, bool altitudeData700, bool altitudeData850, bool altitudeData925, bool cloudLayers, bool GUSTsfc, bool SUNSDsfc ) { QString page; step = 0; //---------------------------------------------------------------- // Etape 1 : Demande la création du fichier Grib (nom en retour) //---------------------------------------------------------------- QString parameters = ""; if (wind) { parameters += "W;"; } if (pressure) { parameters += "P;"; } if (rain) { parameters += "R;"; } if (cloud) { parameters += "C;"; } if (temp) { parameters += "T;"; } if (humid) { parameters += "H;"; } if (isotherm0) { parameters += "I;"; } if (tempMin) { parameters += "m;"; } if (tempMax) { parameters += "M;"; } if (snowDepth) { parameters += "S;"; } if (snowCateg) { parameters += "s;"; } if (frzRainCateg) { parameters += "Z;"; } if (CAPEsfc) { parameters += "c;"; } if (GUSTsfc) { parameters += "G;"; } if (SUNSDsfc) { parameters += "D;"; } if (altitudeData200) parameters += "2;"; if (altitudeData300) parameters += "3;"; if (altitudeData500) parameters += "5;"; if (altitudeData700) parameters += "7;"; if (altitudeData850) parameters += "8;"; if (altitudeData925) parameters += "9;"; if (cloudLayers) parameters += "L;"; if (Util::getSetting("downloadFnmocWW3_sig", false).toBool()) parameters += "w3sh;"; if (Util::getSetting("downloadFnmocWW3_max", false).toBool()) parameters += "w3mx;"; if (Util::getSetting("downloadFnmocWW3_swl", false).toBool()) parameters += "w3sw;"; if (Util::getSetting("downloadFnmocWW3_wnd", false).toBool()) parameters += "w3wn;"; if (Util::getSetting("downloadFnmocWW3_wcap", false).toBool()) parameters += "w3wc;"; if (Util::getSetting("downloadFnmocWW3_prim", false).toBool()) parameters += "w3pr;"; if (Util::getSetting("downloadFnmocWW3_scdy", false).toBool()) parameters += "w3sc;"; if (parameters.contains("w3")) { DataCenterModel waveDataModel = (DataCenterModel)(Util::getSetting("downloadFnmocWW3_DataModel", FNMOC_WW3_MED).toInt()); if (waveDataModel == FNMOC_WW3_MED) parameters += "w3med;"; else if (waveDataModel == FNMOC_WW3_GLB) parameters += "w3glb;"; else if (waveDataModel == NOAA_NCEP_WW3) parameters += "w3ncp;"; } if (parameters != "") { step = 1; emit signalGribSendMessage( tr("Make file on server... Please wait...")); emit signalGribReadProgress(step, 0, 0); QString phpfilename; phpfilename = scriptpath+"getzygribfile3.php?"; QString now = QTime::currentTime().toString("HHmmss"); QTextStream(&page) << phpfilename << "but=prepfile" << "&la1=" << floor(y0) << "&la2=" << ceil(y1) << "&lo1=" << floor(x0) << "&lo2=" << ceil(x1) << "&res=" << resolution << "&hrs=" << interval << "&jrs=" << days << "&par=" << parameters << "&l=" << zygriblog << "&m=" << zygribpwd << "&tm=" << now << "&client=" << Version::getCompleteName() ; bool stricthttp = Util::getSetting ("strictHttpDownload", false).toBool(); if (stricthttp) { QString zl = Util::encode(Util::decode(Util::getSetting("zyGribForumUserName", "").toString()),now); QString zp = Util::encode(Util::decode(Util::getSetting("zyGribForumUserPassword", "").toString()),now); QTextStream(&page) << "&zl=" << zl << "&zp=" << zp << "&md=h"; } QNetworkRequest request; request.setUrl (QUrl("http://"+host+page) ); if (! stricthttp) request.setRawHeader ("User-Agent", qPrintable(Version::getAppName()+"/"+Version::getVersion()) ); Util::validArea (request,x0,y0,x1,y1); reply_step1 = networkManager->get (request); connect (reply_step1, SIGNAL(downloadProgress (qint64,qint64)), this, SLOT(downloadProgress (qint64,qint64))); connect (reply_step1, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(slotNetworkError (QNetworkReply::NetworkError))); connect (reply_step1, SIGNAL(finished()), this, SLOT(slotFinished_step1 ())); } }