Frameworks/libpurple.framework/Versions/0.6.2/Headers/accountopt.h
author Zachary West <zacw@adium.im>
Fri Aug 21 13:25:11 2009 -0700 (2009-08-21)
changeset 2592 e8d15275025e
parent 1739 Frameworks/libpurple.framework/Versions/0.6.0/Headers/accountopt.h@8b0daad9656c
permissions -rw-r--r--
im.pidgin.adium.1-4 at 267c6165e02e34318a1823960bd04c0639952f73
Evan@653
     1
/**
Evan@653
     2
 * @file accountopt.h Account Options API
Evan@653
     3
 * @ingroup core
Evan@653
     4
 */
Evan@653
     5
Evan@653
     6
/* purple
Evan@653
     7
 *
Evan@653
     8
 * Purple is the legal property of its developers, whose names are too numerous
Evan@653
     9
 * to list here.  Please refer to the COPYRIGHT file distributed with this
Evan@653
    10
 * source distribution.
Evan@653
    11
 *
Evan@653
    12
 * This program is free software; you can redistribute it and/or modify
Evan@653
    13
 * it under the terms of the GNU General Public License as published by
Evan@653
    14
 * the Free Software Foundation; either version 2 of the License, or
Evan@653
    15
 * (at your option) any later version.
Evan@653
    16
 *
Evan@653
    17
 * This program is distributed in the hope that it will be useful,
Evan@653
    18
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Evan@653
    19
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Evan@653
    20
 * GNU General Public License for more details.
Evan@653
    21
 *
Evan@653
    22
 * You should have received a copy of the GNU General Public License
Evan@653
    23
 * along with this program; if not, write to the Free Software
Evan@653
    24
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
Evan@653
    25
 */
Evan@653
    26
#ifndef _PURPLE_ACCOUNTOPT_H_
Evan@653
    27
#define _PURPLE_ACCOUNTOPT_H_
Evan@653
    28
Evan@653
    29
#include "prefs.h"
Evan@653
    30
Evan@653
    31
/**
Evan@653
    32
 * An option for an account.
Evan@653
    33
 *
Evan@653
    34
 * This is set by protocol plugins, and appears in the account settings
Evan@653
    35
 * dialogs.
Evan@653
    36
 */
Evan@653
    37
typedef struct
Evan@653
    38
{
Evan@653
    39
	PurplePrefType type;      /**< The type of value.                     */
Evan@653
    40
Evan@653
    41
	char *text;             /**< The text that will appear to the user. */
Evan@653
    42
	char *pref_name;        /**< The name of the associated preference. */
Evan@653
    43
Evan@653
    44
	union
Evan@653
    45
	{
Evan@653
    46
		gboolean boolean;   /**< The default boolean value.             */
Evan@653
    47
		int integer;        /**< The default integer value.             */
Evan@653
    48
		char *string;       /**< The default string value.              */
Evan@653
    49
		GList *list;        /**< The default list value.                */
Evan@653
    50
Evan@653
    51
	} default_value;
Evan@653
    52
Evan@653
    53
	gboolean masked;        /**< Whether the value entered should be
Evan@653
    54
	                         *   obscured from view (for passwords and
Evan@653
    55
	                         *   similar options)
Evan@653
    56
	                         */
Evan@653
    57
} PurpleAccountOption;
Evan@653
    58
Evan@653
    59
/**
Evan@653
    60
 * A username split.
Evan@653
    61
 *
Evan@653
    62
 * This is used by some protocols to separate the fields of the username
Evan@653
    63
 * into more human-readable components.
Evan@653
    64
 */
Evan@653
    65
typedef struct
Evan@653
    66
{
Evan@653
    67
	char *text;             /**< The text that will appear to the user. */
Evan@653
    68
	char *default_value;    /**< The default value.                     */
Evan@653
    69
	char  field_sep;        /**< The field separator.                   */
Evan@653
    70
	gboolean reverse;       /**< TRUE if the separator should be found
Evan@653
    71
							  starting a the end of the string, FALSE
Evan@653
    72
							  otherwise                                 */
Evan@653
    73
Evan@653
    74
} PurpleAccountUserSplit;
Evan@653
    75
Evan@653
    76
#ifdef __cplusplus
Evan@653
    77
extern "C" {
Evan@653
    78
#endif
Evan@653
    79
Evan@653
    80
/**************************************************************************/
Evan@653
    81
/** @name Account Option API                                              */
Evan@653
    82
/**************************************************************************/
Evan@653
    83
/*@{*/
Evan@653
    84
Evan@653
    85
/**
Evan@653
    86
 * Creates a new account option.  If you know what @a type will be in advance,
Evan@653
    87
 * consider using purple_account_option_bool_new(),
Evan@653
    88
 * purple_account_option_int_new(), purple_account_option_string_new() or
Evan@653
    89
 * purple_account_option_list_new() (as appropriate) instead.
Evan@653
    90
 *
Evan@653
    91
 * @param type      The type of option.
Evan@653
    92
 * @param text      The text of the option.
Evan@653
    93
 * @param pref_name The account preference name for the option.
Evan@653
    94
 *
Evan@653
    95
 * @return The account option.
Evan@653
    96
 */
Evan@653
    97
PurpleAccountOption *purple_account_option_new(PurplePrefType type,
Evan@653
    98
	const char *text, const char *pref_name);
Evan@653
    99
Evan@653
   100
/**
Evan@653
   101
 * Creates a new boolean account option.
Evan@653
   102
 *
Evan@653
   103
 * @param text          The text of the option.
Evan@653
   104
 * @param pref_name     The account preference name for the option.
Evan@653
   105
 * @param default_value The default value.
Evan@653
   106
 *
Evan@653
   107
 * @return The account option.
Evan@653
   108
 */
Evan@653
   109
PurpleAccountOption *purple_account_option_bool_new(const char *text,
Evan@653
   110
	const char *pref_name, gboolean default_value);
Evan@653
   111
Evan@653
   112
/**
Evan@653
   113
 * Creates a new integer account option.
Evan@653
   114
 *
Evan@653
   115
 * @param text          The text of the option.
Evan@653
   116
 * @param pref_name     The account preference name for the option.
Evan@653
   117
 * @param default_value The default value.
Evan@653
   118
 *
Evan@653
   119
 * @return The account option.
Evan@653
   120
 */
Evan@653
   121
PurpleAccountOption *purple_account_option_int_new(const char *text,
Evan@653
   122
	const char *pref_name, int default_value);
Evan@653
   123
Evan@653
   124
/**
Evan@653
   125
 * Creates a new string account option.
Evan@653
   126
 *
Evan@653
   127
 * @param text          The text of the option.
Evan@653
   128
 * @param pref_name     The account preference name for the option.
Evan@653
   129
 * @param default_value The default value.
Evan@653
   130
 *
Evan@653
   131
 * @return The account option.
Evan@653
   132
 */
Evan@653
   133
PurpleAccountOption *purple_account_option_string_new(const char *text,
Evan@653
   134
	const char *pref_name, const char *default_value);
Evan@653
   135
Evan@653
   136
/**
Evan@653
   137
 * Creates a new list account option.
Evan@653
   138
 *
Evan@653
   139
 * The list passed will be owned by the account option, and the
Evan@653
   140
 * strings inside will be freed automatically.
Evan@653
   141
 *
Evan@653
   142
 * The list is a list of #PurpleKeyValuePair items. The key is the label that
Evan@653
   143
 * should be displayed to the user, and the <tt>(const char *)</tt> value is
Evan@653
   144
 * the internal ID that should be passed to purple_account_set_string() to
Evan@653
   145
 * choose that value.
Evan@653
   146
 *
Evan@653
   147
 * @param text      The text of the option.
Evan@653
   148
 * @param pref_name The account preference name for the option.
Evan@653
   149
 * @param list      The key, value list.
Evan@653
   150
 *
Evan@653
   151
 * @return The account option.
Evan@653
   152
 */
Evan@653
   153
PurpleAccountOption *purple_account_option_list_new(const char *text,
Evan@653
   154
	const char *pref_name, GList *list);
Evan@653
   155
Evan@653
   156
/**
Evan@653
   157
 * Destroys an account option.
Evan@653
   158
 *
Evan@653
   159
 * @param option The option to destroy.
Evan@653
   160
 */
Evan@653
   161
void purple_account_option_destroy(PurpleAccountOption *option);
Evan@653
   162
Evan@653
   163
/**
Evan@653
   164
 * Sets the default boolean value for an account option.
Evan@653
   165
 *
Evan@653
   166
 * @param option The account option.
Evan@653
   167
 * @param value  The default boolean value.
Evan@653
   168
 */
Evan@653
   169
void purple_account_option_set_default_bool(PurpleAccountOption *option,
Evan@653
   170
										  gboolean value);
Evan@653
   171
Evan@653
   172
/**
Evan@653
   173
 * Sets the default integer value for an account option.
Evan@653
   174
 *
Evan@653
   175
 * @param option The account option.
Evan@653
   176
 * @param value  The default integer value.
Evan@653
   177
 */
Evan@653
   178
void purple_account_option_set_default_int(PurpleAccountOption *option,
Evan@653
   179
										 int value);
Evan@653
   180
Evan@653
   181
/**
Evan@653
   182
 * Sets the default string value for an account option.
Evan@653
   183
 *
Evan@653
   184
 * @param option The account option.
Evan@653
   185
 * @param value  The default string value.
Evan@653
   186
 */
Evan@653
   187
void purple_account_option_set_default_string(PurpleAccountOption *option,
Evan@653
   188
											const char *value);
Evan@653
   189
Evan@653
   190
/**
Evan@653
   191
 * Sets the masking for an account option. Setting this to %TRUE acts
Evan@653
   192
 * as a hint to the UI that the option's value should be obscured from
Evan@653
   193
 * view, like a password.
Evan@653
   194
 *
Evan@653
   195
 * @param option The account option.
Evan@653
   196
 * @param masked The masking.
Evan@653
   197
 */
Evan@653
   198
void
Evan@653
   199
purple_account_option_set_masked(PurpleAccountOption *option, gboolean masked);
Evan@653
   200
Evan@653
   201
/**
Evan@653
   202
 * Sets the list values for an account option.
Evan@653
   203
 *
Evan@653
   204
 * The list passed will be owned by the account option, and the
Evan@653
   205
 * strings inside will be freed automatically.
Evan@653
   206
 *
Evan@653
   207
 * The list is in key, value pairs. The key is the ID stored and used
Evan@653
   208
 * internally, and the value is the label displayed.
Evan@653
   209
 *
Evan@653
   210
 * @param option The account option.
Evan@653
   211
 * @param values The default list value.
Evan@653
   212
 */
Evan@653
   213
void purple_account_option_set_list(PurpleAccountOption *option, GList *values);
Evan@653
   214
Evan@653
   215
/**
Evan@653
   216
 * Adds an item to a list account option.
Evan@653
   217
 *
Evan@653
   218
 * @param option The account option.
Evan@653
   219
 * @param key    The key.
Evan@653
   220
 * @param value  The value.
Evan@653
   221
 */
Evan@653
   222
void purple_account_option_add_list_item(PurpleAccountOption *option,
Evan@653
   223
									   const char *key, const char *value);
Evan@653
   224
Evan@653
   225
/**
Evan@653
   226
 * Returns the specified account option's type.
Evan@653
   227
 *
Evan@653
   228
 * @param option The account option.
Evan@653
   229
 *
Evan@653
   230
 * @return The account option's type.
Evan@653
   231
 */
Evan@653
   232
PurplePrefType purple_account_option_get_type(const PurpleAccountOption *option);
Evan@653
   233
Evan@653
   234
/**
Evan@653
   235
 * Returns the text for an account option.
Evan@653
   236
 *
Evan@653
   237
 * @param option The account option.
Evan@653
   238
 *
Evan@653
   239
 * @return The account option's text.
Evan@653
   240
 */
Evan@653
   241
const char *purple_account_option_get_text(const PurpleAccountOption *option);
Evan@653
   242
Evan@653
   243
/**
Evan@653
   244
 * Returns the name of an account option.  This corresponds to the @c pref_name
Evan@653
   245
 * parameter supplied to purple_account_option_new() or one of the
Evan@653
   246
 * type-specific constructors.
Evan@653
   247
 *
Evan@653
   248
 * @param option The account option.
Evan@653
   249
 *
Evan@653
   250
 * @return The option's name.
Evan@653
   251
 */
Evan@653
   252
const char *purple_account_option_get_setting(const PurpleAccountOption *option);
Evan@653
   253
Evan@653
   254
/**
Evan@653
   255
 * Returns the default boolean value for an account option.
Evan@653
   256
 *
Evan@653
   257
 * @param option The account option.
Evan@653
   258
 *
Evan@653
   259
 * @return The default boolean value.
Evan@653
   260
 */
Evan@653
   261
gboolean purple_account_option_get_default_bool(const PurpleAccountOption *option);
Evan@653
   262
Evan@653
   263
/**
Evan@653
   264
 * Returns the default integer value for an account option.
Evan@653
   265
 *
Evan@653
   266
 * @param option The account option.
Evan@653
   267
 *
Evan@653
   268
 * @return The default integer value.
Evan@653
   269
 */
Evan@653
   270
int purple_account_option_get_default_int(const PurpleAccountOption *option);
Evan@653
   271
Evan@653
   272
/**
Evan@653
   273
 * Returns the default string value for an account option.
Evan@653
   274
 *
Evan@653
   275
 * @param option The account option.
Evan@653
   276
 *
Evan@653
   277
 * @return The default string value.
Evan@653
   278
 */
Evan@653
   279
const char *purple_account_option_get_default_string(
Evan@653
   280
	const PurpleAccountOption *option);
Evan@653
   281
Evan@653
   282
/**
Evan@653
   283
 * Returns the default string value for a list account option.
Evan@653
   284
 *
Evan@653
   285
 * @param option The account option.
Evan@653
   286
 *
Evan@653
   287
 * @return The default list string value.
Evan@653
   288
 */
Evan@653
   289
const char *purple_account_option_get_default_list_value(
Evan@653
   290
	const PurpleAccountOption *option);
Evan@653
   291
Evan@653
   292
/**
Evan@653
   293
 * Returns whether an option's value should be masked from view, like a
Evan@653
   294
 * password.  If so, the UI might display each character of the option
Evan@653
   295
 * as a '*' (for example).
Evan@653
   296
 *
Evan@653
   297
 * @param option The account option.
Evan@653
   298
 *
Evan@653
   299
 * @return %TRUE if the option's value should be obscured.
Evan@653
   300
 */
Evan@653
   301
gboolean
Evan@653
   302
purple_account_option_get_masked(const PurpleAccountOption *option);
Evan@653
   303
Evan@653
   304
/**
Evan@653
   305
 * Returns the list values for an account option.
Evan@653
   306
 *
Evan@653
   307
 * @param option The account option.
Evan@653
   308
 *
Evan@653
   309
 * @constreturn A list of #PurpleKeyValuePair, mapping the human-readable
Evan@653
   310
 *              description of the value to the <tt>(const char *)</tt> that
Evan@653
   311
 *              should be passed to purple_account_set_string() to set the
Evan@653
   312
 *              option.
Evan@653
   313
 */
Evan@653
   314
GList *purple_account_option_get_list(const PurpleAccountOption *option);
Evan@653
   315
Evan@653
   316
/*@}*/
Evan@653
   317
Evan@653
   318
Evan@653
   319
/**************************************************************************/
Evan@653
   320
/** @name Account User Split API                                          */
Evan@653
   321
/**************************************************************************/
Evan@653
   322
/*@{*/
Evan@653
   323
Evan@653
   324
/**
Evan@653
   325
 * Creates a new account username split.
Evan@653
   326
 *
Evan@653
   327
 * @param text          The text of the option.
Evan@653
   328
 * @param default_value The default value.
Evan@653
   329
 * @param sep           The field separator.
Evan@653
   330
 *
Evan@653
   331
 * @return The new user split.
Evan@653
   332
 */
Evan@653
   333
PurpleAccountUserSplit *purple_account_user_split_new(const char *text,
Evan@653
   334
												  const char *default_value,
Evan@653
   335
												  char sep);
Evan@653
   336
Evan@653
   337
/**
Evan@653
   338
 * Destroys an account username split.
Evan@653
   339
 *
Evan@653
   340
 * @param split The split to destroy.
Evan@653
   341
 */
Evan@653
   342
void purple_account_user_split_destroy(PurpleAccountUserSplit *split);
Evan@653
   343
Evan@653
   344
/**
Evan@653
   345
 * Returns the text for an account username split.
Evan@653
   346
 *
Evan@653
   347
 * @param split The account username split.
Evan@653
   348
 *
Evan@653
   349
 * @return The account username split's text.
Evan@653
   350
 */
Evan@653
   351
const char *purple_account_user_split_get_text(const PurpleAccountUserSplit *split);
Evan@653
   352
Evan@653
   353
/**
Evan@653
   354
 * Returns the default string value for an account split.
Evan@653
   355
 *
Evan@653
   356
 * @param split The account username split.
Evan@653
   357
 *
Evan@653
   358
 * @return The default string.
Evan@653
   359
 */
Evan@653
   360
const char *purple_account_user_split_get_default_value(
Evan@653
   361
		const PurpleAccountUserSplit *split);
Evan@653
   362
Evan@653
   363
/**
Evan@653
   364
 * Returns the field separator for an account split.
Evan@653
   365
 *
Evan@653
   366
 * @param split The account username split.
Evan@653
   367
 *
Evan@653
   368
 * @return The field separator.
Evan@653
   369
 */
Evan@653
   370
char purple_account_user_split_get_separator(const PurpleAccountUserSplit *split);
Evan@653
   371
Evan@653
   372
/**
Evan@653
   373
 * Returns the 'reverse' value for an account split.
Evan@653
   374
 *
Evan@653
   375
 * @param split The account username split.
Evan@653
   376
 *
Evan@653
   377
 * @return The 'reverse' value.
Evan@653
   378
 */
Evan@653
   379
gboolean purple_account_user_split_get_reverse(const PurpleAccountUserSplit *split);
Evan@653
   380
Evan@653
   381
/**
Evan@653
   382
 * Sets the 'reverse' value for an account split.
Evan@653
   383
 *
Evan@653
   384
 * @param split   The account username split.
Evan@653
   385
 * @param reverse The 'reverse' value
Evan@653
   386
 */
Evan@653
   387
void purple_account_user_split_set_reverse(PurpleAccountUserSplit *split, gboolean reverse);
Evan@653
   388
Evan@653
   389
/*@}*/
Evan@653
   390
Evan@653
   391
#ifdef __cplusplus
Evan@653
   392
}
Evan@653
   393
#endif
Evan@653
   394
Evan@653
   395
#endif /* _PURPLE_ACCOUNTOPT_H_ */