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
00062
00066 struct _PurpleAccountUiOps
00067 {
00071 void (*notify_added)(PurpleAccount *account,
00072 const char *remote_user,
00073 const char *id,
00074 const char *alias,
00075 const char *message);
00076
00078 void (*status_changed)(PurpleAccount *account,
00079 PurpleStatus *status);
00080
00082 void (*request_add)(PurpleAccount *account,
00083 const char *remote_user,
00084 const char *id,
00085 const char *alias,
00086 const char *message);
00087
00093 void *(*request_authorize)(PurpleAccount *account,
00094 const char *remote_user,
00095 const char *id,
00096 const char *alias,
00097 const char *message,
00098 gboolean on_list,
00099 PurpleAccountRequestAuthorizationCb authorize_cb,
00100 PurpleAccountRequestAuthorizationCb deny_cb,
00101 void *user_data);
00102
00106 void (*close_account_request)(void *ui_handle);
00107
00108 void (*_purple_reserved1)(void);
00109 void (*_purple_reserved2)(void);
00110 void (*_purple_reserved3)(void);
00111 void (*_purple_reserved4)(void);
00112 };
00113
00116 struct _PurpleAccount
00117 {
00118 char *username;
00119 char *alias;
00120 char *password;
00121 char *user_info;
00123 char *buddy_icon_path;
00125 gboolean remember_pass;
00127 char *protocol_id;
00129 PurpleConnection *gc;
00130 gboolean disconnecting;
00132 GHashTable *settings;
00133 GHashTable *ui_settings;
00135 PurpleProxyInfo *proxy_info;
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147 GSList *permit;
00148 GSList *deny;
00149 PurplePrivacyType perm_deny;
00151 GList *status_types;
00153 PurplePresence *presence;
00154 PurpleLog *system_log;
00156 void *ui_data;
00157 PurpleAccountRegistrationCb registration_cb;
00158 void *registration_cb_user_data;
00159
00160 gpointer priv;
00161 };
00162
00163 #ifdef __cplusplus
00164 extern "C" {
00165 #endif
00166
00167
00169
00180 PurpleAccount *purple_account_new(const char *username, const char *protocol_id);
00181
00187 void purple_account_destroy(PurpleAccount *account);
00188
00194 void purple_account_connect(PurpleAccount *account);
00195
00203 void purple_account_set_register_callback(PurpleAccount *account, PurpleAccountRegistrationCb cb, void *user_data);
00204
00210 void purple_account_register(PurpleAccount *account);
00211
00219 void purple_account_unregister(PurpleAccount *account, PurpleAccountUnregistrationCb cb, void *user_data);
00220
00226 void purple_account_disconnect(PurpleAccount *account);
00227
00241 void purple_account_notify_added(PurpleAccount *account, const char *remote_user,
00242 const char *id, const char *alias,
00243 const char *message);
00244
00260 void purple_account_request_add(PurpleAccount *account, const char *remote_user,
00261 const char *id, const char *alias,
00262 const char *message);
00263
00283 void *purple_account_request_authorization(PurpleAccount *account, const char *remote_user,
00284 const char *id, const char *alias, const char *message, gboolean on_list,
00285 PurpleAccountRequestAuthorizationCb auth_cb, PurpleAccountRequestAuthorizationCb deny_cb, void *user_data);
00286
00292 void purple_account_request_close_with_account(PurpleAccount *account);
00293
00299 void purple_account_request_close(void *ui_handle);
00300
00310 void purple_account_request_password(PurpleAccount *account, GCallback ok_cb,
00311 GCallback cancel_cb, void *user_data);
00312
00318 void purple_account_request_change_password(PurpleAccount *account);
00319
00326 void purple_account_request_change_user_info(PurpleAccount *account);
00327
00334 void purple_account_set_username(PurpleAccount *account, const char *username);
00335
00342 void purple_account_set_password(PurpleAccount *account, const char *password);
00343
00350 void purple_account_set_alias(PurpleAccount *account, const char *alias);
00351
00358 void purple_account_set_user_info(PurpleAccount *account, const char *user_info);
00359
00366 void purple_account_set_buddy_icon_path(PurpleAccount *account, const char *path);
00367
00374 void purple_account_set_protocol_id(PurpleAccount *account,
00375 const char *protocol_id);
00376
00383 void purple_account_set_connection(PurpleAccount *account, PurpleConnection *gc);
00384
00391 void purple_account_set_remember_password(PurpleAccount *account, gboolean value);
00392
00399 void purple_account_set_check_mail(PurpleAccount *account, gboolean value);
00400
00409 void purple_account_set_enabled(PurpleAccount *account, const char *ui,
00410 gboolean value);
00411
00418 void purple_account_set_proxy_info(PurpleAccount *account, PurpleProxyInfo *info);
00419
00428 void purple_account_set_privacy_type(PurpleAccount *account, PurplePrivacyType privacy_type);
00429
00436 void purple_account_set_status_types(PurpleAccount *account, GList *status_types);
00437
00444 void purple_account_set_status(PurpleAccount *account, const char *status_id,
00445 gboolean active, ...) G_GNUC_NULL_TERMINATED;
00446
00447
00465 void purple_account_set_status_list(PurpleAccount *account,
00466 const char *status_id, gboolean active, GList *attrs);
00467
00486 void purple_account_set_public_alias(PurpleAccount *account,
00487 const char *alias, PurpleSetPublicAliasSuccessCallback success_cb,
00488 PurpleSetPublicAliasFailureCallback failure_cb);
00489
00500 void purple_account_get_public_alias(PurpleAccount *account,
00501 PurpleGetPublicAliasSuccessCallback success_cb,
00502 PurpleGetPublicAliasFailureCallback failure_cb);
00503
00509 void purple_account_clear_settings(PurpleAccount *account);
00510
00519 void purple_account_remove_setting(PurpleAccount *account, const char *setting);
00520
00528 void purple_account_set_int(PurpleAccount *account, const char *name, int value);
00529
00537 void purple_account_set_string(PurpleAccount *account, const char *name,
00538 const char *value);
00539
00547 void purple_account_set_bool(PurpleAccount *account, const char *name,
00548 gboolean value);
00549
00558 void purple_account_set_ui_int(PurpleAccount *account, const char *ui,
00559 const char *name, int value);
00560
00569 void purple_account_set_ui_string(PurpleAccount *account, const char *ui,
00570 const char *name, const char *value);
00571
00580 void purple_account_set_ui_bool(PurpleAccount *account, const char *ui,
00581 const char *name, gboolean value);
00582
00590 gboolean purple_account_is_connected(const PurpleAccount *account);
00591
00599 gboolean purple_account_is_connecting(const PurpleAccount *account);
00600
00608 gboolean purple_account_is_disconnected(const PurpleAccount *account);
00609
00617 const char *purple_account_get_username(const PurpleAccount *account);
00618
00626 const char *purple_account_get_password(const PurpleAccount *account);
00627
00635 const char *purple_account_get_alias(const PurpleAccount *account);
00636
00644 const char *purple_account_get_user_info(const PurpleAccount *account);
00645
00653 const char *purple_account_get_buddy_icon_path(const PurpleAccount *account);
00654
00662 const char *purple_account_get_protocol_id(const PurpleAccount *account);
00663
00671 const char *purple_account_get_protocol_name(const PurpleAccount *account);
00672
00680 PurpleConnection *purple_account_get_connection(const PurpleAccount *account);
00681
00694 const gchar *purple_account_get_name_for_display(const PurpleAccount *account);
00695
00703 gboolean purple_account_get_remember_password(const PurpleAccount *account);
00704
00712 gboolean purple_account_get_check_mail(const PurpleAccount *account);
00713
00723 gboolean purple_account_get_enabled(const PurpleAccount *account,
00724 const char *ui);
00725
00733 PurpleProxyInfo *purple_account_get_proxy_info(const PurpleAccount *account);
00734
00744 PurplePrivacyType purple_account_get_privacy_type(const PurpleAccount *account);
00745
00756 PurpleStatus *purple_account_get_active_status(const PurpleAccount *account);
00757
00769 PurpleStatus *purple_account_get_status(const PurpleAccount *account,
00770 const char *status_id);
00771
00780 PurpleStatusType *purple_account_get_status_type(const PurpleAccount *account,
00781 const char *id);
00782
00794 PurpleStatusType *purple_account_get_status_type_with_primitive(
00795 const PurpleAccount *account,
00796 PurpleStatusPrimitive primitive);
00797
00805 PurplePresence *purple_account_get_presence(const PurpleAccount *account);
00806
00815 gboolean purple_account_is_status_active(const PurpleAccount *account,
00816 const char *status_id);
00817
00825 GList *purple_account_get_status_types(const PurpleAccount *account);
00826
00836 int purple_account_get_int(const PurpleAccount *account, const char *name,
00837 int default_value);
00838
00848 const char *purple_account_get_string(const PurpleAccount *account,
00849 const char *name,
00850 const char *default_value);
00851
00861 gboolean purple_account_get_bool(const PurpleAccount *account, const char *name,
00862 gboolean default_value);
00863
00874 int purple_account_get_ui_int(const PurpleAccount *account, const char *ui,
00875 const char *name, int default_value);
00876
00887 const char *purple_account_get_ui_string(const PurpleAccount *account,
00888 const char *ui, const char *name,
00889 const char *default_value);
00890
00901 gboolean purple_account_get_ui_bool(const PurpleAccount *account, const char *ui,
00902 const char *name, gboolean default_value);
00903
00904
00918 PurpleLog *purple_account_get_log(PurpleAccount *account, gboolean create);
00919
00925 void purple_account_destroy_log(PurpleAccount *account);
00926
00933 void purple_account_add_buddy(PurpleAccount *account, PurpleBuddy *buddy);
00940 void purple_account_add_buddies(PurpleAccount *account, GList *buddies);
00941
00949 void purple_account_remove_buddy(PurpleAccount *account, PurpleBuddy *buddy,
00950 PurpleGroup *group);
00951
00963 void purple_account_remove_buddies(PurpleAccount *account, GList *buddies,
00964 GList *groups);
00965
00972 void purple_account_remove_group(PurpleAccount *account, PurpleGroup *group);
00973
00981 void purple_account_change_password(PurpleAccount *account, const char *orig_pw,
00982 const char *new_pw);
00983
00990 gboolean purple_account_supports_offline_message(PurpleAccount *account, PurpleBuddy *buddy);
00991
01002 const PurpleConnectionErrorInfo *purple_account_get_current_error(PurpleAccount *account);
01003
01009 void purple_account_clear_current_error(PurpleAccount *account);
01010
01013
01015
01023 void purple_accounts_add(PurpleAccount *account);
01024
01030 void purple_accounts_remove(PurpleAccount *account);
01031
01041 void purple_accounts_delete(PurpleAccount *account);
01042
01049 void purple_accounts_reorder(PurpleAccount *account, gint new_index);
01050
01056 GList *purple_accounts_get_all(void);
01057
01065 GList *purple_accounts_get_all_active(void);
01066
01075 PurpleAccount *purple_accounts_find(const char *name, const char *protocol);
01076
01086 void purple_accounts_restore_current_statuses(void);
01087
01091
01093
01100 void purple_accounts_set_ui_ops(PurpleAccountUiOps *ops);
01101
01107 PurpleAccountUiOps *purple_accounts_get_ui_ops(void);
01108
01112
01114
01122 void *purple_accounts_get_handle(void);
01123
01127 void purple_accounts_init(void);
01128
01132 void purple_accounts_uninit(void);
01133
01136 #ifdef __cplusplus
01137 }
01138 #endif
01139
01140 #endif