Nicer handling of the progress bar and status

This commit is contained in:
Pierre Pronchery 2009-02-23 14:58:45 +00:00
parent 71580f6f56
commit c42f8665dc
2 changed files with 18 additions and 8 deletions

View File

@ -502,7 +502,7 @@ static gboolean _stream_load_idle_directory(GHtmlConn * conn)
#endif #endif
html_stream_write(conn->stream, tail, sizeof(tail) - 1); html_stream_write(conn->stream, tail, sizeof(tail) - 1);
closedir(dir); closedir(dir);
surfer_set_progress(conn->ghtml->surfer, 1.0); surfer_set_progress(conn->ghtml->surfer, -1.0);
surfer_set_status(conn->ghtml->surfer, "Ready"); surfer_set_status(conn->ghtml->surfer, "Ready");
} }
_ghtmlconn_delete(conn); _ghtmlconn_delete(conn);
@ -577,8 +577,8 @@ static gboolean _stream_load_watch_file(GIOChannel * source,
static gboolean _stream_load_idle_http(GHtmlConn * conn) static gboolean _stream_load_idle_http(GHtmlConn * conn)
{ {
surfer_set_progress(conn->ghtml->surfer, 0.0); surfer_set_progress(conn->ghtml->surfer, -1.0);
surfer_set_status(conn->ghtml->surfer, "Downloading..."); surfer_set_status(conn->ghtml->surfer, "Resolving...");
conn->http = gnet_conn_http_new(); conn->http = gnet_conn_http_new();
gnet_conn_http_set_uri(conn->http, conn->url); gnet_conn_http_set_uri(conn->http, conn->url);
gnet_conn_http_set_user_agent(conn->http, "DeforaOS " PACKAGE); gnet_conn_http_set_user_agent(conn->http, "DeforaOS " PACKAGE);
@ -672,7 +672,7 @@ static void _http_error(GConnHttpEventError * event, GHtmlConn * conn)
snprintf(buf, sizeof(buf), "%s %u", "Error", event->code); snprintf(buf, sizeof(buf), "%s %u", "Error", event->code);
surfer_error(conn->ghtml->surfer, buf, 0); surfer_error(conn->ghtml->surfer, buf, 0);
surfer_set_progress(conn->ghtml->surfer, 0.0); surfer_set_progress(conn->ghtml->surfer, -1.0);
surfer_set_status(conn->ghtml->surfer, "Ready"); surfer_set_status(conn->ghtml->surfer, "Ready");
_ghtmlconn_delete(conn); _ghtmlconn_delete(conn);
} }
@ -682,7 +682,14 @@ static void _http_resolved(GConnHttpEventResolved * event, GHtmlConn * conn)
char buf[256]; char buf[256];
char * name; char * name;
if((name = gnet_inetaddr_get_name_nonblock(event->ia)) == NULL) if(event->ia == NULL)
{
surfer_set_progress(conn->ghtml->surfer, -1.0);
surfer_set_status(conn->ghtml->surfer, "Ready");
surfer_error(conn->ghtml->surfer, "Unknown host", 0);
_ghtmlconn_delete(conn);
}
else if((name = gnet_inetaddr_get_name_nonblock(event->ia)) == NULL)
surfer_set_status(conn->ghtml->surfer, "Connecting..."); surfer_set_status(conn->ghtml->surfer, "Connecting...");
else else
{ {
@ -695,7 +702,7 @@ static void _http_resolved(GConnHttpEventResolved * event, GHtmlConn * conn)
static void _http_timeout(GHtmlConn * conn) static void _http_timeout(GHtmlConn * conn)
{ {
surfer_error(conn->ghtml->surfer, "Timed out", 0); surfer_error(conn->ghtml->surfer, "Timed out", 0);
surfer_set_progress(conn->ghtml->surfer, 0.0); surfer_set_progress(conn->ghtml->surfer, -1.0);
surfer_set_status(conn->ghtml->surfer, "Ready"); surfer_set_status(conn->ghtml->surfer, "Ready");
_ghtmlconn_delete(conn); _ghtmlconn_delete(conn);
} }

View File

@ -303,9 +303,12 @@ void surfer_delete(Surfer * surfer)
/* surfer_set_progress */ /* surfer_set_progress */
void surfer_set_progress(Surfer * surfer, gdouble fraction) void surfer_set_progress(Surfer * surfer, gdouble fraction)
{ {
char buf[10]; char buf[10] = "";
snprintf(buf, sizeof(buf), "%.1f%%", fraction * 100); if(fraction >= 0.0 && fraction <= 1.0)
snprintf(buf, sizeof(buf), "%.1f%%", fraction * 100);
else
fraction = 0.0;
gtk_progress_bar_set_text(GTK_PROGRESS_BAR(surfer->progress), buf); gtk_progress_bar_set_text(GTK_PROGRESS_BAR(surfer->progress), buf);
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(surfer->progress), gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(surfer->progress),
fraction); fraction);