Mercurial > hg
annotate mcabber/src/roster.h @ 690:3e965a1186c7
Implement IQ:version requests
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Thu, 09 Feb 2006 23:20:28 +0100 |
parents | b243d3b3ff1b |
children | 89ad7b530b3c |
rev | line source |
---|---|
72 | 1 #ifndef __ROSTER_H__ |
2 #define __ROSTER_H__ 1 | |
3 | |
4 #include <glib.h> | |
625
028c01940490
Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
610
diff
changeset
|
5 #include <time.h> |
72 | 6 |
572
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
7 enum imstatus { |
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
8 offline, |
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
9 available, |
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
10 invisible, |
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
11 freeforchat, |
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
12 dontdisturb, |
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
13 notavail, |
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
14 away, |
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
15 imstatus_size |
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
16 }; |
72 | 17 |
438
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
18 enum imrole { |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
19 role_none, |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
20 role_moderator, |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
21 role_participant, |
585
7eff2c1481fa
Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents:
584
diff
changeset
|
22 role_visitor, |
7eff2c1481fa
Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents:
584
diff
changeset
|
23 imrole_size |
438
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
24 }; |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
25 |
584 | 26 extern char *strrole[]; // Should match enum above |
27 | |
572
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
28 enum imaffiliation { |
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
29 affil_none, |
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
30 affil_owner, |
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
31 affil_admin, |
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
32 affil_member, |
585
7eff2c1481fa
Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents:
584
diff
changeset
|
33 affil_outcast, |
7eff2c1481fa
Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents:
584
diff
changeset
|
34 imaffiliation_size |
572
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
35 }; |
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
36 |
584 | 37 extern char *straffil[]; // Should match enum above |
38 | |
438
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
39 enum subscr { |
603 | 40 sub_none = 0, |
41 sub_pending = 1, | |
42 sub_to = 1 << 2, | |
43 sub_from = 1 << 3, | |
44 sub_both = sub_to|sub_from, | |
45 sub_remove = 1 << 4 | |
438
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
46 }; |
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
47 |
72 | 48 enum findwhat { |
49 jidsearch, | |
50 namesearch | |
51 }; | |
52 | |
584 | 53 struct role_affil { |
54 enum { type_role, type_affil } type; | |
55 union { | |
56 enum imrole role; | |
57 enum imaffiliation affil; | |
58 } val; | |
59 }; | |
60 | |
72 | 61 // Roster_type is a set of flags, so values should be 2^n |
62 #define ROSTER_TYPE_USER 1 | |
63 #define ROSTER_TYPE_GROUP 2 | |
64 #define ROSTER_TYPE_AGENT 4 | |
447
03bb57383cea
Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents:
439
diff
changeset
|
65 #define ROSTER_TYPE_ROOM 8 |
72 | 66 |
67 // Flags: | |
68 #define ROSTER_FLAG_MSG 1 // Message not read | |
69 #define ROSTER_FLAG_HIDE 2 // Group hidden (or buddy window closed) | |
70 #define ROSTER_FLAG_LOCK 4 // Node should not be removed from buddylist | |
71 // ROSTER_FLAG_LOCAL 8 // Buddy not on server's roster (??) | |
72 | |
73 extern GList *buddylist; | |
78 | 74 extern GList *current_buddy; |
330 | 75 extern GList *alternate_buddy; |
72 | 76 |
78 | 77 // Macros... |
78 | |
79 | 79 #define BUDDATA(glist_node) ((glist_node)->data) |
80 #define CURRENT_JID buddy_getjid(BUDDATA(current_buddy)) | |
78 | 81 |
82 // Prototypes... | |
83 GSList *roster_add_group(const char *name); | |
84 GSList *roster_add_user(const char *jid, const char *name, const char *group, | |
603 | 85 guint type, enum subscr esub); |
447
03bb57383cea
Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents:
439
diff
changeset
|
86 GSList *roster_find(const char *jidname, enum findwhat type, guint roster_type); |
78 | 87 void roster_del_user(const char *jid); |
164 | 88 void roster_free(void); |
438
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
89 void roster_setstatus(const char *jid, const char *resname, gchar prio, |
468
644b8bf9ca4d
Improve MUC presence messages handling
Mikael Berthe <mikael@lilotux.net>
parents:
447
diff
changeset
|
90 enum imstatus bstat, const char *status_msg, |
625
028c01940490
Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
610
diff
changeset
|
91 time_t timestamp, |
572
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
92 enum imrole role, enum imaffiliation affil, |
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
93 const char *realjid); |
80 | 94 void roster_setflags(const char *jid, guint flags, guint value); |
148 | 95 void roster_msg_setflag(const char *jid, guint value); |
510
6c3cd3aa4a91
New 'buddy_format' option
Mikael Berthe <mikael@lilotux.net>
parents:
489
diff
changeset
|
96 const char *roster_getname(const char *jid); |
89 | 97 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
|
98 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
|
99 const char *roster_getstatusmsg(const char *jid, const char *resname); |
89 | 100 guint roster_gettype(const char *jid); |
610
0e8247cf2bd1
Consider buddies as offline when they have cancelled our subscription
Mikael Berthe <mikael@lilotux.net>
parents:
603
diff
changeset
|
101 void roster_unsubscribed(const char *jid); |
72 | 102 |
166 | 103 void buddylist_build(void); |
104 void buddy_hide_group(gpointer rosterdata, int hide); | |
105 void buddylist_set_hide_offline_buddies(int hide); | |
120 | 106 inline int buddylist_get_hide_offline_buddies(void); |
72 | 107 const char *buddy_getjid(gpointer rosterdata); |
207 | 108 void buddy_setname(gpointer rosterdata, char *newname); |
72 | 109 const char *buddy_getname(gpointer rosterdata); |
469
a926523d2392
Use UTF8 to handle resources and room nicknames
Mikael Berthe <mikael@lilotux.net>
parents:
468
diff
changeset
|
110 void buddy_setnickname(gpointer rosterdata, const char *newname); |
447
03bb57383cea
Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents:
439
diff
changeset
|
111 const char *buddy_getnickname(gpointer rosterdata); |
644
68fb0c1dfb15
MUC: better nickname check when entering a room
Mikael Berthe <mikael@lilotux.net>
parents:
625
diff
changeset
|
112 void buddy_setinsideroom(gpointer rosterdata, guint8 inside); |
68fb0c1dfb15
MUC: better nickname check when entering a room
Mikael Berthe <mikael@lilotux.net>
parents:
625
diff
changeset
|
113 guint8 buddy_getinsideroom(gpointer rosterdata); |
548
265c50238a48
Add buddy_{get,set}topic()
Mikael Berthe <mikael@lilotux.net>
parents:
539
diff
changeset
|
114 void buddy_settopic(gpointer rosterdata, const char *newtopic); |
265c50238a48
Add buddy_{get,set}topic()
Mikael Berthe <mikael@lilotux.net>
parents:
539
diff
changeset
|
115 const char *buddy_gettopic(gpointer rosterdata); |
489
21ab22a60bcb
Auto-convert a roster item to "room" type when receiving a groupchat message
Mikael Berthe <mikael@lilotux.net>
parents:
480
diff
changeset
|
116 void buddy_settype(gpointer rosterdata, guint type); |
166 | 117 guint buddy_gettype(gpointer rosterdata); |
603 | 118 guint buddy_getsubscription(gpointer rosterdata); |
210 | 119 void buddy_setgroup(gpointer rosterdata, char *newgroupname); |
207 | 120 const char *buddy_getgroupname(gpointer rosterdata); |
166 | 121 gpointer buddy_getgroup(gpointer rosterdata); |
438
b44be19d6229
Handle multiple resources for the same buddy
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
122 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
|
123 const char *buddy_getstatusmsg(gpointer rosterdata, const char *resname); |
625
028c01940490
Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
610
diff
changeset
|
124 time_t buddy_getstatustime(gpointer rosterdata, const char *resname); |
439
63562fd409a1
/info can show multiple resources
Mikael Berthe <mikael@lilotux.net>
parents:
438
diff
changeset
|
125 gchar buddy_getresourceprio(gpointer rosterdata, const char *resname); |
652
b243d3b3ff1b
We do not need buddy_isresource() anymore
Mikael Berthe <mikael@lilotux.net>
parents:
644
diff
changeset
|
126 //int buddy_isresource(gpointer rosterdata); |
439
63562fd409a1
/info can show multiple resources
Mikael Berthe <mikael@lilotux.net>
parents:
438
diff
changeset
|
127 GSList *buddy_getresources(gpointer rosterdata); |
468
644b8bf9ca4d
Improve MUC presence messages handling
Mikael Berthe <mikael@lilotux.net>
parents:
447
diff
changeset
|
128 void buddy_resource_setname(gpointer rosterdata, const char *resname, |
644b8bf9ca4d
Improve MUC presence messages handling
Mikael Berthe <mikael@lilotux.net>
parents:
447
diff
changeset
|
129 const char *newname); |
572
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
130 enum imrole buddy_getrole(gpointer rosterdata, const char *resname); |
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
131 enum imaffiliation buddy_getaffil(gpointer rosterdata, const char *resname); |
afc2bd38b15c
Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents:
548
diff
changeset
|
132 const char *buddy_getrjid(gpointer rosterdata, const char *resname); |
447
03bb57383cea
Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents:
439
diff
changeset
|
133 void buddy_del_all_resources(gpointer rosterdata); |
166 | 134 void buddy_setflags(gpointer rosterdata, guint flags, guint value); |
135 guint buddy_getflags(gpointer rosterdata); | |
480 | 136 GList *buddy_search_jid(char *jid); |
265 | 137 GList *buddy_search(char *string); |
532
2ac8d8e49e81
Send status changes to chatrooms
Mikael Berthe <mikael@lilotux.net>
parents:
510
diff
changeset
|
138 void foreach_buddy(guint roster_type, |
2ac8d8e49e81
Send status changes to chatrooms
Mikael Berthe <mikael@lilotux.net>
parents:
510
diff
changeset
|
139 void (*pfunc)(gpointer rosterdata, void *param), |
2ac8d8e49e81
Send status changes to chatrooms
Mikael Berthe <mikael@lilotux.net>
parents:
510
diff
changeset
|
140 void *param); |
236 | 141 gpointer unread_msg(gpointer rosterdata); |
72 | 142 |
225 | 143 GSList *compl_list(guint type); |
144 | |
72 | 145 #endif /* __ROSTER_H__ */ |
576 | 146 |
580 | 147 /* vim: set expandtab cindent cinoptions=>2\:2(0: For Vim users... */ |