comparison src/gtkft.c @ 10919:9695281b1aa1

[gaim-migrate @ 12683] Better handling of filenames in file transfers when using a non-UTF8 filename encoding on the filesyste. This should fix a number of bugs. committer: Tailor Script <tailor@pidgin.im>
author Stu Tomlinson <stu@nosnilmot.com>
date Sun, 15 May 2005 18:16:20 +0000
parents 1012f463d2b9
children accfd1f1f80d
comparison
equal deleted inserted replaced
10918:893921a6cc6e 10919:9695281b1aa1
185 static void 185 static void
186 update_detailed_info(GaimGtkXferDialog *dialog, GaimXfer *xfer) 186 update_detailed_info(GaimGtkXferDialog *dialog, GaimXfer *xfer)
187 { 187 {
188 GaimGtkXferUiData *data; 188 GaimGtkXferUiData *data;
189 char *kbsec, *time_elapsed, *time_remaining; 189 char *kbsec, *time_elapsed, *time_remaining;
190 char *status; 190 char *status, *utf8;
191 191
192 if (dialog == NULL || xfer == NULL) 192 if (dialog == NULL || xfer == NULL)
193 return; 193 return;
194 194
195 data = GAIM_GTKXFER(xfer); 195 data = GAIM_GTKXFER(xfer);
238 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) { 238 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) {
239 gtk_label_set_text(GTK_LABEL(dialog->filename_label), 239 gtk_label_set_text(GTK_LABEL(dialog->filename_label),
240 gaim_xfer_get_filename(xfer)); 240 gaim_xfer_get_filename(xfer));
241 } else { 241 } else {
242 char *tmp; 242 char *tmp;
243
243 tmp = g_path_get_basename(gaim_xfer_get_local_filename(xfer)); 244 tmp = g_path_get_basename(gaim_xfer_get_local_filename(xfer));
244 gtk_label_set_text(GTK_LABEL(dialog->filename_label), tmp); 245 utf8 = g_filename_to_utf8(tmp, -1, NULL, NULL, NULL);
245 g_free(tmp); 246 g_free(tmp);
246 } 247
247 248 gtk_label_set_text(GTK_LABEL(dialog->filename_label), utf8);
248 gtk_label_set_text(GTK_LABEL(dialog->localfile_label), 249 g_free(utf8);
249 gaim_xfer_get_local_filename(xfer)); 250 }
251
252 utf8 = g_filename_to_utf8((gaim_xfer_get_local_filename(xfer)), -1, NULL, NULL, NULL);
253 gtk_label_set_text(GTK_LABEL(dialog->localfile_label), utf8);
254 g_free(utf8);
250 255
251 gtk_label_set_text(GTK_LABEL(dialog->status_label), status); 256 gtk_label_set_text(GTK_LABEL(dialog->status_label), status);
252 257
253 gtk_label_set_text(GTK_LABEL(dialog->speed_label), kbsec); 258 gtk_label_set_text(GTK_LABEL(dialog->speed_label), kbsec);
254 gtk_label_set_text(GTK_LABEL(dialog->time_elapsed_label), time_elapsed); 259 gtk_label_set_text(GTK_LABEL(dialog->time_elapsed_label), time_elapsed);
801 { 806 {
802 GaimGtkXferUiData *data; 807 GaimGtkXferUiData *data;
803 GaimXferType type; 808 GaimXferType type;
804 GdkPixbuf *pixbuf; 809 GdkPixbuf *pixbuf;
805 char *size_str, *remaining_str; 810 char *size_str, *remaining_str;
806 char *lfilename; 811 char *lfilename, *utf8;
807 812
808 g_return_if_fail(dialog != NULL); 813 g_return_if_fail(dialog != NULL);
809 g_return_if_fail(xfer != NULL); 814 g_return_if_fail(xfer != NULL);
810 815
811 gaim_xfer_ref(xfer); 816 gaim_xfer_ref(xfer);
829 : GAIM_STOCK_UPLOAD), 834 : GAIM_STOCK_UPLOAD),
830 GTK_ICON_SIZE_MENU, NULL); 835 GTK_ICON_SIZE_MENU, NULL);
831 836
832 gtk_list_store_append(dialog->model, &data->iter); 837 gtk_list_store_append(dialog->model, &data->iter);
833 lfilename = g_path_get_basename(gaim_xfer_get_local_filename(xfer)); 838 lfilename = g_path_get_basename(gaim_xfer_get_local_filename(xfer));
839 utf8 = g_filename_to_utf8(lfilename, -1, NULL, NULL, NULL);
840 g_free(lfilename);
841 lfilename = utf8;
834 gtk_list_store_set(dialog->model, &data->iter, 842 gtk_list_store_set(dialog->model, &data->iter,
835 COLUMN_STATUS, pixbuf, 843 COLUMN_STATUS, pixbuf,
836 COLUMN_PROGRESS, 0.0, 844 COLUMN_PROGRESS, 0.0,
837 COLUMN_FILENAME, (type == GAIM_XFER_RECEIVE) 845 COLUMN_FILENAME, (type == GAIM_XFER_RECEIVE)
838 ? gaim_xfer_get_filename(xfer) 846 ? gaim_xfer_get_filename(xfer)