From: fredrik Date: Fri, 18 Nov 2005 22:55:09 +0000 (+0000) Subject: Add option to cancel transfers. X-Git-Tag: 0.1~74 X-Git-Url: http://git.dolda2000.com/gitweb/?p=doldaconnect.git;a=commitdiff_plain;h=6431aca05e3425df8ac4c2ed4e621d191f01425f Add option to cancel transfers. git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@518 959494ce-11ee-0310-bf91-de5d638817bd --- diff --git a/clients/gnome-trans-applet/conduit-dclib.c b/clients/gnome-trans-applet/conduit-dclib.c index afc90c3..2e8d0ae 100644 --- a/clients/gnome-trans-applet/conduit-dclib.c +++ b/clients/gnome-trans-applet/conduit-dclib.c @@ -304,11 +304,31 @@ static void destroy(struct conduit *conduit) free(data); } +static int cancel(struct conduit *conduit, struct transfer *transfer) +{ + struct data *data; + struct dtdata *dtd; + struct dc_transfer *dt; + + data = conduit->cdata; + for(dt = dc_transfers; dt != NULL; dt = dt->next) + { + if(((dtd = dt->udata) != NULL) && (dtd->ct == transfer)) + { + dc_queuecmd(NULL, NULL, L"cancel", L"%%i", dt->id, NULL); + return(0); + } + } + errno = -ESRCH; + return(-1); +} + static struct conduitiface st_conduit_dclib = { .init = init, .connect = connect, .destroy = destroy, + .cancel = cancel, }; struct conduitiface *conduit_dclib = &st_conduit_dclib; diff --git a/clients/gnome-trans-applet/conduit.h b/clients/gnome-trans-applet/conduit.h index 2540960..d38875b 100644 --- a/clients/gnome-trans-applet/conduit.h +++ b/clients/gnome-trans-applet/conduit.h @@ -31,6 +31,7 @@ struct conduitiface int (*init)(struct conduit *conduit); int (*connect)(struct conduit *conduit); void (*destroy)(struct conduit *conduit); + int (*cancel)(struct conduit *conduit, struct transfer *transfer); }; struct transfer *findtransferbytag(struct conduit *conduit, char *tag); diff --git a/clients/gnome-trans-applet/dolcon-trans-applet.c b/clients/gnome-trans-applet/dolcon-trans-applet.c index 418cad5..46c58fc 100644 --- a/clients/gnome-trans-applet/dolcon-trans-applet.c +++ b/clients/gnome-trans-applet/dolcon-trans-applet.c @@ -42,17 +42,24 @@ struct appletdata static char *ctxtmenu = "" -" " -" " +" " +" " ""; static void run_pref_dialog(BonoboUIComponent *uic, gpointer data, const char *cname) { } +static void cancel_transfer(BonoboUIComponent *uic, struct appletdata *data, const char *cname) +{ + if(data->conduit->iface->cancel != NULL) + data->conduit->iface->cancel(data->conduit, data->curdisplay); +} + static BonoboUIVerb ctxtmenuverbs[] = { BONOBO_UI_VERB("dca_pref", run_pref_dialog), + BONOBO_UI_VERB("dca_cancel", cancel_transfer), BONOBO_UI_VERB_END }; @@ -208,8 +215,6 @@ static gboolean trview_applet_fill(PanelApplet *applet, const gchar *iid, gpoint if(strcmp(iid, "OAFIID:Dolcon_Transferapplet")) return(FALSE); - panel_applet_setup_menu(applet, ctxtmenu, ctxtmenuverbs, NULL); - hbox = gtk_hbox_new(FALSE, 0); label = gtk_label_new(""); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); @@ -227,6 +232,8 @@ static gboolean trview_applet_fill(PanelApplet *applet, const gchar *iid, gpoint data->tiptimeout = g_timeout_add(500, (gboolean (*)(gpointer))updatetip, data); data->label = GTK_LABEL(label); + panel_applet_setup_menu(applet, ctxtmenu, ctxtmenuverbs, data); + g_signal_connect(applet, "button-press-event", (GCallback)trview_applet_button_press, data); g_signal_connect(applet, "destroy", (GCallback)trview_applet_destroy, data);