applied changes from fb4435d514398a0b1febebe8bf46339e2c2b52b6
[pidgin-git.git] / libpurple / plugins / signals-test.c
blob2992d4dc15a7ffcd2f750287927a344974eb83b9
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"
25 #include <stdio.h>
27 #include "cipher.h"
28 #include "connection.h"
29 #include "conversation.h"
30 #include "core.h"
31 #include "debug.h"
32 #include "ft.h"
33 #include "signals.h"
34 #include "version.h"
35 #include "status.h"
36 #include "sound.h"
38 /**************************************************************************
39 * Account subsystem signal callbacks
40 **************************************************************************/
41 static void
42 account_connecting_cb(PurpleAccount *account, void *data)
44 purple_debug_misc("signals test", "account-connecting (%s)\n",
45 purple_account_get_username(account));
48 static void
49 account_setting_info_cb(PurpleAccount *account, const char *info, void *data)
51 purple_debug_misc("signals test", "account-setting-info (%s, %s)\n",
52 purple_account_get_username(account), info);
55 static void
56 account_set_info_cb(PurpleAccount *account, const char *info, void *data)
58 purple_debug_misc("signals test", "account-set-info (%s, %s)\n",
59 purple_account_get_username(account), info);
62 static void
63 account_status_changed(PurpleAccount *account, PurpleStatus *old, PurpleStatus *new,
64 gpointer data)
66 purple_debug_misc("signals test", "account-status-changed (%s, %s, %s)\n",
67 purple_account_get_username(account),
68 purple_status_get_name(old),
69 purple_status_get_name(new));
72 static void
73 account_alias_changed(PurpleAccount *account, const char *old, gpointer data)
75 purple_debug_misc("signals test", "account-alias-changed (%s, %s, %s)\n",
76 purple_account_get_username(account),
77 old, purple_account_get_alias(account));
80 static int
81 account_authorization_requested_cb(PurpleAccount *account, const char *user, gpointer data)
83 purple_debug_misc("signals test", "account-authorization-requested (%s, %s)\n",
84 purple_account_get_username(account), user);
85 return 0;
88 static void
89 account_authorization_granted_cb(PurpleAccount *account, const char *user, gpointer data)
91 purple_debug_misc("signals test", "account-authorization-granted (%s, %s)\n",
92 purple_account_get_username(account), user);
95 static void
96 account_authorization_denied_cb(PurpleAccount *account, const char *user, gpointer data)
98 purple_debug_misc("signals test", "account-authorization-denied (%s, %s)\n",
99 purple_account_get_username(account), user);
102 /**************************************************************************
103 * Buddy Icons signal callbacks
104 **************************************************************************/
105 static void
106 buddy_icon_changed_cb(PurpleBuddy *buddy)
108 purple_debug_misc("signals test", "buddy icon changed (%s)\n",
109 purple_buddy_get_name(buddy));
112 /**************************************************************************
113 * Buddy List subsystem signal callbacks
114 **************************************************************************/
115 static void
116 buddy_status_changed_cb(PurpleBuddy *buddy, PurpleStatus *old_status,
117 PurpleStatus *status, void *data)
119 purple_debug_misc("signals test", "buddy-status-changed (%s %s to %s)\n",
120 purple_buddy_get_name(buddy),
121 purple_status_get_id(old_status),
122 purple_status_get_id(status));
125 static void
126 buddy_idle_changed_cb(PurpleBuddy *buddy, gboolean old_idle, gboolean idle,
127 void *data)
129 purple_debug_misc("signals test", "buddy-idle-changed (%s %s)\n",
130 purple_buddy_get_name(buddy),
131 old_idle ? "unidled" : "idled");
134 static void
135 buddy_signed_on_cb(PurpleBuddy *buddy, void *data)
137 purple_debug_misc("signals test", "buddy-signed-on (%s)\n",
138 purple_buddy_get_name(buddy));
141 static void
142 buddy_signed_off_cb(PurpleBuddy *buddy, void *data)
144 purple_debug_misc("signals test", "buddy-signed-off (%s)\n",
145 purple_buddy_get_name(buddy));
148 static void
149 blist_node_added_cb(PurpleBlistNode *bnode, void *data)
151 const char *name;
152 if (PURPLE_BLIST_NODE_IS_GROUP(bnode))
153 name = purple_group_get_name(PURPLE_GROUP(bnode));
154 else if (PURPLE_BLIST_NODE_IS_CONTACT(bnode))
155 /* Close enough */
156 name = purple_contact_get_alias(PURPLE_CONTACT(bnode));
157 else if (PURPLE_BLIST_NODE_IS_BUDDY(bnode))
158 name = purple_buddy_get_name(PURPLE_BUDDY(bnode));
159 else
160 name = "(unknown)";
162 purple_debug_misc("signals test", "blist_node_added_cb (%s)\n",
163 name ? name : "(null)");
166 static void
167 blist_node_removed_cb(PurpleBlistNode *bnode, void *data)
169 const char *name;
170 if (PURPLE_BLIST_NODE_IS_GROUP(bnode))
171 name = purple_group_get_name(PURPLE_GROUP(bnode));
172 else if (PURPLE_BLIST_NODE_IS_CONTACT(bnode))
173 /* Close enough */
174 name = purple_contact_get_alias(PURPLE_CONTACT(bnode));
175 else if (PURPLE_BLIST_NODE_IS_BUDDY(bnode))
176 name = purple_buddy_get_name(PURPLE_BUDDY(bnode));
177 else
178 name = "(unknown)";
180 purple_debug_misc("signals test", "blist_node_removed_cb (%s)\n",
181 name ? name : "(null)");
184 static void
185 blist_node_aliased(PurpleBlistNode *node, const char *old_alias)
187 PurpleContact *p = (PurpleContact *)node;
188 PurpleBuddy *b = (PurpleBuddy *)node;
189 PurpleChat *c = (PurpleChat *)node;
190 PurpleGroup *g = (PurpleGroup *)node;
192 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
193 purple_debug_misc("signals test",
194 "blist-node-aliased (Contact: %s, %s)\n",
195 purple_contact_get_alias(p), old_alias);
196 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
197 purple_debug_misc("signals test",
198 "blist-node-aliased (Buddy: %s, %s)\n",
199 purple_buddy_get_name(b), old_alias);
200 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
201 purple_debug_misc("signals test",
202 "blist-node-aliased (Chat: %s, %s)\n",
203 purple_chat_get_name(c), old_alias);
204 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
205 purple_debug_misc("signals test",
206 "blist-node-aliased (Group: %s, %s)\n",
207 purple_group_get_name(g), old_alias);
208 } else {
209 purple_debug_misc("signals test",
210 "blist-node-aliased (UNKNOWN: %d, %s)\n",
211 purple_blist_node_get_type(node), old_alias);
215 static void
216 blist_node_extended_menu_cb(PurpleBlistNode *node, void *data)
218 PurpleContact *p = (PurpleContact *)node;
219 PurpleBuddy *b = (PurpleBuddy *)node;
220 PurpleChat *c = (PurpleChat *)node;
221 PurpleGroup *g = (PurpleGroup *)node;
223 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
224 purple_debug_misc("signals test",
225 "blist-node-extended-menu (Contact: %s)\n",
226 purple_contact_get_alias(p));
227 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
228 purple_debug_misc("signals test",
229 "blist-node-extended-menu (Buddy: %s)\n",
230 purple_buddy_get_name(b));
231 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
232 purple_debug_misc("signals test",
233 "blist-node-extended-menu (Chat: %s)\n",
234 purple_chat_get_name(c));
235 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
236 purple_debug_misc("signals test",
237 "blist-node-extended-menu (Group: %s)\n",
238 purple_group_get_name(g));
239 } else {
240 purple_debug_misc("signals test",
241 "blist-node-extended-menu (UNKNOWN: %d)\n",
242 purple_blist_node_get_type(node));
247 /**************************************************************************
248 * Connection subsystem signal callbacks
249 **************************************************************************/
250 static void
251 signing_on_cb(PurpleConnection *gc, void *data)
253 purple_debug_misc("signals test", "signing-on (%s)\n",
254 purple_account_get_username(purple_connection_get_account(gc)));
257 static void
258 signed_on_cb(PurpleConnection *gc, void *data)
260 purple_debug_misc("signals test", "signed-on (%s)\n",
261 purple_account_get_username(purple_connection_get_account(gc)));
264 static void
265 signing_off_cb(PurpleConnection *gc, void *data)
267 purple_debug_misc("signals test", "signing-off (%s)\n",
268 purple_account_get_username(purple_connection_get_account(gc)));
271 static void
272 signed_off_cb(PurpleConnection *gc, void *data)
274 purple_debug_misc("signals test", "signed-off (%s)\n",
275 purple_account_get_username(purple_connection_get_account(gc)));
278 static void
279 connection_error_cb(PurpleConnection *gc,
280 PurpleConnectionError err,
281 const gchar *desc,
282 void *data)
284 const gchar *username =
285 purple_account_get_username(purple_connection_get_account(gc));
286 purple_debug_misc("signals test", "connection-error (%s, %u, %s)\n",
287 username, err, desc);
290 /**************************************************************************
291 * Conversation subsystem signal callbacks
292 **************************************************************************/
293 static gboolean
294 writing_im_msg_cb(PurpleAccount *account, const char *who, char **buffer,
295 PurpleConversation *conv, PurpleMessageFlags flags, void *data)
297 purple_debug_misc("signals test", "writing-im-msg (%s, %s, %s)\n",
298 purple_account_get_username(account), purple_conversation_get_name(conv), *buffer);
300 return FALSE;
304 static void
305 wrote_im_msg_cb(PurpleAccount *account, const char *who, const char *buffer,
306 PurpleConversation *conv, PurpleMessageFlags flags, void *data)
308 purple_debug_misc("signals test", "wrote-im-msg (%s, %s, %s)\n",
309 purple_account_get_username(account), purple_conversation_get_name(conv), buffer);
312 static void
313 sending_im_msg_cb(PurpleAccount *account, char *recipient, char **buffer, void *data)
315 purple_debug_misc("signals test", "sending-im-msg (%s, %s, %s)\n",
316 purple_account_get_username(account), recipient, *buffer);
320 static void
321 sent_im_msg_cb(PurpleAccount *account, const char *recipient, const char *buffer, void *data)
323 purple_debug_misc("signals test", "sent-im-msg (%s, %s, %s)\n",
324 purple_account_get_username(account), recipient, buffer);
327 static gboolean
328 receiving_im_msg_cb(PurpleAccount *account, char **sender, char **buffer,
329 PurpleConversation *conv, PurpleMessageFlags *flags, void *data)
331 purple_debug_misc("signals test", "receiving-im-msg (%s, %s, %s, %s, %d)\n",
332 purple_account_get_username(account), *sender, *buffer,
333 (conv != NULL) ? purple_conversation_get_name(conv) : "(null)", *flags);
335 return FALSE;
338 static void
339 received_im_msg_cb(PurpleAccount *account, char *sender, char *buffer,
340 PurpleConversation *conv, PurpleMessageFlags flags, void *data)
342 purple_debug_misc("signals test", "received-im-msg (%s, %s, %s, %s, %d)\n",
343 purple_account_get_username(account), sender, buffer,
344 (conv != NULL) ? purple_conversation_get_name(conv) : "(null)", flags);
347 static gboolean
348 writing_chat_msg_cb(PurpleAccount *account, const char *who, char **buffer,
349 PurpleConversation *conv, PurpleMessageFlags flags, void *data)
351 purple_debug_misc("signals test", "writing-chat-msg (%s, %s)\n",
352 purple_conversation_get_name(conv), *buffer);
354 return FALSE;
357 static void
358 wrote_chat_msg_cb(PurpleAccount *account, const char *who, const char *buffer,
359 PurpleConversation *conv, PurpleMessageFlags flags, void *data)
361 purple_debug_misc("signals test", "wrote-chat-msg (%s, %s)\n",
362 purple_conversation_get_name(conv), buffer);
365 static gboolean
366 sending_chat_msg_cb(PurpleAccount *account, char **buffer, int id, void *data)
368 purple_debug_misc("signals test", "sending-chat-msg (%s, %s, %d)\n",
369 purple_account_get_username(account), *buffer, id);
371 return FALSE;
374 static void
375 sent_chat_msg_cb(PurpleAccount *account, const char *buffer, int id, void *data)
377 purple_debug_misc("signals test", "sent-chat-msg (%s, %s, %d)\n",
378 purple_account_get_username(account), buffer, id);
381 static gboolean
382 receiving_chat_msg_cb(PurpleAccount *account, char **sender, char **buffer,
383 PurpleConversation *chat, PurpleMessageFlags *flags, void *data)
385 purple_debug_misc("signals test",
386 "receiving-chat-msg (%s, %s, %s, %s, %d)\n",
387 purple_account_get_username(account), *sender, *buffer,
388 purple_conversation_get_name(chat), *flags);
390 return FALSE;
393 static void
394 received_chat_msg_cb(PurpleAccount *account, char *sender, char *buffer,
395 PurpleConversation *chat, PurpleMessageFlags flags, void *data)
397 purple_debug_misc("signals test",
398 "received-chat-msg (%s, %s, %s, %s, %d)\n",
399 purple_account_get_username(account), sender, buffer,
400 purple_conversation_get_name(chat), flags);
403 static void
404 conversation_created_cb(PurpleConversation *conv, void *data)
406 purple_debug_misc("signals test", "conversation-created (%s)\n",
407 purple_conversation_get_name(conv));
410 static void
411 deleting_conversation_cb(PurpleConversation *conv, void *data)
413 purple_debug_misc("signals test", "deleting-conversation (%s)\n",
414 purple_conversation_get_name(conv));
417 static void
418 buddy_typing_cb(PurpleAccount *account, const char *name, void *data)
420 purple_debug_misc("signals test", "buddy-typing (%s, %s)\n",
421 purple_account_get_username(account), name);
424 static void
425 buddy_typing_stopped_cb(PurpleAccount *account, const char *name, void *data)
427 purple_debug_misc("signals test", "buddy-typing-stopped (%s, %s)\n",
428 purple_account_get_username(account), name);
431 static gboolean
432 chat_buddy_joining_cb(PurpleConversation *conv, const char *user,
433 PurpleConvChatBuddyFlags flags, void *data)
435 purple_debug_misc("signals test", "chat-buddy-joining (%s, %s, %d)\n",
436 purple_conversation_get_name(conv), user, flags);
438 return FALSE;
441 static void
442 chat_buddy_joined_cb(PurpleConversation *conv, const char *user,
443 PurpleConvChatBuddyFlags flags, gboolean new_arrival, void *data)
445 purple_debug_misc("signals test", "chat-buddy-joined (%s, %s, %d, %d)\n",
446 purple_conversation_get_name(conv), user, flags, new_arrival);
449 static void
450 chat_buddy_flags_cb(PurpleConversation *conv, const char *user,
451 PurpleConvChatBuddyFlags oldflags, PurpleConvChatBuddyFlags newflags, void *data)
453 purple_debug_misc("signals test", "chat-buddy-flags (%s, %s, %d, %d)\n",
454 purple_conversation_get_name(conv), user, oldflags, newflags);
457 static gboolean
458 chat_buddy_leaving_cb(PurpleConversation *conv, const char *user,
459 const char *reason, void *data)
461 purple_debug_misc("signals test", "chat-buddy-leaving (%s, %s, %s)\n",
462 purple_conversation_get_name(conv), user, reason);
464 return FALSE;
467 static void
468 chat_buddy_left_cb(PurpleConversation *conv, const char *user,
469 const char *reason, void *data)
471 purple_debug_misc("signals test", "chat-buddy-left (%s, %s, %s)\n",
472 purple_conversation_get_name(conv), user, reason);
475 static void
476 chat_inviting_user_cb(PurpleConversation *conv, const char *name,
477 char **reason, void *data)
479 purple_debug_misc("signals test", "chat-inviting-user (%s, %s, %s)\n",
480 purple_conversation_get_name(conv), name, *reason);
483 static void
484 chat_invited_user_cb(PurpleConversation *conv, const char *name,
485 const char *reason, void *data)
487 purple_debug_misc("signals test", "chat-invited-user (%s, %s, %s)\n",
488 purple_conversation_get_name(conv), name, reason);
491 static gint
492 chat_invited_cb(PurpleAccount *account, const char *inviter,
493 const char *room_name, const char *message,
494 const GHashTable *components, void *data)
496 purple_debug_misc("signals test", "chat-invited (%s, %s, %s, %s)\n",
497 purple_account_get_username(account), inviter,
498 room_name, message);
500 return 0;
503 static void
504 chat_joined_cb(PurpleConversation *conv, void *data)
506 purple_debug_misc("signals test", "chat-joined (%s)\n",
507 purple_conversation_get_name(conv));
510 static void
511 chat_left_cb(PurpleConversation *conv, void *data)
513 purple_debug_misc("signals test", "chat-left (%s)\n",
514 purple_conversation_get_name(conv));
517 static void
518 chat_topic_changed_cb(PurpleConversation *conv, const char *who,
519 const char *topic, void *data)
521 purple_debug_misc("signals test",
522 "chat-topic-changed (%s topic changed to: \"%s\" by %s)\n",
523 purple_conversation_get_name(conv), topic,
524 (who) ? who : "unknown");
526 /**************************************************************************
527 * Ciphers signal callbacks
528 **************************************************************************/
529 static void
530 cipher_added_cb(PurpleCipher *cipher, void *data) {
531 purple_debug_misc("signals test", "cipher %s added\n",
532 purple_cipher_get_name(cipher));
535 static void
536 cipher_removed_cb(PurpleCipher *cipher, void *data) {
537 purple_debug_misc("signals test", "cipher %s removed\n",
538 purple_cipher_get_name(cipher));
541 /**************************************************************************
542 * Core signal callbacks
543 **************************************************************************/
544 static void
545 quitting_cb(void *data)
547 purple_debug_misc("signals test", "quitting ()\n");
550 static void
551 printhash(gpointer key, gpointer value, gpointer data)
553 char *a = (char *)key;
554 char *b = (char *)value;
555 GString *str = (GString *)data;
556 g_string_append_printf(str, " [%s] = [%s]\n", a, b ? b : "(null)");
559 static gboolean
560 uri_handler(const char *proto, const char *cmd, GHashTable *params)
562 GString *str = g_string_new("\n{\n");
563 g_hash_table_foreach(params, printhash, str);
564 g_string_append_c(str, '}');
565 purple_debug_misc("signals test", "uri handler (%s, %s, %s)\n", proto, cmd, str->str);
566 g_string_free(str, TRUE);
567 return FALSE;
570 /**************************************************************************
571 * File transfer signal callbacks
572 **************************************************************************/
573 static void
574 ft_recv_accept_cb(PurpleXfer *xfer, gpointer data) {
575 purple_debug_misc("signals test", "file receive accepted\n");
578 static void
579 ft_send_accept_cb(PurpleXfer *xfer, gpointer data) {
580 purple_debug_misc("signals test", "file send accepted\n");
583 static void
584 ft_recv_start_cb(PurpleXfer *xfer, gpointer data) {
585 purple_debug_misc("signals test", "file receive started\n");
588 static void
589 ft_send_start_cb(PurpleXfer *xfer, gpointer data) {
590 purple_debug_misc("signals test", "file send started\n");
593 static void
594 ft_recv_cancel_cb(PurpleXfer *xfer, gpointer data) {
595 purple_debug_misc("signals test", "file receive cancelled\n");
598 static void
599 ft_send_cancel_cb(PurpleXfer *xfer, gpointer data) {
600 purple_debug_misc("signals test", "file send cancelled\n");
603 static void
604 ft_recv_complete_cb(PurpleXfer *xfer, gpointer data) {
605 purple_debug_misc("signals test", "file receive completed\n");
608 static void
609 ft_send_complete_cb(PurpleXfer *xfer, gpointer data) {
610 purple_debug_misc("signals test", "file send completed\n");
613 /**************************************************************************
614 * Sound signal callbacks
615 **************************************************************************/
616 static int
617 sound_playing_event_cb(PurpleSoundEventID event, const PurpleAccount *account) {
618 if (account != NULL)
619 purple_debug_misc("signals test", "sound playing event: %d for account: %s\n",
620 event, purple_account_get_username(account));
621 else
622 purple_debug_misc("signals test", "sound playing event: %d\n", event);
624 return 0;
627 /**************************************************************************
628 * Notify signals callbacks
629 **************************************************************************/
630 static void
631 notify_email_cb(char *subject, char *from, char *to, char *url) {
632 purple_debug_misc("signals test", "notify email: subject=%s, from=%s, to=%s, url=%s\n",
633 subject, from, to, url);
636 static void
637 notify_emails_cb(char **subjects, char **froms, char **tos, char **urls, guint count) {
638 int i;
639 purple_debug_misc("signals test", "notify emails: count=%d\n", count);
640 for(i=0; i<count && i<5; i++) {
641 if(subjects[i]==NULL || froms[i]==NULL || tos[i]==NULL || urls[i]==NULL) continue;
642 purple_debug_misc("signals test", "notify emails[%d]: subject=%s, from=%s, to=%s, url=%s\n",
643 i, subjects[i], froms[i], tos[i], urls[i]);
647 /**************************************************************************
648 * Jabber signals callbacks
649 **************************************************************************/
650 static gboolean
651 jabber_iq_received(PurpleConnection *pc, const char *type, const char *id,
652 const char *from, xmlnode *iq)
654 purple_debug_misc("signals test", "jabber IQ (type=%s, id=%s, from=%s) %p\n",
655 type, id, from ? from : "(null)", iq);
657 /* We don't want the plugin to stop processing */
658 return FALSE;
661 static gboolean
662 jabber_message_received(PurpleConnection *pc, const char *type, const char *id,
663 const char *from, const char *to, xmlnode *message)
665 purple_debug_misc("signals test", "jabber message (type=%s, id=%s, "
666 "from=%s to=%s) %p\n",
667 type ? type : "(null)", id ? id : "(null)",
668 from ? from : "(null)", to ? to : "(null)", message);
670 /* We don't want the plugin to stop processing */
671 return FALSE;
674 static gboolean
675 jabber_presence_received(PurpleConnection *pc, const char *type,
676 const char *from, xmlnode *presence)
678 purple_debug_misc("signals test", "jabber presence (type=%s, from=%s) %p\n",
679 type ? type : "(null)", from ? from : "(null)", presence);
681 /* We don't want the plugin to stop processing */
682 return FALSE;
685 static gboolean
686 jabber_watched_iq(PurpleConnection *pc, const char *type, const char *id,
687 const char *from, xmlnode *child)
689 purple_debug_misc("signals test", "jabber watched IQ (type=%s, id=%s, from=%s)\n"
690 "child %p name=%s, namespace=%s\n",
691 type, id, from, child, child->name,
692 xmlnode_get_namespace(child));
694 if (g_str_equal(type, "get") || g_str_equal(type, "set")) {
695 /* Send the requisite reply */
696 xmlnode *iq = xmlnode_new("iq");
697 xmlnode_set_attrib(iq, "to", from);
698 xmlnode_set_attrib(iq, "id", id);
699 xmlnode_set_attrib(iq, "type", "result");
701 purple_signal_emit(purple_connection_get_prpl(pc),
702 "jabber-sending-xmlnode", pc, &iq);
703 if (iq != NULL)
704 xmlnode_free(iq);
707 /* Cookie monster eats IQ stanzas; the prpl shouldn't keep processing */
708 return TRUE;
711 /**************************************************************************
712 * Plugin stuff
713 **************************************************************************/
714 static gboolean
715 plugin_load(PurplePlugin *plugin)
717 void *core_handle = purple_get_core();
718 void *blist_handle = purple_blist_get_handle();
719 void *conn_handle = purple_connections_get_handle();
720 void *conv_handle = purple_conversations_get_handle();
721 void *accounts_handle = purple_accounts_get_handle();
722 void *ciphers_handle = purple_ciphers_get_handle();
723 void *ft_handle = purple_xfers_get_handle();
724 void *sound_handle = purple_sounds_get_handle();
725 void *notify_handle = purple_notify_get_handle();
726 void *jabber_handle = purple_plugins_find_with_id("prpl-jabber");
728 /* Accounts subsystem signals */
729 purple_signal_connect(accounts_handle, "account-connecting",
730 plugin, PURPLE_CALLBACK(account_connecting_cb), NULL);
731 purple_signal_connect(accounts_handle, "account-setting-info",
732 plugin, PURPLE_CALLBACK(account_setting_info_cb), NULL);
733 purple_signal_connect(accounts_handle, "account-set-info",
734 plugin, PURPLE_CALLBACK(account_set_info_cb), NULL);
735 purple_signal_connect(accounts_handle, "account-status-changed",
736 plugin, PURPLE_CALLBACK(account_status_changed), NULL);
737 purple_signal_connect(accounts_handle, "account-alias-changed",
738 plugin, PURPLE_CALLBACK(account_alias_changed), NULL);
739 purple_signal_connect(accounts_handle, "account-authorization-requested",
740 plugin, PURPLE_CALLBACK(account_authorization_requested_cb), NULL);
741 purple_signal_connect(accounts_handle, "account-authorization-denied",
742 plugin, PURPLE_CALLBACK(account_authorization_denied_cb), NULL);
743 purple_signal_connect(accounts_handle, "account-authorization-granted",
744 plugin, PURPLE_CALLBACK(account_authorization_granted_cb), NULL);
746 /* Buddy List subsystem signals */
747 purple_signal_connect(blist_handle, "buddy-status-changed",
748 plugin, PURPLE_CALLBACK(buddy_status_changed_cb), NULL);
749 purple_signal_connect(blist_handle, "buddy-idle-changed",
750 plugin, PURPLE_CALLBACK(buddy_idle_changed_cb), NULL);
751 purple_signal_connect(blist_handle, "buddy-signed-on",
752 plugin, PURPLE_CALLBACK(buddy_signed_on_cb), NULL);
753 purple_signal_connect(blist_handle, "buddy-signed-off",
754 plugin, PURPLE_CALLBACK(buddy_signed_off_cb), NULL);
755 purple_signal_connect(blist_handle, "blist-node-added",
756 plugin, PURPLE_CALLBACK(blist_node_added_cb), NULL);
757 purple_signal_connect(blist_handle, "blist-node-removed",
758 plugin, PURPLE_CALLBACK(blist_node_removed_cb), NULL);
759 purple_signal_connect(blist_handle, "buddy-icon-changed",
760 plugin, PURPLE_CALLBACK(buddy_icon_changed_cb), NULL);
761 purple_signal_connect(blist_handle, "blist-node-aliased",
762 plugin, PURPLE_CALLBACK(blist_node_aliased), NULL);
763 purple_signal_connect(blist_handle, "blist-node-extended-menu",
764 plugin, PURPLE_CALLBACK(blist_node_extended_menu_cb), NULL);
766 /* Connection subsystem signals */
767 purple_signal_connect(conn_handle, "signing-on",
768 plugin, PURPLE_CALLBACK(signing_on_cb), NULL);
769 purple_signal_connect(conn_handle, "signed-on",
770 plugin, PURPLE_CALLBACK(signed_on_cb), NULL);
771 purple_signal_connect(conn_handle, "signing-off",
772 plugin, PURPLE_CALLBACK(signing_off_cb), NULL);
773 purple_signal_connect(conn_handle, "signed-off",
774 plugin, PURPLE_CALLBACK(signed_off_cb), NULL);
775 purple_signal_connect(conn_handle, "connection-error",
776 plugin, PURPLE_CALLBACK(connection_error_cb), NULL);
778 /* Conversations subsystem signals */
779 purple_signal_connect(conv_handle, "writing-im-msg",
780 plugin, PURPLE_CALLBACK(writing_im_msg_cb), NULL);
781 purple_signal_connect(conv_handle, "wrote-im-msg",
782 plugin, PURPLE_CALLBACK(wrote_im_msg_cb), NULL);
783 purple_signal_connect(conv_handle, "sending-im-msg",
784 plugin, PURPLE_CALLBACK(sending_im_msg_cb), NULL);
785 purple_signal_connect(conv_handle, "sent-im-msg",
786 plugin, PURPLE_CALLBACK(sent_im_msg_cb), NULL);
787 purple_signal_connect(conv_handle, "receiving-im-msg",
788 plugin, PURPLE_CALLBACK(receiving_im_msg_cb), NULL);
789 purple_signal_connect(conv_handle, "received-im-msg",
790 plugin, PURPLE_CALLBACK(received_im_msg_cb), NULL);
791 purple_signal_connect(conv_handle, "writing-chat-msg",
792 plugin, PURPLE_CALLBACK(writing_chat_msg_cb), NULL);
793 purple_signal_connect(conv_handle, "wrote-chat-msg",
794 plugin, PURPLE_CALLBACK(wrote_chat_msg_cb), NULL);
795 purple_signal_connect(conv_handle, "sending-chat-msg",
796 plugin, PURPLE_CALLBACK(sending_chat_msg_cb), NULL);
797 purple_signal_connect(conv_handle, "sent-chat-msg",
798 plugin, PURPLE_CALLBACK(sent_chat_msg_cb), NULL);
799 purple_signal_connect(conv_handle, "receiving-chat-msg",
800 plugin, PURPLE_CALLBACK(receiving_chat_msg_cb), NULL);
801 purple_signal_connect(conv_handle, "received-chat-msg",
802 plugin, PURPLE_CALLBACK(received_chat_msg_cb), NULL);
803 purple_signal_connect(conv_handle, "conversation-created",
804 plugin, PURPLE_CALLBACK(conversation_created_cb), NULL);
805 purple_signal_connect(conv_handle, "deleting-conversation",
806 plugin, PURPLE_CALLBACK(deleting_conversation_cb), NULL);
807 purple_signal_connect(conv_handle, "buddy-typing",
808 plugin, PURPLE_CALLBACK(buddy_typing_cb), NULL);
809 purple_signal_connect(conv_handle, "buddy-typing-stopped",
810 plugin, PURPLE_CALLBACK(buddy_typing_stopped_cb), NULL);
811 purple_signal_connect(conv_handle, "chat-buddy-joining",
812 plugin, PURPLE_CALLBACK(chat_buddy_joining_cb), NULL);
813 purple_signal_connect(conv_handle, "chat-buddy-joined",
814 plugin, PURPLE_CALLBACK(chat_buddy_joined_cb), NULL);
815 purple_signal_connect(conv_handle, "chat-buddy-flags",
816 plugin, PURPLE_CALLBACK(chat_buddy_flags_cb), NULL);
817 purple_signal_connect(conv_handle, "chat-buddy-leaving",
818 plugin, PURPLE_CALLBACK(chat_buddy_leaving_cb), NULL);
819 purple_signal_connect(conv_handle, "chat-buddy-left",
820 plugin, PURPLE_CALLBACK(chat_buddy_left_cb), NULL);
821 purple_signal_connect(conv_handle, "chat-inviting-user",
822 plugin, PURPLE_CALLBACK(chat_inviting_user_cb), NULL);
823 purple_signal_connect(conv_handle, "chat-invited-user",
824 plugin, PURPLE_CALLBACK(chat_invited_user_cb), NULL);
825 purple_signal_connect(conv_handle, "chat-invited",
826 plugin, PURPLE_CALLBACK(chat_invited_cb), NULL);
827 purple_signal_connect(conv_handle, "chat-joined",
828 plugin, PURPLE_CALLBACK(chat_joined_cb), NULL);
829 purple_signal_connect(conv_handle, "chat-left",
830 plugin, PURPLE_CALLBACK(chat_left_cb), NULL);
831 purple_signal_connect(conv_handle, "chat-topic-changed",
832 plugin, PURPLE_CALLBACK(chat_topic_changed_cb), NULL);
834 /* Ciphers signals */
835 purple_signal_connect(ciphers_handle, "cipher-added",
836 plugin, PURPLE_CALLBACK(cipher_added_cb), NULL);
837 purple_signal_connect(ciphers_handle, "cipher-removed",
838 plugin, PURPLE_CALLBACK(cipher_removed_cb), NULL);
840 /* Core signals */
841 purple_signal_connect(core_handle, "quitting",
842 plugin, PURPLE_CALLBACK(quitting_cb), NULL);
843 purple_signal_connect(core_handle, "uri-handler",
844 plugin, PURPLE_CALLBACK(uri_handler), NULL);
846 /* File transfer signals */
847 purple_signal_connect(ft_handle, "file-recv-accept",
848 plugin, PURPLE_CALLBACK(ft_recv_accept_cb), NULL);
849 purple_signal_connect(ft_handle, "file-recv-start",
850 plugin, PURPLE_CALLBACK(ft_recv_start_cb), NULL);
851 purple_signal_connect(ft_handle, "file-recv-cancel",
852 plugin, PURPLE_CALLBACK(ft_recv_cancel_cb), NULL);
853 purple_signal_connect(ft_handle, "file-recv-complete",
854 plugin, PURPLE_CALLBACK(ft_recv_complete_cb), NULL);
855 purple_signal_connect(ft_handle, "file-send-accept",
856 plugin, PURPLE_CALLBACK(ft_send_accept_cb), NULL);
857 purple_signal_connect(ft_handle, "file-send-start",
858 plugin, PURPLE_CALLBACK(ft_send_start_cb), NULL);
859 purple_signal_connect(ft_handle, "file-send-cancel",
860 plugin, PURPLE_CALLBACK(ft_send_cancel_cb), NULL);
861 purple_signal_connect(ft_handle, "file-send-complete",
862 plugin, PURPLE_CALLBACK(ft_send_complete_cb), NULL);
864 /* Sound signals */
865 purple_signal_connect(sound_handle, "playing-sound-event", plugin,
866 PURPLE_CALLBACK(sound_playing_event_cb), NULL);
868 /* Notify signals */
869 purple_signal_connect(notify_handle, "displaying-email-notification",
870 plugin, PURPLE_CALLBACK(notify_email_cb), NULL);
871 purple_signal_connect(notify_handle, "displaying-emails-notification",
872 plugin, PURPLE_CALLBACK(notify_emails_cb), NULL);
874 /* Jabber signals */
875 if (jabber_handle) {
876 purple_signal_connect(jabber_handle, "jabber-receiving-iq", plugin,
877 PURPLE_CALLBACK(jabber_iq_received), NULL);
878 purple_signal_connect(jabber_handle, "jabber-receiving-message", plugin,
879 PURPLE_CALLBACK(jabber_message_received), NULL);
880 purple_signal_connect(jabber_handle, "jabber-receiving-presence", plugin,
881 PURPLE_CALLBACK(jabber_presence_received), NULL);
883 /* IQ namespace signals */
884 purple_signal_emit(jabber_handle, "jabber-register-namespace-watcher",
885 "bogus_node", "super-duper-namespace");
886 /* The above is equivalent to doing:
887 int result = GPOINTER_TO_INT(purple_plugin_ipc_call(jabber_handle, "register_namespace_watcher", &ok, "bogus_node", "super-duper-namespace"));
890 purple_signal_connect(jabber_handle, "jabber-watched-iq", plugin,
891 PURPLE_CALLBACK(jabber_watched_iq), NULL);
894 return TRUE;
897 static gboolean
898 plugin_unload(PurplePlugin *plugin)
900 void *jabber_handle = purple_plugins_find_with_id("prpl-jabber");
902 purple_signals_disconnect_by_handle(plugin);
904 if (jabber_handle) {
905 /* Unregister watched namespaces */
906 purple_signal_emit(jabber_handle, "jabber-unregister-namespace-watcher",
907 "bogus_node", "super-duper-namespace");
908 /* The above is equivalent to doing:
909 int result = GPOINTER_TO_INT(purple_plugin_ipc_call(jabber_handle, "unregister_namespace_watcher", &ok, "bogus_node", "super-duper-namespace"));
913 return TRUE;
916 static PurplePluginInfo info =
918 PURPLE_PLUGIN_MAGIC,
919 PURPLE_MAJOR_VERSION,
920 PURPLE_MINOR_VERSION,
921 PURPLE_PLUGIN_STANDARD, /**< type */
922 NULL, /**< ui_requirement */
923 0, /**< flags */
924 NULL, /**< dependencies */
925 PURPLE_PRIORITY_DEFAULT, /**< priority */
927 SIGNAL_TEST_PLUGIN_ID, /**< id */
928 N_("Signals Test"), /**< name */
929 DISPLAY_VERSION, /**< version */
930 /** summary */
931 N_("Test to see that all signals are working properly."),
932 /** description */
933 N_("Test to see that all signals are working properly."),
934 "Christian Hammond <chipx86@gnupdate.org>", /**< author */
935 PURPLE_WEBSITE, /**< homepage */
937 plugin_load, /**< load */
938 plugin_unload, /**< unload */
939 NULL, /**< destroy */
941 NULL, /**< ui_info */
942 NULL, /**< extra_info */
943 NULL,
944 NULL,
945 /* Padding */
946 NULL,
947 NULL,
948 NULL,
949 NULL
952 static void
953 init_plugin(PurplePlugin *plugin)
957 PURPLE_INIT_PLUGIN(signalstest, init_plugin, info)