status.h

Go to the documentation of this file.
00001 /*
00002  * purple
00003  *
00004  * Purple is the legal property of its developers, whose names are too numerous
00005  * to list here.  Please refer to the COPYRIGHT file distributed with this
00006  * source distribution.
00007  *
00008  * This program is free software; you can redistribute it and/or modify
00009  * it under the terms of the GNU General Public License as published by
00010  * the Free Software Foundation; either version 2 of the License, or
00011  * (at your option) any later version.
00012  *
00013  * This program is distributed in the hope that it will be useful,
00014  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016  * GNU General Public License for more details.
00017  *
00018  * You should have received a copy of the GNU General Public License
00019  * along with this program; if not, write to the Free Software
00020  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
00021  */
00022 #ifndef _PURPLE_STATUS_H_
00023 #define _PURPLE_STATUS_H_
00024 
00085 typedef struct _PurpleStatusType      PurpleStatusType;
00086 typedef struct _PurpleStatusAttr      PurpleStatusAttr;
00087 typedef struct _PurplePresence        PurplePresence;
00088 typedef struct _PurpleStatus          PurpleStatus;
00089 
00090 typedef struct _PurpleMood {
00091     const char *mood;
00092     const char *description;
00093     gpointer *padding;
00094 } PurpleMood;
00095 
00101 typedef enum
00102 {
00103     PURPLE_PRESENCE_CONTEXT_UNSET   = 0,
00104     PURPLE_PRESENCE_CONTEXT_ACCOUNT,
00105     PURPLE_PRESENCE_CONTEXT_CONV,
00106     PURPLE_PRESENCE_CONTEXT_BUDDY
00107 
00108 } PurplePresenceContext;
00109 
00113 /*
00114  * If you add a value to this enum, make sure you update
00115  * the status_primitive_map and primitive_scores arrays in status.c.
00116  */
00117 typedef enum
00118 {
00119     PURPLE_STATUS_UNSET = 0,
00120     PURPLE_STATUS_OFFLINE,
00121     PURPLE_STATUS_AVAILABLE,
00122     PURPLE_STATUS_UNAVAILABLE,
00123     PURPLE_STATUS_INVISIBLE,
00124     PURPLE_STATUS_AWAY,
00125     PURPLE_STATUS_EXTENDED_AWAY,
00126     PURPLE_STATUS_MOBILE,
00127     PURPLE_STATUS_TUNE,
00128     PURPLE_STATUS_MOOD,
00129     PURPLE_STATUS_NUM_PRIMITIVES
00130 } PurpleStatusPrimitive;
00131 
00132 #include "account.h"
00133 #include "blist.h"
00134 #include "conversation.h"
00135 #include "value.h"
00136 
00137 #define PURPLE_TUNE_ARTIST  "tune_artist"
00138 #define PURPLE_TUNE_TITLE   "tune_title"
00139 #define PURPLE_TUNE_ALBUM   "tune_album"
00140 #define PURPLE_TUNE_GENRE   "tune_genre"
00141 #define PURPLE_TUNE_COMMENT "tune_comment"
00142 #define PURPLE_TUNE_TRACK   "tune_track"
00143 #define PURPLE_TUNE_TIME    "tune_time"
00144 #define PURPLE_TUNE_YEAR    "tune_year"
00145 #define PURPLE_TUNE_URL     "tune_url"
00146 #define PURPLE_TUNE_FULL    "tune_full"
00147 
00148 #define PURPLE_MOOD_NAME    "mood"
00149 #define PURPLE_MOOD_COMMENT "moodtext"
00150 
00151 #ifdef __cplusplus
00152 extern "C" {
00153 #endif
00154 
00155 /**************************************************************************/
00157 /**************************************************************************/
00168 const char *purple_primitive_get_id_from_type(PurpleStatusPrimitive type);
00169 
00179 const char *purple_primitive_get_name_from_type(PurpleStatusPrimitive type);
00180 
00189 PurpleStatusPrimitive purple_primitive_get_type_from_id(const char *id);
00190 
00193 /**************************************************************************/
00195 /**************************************************************************/
00214 PurpleStatusType *purple_status_type_new_full(PurpleStatusPrimitive primitive,
00215                                           const char *id, const char *name,
00216                                           gboolean saveable,
00217                                           gboolean user_settable,
00218                                           gboolean independent);
00219 
00233 PurpleStatusType *purple_status_type_new(PurpleStatusPrimitive primitive,
00234                                      const char *id, const char *name,
00235                                      gboolean user_settable);
00236 
00257 PurpleStatusType *purple_status_type_new_with_attrs(PurpleStatusPrimitive primitive,
00258                                                 const char *id,
00259                                                 const char *name,
00260                                                 gboolean saveable,
00261                                                 gboolean user_settable,
00262                                                 gboolean independent,
00263                                                 const char *attr_id,
00264                                                 const char *attr_name,
00265                                                 PurpleValue *attr_value, ...) G_GNUC_NULL_TERMINATED;
00266 
00272 void purple_status_type_destroy(PurpleStatusType *status_type);
00273 
00274 #if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
00275 
00287 void purple_status_type_set_primary_attr(PurpleStatusType *status_type,
00288                                        const char *attr_id);
00289 #endif
00290 
00291 #if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
00292 
00304 void purple_status_type_add_attr(PurpleStatusType *status_type, const char *id,
00305                                const char *name, PurpleValue *value);
00306 #endif
00307 
00308 #if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
00309 
00322 void purple_status_type_add_attrs(PurpleStatusType *status_type, const char *id,
00323                                 const char *name, PurpleValue *value, ...) G_GNUC_NULL_TERMINATED;
00324 #endif
00325 
00326 #if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
00327 
00337 void purple_status_type_add_attrs_vargs(PurpleStatusType *status_type,
00338                                       va_list args);
00339 #endif
00340 
00348 PurpleStatusPrimitive purple_status_type_get_primitive(
00349     const PurpleStatusType *status_type);
00350 
00358 const char *purple_status_type_get_id(const PurpleStatusType *status_type);
00359 
00367 const char *purple_status_type_get_name(const PurpleStatusType *status_type);
00368 
00377 gboolean purple_status_type_is_saveable(const PurpleStatusType *status_type);
00378 
00388 gboolean purple_status_type_is_user_settable(const PurpleStatusType *status_type);
00389 
00400 gboolean purple_status_type_is_independent(const PurpleStatusType *status_type);
00401 
00409 gboolean purple_status_type_is_exclusive(const PurpleStatusType *status_type);
00410 
00420 gboolean purple_status_type_is_available(const PurpleStatusType *status_type);
00421 
00422 #if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
00423 
00432 const char *purple_status_type_get_primary_attr(const PurpleStatusType *type);
00433 #endif
00434 
00443 PurpleStatusAttr *purple_status_type_get_attr(const PurpleStatusType *status_type,
00444                                           const char *id);
00445 
00453 GList *purple_status_type_get_attrs(const PurpleStatusType *status_type);
00454 
00464 const PurpleStatusType *purple_status_type_find_with_id(GList *status_types,
00465                                                     const char *id);
00466 
00469 /**************************************************************************/
00471 /**************************************************************************/
00483 PurpleStatusAttr *purple_status_attr_new(const char *id, const char *name,
00484                                      PurpleValue *value_type);
00485 
00491 void purple_status_attr_destroy(PurpleStatusAttr *attr);
00492 
00500 const char *purple_status_attr_get_id(const PurpleStatusAttr *attr);
00501 
00509 const char *purple_status_attr_get_name(const PurpleStatusAttr *attr);
00510 
00518 PurpleValue *purple_status_attr_get_value(const PurpleStatusAttr *attr);
00519 
00522 /**************************************************************************/
00524 /**************************************************************************/
00535 PurpleStatus *purple_status_new(PurpleStatusType *status_type,
00536                             PurplePresence *presence);
00537 
00543 void purple_status_destroy(PurpleStatus *status);
00544 
00553 void purple_status_set_active(PurpleStatus *status, gboolean active);
00554 
00567 void purple_status_set_active_with_attrs(PurpleStatus *status, gboolean active,
00568                                        va_list args);
00569 
00582 void purple_status_set_active_with_attrs_list(PurpleStatus *status, gboolean active,
00583                                             GList *attrs);
00584 
00585 #if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
00586 
00596 void purple_status_set_attr_boolean(PurpleStatus *status, const char *id,
00597                                   gboolean value);
00598 #endif
00599 
00600 #if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
00601 
00611 void purple_status_set_attr_int(PurpleStatus *status, const char *id,
00612                               int value);
00613 #endif
00614 
00615 #if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
00616 
00626 void purple_status_set_attr_string(PurpleStatus *status, const char *id,
00627                                  const char *value);
00628 #endif
00629 
00637 PurpleStatusType *purple_status_get_type(const PurpleStatus *status);
00638 
00646 PurplePresence *purple_status_get_presence(const PurpleStatus *status);
00647 
00658 const char *purple_status_get_id(const PurpleStatus *status);
00659 
00670 const char *purple_status_get_name(const PurpleStatus *status);
00671 
00682 gboolean purple_status_is_independent(const PurpleStatus *status);
00683 
00694 gboolean purple_status_is_exclusive(const PurpleStatus *status);
00695 
00708 gboolean purple_status_is_available(const PurpleStatus *status);
00709 
00717 gboolean purple_status_is_active(const PurpleStatus *status);
00718 
00726 gboolean purple_status_is_online(const PurpleStatus *status);
00727 
00736 PurpleValue *purple_status_get_attr_value(const PurpleStatus *status,
00737                                       const char *id);
00738 
00747 gboolean purple_status_get_attr_boolean(const PurpleStatus *status,
00748                                       const char *id);
00749 
00758 int purple_status_get_attr_int(const PurpleStatus *status, const char *id);
00759 
00768 const char *purple_status_get_attr_string(const PurpleStatus *status,
00769                                         const char *id);
00770 
00781 gint purple_status_compare(const PurpleStatus *status1, const PurpleStatus *status2);
00782 
00785 /**************************************************************************/
00787 /**************************************************************************/
00797 PurplePresence *purple_presence_new(PurplePresenceContext context);
00798 
00806 PurplePresence *purple_presence_new_for_account(PurpleAccount *account);
00807 
00815 PurplePresence *purple_presence_new_for_conv(PurpleConversation *conv);
00816 
00824 PurplePresence *purple_presence_new_for_buddy(PurpleBuddy *buddy);
00825 
00834 void purple_presence_destroy(PurplePresence *presence);
00835 
00836 #if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
00837 
00846 void purple_presence_add_status(PurplePresence *presence, PurpleStatus *status);
00847 #endif
00848 
00849 #if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
00850 
00859 void purple_presence_add_list(PurplePresence *presence, GList *source_list);
00860 #endif
00861 
00873 void purple_presence_set_status_active(PurplePresence *presence,
00874                                      const char *status_id, gboolean active);
00875 
00885 void purple_presence_switch_status(PurplePresence *presence,
00886                                  const char *status_id);
00887 
00898 void purple_presence_set_idle(PurplePresence *presence, gboolean idle,
00899                             time_t idle_time);
00900 
00907 void purple_presence_set_login_time(PurplePresence *presence, time_t login_time);
00908 
00909 
00917 PurplePresenceContext purple_presence_get_context(const PurplePresence *presence);
00918 
00926 PurpleAccount *purple_presence_get_account(const PurplePresence *presence);
00927 
00935 PurpleConversation *purple_presence_get_conversation(const PurplePresence *presence);
00936 
00944 const char *purple_presence_get_chat_user(const PurplePresence *presence);
00945 
00953 PurpleBuddy *purple_presence_get_buddy(const PurplePresence *presence);
00954 
00962 GList *purple_presence_get_statuses(const PurplePresence *presence);
00963 
00972 PurpleStatus *purple_presence_get_status(const PurplePresence *presence,
00973                                      const char *status_id);
00974 
00982 PurpleStatus *purple_presence_get_active_status(const PurplePresence *presence);
00983 
00993 gboolean purple_presence_is_available(const PurplePresence *presence);
00994 
01002 gboolean purple_presence_is_online(const PurplePresence *presence);
01003 
01014 gboolean purple_presence_is_status_active(const PurplePresence *presence,
01015                                         const char *status_id);
01016 
01028 gboolean purple_presence_is_status_primitive_active(
01029     const PurplePresence *presence, PurpleStatusPrimitive primitive);
01030 
01040 gboolean purple_presence_is_idle(const PurplePresence *presence);
01041 
01049 time_t purple_presence_get_idle_time(const PurplePresence *presence);
01050 
01058 time_t purple_presence_get_login_time(const PurplePresence *presence);
01059 
01070 gint purple_presence_compare(const PurplePresence *presence1,
01071                            const PurplePresence *presence2);
01072 
01075 /**************************************************************************/
01077 /**************************************************************************/
01085 void *purple_status_get_handle(void);
01086 
01090 void purple_status_init(void);
01091 
01095 void purple_status_uninit(void);
01096 
01099 #ifdef __cplusplus
01100 }
01101 #endif
01102 
01103 #endif /* _PURPLE_STATUS_H_ */