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
00148 GSList *permit;
00149 GSList *deny;
00150 PurplePrivacyType perm_deny;
00152 GList *status_types;
00154 PurplePresence *presence;
00155 PurpleLog *system_log;
00157 void *ui_data;
00158 PurpleAccountRegistrationCb registration_cb;
00159 void *registration_cb_user_data;
00160
00161 gpointer priv;
00162 };
00163
00164 #ifdef __cplusplus
00165 extern "C" {
00166 #endif
00167
00168
00170
00181 PurpleAccount *purple_account_new(const char *username, const char *protocol_id);
00182
00188 void purple_account_destroy(PurpleAccount *account);
00189
00195 void purple_account_connect(PurpleAccount *account);
00196
00204 void purple_account_set_register_callback(PurpleAccount *account, PurpleAccountRegistrationCb cb, void *user_data);
00205
00211 void purple_account_register(PurpleAccount *account);
00212
00220 void purple_account_unregister(PurpleAccount *account, PurpleAccountUnregistrationCb cb, void *user_data);
00221
00227 void purple_account_disconnect(PurpleAccount *account);
00228
00242 void purple_account_notify_added(PurpleAccount *account, const char *remote_user,
00243 const char *id, const char *alias,
00244 const char *message);
00245
00261 void purple_account_request_add(PurpleAccount *account, const char *remote_user,
00262 const char *id, const char *alias,
00263 const char *message);
00264
00284 void *purple_account_request_authorization(PurpleAccount *account, const char *remote_user,
00285 const char *id, const char *alias, const char *message, gboolean on_list,
00286 PurpleAccountRequestAuthorizationCb auth_cb, PurpleAccountRequestAuthorizationCb deny_cb, void *user_data);
00287
00293 void purple_account_request_close_with_account(PurpleAccount *account);
00294
00300 void purple_account_request_close(void *ui_handle);
00301
00311 void purple_account_request_password(PurpleAccount *account, GCallback ok_cb,
00312 GCallback cancel_cb, void *user_data);
00313
00319 void purple_account_request_change_password(PurpleAccount *account);
00320
00327 void purple_account_request_change_user_info(PurpleAccount *account);
00328
00335 void purple_account_set_username(PurpleAccount *account, const char *username);
00336
00343 void purple_account_set_password(PurpleAccount *account, const char *password);
00344
00351 void purple_account_set_alias(PurpleAccount *account, const char *alias);
00352
00359 void purple_account_set_user_info(PurpleAccount *account, const char *user_info);
00360
00367 void purple_account_set_buddy_icon_path(PurpleAccount *account, const char *path);
00368
00375 void purple_account_set_protocol_id(PurpleAccount *account,
00376 const char *protocol_id);
00377
00384 void purple_account_set_connection(PurpleAccount *account, PurpleConnection *gc);
00385
00392 void purple_account_set_remember_password(PurpleAccount *account, gboolean value);
00393
00400 void purple_account_set_check_mail(PurpleAccount *account, gboolean value);
00401
00410 void purple_account_set_enabled(PurpleAccount *account, const char *ui,
00411 gboolean value);
00412
00419 void purple_account_set_proxy_info(PurpleAccount *account, PurpleProxyInfo *info);
00420
00429 void purple_account_set_privacy_type(PurpleAccount *account, PurplePrivacyType privacy_type);
00430
00437 void purple_account_set_status_types(PurpleAccount *account, GList *status_types);
00438
00445 void purple_account_set_status(PurpleAccount *account, const char *status_id,
00446 gboolean active, ...) G_GNUC_NULL_TERMINATED;
00447
00448
00466 void purple_account_set_status_list(PurpleAccount *account,
00467 const char *status_id, gboolean active, GList *attrs);
00468
00487 void purple_account_set_public_alias(PurpleAccount *account,
00488 const char *alias, PurpleSetPublicAliasSuccessCallback success_cb,
00489 PurpleSetPublicAliasFailureCallback failure_cb);
00490
00501 void purple_account_get_public_alias(PurpleAccount *account,
00502 PurpleGetPublicAliasSuccessCallback success_cb,
00503 PurpleGetPublicAliasFailureCallback failure_cb);
00504
00510 void purple_account_clear_settings(PurpleAccount *account);
00511
00520 void purple_account_remove_setting(PurpleAccount *account, const char *setting);
00521
00529 void purple_account_set_int(PurpleAccount *account, const char *name, int value);
00530
00538 void purple_account_set_string(PurpleAccount *account, const char *name,
00539 const char *value);
00540
00548 void purple_account_set_bool(PurpleAccount *account, const char *name,
00549 gboolean value);
00550
00559 void purple_account_set_ui_int(PurpleAccount *account, const char *ui,
00560 const char *name, int value);
00561
00570 void purple_account_set_ui_string(PurpleAccount *account, const char *ui,
00571 const char *name, const char *value);
00572
00581 void purple_account_set_ui_bool(PurpleAccount *account, const char *ui,
00582 const char *name, gboolean value);
00583
00591 gboolean purple_account_is_connected(const PurpleAccount *account);
00592
00600 gboolean purple_account_is_connecting(const PurpleAccount *account);
00601
00609 gboolean purple_account_is_disconnected(const PurpleAccount *account);
00610
00618 const char *purple_account_get_username(const PurpleAccount *account);
00619
00627 const char *purple_account_get_password(const PurpleAccount *account);
00628
00636 const char *purple_account_get_alias(const PurpleAccount *account);
00637
00645 const char *purple_account_get_user_info(const PurpleAccount *account);
00646
00654 const char *purple_account_get_buddy_icon_path(const PurpleAccount *account);
00655
00663 const char *purple_account_get_protocol_id(const PurpleAccount *account);
00664
00672 const char *purple_account_get_protocol_name(const PurpleAccount *account);
00673
00681 PurpleConnection *purple_account_get_connection(const PurpleAccount *account);
00682
00695 const gchar *purple_account_get_name_for_display(const PurpleAccount *account);
00696
00704 gboolean purple_account_get_remember_password(const PurpleAccount *account);
00705
00713 gboolean purple_account_get_check_mail(const PurpleAccount *account);
00714
00724 gboolean purple_account_get_enabled(const PurpleAccount *account,
00725 const char *ui);
00726
00734 PurpleProxyInfo *purple_account_get_proxy_info(const PurpleAccount *account);
00735
00745 PurplePrivacyType purple_account_get_privacy_type(const PurpleAccount *account);
00746
00757 PurpleStatus *purple_account_get_active_status(const PurpleAccount *account);
00758
00770 PurpleStatus *purple_account_get_status(const PurpleAccount *account,
00771 const char *status_id);
00772
00781 PurpleStatusType *purple_account_get_status_type(const PurpleAccount *account,
00782 const char *id);
00783
00795 PurpleStatusType *purple_account_get_status_type_with_primitive(
00796 const PurpleAccount *account,
00797 PurpleStatusPrimitive primitive);
00798
00806 PurplePresence *purple_account_get_presence(const PurpleAccount *account);
00807
00816 gboolean purple_account_is_status_active(const PurpleAccount *account,
00817 const char *status_id);
00818
00826 GList *purple_account_get_status_types(const PurpleAccount *account);
00827
00837 int purple_account_get_int(const PurpleAccount *account, const char *name,
00838 int default_value);
00839
00849 const char *purple_account_get_string(const PurpleAccount *account,
00850 const char *name,
00851 const char *default_value);
00852
00862 gboolean purple_account_get_bool(const PurpleAccount *account, const char *name,
00863 gboolean default_value);
00864
00875 int purple_account_get_ui_int(const PurpleAccount *account, const char *ui,
00876 const char *name, int default_value);
00877
00888 const char *purple_account_get_ui_string(const PurpleAccount *account,
00889 const char *ui, const char *name,
00890 const char *default_value);
00891
00902 gboolean purple_account_get_ui_bool(const PurpleAccount *account, const char *ui,
00903 const char *name, gboolean default_value);
00904
00905
00919 PurpleLog *purple_account_get_log(PurpleAccount *account, gboolean create);
00920
00926 void purple_account_destroy_log(PurpleAccount *account);
00927
00934 void purple_account_add_buddy(PurpleAccount *account, PurpleBuddy *buddy);
00941 void purple_account_add_buddies(PurpleAccount *account, GList *buddies);
00942
00950 void purple_account_remove_buddy(PurpleAccount *account, PurpleBuddy *buddy,
00951 PurpleGroup *group);
00952
00964 void purple_account_remove_buddies(PurpleAccount *account, GList *buddies,
00965 GList *groups);
00966
00973 void purple_account_remove_group(PurpleAccount *account, PurpleGroup *group);
00974
00982 void purple_account_change_password(PurpleAccount *account, const char *orig_pw,
00983 const char *new_pw);
00984
00991 gboolean purple_account_supports_offline_message(PurpleAccount *account, PurpleBuddy *buddy);
00992
01003 const PurpleConnectionErrorInfo *purple_account_get_current_error(PurpleAccount *account);
01004
01010 void purple_account_clear_current_error(PurpleAccount *account);
01011
01014
01016
01024 void purple_accounts_add(PurpleAccount *account);
01025
01031 void purple_accounts_remove(PurpleAccount *account);
01032
01042 void purple_accounts_delete(PurpleAccount *account);
01043
01050 void purple_accounts_reorder(PurpleAccount *account, gint new_index);
01051
01057 GList *purple_accounts_get_all(void);
01058
01066 GList *purple_accounts_get_all_active(void);
01067
01076 PurpleAccount *purple_accounts_find(const char *name, const char *protocol);
01077
01087 void purple_accounts_restore_current_statuses(void);
01088
01092
01094
01101 void purple_accounts_set_ui_ops(PurpleAccountUiOps *ops);
01102
01108 PurpleAccountUiOps *purple_accounts_get_ui_ops(void);
01109
01113
01115
01123 void *purple_accounts_get_handle(void);
01124
01128 void purple_accounts_init(void);
01129
01133 void purple_accounts_uninit(void);
01134
01137 #ifdef __cplusplus
01138 }
01139 #endif
01140
01141 #endif