account.h

Go to the documentation of this file.
00001 
00007 /* purple
00008  *
00009  * Purple is the legal property of its developers, whose names are too numerous
00010  * to list here.  Please refer to the COPYRIGHT file distributed with this
00011  * source distribution.
00012  *
00013  * This program is free software; you can redistribute it and/or modify
00014  * it under the terms of the GNU General Public License as published by
00015  * the Free Software Foundation; either version 2 of the License, or
00016  * (at your option) any later version.
00017  *
00018  * This program is distributed in the hope that it will be useful,
00019  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00020  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00021  * GNU General Public License for more details.
00022  *
00023  * You should have received a copy of the GNU General Public License
00024  * along with this program; if not, write to the Free Software
00025  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
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 /* Account authorization request */
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                                 /*   to NULL when the account inherits      */
00137                                 /*   proxy settings from global prefs.      */
00138 
00139     /*
00140      * TODO: Supplementing the next two linked lists with hash tables
00141      * should help performance a lot when these lists are long.  This
00142      * matters quite a bit for protocols like MSN, where all your
00143      * buddies are added to your permit list.  Currently we have to
00144      * iterate through the entire list if we want to check if someone
00145      * is permitted or denied.  We should do this for 3.0.0.
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 /* _PURPLE_ACCOUNT_H_ */