Commit c512b811 authored by Thomas Guillem's avatar Thomas Guillem
Browse files

dialog: add dialog_vaLogin (see #16404)

parent 7e421dca
...@@ -83,6 +83,11 @@ VLC_API void dialog_Login(vlc_object_t *, const char *, char **, char **, bool * ...@@ -83,6 +83,11 @@ VLC_API void dialog_Login(vlc_object_t *, const char *, char **, char **, bool *
#define dialog_Login(o, u, p, s, t, v, w, ...) \ #define dialog_Login(o, u, p, s, t, v, w, ...) \
dialog_Login(VLC_OBJECT(o), u, p, s, t, v, w, __VA_ARGS__) dialog_Login(VLC_OBJECT(o), u, p, s, t, v, w, __VA_ARGS__)
VLC_API void dialog_vaLogin(vlc_object_t *, const char *, char **, char **, bool *, const char *, const char *, va_list args);
#define dialog_vaLogin(o, u, p, s, t, v, w, x) \
dialog_vaLogin(VLC_OBJECT(o), u, p, s, t, v, w, x)
/** /**
* A question dialog. * A question dialog.
*/ */
......
...@@ -128,22 +128,10 @@ void dialog_VFatal (vlc_object_t *obj, bool modal, const char *title, ...@@ -128,22 +128,10 @@ void dialog_VFatal (vlc_object_t *obj, bool modal, const char *title,
vlc_object_release (provider); vlc_object_release (provider);
} }
#undef dialog_Login #undef dialog_vaLogin
/** void dialog_vaLogin (vlc_object_t *obj, const char *default_username,
* Requests a username and password through the user interface. char **username, char **password, bool *store,
* @param obj the VLC object requesting credential information const char *title, const char *fmt, va_list ap)
* @param username a pointer to the specified username [OUT]
* @param password a pointer to the specified password [OUT]
* @param title title for the dialog
* @param fmt format string for the message in the dialog
* @return Nothing. If a user name resp. a password was specified,
* it will be returned as a heap-allocated character array
* into the username resp password pointer. Those must be freed with free().
* Otherwise *username resp *password will be NULL.
*/
void dialog_Login (vlc_object_t *obj, const char *default_username,
char **username, char **password,
bool *store, const char *title, const char *fmt, ...)
{ {
assert ((username != NULL) && (password != NULL)); assert ((username != NULL) && (password != NULL));
...@@ -156,9 +144,7 @@ void dialog_Login (vlc_object_t *obj, const char *default_username, ...@@ -156,9 +144,7 @@ void dialog_Login (vlc_object_t *obj, const char *default_username,
return; return;
char *text; char *text;
va_list ap;
va_start (ap, fmt);
if (vasprintf (&text, fmt, ap) != -1) if (vasprintf (&text, fmt, ap) != -1)
{ {
dialog_login_t dialog = { title, text, default_username, username, dialog_login_t dialog = { title, text, default_username, username,
...@@ -166,10 +152,32 @@ void dialog_Login (vlc_object_t *obj, const char *default_username, ...@@ -166,10 +152,32 @@ void dialog_Login (vlc_object_t *obj, const char *default_username,
var_SetAddress (provider, "dialog-login", &dialog); var_SetAddress (provider, "dialog-login", &dialog);
free (text); free (text);
} }
va_end (ap);
vlc_object_release (provider); vlc_object_release (provider);
} }
#undef dialog_Login
/**
* Requests a username and password through the user interface.
* @param obj the VLC object requesting credential information
* @param username a pointer to the specified username [OUT]
* @param password a pointer to the specified password [OUT]
* @param title title for the dialog
* @param fmt format string for the message in the dialog
* @return Nothing. If a user name resp. a password was specified,
* it will be returned as a heap-allocated character array
* into the username resp password pointer. Those must be freed with free().
* Otherwise *username resp *password will be NULL.
*/
void dialog_Login (vlc_object_t *obj, const char *default_username,
char **username, char **password,
bool *store, const char *title, const char *fmt, ...)
{
va_list ap;
va_start (ap, fmt);
dialog_vaLogin (obj, default_username, username, password, store,
title, fmt, ap);
va_end (ap);
}
#undef dialog_Question #undef dialog_Question
/** /**
......
...@@ -96,6 +96,7 @@ demux_vaControl ...@@ -96,6 +96,7 @@ demux_vaControl
demux_vaControlHelper demux_vaControlHelper
dialog_ExtensionUpdate dialog_ExtensionUpdate
dialog_Login dialog_Login
dialog_vaLogin
dialog_ProgressCancelled dialog_ProgressCancelled
dialog_ProgressCreate dialog_ProgressCreate
dialog_ProgressDestroy dialog_ProgressDestroy
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment