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
21 #define SIGNAL_TEST_PLUGIN_ID "core-signals-test"
28 /**************************************************************************
29 * Account subsystem signal callbacks
30 **************************************************************************/
32 account_connecting_cb(PurpleAccount
*account
, void *data
)
34 purple_debug_misc("signals test", "account-connecting (%s)\n",
35 purple_account_get_username(account
));
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
);
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
);
53 account_status_changed(PurpleAccount
*account
, PurpleStatus
*old
, PurpleStatus
*new,
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));
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
));
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
;
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
);
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 **************************************************************************/
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 **************************************************************************/
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
));
116 buddy_idle_changed_cb(PurpleBuddy
*buddy
, gboolean old_idle
, gboolean idle
,
119 purple_debug_misc("signals test", "buddy-idle-changed (%s %s)\n",
120 purple_buddy_get_name(buddy
),
121 old_idle
? "unidled" : "idled");
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
));
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
));
139 blist_node_added_cb(PurpleBlistNode
*bnode
, void *data
)
142 if (PURPLE_IS_GROUP(bnode
))
143 name
= purple_group_get_name(PURPLE_GROUP(bnode
));
144 else if (PURPLE_IS_CONTACT(bnode
))
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
));
152 purple_debug_misc("signals test", "blist_node_added_cb (%s)\n",
153 name
? name
: "(null)");
157 blist_node_removed_cb(PurpleBlistNode
*bnode
, void *data
)
160 if (PURPLE_IS_GROUP(bnode
))
161 name
= purple_group_get_name(PURPLE_GROUP(bnode
));
162 else if (PURPLE_IS_CONTACT(bnode
))
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
));
170 purple_debug_misc("signals test", "blist_node_removed_cb (%s)\n",
171 name
? name
: "(null)");
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
);
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 **************************************************************************/
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
)));
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
)));
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
)));
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
)));
261 connection_error_cb(PurpleConnection
*gc
,
262 PurpleConnectionError err
,
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 **************************************************************************/
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
));
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
));
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
));
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
));
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
);
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
);
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
);
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
));
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
);
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
);
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
);
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
);
392 conversation_created_cb(PurpleConversation
*conv
, void *data
)
394 purple_debug_misc("signals test", "conversation-created (%s)\n",
395 purple_conversation_get_name(conv
));
399 deleting_conversation_cb(PurpleConversation
*conv
, void *data
)
401 purple_debug_misc("signals test", "deleting-conversation (%s)\n",
402 purple_conversation_get_name(conv
));
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
,
494 chat_joined_cb(PurpleConversation
*conv
, void *data
)
496 purple_debug_misc("signals test", "chat-joined (%s)\n",
497 purple_conversation_get_name(conv
));
501 chat_left_cb(PurpleConversation
*conv
, void *data
)
503 purple_debug_misc("signals test", "chat-left (%s)\n",
504 purple_conversation_get_name(conv
));
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 **************************************************************************/
520 quitting_cb(void *data
)
522 purple_debug_misc("signals test", "quitting ()\n");
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)");
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
);
545 /**************************************************************************
546 * File transfer signal callbacks
547 **************************************************************************/
549 ft_recv_accept_cb(PurpleXfer
*xfer
, gpointer data
) {
550 purple_debug_misc("signals test", "file receive accepted\n");
554 ft_send_accept_cb(PurpleXfer
*xfer
, gpointer data
) {
555 purple_debug_misc("signals test", "file send accepted\n");
559 ft_recv_start_cb(PurpleXfer
*xfer
, gpointer data
) {
560 purple_debug_misc("signals test", "file receive started\n");
564 ft_send_start_cb(PurpleXfer
*xfer
, gpointer data
) {
565 purple_debug_misc("signals test", "file send started\n");
569 ft_recv_cancel_cb(PurpleXfer
*xfer
, gpointer data
) {
570 purple_debug_misc("signals test", "file receive cancelled\n");
574 ft_send_cancel_cb(PurpleXfer
*xfer
, gpointer data
) {
575 purple_debug_misc("signals test", "file send cancelled\n");
579 ft_recv_complete_cb(PurpleXfer
*xfer
, gpointer data
) {
580 purple_debug_misc("signals test", "file receive completed\n");
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 **************************************************************************/
592 sound_playing_event_cb(PurpleSoundEventID event
, PurpleAccount
*account
) {
594 purple_debug_misc("signals test", "sound playing event: %d for account: %s\n",
595 event
, purple_account_get_username(account
));
597 purple_debug_misc("signals test", "sound playing event: %d\n", event
);
602 /**************************************************************************
603 * Notify signals callbacks
604 **************************************************************************/
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
);
612 notify_emails_cb(char **subjects
, char **froms
, char **tos
, char **urls
, guint count
) {
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 **************************************************************************/
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 */
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 */
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 */
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
);
679 purple_xmlnode_free(iq
);
682 /* Cookie monster eats IQ stanzas; the protocol shouldn't keep processing */
686 /**************************************************************************
688 **************************************************************************/
689 static PurplePluginInfo
*
690 plugin_query(GError
**error
)
692 const gchar
* const authors
[] = {
693 "Christian Hammond <chipx86@gnupdate.org>",
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."),
705 "website", PURPLE_WEBSITE
,
706 "abi-version", PURPLE_ABI_VERSION
,
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
);
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
);
855 purple_signal_connect(sound_handle
, "playing-sound-event", plugin
,
856 PURPLE_CALLBACK(sound_playing_event_cb
), NULL
);
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
);
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
);
888 plugin_unload(PurplePlugin
*plugin
, GError
**error
)
890 void *jabber_handle
= purple_protocols_find("prpl-jabber");
892 purple_signals_disconnect_by_handle(plugin
);
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"));
906 PURPLE_PLUGIN_INIT(signalstest
, plugin_query
, plugin_load
, plugin_unload
);