[GnomeMeeting-list] Small patch



Hi to both of you,


I don't know if Jeremy is still working a bit on GnomeICU or not
anymore, but I'm CC'ing him.

I'm the author of GnomeMeeting and a very old GnomeICU user (I was even
using it before the name change, if I remember well). 

I think you could add jabber support to GnomeICU, but it is another
story :)
I have written a very small patch (30 minutes of coding) that adds a new
entry in the user popup that permits to call the user using
GnomeMeeting. Of course, the remote user has to run GnomeMeeting, but if
the local user is talking using GnomeICU with another GnomeICU user,
they can decide to do a small video chat. The second GnomeICU user
launches GnomeMeeting and the first one right-click on the nick, and
chooses "Call with GnomeMeeting...". And that's all. I think ICQ windows
has such a feature with Netmeeting, and I also think it is good for the
integration between Gnome programs.

Here is the patch, tell me if you are interested to add it into GnomeICU
CVS.

Thanks,

Damien


diff -uNr gnomeicu/src/user_popup.c gnomeicu.new/src/user_popup.c
--- gnomeicu/src/user_popup.c	Thu Aug  1 03:54:18 2002
+++ gnomeicu.new/src/user_popup.c	Sun Aug  4 14:04:34 2002
@@ -37,6 +37,7 @@
 static void send_url_window_default( GtkWidget *widget, gpointer data );
 static void get_contact_list (GtkWidget *widget, gpointer data);
 static void request_file_from_menu (GtkWidget *widget, gpointer data);
+static void call_user_with_gnomemeeting ( GtkWidget *widget, gpointer data );
 static void retrieve_away_message( GtkWidget *widget, gpointer data );
 static void add_user_to_list( GtkWidget *widget, CONTACT_PTR data );
 static void authorize_uin( GtkWidget *widget, gpointer data );
@@ -112,10 +113,18 @@
                             GTK_SIGNAL_FUNC (request_file_from_menu), contact);
 	}
 
-	item = gtk_menu_item_new ();
+	if (contact->status != STATUS_OFFLINE) {
+	        item = gtk_image_menu_item_new_with_label (_("Call with GnomeMeeting..."));
+	        gtk_container_add (GTK_CONTAINER (personal_menu), item);
+	        gtk_signal_connect (GTK_OBJECT (item), "activate",
+	                            GTK_SIGNAL_FUNC (call_user_with_gnomemeeting), contact);
+	}
+
+        item = gtk_menu_item_new ();
 	gtk_widget_set_sensitive (item, FALSE);
 	gtk_container_add (GTK_CONTAINER (personal_menu), item);
 
+
 	item = gtk_image_menu_item_new_with_label (_("User Info..."));
 	image = gtk_image_new_from_pixbuf (icon_info_pixbuf);
 	gtk_container_add (GTK_CONTAINER (personal_menu), item);
@@ -508,6 +517,24 @@
 	gtk_dialog_set_default_response (GTK_DIALOG (window), ICQ_RESPONSE_SEND);
 
 	gtk_widget_show (window);
+}
+
+static void call_user_with_gnomemeeting (GtkWidget *widget, gpointer data)
+{
+        int pid = 0;
+        CONTACT_PTR contact = (CONTACT_PTR) data;
+	gchar *ip =  g_strdup_printf( "%u.%u.%u.%u",
+				      (BYTE) (contact->current_ip >> 24),
+				      (BYTE) (contact->current_ip >> 16),
+				      (BYTE) (contact->current_ip >> 8),
+				      (BYTE) (contact->current_ip) );
+	gchar *command = g_strdup_printf ("gnomemeeting -c %s", ip);
+
+	if (strcmp (ip, "255.255.255.255"))
+ 	        pid = gnome_execute_shell (NULL, command);
+
+	g_free (command);
+	g_free (ip);
 }
 
 static void retrieve_away_message( GtkWidget *widget, gpointer data )


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]