Mercurial > ~mikael > mcabber > hg
comparison mcabber/mcabber/roster.h @ 1668:41c26b7d2890
Install mcabber headers
* Change mcabber headers naming scheme
* Move 'src/' -> 'mcabber/'
* Add missing include <mcabber/config.h>'s
* Create and install clean config.h version in 'include/'
* Move "dirty" config.h version to 'mcabber/'
* Add $(top_srcdir) to compiler include path
* Update modules HOWTO
author | Myhailo Danylenko <isbear@ukrpost.net> |
---|---|
date | Mon, 18 Jan 2010 15:36:19 +0200 |
parents | mcabber/src/roster.h@c5ee395fbc8c |
children | b2e0083891cc |
comparison
equal
deleted
inserted
replaced
1667:8af0e0ad20ad | 1668:41c26b7d2890 |
---|---|
1 #ifndef __MCABBER_ROSTER_H__ | |
2 #define __MCABBER_ROSTER_H__ 1 | |
3 | |
4 #include <glib.h> | |
5 #include <time.h> | |
6 | |
7 #include <mcabber/pgp.h> | |
8 #include <mcabber/config.h> | |
9 | |
10 #define SPECIAL_BUFFER_STATUS_ID "[status]" | |
11 | |
12 enum imstatus { | |
13 offline, | |
14 available, | |
15 freeforchat, | |
16 dontdisturb, | |
17 notavail, | |
18 away, | |
19 invisible, | |
20 imstatus_size | |
21 }; | |
22 | |
23 extern char imstatus2char[]; // Should match enum above | |
24 | |
25 enum imrole { | |
26 role_none, | |
27 role_moderator, | |
28 role_participant, | |
29 role_visitor, | |
30 imrole_size | |
31 }; | |
32 | |
33 extern char *strrole[]; // Should match enum above | |
34 | |
35 enum imaffiliation { | |
36 affil_none, | |
37 affil_owner, | |
38 affil_admin, | |
39 affil_member, | |
40 affil_outcast, | |
41 imaffiliation_size | |
42 }; | |
43 | |
44 extern char *straffil[]; // Should match enum above | |
45 | |
46 enum subscr { | |
47 sub_none = 0, | |
48 sub_pending = 1, | |
49 sub_to = 1 << 1, | |
50 sub_from = 1 << 2, | |
51 sub_both = sub_to|sub_from, | |
52 sub_remove = 1 << 3 | |
53 }; | |
54 | |
55 enum findwhat { | |
56 jidsearch, | |
57 namesearch | |
58 }; | |
59 | |
60 extern char *strprintstatus[]; | |
61 | |
62 // Note: do not change the ordering as these values are visible | |
63 // to the user (option 'muc_print_status')! | |
64 enum room_printstatus { | |
65 status_default, | |
66 status_none, | |
67 status_in_and_out, | |
68 status_all | |
69 }; | |
70 | |
71 extern char *strautowhois[]; | |
72 | |
73 enum room_autowhois { | |
74 autowhois_default, | |
75 autowhois_off, | |
76 autowhois_on | |
77 }; | |
78 | |
79 struct role_affil { | |
80 enum { type_role, type_affil } type; | |
81 union { | |
82 enum imrole role; | |
83 enum imaffiliation affil; | |
84 } val; | |
85 }; | |
86 | |
87 // Roster_type is a set of flags, so values should be 2^n | |
88 #define ROSTER_TYPE_USER 1U | |
89 #define ROSTER_TYPE_GROUP (1U<<1) | |
90 #define ROSTER_TYPE_AGENT (1U<<2) | |
91 #define ROSTER_TYPE_ROOM (1U<<3) | |
92 #define ROSTER_TYPE_SPECIAL (1U<<4) | |
93 | |
94 // Flags: | |
95 #define ROSTER_FLAG_MSG 1U // Message not read | |
96 #define ROSTER_FLAG_HIDE (1U<<1) // Group hidden (or buddy window closed) | |
97 #define ROSTER_FLAG_LOCK (1U<<2) // Node should not be removed from buddylist | |
98 #define ROSTER_FLAG_USRLOCK (1U<<3) // Node should not be removed from buddylist | |
99 // ROSTER_FLAG_LOCAL (1U<<4) // Buddy not on server's roster (??) | |
100 | |
101 #define JEP0022 | |
102 #define JEP0085 | |
103 | |
104 struct jep0022 { | |
105 guint support; | |
106 guint last_state_sent; | |
107 gchar *last_msgid_sent; | |
108 guint last_state_rcvd; | |
109 gchar *last_msgid_rcvd; | |
110 }; | |
111 struct jep0085 { | |
112 guint support; | |
113 guint last_state_sent; | |
114 guint last_state_rcvd; | |
115 }; | |
116 | |
117 enum chatstate_support { | |
118 CHATSTATES_SUPPORT_UNKNOWN = 0, | |
119 CHATSTATES_SUPPORT_PROBED, | |
120 CHATSTATES_SUPPORT_NONE, | |
121 CHATSTATES_SUPPORT_OK | |
122 }; | |
123 | |
124 struct pgp_data { | |
125 gchar *sign_keyid; // KeyId used by the contact to sign their presence/msg | |
126 #ifdef HAVE_GPGME | |
127 gpgme_sigsum_t last_sigsum; // Last signature summary | |
128 #endif | |
129 }; | |
130 | |
131 /* Message event and chat state flags */ | |
132 #define ROSTER_EVENT_NONE 0U | |
133 /* JEP-22 Message Events */ | |
134 #define ROSTER_EVENT_OFFLINE (1U<<0) | |
135 #define ROSTER_EVENT_DELIVERED (1U<<1) | |
136 #define ROSTER_EVENT_DISPLAYED (1U<<2) | |
137 /* JEP-22 & JEP-85 */ | |
138 #define ROSTER_EVENT_COMPOSING (1U<<3) | |
139 /* JEP-85 Chat State Notifications */ | |
140 #define ROSTER_EVENT_ACTIVE (1U<<4) | |
141 #define ROSTER_EVENT_PAUSED (1U<<5) | |
142 #define ROSTER_EVENT_INACTIVE (1U<<6) | |
143 #define ROSTER_EVENT_GONE (1U<<7) | |
144 | |
145 extern GList *buddylist; | |
146 extern GList *current_buddy; | |
147 extern GList *alternate_buddy; | |
148 | |
149 // Macros... | |
150 | |
151 #define BUDDATA(glist_node) ((glist_node)->data) | |
152 #define CURRENT_JID buddy_getjid(BUDDATA(current_buddy)) | |
153 | |
154 // Prototypes... | |
155 void roster_init(void); | |
156 GSList *roster_add_group(const char *name); | |
157 GSList *roster_add_user(const char *jid, const char *name, const char *group, | |
158 guint type, enum subscr esub, gint on_server); | |
159 GSList *roster_find(const char *jidname, enum findwhat type, guint roster_type); | |
160 void roster_del_user(const char *jid); | |
161 void roster_free(void); | |
162 void roster_setstatus(const char *jid, const char *resname, gchar prio, | |
163 enum imstatus bstat, const char *status_msg, | |
164 time_t timestamp, | |
165 enum imrole role, enum imaffiliation affil, | |
166 const char *realjid); | |
167 void roster_setflags(const char *jid, guint flags, guint value); | |
168 void roster_msg_setflag(const char *jid, guint special, guint value); | |
169 const char *roster_getname(const char *jid); | |
170 const char *roster_getnickname(const char *jid); | |
171 void roster_settype(const char *jid, guint type); | |
172 enum imstatus roster_getstatus(const char *jid, const char *resname); | |
173 const char *roster_getstatusmsg(const char *jid, const char *resname); | |
174 guint roster_gettype(const char *jid); | |
175 guint roster_getsubscription(const char *jid); | |
176 void roster_unsubscribed(const char *jid); | |
177 | |
178 void buddylist_build(void); | |
179 void buddy_hide_group(gpointer rosterdata, int hide); | |
180 void buddylist_set_hide_offline_buddies(int hide); | |
181 int buddylist_isset_filter(void); | |
182 int buddylist_is_status_filtered(enum imstatus status); | |
183 void buddylist_set_filter(guchar); | |
184 guchar buddylist_get_filter(void); | |
185 const char *buddy_getjid(gpointer rosterdata); | |
186 void buddy_setname(gpointer rosterdata, char *newname); | |
187 const char *buddy_getname(gpointer rosterdata); | |
188 void buddy_setnickname(gpointer rosterdata, const char *newname); | |
189 const char *buddy_getnickname(gpointer rosterdata); | |
190 void buddy_setinsideroom(gpointer rosterdata, guint inside); | |
191 guint buddy_getinsideroom(gpointer rosterdata); | |
192 void buddy_settopic(gpointer rosterdata, const char *newtopic); | |
193 const char *buddy_gettopic(gpointer rosterdata); | |
194 void buddy_setprintstatus(gpointer rosterdata, enum room_printstatus); | |
195 enum room_printstatus buddy_getprintstatus(gpointer rosterdata); | |
196 void buddy_setautowhois(gpointer rosterdata, enum room_autowhois); | |
197 enum room_autowhois buddy_getautowhois(gpointer rosterdata); | |
198 void buddy_settype(gpointer rosterdata, guint type); | |
199 guint buddy_gettype(gpointer rosterdata); | |
200 guint buddy_getsubscription(gpointer rosterdata); | |
201 void buddy_setgroup(gpointer rosterdata, char *newgroupname); | |
202 const char *buddy_getgroupname(gpointer rosterdata); | |
203 gpointer buddy_getgroup(gpointer rosterdata); | |
204 enum imstatus buddy_getstatus(gpointer rosterdata, const char *resname); | |
205 const char *buddy_getstatusmsg(gpointer rosterdata, const char *resname); | |
206 time_t buddy_getstatustime(gpointer rosterdata, const char *resname); | |
207 gchar buddy_getresourceprio(gpointer rosterdata, const char *resname); | |
208 //int buddy_isresource(gpointer rosterdata); | |
209 GSList *buddy_getresources(gpointer rosterdata); | |
210 GSList *buddy_getresources_locale(gpointer rosterdata); | |
211 void buddy_resource_setname(gpointer rosterdata, const char *resname, | |
212 const char *newname); | |
213 void buddy_resource_setevents(gpointer rosterdata, const char *resname, | |
214 guint event); | |
215 guint buddy_resource_getevents(gpointer rosterdata, const char *resname); | |
216 void buddy_resource_setcaps(gpointer rosterdata, const char *resname, | |
217 const char *caps); | |
218 char *buddy_resource_getcaps(gpointer rosterdata, const char *resname); | |
219 struct jep0022 *buddy_resource_jep22(gpointer rosterdata, const char *resname); | |
220 struct jep0085 *buddy_resource_jep85(gpointer rosterdata, const char *resname); | |
221 struct pgp_data *buddy_resource_pgp(gpointer rosterdata, const char *resname); | |
222 enum imrole buddy_getrole(gpointer rosterdata, const char *resname); | |
223 enum imaffiliation buddy_getaffil(gpointer rosterdata, const char *resname); | |
224 const char *buddy_getrjid(gpointer rosterdata, const char *resname); | |
225 void buddy_del_all_resources(gpointer rosterdata); | |
226 void buddy_setflags(gpointer rosterdata, guint flags, guint value); | |
227 guint buddy_getflags(gpointer rosterdata); | |
228 void buddy_setonserverflag(gpointer rosterdata, guint onserver); | |
229 guint buddy_getonserverflag(gpointer rosterdata); | |
230 GList *buddy_search_jid(const char *jid); | |
231 GList *buddy_search(char *string); | |
232 void foreach_buddy(guint roster_type, | |
233 void (*pfunc)(gpointer rosterdata, void *param), | |
234 void *param); | |
235 void foreach_group_member(gpointer groupdata, | |
236 void (*pfunc)(gpointer rosterdata, void *param), | |
237 void *param); | |
238 gpointer unread_msg(gpointer rosterdata); | |
239 | |
240 void unread_jid_add(const char *jid); | |
241 GList *unread_jid_get_list(void); | |
242 | |
243 GSList *compl_list(guint type); | |
244 | |
245 #endif /* __MCABBER_ROSTER_H__ */ | |
246 | |
247 /* vim: set expandtab cindent cinoptions=>2\:2(0: For Vim users... */ |