Make return clearer
[pidgin-git.git] / libpurple / plugins / signals-test.c
blob7884119685ca7c6f420c39f6faee5e386c916bd5
1 /*
2 * Signals test plugin.
4 * Copyright (C) 2003 Christian Hammond.
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as
8 * published by the Free Software Foundation; either version 2 of the
9 * License, or (at your option) any later version.
11 * This program is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 * 02111-1301, USA.
21 #define SIGNAL_TEST_PLUGIN_ID "core-signals-test"
23 #include "internal.h"
24 #include <purple.h>
26 #include <stdio.h>
28 /**************************************************************************
29 * Account subsystem signal callbacks
30 **************************************************************************/
31 static void
32 account_connecting_cb(PurpleAccount *account, void *data)
34 purple_debug_misc("signals test", "account-connecting (%s)\n",
35 purple_account_get_username(account));
38 static void
39 account_setting_info_cb(PurpleAccount *account, const char *info, void *data)
41 purple_debug_misc("signals test", "account-setting-info (%s, %s)\n",
42 purple_account_get_username(account), info);
45 static void
46 account_set_info_cb(PurpleAccount *account, const char *info, void *data)
48 purple_debug_misc("signals test", "account-set-info (%s, %s)\n",
49 purple_account_get_username(account), info);
52 static void
53 account_status_changed(PurpleAccount *account, PurpleStatus *old, PurpleStatus *new,
54 gpointer data)
56 purple_debug_misc("signals test", "account-status-changed (%s, %s, %s)\n",
57 purple_account_get_username(account),
58 purple_status_get_name(old),
59 purple_status_get_name(new));
62 static void
63 account_alias_changed(PurpleAccount *account, const char *old, gpointer data)
65 purple_debug_misc("signals test", "account-alias-changed (%s, %s, %s)\n",
66 purple_account_get_username(account),
67 old, purple_account_get_private_alias(account));
70 static int
71 account_authorization_requested_cb(PurpleAccount *account, const char *user, const char *message, char *response, gpointer data)
73 purple_debug_misc("signals test", "account-authorization-requested (%s, %s, %s)\n",
74 purple_account_get_username(account), user, message);
75 return PURPLE_ACCOUNT_RESPONSE_PASS;
78 static void
79 account_authorization_granted_cb(PurpleAccount *account, const char *user, const char *message, gpointer data)
81 purple_debug_misc("signals test", "account-authorization-granted (%s, %s, %s)\n",
82 purple_account_get_username(account), user, message);
85 static void
86 account_authorization_denied_cb(PurpleAccount *account, const char *user, const char *message, gpointer data)
88 purple_debug_misc("signals test", "account-authorization-denied (%s, %s, %s)\n",
89 purple_account_get_username(account), user, message);
92 /**************************************************************************
93 * Buddy Icons signal callbacks
94 **************************************************************************/
95 static void
96 buddy_icon_changed_cb(PurpleBuddy *buddy)
98 purple_debug_misc("signals test", "buddy icon changed (%s)\n",
99 purple_buddy_get_name(buddy));
102 /**************************************************************************
103 * Buddy List subsystem signal callbacks
104 **************************************************************************/
105 static void
106 buddy_status_changed_cb(PurpleBuddy *buddy, PurpleStatus *old_status,
107 PurpleStatus *status, void *data)
109 purple_debug_misc("signals test", "buddy-status-changed (%s %s to %s)\n",
110 purple_buddy_get_name(buddy),
111 purple_status_get_id(old_status),
112 purple_status_get_id(status));
115 static void
116 buddy_idle_changed_cb(PurpleBuddy *buddy, gboolean old_idle, gboolean idle,
117 void *data)
119 purple_debug_misc("signals test", "buddy-idle-changed (%s %s)\n",
120 purple_buddy_get_name(buddy),
121 old_idle ? "unidled" : "idled");
124 static void
125 buddy_signed_on_cb(PurpleBuddy *buddy, void *data)
127 purple_debug_misc("signals test", "buddy-signed-on (%s)\n",
128 purple_buddy_get_name(buddy));
131 static void
132 buddy_signed_off_cb(PurpleBuddy *buddy, void *data)
134 purple_debug_misc("signals test", "buddy-signed-off (%s)\n",
135 purple_buddy_get_name(buddy));
138 static void
139 blist_node_added_cb(PurpleBlistNode *bnode, void *data)
141 const char *name;
142 if (PURPLE_IS_GROUP(bnode))
143 name = purple_group_get_name(PURPLE_GROUP(bnode));
144 else if (PURPLE_IS_CONTACT(bnode))
145 /* Close enough */
146 name = purple_contact_get_alias(PURPLE_CONTACT(bnode));
147 else if (PURPLE_IS_BUDDY(bnode))
148 name = purple_buddy_get_name(PURPLE_BUDDY(bnode));
149 else
150 name = "(unknown)";
152 purple_debug_misc("signals test", "blist_node_added_cb (%s)\n",
153 name ? name : "(null)");
156 static void
157 blist_node_removed_cb(PurpleBlistNode *bnode, void *data)
159 const char *name;
160 if (PURPLE_IS_GROUP(bnode))
161 name = purple_group_get_name(PURPLE_GROUP(bnode));
162 else if (PURPLE_IS_CONTACT(bnode))
163 /* Close enough */
164 name = purple_contact_get_alias(PURPLE_CONTACT(bnode));
165 else if (PURPLE_IS_BUDDY(bnode))
166 name = purple_buddy_get_name(PURPLE_BUDDY(bnode));
167 else
168 name = "(unknown)";
170 purple_debug_misc("signals test", "blist_node_removed_cb (%s)\n",
171 name ? name : "(null)");
174 static void
175 blist_node_aliased(PurpleBlistNode *node, const char *old_alias)
177 PurpleContact *p = PURPLE_CONTACT(node);
178 PurpleBuddy *b = PURPLE_BUDDY(node);
179 PurpleChat *c = PURPLE_CHAT(node);
180 PurpleGroup *g = PURPLE_GROUP(node);
182 if (PURPLE_IS_CONTACT(node)) {
183 purple_debug_misc("signals test",
184 "blist-node-aliased (Contact: %s, %s)\n",
185 purple_contact_get_alias(p), old_alias);
186 } else if (PURPLE_IS_BUDDY(node)) {
187 purple_debug_misc("signals test",
188 "blist-node-aliased (Buddy: %s, %s)\n",
189 purple_buddy_get_name(b), old_alias);
190 } else if (PURPLE_IS_CHAT(node)) {
191 purple_debug_misc("signals test",
192 "blist-node-aliased (Chat: %s, %s)\n",
193 purple_chat_get_name(c), old_alias);
194 } else if (PURPLE_IS_GROUP(node)) {
195 purple_debug_misc("signals test",
196 "blist-node-aliased (Group: %s, %s)\n",
197 purple_group_get_name(g), old_alias);
201 static void
202 blist_node_extended_menu_cb(PurpleBlistNode *node, void *data)
204 PurpleContact *p = PURPLE_CONTACT(node);
205 PurpleBuddy *b = PURPLE_BUDDY(node);
206 PurpleChat *c = PURPLE_CHAT(node);
207 PurpleGroup *g = PURPLE_GROUP(node);
209 if (PURPLE_IS_CONTACT(node)) {
210 purple_debug_misc("signals test",
211 "blist-node-extended-menu (Contact: %s)\n",
212 purple_contact_get_alias(p));
213 } else if (PURPLE_IS_BUDDY(node)) {
214 purple_debug_misc("signals test",
215 "blist-node-extended-menu (Buddy: %s)\n",
216 purple_buddy_get_name(b));
217 } else if (PURPLE_IS_CHAT(node)) {
218 purple_debug_misc("signals test",
219 "blist-node-extended-menu (Chat: %s)\n",
220 purple_chat_get_name(c));
221 } else if (PURPLE_IS_GROUP(node)) {
222 purple_debug_misc("signals test",
223 "blist-node-extended-menu (Group: %s)\n",
224 purple_group_get_name(g));
229 /**************************************************************************
230 * Connection subsystem signal callbacks
231 **************************************************************************/
232 static void
233 signing_on_cb(PurpleConnection *gc, void *data)
235 purple_debug_misc("signals test", "signing-on (%s)\n",
236 purple_account_get_username(purple_connection_get_account(gc)));
239 static void
240 signed_on_cb(PurpleConnection *gc, void *data)
242 purple_debug_misc("signals test", "signed-on (%s)\n",
243 purple_account_get_username(purple_connection_get_account(gc)));
246 static void
247 signing_off_cb(PurpleConnection *gc, void *data)
249 purple_debug_misc("signals test", "signing-off (%s)\n",
250 purple_account_get_username(purple_connection_get_account(gc)));
253 static void
254 signed_off_cb(PurpleConnection *gc, void *data)
256 purple_debug_misc("signals test", "signed-off (%s)\n",
257 purple_account_get_username(purple_connection_get_account(gc)));
260 static void
261 connection_error_cb(PurpleConnection *gc,
262 PurpleConnectionError err,
263 const gchar *desc,
264 void *data)
266 const gchar *username =
267 purple_account_get_username(purple_connection_get_account(gc));
268 purple_debug_misc("signals test", "connection-error (%s, %u, %s)\n",
269 username, err, desc);
272 /**************************************************************************
273 * Conversation subsystem signal callbacks
274 **************************************************************************/
275 static gboolean
276 writing_im_msg_cb(PurpleConversation *conv, PurpleMessage *pmsg)
278 purple_debug_misc("signals test", "writing-im-msg (%s, %s)\n",
279 purple_conversation_get_name(conv),
280 purple_message_get_contents(pmsg));
282 return FALSE;
286 static void
287 wrote_im_msg_cb(PurpleConversation *conv, PurpleMessage *msg, gpointer data)
289 purple_debug_misc("signals test", "wrote-im-msg (%s, %s)\n",
290 purple_conversation_get_name(conv),
291 purple_message_get_contents(msg));
294 static void
295 sending_im_msg_cb(PurpleAccount *account, PurpleMessage *msg, void *data)
297 purple_debug_misc("signals test", "sending-im-msg (%s, %s, %s)\n",
298 purple_account_get_username(account),
299 purple_message_get_recipient(msg),
300 purple_message_get_contents(msg));
304 static void
305 sent_im_msg_cb(PurpleAccount *account, PurpleMessage *msg, void *data)
307 purple_debug_misc("signals test", "sent-im-msg (%s, %s, %s)\n",
308 purple_account_get_username(account),
309 purple_message_get_recipient(msg),
310 purple_message_get_contents(msg));
313 static gboolean
314 receiving_im_msg_cb(PurpleAccount *account, char **sender, char **buffer,
315 PurpleConversation *conv, PurpleMessageFlags *flags, void *data)
317 purple_debug_misc("signals test", "receiving-im-msg (%s, %s, %s, %s, %d)\n",
318 purple_account_get_username(account), *sender, *buffer,
319 (conv != NULL) ? purple_conversation_get_name(conv) : "(null)", *flags);
321 return FALSE;
324 static void
325 received_im_msg_cb(PurpleAccount *account, char *sender, char *buffer,
326 PurpleConversation *conv, PurpleMessageFlags flags, void *data)
328 purple_debug_misc("signals test", "received-im-msg (%s, %s, %s, %s, %d)\n",
329 purple_account_get_username(account), sender, buffer,
330 (conv != NULL) ? purple_conversation_get_name(conv) : "(null)", flags);
333 static gboolean
334 writing_chat_msg_cb(PurpleAccount *account, const char *who, char **buffer,
335 PurpleConversation *conv, PurpleMessageFlags flags, void *data)
337 purple_debug_misc("signals test", "writing-chat-msg (%s, %s)\n",
338 purple_conversation_get_name(conv), *buffer);
340 return FALSE;
343 static void
344 wrote_chat_msg_cb(PurpleConversation *conv, PurpleMessage *msg, gpointer data)
346 purple_debug_misc("signals test", "wrote-chat-msg (%s, %s)\n",
347 purple_conversation_get_name(conv),
348 purple_message_get_contents(msg));
351 static gboolean
352 sending_chat_msg_cb(PurpleAccount *account, PurpleMessage *msg, int id, void *data)
354 purple_debug_misc("signals test", "sending-chat-msg (%s, %s, %d)\n",
355 purple_account_get_username(account),
356 purple_message_get_contents(msg), id);
358 return FALSE;
361 static void
362 sent_chat_msg_cb(PurpleAccount *account, PurpleMessage *msg, int id, void *data)
364 purple_debug_misc("signals test", "sent-chat-msg (%s, %s, %d)\n",
365 purple_account_get_username(account),
366 purple_message_get_contents(msg), id);
369 static gboolean
370 receiving_chat_msg_cb(PurpleAccount *account, char **sender, char **buffer,
371 PurpleConversation *chat, PurpleMessageFlags *flags, void *data)
373 purple_debug_misc("signals test",
374 "receiving-chat-msg (%s, %s, %s, %s, %d)\n",
375 purple_account_get_username(account), *sender, *buffer,
376 purple_conversation_get_name(chat), *flags);
378 return FALSE;
381 static void
382 received_chat_msg_cb(PurpleAccount *account, char *sender, char *buffer,
383 PurpleConversation *chat, PurpleMessageFlags flags, void *data)
385 purple_debug_misc("signals test",
386 "received-chat-msg (%s, %s, %s, %s, %d)\n",
387 purple_account_get_username(account), sender, buffer,
388 purple_conversation_get_name(chat), flags);
391 static void
392 conversation_created_cb(PurpleConversation *conv, void *data)
394 purple_debug_misc("signals test", "conversation-created (%s)\n",
395 purple_conversation_get_name(conv));
398 static void
399 deleting_conversation_cb(PurpleConversation *conv, void *data)
401 purple_debug_misc("signals test", "deleting-conversation (%s)\n",
402 purple_conversation_get_name(conv));
405 static void
406 buddy_typing_cb(PurpleAccount *account, const char *name, void *data)
408 purple_debug_misc("signals test", "buddy-typing (%s, %s)\n",
409 purple_account_get_username(account), name);
412 static void
413 buddy_typing_stopped_cb(PurpleAccount *account, const char *name, void *data)
415 purple_debug_misc("signals test", "buddy-typing-stopped (%s, %s)\n",
416 purple_account_get_username(account), name);
419 static gboolean
420 chat_user_joining_cb(PurpleConversation *conv, const char *user,
421 PurpleChatUserFlags flags, void *data)
423 purple_debug_misc("signals test", "chat-user-joining (%s, %s, %d)\n",
424 purple_conversation_get_name(conv), user, flags);
426 return FALSE;
429 static void
430 chat_user_joined_cb(PurpleConversation *conv, const char *user,
431 PurpleChatUserFlags flags, gboolean new_arrival, void *data)
433 purple_debug_misc("signals test", "chat-user-joined (%s, %s, %d, %d)\n",
434 purple_conversation_get_name(conv), user, flags, new_arrival);
437 static void
438 chat_user_flags_cb(PurpleChatUser *cb, PurpleChatUserFlags oldflags,
439 PurpleChatUserFlags newflags, void *data)
441 purple_debug_misc("signals test", "chat-user-flags (%s, %s, %d, %d)\n",
442 purple_conversation_get_name(PURPLE_CONVERSATION(
443 purple_chat_user_get_chat(cb))),
444 purple_chat_user_get_name(cb), oldflags, newflags);
447 static gboolean
448 chat_user_leaving_cb(PurpleConversation *conv, const char *user,
449 const char *reason, void *data)
451 purple_debug_misc("signals test", "chat-user-leaving (%s, %s, %s)\n",
452 purple_conversation_get_name(conv), user, reason);
454 return FALSE;
457 static void
458 chat_user_left_cb(PurpleConversation *conv, const char *user,
459 const char *reason, void *data)
461 purple_debug_misc("signals test", "chat-user-left (%s, %s, %s)\n",
462 purple_conversation_get_name(conv), user, reason);
465 static void
466 chat_inviting_user_cb(PurpleConversation *conv, const char *name,
467 char **reason, void *data)
469 purple_debug_misc("signals test", "chat-inviting-user (%s, %s, %s)\n",
470 purple_conversation_get_name(conv), name, *reason);
473 static void
474 chat_invited_user_cb(PurpleConversation *conv, const char *name,
475 const char *reason, void *data)
477 purple_debug_misc("signals test", "chat-invited-user (%s, %s, %s)\n",
478 purple_conversation_get_name(conv), name, reason);
481 static gint
482 chat_invited_cb(PurpleAccount *account, const char *inviter,
483 const char *room_name, const char *message,
484 const GHashTable *components, void *data)
486 purple_debug_misc("signals test", "chat-invited (%s, %s, %s, %s)\n",
487 purple_account_get_username(account), inviter,
488 room_name, message);
490 return 0;
493 static void
494 chat_joined_cb(PurpleConversation *conv, void *data)
496 purple_debug_misc("signals test", "chat-joined (%s)\n",
497 purple_conversation_get_name(conv));
500 static void
501 chat_left_cb(PurpleConversation *conv, void *data)
503 purple_debug_misc("signals test", "chat-left (%s)\n",
504 purple_conversation_get_name(conv));
507 static void
508 chat_topic_changed_cb(PurpleConversation *conv, const char *who,
509 const char *topic, void *data)
511 purple_debug_misc("signals test",
512 "chat-topic-changed (%s topic changed to: \"%s\" by %s)\n",
513 purple_conversation_get_name(conv), topic,
514 (who) ? who : "unknown");
516 /**************************************************************************
517 * Core signal callbacks
518 **************************************************************************/
519 static void
520 quitting_cb(void *data)
522 purple_debug_misc("signals test", "quitting ()\n");
525 static void
526 printhash(gpointer key, gpointer value, gpointer data)
528 char *a = (char *)key;
529 char *b = (char *)value;
530 GString *str = (GString *)data;
531 g_string_append_printf(str, " [%s] = [%s]\n", a, b ? b : "(null)");
534 static gboolean
535 uri_handler(const char *proto, const char *cmd, GHashTable *params)
537 GString *str = g_string_new("\n{\n");
538 g_hash_table_foreach(params, printhash, str);
539 g_string_append_c(str, '}');
540 purple_debug_misc("signals test", "uri handler (%s, %s, %s)\n", proto, cmd, str->str);
541 g_string_free(str, TRUE);
542 return FALSE;
545 /**************************************************************************
546 * File transfer signal callbacks
547 **************************************************************************/
548 static void
549 ft_recv_accept_cb(PurpleXfer *xfer, gpointer data) {
550 purple_debug_misc("signals test", "file receive accepted\n");
553 static void
554 ft_send_accept_cb(PurpleXfer *xfer, gpointer data) {
555 purple_debug_misc("signals test", "file send accepted\n");
558 static void
559 ft_recv_start_cb(PurpleXfer *xfer, gpointer data) {
560 purple_debug_misc("signals test", "file receive started\n");
563 static void
564 ft_send_start_cb(PurpleXfer *xfer, gpointer data) {
565 purple_debug_misc("signals test", "file send started\n");
568 static void
569 ft_recv_cancel_cb(PurpleXfer *xfer, gpointer data) {
570 purple_debug_misc("signals test", "file receive cancelled\n");
573 static void
574 ft_send_cancel_cb(PurpleXfer *xfer, gpointer data) {
575 purple_debug_misc("signals test", "file send cancelled\n");
578 static void
579 ft_recv_complete_cb(PurpleXfer *xfer, gpointer data) {
580 purple_debug_misc("signals test", "file receive completed\n");
583 static void
584 ft_send_complete_cb(PurpleXfer *xfer, gpointer data) {
585 purple_debug_misc("signals test", "file send completed\n");
588 /**************************************************************************
589 * Sound signal callbacks
590 **************************************************************************/
591 static int
592 sound_playing_event_cb(PurpleSoundEventID event, PurpleAccount *account) {
593 if (account != NULL)
594 purple_debug_misc("signals test", "sound playing event: %d for account: %s\n",
595 event, purple_account_get_username(account));
596 else
597 purple_debug_misc("signals test", "sound playing event: %d\n", event);
599 return 0;
602 /**************************************************************************
603 * Notify signals callbacks
604 **************************************************************************/
605 static void
606 notify_email_cb(char *subject, char *from, char *to, char *url) {
607 purple_debug_misc("signals test", "notify email: subject=%s, from=%s, to=%s, url=%s\n",
608 subject, from, to, url);
611 static void
612 notify_emails_cb(char **subjects, char **froms, char **tos, char **urls, guint count) {
613 guint i;
614 purple_debug_misc("signals test", "notify emails: count=%u\n", count);
615 for(i=0; i<count && i<5; i++) {
616 if(subjects[i]==NULL || froms[i]==NULL || tos[i]==NULL || urls[i]==NULL) continue;
617 purple_debug_misc("signals test", "notify emails[%u]: subject=%s, from=%s, to=%s, url=%s\n",
618 i, subjects[i], froms[i], tos[i], urls[i]);
622 /**************************************************************************
623 * Jabber signals callbacks
624 **************************************************************************/
625 static gboolean
626 jabber_iq_received(PurpleConnection *pc, const char *type, const char *id,
627 const char *from, PurpleXmlNode *iq)
629 purple_debug_misc("signals test", "jabber IQ (type=%s, id=%s, from=%s) %p\n",
630 type, id, from ? from : "(null)", iq);
632 /* We don't want the plugin to stop processing */
633 return FALSE;
636 static gboolean
637 jabber_message_received(PurpleConnection *pc, const char *type, const char *id,
638 const char *from, const char *to, PurpleXmlNode *message)
640 purple_debug_misc("signals test", "jabber message (type=%s, id=%s, "
641 "from=%s to=%s) %p\n",
642 type ? type : "(null)", id ? id : "(null)",
643 from ? from : "(null)", to ? to : "(null)", message);
645 /* We don't want the plugin to stop processing */
646 return FALSE;
649 static gboolean
650 jabber_presence_received(PurpleConnection *pc, const char *type,
651 const char *from, PurpleXmlNode *presence)
653 purple_debug_misc("signals test", "jabber presence (type=%s, from=%s) %p\n",
654 type ? type : "(null)", from ? from : "(null)", presence);
656 /* We don't want the plugin to stop processing */
657 return FALSE;
660 static gboolean
661 jabber_watched_iq(PurpleConnection *pc, const char *type, const char *id,
662 const char *from, PurpleXmlNode *child)
664 purple_debug_misc("signals test", "jabber watched IQ (type=%s, id=%s, from=%s)\n"
665 "child %p name=%s, namespace=%s\n",
666 type, id, from, child, child->name,
667 purple_xmlnode_get_namespace(child));
669 if (purple_strequal(type, "get") || purple_strequal(type, "set")) {
670 /* Send the requisite reply */
671 PurpleXmlNode *iq = purple_xmlnode_new("iq");
672 purple_xmlnode_set_attrib(iq, "to", from);
673 purple_xmlnode_set_attrib(iq, "id", id);
674 purple_xmlnode_set_attrib(iq, "type", "result");
676 purple_signal_emit(purple_connection_get_protocol(pc),
677 "jabber-sending-xmlnode", pc, &iq);
678 if (iq != NULL)
679 purple_xmlnode_free(iq);
682 /* Cookie monster eats IQ stanzas; the protocol shouldn't keep processing */
683 return TRUE;
686 /**************************************************************************
687 * Plugin stuff
688 **************************************************************************/
689 static PurplePluginInfo *
690 plugin_query(GError **error)
692 const gchar * const authors[] = {
693 "Christian Hammond <chipx86@gnupdate.org>",
694 NULL
697 return purple_plugin_info_new(
698 "id", SIGNAL_TEST_PLUGIN_ID,
699 "name", N_("Signals Test"),
700 "version", DISPLAY_VERSION,
701 "category", N_("Testing"),
702 "summary", N_("Test to see that all signals are working properly."),
703 "description", N_("Test to see that all signals are working properly."),
704 "authors", authors,
705 "website", PURPLE_WEBSITE,
706 "abi-version", PURPLE_ABI_VERSION,
707 NULL
711 static gboolean
712 plugin_load(PurplePlugin *plugin, GError **error)
714 void *core_handle = purple_get_core();
715 void *blist_handle = purple_blist_get_handle();
716 void *conn_handle = purple_connections_get_handle();
717 void *conv_handle = purple_conversations_get_handle();
718 void *accounts_handle = purple_accounts_get_handle();
719 void *ft_handle = purple_xfers_get_handle();
720 void *sound_handle = purple_sounds_get_handle();
721 void *notify_handle = purple_notify_get_handle();
722 void *jabber_handle = purple_protocols_find("prpl-jabber");
724 /* Accounts subsystem signals */
725 purple_signal_connect(accounts_handle, "account-connecting",
726 plugin, PURPLE_CALLBACK(account_connecting_cb), NULL);
727 purple_signal_connect(accounts_handle, "account-setting-info",
728 plugin, PURPLE_CALLBACK(account_setting_info_cb), NULL);
729 purple_signal_connect(accounts_handle, "account-set-info",
730 plugin, PURPLE_CALLBACK(account_set_info_cb), NULL);
731 purple_signal_connect(accounts_handle, "account-status-changed",
732 plugin, PURPLE_CALLBACK(account_status_changed), NULL);
733 purple_signal_connect(accounts_handle, "account-alias-changed",
734 plugin, PURPLE_CALLBACK(account_alias_changed), NULL);
735 purple_signal_connect(accounts_handle, "account-authorization-requested",
736 plugin, PURPLE_CALLBACK(account_authorization_requested_cb), NULL);
737 purple_signal_connect(accounts_handle, "account-authorization-denied",
738 plugin, PURPLE_CALLBACK(account_authorization_denied_cb), NULL);
739 purple_signal_connect(accounts_handle, "account-authorization-granted",
740 plugin, PURPLE_CALLBACK(account_authorization_granted_cb), NULL);
742 /* Buddy List subsystem signals */
743 purple_signal_connect(blist_handle, "buddy-status-changed",
744 plugin, PURPLE_CALLBACK(buddy_status_changed_cb), NULL);
745 purple_signal_connect(blist_handle, "buddy-idle-changed",
746 plugin, PURPLE_CALLBACK(buddy_idle_changed_cb), NULL);
747 purple_signal_connect(blist_handle, "buddy-signed-on",
748 plugin, PURPLE_CALLBACK(buddy_signed_on_cb), NULL);
749 purple_signal_connect(blist_handle, "buddy-signed-off",
750 plugin, PURPLE_CALLBACK(buddy_signed_off_cb), NULL);
751 purple_signal_connect(blist_handle, "blist-node-added",
752 plugin, PURPLE_CALLBACK(blist_node_added_cb), NULL);
753 purple_signal_connect(blist_handle, "blist-node-removed",
754 plugin, PURPLE_CALLBACK(blist_node_removed_cb), NULL);
755 purple_signal_connect(blist_handle, "buddy-icon-changed",
756 plugin, PURPLE_CALLBACK(buddy_icon_changed_cb), NULL);
757 purple_signal_connect(blist_handle, "blist-node-aliased",
758 plugin, PURPLE_CALLBACK(blist_node_aliased), NULL);
759 purple_signal_connect(blist_handle, "blist-node-extended-menu",
760 plugin, PURPLE_CALLBACK(blist_node_extended_menu_cb), NULL);
762 /* Connection subsystem signals */
763 purple_signal_connect(conn_handle, "signing-on",
764 plugin, PURPLE_CALLBACK(signing_on_cb), NULL);
765 purple_signal_connect(conn_handle, "signed-on",
766 plugin, PURPLE_CALLBACK(signed_on_cb), NULL);
767 purple_signal_connect(conn_handle, "signing-off",
768 plugin, PURPLE_CALLBACK(signing_off_cb), NULL);
769 purple_signal_connect(conn_handle, "signed-off",
770 plugin, PURPLE_CALLBACK(signed_off_cb), NULL);
771 purple_signal_connect(conn_handle, "connection-error",
772 plugin, PURPLE_CALLBACK(connection_error_cb), NULL);
774 /* Conversations subsystem signals */
775 purple_signal_connect(conv_handle, "writing-im-msg",
776 plugin, PURPLE_CALLBACK(writing_im_msg_cb), NULL);
777 purple_signal_connect(conv_handle, "wrote-im-msg",
778 plugin, PURPLE_CALLBACK(wrote_im_msg_cb), NULL);
779 purple_signal_connect(conv_handle, "sending-im-msg",
780 plugin, PURPLE_CALLBACK(sending_im_msg_cb), NULL);
781 purple_signal_connect(conv_handle, "sent-im-msg",
782 plugin, PURPLE_CALLBACK(sent_im_msg_cb), NULL);
783 purple_signal_connect(conv_handle, "receiving-im-msg",
784 plugin, PURPLE_CALLBACK(receiving_im_msg_cb), NULL);
785 purple_signal_connect(conv_handle, "received-im-msg",
786 plugin, PURPLE_CALLBACK(received_im_msg_cb), NULL);
787 purple_signal_connect(conv_handle, "writing-chat-msg",
788 plugin, PURPLE_CALLBACK(writing_chat_msg_cb), NULL);
789 purple_signal_connect(conv_handle, "wrote-chat-msg",
790 plugin, PURPLE_CALLBACK(wrote_chat_msg_cb), NULL);
791 purple_signal_connect(conv_handle, "sending-chat-msg",
792 plugin, PURPLE_CALLBACK(sending_chat_msg_cb), NULL);
793 purple_signal_connect(conv_handle, "sent-chat-msg",
794 plugin, PURPLE_CALLBACK(sent_chat_msg_cb), NULL);
795 purple_signal_connect(conv_handle, "receiving-chat-msg",
796 plugin, PURPLE_CALLBACK(receiving_chat_msg_cb), NULL);
797 purple_signal_connect(conv_handle, "received-chat-msg",
798 plugin, PURPLE_CALLBACK(received_chat_msg_cb), NULL);
799 purple_signal_connect(conv_handle, "conversation-created",
800 plugin, PURPLE_CALLBACK(conversation_created_cb), NULL);
801 purple_signal_connect(conv_handle, "deleting-conversation",
802 plugin, PURPLE_CALLBACK(deleting_conversation_cb), NULL);
803 purple_signal_connect(conv_handle, "buddy-typing",
804 plugin, PURPLE_CALLBACK(buddy_typing_cb), NULL);
805 purple_signal_connect(conv_handle, "buddy-typing-stopped",
806 plugin, PURPLE_CALLBACK(buddy_typing_stopped_cb), NULL);
807 purple_signal_connect(conv_handle, "chat-user-joining",
808 plugin, PURPLE_CALLBACK(chat_user_joining_cb), NULL);
809 purple_signal_connect(conv_handle, "chat-user-joined",
810 plugin, PURPLE_CALLBACK(chat_user_joined_cb), NULL);
811 purple_signal_connect(conv_handle, "chat-user-flags",
812 plugin, PURPLE_CALLBACK(chat_user_flags_cb), NULL);
813 purple_signal_connect(conv_handle, "chat-user-leaving",
814 plugin, PURPLE_CALLBACK(chat_user_leaving_cb), NULL);
815 purple_signal_connect(conv_handle, "chat-user-left",
816 plugin, PURPLE_CALLBACK(chat_user_left_cb), NULL);
817 purple_signal_connect(conv_handle, "chat-inviting-user",
818 plugin, PURPLE_CALLBACK(chat_inviting_user_cb), NULL);
819 purple_signal_connect(conv_handle, "chat-invited-user",
820 plugin, PURPLE_CALLBACK(chat_invited_user_cb), NULL);
821 purple_signal_connect(conv_handle, "chat-invited",
822 plugin, PURPLE_CALLBACK(chat_invited_cb), NULL);
823 purple_signal_connect(conv_handle, "chat-joined",
824 plugin, PURPLE_CALLBACK(chat_joined_cb), NULL);
825 purple_signal_connect(conv_handle, "chat-left",
826 plugin, PURPLE_CALLBACK(chat_left_cb), NULL);
827 purple_signal_connect(conv_handle, "chat-topic-changed",
828 plugin, PURPLE_CALLBACK(chat_topic_changed_cb), NULL);
830 /* Core signals */
831 purple_signal_connect(core_handle, "quitting",
832 plugin, PURPLE_CALLBACK(quitting_cb), NULL);
833 purple_signal_connect(core_handle, "uri-handler",
834 plugin, PURPLE_CALLBACK(uri_handler), NULL);
836 /* File transfer signals */
837 purple_signal_connect(ft_handle, "file-recv-accept",
838 plugin, PURPLE_CALLBACK(ft_recv_accept_cb), NULL);
839 purple_signal_connect(ft_handle, "file-recv-start",
840 plugin, PURPLE_CALLBACK(ft_recv_start_cb), NULL);
841 purple_signal_connect(ft_handle, "file-recv-cancel",
842 plugin, PURPLE_CALLBACK(ft_recv_cancel_cb), NULL);
843 purple_signal_connect(ft_handle, "file-recv-complete",
844 plugin, PURPLE_CALLBACK(ft_recv_complete_cb), NULL);
845 purple_signal_connect(ft_handle, "file-send-accept",
846 plugin, PURPLE_CALLBACK(ft_send_accept_cb), NULL);
847 purple_signal_connect(ft_handle, "file-send-start",
848 plugin, PURPLE_CALLBACK(ft_send_start_cb), NULL);
849 purple_signal_connect(ft_handle, "file-send-cancel",
850 plugin, PURPLE_CALLBACK(ft_send_cancel_cb), NULL);
851 purple_signal_connect(ft_handle, "file-send-complete",
852 plugin, PURPLE_CALLBACK(ft_send_complete_cb), NULL);
854 /* Sound signals */
855 purple_signal_connect(sound_handle, "playing-sound-event", plugin,
856 PURPLE_CALLBACK(sound_playing_event_cb), NULL);
858 /* Notify signals */
859 purple_signal_connect(notify_handle, "displaying-email-notification",
860 plugin, PURPLE_CALLBACK(notify_email_cb), NULL);
861 purple_signal_connect(notify_handle, "displaying-emails-notification",
862 plugin, PURPLE_CALLBACK(notify_emails_cb), NULL);
864 /* Jabber signals */
865 if (jabber_handle) {
866 purple_signal_connect(jabber_handle, "jabber-receiving-iq", plugin,
867 PURPLE_CALLBACK(jabber_iq_received), NULL);
868 purple_signal_connect(jabber_handle, "jabber-receiving-message", plugin,
869 PURPLE_CALLBACK(jabber_message_received), NULL);
870 purple_signal_connect(jabber_handle, "jabber-receiving-presence", plugin,
871 PURPLE_CALLBACK(jabber_presence_received), NULL);
873 /* IQ namespace signals */
874 purple_signal_emit(jabber_handle, "jabber-register-namespace-watcher",
875 "bogus_node", "super-duper-namespace");
876 /* The above is equivalent to doing:
877 int result = GPOINTER_TO_INT(purple_plugin_ipc_call(jabber_handle, "register_namespace_watcher", &ok, "bogus_node", "super-duper-namespace"));
880 purple_signal_connect(jabber_handle, "jabber-watched-iq", plugin,
881 PURPLE_CALLBACK(jabber_watched_iq), NULL);
884 return TRUE;
887 static gboolean
888 plugin_unload(PurplePlugin *plugin, GError **error)
890 void *jabber_handle = purple_protocols_find("prpl-jabber");
892 purple_signals_disconnect_by_handle(plugin);
894 if (jabber_handle) {
895 /* Unregister watched namespaces */
896 purple_signal_emit(jabber_handle, "jabber-unregister-namespace-watcher",
897 "bogus_node", "super-duper-namespace");
898 /* The above is equivalent to doing:
899 int result = GPOINTER_TO_INT(purple_plugin_ipc_call(jabber_handle, "unregister_namespace_watcher", &ok, "bogus_node", "super-duper-namespace"));
903 return TRUE;
906 PURPLE_PLUGIN_INIT(signalstest, plugin_query, plugin_load, plugin_unload);