comparison src/pounce.c @ 6837:f098765ac919

[gaim-migrate @ 7382] The pounces subsystem now registers signal callbacks for all the pounce types. The calls to pounce code in server.c, and therefore in all the rest of gaim, have been removed. The pounce code is now more like its own separate island. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Sun, 14 Sep 2003 21:05:11 +0000
parents 3cc4d5e55a69
children 9220c7490cd1
comparison
equal deleted inserted replaced
6836:e2483c5f53bd 6837:f098765ac919
1 /** 1 /**
2 * @file pounce.c Buddy Pounce API 2 * @file pounce.c Buddy Pounce API
3 * @ingroup core
3 * 4 *
4 * gaim 5 * gaim
5 * 6 *
6 * Copyright (C) 2003 Christian Hammond <chipx86@gnupdate.org> 7 * Copyright (C) 2003 Christian Hammond <chipx86@gnupdate.org>
7 * 8 *
8 * This program is free software; you can redistribute it and/or modify 9 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by 10 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or 11 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version. 12 * (at your option) any later version.
12 * 13 *
16 * GNU General Public License for more details. 17 * GNU General Public License for more details.
17 * 18 *
18 * You should have received a copy of the GNU General Public License 19 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software 20 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 *
22 */ 22 */
23 #include "internal.h" 23 #include "internal.h"
24 #include "conversation.h"
24 #include "debug.h" 25 #include "debug.h"
25 #include "pounce.h" 26 #include "pounce.h"
26 27
27 #include "debug.h" 28 #include "debug.h"
28 #include "pounce.h" 29 #include "pounce.h"
927 928
928 g_free(handler->ui); 929 g_free(handler->ui);
929 g_free(handler); 930 g_free(handler);
930 } 931 }
931 932
933 static void
934 buddy_state_cb(GaimBuddy *buddy, GaimPounceEvent event)
935 {
936 gaim_pounce_execute(buddy->account, buddy->name, event);
937 }
938
939 static void
940 buddy_typing_cb(GaimConversation *conv, void *data)
941 {
942 GaimAccount *account = gaim_conversation_get_account(conv);
943 const char *name = gaim_conversation_get_name(conv);
944
945 if (gaim_find_buddy(account, name) != NULL)
946 {
947 GaimPounceEvent event;
948
949 event = (gaim_im_get_typing_state(GAIM_IM(conv)) == GAIM_TYPING
950 ? GAIM_POUNCE_TYPING : GAIM_POUNCE_TYPING_STOPPED);
951
952 gaim_pounce_execute(account, name, event);
953 }
954 }
955
956 void *
957 gaim_pounces_get_handle(void)
958 {
959 static int pounce_handle;
960
961 return &pounce_handle;
962 }
963
932 void 964 void
933 gaim_pounces_init(void) 965 gaim_pounces_init(void)
934 { 966 {
967 void *blist_handle = gaim_blist_get_handle();
968 void *conv_handle = gaim_conversations_get_handle();
969 void *handle = gaim_pounces_get_handle();
970
935 pounce_handlers = g_hash_table_new_full(g_str_hash, g_str_equal, 971 pounce_handlers = g_hash_table_new_full(g_str_hash, g_str_equal,
936 g_free, free_pounce_handler); 972 g_free, free_pounce_handler);
937 } 973
974 gaim_signal_connect(blist_handle, "buddy-idle",
975 handle, GAIM_CALLBACK(buddy_state_cb),
976 GINT_TO_POINTER(GAIM_POUNCE_IDLE));
977 gaim_signal_connect(blist_handle, "buddy-unidle",
978 handle, GAIM_CALLBACK(buddy_state_cb),
979 GINT_TO_POINTER(GAIM_POUNCE_IDLE));
980 gaim_signal_connect(blist_handle, "buddy-away",
981 handle, GAIM_CALLBACK(buddy_state_cb),
982 GINT_TO_POINTER(GAIM_POUNCE_AWAY));
983 gaim_signal_connect(blist_handle, "buddy-back",
984 handle, GAIM_CALLBACK(buddy_state_cb),
985 GINT_TO_POINTER(GAIM_POUNCE_AWAY_RETURN));
986 gaim_signal_connect(blist_handle, "buddy-signed-on",
987 handle, GAIM_CALLBACK(buddy_state_cb),
988 GINT_TO_POINTER(GAIM_POUNCE_SIGNON));
989 gaim_signal_connect(blist_handle, "buddy-signed-off",
990 handle, GAIM_CALLBACK(buddy_state_cb),
991 GINT_TO_POINTER(GAIM_POUNCE_SIGNOFF));
992
993 gaim_signal_connect(conv_handle, "buddy-typing",
994 handle, GAIM_CALLBACK(buddy_typing_cb), NULL);
995 gaim_signal_connect(conv_handle, "buddy-typing-stopped",
996 handle, GAIM_CALLBACK(buddy_typing_cb), NULL);
997 }
998
999 void
1000 gaim_pounces_uninit()
1001 {
1002 gaim_signals_disconnect_by_handle(gaim_pounces_get_handle());
1003 }