00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _PURPLE_ACCOUNT_H_
00028 #define _PURPLE_ACCOUNT_H_
00029
00030 #include <glib.h>
00031 #include <glib-object.h>
00032
00034 typedef struct _PurpleAccountUiOps PurpleAccountUiOps;
00036 typedef struct _PurpleAccount PurpleAccount;
00037
00038 typedef gboolean (*PurpleFilterAccountFunc)(PurpleAccount *account);
00039 typedef void (*PurpleAccountRequestAuthorizationCb)(void *);
00040 typedef void (*PurpleAccountRegistrationCb)(PurpleAccount *account, gboolean succeeded, void *user_data);
00041 typedef void (*PurpleAccountUnregistrationCb)(PurpleAccount *account, gboolean succeeded, void *user_data);
00042 typedef void (*PurpleSetPublicAliasSuccessCallback)(PurpleAccount *account, const char *new_alias);
00043 typedef void (*PurpleSetPublicAliasFailureCallback)(PurpleAccount *account, const char *error);
00044 typedef void (*PurpleGetPublicAliasSuccessCallback)(PurpleAccount *account, const char *alias);
00045 typedef void (*PurpleGetPublicAliasFailureCallback)(PurpleAccount *account, const char *error);
00046
00047 #include "connection.h"
00048 #include "log.h"
00049 #include "privacy.h"
00050 #include "proxy.h"
00051 #include "prpl.h"
00052 #include "status.h"
00053
00057 typedef enum
00058 {
00059 PURPLE_ACCOUNT_REQUEST_AUTHORIZATION = 0
00060 } PurpleAccountRequestType;
00061
00065 typedef enum
00066 {
00067 PURPLE_ACCOUNT_RESPONSE_IGNORE = -2,
00068 PURPLE_ACCOUNT_RESPONSE_DENY = -1,
00069 PURPLE_ACCOUNT_RESPONSE_PASS = 0,
00070 PURPLE_ACCOUNT_RESPONSE_ACCEPT = 1
00071 } PurpleAccountRequestResponse;
00072
00076 struct _PurpleAccountUiOps
00077 {
00081 void (*notify_added)(PurpleAccount *account,
00082 const char *remote_user,
00083 const char *id,
00084 const char *alias,
00085 const char *message);
00086
00088 void (*status_changed)(PurpleAccount *account,
00089 PurpleStatus *status);
00090
00092 void (*request_add)(PurpleAccount *account,
00093 const char *remote_user,
00094 const char *id,
00095 const char *alias,
00096 const char *message);
00097
00103 void *(*request_authorize)(PurpleAccount *account,
00104 const char *remote_user,
00105 const char *id,
00106 const char *alias,
00107 const char *message,
00108 gboolean on_list,
00109 PurpleAccountRequestAuthorizationCb authorize_cb,
00110 PurpleAccountRequestAuthorizationCb deny_cb,
00111 void *user_data);
00112
00116 void (*close_account_request)(void *ui_handle);
00117
00118 void (*_purple_reserved1)(void);
00119 void (*_purple_reserved2)(void);
00120 void (*_purple_reserved3)(void);
00121 void (*_purple_reserved4)(void);
00122 };
00123
00126 struct _PurpleAccount
00127 {
00128 char *username;
00129 char *alias;
00130 char *password;
00131 char *user_info;
00133 char *buddy_icon_path;
00135 gboolean remember_pass;
00137 char *protocol_id;
00139 PurpleConnection *gc;
00140 gboolean disconnecting;
00142 GHashTable *settings;
00143 GHashTable *ui_settings;
00145 PurpleProxyInfo *proxy_info;
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158 GSList *permit;
00159 GSList *deny;
00160 PurplePrivacyType perm_deny;
00162 GList *status_types;
00164 PurplePresence *presence;
00165 PurpleLog *system_log;
00167 void *ui_data;
00168 PurpleAccountRegistrationCb registration_cb;
00169 void *registration_cb_user_data;
00170
00171 gpointer priv;
00172 };
00173
00174 #ifdef __cplusplus
00175 extern "C" {
00176 #endif
00177
00178
00180
00191 PurpleAccount *purple_account_new(const char *username, const char *protocol_id);
00192
00198 void purple_account_destroy(PurpleAccount *account);
00199
00205 void purple_account_connect(PurpleAccount *account);
00206
00214 void purple_account_set_register_callback(PurpleAccount *account, PurpleAccountRegistrationCb cb, void *user_data);
00215
00221 void purple_account_register(PurpleAccount *account);
00222
00230 void purple_account_unregister(PurpleAccount *account, PurpleAccountUnregistrationCb cb, void *user_data);
00231
00237 void purple_account_disconnect(PurpleAccount *account);
00238
00252 void purple_account_notify_added(PurpleAccount *account, const char *remote_user,
00253 const char *id, const char *alias,
00254 const char *message);
00255
00271 void purple_account_request_add(PurpleAccount *account, const char *remote_user,
00272 const char *id, const char *alias,
00273 const char *message);
00274
00294 void *purple_account_request_authorization(PurpleAccount *account, const char *remote_user,
00295 const char *id, const char *alias, const char *message, gboolean on_list,
00296 PurpleAccountRequestAuthorizationCb auth_cb, PurpleAccountRequestAuthorizationCb deny_cb, void *user_data);
00297
00303 void purple_account_request_close_with_account(PurpleAccount *account);
00304
00310 void purple_account_request_close(void *ui_handle);
00311
00321 void purple_account_request_password(PurpleAccount *account, GCallback ok_cb,
00322 GCallback cancel_cb, void *user_data);
00323
00329 void purple_account_request_change_password(PurpleAccount *account);
00330
00337 void purple_account_request_change_user_info(PurpleAccount *account);
00338
00345 void purple_account_set_username(PurpleAccount *account, const char *username);
00346
00353 void purple_account_set_password(PurpleAccount *account, const char *password);
00354
00361 void purple_account_set_alias(PurpleAccount *account, const char *alias);
00362
00369 void purple_account_set_user_info(PurpleAccount *account, const char *user_info);
00370
00377 void purple_account_set_buddy_icon_path(PurpleAccount *account, const char *path);
00378
00385 void purple_account_set_protocol_id(PurpleAccount *account,
00386 const char *protocol_id);
00387
00394 void purple_account_set_connection(PurpleAccount *account, PurpleConnection *gc);
00395
00402 void purple_account_set_remember_password(PurpleAccount *account, gboolean value);
00403
00410 void purple_account_set_check_mail(PurpleAccount *account, gboolean value);
00411
00420 void purple_account_set_enabled(PurpleAccount *account, const char *ui,
00421 gboolean value);
00422
00429 void purple_account_set_proxy_info(PurpleAccount *account, PurpleProxyInfo *info);
00430
00439 void purple_account_set_privacy_type(PurpleAccount *account, PurplePrivacyType privacy_type);
00440
00447 void purple_account_set_status_types(PurpleAccount *account, GList *status_types);
00448
00455 void purple_account_set_status(PurpleAccount *account, const char *status_id,
00456 gboolean active, ...) G_GNUC_NULL_TERMINATED;
00457
00458
00476 void purple_account_set_status_list(PurpleAccount *account,
00477 const char *status_id, gboolean active, GList *attrs);
00478
00497 void purple_account_set_public_alias(PurpleAccount *account,
00498 const char *alias, PurpleSetPublicAliasSuccessCallback success_cb,
00499 PurpleSetPublicAliasFailureCallback failure_cb);
00500
00511 void purple_account_get_public_alias(PurpleAccount *account,
00512 PurpleGetPublicAliasSuccessCallback success_cb,
00513 PurpleGetPublicAliasFailureCallback failure_cb);
00514
00522 gboolean purple_account_get_silence_suppression(const PurpleAccount *account);
00523
00530 void purple_account_set_silence_suppression(PurpleAccount *account,
00531 gboolean value);
00532
00538 void purple_account_clear_settings(PurpleAccount *account);
00539
00548 void purple_account_remove_setting(PurpleAccount *account, const char *setting);
00549
00557 void purple_account_set_int(PurpleAccount *account, const char *name, int value);
00558
00566 void purple_account_set_string(PurpleAccount *account, const char *name,
00567 const char *value);
00568
00576 void purple_account_set_bool(PurpleAccount *account, const char *name,
00577 gboolean value);
00578
00587 void purple_account_set_ui_int(PurpleAccount *account, const char *ui,
00588 const char *name, int value);
00589
00598 void purple_account_set_ui_string(PurpleAccount *account, const char *ui,
00599 const char *name, const char *value);
00600
00609 void purple_account_set_ui_bool(PurpleAccount *account, const char *ui,
00610 const char *name, gboolean value);
00611
00619 gboolean purple_account_is_connected(const PurpleAccount *account);
00620
00628 gboolean purple_account_is_connecting(const PurpleAccount *account);
00629
00637 gboolean purple_account_is_disconnected(const PurpleAccount *account);
00638
00646 const char *purple_account_get_username(const PurpleAccount *account);
00647
00655 const char *purple_account_get_password(const PurpleAccount *account);
00656
00664 const char *purple_account_get_alias(const PurpleAccount *account);
00665
00673 const char *purple_account_get_user_info(const PurpleAccount *account);
00674
00682 const char *purple_account_get_buddy_icon_path(const PurpleAccount *account);
00683
00691 const char *purple_account_get_protocol_id(const PurpleAccount *account);
00692
00700 const char *purple_account_get_protocol_name(const PurpleAccount *account);
00701
00709 PurpleConnection *purple_account_get_connection(const PurpleAccount *account);
00710
00723 const gchar *purple_account_get_name_for_display(const PurpleAccount *account);
00724
00732 gboolean purple_account_get_remember_password(const PurpleAccount *account);
00733
00741 gboolean purple_account_get_check_mail(const PurpleAccount *account);
00742
00752 gboolean purple_account_get_enabled(const PurpleAccount *account,
00753 const char *ui);
00754
00762 PurpleProxyInfo *purple_account_get_proxy_info(const PurpleAccount *account);
00763
00773 PurplePrivacyType purple_account_get_privacy_type(const PurpleAccount *account);
00774
00785 PurpleStatus *purple_account_get_active_status(const PurpleAccount *account);
00786
00798 PurpleStatus *purple_account_get_status(const PurpleAccount *account,
00799 const char *status_id);
00800
00809 PurpleStatusType *purple_account_get_status_type(const PurpleAccount *account,
00810 const char *id);
00811
00823 PurpleStatusType *purple_account_get_status_type_with_primitive(
00824 const PurpleAccount *account,
00825 PurpleStatusPrimitive primitive);
00826
00834 PurplePresence *purple_account_get_presence(const PurpleAccount *account);
00835
00844 gboolean purple_account_is_status_active(const PurpleAccount *account,
00845 const char *status_id);
00846
00854 GList *purple_account_get_status_types(const PurpleAccount *account);
00855
00865 int purple_account_get_int(const PurpleAccount *account, const char *name,
00866 int default_value);
00867
00877 const char *purple_account_get_string(const PurpleAccount *account,
00878 const char *name,
00879 const char *default_value);
00880
00890 gboolean purple_account_get_bool(const PurpleAccount *account, const char *name,
00891 gboolean default_value);
00892
00903 int purple_account_get_ui_int(const PurpleAccount *account, const char *ui,
00904 const char *name, int default_value);
00905
00916 const char *purple_account_get_ui_string(const PurpleAccount *account,
00917 const char *ui, const char *name,
00918 const char *default_value);
00919
00930 gboolean purple_account_get_ui_bool(const PurpleAccount *account, const char *ui,
00931 const char *name, gboolean default_value);
00932
00933
00947 PurpleLog *purple_account_get_log(PurpleAccount *account, gboolean create);
00948
00954 void purple_account_destroy_log(PurpleAccount *account);
00955
00964 void purple_account_add_buddy(PurpleAccount *account, PurpleBuddy *buddy);
00974 void purple_account_add_buddy_with_invite(PurpleAccount *account, PurpleBuddy *buddy, const char *message);
00975
00984 void purple_account_add_buddies(PurpleAccount *account, GList *buddies);
00994 void purple_account_add_buddies_with_invite(PurpleAccount *account, GList *buddies, const char *message);
00995
01003 void purple_account_remove_buddy(PurpleAccount *account, PurpleBuddy *buddy,
01004 PurpleGroup *group);
01005
01017 void purple_account_remove_buddies(PurpleAccount *account, GList *buddies,
01018 GList *groups);
01019
01026 void purple_account_remove_group(PurpleAccount *account, PurpleGroup *group);
01027
01035 void purple_account_change_password(PurpleAccount *account, const char *orig_pw,
01036 const char *new_pw);
01037
01044 gboolean purple_account_supports_offline_message(PurpleAccount *account, PurpleBuddy *buddy);
01045
01056 const PurpleConnectionErrorInfo *purple_account_get_current_error(PurpleAccount *account);
01057
01063 void purple_account_clear_current_error(PurpleAccount *account);
01064
01067
01069
01077 void purple_accounts_add(PurpleAccount *account);
01078
01084 void purple_accounts_remove(PurpleAccount *account);
01085
01095 void purple_accounts_delete(PurpleAccount *account);
01096
01103 void purple_accounts_reorder(PurpleAccount *account, gint new_index);
01104
01110 GList *purple_accounts_get_all(void);
01111
01119 GList *purple_accounts_get_all_active(void);
01120
01129 PurpleAccount *purple_accounts_find(const char *name, const char *protocol);
01130
01140 void purple_accounts_restore_current_statuses(void);
01141
01145
01147
01154 void purple_accounts_set_ui_ops(PurpleAccountUiOps *ops);
01155
01161 PurpleAccountUiOps *purple_accounts_get_ui_ops(void);
01162
01166
01168
01176 void *purple_accounts_get_handle(void);
01177
01181 void purple_accounts_init(void);
01182
01186 void purple_accounts_uninit(void);
01187
01190 #ifdef __cplusplus
01191 }
01192 #endif
01193
01194 #endif