Mercurial > pidgin
comparison src/gtkft.c @ 13598:41e40b323dc3
[gaim-migrate @ 15984]
Previously our file transfer dialog showed "time elapsed" as the current
time minus the time when the transfer was added to the ft dialog.
When sending a file, the transfer is added when you offer the file to
the remote user, not when the transfer actually starts. This meant the
"time elapsed" was longer than it should have been, which threw off the
transfer rate.
This should fix that.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 09 Apr 2006 17:38:38 +0000 |
parents | a0a4b44239e8 |
children | 3ac2d64a74a0 |
comparison
equal
deleted
inserted
replaced
13597:4d8927a4f1ef | 13598:41e40b323dc3 |
---|---|
82 }; | 82 }; |
83 | 83 |
84 typedef struct | 84 typedef struct |
85 { | 85 { |
86 GtkTreeIter iter; | 86 GtkTreeIter iter; |
87 time_t start_time; | |
88 time_t last_updated_time; | 87 time_t last_updated_time; |
89 time_t end_time; | |
90 gboolean in_list; | 88 gboolean in_list; |
91 | 89 |
92 char *name; | 90 char *name; |
93 | 91 |
94 } GaimGtkXferUiData; | 92 } GaimGtkXferUiData; |
119 double kbps = 0.0; | 117 double kbps = 0.0; |
120 time_t elapsed, now; | 118 time_t elapsed, now; |
121 | 119 |
122 data = GAIM_GTKXFER(xfer); | 120 data = GAIM_GTKXFER(xfer); |
123 | 121 |
124 if (data->end_time == -1 && | 122 if (xfer->end_time != 0) |
125 (gaim_xfer_is_canceled(xfer) || gaim_xfer_is_completed(xfer))) | 123 now = xfer->end_time; |
126 data->end_time = time(NULL); | |
127 | |
128 if (data->end_time != -1) | |
129 now = data->end_time; | |
130 else | 124 else |
131 now = time(NULL); | 125 now = time(NULL); |
132 | 126 |
133 kb_sent = gaim_xfer_get_bytes_sent(xfer) / 1024.0; | 127 kb_sent = gaim_xfer_get_bytes_sent(xfer) / 1024.0; |
134 kb_rem = gaim_xfer_get_bytes_remaining(xfer) / 1024.0; | 128 kb_rem = gaim_xfer_get_bytes_remaining(xfer) / 1024.0; |
135 elapsed = (now - data->start_time); | 129 elapsed = (xfer->start_time > 0 ? now - xfer->start_time : 0); |
136 kbps = (elapsed > 0 ? (kb_sent / elapsed) : 0); | 130 kbps = (elapsed > 0 ? (kb_sent / elapsed) : 0); |
137 | 131 |
138 if (kbsec != NULL) { | 132 if (kbsec != NULL) { |
139 *kbsec = g_strdup_printf(_("%.2f KB/s"), kbps); | 133 *kbsec = g_strdup_printf(_("%.2f KB/s"), kbps); |
140 } | 134 } |
141 | 135 |
142 if (time_elapsed != NULL) { | 136 if (time_elapsed != NULL) |
137 { | |
143 int h, m, s; | 138 int h, m, s; |
144 int secs_elapsed; | 139 int secs_elapsed; |
145 | 140 |
146 secs_elapsed = now - data->start_time; | 141 if (xfer->start_time > 0) |
147 | 142 { |
148 h = secs_elapsed / 3600; | 143 secs_elapsed = now - xfer->start_time; |
149 m = (secs_elapsed % 3600) / 60; | 144 |
150 s = secs_elapsed % 60; | 145 h = secs_elapsed / 3600; |
151 | 146 m = (secs_elapsed % 3600) / 60; |
152 *time_elapsed = g_strdup_printf("%d:%02d:%02d", h, m, s); | 147 s = secs_elapsed % 60; |
148 | |
149 *time_elapsed = g_strdup_printf("%d:%02d:%02d", h, m, s); | |
150 } | |
151 else | |
152 { | |
153 *time_elapsed = g_strdup(_("Not started")); | |
154 } | |
153 } | 155 } |
154 | 156 |
155 if (time_remaining != NULL) { | 157 if (time_remaining != NULL) { |
156 if (gaim_xfer_get_size(xfer) == 0) { | 158 if (gaim_xfer_get_size(xfer) == 0) { |
157 *time_remaining = g_strdup(_("Unknown")); | 159 *time_remaining = g_strdup(_("Unknown")); |
225 _("<b>Sending To:</b>")); | 227 _("<b>Sending To:</b>")); |
226 gtk_label_set_markup(GTK_LABEL(dialog->local_user_desc_label), | 228 gtk_label_set_markup(GTK_LABEL(dialog->local_user_desc_label), |
227 _("<b>Sending As:</b>")); | 229 _("<b>Sending As:</b>")); |
228 } | 230 } |
229 | 231 |
230 gtk_label_set_text(GTK_LABEL(dialog->local_user_label), | 232 gtk_label_set_text(GTK_LABEL(dialog->local_user_label), |
231 gaim_account_get_username(xfer->account)); | 233 gaim_account_get_username(xfer->account)); |
232 gtk_label_set_text(GTK_LABEL(dialog->remote_user_label), xfer->who); | 234 gtk_label_set_text(GTK_LABEL(dialog->remote_user_label), xfer->who); |
233 gtk_label_set_text(GTK_LABEL(dialog->protocol_label), | 235 gtk_label_set_text(GTK_LABEL(dialog->protocol_label), |
234 gaim_account_get_protocol_name(xfer->account)); | 236 gaim_account_get_protocol_name(xfer->account)); |
235 | 237 |
236 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) { | 238 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) { |
237 gtk_label_set_text(GTK_LABEL(dialog->filename_label), | 239 gtk_label_set_text(GTK_LABEL(dialog->filename_label), |
238 gaim_xfer_get_filename(xfer)); | 240 gaim_xfer_get_filename(xfer)); |
890 data = GAIM_GTKXFER(xfer); | 892 data = GAIM_GTKXFER(xfer); |
891 data->in_list = TRUE; | 893 data->in_list = TRUE; |
892 | 894 |
893 gaim_gtkxfer_dialog_show(dialog); | 895 gaim_gtkxfer_dialog_show(dialog); |
894 | 896 |
895 data->start_time = time(NULL); | |
896 data->last_updated_time = 0; | 897 data->last_updated_time = 0; |
897 data->end_time = -1; | |
898 | 898 |
899 type = gaim_xfer_get_type(xfer); | 899 type = gaim_xfer_get_type(xfer); |
900 | 900 |
901 size_str = gaim_str_size_to_units(gaim_xfer_get_size(xfer)); | 901 size_str = gaim_str_size_to_units(gaim_xfer_get_size(xfer)); |
902 remaining_str = gaim_str_size_to_units(gaim_xfer_get_bytes_remaining(xfer)); | 902 remaining_str = gaim_str_size_to_units(gaim_xfer_get_bytes_remaining(xfer)); |