示例#1
0
void muFrame::OnUpdatingProgress(UpdaterEvent& event)
{
	if( event.GetExtraLong() > 0.0f )
		m_updatingProgress = wxDouble(event.GetInt()) / wxDouble(event.GetExtraLong());
	else
		m_updatingProgress = 0.0f;

	DisplayUpdatingProgress();
	if( !event.GetString().IsEmpty() )
		wxLogVerbose(wxT("[Updater] %s"), event.GetString().c_str());

	if( m_updatingProgress > 0 )
	{
		double dlnow = event.GetInt();
		double dltotal = event.GetExtraLong();
		static wxStopWatch eventWatch;
		static double lastdl = 0;

		double dldelta = dlnow - lastdl;
		dldelta /= 1024.0f;
		lastdl = dlnow;

		eventWatch.Pause();
		double speed = 0;
		if( eventWatch.Time() > 0.0f )
			speed = dldelta / eventWatch.Time();
		eventWatch.Start();

		static double speedAvg = 0.0f;
		if( speed >= 0.0f )
			speedAvg = (speedAvg*0.95f + speed*0.05f);

		wxString remainingText = wxT("?");
		if( speedAvg > 0 )
		{
			double secondsRemaining = (dltotal-dlnow) / 1024.0f / (speedAvg * 1000.0f);
			wxTimeSpan span = wxTimeSpan::Seconds(secondsRemaining);
			remainingText = span.Format();
		}

		// update label every second only
		static wxStopWatch limitWatch;
		limitWatch.Pause();
		if( limitWatch.Time() > 1000 )
		{
			m_detailsLabel->SetLabel(wxString::Format(	
				wxT("Downloading Gunreal v%i... %s remaining (%03.1lf MB at %0.0lf KB/s)")
				, m_latestVersion
				, remainingText.c_str()
				, dltotal / 1024.0f / 1024.0f
				, speedAvg * 1000.0f
				));

			limitWatch.Start();
		}
		else
			limitWatch.Resume();
	}
}
示例#2
0
void muFrame::OnUpdatingProgress(UpdaterEvent& event)
{
	if( event.GetExtraLong() > 0.0f )
		m_updatingProgress = wxDouble(event.GetInt()) / wxDouble(event.GetExtraLong());
	else
		m_updatingProgress = 0.0f;

	DisplayUpdatingProgress();
	if( !event.GetString().IsEmpty() )
		wxLogVerbose(event.GetString());

	if( m_updatingProgress > 0 )
	{
		double dlnow = event.GetInt();
		//double dltotal = event.GetExtraLong();
		static wxStopWatch eventWatch;
		static double lastdl = 0;

		double dldelta = dlnow - lastdl;
		dldelta /= 1024;
		lastdl = dlnow;

		eventWatch.Pause();
		double speed = 0;
		if( eventWatch.Time() > 0.0f )
			speed = dldelta / eventWatch.Time() * 1000.0f;
		eventWatch.Start();

		static double speedAvg = 0.0f;
		if( speed >= 0.0f )
			speedAvg = (speedAvg*0.95f + speed*0.05f);

		// update label every second only
		static wxStopWatch limitWatch;
		limitWatch.Pause();
		if( limitWatch.Time() > 1000 )
		{
			m_detailsLabel->SetLabel(wxString::Format(
				wxT("Downloading Gunreal v%i - %0.1lf%% at %0.0lfKb/s...")
				, m_latestVersion, m_updatingProgress*100.0f, speedAvg));
			
			limitWatch.Start();
		}
		else
			limitWatch.Resume();
	}
}