00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _PURPLE_STATUS_H_
00023 #define _PURPLE_STATUS_H_
00024
00075 typedef struct _PurpleStatusType PurpleStatusType;
00076 typedef struct _PurpleStatusAttr PurpleStatusAttr;
00077 typedef struct _PurplePresence PurplePresence;
00078 typedef struct _PurpleStatus PurpleStatus;
00079
00085 typedef enum
00086 {
00087 PURPLE_PRESENCE_CONTEXT_UNSET = 0,
00088 PURPLE_PRESENCE_CONTEXT_ACCOUNT,
00089 PURPLE_PRESENCE_CONTEXT_CONV,
00090 PURPLE_PRESENCE_CONTEXT_BUDDY
00091
00092 } PurplePresenceContext;
00093
00097 typedef enum
00098 {
00099 PURPLE_STATUS_UNSET = 0,
00100 PURPLE_STATUS_OFFLINE,
00101 PURPLE_STATUS_AVAILABLE,
00102 PURPLE_STATUS_UNAVAILABLE,
00103 PURPLE_STATUS_INVISIBLE,
00104 PURPLE_STATUS_AWAY,
00105 PURPLE_STATUS_EXTENDED_AWAY,
00106 PURPLE_STATUS_MOBILE,
00107 PURPLE_STATUS_NUM_PRIMITIVES
00108
00109 } PurpleStatusPrimitive;
00110
00111 #include "account.h"
00112 #include "blist.h"
00113 #include "conversation.h"
00114 #include "value.h"
00115
00116 #define PURPLE_TUNE_ARTIST "tune_artist"
00117 #define PURPLE_TUNE_TITLE "tune_title"
00118 #define PURPLE_TUNE_ALBUM "tune_album"
00119 #define PURPLE_TUNE_GENRE "tune_genre"
00120 #define PURPLE_TUNE_COMMENT "tune_comment"
00121 #define PURPLE_TUNE_TRACK "tune_track"
00122 #define PURPLE_TUNE_TIME "tune_time"
00123 #define PURPLE_TUNE_YEAR "tune_year"
00124 #define PURPLE_TUNE_URL "tune_url"
00125
00126 #ifdef __cplusplus
00127 extern "C" {
00128 #endif
00129
00130
00132
00143 const char *purple_primitive_get_id_from_type(PurpleStatusPrimitive type);
00144
00154 const char *purple_primitive_get_name_from_type(PurpleStatusPrimitive type);
00155
00164 PurpleStatusPrimitive purple_primitive_get_type_from_id(const char *id);
00165
00168
00170
00189 PurpleStatusType *purple_status_type_new_full(PurpleStatusPrimitive primitive,
00190 const char *id, const char *name,
00191 gboolean saveable,
00192 gboolean user_settable,
00193 gboolean independent);
00194
00208 PurpleStatusType *purple_status_type_new(PurpleStatusPrimitive primitive,
00209 const char *id, const char *name,
00210 gboolean user_settable);
00211
00232 PurpleStatusType *purple_status_type_new_with_attrs(PurpleStatusPrimitive primitive,
00233 const char *id,
00234 const char *name,
00235 gboolean saveable,
00236 gboolean user_settable,
00237 gboolean independent,
00238 const char *attr_id,
00239 const char *attr_name,
00240 PurpleValue *attr_value, ...) G_GNUC_NULL_TERMINATED;
00241
00247 void purple_status_type_destroy(PurpleStatusType *status_type);
00248
00259 void purple_status_type_set_primary_attr(PurpleStatusType *status_type,
00260 const char *attr_id);
00261
00270 void purple_status_type_add_attr(PurpleStatusType *status_type, const char *id,
00271 const char *name, PurpleValue *value);
00272
00282 void purple_status_type_add_attrs(PurpleStatusType *status_type, const char *id,
00283 const char *name, PurpleValue *value, ...) G_GNUC_NULL_TERMINATED;
00284
00291 void purple_status_type_add_attrs_vargs(PurpleStatusType *status_type,
00292 va_list args);
00293
00301 PurpleStatusPrimitive purple_status_type_get_primitive(
00302 const PurpleStatusType *status_type);
00303
00311 const char *purple_status_type_get_id(const PurpleStatusType *status_type);
00312
00320 const char *purple_status_type_get_name(const PurpleStatusType *status_type);
00321
00330 gboolean purple_status_type_is_saveable(const PurpleStatusType *status_type);
00331
00341 gboolean purple_status_type_is_user_settable(const PurpleStatusType *status_type);
00342
00353 gboolean purple_status_type_is_independent(const PurpleStatusType *status_type);
00354
00362 gboolean purple_status_type_is_exclusive(const PurpleStatusType *status_type);
00363
00373 gboolean purple_status_type_is_available(const PurpleStatusType *status_type);
00374
00382 const char *purple_status_type_get_primary_attr(const PurpleStatusType *type);
00383
00392 PurpleStatusAttr *purple_status_type_get_attr(const PurpleStatusType *status_type,
00393 const char *id);
00394
00402 GList *purple_status_type_get_attrs(const PurpleStatusType *status_type);
00403
00413 const PurpleStatusType *purple_status_type_find_with_id(GList *status_types,
00414 const char *id);
00415
00418
00420
00432 PurpleStatusAttr *purple_status_attr_new(const char *id, const char *name,
00433 PurpleValue *value_type);
00434
00440 void purple_status_attr_destroy(PurpleStatusAttr *attr);
00441
00449 const char *purple_status_attr_get_id(const PurpleStatusAttr *attr);
00450
00458 const char *purple_status_attr_get_name(const PurpleStatusAttr *attr);
00459
00467 PurpleValue *purple_status_attr_get_value(const PurpleStatusAttr *attr);
00468
00471
00473
00484 PurpleStatus *purple_status_new(PurpleStatusType *status_type,
00485 PurplePresence *presence);
00486
00492 void purple_status_destroy(PurpleStatus *status);
00493
00502 void purple_status_set_active(PurpleStatus *status, gboolean active);
00503
00516 void purple_status_set_active_with_attrs(PurpleStatus *status, gboolean active,
00517 va_list args);
00518
00531 void purple_status_set_active_with_attrs_list(PurpleStatus *status, gboolean active,
00532 GList *attrs);
00533
00541 void purple_status_set_attr_boolean(PurpleStatus *status, const char *id,
00542 gboolean value);
00543
00551 void purple_status_set_attr_int(PurpleStatus *status, const char *id,
00552 int value);
00553
00561 void purple_status_set_attr_string(PurpleStatus *status, const char *id,
00562 const char *value);
00563
00571 PurpleStatusType *purple_status_get_type(const PurpleStatus *status);
00572
00580 PurplePresence *purple_status_get_presence(const PurpleStatus *status);
00581
00592 const char *purple_status_get_id(const PurpleStatus *status);
00593
00604 const char *purple_status_get_name(const PurpleStatus *status);
00605
00616 gboolean purple_status_is_independent(const PurpleStatus *status);
00617
00628 gboolean purple_status_is_exclusive(const PurpleStatus *status);
00629
00642 gboolean purple_status_is_available(const PurpleStatus *status);
00643
00651 gboolean purple_status_is_active(const PurpleStatus *status);
00652
00660 gboolean purple_status_is_online(const PurpleStatus *status);
00661
00670 PurpleValue *purple_status_get_attr_value(const PurpleStatus *status,
00671 const char *id);
00672
00681 gboolean purple_status_get_attr_boolean(const PurpleStatus *status,
00682 const char *id);
00683
00692 int purple_status_get_attr_int(const PurpleStatus *status, const char *id);
00693
00702 const char *purple_status_get_attr_string(const PurpleStatus *status,
00703 const char *id);
00704
00715 gint purple_status_compare(const PurpleStatus *status1, const PurpleStatus *status2);
00716
00719
00721
00731 PurplePresence *purple_presence_new(PurplePresenceContext context);
00732
00740 PurplePresence *purple_presence_new_for_account(PurpleAccount *account);
00741
00749 PurplePresence *purple_presence_new_for_conv(PurpleConversation *conv);
00750
00758 PurplePresence *purple_presence_new_for_buddy(PurpleBuddy *buddy);
00759
00768 void purple_presence_destroy(PurplePresence *presence);
00769
00776 void purple_presence_add_status(PurplePresence *presence, PurpleStatus *status);
00777
00785 void purple_presence_add_list(PurplePresence *presence, GList *source_list);
00786
00798 void purple_presence_set_status_active(PurplePresence *presence,
00799 const char *status_id, gboolean active);
00800
00810 void purple_presence_switch_status(PurplePresence *presence,
00811 const char *status_id);
00812
00822 void purple_presence_set_idle(PurplePresence *presence, gboolean idle,
00823 time_t idle_time);
00824
00831 void purple_presence_set_login_time(PurplePresence *presence, time_t login_time);
00832
00833
00841 PurplePresenceContext purple_presence_get_context(const PurplePresence *presence);
00842
00850 PurpleAccount *purple_presence_get_account(const PurplePresence *presence);
00851
00859 PurpleConversation *purple_presence_get_conversation(const PurplePresence *presence);
00860
00868 const char *purple_presence_get_chat_user(const PurplePresence *presence);
00869
00877 PurpleBuddy *purple_presence_get_buddy(const PurplePresence *presence);
00878
00886 GList *purple_presence_get_statuses(const PurplePresence *presence);
00887
00896 PurpleStatus *purple_presence_get_status(const PurplePresence *presence,
00897 const char *status_id);
00898
00906 PurpleStatus *purple_presence_get_active_status(const PurplePresence *presence);
00907
00917 gboolean purple_presence_is_available(const PurplePresence *presence);
00918
00926 gboolean purple_presence_is_online(const PurplePresence *presence);
00927
00938 gboolean purple_presence_is_status_active(const PurplePresence *presence,
00939 const char *status_id);
00940
00952 gboolean purple_presence_is_status_primitive_active(
00953 const PurplePresence *presence, PurpleStatusPrimitive primitive);
00954
00964 gboolean purple_presence_is_idle(const PurplePresence *presence);
00965
00973 time_t purple_presence_get_idle_time(const PurplePresence *presence);
00974
00982 time_t purple_presence_get_login_time(const PurplePresence *presence);
00983
00994 gint purple_presence_compare(const PurplePresence *presence1,
00995 const PurplePresence *presence2);
00996
00999
01001
01009 void *purple_status_get_handle(void);
01010
01014 void purple_status_init(void);
01015
01019 void purple_status_uninit(void);
01020
01023 #ifdef __cplusplus
01024 }
01025 #endif
01026
01027 #endif