]> git.sesse.net Git - vlc/commitdiff
dialog_Login: simple replacement for intf_UserLoginPassword
authorRémi Denis-Courmont <remi@remlab.net>
Sat, 7 Mar 2009 18:56:01 +0000 (20:56 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Sat, 7 Mar 2009 18:56:01 +0000 (20:56 +0200)
include/vlc_dialog.h
src/interface/dialog.c
src/libvlccore.sym

index 9758243b6c83a070d47d3b4569f642c112a782b9..7f06843aa1b38608d9d0803f2931129e32435a3e 100644 (file)
@@ -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))
index 29a0466fa3869988610dad8983838313d4a4f50c..7763b8c4e604f0450da5637b0f58acd93ee1b547 100644 (file)
@@ -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);
 }
index 9892b396252d4b745dd04e78748269630bf323cf..2e1c19ebf991b880cc51491edcbd7c5982c97110 100644 (file)
@@ -102,6 +102,7 @@ decode_URI_duplicate
 demux_PacketizerDestroy
 demux_PacketizerNew
 demux_vaControlHelper
+dialog_Login
 dialog_Register
 dialog_Unregister
 dialog_VFatal