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 
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 /* Account authorization request */
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                                 /*   to NULL when the account inherits      */
00133                                 /*   proxy settings from global prefs.      */
00134 
00135     /*
00136      * TODO: Supplementing the next two linked lists with hash tables
00137      * should help performance a lot when these lists are long.  This
00138      * matters quite a bit for protocols like MSN, where all your
00139      * buddies are added to your permit list.  Currently we have to
00140      * iterate through the entire list if we want to check if someone
00141      * is permitted or denied.  We should do this for 3.0.0.
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 /* _PURPLE_ACCOUNT_H_ */

Generated by  doxygen 1.6.2