pidgin/plugins/xmppconsole/xmppconsole.c

changeset 41408
5323c0b51ddc
parent 41407
94f55a462e8e
child 41409
f18c86c63885
equal deleted inserted replaced
41407:94f55a462e8e 41408:5323c0b51ddc
82 82
83 G_DEFINE_DYNAMIC_TYPE(PidginXmppConsole, pidgin_xmpp_console, GTK_TYPE_WINDOW) 83 G_DEFINE_DYNAMIC_TYPE(PidginXmppConsole, pidgin_xmpp_console, GTK_TYPE_WINDOW)
84 84
85 static PidginXmppConsole *console = NULL; 85 static PidginXmppConsole *console = NULL;
86 86
87 static const gchar *xmpp_prpls[] = {
88 "prpl-jabber", "prpl-gtalk", NULL
89 };
90
91 /****************************************************************************** 87 /******************************************************************************
92 * Helpers 88 * Helpers
93 *****************************************************************************/ 89 *****************************************************************************/
94 static gboolean 90 static gboolean
95 xmppconsole_is_xmpp_account(PurpleAccount *account) 91 xmppconsole_is_xmpp_account(PurpleAccount *account)
96 { 92 {
97 const gchar *prpl_name; 93 const gchar *prpl_name;
98 int i;
99 94
100 prpl_name = purple_account_get_protocol_id(account); 95 prpl_name = purple_account_get_protocol_id(account);
101 96
102 i = 0; 97 return purple_strequal("prpl-jabber", prpl_name);
103 while (xmpp_prpls[i] != NULL) {
104 if (purple_strequal(xmpp_prpls[i], prpl_name))
105 return TRUE;
106 i++;
107 }
108
109 return FALSE;
110 } 98 }
111 99
112 static void 100 static void
113 xmppconsole_append_xmlnode(PidginXmppConsole *console, PurpleXmlNode *node, 101 xmppconsole_append_xmlnode(PidginXmppConsole *console, PurpleXmlNode *node,
114 gint indent_level, GtkTextIter *iter, 102 gint indent_level, GtkTextIter *iter,
759 } 747 }
760 748
761 static gboolean 749 static gboolean
762 xmpp_console_load(GPluginPlugin *plugin, GError **error) 750 xmpp_console_load(GPluginPlugin *plugin, GError **error)
763 { 751 {
764 int i; 752 PurpleProtocolManager *manager = NULL;
765 gboolean any_registered = FALSE; 753 PurpleProtocol *xmpp = NULL;
766 754
767 pidgin_xmpp_console_register_type(G_TYPE_MODULE(plugin)); 755 pidgin_xmpp_console_register_type(G_TYPE_MODULE(plugin));
768 756
769 i = 0; 757 manager = purple_protocol_manager_get_default();
770 while (xmpp_prpls[i] != NULL) { 758 xmpp = purple_protocol_manager_find(manager, "prpl-jabber");
771 PurpleProtocol *xmpp; 759 if (!PURPLE_IS_PROTOCOL(xmpp)) {
772 PurpleProtocolManager *manager;
773
774 manager = purple_protocol_manager_get_default();
775 xmpp = purple_protocol_manager_find(manager, xmpp_prpls[i]);
776 i++;
777
778 if (!xmpp)
779 continue;
780 any_registered = TRUE;
781
782 purple_signal_connect(xmpp, "jabber-receiving-xmlnode", plugin,
783 G_CALLBACK(purple_xmlnode_received_cb), NULL);
784 purple_signal_connect(xmpp, "jabber-sending-text", plugin,
785 G_CALLBACK(purple_xmlnode_sent_cb), NULL);
786 }
787
788 if (!any_registered) {
789 g_set_error_literal(error, PLUGIN_DOMAIN, 0, 760 g_set_error_literal(error, PLUGIN_DOMAIN, 0,
790 _("No XMPP protocol is loaded.")); 761 _("No XMPP protocol is loaded."));
791 return FALSE; 762 return FALSE;
792 } 763 }
764
765 purple_signal_connect(xmpp, "jabber-receiving-xmlnode", plugin,
766 G_CALLBACK(purple_xmlnode_received_cb), NULL);
767 purple_signal_connect(xmpp, "jabber-sending-text", plugin,
768 G_CALLBACK(purple_xmlnode_sent_cb), NULL);
793 769
794 purple_signal_connect(purple_connections_get_handle(), "signing-on", 770 purple_signal_connect(purple_connections_get_handle(), "signing-on",
795 plugin, G_CALLBACK(signing_on_cb), NULL); 771 plugin, G_CALLBACK(signing_on_cb), NULL);
796 purple_signal_connect(purple_connections_get_handle(), "signed-off", 772 purple_signal_connect(purple_connections_get_handle(), "signed-off",
797 plugin, G_CALLBACK(signed_off_cb), NULL); 773 plugin, G_CALLBACK(signed_off_cb), NULL);

mercurial