diff src/gtkft.c @ 7738:b14442b31a9b

[gaim-migrate @ 8383] This patch from Tim R. (I'll remember your last name next time), snazzes up the file transfer dialog a bit. I also went in and hacked on gtkcellrenderer a bit, so that if you expand the column, the renderer will grow. committer: Tailor Script <tailor@pidgin.im>
author Sean Egan <seanegan@gmail.com>
date Thu, 04 Dec 2003 05:58:26 +0000
parents 02f697df677b
children 5f0bb52c0609
line wrap: on
line diff
--- a/src/gtkft.c	Thu Dec 04 05:31:54 2003 +0000
+++ b/src/gtkft.c	Thu Dec 04 05:58:26 2003 +0000
@@ -204,8 +204,15 @@
 
 	gtk_label_set_text(GTK_LABEL(dialog->user_label), xfer->who);
 
-	gtk_label_set_text(GTK_LABEL(dialog->filename_label),
+	if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) {
+		gtk_label_set_text(GTK_LABEL(dialog->filename_label),
 					   gaim_xfer_get_filename(xfer));
+	} else {
+		char *tmp;
+		tmp = g_path_get_basename(gaim_xfer_get_local_filename(xfer));
+		gtk_label_set_text(GTK_LABEL(dialog->filename_label), tmp);
+		g_free(tmp);
+	}
 
 	gtk_label_set_text(GTK_LABEL(dialog->status_label), status);
 
@@ -251,8 +258,16 @@
 		gtk_widget_set_sensitive(dialog->resume_button, FALSE);
 
 		gtk_widget_set_sensitive(dialog->remove_button, TRUE);
-	}
-	else {
+	} else if (gaim_xfer_is_canceled(xfer)) {
+		gtk_widget_hide(dialog->stop_button);
+		gtk_widget_show(dialog->remove_button);
+
+		gtk_widget_set_sensitive(dialog->open_button,  FALSE);
+		gtk_widget_set_sensitive(dialog->pause_button,  FALSE);
+		gtk_widget_set_sensitive(dialog->resume_button, FALSE);
+
+		gtk_widget_set_sensitive(dialog->remove_button, TRUE);
+	} else {
 		gtk_widget_show(dialog->stop_button);
 		gtk_widget_hide(dialog->remove_button);
 
@@ -604,8 +619,8 @@
 	gtk_widget_show(checkbox);
 
 	/* "Download Details" arrow */
-	disclosure = gaim_disclosure_new(_("Show download details"),
-									 _("Hide download details"));
+	disclosure = gaim_disclosure_new(_("Show transfer details"),
+									 _("Hide transfer details"));
 	dialog->disclosure = disclosure;
 	gtk_box_pack_start(GTK_BOX(vbox2), disclosure, FALSE, FALSE, 0);
 	gtk_widget_show(disclosure);
@@ -746,6 +761,7 @@
 	GaimXferType type;
 	GdkPixbuf *pixbuf;
 	char *size_str, *remaining_str;
+	char *lfilename;
 
 	g_return_if_fail(dialog != NULL);
 	g_return_if_fail(xfer != NULL);
@@ -768,14 +784,18 @@
 									GTK_ICON_SIZE_MENU, NULL);
 
 	gtk_list_store_append(dialog->model, &data->iter);
+	lfilename = g_path_get_basename(gaim_xfer_get_local_filename(xfer));
 	gtk_list_store_set(dialog->model, &data->iter,
 					   COLUMN_STATUS, pixbuf,
 					   COLUMN_PROGRESS, 0.0,
-					   COLUMN_FILENAME, gaim_xfer_get_filename(xfer),
+					   COLUMN_FILENAME, (type == GAIM_XFER_RECEIVE)
+					                     ? gaim_xfer_get_filename(xfer)
+							     : lfilename,
 					   COLUMN_SIZE, size_str,
 					   COLUMN_REMAINING, remaining_str,
 					   COLUMN_DATA, xfer,
 					   -1);
+	g_free(lfilename);
 
 	gtk_tree_view_columns_autosize(GTK_TREE_VIEW(dialog->tree));
 
@@ -823,9 +843,9 @@
 								GaimXfer *xfer)
 {
 	GaimGtkXferUiData *data;
-#if 0
 	GdkPixbuf *pixbuf;
-#endif
+	gchar *status;
+
 
 	g_return_if_fail(dialog != NULL);
 	g_return_if_fail(xfer != NULL);
@@ -835,31 +855,42 @@
 	if (data == NULL)
 		return;
 
-	gtk_list_store_remove(GTK_LIST_STORE(dialog->model), &data->iter);
+
+	if ((gaim_xfer_is_canceled(xfer) == GAIM_XFER_CANCEL_LOCAL) && (dialog->auto_clear)) {
+		gtk_list_store_remove(GTK_LIST_STORE(dialog->model), &data->iter);
 
-	g_free(data->name);
-	g_free(data);
+		g_free(data->name);
+		g_free(data);
 
-	xfer->ui_data = NULL;
+		xfer->ui_data = NULL;
 
-	dialog->num_transfers--;
+		dialog->num_transfers--;
 
-	if (dialog->num_transfers == 0 && !dialog->keep_open)
-		gaim_gtkxfer_dialog_hide(dialog);
+		if (dialog->num_transfers == 0 && !dialog->keep_open)
+			gaim_gtkxfer_dialog_hide(dialog);
 
-#if 0
+		return;
+	}
+
 	data = GAIM_GTKXFER(xfer);
 
 	pixbuf = gtk_widget_render_icon(dialog->window,
 									GAIM_STOCK_FILE_CANCELED,
 									GTK_ICON_SIZE_MENU, NULL);
 
+	if (gaim_xfer_is_canceled(xfer) == GAIM_XFER_CANCEL_LOCAL)
+		status = _("Canceled");
+	else
+		status = _("Failed");
+
 	gtk_list_store_set(dialog->model, &data->iter,
-					   COLUMN_STATUS, pixbuf,
-					   -1);
+	                   COLUMN_STATUS, pixbuf,
+	                   COLUMN_REMAINING, status,
+	                   -1);
 
 	g_object_unref(pixbuf);
-#endif
+
+	update_buttons(dialog, xfer);
 }
 
 void