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... */