Mercurial > hg
annotate mcabber/src/roster.h @ 447:03bb57383cea
Initial Multi-User Chat support
This patch adds basic MUC support. We now can:
- join an existing room;
- create and unlock a room using the /rawxml command;
- set our nickname;
- send/receive chatgroup messages;
- see the members of the room;
- leave the room.
Chatroom logging is currently disabled, as it could do some unexpected things.
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Sun, 25 Sep 2005 01:01:44 +0200 |
parents | 63562fd409a1 |
children | 644b8bf9ca4d |
rev | line source |
---|---|
72 | 1 #ifndef __ROSTER_H__ |
2 #define __ROSTER_H__ 1 | |
3 | |
4 #include <glib.h> | |
5 | |
6 # include "jabglue.h" | |
7 | |
438
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
8 enum imrole { |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
9 role_none, |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
10 role_moderator, |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
11 role_participant, |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
12 role_visitor |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
13 }; |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
14 |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
15 enum subscr { |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
16 sub_none, |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
17 sub_to, |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
18 sub_from, |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
19 sub_both |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
20 }; |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
21 |
72 | 22 enum findwhat { |
23 jidsearch, | |
24 namesearch | |
25 }; | |
26 | |
27 // Roster_type is a set of flags, so values should be 2^n | |
28 #define ROSTER_TYPE_USER 1 | |
29 #define ROSTER_TYPE_GROUP 2 | |
30 #define ROSTER_TYPE_AGENT 4 | |
447
03bb57383cea
Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents:
439
diff
changeset
|
31 #define ROSTER_TYPE_ROOM 8 |
72 | 32 |
33 // Flags: | |
34 #define ROSTER_FLAG_MSG 1 // Message not read | |
35 #define ROSTER_FLAG_HIDE 2 // Group hidden (or buddy window closed) | |
36 #define ROSTER_FLAG_LOCK 4 // Node should not be removed from buddylist | |
37 // ROSTER_FLAG_LOCAL 8 // Buddy not on server's roster (??) | |
38 | |
39 extern GList *buddylist; | |
78 | 40 extern GList *current_buddy; |
330 | 41 extern GList *alternate_buddy; |
72 | 42 |
78 | 43 // Macros... |
44 | |
79 | 45 #define BUDDATA(glist_node) ((glist_node)->data) |
46 #define CURRENT_JID buddy_getjid(BUDDATA(current_buddy)) | |
78 | 47 |
48 // Prototypes... | |
49 GSList *roster_add_group(const char *name); | |
50 GSList *roster_add_user(const char *jid, const char *name, const char *group, | |
51 guint type); | |
447
03bb57383cea
Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents:
439
diff
changeset
|
52 GSList *roster_find(const char *jidname, enum findwhat type, guint roster_type); |
78 | 53 void roster_del_user(const char *jid); |
164 | 54 void roster_free(void); |
438
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
55 void roster_setstatus(const char *jid, const char *resname, gchar prio, |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
56 enum imstatus bstat, const char *status_msg); |
80 | 57 void roster_setflags(const char *jid, guint flags, guint value); |
148 | 58 void roster_msg_setflag(const char *jid, guint value); |
89 | 59 void roster_settype(const char *jid, guint type); |
438
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
60 enum imstatus roster_getstatus(const char *jid, const char *resname); |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
61 const char *roster_getstatusmsg(const char *jid, const char *resname); |
89 | 62 guint roster_gettype(const char *jid); |
72 | 63 |
166 | 64 void buddylist_build(void); |
65 void buddy_hide_group(gpointer rosterdata, int hide); | |
66 void buddylist_set_hide_offline_buddies(int hide); | |
120 | 67 inline int buddylist_get_hide_offline_buddies(void); |
72 | 68 const char *buddy_getjid(gpointer rosterdata); |
207 | 69 void buddy_setname(gpointer rosterdata, char *newname); |
72 | 70 const char *buddy_getname(gpointer rosterdata); |
447
03bb57383cea
Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents:
439
diff
changeset
|
71 void buddy_setnickname(gpointer rosterdata, char *newname); |
03bb57383cea
Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents:
439
diff
changeset
|
72 const char *buddy_getnickname(gpointer rosterdata); |
166 | 73 guint buddy_gettype(gpointer rosterdata); |
210 | 74 void buddy_setgroup(gpointer rosterdata, char *newgroupname); |
207 | 75 const char *buddy_getgroupname(gpointer rosterdata); |
166 | 76 gpointer buddy_getgroup(gpointer rosterdata); |
438
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
77 enum imstatus buddy_getstatus(gpointer rosterdata, const char *resname); |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
78 const char *buddy_getstatusmsg(gpointer rosterdata, const char *resname); |
439
63562fd409a1
/info can show multiple resources
Mikael Berthe <mikael@lilotux.net>
parents:
438
diff
changeset
|
79 gchar buddy_getresourceprio(gpointer rosterdata, const char *resname); |
63562fd409a1
/info can show multiple resources
Mikael Berthe <mikael@lilotux.net>
parents:
438
diff
changeset
|
80 GSList *buddy_getresources(gpointer rosterdata); |
447
03bb57383cea
Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents:
439
diff
changeset
|
81 void buddy_del_all_resources(gpointer rosterdata); |
166 | 82 void buddy_setflags(gpointer rosterdata, guint flags, guint value); |
83 guint buddy_getflags(gpointer rosterdata); | |
265 | 84 GList *buddy_search(char *string); |
236 | 85 gpointer unread_msg(gpointer rosterdata); |
72 | 86 |
225 | 87 GSList *compl_list(guint type); |
88 | |
72 | 89 #endif /* __ROSTER_H__ */ |