comparison pidgin/gtkft.c @ 32672:3828a61c44da

A boring and large patch so I can merge heads.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Fri, 23 Dec 2011 08:21:58 +0000
parents e2c6e4fc3c84
children
comparison
equal deleted inserted replaced
32671:0e69949b3e61 32672:3828a61c44da
35 #include "gtkft.h" 35 #include "gtkft.h"
36 #include "prefs.h" 36 #include "prefs.h"
37 #include "pidginstock.h" 37 #include "pidginstock.h"
38 #include "gtkutils.h" 38 #include "gtkutils.h"
39 39
40 #define PIDGINXFER(xfer) \
41 (PidginXferUiData *)(xfer)->ui_data
42
43 /* the maximum size of files we will try to make a thumbnail for */ 40 /* the maximum size of files we will try to make a thumbnail for */
44 #define PIDGIN_XFER_MAX_SIZE_IMAGE_THUMBNAIL 10 * 1024 * 1024 41 #define PIDGIN_XFER_MAX_SIZE_IMAGE_THUMBNAIL 10 * 1024 * 1024
45 42
46 struct _PidginXferDialog 43 struct _PidginXferDialog
47 { 44 {
114 { 111 {
115 double kb_sent, kb_rem; 112 double kb_sent, kb_rem;
116 double kbps = 0.0; 113 double kbps = 0.0;
117 time_t elapsed, now; 114 time_t elapsed, now;
118 115
119 if (xfer->end_time != 0) 116 now = purple_xfer_get_end_time(xfer);
120 now = xfer->end_time; 117 if (now == 0)
121 else
122 now = time(NULL); 118 now = time(NULL);
123 119
124 kb_sent = purple_xfer_get_bytes_sent(xfer) / 1024.0; 120 kb_sent = purple_xfer_get_bytes_sent(xfer) / 1024.0;
125 kb_rem = purple_xfer_get_bytes_remaining(xfer) / 1024.0; 121 kb_rem = purple_xfer_get_bytes_remaining(xfer) / 1024.0;
126 elapsed = (xfer->start_time > 0 ? now - xfer->start_time : 0); 122 elapsed = purple_xfer_get_start_time(xfer);
123 if (elapsed > 0)
124 elapsed = now - elapsed;
125 else
126 elapsed = 0;
127 kbps = (elapsed > 0 ? (kb_sent / elapsed) : 0); 127 kbps = (elapsed > 0 ? (kb_sent / elapsed) : 0);
128 128
129 if (kbsec != NULL) { 129 if (kbsec != NULL) {
130 *kbsec = g_strdup_printf(_("%.2f KiB/s"), kbps); 130 *kbsec = g_strdup_printf(_("%.2f KiB/s"), kbps);
131 } 131 }
133 if (time_elapsed != NULL) 133 if (time_elapsed != NULL)
134 { 134 {
135 int h, m, s; 135 int h, m, s;
136 int secs_elapsed; 136 int secs_elapsed;
137 137
138 if (xfer->start_time > 0) 138 if (purple_xfer_get_start_time(xfer) > 0)
139 { 139 {
140 secs_elapsed = now - xfer->start_time; 140 secs_elapsed = now - purple_xfer_get_start_time(xfer);
141 141
142 h = secs_elapsed / 3600; 142 h = secs_elapsed / 3600;
143 m = (secs_elapsed % 3600) / 60; 143 m = (secs_elapsed % 3600) / 60;
144 s = secs_elapsed % 60; 144 s = secs_elapsed % 60;
145 145
153 153
154 if (time_remaining != NULL) { 154 if (time_remaining != NULL) {
155 if (purple_xfer_is_completed(xfer)) { 155 if (purple_xfer_is_completed(xfer)) {
156 *time_remaining = g_strdup(_("Finished")); 156 *time_remaining = g_strdup(_("Finished"));
157 } 157 }
158 else if (purple_xfer_is_canceled(xfer)) { 158 else if (purple_xfer_is_cancelled(xfer)) {
159 *time_remaining = g_strdup(_("Cancelled")); 159 *time_remaining = g_strdup(_("Cancelled"));
160 } 160 }
161 else if (purple_xfer_get_size(xfer) == 0 || (kb_sent > 0 && kbps == 0)) { 161 else if (purple_xfer_get_size(xfer) == 0 || (kb_sent > 0 && kbps == 0)) {
162 *time_remaining = g_strdup(_("Unknown")); 162 *time_remaining = g_strdup(_("Unknown"));
163 } 163 }
241 char *status, *utf8; 241 char *status, *utf8;
242 242
243 if (dialog == NULL || xfer == NULL) 243 if (dialog == NULL || xfer == NULL)
244 return; 244 return;
245 245
246 data = PIDGINXFER(xfer); 246 data = purple_xfer_get_ui_data(xfer);
247 247
248 get_xfer_info_strings(xfer, &kbsec, &time_elapsed, &time_remaining); 248 get_xfer_info_strings(xfer, &kbsec, &time_elapsed, &time_remaining);
249 249
250 status = g_strdup_printf("%d%% (%" G_GSIZE_FORMAT " of %" G_GSIZE_FORMAT " bytes)", 250 status = g_strdup_printf("%d%% (%" G_GOFFSET_FORMAT " of %" G_GOFFSET_FORMAT " bytes)",
251 (int)(purple_xfer_get_progress(xfer)*100), 251 (int)(purple_xfer_get_progress(xfer)*100),
252 purple_xfer_get_bytes_sent(xfer), 252 purple_xfer_get_bytes_sent(xfer),
253 purple_xfer_get_size(xfer)); 253 purple_xfer_get_size(xfer));
254 254
255 if (purple_xfer_is_completed(xfer)) { 255 if (purple_xfer_is_completed(xfer)) {
279 gtk_label_set_markup(GTK_LABEL(dialog->local_user_desc_label), 279 gtk_label_set_markup(GTK_LABEL(dialog->local_user_desc_label),
280 _("<b>Sending As:</b>")); 280 _("<b>Sending As:</b>"));
281 } 281 }
282 282
283 gtk_label_set_text(GTK_LABEL(dialog->local_user_label), 283 gtk_label_set_text(GTK_LABEL(dialog->local_user_label),
284 purple_account_get_username(xfer->account)); 284 purple_account_get_username(purple_xfer_get_account(xfer)));
285 gtk_label_set_text(GTK_LABEL(dialog->remote_user_label), xfer->who); 285 gtk_label_set_text(GTK_LABEL(dialog->remote_user_label), purple_xfer_get_remote_user(xfer));
286 gtk_label_set_text(GTK_LABEL(dialog->protocol_label), 286 gtk_label_set_text(GTK_LABEL(dialog->protocol_label),
287 purple_account_get_protocol_name(xfer->account)); 287 purple_account_get_protocol_name(purple_xfer_get_account(xfer)));
288 288
289 if (purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE) { 289 if (purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE) {
290 gtk_label_set_text(GTK_LABEL(dialog->filename_label), 290 gtk_label_set_text(GTK_LABEL(dialog->filename_label),
291 purple_xfer_get_filename(xfer)); 291 purple_xfer_get_filename(xfer));
292 } else { 292 } else {
355 gtk_widget_set_sensitive (dialog->open_button, FALSE); 355 gtk_widget_set_sensitive (dialog->open_button, FALSE);
356 } 356 }
357 #endif 357 #endif
358 358
359 gtk_widget_set_sensitive(dialog->remove_button, TRUE); 359 gtk_widget_set_sensitive(dialog->remove_button, TRUE);
360 } else if (purple_xfer_is_canceled(xfer)) { 360 } else if (purple_xfer_is_cancelled(xfer)) {
361 gtk_widget_hide(dialog->stop_button); 361 gtk_widget_hide(dialog->stop_button);
362 gtk_widget_show(dialog->remove_button); 362 gtk_widget_show(dialog->remove_button);
363 363
364 gtk_widget_set_sensitive(dialog->open_button, FALSE); 364 gtk_widget_set_sensitive(dialog->open_button, FALSE);
365 365
730 vbox2 = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); 730 vbox2 = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
731 gtk_box_pack_start(GTK_BOX(vbox1), vbox2, TRUE, TRUE, 0); 731 gtk_box_pack_start(GTK_BOX(vbox1), vbox2, TRUE, TRUE, 0);
732 gtk_widget_show(vbox2); 732 gtk_widget_show(vbox2);
733 733
734 /* Setup the listbox */ 734 /* Setup the listbox */
735 gtk_box_pack_start(GTK_BOX(vbox2), 735 gtk_box_pack_start(GTK_BOX(vbox2),
736 pidgin_make_scrollable(setup_tree(dialog), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC, GTK_SHADOW_IN, -1, 140), 736 pidgin_make_scrollable(setup_tree(dialog), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC, GTK_SHADOW_IN, -1, 140),
737 TRUE, TRUE, 0); 737 TRUE, TRUE, 0);
738 738
739 /* "Close this window when all transfers finish" */ 739 /* "Close this window when all transfers finish" */
740 checkbox = gtk_check_button_new_with_mnemonic( 740 checkbox = gtk_check_button_new_with_mnemonic(
741 _("Close this window when all transfers _finish")); 741 _("Close this window when all transfers _finish"));
867 g_return_if_fail(dialog != NULL); 867 g_return_if_fail(dialog != NULL);
868 g_return_if_fail(xfer != NULL); 868 g_return_if_fail(xfer != NULL);
869 869
870 purple_xfer_ref(xfer); 870 purple_xfer_ref(xfer);
871 871
872 data = PIDGINXFER(xfer); 872 data = purple_xfer_get_ui_data(xfer);
873 data->in_list = TRUE; 873 data->in_list = TRUE;
874 874
875 pidgin_xfer_dialog_show(dialog); 875 pidgin_xfer_dialog_show(dialog);
876 876
877 data->last_updated_time = 0; 877 data->last_updated_time = 0;
924 PidginXferUiData *data; 924 PidginXferUiData *data;
925 925
926 g_return_if_fail(dialog != NULL); 926 g_return_if_fail(dialog != NULL);
927 g_return_if_fail(xfer != NULL); 927 g_return_if_fail(xfer != NULL);
928 928
929 data = PIDGINXFER(xfer); 929 data = purple_xfer_get_ui_data(xfer);
930 930
931 if (data == NULL) 931 if (data == NULL)
932 return; 932 return;
933 933
934 if (!data->in_list) 934 if (!data->in_list)
955 const gchar *status; 955 const gchar *status;
956 956
957 g_return_if_fail(dialog != NULL); 957 g_return_if_fail(dialog != NULL);
958 g_return_if_fail(xfer != NULL); 958 g_return_if_fail(xfer != NULL);
959 959
960 data = PIDGINXFER(xfer); 960 data = purple_xfer_get_ui_data(xfer);
961 961
962 if (data == NULL) 962 if (data == NULL)
963 return; 963 return;
964 964
965 if (!data->in_list) 965 if (!data->in_list)
968 if ((purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_CANCEL_LOCAL) && (dialog->auto_clear)) { 968 if ((purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_CANCEL_LOCAL) && (dialog->auto_clear)) {
969 pidgin_xfer_dialog_remove_xfer(dialog, xfer); 969 pidgin_xfer_dialog_remove_xfer(dialog, xfer);
970 return; 970 return;
971 } 971 }
972 972
973 data = PIDGINXFER(xfer); 973 data = purple_xfer_get_ui_data(xfer);
974 974
975 update_detailed_info(dialog, xfer); 975 update_detailed_info(dialog, xfer);
976 update_title_progress(dialog); 976 update_title_progress(dialog);
977 977
978 pixbuf = gtk_widget_render_icon(dialog->window, 978 pixbuf = gtk_widget_render_icon(dialog->window,
979 PIDGIN_STOCK_FILE_CANCELED, 979 PIDGIN_STOCK_FILE_CANCELED,
980 GTK_ICON_SIZE_MENU, NULL); 980 GTK_ICON_SIZE_MENU, NULL);
981 981
982 if (purple_xfer_is_canceled(xfer)) 982 if (purple_xfer_is_cancelled(xfer))
983 status = _("Cancelled"); 983 status = _("Cancelled");
984 else 984 else
985 status = _("Failed"); 985 status = _("Failed");
986 986
987 gtk_list_store_set(dialog->model, &data->iter, 987 gtk_list_store_set(dialog->model, &data->iter,
1005 gboolean valid; 1005 gboolean valid;
1006 1006
1007 g_return_if_fail(dialog != NULL); 1007 g_return_if_fail(dialog != NULL);
1008 g_return_if_fail(xfer != NULL); 1008 g_return_if_fail(xfer != NULL);
1009 1009
1010 if ((data = PIDGINXFER(xfer)) == NULL) 1010 if ((data = purple_xfer_get_ui_data(xfer)) == NULL)
1011 return; 1011 return;
1012 1012
1013 if (data->in_list == FALSE) 1013 if (data->in_list == FALSE)
1014 return; 1014 return;
1015 1015
1093 static void 1093 static void
1094 pidgin_xfer_new_xfer(PurpleXfer *xfer) 1094 pidgin_xfer_new_xfer(PurpleXfer *xfer)
1095 { 1095 {
1096 PidginXferUiData *data; 1096 PidginXferUiData *data;
1097 1097
1098 /* This is where we're setting xfer->ui_data for the first time. */ 1098 /* This is where we're setting xfer's "ui_data" for the first time. */
1099 data = g_new0(PidginXferUiData, 1); 1099 data = g_new0(PidginXferUiData, 1);
1100 xfer->ui_data = data; 1100 purple_xfer_set_ui_data(xfer, data);
1101 } 1101 }
1102 1102
1103 static void 1103 static void
1104 pidgin_xfer_destroy(PurpleXfer *xfer) 1104 pidgin_xfer_destroy(PurpleXfer *xfer)
1105 { 1105 {
1106 PidginXferUiData *data; 1106 PidginXferUiData *data;
1107 1107
1108 data = PIDGINXFER(xfer); 1108 data = purple_xfer_get_ui_data(xfer);
1109 if (data) { 1109 if (data) {
1110 g_free(data->name); 1110 g_free(data->name);
1111 g_free(data); 1111 g_free(data);
1112 xfer->ui_data = NULL; 1112 purple_xfer_set_ui_data(xfer, NULL);
1113 } 1113 }
1114 } 1114 }
1115 1115
1116 static void 1116 static void
1117 pidgin_xfer_add_xfer(PurpleXfer *xfer) 1117 pidgin_xfer_add_xfer(PurpleXfer *xfer)