Add a command to JFT to send or request a file
authorNicolas Cornu <nicolas.cornu@ensi-bourges.fr>
Wed, 21 Jul 2010 01:51:10 +0200
changeset 64 63d4f434abbc
parent 63 b56853071a09
child 65 97763e28c79e
Add a command to JFT to send or request a file
jingle-filetransfer/filetransfer.c
jingle/register.h
jingle/send.c
--- a/jingle-filetransfer/filetransfer.c	Wed Jul 21 01:39:42 2010 +0200
+++ b/jingle-filetransfer/filetransfer.c	Wed Jul 21 01:51:10 2010 +0200
@@ -29,6 +29,8 @@
 #include <mcabber/xmpp_helper.h>
 #include <mcabber/settings.h>
 #include <mcabber/logprint.h>
+#include <mcabber/compl.h>
+#include <mcabber/commands.h>
 
 #include <jingle/jingle.h>
 #include <jingle/check.h>
@@ -44,6 +46,7 @@
 static void jingle_ft_init(void);
 static void jingle_ft_uninit(void);
 
+static guint file_cid = 0;
 
 const gchar *deps[] = { "jingle", NULL };
 
@@ -195,14 +198,48 @@
   return TRUE;
 }
 
+static void do_file(char *arg)
+{
+  char **args = split_arg(arg, 2, 0);
+  
+  if (!args[1]) {
+    scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: give me a name!");
+    return;
+  }
+  
+  if (!g_strcmp0(args[0], "send")) {
+    scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: try to sent %s!",
+                 args[1]);
+    
+  
+  } else if (!g_strcmp0(args[0], "request")) {
+    scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: try to request %s!",
+                 args[1]);
+    //later
+  }
+  
+  free_arg_lst(args);
+}
+
 static void jingle_ft_init(void)
 {
   jingle_register_app(NS_JINGLE_APP_FT, &funcs, JINGLE_TRANSPORT_STREAMING);
   xmpp_add_feature(NS_JINGLE_APP_FT);
+  /* Create completions */
+  file_cid = compl_new_category();
+  if (file_cid) {
+    compl_add_category_word(file_cid, "send");
+    compl_add_category_word(file_cid, "request");
+  }
+  /* Add command */
+  cmd_add("file", "Send / Request a file", file_cid, 0, do_file, NULL);
 }
 
 static void jingle_ft_uninit(void)
 {
   xmpp_del_feature(NS_JINGLE_APP_FT);
   jingle_unregister_app(NS_JINGLE_APP_FT);
+  cmd_del("file");
+  if (file_cid)
+    compl_del_category(file_cid);
 }
--- a/jingle/register.h	Wed Jul 21 01:39:42 2010 +0200
+++ b/jingle/register.h	Wed Jul 21 01:51:10 2010 +0200
@@ -55,10 +55,10 @@
 
 typedef struct {
   /* check if the transport of a JingleContent is correct */
-  JingleAppCheck  check;
+  JingleTransportCheck  check;
 
   /* */
-  JingleAppHandle handle;
+  JingleTransportHandle handle;
   
   JingleTransportCmp cmp;
   
--- a/jingle/send.c	Wed Jul 21 01:39:42 2010 +0200
+++ b/jingle/send.c	Wed Jul 21 01:51:10 2010 +0200
@@ -75,9 +75,7 @@
   JingleAckHandle *ackhandle;
  
   accept.action = JINGLE_SESSION_ACCEPT;
-  accept.responder = g_strdup_printf("%s/%s",
-                                     lm_connection_get_jid(lconnection),
-                                     settings_opt_get("resource"));
+  accept.responder = g_strdup_printf("%s", lm_connection_get_jid(lconnection));
   accept.sid = jn->sid;
   accept.content = NULL;
 
@@ -98,7 +96,7 @@
     if (description == NULL || err != NULL) continue;
     transport = transfuncs->check(cn, &err);
     if (transport == NULL || err != NULL) continue;
-  
+   
     scr_log_print(LPRINT_DEBUG, "jingle: New content accepted: %s", cn->name);
 
     session_add_content(sess, cn, JINGLE_SESSION_STATE_ACTIVE);