diff 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
line wrap: on
line diff
--- a/src/status.h	Sat Mar 26 19:13:15 2005 +0000
+++ b/src/status.h	Sat Mar 26 19:19:33 2005 +0000
@@ -25,6 +25,49 @@
 #ifndef _GAIM_STATUS_H_
 #define _GAIM_STATUS_H_
 
+/**
+ * TODO: Someone figure out if we need to do something to get
+ *       this in the Doxygen generated docs.
+ *
+ * A brief explanation of the status API:
+ *
+ * GaimStatusType's are created by each PRPL.  They outline the
+ * available statuses of the protocol.  AIM, for example, supports
+ * and available state with an optional available message, an away
+ * state with a mandatory message, and an invisible state (which is
+ * technically "independant" of the other two, but we'll get into
+ * that later).  GaimStatusTypes are very permanent.  They are
+ * hardcoded in each PRPL and will not change often.  And because
+ * they are hardcoded, they do not need to be saved to any XML file.
+ *
+ * A GaimStatus can be thought of as an "instance" of a GaimStatusType.
+ * If you've familiar with object-oriented programming languages
+ * then this should be immediately clear.  Say, for example, that
+ * one of your AIM buddies has set himself as "away."  You have a
+ * GaimBuddy node for this person in your buddy list.  Gaim wants
+ * to mark this buddy as "away," so it creates a new GaimStatus.
+ * The GaimStatus has its GaimStatusType set to the "away" state
+ * for the oscar PRPL.  The GaimStatus also contains the buddy's
+ * away message.  GaimStatuses are sometimes saved, depending on
+ * the context.  The current GaimStatuses associated with each of
+ * your accounts is saved so that the next time you start Gaim,
+ * your accounts will be set to their last know statuses.  There
+ * is also a list of saved statuses that are written to the
+ * status.xml file.
+ *
+ * A GaimPresence is like a collection of GaimStatuses (plus some
+ * other random info).  For any buddy, or for any one of your accounts,
+ * or for any person you're chatting with, you may know various
+ * amounts of information.  This information is all contained in
+ * one GaimPresence.  If one of your buddies is away and idle,
+ * then the presence contains the GaimStatus for their awayness,
+ * and it contains their current idle time.  GaimPresences are
+ * never saved to disk.  The information they contain is only relevent
+ * for the current GaimSession.
+ *
+ * TODO: Talk about independant statuses.
+ */
+
 typedef struct _GaimStatusType      GaimStatusType;
 typedef struct _GaimStatusAttr      GaimStatusAttr;
 typedef struct _GaimPresence        GaimPresence;