comparison src/status.h @ 10737:b7f0bc436179

[gaim-migrate @ 12339] Some notes committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Sat, 26 Mar 2005 19:19:33 +0000
parents 54f7939df8e3
children 94cc67130789
comparison
equal deleted inserted replaced
10736:703f722d076f 10737:b7f0bc436179
22 * along with this program; if not, write to the Free Software 22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 */ 24 */
25 #ifndef _GAIM_STATUS_H_ 25 #ifndef _GAIM_STATUS_H_
26 #define _GAIM_STATUS_H_ 26 #define _GAIM_STATUS_H_
27
28 /**
29 * TODO: Someone figure out if we need to do something to get
30 * this in the Doxygen generated docs.
31 *
32 * A brief explanation of the status API:
33 *
34 * GaimStatusType's are created by each PRPL. They outline the
35 * available statuses of the protocol. AIM, for example, supports
36 * and available state with an optional available message, an away
37 * state with a mandatory message, and an invisible state (which is
38 * technically "independant" of the other two, but we'll get into
39 * that later). GaimStatusTypes are very permanent. They are
40 * hardcoded in each PRPL and will not change often. And because
41 * they are hardcoded, they do not need to be saved to any XML file.
42 *
43 * A GaimStatus can be thought of as an "instance" of a GaimStatusType.
44 * If you've familiar with object-oriented programming languages
45 * then this should be immediately clear. Say, for example, that
46 * one of your AIM buddies has set himself as "away." You have a
47 * GaimBuddy node for this person in your buddy list. Gaim wants
48 * to mark this buddy as "away," so it creates a new GaimStatus.
49 * The GaimStatus has its GaimStatusType set to the "away" state
50 * for the oscar PRPL. The GaimStatus also contains the buddy's
51 * away message. GaimStatuses are sometimes saved, depending on
52 * the context. The current GaimStatuses associated with each of
53 * your accounts is saved so that the next time you start Gaim,
54 * your accounts will be set to their last know statuses. There
55 * is also a list of saved statuses that are written to the
56 * status.xml file.
57 *
58 * A GaimPresence is like a collection of GaimStatuses (plus some
59 * other random info). For any buddy, or for any one of your accounts,
60 * or for any person you're chatting with, you may know various
61 * amounts of information. This information is all contained in
62 * one GaimPresence. If one of your buddies is away and idle,
63 * then the presence contains the GaimStatus for their awayness,
64 * and it contains their current idle time. GaimPresences are
65 * never saved to disk. The information they contain is only relevent
66 * for the current GaimSession.
67 *
68 * TODO: Talk about independant statuses.
69 */
27 70
28 typedef struct _GaimStatusType GaimStatusType; 71 typedef struct _GaimStatusType GaimStatusType;
29 typedef struct _GaimStatusAttr GaimStatusAttr; 72 typedef struct _GaimStatusAttr GaimStatusAttr;
30 typedef struct _GaimPresence GaimPresence; 73 typedef struct _GaimPresence GaimPresence;
31 typedef struct _GaimStatus GaimStatus; 74 typedef struct _GaimStatus GaimStatus;