[vlc-devel] commit: dialog_Login: simple replacement for intf_UserLoginPassword ( Rémi Denis-Courmont )
git version control
git at videolan.org
Sat Mar 7 19:56:28 CET 2009
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat Mar 7 20:56:01 2009 +0200| [b47ec4014eeebe33064d2e154d7ae679f7f0c22f] | committer: Rémi Denis-Courmont
dialog_Login: simple replacement for intf_UserLoginPassword
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b47ec4014eeebe33064d2e154d7ae679f7f0c22f
---
include/vlc_dialog.h | 15 +++++++++++++++
src/interface/dialog.c | 48 ++++++++++++++++++++++++++++++++++++++++++++----
src/libvlccore.sym | 1 +
3 files changed, 60 insertions(+), 4 deletions(-)
diff --git a/include/vlc_dialog.h b/include/vlc_dialog.h
index 9758243..7f06843 100644
--- a/include/vlc_dialog.h
+++ b/include/vlc_dialog.h
@@ -64,6 +64,21 @@ void dialog_FatalWait (vlc_object_t *obj, const char *title,
#define dialog_FatalWait(o, t, ...) \
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_Unregister, (vlc_object_t *) );
#define dialog_Register(o) dialog_Register(VLC_OBJECT(o))
diff --git a/src/interface/dialog.c b/src/interface/dialog.c
index 29a0466..7763b8c 100644
--- a/src/interface/dialog.c
+++ b/src/interface/dialog.c
@@ -92,6 +92,15 @@ static vlc_object_t *dialog_GetProvider (vlc_object_t *obj)
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,
const char *fmt, va_list ap)
{
@@ -108,11 +117,42 @@ void dialog_VFatal (vlc_object_t *obj, bool modal, const char *title,
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;
- dialog_fatal_t dialog = { title, text, modal, };
- var_SetAddress (provider, "dialog-fatal", &dialog);
- free (text);
+ dialog_login_t dialog = { title, text, username, password, };
+ var_SetAddress (provider, "dialog-login", &dialog);
vlc_object_release (provider);
}
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index 9892b39..2e1c19e 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -102,6 +102,7 @@ decode_URI_duplicate
demux_PacketizerDestroy
demux_PacketizerNew
demux_vaControlHelper
+dialog_Login
dialog_Register
dialog_Unregister
dialog_VFatal
More information about the vlc-devel
mailing list