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 _PurpleAccountPrefsUiOps PurpleAccountPrefsUiOps;
00038 typedef struct _PurpleAccount PurpleAccount;
00039
00040 typedef gboolean (*PurpleFilterAccountFunc)(PurpleAccount *account);
00041 typedef void (*PurpleAccountRequestAuthorizationCb)(void *);
00042 typedef void (*PurpleAccountRegistrationCb)(PurpleAccount *account, gboolean succeeded, void *user_data);
00043 typedef void (*PurpleAccountUnregistrationCb)(PurpleAccount *account, gboolean succeeded, void *user_data);
00044 typedef void (*PurpleSetPublicAliasSuccessCallback)(PurpleAccount *account, const char *new_alias);
00045 typedef void (*PurpleSetPublicAliasFailureCallback)(PurpleAccount *account, const char *error);
00046 typedef void (*PurpleGetPublicAliasSuccessCallback)(PurpleAccount *account, const char *alias);
00047 typedef void (*PurpleGetPublicAliasFailureCallback)(PurpleAccount *account, const char *error);
00048
00049 #include "connection.h"
00050 #include "log.h"
00051 #include "privacy.h"
00052 #include "proxy.h"
00053 #include "prpl.h"
00054 #include "status.h"
00055
00059 typedef enum
00060 {
00061 PURPLE_ACCOUNT_REQUEST_AUTHORIZATION = 0
00062 } PurpleAccountRequestType;
00063
00067 typedef enum
00068 {
00069 PURPLE_ACCOUNT_RESPONSE_IGNORE = -2,
00070 PURPLE_ACCOUNT_RESPONSE_DENY = -1,
00071 PURPLE_ACCOUNT_RESPONSE_PASS = 0,
00072 PURPLE_ACCOUNT_RESPONSE_ACCEPT = 1
00073 } PurpleAccountRequestResponse;
00074
00078 struct _PurpleAccountUiOps
00079 {
00083 void (*notify_added)(PurpleAccount *account,
00084 const char *remote_user,
00085 const char *id,
00086 const char *alias,
00087 const char *message);
00088
00090 void (*status_changed)(PurpleAccount *account,
00091 PurpleStatus *status);
00092
00094 void (*request_add)(PurpleAccount *account,
00095 const char *remote_user,
00096 const char *id,
00097 const char *alias,
00098 const char *message);
00099
00105 void *(*request_authorize)(PurpleAccount *account,
00106 const char *remote_user,
00107 const char *id,
00108 const char *alias,
00109 const char *message,
00110 gboolean on_list,
00111 PurpleAccountRequestAuthorizationCb authorize_cb,
00112 PurpleAccountRequestAuthorizationCb deny_cb,
00113 void *user_data);
00114
00118 void (*close_account_request)(void *ui_handle);
00119
00120 void (*_purple_reserved1)(void);
00121 void (*_purple_reserved2)(void);
00122 void (*_purple_reserved3)(void);
00123 void (*_purple_reserved4)(void);
00124 };
00125
00135 struct _PurpleAccountPrefsUiOps
00136 {
00138 void (*set_int)(PurpleAccount *account, const char *name, int value);
00139
00141 void (*set_string)(PurpleAccount *account, const char *name, const char *value);
00142
00144 void (*set_bool)(PurpleAccount *account, const char *name, gboolean value);
00145
00149 void (*load)(void);
00150
00154 void (*save)(void);
00155
00159 void (*schedule_save)(void);
00160
00161 void (*_purple_reserved1)(void);
00162 void (*_purple_reserved2)(void);
00163 void (*_purple_reserved3)(void);
00164 void (*_purple_reserved4)(void);
00165 };
00166
00169 struct _PurpleAccount
00170 {
00171 char *username;
00172 char *alias;
00173 char *password;
00174 char *user_info;
00176 char *buddy_icon_path;
00178 gboolean remember_pass;
00180 char *protocol_id;
00182 PurpleConnection *gc;
00183 gboolean disconnecting;
00185 GHashTable *settings;
00186 GHashTable *ui_settings;
00188 PurpleProxyInfo *proxy_info;
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201 GSList *permit;
00202 GSList *deny;
00203 PurplePrivacyType perm_deny;
00205 GList *status_types;
00207 PurplePresence *presence;
00208 PurpleLog *system_log;
00210 void *ui_data;
00211 PurpleAccountRegistrationCb registration_cb;
00212 void *registration_cb_user_data;
00213
00214 gpointer priv;
00215 };
00216
00217 #ifdef __cplusplus
00218 extern "C" {
00219 #endif
00220
00221
00223
00234 PurpleAccount *purple_account_new(const char *username, const char *protocol_id);
00235
00241 void purple_account_destroy(PurpleAccount *account);
00242
00248 void purple_account_connect(PurpleAccount *account);
00249
00257 void purple_account_set_register_callback(PurpleAccount *account, PurpleAccountRegistrationCb cb, void *user_data);
00258
00264 void purple_account_register(PurpleAccount *account);
00265
00273 void purple_account_unregister(PurpleAccount *account, PurpleAccountUnregistrationCb cb, void *user_data);
00274
00280 void purple_account_disconnect(PurpleAccount *account);
00281
00295 void purple_account_notify_added(PurpleAccount *account, const char *remote_user,
00296 const char *id, const char *alias,
00297 const char *message);
00298
00314 void purple_account_request_add(PurpleAccount *account, const char *remote_user,
00315 const char *id, const char *alias,
00316 const char *message);
00317
00337 void *purple_account_request_authorization(PurpleAccount *account, const char *remote_user,
00338 const char *id, const char *alias, const char *message, gboolean on_list,
00339 PurpleAccountRequestAuthorizationCb auth_cb, PurpleAccountRequestAuthorizationCb deny_cb, void *user_data);
00340
00346 void purple_account_request_close_with_account(PurpleAccount *account);
00347
00353 void purple_account_request_close(void *ui_handle);
00354
00364 void purple_account_request_password(PurpleAccount *account, GCallback ok_cb,
00365 GCallback cancel_cb, void *user_data);
00366
00372 void purple_account_request_change_password(PurpleAccount *account);
00373
00380 void purple_account_request_change_user_info(PurpleAccount *account);
00381
00388 void purple_account_set_username(PurpleAccount *account, const char *username);
00389
00396 void purple_account_set_password(PurpleAccount *account, const char *password);
00397
00404 void purple_account_set_alias(PurpleAccount *account, const char *alias);
00405
00412 void purple_account_set_user_info(PurpleAccount *account, const char *user_info);
00413
00420 void purple_account_set_buddy_icon_path(PurpleAccount *account, const char *path);
00421
00428 void purple_account_set_protocol_id(PurpleAccount *account,
00429 const char *protocol_id);
00430
00437 void purple_account_set_connection(PurpleAccount *account, PurpleConnection *gc);
00438
00445 void purple_account_set_remember_password(PurpleAccount *account, gboolean value);
00446
00453 void purple_account_set_check_mail(PurpleAccount *account, gboolean value);
00454
00463 void purple_account_set_enabled(PurpleAccount *account, const char *ui,
00464 gboolean value);
00465
00472 void purple_account_set_proxy_info(PurpleAccount *account, PurpleProxyInfo *info);
00473
00482 void purple_account_set_privacy_type(PurpleAccount *account, PurplePrivacyType privacy_type);
00483
00490 void purple_account_set_status_types(PurpleAccount *account, GList *status_types);
00491
00498 void purple_account_set_status(PurpleAccount *account, const char *status_id,
00499 gboolean active, ...) G_GNUC_NULL_TERMINATED;
00500
00501
00519 void purple_account_set_status_list(PurpleAccount *account,
00520 const char *status_id, gboolean active, GList *attrs);
00521
00540 void purple_account_set_public_alias(PurpleAccount *account,
00541 const char *alias, PurpleSetPublicAliasSuccessCallback success_cb,
00542 PurpleSetPublicAliasFailureCallback failure_cb);
00543
00554 void purple_account_get_public_alias(PurpleAccount *account,
00555 PurpleGetPublicAliasSuccessCallback success_cb,
00556 PurpleGetPublicAliasFailureCallback failure_cb);
00557
00565 gboolean purple_account_get_silence_suppression(const PurpleAccount *account);
00566
00573 void purple_account_set_silence_suppression(PurpleAccount *account,
00574 gboolean value);
00575
00581 void purple_account_clear_settings(PurpleAccount *account);
00582
00591 void purple_account_remove_setting(PurpleAccount *account, const char *setting);
00592
00600 void purple_account_set_int(PurpleAccount *account, const char *name, int value);
00601
00609 void purple_account_set_string(PurpleAccount *account, const char *name,
00610 const char *value);
00611
00619 void purple_account_set_bool(PurpleAccount *account, const char *name,
00620 gboolean value);
00621
00630 void purple_account_set_ui_int(PurpleAccount *account, const char *ui,
00631 const char *name, int value);
00632
00641 void purple_account_set_ui_string(PurpleAccount *account, const char *ui,
00642 const char *name, const char *value);
00643
00652 void purple_account_set_ui_bool(PurpleAccount *account, const char *ui,
00653 const char *name, gboolean value);
00654
00662 gboolean purple_account_is_connected(const PurpleAccount *account);
00663
00671 gboolean purple_account_is_connecting(const PurpleAccount *account);
00672
00680 gboolean purple_account_is_disconnected(const PurpleAccount *account);
00681
00689 const char *purple_account_get_username(const PurpleAccount *account);
00690
00698 const char *purple_account_get_password(const PurpleAccount *account);
00699
00707 const char *purple_account_get_alias(const PurpleAccount *account);
00708
00716 const char *purple_account_get_user_info(const PurpleAccount *account);
00717
00725 const char *purple_account_get_buddy_icon_path(const PurpleAccount *account);
00726
00734 const char *purple_account_get_protocol_id(const PurpleAccount *account);
00735
00743 const char *purple_account_get_protocol_name(const PurpleAccount *account);
00744
00752 PurpleConnection *purple_account_get_connection(const PurpleAccount *account);
00753
00766 const gchar *purple_account_get_name_for_display(const PurpleAccount *account);
00767
00775 gboolean purple_account_get_remember_password(const PurpleAccount *account);
00776
00784 gboolean purple_account_get_check_mail(const PurpleAccount *account);
00785
00795 gboolean purple_account_get_enabled(const PurpleAccount *account,
00796 const char *ui);
00797
00805 PurpleProxyInfo *purple_account_get_proxy_info(const PurpleAccount *account);
00806
00816 PurplePrivacyType purple_account_get_privacy_type(const PurpleAccount *account);
00817
00828 PurpleStatus *purple_account_get_active_status(const PurpleAccount *account);
00829
00841 PurpleStatus *purple_account_get_status(const PurpleAccount *account,
00842 const char *status_id);
00843
00852 PurpleStatusType *purple_account_get_status_type(const PurpleAccount *account,
00853 const char *id);
00854
00866 PurpleStatusType *purple_account_get_status_type_with_primitive(
00867 const PurpleAccount *account,
00868 PurpleStatusPrimitive primitive);
00869
00877 PurplePresence *purple_account_get_presence(const PurpleAccount *account);
00878
00887 gboolean purple_account_is_status_active(const PurpleAccount *account,
00888 const char *status_id);
00889
00897 GList *purple_account_get_status_types(const PurpleAccount *account);
00898
00908 int purple_account_get_int(const PurpleAccount *account, const char *name,
00909 int default_value);
00910
00920 const char *purple_account_get_string(const PurpleAccount *account,
00921 const char *name,
00922 const char *default_value);
00923
00933 gboolean purple_account_get_bool(const PurpleAccount *account, const char *name,
00934 gboolean default_value);
00935
00946 int purple_account_get_ui_int(const PurpleAccount *account, const char *ui,
00947 const char *name, int default_value);
00948
00959 const char *purple_account_get_ui_string(const PurpleAccount *account,
00960 const char *ui, const char *name,
00961 const char *default_value);
00962
00973 gboolean purple_account_get_ui_bool(const PurpleAccount *account, const char *ui,
00974 const char *name, gboolean default_value);
00975
00976
00990 PurpleLog *purple_account_get_log(PurpleAccount *account, gboolean create);
00991
00997 void purple_account_destroy_log(PurpleAccount *account);
00998
01007 void purple_account_add_buddy(PurpleAccount *account, PurpleBuddy *buddy);
01017 void purple_account_add_buddy_with_invite(PurpleAccount *account, PurpleBuddy *buddy, const char *message);
01018
01027 void purple_account_add_buddies(PurpleAccount *account, GList *buddies);
01037 void purple_account_add_buddies_with_invite(PurpleAccount *account, GList *buddies, const char *message);
01038
01046 void purple_account_remove_buddy(PurpleAccount *account, PurpleBuddy *buddy,
01047 PurpleGroup *group);
01048
01060 void purple_account_remove_buddies(PurpleAccount *account, GList *buddies,
01061 GList *groups);
01062
01069 void purple_account_remove_group(PurpleAccount *account, PurpleGroup *group);
01070
01078 void purple_account_change_password(PurpleAccount *account, const char *orig_pw,
01079 const char *new_pw);
01080
01087 gboolean purple_account_supports_offline_message(PurpleAccount *account, PurpleBuddy *buddy);
01088
01099 const PurpleConnectionErrorInfo *purple_account_get_current_error(PurpleAccount *account);
01100
01106 void purple_account_clear_current_error(PurpleAccount *account);
01107
01110
01112
01120 void purple_accounts_add(PurpleAccount *account);
01121
01127 void purple_accounts_remove(PurpleAccount *account);
01128
01138 void purple_accounts_delete(PurpleAccount *account);
01139
01146 void purple_accounts_reorder(PurpleAccount *account, gint new_index);
01147
01153 GList *purple_accounts_get_all(void);
01154
01162 GList *purple_accounts_get_all_active(void);
01163
01172 PurpleAccount *purple_accounts_find(const char *name, const char *protocol);
01173
01183 void purple_accounts_restore_current_statuses(void);
01184
01188
01190
01197 void purple_accounts_set_ui_ops(PurpleAccountUiOps *ops);
01198
01204 PurpleAccountUiOps *purple_accounts_get_ui_ops(void);
01205
01212 void purple_account_prefs_set_ui_ops(PurpleAccountPrefsUiOps *ops);
01213
01220 PurpleAccountPrefsUiOps *purple_account_prefs_get_ui_ops(void);
01221
01225
01227
01235 void *purple_accounts_get_handle(void);
01236
01240 void purple_accounts_init(void);
01241
01245 void purple_accounts_uninit(void);
01246
01249 #ifdef __cplusplus
01250 }
01251 #endif
01252
01253 #endif