account.h

Go to the documentation of this file.
00001 
00006 /* purple
00007  *
00008  * Purple is the legal property of its developers, whose names are too numerous
00009  * to list here.  Please refer to the COPYRIGHT file distributed with this
00010  * source distribution.
00011  *
00012  * This program is free software; you can redistribute it and/or modify
00013  * it under the terms of the GNU General Public License as published by
00014  * the Free Software Foundation; either version 2 of the License, or
00015  * (at your option) any later version.
00016  *
00017  * This program is distributed in the hope that it will be useful,
00018  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00020  * GNU General Public License for more details.
00021  *
00022  * You should have received a copy of the GNU General Public License
00023  * along with this program; if not, write to the Free Software
00024  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
00025  *
00026  * @see @ref account-signals
00027  */
00028 #ifndef _PURPLE_ACCOUNT_H_
00029 #define _PURPLE_ACCOUNT_H_
00030 
00031 #include <glib-object.h>
00032 #include <glib.h>
00033 #include <glib-object.h>
00034 
00035 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 "proxy.h"
00046 #include "prpl.h"
00047 #include "status.h"
00048 
00052 typedef enum
00053 {
00054     PURPLE_ACCOUNT_REQUEST_AUTHORIZATION = 0 /* Account authorization request */
00055 } PurpleAccountRequestType;
00056 
00057 
00061 struct _PurpleAccountUiOps
00062 {
00066     void (*notify_added)(PurpleAccount *account,
00067                          const char *remote_user,
00068                          const char *id,
00069                          const char *alias,
00070                          const char *message);
00071 
00073     void (*status_changed)(PurpleAccount *account,
00074                            PurpleStatus *status);
00075 
00077     void (*request_add)(PurpleAccount *account,
00078                         const char *remote_user,
00079                         const char *id,
00080                         const char *alias,
00081                         const char *message);
00082 
00088     void *(*request_authorize)(PurpleAccount *account,
00089                                const char *remote_user,
00090                                const char *id,
00091                                const char *alias,
00092                                const char *message,
00093                                gboolean on_list,
00094                                PurpleAccountRequestAuthorizationCb authorize_cb,
00095                                PurpleAccountRequestAuthorizationCb deny_cb,
00096                                void *user_data);
00097 
00101     void (*close_account_request)(void *ui_handle);
00102 
00103     void (*_purple_reserved1)(void);
00104     void (*_purple_reserved2)(void);
00105     void (*_purple_reserved3)(void);
00106     void (*_purple_reserved4)(void);
00107 };
00108 
00109 struct _PurpleAccount
00110 {
00111     char *username;             
00112     char *alias;                
00113     char *password;             
00114     char *user_info;            
00116     char *buddy_icon_path;      
00118     gboolean remember_pass;     
00120     char *protocol_id;          
00122     PurpleConnection *gc;         
00123     gboolean disconnecting;     
00125     GHashTable *settings;       
00126     GHashTable *ui_settings;    
00128     PurpleProxyInfo *proxy_info;  
00129                                 /*   to NULL when the account inherits      */
00130                                 /*   proxy settings from global prefs.      */
00131 
00132     GSList *permit;             
00133     GSList *deny;               
00134     int perm_deny;              
00136     GList *status_types;        
00138     PurplePresence *presence;     
00139     PurpleLog *system_log;        
00141     void *ui_data;              
00142     PurpleAccountRegistrationCb registration_cb;
00143     void *registration_cb_user_data;
00144 };
00145 
00146 #ifdef __cplusplus
00147 extern "C" {
00148 #endif
00149 
00150 /**************************************************************************/
00152 /**************************************************************************/
00163 PurpleAccount *purple_account_new(const char *username, const char *protocol_id);
00164 
00170 void purple_account_destroy(PurpleAccount *account);
00171 
00177 void purple_account_connect(PurpleAccount *account);
00178 
00186 void purple_account_set_register_callback(PurpleAccount *account, PurpleAccountRegistrationCb cb, void *user_data);
00187 
00193 void purple_account_register(PurpleAccount *account);
00194 
00202 void purple_account_unregister(PurpleAccount *account, PurpleAccountUnregistrationCb cb, void *user_data);
00203 
00209 void purple_account_disconnect(PurpleAccount *account);
00210 
00224 void purple_account_notify_added(PurpleAccount *account, const char *remote_user,
00225                                const char *id, const char *alias,
00226                                const char *message);
00227 
00243 void purple_account_request_add(PurpleAccount *account, const char *remote_user,
00244                               const char *id, const char *alias,
00245                               const char *message);
00246 
00266 void *purple_account_request_authorization(PurpleAccount *account, const char *remote_user,
00267                     const char *id, const char *alias, const char *message, gboolean on_list,
00268                     PurpleAccountRequestAuthorizationCb auth_cb, PurpleAccountRequestAuthorizationCb deny_cb, void *user_data);
00269 
00275 void purple_account_request_close_with_account(PurpleAccount *account);
00276 
00282 void purple_account_request_close(void *ui_handle);
00283 
00293 void purple_account_request_password(PurpleAccount *account, GCallback ok_cb,
00294                      GCallback cancel_cb, void *user_data);
00295 
00301 void purple_account_request_change_password(PurpleAccount *account);
00302 
00309 void purple_account_request_change_user_info(PurpleAccount *account);
00310 
00317 void purple_account_set_username(PurpleAccount *account, const char *username);
00318 
00325 void purple_account_set_password(PurpleAccount *account, const char *password);
00326 
00333 void purple_account_set_alias(PurpleAccount *account, const char *alias);
00334 
00341 void purple_account_set_user_info(PurpleAccount *account, const char *user_info);
00342 
00349 void purple_account_set_buddy_icon_path(PurpleAccount *account, const char *path);
00350 
00357 void purple_account_set_protocol_id(PurpleAccount *account,
00358                                   const char *protocol_id);
00359 
00366 void purple_account_set_connection(PurpleAccount *account, PurpleConnection *gc);
00367 
00374 void purple_account_set_remember_password(PurpleAccount *account, gboolean value);
00375 
00382 void purple_account_set_check_mail(PurpleAccount *account, gboolean value);
00383 
00392 void purple_account_set_enabled(PurpleAccount *account, const char *ui,
00393                   gboolean value);
00394 
00401 void purple_account_set_proxy_info(PurpleAccount *account, PurpleProxyInfo *info);
00402 
00409 void purple_account_set_status_types(PurpleAccount *account, GList *status_types);
00410 
00424 void purple_account_set_status(PurpleAccount *account, const char *status_id,
00425                              gboolean active, ...) G_GNUC_NULL_TERMINATED;
00426 
00427 
00440 void purple_account_set_status_list(PurpleAccount *account,
00441                                   const char *status_id,
00442                                   gboolean active, GList *attrs);
00443 
00449 void purple_account_clear_settings(PurpleAccount *account);
00450 
00458 void purple_account_set_int(PurpleAccount *account, const char *name, int value);
00459 
00467 void purple_account_set_string(PurpleAccount *account, const char *name,
00468                              const char *value);
00469 
00477 void purple_account_set_bool(PurpleAccount *account, const char *name,
00478                            gboolean value);
00479 
00488 void purple_account_set_ui_int(PurpleAccount *account, const char *ui,
00489                              const char *name, int value);
00490 
00499 void purple_account_set_ui_string(PurpleAccount *account, const char *ui,
00500                                 const char *name, const char *value);
00501 
00510 void purple_account_set_ui_bool(PurpleAccount *account, const char *ui,
00511                               const char *name, gboolean value);
00512 
00520 gboolean purple_account_is_connected(const PurpleAccount *account);
00521 
00529 gboolean purple_account_is_connecting(const PurpleAccount *account);
00530 
00538 gboolean purple_account_is_disconnected(const PurpleAccount *account);
00539 
00547 const char *purple_account_get_username(const PurpleAccount *account);
00548 
00556 const char *purple_account_get_password(const PurpleAccount *account);
00557 
00565 const char *purple_account_get_alias(const PurpleAccount *account);
00566 
00574 const char *purple_account_get_user_info(const PurpleAccount *account);
00575 
00583 const char *purple_account_get_buddy_icon_path(const PurpleAccount *account);
00584 
00592 const char *purple_account_get_protocol_id(const PurpleAccount *account);
00593 
00601 const char *purple_account_get_protocol_name(const PurpleAccount *account);
00602 
00610 PurpleConnection *purple_account_get_connection(const PurpleAccount *account);
00611 
00619 gboolean purple_account_get_remember_password(const PurpleAccount *account);
00620 
00628 gboolean purple_account_get_check_mail(const PurpleAccount *account);
00629 
00639 gboolean purple_account_get_enabled(const PurpleAccount *account,
00640                   const char *ui);
00641 
00649 PurpleProxyInfo *purple_account_get_proxy_info(const PurpleAccount *account);
00650 
00661 PurpleStatus *purple_account_get_active_status(const PurpleAccount *account);
00662 
00674 PurpleStatus *purple_account_get_status(const PurpleAccount *account,
00675                                     const char *status_id);
00676 
00685 PurpleStatusType *purple_account_get_status_type(const PurpleAccount *account,
00686                                              const char *id);
00687 
00699 PurpleStatusType *purple_account_get_status_type_with_primitive(
00700                             const PurpleAccount *account,
00701                             PurpleStatusPrimitive primitive);
00702 
00710 PurplePresence *purple_account_get_presence(const PurpleAccount *account);
00711 
00720 gboolean purple_account_is_status_active(const PurpleAccount *account,
00721                                        const char *status_id);
00722 
00730 GList *purple_account_get_status_types(const PurpleAccount *account);
00731 
00741 int purple_account_get_int(const PurpleAccount *account, const char *name,
00742                          int default_value);
00743 
00753 const char *purple_account_get_string(const PurpleAccount *account,
00754                                     const char *name,
00755                                     const char *default_value);
00756 
00766 gboolean purple_account_get_bool(const PurpleAccount *account, const char *name,
00767                                gboolean default_value);
00768 
00779 int purple_account_get_ui_int(const PurpleAccount *account, const char *ui,
00780                             const char *name, int default_value);
00781 
00792 const char *purple_account_get_ui_string(const PurpleAccount *account,
00793                                        const char *ui, const char *name,
00794                                        const char *default_value);
00795 
00806 gboolean purple_account_get_ui_bool(const PurpleAccount *account, const char *ui,
00807                                   const char *name, gboolean default_value);
00808 
00809 
00823 PurpleLog *purple_account_get_log(PurpleAccount *account, gboolean create);
00824 
00830 void purple_account_destroy_log(PurpleAccount *account);
00831 
00838 void purple_account_add_buddy(PurpleAccount *account, PurpleBuddy *buddy);
00845 void purple_account_add_buddies(PurpleAccount *account, GList *buddies);
00846 
00854 void purple_account_remove_buddy(PurpleAccount *account, PurpleBuddy *buddy,
00855                                 PurpleGroup *group);
00856 
00868 void purple_account_remove_buddies(PurpleAccount *account, GList *buddies,
00869                                     GList *groups);
00870 
00877 void purple_account_remove_group(PurpleAccount *account, PurpleGroup *group);
00878 
00886 void purple_account_change_password(PurpleAccount *account, const char *orig_pw,
00887                                     const char *new_pw);
00888 
00895 gboolean purple_account_supports_offline_message(PurpleAccount *account, PurpleBuddy *buddy);
00896 
00899 /**************************************************************************/
00901 /**************************************************************************/
00909 void purple_accounts_add(PurpleAccount *account);
00910 
00916 void purple_accounts_remove(PurpleAccount *account);
00917 
00927 void purple_accounts_delete(PurpleAccount *account);
00928 
00935 void purple_accounts_reorder(PurpleAccount *account, gint new_index);
00936 
00942 GList *purple_accounts_get_all(void);
00943 
00951 GList *purple_accounts_get_all_active(void);
00952 
00961 PurpleAccount *purple_accounts_find(const char *name, const char *protocol);
00962 
00972 void purple_accounts_restore_current_statuses(void);
00973 
00977 /**************************************************************************/
00979 /**************************************************************************/
00986 void purple_accounts_set_ui_ops(PurpleAccountUiOps *ops);
00987 
00993 PurpleAccountUiOps *purple_accounts_get_ui_ops(void);
00994 
00998 /**************************************************************************/
01000 /**************************************************************************/
01008 void *purple_accounts_get_handle(void);
01009 
01013 void purple_accounts_init(void);
01014 
01018 void purple_accounts_uninit(void);
01019 
01022 #ifdef __cplusplus
01023 }
01024 #endif
01025 
01026 #endif /* _PURPLE_ACCOUNT_H_ */