## McpAccountManager

McpAccountManager — Object representing the account manager, implemented by Mission Control

## Functions

void | mcp_account_manager_set_value ()
void | mcp_account_manager_set_attribute ()
void | mcp_account_manager_set_parameter ()
gchar * | mcp_account_manager_get_value ()
gboolean | mcp_account_manager_parameter_is_secret ()
void | mcp_account_manager_parameter_make_secret ()
gchar * | mcp_account_manager_get_unique_name ()
GStrv | mcp_account_manager_list_keys ()
gchar * | mcp_account_manager_escape_value_for_keyfile ()
gchar * | mcp_account_manager_escape_variant_for_keyfile ()
gboolean | mcp_account_manager_unescape_value_from_keyfile ()
gboolean | mcp_account_manager_init_value_for_attribute ()

## Object Hierarchy

        GInterface
        ╰── McpAccountManager

## Includes

    #include <mission-control-plugins/mission-control-plugins.h>

## Description

This object represents the Telepathy AccountManager.

Most virtual methods on the McpAccountStorageIface interface receive an object provided by Mission Control that implements this interface. It can be used to manipulate Mission Control's in-memory cache of accounts.

Only Mission Control should implement this interface.

## Functions

### mcp_account_manager_set_value ()

    void
    mcp_account_manager_set_value (const McpAccountManager *mcpa,
                                   const gchar *account,
                                   const gchar *key,
                                   const gchar *value);

Inform Mission Control that `key` has changed its value to `value` .

This function may either be called from `mcp_account_storage_get()`, or just before emitting “altered-one”.

New plugins should call `mcp_account_manager_set_attribute()` or `mcp_account_manager_set_parameter()` instead.

#### Parameters

mcpa | an McpAccountManager instance |
account | the unique name of an account |
key | the setting whose value we wish to change: either an attribute like "DisplayName", or "param-" plus a parameter like "account" |
value | the new value, escaped as if for a GKeyFile, or `NULL` to delete the setting/parameter |

### mcp_account_manager_set_attribute ()

    void
    mcp_account_manager_set_attribute (const McpAccountManager *mcpa,
                                       const gchar *account,
                                       const gchar *attribute,
                                       GVariant *value,
                                       McpAttributeFlags flags);

Inform Mission Control that `attribute` has changed its value to `value` .

If `value` is a floating reference, Mission Control will take ownership of it, much like `g_variant_builder_add_value()`.

This function may either be called from `mcp_account_storage_get()`, or just before emitting “altered-one”.

#### Parameters

mcpa | an McpAccountManager instance |
account | the unique name of an account |
attribute | the name of an attribute, such as "DisplayName" |
value | the new value, or `NULL` to delete the attribute. | [allow-none]
flags | flags for the new value (only used if `value` is non-`NULL`) |

### mcp_account_manager_set_parameter ()

    void
    mcp_account_manager_set_parameter (const McpAccountManager *mcpa,
                                       const gchar *account,
                                       const gchar *parameter,
                                       GVariant *value,
                                       McpParameterFlags flags);

Inform Mission Control that `parameter` has changed its value to `value` .

If `value` is a floating reference, Mission Control will take ownership of it, much like `g_variant_builder_add_value()`.

This function may either be called from `mcp_account_storage_get()`, or just before emitting “altered-one”.

#### Parameters

mcpa | an McpAccountManager instance |
account | the unique name of an account |
parameter | the name of a parameter, such as "account", without the "param-" prefix |
value | the new value, or `NULL` to delete the parameter. | [allow-none]
flags | flags for the new value (only used if `value` is non-`NULL`) |

### mcp_account_manager_get_value ()

    gchar *
    mcp_account_manager_get_value (const McpAccountManager *mcpa,
                                   const gchar *account,
                                   const gchar *key);

Fetch a copy of the current value of an account setting held by the account manager.

#### Parameters

mcpa | an McpAccountManager instance |
account | the unique name of an account |
key | the setting whose value we wish to fetch: either an attribute like "DisplayName", or "param-" plus a parameter like "account" |

#### Returns

the value of `key` .

[transfer full]

### mcp_account_manager_parameter_is_secret ()

    gboolean
    mcp_account_manager_parameter_is_secret
                                   (const McpAccountManager *mcpa,
                                    const gchar *account,
                                    const gchar *key);

Determine whether a given account parameter is secret. Generally this is determined by MC and passed down to plugins, but any McpAccountStorage plugin may decide a parameter is secret, in which case the return value for this call will indicate that fact too.

For historical reasons, this function only operates on parameters, but requires its argument to be prefixed with "param-".

#### Parameters

mcpa | an McpAccountManager instance |
account | the unique name of an account |
key | the constant string "param-", plus a parameter name like "account" or "password" |

#### Returns

`TRUE` for secret settings, `FALSE` otherwise

### mcp_account_manager_parameter_make_secret ()

    void
    mcp_account_manager_parameter_make_secret
                                   (const McpAccountManager *mcpa,
                                    const gchar *account,
                                    const gchar *key);

Flag an account setting as secret for the lifetime of this McpAccountManager. For instance, this should be called if `key` has been retrieved from gnome-keyring.

For historical reasons, this function only operates on parameters, but requires its argument to be prefixed with "param-".

#### Parameters

mcpa | an McpAccountManager instance |
account | the unique name of an account |
key | the constant string "param-", plus a parameter name like "account" or "password" |

### mcp_account_manager_get_unique_name ()

    gchar *
    mcp_account_manager_get_unique_name (McpAccountManager *mcpa,
                                         const gchar *manager,
                                         const gchar *protocol,
                                         const GHashTable *params);

Generate and return the canonical unique name of this [new] account. Should not be called for accounts which have already had a name assigned: Intended for use when a plugin encounters an account which MC has not previously seen before (ie one created by a 3rd party in the back-end that the plugin in question provides an interface to).

#### Parameters

mcpa | an McpAccountManager instance |
manager | the name of the manager |
protocol | the name of the protocol |
params | A gchar * / GValue * hash table of account parameters. |

#### Returns

the newly allocated account name, which should be freed once the caller is done with it.

### mcp_account_manager_list_keys ()

    GStrv
    mcp_account_manager_list_keys (const McpAccountManager *mcpa,
                                   const gchar *account);

### mcp_account_manager_escape_value_for_keyfile ()

    gchar *
    mcp_account_manager_escape_value_for_keyfile
                                   (const McpAccountManager *mcpa,
                                    const GValue *value);

### mcp_account_manager_escape_variant_for_keyfile ()

    gchar *
    mcp_account_manager_escape_variant_for_keyfile
                                   (const McpAccountManager *mcpa,
                                    GVariant *variant);

Escape `variant` so it could be passed to `g_key_file_set_value()`. For instance, escaping the boolean value TRUE returns "true", and escaping the string value containing one space returns "\s".

It is a programming error to use an unsupported type. The supported types are currently `G_VARIANT_TYPE_STRING`, `G_VARIANT_TYPE_BOOLEAN`, `G_VARIANT_TYPE_INT32`, `G_VARIANT_TYPE_UINT32`, `G_VARIANT_TYPE_INT64`, `G_VARIANT_TYPE_UINT64`, `G_VARIANT_TYPE_BYTE`, `G_VARIANT_TYPE_STRING_ARRAY`, `G_VARIANT_TYPE_OBJECT_PATH` and `G_VARIANT_TYPE_OBJECT_PATH_ARRAY`.

#### Parameters

mcpa | a McpAccountManager |
variant | a GVariant with a supported GVariantType |

#### Returns

the escaped form of `variant` .

[transfer full]

### mcp_account_manager_unescape_value_from_keyfile ()

    gboolean
    mcp_account_manager_unescape_value_from_keyfile
                                   (const McpAccountManager *mcpa,
                                    const gchar *escaped,
                                    GValue *value,
                                    GError **error);

Attempt to interpret `escaped` as a value of `value` 's type. If successful, put it in `value` and return `TRUE`.

It is a programming error to try to escape an unsupported type. The supported types are currently `G_TYPE_STRING`, `G_TYPE_BOOLEAN`, `G_TYPE_INT`, `G_TYPE_UINT`, `G_TYPE_INT64`, `G_TYPE_UINT64`, `G_TYPE_UCHAR`, `G_TYPE_STRV`, `DBUS_TYPE_G_OBJECT_PATH` and `TP_ARRAY_TYPE_OBJECT_PATH_LIST`.

#### Parameters

mcpa | a McpAccountManager |
escaped | an escaped string as returned by `g_key_file_get_value()` |
value | a value to populate, with a supported GType |
error | used to raise an error if `FALSE` is returned |

#### Returns

`TRUE` if `value` was filled in

### mcp_account_manager_init_value_for_attribute ()

    gboolean
    mcp_account_manager_init_value_for_attribute
                                   (const McpAccountManager *mcpa,
                                    GValue *value,
                                    const gchar *attribute);

If `attribute` is a known Mission Control attribute, initialize `value` with an appropriate type for `attribute` and return `TRUE`. Otherwise, return `FALSE`.

#### Parameters

mcpa | a McpAccountManager |
value | a zero-filled value to initialize |
attribute | a supported Mission Control attribute |

#### Returns

`TRUE` if `value` was initialized

## See Also

McpAccountStorage