summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorirungentoo <irungentoo@gmail.com>2014-10-02 17:52:56 -0400
committerirungentoo <irungentoo@gmail.com>2014-10-02 17:52:56 -0400
commit26d119a17b032830f4ba5063a4e5f9037a8240e9 (patch)
treeadbe1b6d69e4b004b6bf204c2dc77f403e7deedc
parentc7b3b7acbde47ffe4adac09aef3766ace234e79f (diff)
Implemented tox_callback_group_namelist_change callback in group chats.
No names yet though.
-rw-r--r--toxcore/group.c27
-rw-r--r--toxcore/group.h9
-rw-r--r--toxcore/tox.c2
3 files changed, 29 insertions, 9 deletions
diff --git a/toxcore/group.c b/toxcore/group.c
index d94349f4..96f5ba2f 100644
--- a/toxcore/group.c
+++ b/toxcore/group.c
@@ -398,8 +398,10 @@ static int addpeer(Group_Chats *g_c, int groupnumber, const uint8_t *real_pk, co
398 ++g->numpeers; 398 ++g->numpeers;
399 399
400 add_to_closest(g_c, groupnumber, real_pk, temp_pk); 400 add_to_closest(g_c, groupnumber, real_pk, temp_pk);
401 //if (g->peer_namelistchange != NULL) 401
402 // (*g->peer_namelistchange)(g, g->numpeers - 1, CHAT_CHANGE_PEER_ADD, g->group_namelistchange_userdata); 402 if (g_c->peer_namelistchange)
403 g_c->peer_namelistchange(g_c->m, groupnumber, g->numpeers - 1, CHAT_CHANGE_PEER_ADD,
404 g_c->group_namelistchange_userdata);
403 405
404 return (g->numpeers - 1); 406 return (g->numpeers - 1);
405} 407}
@@ -445,11 +447,10 @@ static int delpeer(Group_Chats *g_c, int groupnumber, int peer_index)
445 return -1; 447 return -1;
446 448
447 g->group = temp; 449 g->group = temp;
448 /* 450
449 if (g->peer_namelistchange != NULL) { 451 if (g_c->peer_namelistchange)
450 (*g->peer_namelistchange)(g, peer_index, CHAT_CHANGE_PEER_DEL, g->group_namelistchange_userdata); 452 g_c->peer_namelistchange(g_c->m, groupnumber, peer_index, CHAT_CHANGE_PEER_DEL, g_c->group_namelistchange_userdata);
451 } 453
452 */
453 return 0; 454 return 0;
454} 455}
455 456
@@ -781,6 +782,18 @@ void g_callback_group_message(Group_Chats *g_c, void (*function)(Messenger *m, i
781 g_c->message_callback_userdata = userdata; 782 g_c->message_callback_userdata = userdata;
782} 783}
783 784
785/* Set callback function for peer name list changes.
786 *
787 * It gets called every time the name list changes(new peer/name, deleted peer)
788 * Function(Group_Chats *g_c, int groupnumber, int peernumber, TOX_CHAT_CHANGE change, void *userdata)
789 */
790void g_callback_group_namelistchange(Group_Chats *g_c, void (*function)(Messenger *m, int, int, uint8_t, void *),
791 void *userdata)
792{
793 g_c->peer_namelistchange = function;
794 g_c->group_namelistchange_userdata = userdata;
795}
796
784static unsigned int send_message_group(const Group_Chats *g_c, int groupnumber, uint8_t message_id, const uint8_t *data, 797static unsigned int send_message_group(const Group_Chats *g_c, int groupnumber, uint8_t message_id, const uint8_t *data,
785 uint16_t len); 798 uint16_t len);
786 799
diff --git a/toxcore/group.h b/toxcore/group.h
index c91edd7b..d3a330b2 100644
--- a/toxcore/group.h
+++ b/toxcore/group.h
@@ -103,6 +103,8 @@ typedef struct {
103 void *invite_callback_userdata; 103 void *invite_callback_userdata;
104 void (*message_callback)(Messenger *m, int, int, const uint8_t *, uint16_t, void *); 104 void (*message_callback)(Messenger *m, int, int, const uint8_t *, uint16_t, void *);
105 void *message_callback_userdata; 105 void *message_callback_userdata;
106 void (*peer_namelistchange)(Messenger *m, int, int, uint8_t, void *);
107 void *group_namelistchange_userdata;
106} Group_Chats; 108} Group_Chats;
107 109
108/* Set the callback for group invites. 110/* Set the callback for group invites.
@@ -131,8 +133,13 @@ void g_callback_group_action(Group_Chats *g_c, void (*function)(Messenger *m, in
131/* Set callback function for peer name list changes. 133/* Set callback function for peer name list changes.
132 * 134 *
133 * It gets called every time the name list changes(new peer/name, deleted peer) 135 * It gets called every time the name list changes(new peer/name, deleted peer)
134 * Function(Group_Chats *g_c, int groupnumber, void *userdata) 136 * Function(Group_Chats *g_c, int groupnumber, int peernumber, TOX_CHAT_CHANGE change, void *userdata)
135 */ 137 */
138enum {
139 CHAT_CHANGE_PEER_ADD,
140 CHAT_CHANGE_PEER_DEL,
141 CHAT_CHANGE_PEER_NAME,
142};
136void g_callback_group_namelistchange(Group_Chats *g_c, void (*function)(Messenger *m, int, int, uint8_t, void *), 143void g_callback_group_namelistchange(Group_Chats *g_c, void (*function)(Messenger *m, int, int, uint8_t, void *),
137 void *userdata); 144 void *userdata);
138 145
diff --git a/toxcore/tox.c b/toxcore/tox.c
index 35587c2b..999d81d6 100644
--- a/toxcore/tox.c
+++ b/toxcore/tox.c
@@ -586,7 +586,7 @@ void tox_callback_group_action(Tox *tox, void (*function)(Messenger *tox, int, i
586void tox_callback_group_namelist_change(Tox *tox, void (*function)(Tox *tox, int, int, uint8_t, void *), void *userdata) 586void tox_callback_group_namelist_change(Tox *tox, void (*function)(Tox *tox, int, int, uint8_t, void *), void *userdata)
587{ 587{
588 Messenger *m = tox; 588 Messenger *m = tox;
589 //m_callback_group_namelistchange(m, function, userdata); 589 g_callback_group_namelistchange(m->group_chat_object, function, userdata);
590} 590}
591 591
592/* Creates a new groupchat and puts it in the chats array. 592/* Creates a new groupchat and puts it in the chats array.