[empathy: 1/5] Fire a "part-command-entered" signal from libempathy-gtk/empathy-chat.c to be caught in src/empathy-



commit 9dbdbe692285c70d2b2bf713f2b21b156a87055c
Author: Chandni Verma <chandniverma2112 gmail com>
Date:   Sat Feb 26 04:29:46 2011 +0530

    Fire a "part-command-entered" signal from libempathy-gtk/empathy-chat.c to be caught in src/empathy-chat-window.c
    
    Fixes linking issues: https://bugzilla.gnome.org/show_bug.cgi?id=643295

 libempathy-gtk/empathy-chat.c |   41 ++++++++++++-----------------------------
 libempathy-gtk/empathy-chat.h |    1 -
 src/empathy-chat-window.c     |   24 ++++++++++++++++++++++++
 3 files changed, 36 insertions(+), 30 deletions(-)
---
diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
index c146941..0b61d53 100644
--- a/libempathy-gtk/empathy-chat.c
+++ b/libempathy-gtk/empathy-chat.c
@@ -44,7 +44,6 @@
 #include <libempathy/empathy-utils.h>
 #include <libempathy/empathy-request-util.h>
 #include <libempathy/empathy-chatroom-manager.h>
-#include <src/empathy-chat-window.h>
 
 #include "empathy-chat.h"
 #include "empathy-spell.h"
@@ -158,6 +157,7 @@ typedef struct {
 enum {
 	COMPOSING,
 	NEW_MESSAGE,
+	PART_COMMAND_ENTERED,
 	LAST_SIGNAL
 };
 
@@ -683,7 +683,6 @@ nick_command_supported (EmpathyChat *chat)
 		EMP_IFACE_QUARK_CONNECTION_INTERFACE_RENAMING);
 }
 
-#if 0
 static gboolean
 part_command_supported (EmpathyChat *chat)
 {
@@ -694,7 +693,6 @@ part_command_supported (EmpathyChat *chat)
 	return tp_proxy_has_interface_by_id (channel,
 			TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP);
 }
-#endif
 
 static void
 chat_command_clear (EmpathyChat *chat,
@@ -761,35 +759,12 @@ chat_command_join (EmpathyChat *chat,
 	g_strfreev (rooms);
 }
 
-void
-empathy_chat_leave_chat (EmpathyChat *chat)
-{
-	EmpathyChatPriv *priv = GET_PRIV (chat);
-
-	empathy_tp_chat_leave (priv->tp_chat, "");
-}
-
-#if 0
 static void
 chat_command_part (EmpathyChat *chat,
 			   GStrv        strv)
 {
-	EmpathyChatPriv *priv = GET_PRIV (chat);
-	EmpathyChat *chat_to_be_parted;
-
-	if (strv[1] == NULL) {
-		empathy_tp_chat_leave (priv->tp_chat, "");
-		return;
-	}
-	chat_to_be_parted = empathy_chat_window_find_chat (priv->account, strv[1]);
-
-	if (chat_to_be_parted != NULL) {
-		empathy_tp_chat_leave (empathy_chat_get_tp_chat (chat_to_be_parted), strv[2]);
-	} else {
-		empathy_tp_chat_leave (priv->tp_chat, strv[1]);
-	}
+	g_signal_emit (chat, signals[PART_COMMAND_ENTERED], 0, strv);
 }
-#endif
 
 static void
 chat_command_msg_internal (EmpathyChat *chat,
@@ -940,12 +915,10 @@ static ChatCommandItem commands[] = {
 	{"j", 2, 2, chat_command_join, NULL,
 	 N_("/j <chat room ID>: join a new chat room")},
 
-#if 0
 	/* FIXME: https://bugzilla.gnome.org/show_bug.cgi?id=643295 */
 	{"part", 1, 3, chat_command_part, part_command_supported,
 	 N_("/part [<chat room ID>] [<reason>]: leave the chat room, "
 	    "by default the current one")},
-#endif
 
 	{"query", 2, 3, chat_command_query, NULL,
 	 N_("/query <contact ID> [<message>]: open a private chat")},
@@ -2983,6 +2956,16 @@ empathy_chat_class_init (EmpathyChatClass *klass)
 			      G_TYPE_NONE,
 			      2, EMPATHY_TYPE_MESSAGE, G_TYPE_BOOLEAN);
 
+	signals[PART_COMMAND_ENTERED] =
+			g_signal_new ("part-command-entered",
+				  G_OBJECT_CLASS_TYPE (object_class),
+				  G_SIGNAL_RUN_LAST,
+				  0,
+				  NULL, NULL,
+				  g_cclosure_marshal_VOID__POINTER,
+				  G_TYPE_NONE,
+				  1, G_TYPE_STRV);
+
 	g_type_class_add_private (object_class, sizeof (EmpathyChatPriv));
 }
 
diff --git a/libempathy-gtk/empathy-chat.h b/libempathy-gtk/empathy-chat.h
index 77122f7..6ec9575 100644
--- a/libempathy-gtk/empathy-chat.h
+++ b/libempathy-gtk/empathy-chat.h
@@ -85,7 +85,6 @@ void               empathy_chat_correct_word         (EmpathyChat   *chat,
 						      const gchar   *new_word);
 void               empathy_chat_join_muc             (EmpathyChat   *chat,
 						      const gchar   *room);
-void               empathy_chat_leave_chat           (EmpathyChat *chat);
 gboolean           empathy_chat_is_room              (EmpathyChat   *chat);
 void               empathy_chat_set_show_contacts    (EmpathyChat *chat,
                                                       gboolean     show);
diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c
index 94f93e2..8da1cc2 100644
--- a/src/empathy-chat-window.c
+++ b/src/empathy-chat-window.c
@@ -1482,6 +1482,27 @@ chat_window_new_message_cb (EmpathyChat       *chat,
 	chat_window_icon_update (priv, TRUE);
 }
 
+static void
+chat_window_command_part (EmpathyChat *chat,
+			   GStrv        strv)
+{
+	EmpathyChat *chat_to_be_parted;
+
+	if (strv[1] == NULL) {
+		empathy_tp_chat_leave (empathy_chat_get_tp_chat (chat), "");
+		return;
+	}
+	chat_to_be_parted = empathy_chat_window_find_chat (
+		empathy_chat_get_account (chat), strv[1]);
+
+	if (chat_to_be_parted != NULL) {
+		empathy_tp_chat_leave (empathy_chat_get_tp_chat (chat_to_be_parted),
+			strv[2]);
+	} else {
+		empathy_tp_chat_leave (empathy_chat_get_tp_chat (chat), strv[1]);
+	}
+}
+
 static GtkNotebook *
 notebook_create_window_cb (GtkNotebook *source,
 			 GtkWidget   *page,
@@ -1567,6 +1588,9 @@ chat_window_page_added_cb (GtkNotebook      *notebook,
 	g_signal_connect (chat, "new-message",
 			  G_CALLBACK (chat_window_new_message_cb),
 			  window);
+	g_signal_connect (chat, "part-command-entered",
+			  G_CALLBACK (chat_window_command_part),
+			  NULL);
 	g_signal_connect (chat, "notify::tp-chat",
 			  G_CALLBACK (chat_window_update_chat_tab),
 			  window);



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