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
00043 #include "connection.h"
00044 #include "log.h"
00045 #include "privacy.h"
00046 #include "proxy.h"
00047 #include "prpl.h"
00048 #include "status.h"
00049
00053 typedef enum
00054 {
00055 PURPLE_ACCOUNT_REQUEST_AUTHORIZATION = 0
00056 } PurpleAccountRequestType;
00057
00058
00062 struct _PurpleAccountUiOps
00063 {
00067 void (*notify_added)(PurpleAccount *account,
00068 const char *remote_user,
00069 const char *id,
00070 const char *alias,
00071 const char *message);
00072
00074 void (*status_changed)(PurpleAccount *account,
00075 PurpleStatus *status);
00076
00078 void (*request_add)(PurpleAccount *account,
00079 const char *remote_user,
00080 const char *id,
00081 const char *alias,
00082 const char *message);
00083
00089 void *(*request_authorize)(PurpleAccount *account,
00090 const char *remote_user,
00091 const char *id,
00092 const char *alias,
00093 const char *message,
00094 gboolean on_list,
00095 PurpleAccountRequestAuthorizationCb authorize_cb,
00096 PurpleAccountRequestAuthorizationCb deny_cb,
00097 void *user_data);
00098
00102 void (*close_account_request)(void *ui_handle);
00103
00104 void (*_purple_reserved1)(void);
00105 void (*_purple_reserved2)(void);
00106 void (*_purple_reserved3)(void);
00107 void (*_purple_reserved4)(void);
00108 };
00109
00112 struct _PurpleAccount
00113 {
00114 char *username;
00115 char *alias;
00116 char *password;
00117 char *user_info;
00119 char *buddy_icon_path;
00121 gboolean remember_pass;
00123 char *protocol_id;
00125 PurpleConnection *gc;
00126 gboolean disconnecting;
00128 GHashTable *settings;
00129 GHashTable *ui_settings;
00131 PurpleProxyInfo *proxy_info;
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143 GSList *permit;
00144 GSList *deny;
00145 PurplePrivacyType perm_deny;
00147 GList *status_types;
00149 PurplePresence *presence;
00150 PurpleLog *system_log;
00152 void *ui_data;
00153 PurpleAccountRegistrationCb registration_cb;
00154 void *registration_cb_user_data;
00155
00156 gpointer priv;
00157 };
00158
00159 #ifdef __cplusplus
00160 extern "C" {
00161 #endif
00162
00163
00165
00176 PurpleAccount *purple_account_new(const char *username, const char *protocol_id);
00177
00183 void purple_account_destroy(PurpleAccount *account);
00184
00190 void purple_account_connect(PurpleAccount *account);
00191
00199 void purple_account_set_register_callback(PurpleAccount *account, PurpleAccountRegistrationCb cb, void *user_data);
00200
00206 void purple_account_register(PurpleAccount *account);
00207
00215 void purple_account_unregister(PurpleAccount *account, PurpleAccountUnregistrationCb cb, void *user_data);
00216
00222 void purple_account_disconnect(PurpleAccount *account);
00223
00237 void purple_account_notify_added(PurpleAccount *account, const char *remote_user,
00238 const char *id, const char *alias,
00239 const char *message);
00240
00256 void purple_account_request_add(PurpleAccount *account, const char *remote_user,
00257 const char *id, const char *alias,
00258 const char *message);
00259
00279 void *purple_account_request_authorization(PurpleAccount *account, const char *remote_user,
00280 const char *id, const char *alias, const char *message, gboolean on_list,
00281 PurpleAccountRequestAuthorizationCb auth_cb, PurpleAccountRequestAuthorizationCb deny_cb, void *user_data);
00282
00288 void purple_account_request_close_with_account(PurpleAccount *account);
00289
00295 void purple_account_request_close(void *ui_handle);
00296
00306 void purple_account_request_password(PurpleAccount *account, GCallback ok_cb,
00307 GCallback cancel_cb, void *user_data);
00308
00314 void purple_account_request_change_password(PurpleAccount *account);
00315
00322 void purple_account_request_change_user_info(PurpleAccount *account);
00323
00330 void purple_account_set_username(PurpleAccount *account, const char *username);
00331
00338 void purple_account_set_password(PurpleAccount *account, const char *password);
00339
00346 void purple_account_set_alias(PurpleAccount *account, const char *alias);
00347
00354 void purple_account_set_user_info(PurpleAccount *account, const char *user_info);
00355
00362 void purple_account_set_buddy_icon_path(PurpleAccount *account, const char *path);
00363
00370 void purple_account_set_protocol_id(PurpleAccount *account,
00371 const char *protocol_id);
00372
00379 void purple_account_set_connection(PurpleAccount *account, PurpleConnection *gc);
00380
00387 void purple_account_set_remember_password(PurpleAccount *account, gboolean value);
00388
00395 void purple_account_set_check_mail(PurpleAccount *account, gboolean value);
00396
00405 void purple_account_set_enabled(PurpleAccount *account, const char *ui,
00406 gboolean value);
00407
00414 void purple_account_set_proxy_info(PurpleAccount *account, PurpleProxyInfo *info);
00415
00422 void purple_account_set_status_types(PurpleAccount *account, GList *status_types);
00423
00430 void purple_account_set_status(PurpleAccount *account, const char *status_id,
00431 gboolean active, ...) G_GNUC_NULL_TERMINATED;
00432
00433
00451 void purple_account_set_status_list(PurpleAccount *account,
00452 const char *status_id, gboolean active, GList *attrs);
00453
00459 void purple_account_clear_settings(PurpleAccount *account);
00460
00469 void purple_account_remove_setting(PurpleAccount *account, const char *setting);
00470
00478 void purple_account_set_int(PurpleAccount *account, const char *name, int value);
00479
00487 void purple_account_set_string(PurpleAccount *account, const char *name,
00488 const char *value);
00489
00497 void purple_account_set_bool(PurpleAccount *account, const char *name,
00498 gboolean value);
00499
00508 void purple_account_set_ui_int(PurpleAccount *account, const char *ui,
00509 const char *name, int value);
00510
00519 void purple_account_set_ui_string(PurpleAccount *account, const char *ui,
00520 const char *name, const char *value);
00521
00530 void purple_account_set_ui_bool(PurpleAccount *account, const char *ui,
00531 const char *name, gboolean value);
00532
00540 gboolean purple_account_is_connected(const PurpleAccount *account);
00541
00549 gboolean purple_account_is_connecting(const PurpleAccount *account);
00550
00558 gboolean purple_account_is_disconnected(const PurpleAccount *account);
00559
00567 const char *purple_account_get_username(const PurpleAccount *account);
00568
00576 const char *purple_account_get_password(const PurpleAccount *account);
00577
00585 const char *purple_account_get_alias(const PurpleAccount *account);
00586
00594 const char *purple_account_get_user_info(const PurpleAccount *account);
00595
00603 const char *purple_account_get_buddy_icon_path(const PurpleAccount *account);
00604
00612 const char *purple_account_get_protocol_id(const PurpleAccount *account);
00613
00621 const char *purple_account_get_protocol_name(const PurpleAccount *account);
00622
00630 PurpleConnection *purple_account_get_connection(const PurpleAccount *account);
00631
00639 gboolean purple_account_get_remember_password(const PurpleAccount *account);
00640
00648 gboolean purple_account_get_check_mail(const PurpleAccount *account);
00649
00659 gboolean purple_account_get_enabled(const PurpleAccount *account,
00660 const char *ui);
00661
00669 PurpleProxyInfo *purple_account_get_proxy_info(const PurpleAccount *account);
00670
00681 PurpleStatus *purple_account_get_active_status(const PurpleAccount *account);
00682
00694 PurpleStatus *purple_account_get_status(const PurpleAccount *account,
00695 const char *status_id);
00696
00705 PurpleStatusType *purple_account_get_status_type(const PurpleAccount *account,
00706 const char *id);
00707
00719 PurpleStatusType *purple_account_get_status_type_with_primitive(
00720 const PurpleAccount *account,
00721 PurpleStatusPrimitive primitive);
00722
00730 PurplePresence *purple_account_get_presence(const PurpleAccount *account);
00731
00740 gboolean purple_account_is_status_active(const PurpleAccount *account,
00741 const char *status_id);
00742
00750 GList *purple_account_get_status_types(const PurpleAccount *account);
00751
00761 int purple_account_get_int(const PurpleAccount *account, const char *name,
00762 int default_value);
00763
00773 const char *purple_account_get_string(const PurpleAccount *account,
00774 const char *name,
00775 const char *default_value);
00776
00786 gboolean purple_account_get_bool(const PurpleAccount *account, const char *name,
00787 gboolean default_value);
00788
00799 int purple_account_get_ui_int(const PurpleAccount *account, const char *ui,
00800 const char *name, int default_value);
00801
00812 const char *purple_account_get_ui_string(const PurpleAccount *account,
00813 const char *ui, const char *name,
00814 const char *default_value);
00815
00826 gboolean purple_account_get_ui_bool(const PurpleAccount *account, const char *ui,
00827 const char *name, gboolean default_value);
00828
00829
00843 PurpleLog *purple_account_get_log(PurpleAccount *account, gboolean create);
00844
00850 void purple_account_destroy_log(PurpleAccount *account);
00851
00858 void purple_account_add_buddy(PurpleAccount *account, PurpleBuddy *buddy);
00865 void purple_account_add_buddies(PurpleAccount *account, GList *buddies);
00866
00874 void purple_account_remove_buddy(PurpleAccount *account, PurpleBuddy *buddy,
00875 PurpleGroup *group);
00876
00888 void purple_account_remove_buddies(PurpleAccount *account, GList *buddies,
00889 GList *groups);
00890
00897 void purple_account_remove_group(PurpleAccount *account, PurpleGroup *group);
00898
00906 void purple_account_change_password(PurpleAccount *account, const char *orig_pw,
00907 const char *new_pw);
00908
00915 gboolean purple_account_supports_offline_message(PurpleAccount *account, PurpleBuddy *buddy);
00916
00927 const PurpleConnectionErrorInfo *purple_account_get_current_error(PurpleAccount *account);
00928
00934 void purple_account_clear_current_error(PurpleAccount *account);
00935
00938
00940
00948 void purple_accounts_add(PurpleAccount *account);
00949
00955 void purple_accounts_remove(PurpleAccount *account);
00956
00966 void purple_accounts_delete(PurpleAccount *account);
00967
00974 void purple_accounts_reorder(PurpleAccount *account, gint new_index);
00975
00981 GList *purple_accounts_get_all(void);
00982
00990 GList *purple_accounts_get_all_active(void);
00991
01000 PurpleAccount *purple_accounts_find(const char *name, const char *protocol);
01001
01011 void purple_accounts_restore_current_statuses(void);
01012
01016
01018
01025 void purple_accounts_set_ui_ops(PurpleAccountUiOps *ops);
01026
01032 PurpleAccountUiOps *purple_accounts_get_ui_ops(void);
01033
01037
01039
01047 void *purple_accounts_get_handle(void);
01048
01052 void purple_accounts_init(void);
01053
01057 void purple_accounts_uninit(void);
01058
01061 #ifdef __cplusplus
01062 }
01063 #endif
01064
01065 #endif