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));