Add option to cancel transfers.
authorfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Fri, 18 Nov 2005 22:55:09 +0000 (22:55 +0000)
committerfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Fri, 18 Nov 2005 22:55:09 +0000 (22:55 +0000)
git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@518 959494ce-11ee-0310-bf91-de5d638817bd

clients/gnome-trans-applet/conduit-dclib.c
clients/gnome-trans-applet/conduit.h
clients/gnome-trans-applet/dolcon-trans-applet.c

index afc90c3..2e8d0ae 100644 (file)
@@ -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;
index 2540960..d38875b 100644 (file)
@@ -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);
index 418cad5..46c58fc 100644 (file)
@@ -42,17 +42,24 @@ struct appletdata
 
 static char *ctxtmenu =
 "<popup name='button3'>"
-"    <menuitem name='Preferences' verb='dca_pref' _label='Preferences' pixtype='stock' pixname='gtk-properties'>"
-"    </menuitem>"
+"    <menuitem name='Preferences' verb='dca_pref' _label='Preferences' pixtype='stock' pixname='gtk-properties' />"
+"    <menuitem name='Cancel transfer' verb='dca_cancel' _label='Cancel transfer' pixtype='stock' pixname='gtk-cancel' />"
 "</popup>";
 
 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);