Mercurial > ~mikael > mcabber > hg
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mcabber/mcabber/roster.h Mon Jan 18 15:36:19 2010 +0200 @@ -0,0 +1,247 @@ +#ifndef __MCABBER_ROSTER_H__ +#define __MCABBER_ROSTER_H__ 1 + +#include <glib.h> +#include <time.h> + +#include <mcabber/pgp.h> +#include <mcabber/config.h> + +#define SPECIAL_BUFFER_STATUS_ID "[status]" + +enum imstatus { + offline, + available, + freeforchat, + dontdisturb, + notavail, + away, + invisible, + imstatus_size +}; + +extern char imstatus2char[]; // Should match enum above + +enum imrole { + role_none, + role_moderator, + role_participant, + role_visitor, + imrole_size +}; + +extern char *strrole[]; // Should match enum above + +enum imaffiliation { + affil_none, + affil_owner, + affil_admin, + affil_member, + affil_outcast, + imaffiliation_size +}; + +extern char *straffil[]; // Should match enum above + +enum subscr { + sub_none = 0, + sub_pending = 1, + sub_to = 1 << 1, + sub_from = 1 << 2, + sub_both = sub_to|sub_from, + sub_remove = 1 << 3 +}; + +enum findwhat { + jidsearch, + namesearch +}; + +extern char *strprintstatus[]; + +// Note: do not change the ordering as these values are visible +// to the user (option 'muc_print_status')! +enum room_printstatus { + status_default, + status_none, + status_in_and_out, + status_all +}; + +extern char *strautowhois[]; + +enum room_autowhois { + autowhois_default, + autowhois_off, + autowhois_on +}; + +struct role_affil { + enum { type_role, type_affil } type; + union { + enum imrole role; + enum imaffiliation affil; + } val; +}; + +// Roster_type is a set of flags, so values should be 2^n +#define ROSTER_TYPE_USER 1U +#define ROSTER_TYPE_GROUP (1U<<1) +#define ROSTER_TYPE_AGENT (1U<<2) +#define ROSTER_TYPE_ROOM (1U<<3) +#define ROSTER_TYPE_SPECIAL (1U<<4) + +// Flags: +#define ROSTER_FLAG_MSG 1U // Message not read +#define ROSTER_FLAG_HIDE (1U<<1) // Group hidden (or buddy window closed) +#define ROSTER_FLAG_LOCK (1U<<2) // Node should not be removed from buddylist +#define ROSTER_FLAG_USRLOCK (1U<<3) // Node should not be removed from buddylist +// ROSTER_FLAG_LOCAL (1U<<4) // Buddy not on server's roster (??) + +#define JEP0022 +#define JEP0085 + +struct jep0022 { + guint support; + guint last_state_sent; + gchar *last_msgid_sent; + guint last_state_rcvd; + gchar *last_msgid_rcvd; +}; +struct jep0085 { + guint support; + guint last_state_sent; + guint last_state_rcvd; +}; + +enum chatstate_support { + CHATSTATES_SUPPORT_UNKNOWN = 0, + CHATSTATES_SUPPORT_PROBED, + CHATSTATES_SUPPORT_NONE, + CHATSTATES_SUPPORT_OK +}; + +struct pgp_data { + gchar *sign_keyid; // KeyId used by the contact to sign their presence/msg +#ifdef HAVE_GPGME + gpgme_sigsum_t last_sigsum; // Last signature summary +#endif +}; + +/* Message event and chat state flags */ +#define ROSTER_EVENT_NONE 0U +/* JEP-22 Message Events */ +#define ROSTER_EVENT_OFFLINE (1U<<0) +#define ROSTER_EVENT_DELIVERED (1U<<1) +#define ROSTER_EVENT_DISPLAYED (1U<<2) +/* JEP-22 & JEP-85 */ +#define ROSTER_EVENT_COMPOSING (1U<<3) +/* JEP-85 Chat State Notifications */ +#define ROSTER_EVENT_ACTIVE (1U<<4) +#define ROSTER_EVENT_PAUSED (1U<<5) +#define ROSTER_EVENT_INACTIVE (1U<<6) +#define ROSTER_EVENT_GONE (1U<<7) + +extern GList *buddylist; +extern GList *current_buddy; +extern GList *alternate_buddy; + +// Macros... + +#define BUDDATA(glist_node) ((glist_node)->data) +#define CURRENT_JID buddy_getjid(BUDDATA(current_buddy)) + +// Prototypes... +void roster_init(void); +GSList *roster_add_group(const char *name); +GSList *roster_add_user(const char *jid, const char *name, const char *group, + guint type, enum subscr esub, gint on_server); +GSList *roster_find(const char *jidname, enum findwhat type, guint roster_type); +void roster_del_user(const char *jid); +void roster_free(void); +void roster_setstatus(const char *jid, const char *resname, gchar prio, + enum imstatus bstat, const char *status_msg, + time_t timestamp, + enum imrole role, enum imaffiliation affil, + const char *realjid); +void roster_setflags(const char *jid, guint flags, guint value); +void roster_msg_setflag(const char *jid, guint special, guint value); +const char *roster_getname(const char *jid); +const char *roster_getnickname(const char *jid); +void roster_settype(const char *jid, guint type); +enum imstatus roster_getstatus(const char *jid, const char *resname); +const char *roster_getstatusmsg(const char *jid, const char *resname); +guint roster_gettype(const char *jid); +guint roster_getsubscription(const char *jid); +void roster_unsubscribed(const char *jid); + +void buddylist_build(void); +void buddy_hide_group(gpointer rosterdata, int hide); +void buddylist_set_hide_offline_buddies(int hide); +int buddylist_isset_filter(void); +int buddylist_is_status_filtered(enum imstatus status); +void buddylist_set_filter(guchar); +guchar buddylist_get_filter(void); +const char *buddy_getjid(gpointer rosterdata); +void buddy_setname(gpointer rosterdata, char *newname); +const char *buddy_getname(gpointer rosterdata); +void buddy_setnickname(gpointer rosterdata, const char *newname); +const char *buddy_getnickname(gpointer rosterdata); +void buddy_setinsideroom(gpointer rosterdata, guint inside); +guint buddy_getinsideroom(gpointer rosterdata); +void buddy_settopic(gpointer rosterdata, const char *newtopic); +const char *buddy_gettopic(gpointer rosterdata); +void buddy_setprintstatus(gpointer rosterdata, enum room_printstatus); +enum room_printstatus buddy_getprintstatus(gpointer rosterdata); +void buddy_setautowhois(gpointer rosterdata, enum room_autowhois); +enum room_autowhois buddy_getautowhois(gpointer rosterdata); +void buddy_settype(gpointer rosterdata, guint type); +guint buddy_gettype(gpointer rosterdata); +guint buddy_getsubscription(gpointer rosterdata); +void buddy_setgroup(gpointer rosterdata, char *newgroupname); +const char *buddy_getgroupname(gpointer rosterdata); +gpointer buddy_getgroup(gpointer rosterdata); +enum imstatus buddy_getstatus(gpointer rosterdata, const char *resname); +const char *buddy_getstatusmsg(gpointer rosterdata, const char *resname); +time_t buddy_getstatustime(gpointer rosterdata, const char *resname); +gchar buddy_getresourceprio(gpointer rosterdata, const char *resname); +//int buddy_isresource(gpointer rosterdata); +GSList *buddy_getresources(gpointer rosterdata); +GSList *buddy_getresources_locale(gpointer rosterdata); +void buddy_resource_setname(gpointer rosterdata, const char *resname, + const char *newname); +void buddy_resource_setevents(gpointer rosterdata, const char *resname, + guint event); +guint buddy_resource_getevents(gpointer rosterdata, const char *resname); +void buddy_resource_setcaps(gpointer rosterdata, const char *resname, + const char *caps); +char *buddy_resource_getcaps(gpointer rosterdata, const char *resname); +struct jep0022 *buddy_resource_jep22(gpointer rosterdata, const char *resname); +struct jep0085 *buddy_resource_jep85(gpointer rosterdata, const char *resname); +struct pgp_data *buddy_resource_pgp(gpointer rosterdata, const char *resname); +enum imrole buddy_getrole(gpointer rosterdata, const char *resname); +enum imaffiliation buddy_getaffil(gpointer rosterdata, const char *resname); +const char *buddy_getrjid(gpointer rosterdata, const char *resname); +void buddy_del_all_resources(gpointer rosterdata); +void buddy_setflags(gpointer rosterdata, guint flags, guint value); +guint buddy_getflags(gpointer rosterdata); +void buddy_setonserverflag(gpointer rosterdata, guint onserver); +guint buddy_getonserverflag(gpointer rosterdata); +GList *buddy_search_jid(const char *jid); +GList *buddy_search(char *string); +void foreach_buddy(guint roster_type, + void (*pfunc)(gpointer rosterdata, void *param), + void *param); +void foreach_group_member(gpointer groupdata, + void (*pfunc)(gpointer rosterdata, void *param), + void *param); +gpointer unread_msg(gpointer rosterdata); + +void unread_jid_add(const char *jid); +GList *unread_jid_get_list(void); + +GSList *compl_list(guint type); + +#endif /* __MCABBER_ROSTER_H__ */ + +/* vim: set expandtab cindent cinoptions=>2\:2(0: For Vim users... */