Commit b47ec401 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

dialog_Login: simple replacement for intf_UserLoginPassword

parent d5c12fe6
...@@ -64,6 +64,21 @@ void dialog_FatalWait (vlc_object_t *obj, const char *title, ...@@ -64,6 +64,21 @@ void dialog_FatalWait (vlc_object_t *obj, const char *title,
#define dialog_FatalWait(o, t, ...) \ #define dialog_FatalWait(o, t, ...) \
dialog_FatalWait(VLC_OBJECT(o), t, __VA_ARGS__) dialog_FatalWait(VLC_OBJECT(o), t, __VA_ARGS__)
/**
* A login dialog.
*/
typedef struct dialog_login_t
{
const char *title;
const char *message;
char **username;
char **password;
} dialog_login_t;
VLC_EXPORT( void, dialog_Login, (vlc_object_t *, char **, char **, const char *, const char *) );
#define dialog_Login(o, u, p, t, m) \
dialog_Login(VLC_OBJECT(o), u, p, t, m)
VLC_EXPORT( int, dialog_Register, (vlc_object_t *) ); VLC_EXPORT( int, dialog_Register, (vlc_object_t *) );
VLC_EXPORT( int, dialog_Unregister, (vlc_object_t *) ); VLC_EXPORT( int, dialog_Unregister, (vlc_object_t *) );
#define dialog_Register(o) dialog_Register(VLC_OBJECT(o)) #define dialog_Register(o) dialog_Register(VLC_OBJECT(o))
......
...@@ -92,6 +92,15 @@ static vlc_object_t *dialog_GetProvider (vlc_object_t *obj) ...@@ -92,6 +92,15 @@ static vlc_object_t *dialog_GetProvider (vlc_object_t *obj)
return provider; return provider;
} }
/**
* Sends an error message through the user interface (if any).
* @param obj the VLC object emitting the error
* @param modal whether to wait for user to acknowledge the error
* before returning control to the caller
* @param title title of the error dialog
* @param fmt format string for the error message
* @param ap parameters list for the formatted error message
*/
void dialog_VFatal (vlc_object_t *obj, bool modal, const char *title, void dialog_VFatal (vlc_object_t *obj, bool modal, const char *title,
const char *fmt, va_list ap) const char *fmt, va_list ap)
{ {
...@@ -108,11 +117,42 @@ void dialog_VFatal (vlc_object_t *obj, bool modal, const char *title, ...@@ -108,11 +117,42 @@ void dialog_VFatal (vlc_object_t *obj, bool modal, const char *title,
return; return;
} }
if (vasprintf (&text, fmt, ap) == -1) if (vasprintf (&text, fmt, ap) != -1)
{
dialog_fatal_t dialog = { title, text, modal, };
var_SetAddress (provider, "dialog-fatal", &dialog);
free (text);
}
vlc_object_release (provider);
}
#undef dialog_Login
/**
* Requests a username and password through the user interface.
* @param obj the VLC object requesting credential informations
* @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 text text for 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, char **username, char **password,
const char *title, const char *text)
{
assert ((username != NULL) && (password != NULL));
*username = *password = NULL;
if (obj->i_flags & OBJECT_FLAGS_NOINTERACT)
return;
vlc_object_t *provider = dialog_GetProvider (obj);
if (provider == NULL)
return; return;
dialog_fatal_t dialog = { title, text, modal, }; dialog_login_t dialog = { title, text, username, password, };
var_SetAddress (provider, "dialog-fatal", &dialog); var_SetAddress (provider, "dialog-login", &dialog);
free (text);
vlc_object_release (provider); vlc_object_release (provider);
} }
...@@ -102,6 +102,7 @@ decode_URI_duplicate ...@@ -102,6 +102,7 @@ decode_URI_duplicate
demux_PacketizerDestroy demux_PacketizerDestroy
demux_PacketizerNew demux_PacketizerNew
demux_vaControlHelper demux_vaControlHelper
dialog_Login
dialog_Register dialog_Register
dialog_Unregister dialog_Unregister
dialog_VFatal dialog_VFatal
......
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