diff --git a/spectrum/src/main.cpp b/spectrum/src/main.cpp index 1fef2ff0a898cdd32d326895d194a84abb8980b0..87c8fe6aae0716115a563e8e4702dad191ae767b 100644 --- a/spectrum/src/main.cpp +++ b/spectrum/src/main.cpp @@ -71,6 +71,39 @@ static void buddyListNewNode(PurpleBlistNode *node) { } } +static void buddyStatusChanged(PurpleBuddy *buddy, PurpleStatus *status, PurpleStatus *old_status) { + SpectrumBuddy *s_buddy = (SpectrumBuddy *) buddy->node.ui_data; + PurpleAccount *account = purple_buddy_get_account(buddy); + User *user = (User *) account->ui_data; + + if (!user || !s_buddy) + return; + + s_buddy->buddyChanged(); +} + +static void buddySignedOn(PurpleBuddy *buddy) { + SpectrumBuddy *s_buddy = (SpectrumBuddy *) buddy->node.ui_data; + PurpleAccount *account = purple_buddy_get_account(buddy); + User *user = (User *) account->ui_data; + + if (!user || !s_buddy) + return; + + s_buddy->buddyChanged(); +} + +static void buddySignedOff(PurpleBuddy *buddy) { + SpectrumBuddy *s_buddy = (SpectrumBuddy *) buddy->node.ui_data; + PurpleAccount *account = purple_buddy_get_account(buddy); + User *user = (User *) account->ui_data; + + if (!user || !s_buddy) + return; + + s_buddy->buddyChanged(); +} + static void NodeRemoved(PurpleBlistNode *node, void *data) { if (!PURPLE_BLIST_NODE_IS_BUDDY(node)) return; @@ -205,9 +238,9 @@ static bool initPurple(Config &cfg) { // purple_signal_connect(purple_conversations_get_handle(), "buddy-typing-stopped", &conversation_handle, PURPLE_CALLBACK(buddyTypingStopped), NULL); // purple_signal_connect(purple_connections_get_handle(), "signed-on", &conn_handle,PURPLE_CALLBACK(signed_on), NULL); // purple_signal_connect(purple_blist_get_handle(), "buddy-removed", &blist_handle,PURPLE_CALLBACK(buddyRemoved), NULL); -// purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", &blist_handle,PURPLE_CALLBACK(buddySignedOn), NULL); -// purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", &blist_handle,PURPLE_CALLBACK(buddySignedOff), NULL); -// purple_signal_connect(purple_blist_get_handle(), "buddy-status-changed", &blist_handle,PURPLE_CALLBACK(buddyStatusChanged), NULL); + purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", &blist_handle,PURPLE_CALLBACK(buddySignedOn), NULL); + purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", &blist_handle,PURPLE_CALLBACK(buddySignedOff), NULL); + purple_signal_connect(purple_blist_get_handle(), "buddy-status-changed", &blist_handle,PURPLE_CALLBACK(buddyStatusChanged), NULL); purple_signal_connect(purple_blist_get_handle(), "blist-node-removed", &blist_handle,PURPLE_CALLBACK(NodeRemoved), NULL); // purple_signal_connect(purple_conversations_get_handle(), "chat-topic-changed", &conversation_handle, PURPLE_CALLBACK(conv_chat_topic_changed), NULL); //