comparison src/gtkft.c @ 9017:8db7732df1fd

[gaim-migrate @ 9793] (15:53:18) SimGuy: it makes the elapsed time stop counting after the transfer ends, makes the transfer update when it is canceled so the detail view reflects that, and prevents gaim from showing odd negative times remaining if the transfer hasn't started yet committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Sat, 22 May 2004 19:55:39 +0000
parents e4087b5c0627
children 72c88ac84afa
comparison
equal deleted inserted replaced
9016:53c1e635f11d 9017:8db7732df1fd
80 typedef struct 80 typedef struct
81 { 81 {
82 GtkWidget *filesel; 82 GtkWidget *filesel;
83 GtkTreeIter iter; 83 GtkTreeIter iter;
84 time_t start_time; 84 time_t start_time;
85 time_t end_time;
85 gboolean in_list; 86 gboolean in_list;
86 87
87 char *name; 88 char *name;
88 89
89 } GaimGtkXferUiData; 90 } GaimGtkXferUiData;
119 double kbps = 0.0; 120 double kbps = 0.0;
120 time_t elapsed, now; 121 time_t elapsed, now;
121 122
122 data = GAIM_GTKXFER(xfer); 123 data = GAIM_GTKXFER(xfer);
123 124
124 now = time(NULL); 125 if (data->end_time == -1 &&
126 (gaim_xfer_is_canceled(xfer) || gaim_xfer_is_completed(xfer)))
127 data->end_time = time(NULL);
128
129 if (data->end_time != -1)
130 now = data->end_time;
131 else
132 now = time(NULL);
125 133
126 kb_sent = gaim_xfer_get_bytes_sent(xfer) / 1024.0; 134 kb_sent = gaim_xfer_get_bytes_sent(xfer) / 1024.0;
127 kb_rem = gaim_xfer_get_bytes_remaining(xfer) / 1024.0; 135 kb_rem = gaim_xfer_get_bytes_remaining(xfer) / 1024.0;
128 elapsed = (now - data->start_time); 136 elapsed = (now - data->start_time);
129 kbps = (elapsed > 0 ? (kb_sent / elapsed) : 0); 137 kbps = (elapsed > 0 ? (kb_sent / elapsed) : 0);
152 if (gaim_xfer_get_size(xfer) == 0) { 160 if (gaim_xfer_get_size(xfer) == 0) {
153 *time_remaining = g_strdup(_("Unknown")); 161 *time_remaining = g_strdup(_("Unknown"));
154 } 162 }
155 else if (gaim_xfer_is_completed(xfer)) { 163 else if (gaim_xfer_is_completed(xfer)) {
156 *time_remaining = g_strdup(_("Finished")); 164 *time_remaining = g_strdup(_("Finished"));
165 }
166 else if (gaim_xfer_is_canceled(xfer)) {
167 *time_remaining = g_strdup(_("Canceled"));
168 }
169 else if (kb_sent <= 0) {
170 *time_remaining = g_strdup(_("Waiting for transfer to begin"));
157 } 171 }
158 else { 172 else {
159 int h, m, s; 173 int h, m, s;
160 int secs_remaining; 174 int secs_remaining;
161 175
803 data->in_list = TRUE; 817 data->in_list = TRUE;
804 818
805 gaim_gtkxfer_dialog_show(dialog); 819 gaim_gtkxfer_dialog_show(dialog);
806 820
807 data->start_time = time(NULL); 821 data->start_time = time(NULL);
822 data->end_time = -1;
808 823
809 type = gaim_xfer_get_type(xfer); 824 type = gaim_xfer_get_type(xfer);
810 825
811 size_str = gaim_str_size_to_units(gaim_xfer_get_size(xfer)); 826 size_str = gaim_str_size_to_units(gaim_xfer_get_size(xfer));
812 remaining_str = gaim_str_size_to_units(gaim_xfer_get_bytes_remaining(xfer)); 827 remaining_str = gaim_str_size_to_units(gaim_xfer_get_bytes_remaining(xfer));
898 return; 913 return;
899 } 914 }
900 915
901 data = GAIM_GTKXFER(xfer); 916 data = GAIM_GTKXFER(xfer);
902 917
918 update_detailed_info(dialog, xfer);
919
903 pixbuf = gtk_widget_render_icon(dialog->window, 920 pixbuf = gtk_widget_render_icon(dialog->window,
904 GAIM_STOCK_FILE_CANCELED, 921 GAIM_STOCK_FILE_CANCELED,
905 GTK_ICON_SIZE_MENU, NULL); 922 GTK_ICON_SIZE_MENU, NULL);
906 923
907 if (gaim_xfer_get_status(xfer) == GAIM_XFER_STATUS_CANCEL_LOCAL) 924 if (gaim_xfer_get_status(xfer) == GAIM_XFER_STATUS_CANCEL_LOCAL)