Frameworks/libpurple.framework/Versions/0.6.2/Headers/user.h
author Zachary West <zacw@adium.im>
Fri Aug 21 13:25:11 2009 -0700 (2009-08-21)
changeset 2592 e8d15275025e
parent 2250 Frameworks/libpurple.framework/Versions/0.6.0/Headers/user.h@9da0b118ce57
permissions -rw-r--r--
im.pidgin.adium.1-4 at 267c6165e02e34318a1823960bd04c0639952f73
Evan@653
     1
/**
Evan@653
     2
 * @file user.h User functions
Evan@653
     3
 *
Evan@653
     4
 * purple
Evan@653
     5
 *
Evan@653
     6
 * Purple is the legal property of its developers, whose names are too numerous
Evan@653
     7
 * to list here.  Please refer to the COPYRIGHT file distributed with this
Evan@653
     8
 * source distribution.
Evan@653
     9
 *
Evan@653
    10
 * This program is free software; you can redistribute it and/or modify
Evan@653
    11
 * it under the terms of the GNU General Public License as published by
Evan@653
    12
 * the Free Software Foundation; either version 2 of the License, or
Evan@653
    13
 * (at your option) any later version.
Evan@653
    14
 *
Evan@653
    15
 * This program is distributed in the hope that it will be useful,
Evan@653
    16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Evan@653
    17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Evan@653
    18
 * GNU General Public License for more details.
Evan@653
    19
 *
Evan@653
    20
 * You should have received a copy of the GNU General Public License
Evan@653
    21
 * along with this program; if not, write to the Free Software
Evan@653
    22
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
Evan@653
    23
 */
Evan@653
    24
#ifndef _MSN_USER_H_
Evan@653
    25
#define _MSN_USER_H_
Evan@653
    26
Evan@653
    27
typedef struct _MsnUser  MsnUser;
Evan@653
    28
Evan@653
    29
#include "session.h"
Evan@653
    30
#include "object.h"
Evan@653
    31
Evan@653
    32
#include "userlist.h"
Evan@653
    33
Evan@653
    34
typedef enum
Evan@653
    35
{
Evan@653
    36
	MSN_NETWORK_UNKNOWN      = 0x00,
Evan@653
    37
	MSN_NETWORK_PASSPORT     = 0x01,
Evan@653
    38
	MSN_NETWORK_COMMUNICATOR = 0x02,
Evan@653
    39
	MSN_NETWORK_MOBILE       = 0x04,
Evan@653
    40
	MSN_NETWORK_MNI          = 0x08,
Evan@653
    41
	MSN_NETWORK_SMTP         = 0x10,
Evan@653
    42
	MSN_NETWORK_YAHOO        = 0x20
Evan@653
    43
} MsnNetwork;
Evan@653
    44
Evan@653
    45
/**
Evan@653
    46
 * Current media.
Evan@653
    47
 */
Evan@653
    48
typedef enum
Evan@653
    49
{
Evan@653
    50
	CURRENT_MEDIA_UNKNOWN,
Evan@653
    51
	CURRENT_MEDIA_MUSIC,
Evan@653
    52
	CURRENT_MEDIA_GAMES,
Evan@653
    53
	CURRENT_MEDIA_OFFICE
Evan@653
    54
} CurrentMediaType;
Evan@653
    55
Evan@653
    56
typedef struct _CurrentMedia
Evan@653
    57
{
Evan@653
    58
	CurrentMediaType type;     /**< Type.   */
Evan@653
    59
	char *title;    /**< Title.  */
Evan@653
    60
	char *artist;   /**< Artist. */
Evan@653
    61
	char *album;    /**< Album.  */
Evan@653
    62
} CurrentMedia;
Evan@653
    63
Evan@653
    64
/**
Evan@653
    65
 * A user.
Evan@653
    66
 */
Evan@653
    67
struct _MsnUser
Evan@653
    68
{
Evan@653
    69
	MsnUserList *userlist;
Evan@653
    70
Evan@653
    71
	char *passport;         /**< The passport account.          */
Evan@653
    72
	char *friendly_name;    /**< The friendly name.             */
Evan@653
    73
Evan@653
    74
	char * uid;				/*< User Id							*/
Evan@653
    75
Evan@653
    76
	const char *status;     /**< The state of the user.         */
Evan@653
    77
	char *statusline;       /**< The state of the user.         */
Evan@653
    78
	CurrentMedia media;     /**< Current media of the user.     */
Evan@653
    79
Evan@653
    80
	gboolean idle;          /**< The idle state of the user.    */
Evan@653
    81
Evan@653
    82
	struct
Evan@653
    83
	{
Evan@653
    84
		char *home;         /**< Home phone number.             */
Evan@653
    85
		char *work;         /**< Work phone number.             */
Evan@653
    86
		char *mobile;       /**< Mobile phone number.           */
Evan@653
    87
Evan@653
    88
	} phone;
Evan@653
    89
Evan@653
    90
	gboolean authorized;    /**< Authorized to add this user.   */
Evan@653
    91
	gboolean mobile;        /**< Signed up with MSN Mobile.     */
Evan@653
    92
Evan@653
    93
	GList *group_ids;       /**< The group IDs.                 */
Evan@653
    94
	char *pending_group;    /**< A pending group to add.        */
Evan@653
    95
Evan@653
    96
	MsnObject *msnobj;      /**< The user's MSN Object.         */
Evan@653
    97
Evan@653
    98
	GHashTable *clientcaps; /**< The client's capabilities.     */
Evan@653
    99
Evan@653
   100
	guint clientid;         /**< The client's ID                */
Evan@653
   101
Evan@653
   102
	MsnNetwork networkid;   /**< The user's network             */
Evan@653
   103
Evan@653
   104
	int list_op;            /**< Which lists the user is in     */
Evan@653
   105
Evan@653
   106
	guint membership_id[5];	/**< The membershipId sent by the contacts server,
Evan@653
   107
				     indexed by the list it belongs to		*/
zacw@2250
   108
zacw@2250
   109
	char *invite_message;   /**< Invite message of user request */
Evan@653
   110
};
Evan@653
   111
Evan@653
   112
/**************************************************************************
Evan@653
   113
 ** @name User API                                                        *
Evan@653
   114
 **************************************************************************/
Evan@653
   115
/*@{*/
Evan@653
   116
Evan@653
   117
/**
Evan@653
   118
 * Creates a new user structure.
Evan@653
   119
 *
Evan@653
   120
 * @param session      The MSN session.
Evan@653
   121
 * @param passport     The initial passport.
Evan@653
   122
 * @param stored_name  The initial stored name.
Evan@653
   123
 *
Evan@653
   124
 * @return A new user structure.
Evan@653
   125
 */
Evan@653
   126
MsnUser *msn_user_new(MsnUserList *userlist, const char *passport,
Evan@653
   127
					  const char *friendly_name);
Evan@653
   128
Evan@653
   129
/**
Evan@653
   130
 * Destroys a user structure.
Evan@653
   131
 *
Evan@653
   132
 * @param user The user to destroy.
Evan@653
   133
 */
Evan@653
   134
void msn_user_destroy(MsnUser *user);
Evan@653
   135
Evan@653
   136
Evan@653
   137
/**
Evan@653
   138
 * Updates the user.
Evan@653
   139
 *
Evan@653
   140
 * Communicates with the core to update the ui, etc.
Evan@653
   141
 *
Evan@653
   142
 * @param user The user to update.
Evan@653
   143
 */
Evan@653
   144
void msn_user_update(MsnUser *user);
Evan@653
   145
Evan@653
   146
 /**
Evan@653
   147
  *  Sets the new statusline of user.
Evan@653
   148
  *
Evan@653
   149
  *  @param user The user.
Evan@653
   150
  *  @param state The statusline string.
Evan@653
   151
  */
Evan@653
   152
void msn_user_set_statusline(MsnUser *user, const char *statusline);
Evan@653
   153
Evan@653
   154
 /**
Evan@653
   155
  *  Sets the current media of user.
Evan@653
   156
  *
Evan@653
   157
  *  @param user   The user.
Evan@653
   158
  *  @param cmedia Current media.
Evan@653
   159
  */
Evan@653
   160
void msn_user_set_currentmedia(MsnUser *user, const CurrentMedia *cmedia);
Evan@653
   161
Evan@653
   162
/**
Evan@653
   163
 * Sets the new state of user.
Evan@653
   164
 *
Evan@653
   165
 * @param user The user.
Evan@653
   166
 * @param state The state string.
Evan@653
   167
 */
Evan@653
   168
void msn_user_set_state(MsnUser *user, const char *state);
Evan@653
   169
Evan@653
   170
/**
Evan@653
   171
 * Sets the passport account for a user.
Evan@653
   172
 *
Evan@653
   173
 * @param user     The user.
Evan@653
   174
 * @param passport The passport account.
Evan@653
   175
 */
Evan@653
   176
void msn_user_set_passport(MsnUser *user, const char *passport);
Evan@653
   177
Evan@653
   178
/**
Evan@653
   179
 * Sets the friendly name for a user.
Evan@653
   180
 *
Evan@653
   181
 * @param user The user.
Evan@653
   182
 * @param name The friendly name.
Evan@770
   183
 *
Evan@770
   184
 * @returns TRUE is name actually changed, FALSE otherwise.
Evan@653
   185
 */
Evan@770
   186
gboolean msn_user_set_friendly_name(MsnUser *user, const char *name);
Evan@653
   187
Evan@653
   188
/**
Evan@653
   189
 * Sets the buddy icon for a local user.
Evan@653
   190
 *
Evan@653
   191
 * @param user     The user.
Evan@653
   192
 * @param img      The buddy icon image
Evan@653
   193
 */
Evan@653
   194
void msn_user_set_buddy_icon(MsnUser *user, PurpleStoredImage *img);
Evan@653
   195
Evan@653
   196
/**
Evan@653
   197
 * Sets the group ID list for a user.
Evan@653
   198
 *
Evan@653
   199
 * @param user The user.
Evan@653
   200
 * @param ids  The group ID list.
Evan@653
   201
 */
Evan@653
   202
void msn_user_set_group_ids(MsnUser *user, GList *ids);
Evan@653
   203
Evan@653
   204
/**
Evan@653
   205
 * Adds the group ID for a user.
Evan@653
   206
 *
Evan@653
   207
 * @param user The user.
Evan@653
   208
 * @param id   The group ID.
Evan@653
   209
 */
Evan@653
   210
void msn_user_add_group_id(MsnUser *user, const char * id);
Evan@653
   211
Evan@653
   212
/**
Evan@653
   213
 * Removes the group ID from a user.
Evan@653
   214
 *
Evan@653
   215
 * @param user The user.
Evan@653
   216
 * @param id   The group ID.
Evan@653
   217
 */
Evan@653
   218
void msn_user_remove_group_id(MsnUser *user, const char * id);
Evan@653
   219
Evan@653
   220
/**
Evan@653
   221
 * Sets the pending group for a user.
Evan@653
   222
 *
Evan@653
   223
 * @param user  The user.
Evan@653
   224
 * @param group The group name.
Evan@653
   225
 */
Evan@653
   226
void msn_user_set_pending_group(MsnUser *user, const char *group);
Evan@653
   227
Evan@653
   228
/**
Evan@653
   229
 * Removes the pending group from a user.
Evan@653
   230
 *
Evan@653
   231
 * @param user The user.
Evan@653
   232
 *
Evan@653
   233
 * @return Returns the pending group name.
Evan@653
   234
 */
Evan@653
   235
char *msn_user_remove_pending_group(MsnUser *user);
Evan@653
   236
Evan@653
   237
/**
Evan@653
   238
 * Sets the home phone number for a user.
Evan@653
   239
 *
Evan@653
   240
 * @param user   The user.
Evan@653
   241
 * @param number The home phone number.
Evan@653
   242
 */
Evan@653
   243
void msn_user_set_home_phone(MsnUser *user, const char *number);
Evan@653
   244
Evan@653
   245
/**
Evan@653
   246
 * Sets the work phone number for a user.
Evan@653
   247
 *
Evan@653
   248
 * @param user   The user.
Evan@653
   249
 * @param number The work phone number.
Evan@653
   250
 */
Evan@653
   251
void msn_user_set_work_phone(MsnUser *user, const char *number);
Evan@653
   252
Evan@653
   253
void msn_user_set_uid(MsnUser *user, const char *uid);
Evan@653
   254
Evan@653
   255
/**
Evan@653
   256
 * Sets the client id for a user.
Evan@653
   257
 *
Evan@653
   258
 * @param user     The user.
Evan@653
   259
 * @param clientid The client id.
Evan@653
   260
 */
Evan@653
   261
void msn_user_set_clientid(MsnUser *user, guint clientid);
Evan@653
   262
Evan@653
   263
/**
Evan@653
   264
 * Sets the network id for a user.
Evan@653
   265
 *
Evan@653
   266
 * @param user    The user.
Evan@653
   267
 * @param network The network id.
Evan@653
   268
 */
Evan@653
   269
void msn_user_set_network(MsnUser *user, MsnNetwork network);
Evan@653
   270
Evan@653
   271
/**
Evan@653
   272
 * Sets the mobile phone number for a user.
Evan@653
   273
 *
Evan@653
   274
 * @param user   The user.
Evan@653
   275
 * @param number The mobile phone number.
Evan@653
   276
 */
Evan@653
   277
void msn_user_set_mobile_phone(MsnUser *user, const char *number);
Evan@653
   278
Evan@653
   279
/**
Evan@653
   280
 * Sets the MSNObject for a user.
Evan@653
   281
 *
Evan@653
   282
 * @param user The user.
Evan@653
   283
 * @param obj  The MSNObject.
Evan@653
   284
 */
Evan@653
   285
void msn_user_set_object(MsnUser *user, MsnObject *obj);
Evan@653
   286
Evan@653
   287
/**
Evan@653
   288
 * Sets the client information for a user.
Evan@653
   289
 *
Evan@653
   290
 * @param user The user.
Evan@653
   291
 * @param info The client information.
Evan@653
   292
 */
Evan@653
   293
void msn_user_set_client_caps(MsnUser *user, GHashTable *info);
Evan@653
   294
zacw@2250
   295
/**
zacw@2250
   296
 * Sets the invite message for a user.
zacw@2250
   297
 *
zacw@2250
   298
 * @param user    The user.
zacw@2250
   299
 * @param message The invite message for a user.
zacw@2250
   300
 */
zacw@2250
   301
void msn_user_set_invite_message(MsnUser *user, const char *message);
zacw@2250
   302
Evan@653
   303
Evan@653
   304
/**
Evan@653
   305
 * Returns the passport account for a user.
Evan@653
   306
 *
Evan@653
   307
 * @param user The user.
Evan@653
   308
 *
Evan@653
   309
 * @return The passport account.
Evan@653
   310
 */
Evan@653
   311
const char *msn_user_get_passport(const MsnUser *user);
Evan@653
   312
Evan@653
   313
/**
Evan@653
   314
 * Returns the friendly name for a user.
Evan@653
   315
 *
Evan@653
   316
 * @param user The user.
Evan@653
   317
 *
Evan@653
   318
 * @return The friendly name.
Evan@653
   319
 */
Evan@653
   320
const char *msn_user_get_friendly_name(const MsnUser *user);
Evan@653
   321
Evan@653
   322
/**
Evan@653
   323
 * Returns the home phone number for a user.
Evan@653
   324
 *
Evan@653
   325
 * @param user The user.
Evan@653
   326
 *
Evan@653
   327
 * @return The user's home phone number.
Evan@653
   328
 */
Evan@653
   329
const char *msn_user_get_home_phone(const MsnUser *user);
Evan@653
   330
Evan@653
   331
/**
Evan@653
   332
 * Returns the work phone number for a user.
Evan@653
   333
 *
Evan@653
   334
 * @param user The user.
Evan@653
   335
 *
Evan@653
   336
 * @return The user's work phone number.
Evan@653
   337
 */
Evan@653
   338
const char *msn_user_get_work_phone(const MsnUser *user);
Evan@653
   339
Evan@653
   340
/**
Evan@653
   341
 * Returns the mobile phone number for a user.
Evan@653
   342
 *
Evan@653
   343
 * @param user The user.
Evan@653
   344
 *
Evan@653
   345
 * @return The user's mobile phone number.
Evan@653
   346
 */
Evan@653
   347
const char *msn_user_get_mobile_phone(const MsnUser *user);
Evan@653
   348
Evan@653
   349
/**
Evan@653
   350
 * Returns the client id for a user.
Evan@653
   351
 *
Evan@653
   352
 * @param user    The user.
Evan@653
   353
 *
Evan@653
   354
 * @return The user's client id.
Evan@653
   355
 */
Evan@653
   356
guint msn_user_get_clientid(const MsnUser *user);
Evan@653
   357
Evan@653
   358
/**
Evan@653
   359
 * Returns the network id for a user.
Evan@653
   360
 *
Evan@653
   361
 * @param user    The user.
Evan@653
   362
 *
Evan@653
   363
 * @return The user's network id.
Evan@653
   364
 */
Evan@653
   365
MsnNetwork msn_user_get_network(const MsnUser *user);
Evan@653
   366
Evan@653
   367
/**
Evan@653
   368
 * Returns the MSNObject for a user.
Evan@653
   369
 *
Evan@653
   370
 * @param user The user.
Evan@653
   371
 *
Evan@653
   372
 * @return The MSNObject.
Evan@653
   373
 */
Evan@653
   374
MsnObject *msn_user_get_object(const MsnUser *user);
Evan@653
   375
Evan@653
   376
/**
Evan@653
   377
 * Returns the client information for a user.
Evan@653
   378
 *
Evan@653
   379
 * @param user The user.
Evan@653
   380
 *
Evan@653
   381
 * @return The client information.
Evan@653
   382
 */
Evan@653
   383
GHashTable *msn_user_get_client_caps(const MsnUser *user);
Evan@653
   384
Evan@653
   385
/**
zacw@2250
   386
 * Returns the invite message for a user.
zacw@2250
   387
 *
zacw@2250
   388
 * @param user The user.
zacw@2250
   389
 *
zacw@2250
   390
 * @return The user's invite message.
zacw@2250
   391
 */
zacw@2250
   392
const char *msn_user_get_invite_message(const MsnUser *user);
zacw@2250
   393
zacw@2250
   394
/**
Evan@653
   395
 * check to see if user is online
Evan@653
   396
 */
Evan@653
   397
gboolean
Evan@653
   398
msn_user_is_online(PurpleAccount *account, const char *name);
Evan@653
   399
Evan@653
   400
/**
Evan@653
   401
 * check to see if user is Yahoo User
Evan@653
   402
 */
Evan@653
   403
gboolean
Evan@653
   404
msn_user_is_yahoo(PurpleAccount *account ,const char *name);
Evan@653
   405
Evan@653
   406
void msn_user_set_op(MsnUser *user, int list_op);
Evan@653
   407
void msn_user_unset_op(MsnUser *user, int list_op);
Evan@653
   408
Evan@653
   409
/*@}*/
Evan@653
   410
Evan@653
   411
Evan@653
   412
#endif /* _MSN_USER_H_ */