Index: src/mozilla/ProgressListener2.cpp =================================================================== RCS file: /cvsroot/galeon/galeon/src/mozilla/Attic/ProgressListener2.cpp,v retrieving revision 1.37.2.19 diff -u -r1.37.2.19 ProgressListener2.cpp --- src/mozilla/ProgressListener2.cpp 24 May 2002 21:35:42 -0000 1.37.2.19 +++ src/mozilla/ProgressListener2.cpp 3 Jun 2002 20:33:14 -0000 @@ -93,6 +93,7 @@ GtkWidget *pause_button; GtkWidget *resume_button; GtkWidget *abort_button; + GtkWidget *statusbar; } DownloadDialogWidgets; /** @@ -106,6 +107,7 @@ gchar *elapsed; gchar *remaining; gfloat progress; + gfloat speed; } DetailsInfo; /* @@ -139,6 +141,7 @@ void download_dialog_keep_open_cb (GtkToggleButton *button, DownloadDialogWidgets *widgets); +void update_status_bar (void); static void selection_changed (DownloadDialogWidgets *widgets); } @@ -754,6 +757,7 @@ statusstr, buffer); g_free (statusstr); statusstr = tmp; + dinfo->speed = (float)currentKRate; } else { @@ -761,6 +765,7 @@ tmp = g_strdup_printf (_("%s at KB/s"), statusstr); g_free (statusstr); statusstr = tmp; + dinfo->speed = 0.0f; } g_free (dinfo->status); @@ -784,6 +789,7 @@ gtk_clist_set_text (clist, row, COL_REMAINING, "??"); g_free (dinfo->remaining); dinfo->remaining = g_strdup ("??"); + dinfo->speed = 0.0f; } /* thaw the list to show updates */ @@ -792,6 +798,7 @@ /* make sure buttons are up to date */ selection_changed (dialog); + update_status_bar(); /* done */ return NS_OK; } @@ -889,6 +896,8 @@ g_free (dinfo); g_hash_table_remove (details_hash, this); + update_status_bar(); + /* if there are no more windows left, exit galeon */ if (g_list_length (all_windows) == 0 && !galeon_server_mode && window_count == 0) @@ -1045,6 +1054,7 @@ dialog->pause_button = glade_xml_get_widget (gxml, "pause_button"); dialog->resume_button = glade_xml_get_widget (gxml, "resume_button"); dialog->abort_button = glade_xml_get_widget (gxml, "abort_button"); + dialog->statusbar = glade_xml_get_widget (gxml, "statusbar"); /* dispense with XML interface */ gtk_object_unref (GTK_OBJECT (gxml)); @@ -1411,4 +1421,33 @@ } return TRUE; +} + +void update_status_bar (void) +{ + GtkCList *clist = GTK_CLIST (dialog->clist); + GProgressListener2 *Progress; + int row; + float total_speed = 0.0f; + gchar *tmp; + /* iterate over whole list */ + for (row = 0; row < clist->rows; row++) + { + DetailsInfo *dinfo; + + /* get this row */ + Progress = (GProgressListener2 *) + gtk_clist_get_row_data (clist, row); + dinfo = (DetailsInfo *) + g_hash_table_lookup (details_hash, Progress); + total_speed += dinfo->speed; + + } + tmp = g_strdup_printf (_("%d download(s) at %5.2f KB/s"), clist->rows, total_speed); + + gtk_statusbar_pop(GTK_STATUSBAR(dialog->statusbar), 1); + if(clist->rows > 0) + gtk_statusbar_push(GTK_STATUSBAR(dialog->statusbar), 1, tmp); + + g_free(tmp); } Index: ui/galeon.glade =================================================================== RCS file: /cvsroot/galeon/galeon/ui/galeon.glade,v retrieving revision 1.127.2.9 diff -u -r1.127.2.9 galeon.glade --- ui/galeon.glade 26 May 2002 04:05:40 -0000 1.127.2.9 +++ ui/galeon.glade 3 Jun 2002 20:33:28 -0000 @@ -3705,6 +3705,17 @@ 5 + GtkStatusbar + statusbar + + 0 + False + False + GTK_PACK_END + + + + GtkHButtonBox GnomeDialog:action_area hbuttonbox10