account.h
Go to the documentation of this file.
1 
7 /* purple
8  *
9  * Purple is the legal property of its developers, whose names are too numerous
10  * to list here. Please refer to the COPYRIGHT file distributed with this
11  * source distribution.
12  *
13  * This program is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU General Public License as published by
15  * the Free Software Foundation; either version 2 of the License, or
16  * (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this program; if not, write to the Free Software
25  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
26  */
27 #ifndef _PURPLE_ACCOUNT_H_
28 #define _PURPLE_ACCOUNT_H_
29 
30 #include <glib.h>
31 #include <glib-object.h>
32 
37 
38 typedef gboolean (*PurpleFilterAccountFunc)(PurpleAccount *account);
39 typedef void (*PurpleAccountRequestAuthorizationCb)(void *);
40 typedef void (*PurpleAccountRegistrationCb)(PurpleAccount *account, gboolean succeeded, void *user_data);
41 typedef void (*PurpleAccountUnregistrationCb)(PurpleAccount *account, gboolean succeeded, void *user_data);
42 typedef void (*PurpleSetPublicAliasSuccessCallback)(PurpleAccount *account, const char *new_alias);
43 typedef void (*PurpleSetPublicAliasFailureCallback)(PurpleAccount *account, const char *error);
44 typedef void (*PurpleGetPublicAliasSuccessCallback)(PurpleAccount *account, const char *alias);
45 typedef void (*PurpleGetPublicAliasFailureCallback)(PurpleAccount *account, const char *error);
46 
47 #include "connection.h"
48 #include "log.h"
49 #include "privacy.h"
50 #include "proxy.h"
51 #include "prpl.h"
52 #include "status.h"
53 
57 typedef enum
58 {
59  PURPLE_ACCOUNT_REQUEST_AUTHORIZATION = 0 /* Account authorization request */
61 
65 typedef enum
66 {
67  PURPLE_ACCOUNT_RESPONSE_IGNORE = -2,
68  PURPLE_ACCOUNT_RESPONSE_DENY = -1,
69  PURPLE_ACCOUNT_RESPONSE_PASS = 0,
70  PURPLE_ACCOUNT_RESPONSE_ACCEPT = 1
72 
77 {
81  void (*notify_added)(PurpleAccount *account,
82  const char *remote_user,
83  const char *id,
84  const char *alias,
85  const char *message);
86 
88  void (*status_changed)(PurpleAccount *account,
89  PurpleStatus *status);
90 
92  void (*request_add)(PurpleAccount *account,
93  const char *remote_user,
94  const char *id,
95  const char *alias,
96  const char *message);
97 
103  void *(*request_authorize)(PurpleAccount *account,
104  const char *remote_user,
105  const char *id,
106  const char *alias,
107  const char *message,
108  gboolean on_list,
109  PurpleAccountRequestAuthorizationCb authorize_cb,
110  PurpleAccountRequestAuthorizationCb deny_cb,
111  void *user_data);
112 
116  void (*close_account_request)(void *ui_handle);
117 
118  void (*_purple_reserved1)(void);
119  void (*_purple_reserved2)(void);
120  void (*_purple_reserved3)(void);
121  void (*_purple_reserved4)(void);
122 };
123 
127 {
128  char *username;
129  char *alias;
130  char *password;
131  char *user_info;
135  gboolean remember_pass;
137  char *protocol_id;
140  gboolean disconnecting;
142  GHashTable *settings;
143  GHashTable *ui_settings;
146  /* to NULL when the account inherits */
147  /* proxy settings from global prefs. */
148 
149  /*
150  * TODO: Supplementing the next two linked lists with hash tables
151  * should help performance a lot when these lists are long. This
152  * matters quite a bit for protocols like MSN, where all your
153  * buddies are added to your permit list. Currently we have to
154  * iterate through the entire list if we want to check if someone
155  * is permitted or denied. We should do this for 3.0.0.
156  * Or maybe use a GTree.
157  */
158  GSList *permit;
159  GSList *deny;
162  GList *status_types;
164  PurplePresence *presence;
167  void *ui_data;
168  PurpleAccountRegistrationCb registration_cb;
169  void *registration_cb_user_data;
170 
171  gpointer priv;
172 };
173 
174 #ifdef __cplusplus
175 extern "C" {
176 #endif
177 
178 /**************************************************************************/
180 /**************************************************************************/
191 PurpleAccount *purple_account_new(const char *username, const char *protocol_id);
192 
199 
206 
214 void purple_account_set_register_callback(PurpleAccount *account, PurpleAccountRegistrationCb cb, void *user_data);
215 
222 
230 void purple_account_unregister(PurpleAccount *account, PurpleAccountUnregistrationCb cb, void *user_data);
231 
238 
252 void purple_account_notify_added(PurpleAccount *account, const char *remote_user,
253  const char *id, const char *alias,
254  const char *message);
255 
271 void purple_account_request_add(PurpleAccount *account, const char *remote_user,
272  const char *id, const char *alias,
273  const char *message);
274 
294 void *purple_account_request_authorization(PurpleAccount *account, const char *remote_user,
295  const char *id, const char *alias, const char *message, gboolean on_list,
296  PurpleAccountRequestAuthorizationCb auth_cb, PurpleAccountRequestAuthorizationCb deny_cb, void *user_data);
297 
304 
310 void purple_account_request_close(void *ui_handle);
311 
321 void purple_account_request_password(PurpleAccount *account, GCallback ok_cb,
322  GCallback cancel_cb, void *user_data);
323 
330 
338 
345 void purple_account_set_username(PurpleAccount *account, const char *username);
346 
353 void purple_account_set_password(PurpleAccount *account, const char *password);
354 
361 void purple_account_set_alias(PurpleAccount *account, const char *alias);
362 
369 void purple_account_set_user_info(PurpleAccount *account, const char *user_info);
370 
377 void purple_account_set_buddy_icon_path(PurpleAccount *account, const char *path);
378 
386  const char *protocol_id);
387 
395 
402 void purple_account_set_remember_password(PurpleAccount *account, gboolean value);
403 
410 void purple_account_set_check_mail(PurpleAccount *account, gboolean value);
411 
420 void purple_account_set_enabled(PurpleAccount *account, const char *ui,
421  gboolean value);
422 
430 
440 
447 void purple_account_set_status_types(PurpleAccount *account, GList *status_types);
448 
455 void purple_account_set_status(PurpleAccount *account, const char *status_id,
456  gboolean active, ...) G_GNUC_NULL_TERMINATED;
457 
458 
477  const char *status_id, gboolean active, GList *attrs);
478 
498  const char *alias, PurpleSetPublicAliasSuccessCallback success_cb,
499  PurpleSetPublicAliasFailureCallback failure_cb);
500 
512  PurpleGetPublicAliasSuccessCallback success_cb,
513  PurpleGetPublicAliasFailureCallback failure_cb);
514 
523 
531  gboolean value);
532 
539 
548 void purple_account_remove_setting(PurpleAccount *account, const char *setting);
549 
557 void purple_account_set_int(PurpleAccount *account, const char *name, int value);
558 
566 void purple_account_set_string(PurpleAccount *account, const char *name,
567  const char *value);
568 
576 void purple_account_set_bool(PurpleAccount *account, const char *name,
577  gboolean value);
578 
587 void purple_account_set_ui_int(PurpleAccount *account, const char *ui,
588  const char *name, int value);
589 
598 void purple_account_set_ui_string(PurpleAccount *account, const char *ui,
599  const char *name, const char *value);
600 
609 void purple_account_set_ui_bool(PurpleAccount *account, const char *ui,
610  const char *name, gboolean value);
611 
619 gboolean purple_account_is_connected(const PurpleAccount *account);
620 
628 gboolean purple_account_is_connecting(const PurpleAccount *account);
629 
637 gboolean purple_account_is_disconnected(const PurpleAccount *account);
638 
646 const char *purple_account_get_username(const PurpleAccount *account);
647 
655 const char *purple_account_get_password(const PurpleAccount *account);
656 
664 const char *purple_account_get_alias(const PurpleAccount *account);
665 
673 const char *purple_account_get_user_info(const PurpleAccount *account);
674 
682 const char *purple_account_get_buddy_icon_path(const PurpleAccount *account);
683 
691 const char *purple_account_get_protocol_id(const PurpleAccount *account);
692 
700 const char *purple_account_get_protocol_name(const PurpleAccount *account);
701 
710 
723 const gchar *purple_account_get_name_for_display(const PurpleAccount *account);
724 
732 gboolean purple_account_get_remember_password(const PurpleAccount *account);
733 
741 gboolean purple_account_get_check_mail(const PurpleAccount *account);
742 
752 gboolean purple_account_get_enabled(const PurpleAccount *account,
753  const char *ui);
754 
763 
774 
785 PurpleStatus *purple_account_get_active_status(const PurpleAccount *account);
786 
798 PurpleStatus *purple_account_get_status(const PurpleAccount *account,
799  const char *status_id);
800 
810  const char *id);
811 
824  const PurpleAccount *account,
825  PurpleStatusPrimitive primitive);
826 
834 PurplePresence *purple_account_get_presence(const PurpleAccount *account);
835 
844 gboolean purple_account_is_status_active(const PurpleAccount *account,
845  const char *status_id);
846 
854 GList *purple_account_get_status_types(const PurpleAccount *account);
855 
865 int purple_account_get_int(const PurpleAccount *account, const char *name,
866  int default_value);
867 
877 const char *purple_account_get_string(const PurpleAccount *account,
878  const char *name,
879  const char *default_value);
880 
890 gboolean purple_account_get_bool(const PurpleAccount *account, const char *name,
891  gboolean default_value);
892 
903 int purple_account_get_ui_int(const PurpleAccount *account, const char *ui,
904  const char *name, int default_value);
905 
916 const char *purple_account_get_ui_string(const PurpleAccount *account,
917  const char *ui, const char *name,
918  const char *default_value);
919 
930 gboolean purple_account_get_ui_bool(const PurpleAccount *account, const char *ui,
931  const char *name, gboolean default_value);
932 
933 
947 PurpleLog *purple_account_get_log(PurpleAccount *account, gboolean create);
948 
955 
964 void purple_account_add_buddy(PurpleAccount *account, PurpleBuddy *buddy);
974 void purple_account_add_buddy_with_invite(PurpleAccount *account, PurpleBuddy *buddy, const char *message);
975 
984 void purple_account_add_buddies(PurpleAccount *account, GList *buddies);
994 void purple_account_add_buddies_with_invite(PurpleAccount *account, GList *buddies, const char *message);
995 
1004  PurpleGroup *group);
1005 
1017 void purple_account_remove_buddies(PurpleAccount *account, GList *buddies,
1018  GList *groups);
1019 
1027 
1035 void purple_account_change_password(PurpleAccount *account, const char *orig_pw,
1036  const char *new_pw);
1037 
1045 
1057 
1064 
1067 /**************************************************************************/
1069 /**************************************************************************/
1077 void purple_accounts_add(PurpleAccount *account);
1078 
1084 void purple_accounts_remove(PurpleAccount *account);
1085 
1095 void purple_accounts_delete(PurpleAccount *account);
1096 
1103 void purple_accounts_reorder(PurpleAccount *account, gint new_index);
1104 
1110 GList *purple_accounts_get_all(void);
1111 
1119 GList *purple_accounts_get_all_active(void);
1120 
1129 PurpleAccount *purple_accounts_find(const char *name, const char *protocol);
1130 
1141 
1145 /**************************************************************************/
1147 /**************************************************************************/
1155 
1162 
1166 /**************************************************************************/
1168 /**************************************************************************/
1176 void *purple_accounts_get_handle(void);
1177 
1181 void purple_accounts_init(void);
1182 
1186 void purple_accounts_uninit(void);
1187 
1190 #ifdef __cplusplus
1191 }
1192 #endif
1193 
1194 #endif /* _PURPLE_ACCOUNT_H_ */