示例#1
0
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& )) );
    }
示例#2
0
//-------------------------------------------------------------------------------
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;
		}
	}
}
示例#3
0
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;
}
示例#4
0
//-------------------------------------------------------------------------------
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 ()));
    }
}