From 4db8257a88e991b8d84d1bdce3119eaa3558b544 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
Date: Sun, 14 May 2006 12:41:40 +0000
Subject: [PATCH] * first implementation of a widget-free
 authentication-dialogue (core and OSX only, refs #553)

---
 .../English.lproj/Interaction.nib/classes.nib |  11 +++++-
 .../English.lproj/Interaction.nib/info.nib    |   6 +--
 .../Interaction.nib/keyedobjects.nib          | Bin 4988 -> 8501 bytes
 include/vlc_interaction.h                     |  16 +++++---
 modules/access/http.c                         |   5 ++-
 modules/gui/macosx/interaction.h              |  12 ++++++
 modules/gui/macosx/interaction.m              |  34 ++++++++++++++++
 src/interface/interaction.c                   |  37 +++++-------------
 8 files changed, 81 insertions(+), 40 deletions(-)

diff --git a/extras/MacOSX/Resources/English.lproj/Interaction.nib/classes.nib b/extras/MacOSX/Resources/English.lproj/Interaction.nib/classes.nib
index 25c8f22925fd..1c88a82d039d 100644
--- a/extras/MacOSX/Resources/English.lproj/Interaction.nib/classes.nib
+++ b/extras/MacOSX/Resources/English.lproj/Interaction.nib/classes.nib
@@ -2,10 +2,19 @@
     IBClasses = (
         {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 
         {
-            ACTIONS = {cancelAndClose = id; }; 
+            ACTIONS = {cancelAndClose = id; okayAndClose = id; }; 
             CLASS = VLCInteraction; 
             LANGUAGE = ObjC; 
             OUTLETS = {
+                "o_auth_cancel_btn" = id; 
+                "o_auth_description" = id; 
+                "o_auth_login_fld" = id; 
+                "o_auth_login_txt" = id; 
+                "o_auth_ok_btn" = id; 
+                "o_auth_pw_fld" = id; 
+                "o_auth_pw_txt" = id; 
+                "o_auth_title" = id; 
+                "o_auth_win" = id; 
                 "o_prog_bar" = id; 
                 "o_prog_cancel_btn" = id; 
                 "o_prog_description" = id; 
diff --git a/extras/MacOSX/Resources/English.lproj/Interaction.nib/info.nib b/extras/MacOSX/Resources/English.lproj/Interaction.nib/info.nib
index 8ebe9a610390..1948872518da 100644
--- a/extras/MacOSX/Resources/English.lproj/Interaction.nib/info.nib
+++ b/extras/MacOSX/Resources/English.lproj/Interaction.nib/info.nib
@@ -3,14 +3,14 @@
 <plist version="1.0">
 <dict>
 	<key>IBDocumentLocation</key>
-	<string>103 27 356 240 0 0 1440 878 </string>
+	<string>97 142 356 240 0 0 1440 878 </string>
 	<key>IBFramework Version</key>
 	<string>443.0</string>
 	<key>IBOpenObjects</key>
 	<array>
-		<integer>5</integer>
+		<integer>55</integer>
 	</array>
 	<key>IBSystem Version</key>
-	<string>8H14</string>
+	<string>8I127</string>
 </dict>
 </plist>
diff --git a/extras/MacOSX/Resources/English.lproj/Interaction.nib/keyedobjects.nib b/extras/MacOSX/Resources/English.lproj/Interaction.nib/keyedobjects.nib
index caa145399be68f2f553bde81854ff67da0ca2ac9..6d5426a777288f7dceca048dfd0a04dc33883ad9 100644
GIT binary patch
literal 8501
zcmc&(d3;k<_CNRD>}`^l_2mV`Qc6WAwHu|SEZta2p%en8K%u5>gh)tAl9tWlRS|Ik
z6>-CjeQ_DYQDh%vTo4guQ9uzH#t~=48E1Zu<DjFz^WIAr9A<v=`{(y-K26?xIrr@6
zd(ORSXbuHq@vN+qK!5@R4QN3JdN55%^G6$J1zQ8r+BAHN1tZ~!Y4J#NZCa$^=0IaS
zRxenqe3gL(fu@oKp&iK5HOIgJ#_1KMnJQV6Kknybn{Wn_AQ`e@0OZ497y>0Q9HxLD
zBG3Y@uoUis`{4n22%dtc;ThNfo8UQk9=5?RVK?l7U%~6}J{*S+;6peAAHk>aIb4Jv
z;2(q#N*K`)14$yu#6~<sA}ORNNhjBl3{pnQ$#7CZ#*%6>nM@;fWCp1xHxfT-A^~zU
znN7kZMi!D=35Oq$&oXj1SwS8qkC3OyGh_`}OE!@g$#(J*d711W2g%#yFf1j<$Z2v0
zrJN@h$rsAHugTxYca%{BHPU2iqjoA$FYQTFX$HJP`_oLCPYY==Euo`mg{lJ`O)F_N
z9ZzfMWLih3(+1i|XVD-H(+G{z7P^owqW9AW=|;MfnCLt72z{3xrSH)r$nkwrPLI*!
z`1}Ofj?Yfg)ATH(tPi`M^=18FHOpZASth%IWwC6Q!*bypmd6ILd^V63utGM76|uo=
z2pncZ*)UejN?0i?W94i(8^K1hQLK_xvGJ4A!Y!fDr-B{KU;!%#U;{fizzHsJg9sjw
zzzf}=J6r=j;95w5o{$Q?APss$I$Q^R;Cko_{U8JSLnhn+SxUx?Q?sYWA8H9;4oOwM
zlE%hBEEa4ChJx`0Wsz_gvnvu+^Q$c6kHrEpm3nHGZ(Oh`hB+6TR^_Ym&j~2k)2n<5
zGWnZ-W+|^x8Pur^+GPt>zM3Ek4h1F$!%dNSv6{3-S)R;LRRfb=zEec0tMD#ifhtV=
znf_fA91%qg=S8Bkam|QGI6l@N_RkDNry#$;{5TTURQV=EB60o%|A24fFY+h(FZe0G
zo$L5%Zs1Sx$N7g`%Rv~&>2dUU4&*`}8m<^CtHd>&&8QhuRuPT|qW;D>YI__8LID)Q
zpjy?GKy0dd5k~rTFbIlfAcK}zJTgZ$qqg0idO@ftEsHcp{2h89hoLBT7!;%96XhIR
z!}Y3+QYc#wWl#=9=+&_;aX-4z7l==)^5MI>as<?F6KpUNMnMIPhDsO%W1$MhK{bqr
z3E+c?FbQg4GB@%byf@G01$-2*<UT%?-_7sk%lZBMLH-bbm_N#kPr_7~hT7D@beIA4
zkcCby55(fZuwS-&a+Pn4zabDpb9|AOXk&nzcz1pcr>CF+8ledSa1*Yc3A6BZGt7n%
z%z?0yka9341Y*sRa8n?P?)9}a2coUPz&zxsxB>$<JS>~ngxp(4g#0sO7`d`QD8!TS
zm29*T;N7_SBs8P2CKNLl^F0P}bepfGL1q=>!#MB~URp1>7cI&jn30m5o7a|+vM8@0
zAFl_twVj4}Fdr7cLRf?hZh<yf47UP@+tA)SU<uq=FW9PlrT)g*Goz7~a8p?%6p^)^
zh}tXHs3mIN9Er+eF@58Ka6FO8@n|GegIdVBgIX&VV9+|QbGV(0+{!KJG_PGlegwNv
z41gKoTM&x}=A_8kn<7g(3CrMa)bAd+7w&`QumT<73oZ=chn$e;pPLl!sU_6_T;MjF
z!GnsAX=w~L`A0_m=;HpRkx-MGLJz{qb+8hOaJ4Mq16TzQ!z1u03U~}2ht==|Jc&VQ
zH&ywR#mKtL=KGrcjRDMqGVC#-$V{aqT-+(>xP!ZERNd<uku%z_EI0vckiQ$&!a9ZX
z<XORZpfW2nU;QftfpNF0+eTQm4)rPOs?=uKqAJBD?vZ7nhZ5{N!q6__1zALC7PRww
z5w>rD?eG$&V3Cq`@`@3`K&VL$16ov~)USM_D)2JAvI$;+9q=mbgk4aSh_$k$uD2R^
z<pu*Uhg*)ZjAu%iJMy_MQr{en%&d<G<Dr1ccrWZ*5Bp%htcMfh7Hk;Tf?r}5C6E^p
z0v~qVc2?d2culT6el1UvOY5{!T5n*+zlp{57W!2#uEX#S9D#S?D7=T7H3yY^z?2;8
zpRXV&npz(9&l~HHM}za_0ul^7wO8>JQ2uOM;3>S<F=Td(_f!==0VmhNNhm@l)yPI(
zS1-7*j0!SR2IQ+%l$Vi`lhxLyE;t3JH^6DtZS{f!m!S)y*kdZfO~FP#HkYXhw>0>p
zo#uTEXBG3(dDg!|jtdHMd<MT$D*rkozk&BrN;<a?mC4SLmC4S+%iNr{wol*-_<f?J
z{{UaYB{b?QEbTvHasLUv#@AoqWB3OC3g5!t;5+y`T!!!4r>fy|TY|0r5Ed~e8D>Wa
zAs(SFP%#I42u7&1B_5B273b#E3wE?I5DiAqJf#`nO00`6Gz!~xlJY>vzd&(J2U|IV
zWWeD4d0%{8&(j4WNRFTIZ|UvDKk-cAkUb57foIqa7^s>uf4DIa>Iw%x!g7ScepvDv
zXI<BVuO8n`2@BB@-A1A#dbJ2J4^;i+l%I|X-Fc^y8;NNnF}0^ZLW@d(aFPgKqoPB7
zLp<COLt-WtC5AbC;J=6=ajNJ~L?wo~MuhG>HJ=cc3p!Cb4?}oWR3_cYHN>o<GMAAv
zpAX<U+*@xW%s0m$3Z?uUHdFq;AIo6#f2CDNQjk=TlcINONftH(IWv;GW2z>i*A$2~
zMuW|A^X?2^A9B4CzCu1y4&PbQpJb97NEXQ^IV6|lkpUzh++-kpLkdVC8AOW6U^0XZ
zg;}JSln`vM*d*0q&KF-03XJu~W-F<$K9k#LFgz1+X>2eo_bn_E^_z(@K6czG6BZ_@
z`rQPaNAbqj7!3r%@{PRSKVM$oK_lZXKAt>LsYt|X`GLYlpuC(H@xgo$FXO{`lD&C8
zdSe71S}%AOEy~RrfXG#tB?HHRoGf`3$Zl(^Z3nF5WCWT!l8i#$nK4AZ@JuWORV_Y5
zt&`EDay_XeV-kI(eH3da_9+)Cqbf3LqO6#_6h}KU9%?thbj;-g@G<uO97OhXUaYdM
zB~#XuDP*cLF(#OnM5F!%*pZb_>>h~087YNV>aMPy4m;Pk129508m5?-otKA~1p^D(
z+NLhb$<CEAv#_mR@Gi>D%*)Ct$O-hzmC>{FMul|JKpNMPM%hFJ!$imebDBeli0xQD
zFW8w#kVR&aS!fjH6?`;L#~e`6q68<WP$U)@q^cPrbJmkNYA<xPw>@=SNHoKa+(eem
zWEP1c%L&MG%+Cf(6317o+8)RPJ{Dh9a(fupF%^<UkV)Dg&Tqs~a7p_psKop~?i=Jb
zxo?mqB-*8KERp*LAFlv+H6Oz>dB%(@t?g>Wy=cU8G-3)GG4X0fJeV+Im14vs*@zmY
z$K~YwuX-GLRMB-cS^iJD)+)MA<`ZRICyc8cZ?22X_Ah7;PKUZ=9a*p7!8E??f5wB&
zWDD6!o+Zzb=P?#C9&F=F`E)*m*YP{~U1-h-UawSLUKVCvPOdUL<PN}$%o&i|);6Q0
zB|ZzApgbbTTdDTi!)j43v3lAI=T)fPN_LW6WH;GE_L6;MKUt2c;pYJ!<YC^*7jll)
zjp4;t^Y9yq4s=NIaD&`|8ap-yIoYaO+5diHK#r1~U0RTpH=%Uz)uf$FNIRuSyGfQd
zvqM^Tey6m5*YG|eyShlr=d;k#t4jNAB6~hpq}?oM4<aybdXx#NP-(CK$%I6HuVl|9
zvb#(6C=(K&qhwDAJ&oCOHH-f%Vez+$4iVYnW;KIlfX!BP$jz3+jxGL7=f;ct9Vay0
zdXdZIdz5~e>_J9%P(rEFSLCrZ*0}@Yb9o#!$>3ol_bQXps<}Uw;Lb^d$5b6V8LFY$
z#HJy}qw1!?5yy7i$*AkrgqoCnLpJUkx-fyw)Y7r@Xpxyrky$7Uui^meQXN1&iUa1!
z4#1JQedn2{1|g>qossu1XB^st?7br73oxy{HDe+(gW*AE<k6q@>awrSkpYmV)9Yl>
z^m^Kt_ERRzanT?y@P|4NEo5lCg|`{`t$Z<Gq<GdBXl#iF<RL}b(J0fH42=0o)A)}<
zwXZ!?9bs9BVNp<?4x|O^Xn}h4A)oK~=J}g(kAF4K4NiD&nBuwHWY68+F&wIG8avj%
zcieEY{|d+5fmq<3QjLP~FsNzJ6@9Z4eXx!B5r68twlT7kj#co_&+n1(4|j74jk25T
zM9C=iDO6+leKM6YAuDuOn~-<WDGG6buTY6`AXA91I*{$5^$K;EKcG?z32NML2gCI@
zg_=6m*h>QnZ7W}SHQKm*e2_TAA<OA(g?1ueCDTq%aE;8qa-82s=PG0i`6FG)n&(|9
zc|V<}ka7Ol&&W`yGV0J<=n6cGLNu9$XuXR>F-AD}V1*wbeK65KM*LofDZCR=B?-|x
zfY{BIktmEqQ6Z*&I^y{>%nCnWt!C8&Wa>J3JW~0uRQbn|n>-2NOWqAD?^*IY{%6S&
zkVB!8TXGr5$4BxzRo=(qrz`>a<8Ved$s7gjFjvzzE1|Kh@71)W34Il9Wp29^Zge-@
zL-*2sbU*zSJwRWh2kEcr>+}u!CVh(@qHpu3`7?YCU(46=^?U>0$T#uLd<);opXJZ-
z=lKhKHBP)8b(-7tCL6cs>JBYC8~3LjMA_NdUCDCBXXBXN<=eUu!BF73SjxD0VdZQz
z!9(@I2Xw_+vJWjx_~Z=U(|&wW`~4@fRlV?ttcvWzbH!OOiuA!@b~H?uBaG2TpF;)u
zz8bsbc$kEdu7L>{_vP5n<kQHHF#|>_Cy|vHZ68XSit*@yF}fDdBOg_=AgIKpH%8`e
zjQ+iNBH4;(lFM;io``uOpID}2&o?Tkl?4gS7*jN38m47Bre_9bWG0rxl9`!Vn3W04
z#_Y_&oXo}COk^G=F)!=Jy0dFo4|Xj}VLe$Y>&4PoZ<fwq;=klC^H=x|{wm+eck$hP
z58uo8@%{W)`~ZKAALPI0uk$zfoBS<)h`-Gb^LO|W{w_bt-{bG|WBfQj!B6tlf?gOd
z3=>8Ose)E83TZ->P$m=$gN1=YFQGsfDHI8#gfYTUVXROglnR4{bfH`@2}6XQ!f2sV
z=&i(rRY2_;d6R%y#m3MTYuYUym$=3QXf}cQ)-j)gxD}=9L324C(&0}-68=DtfxiO{
zLidlyU^Kx^v>X0X5~7RgYWh5V6%+Cp{fb^jM>)|2S@;V@Eo)*?b_=_M-O27^ce8uh
za&|v^kUhj6W{<MR*%Rz3_6%Fg*0YUlGkcNkW&7Cy_8vRUe#0)YKWji^)O6SM)?{h2
zHMyF>nleqbrbbh*S)y60S*E#1bDw5~<^j!0%__|!n#VM&HBV}u)~wO2(`?Xe(rnS}
z(!8a4Pjg!Hk>;%CoaVgdA6l!no3@v>zcybxL_17dqAk;wYe#A;w3XUA?M!V@J6k(P
z8__P)Zq@G7zO6l>J*T~-{Z6OV>2*e3lFqEN>TEi<uA44XH%vD|H&$1po2HwttJgK?
zT6MSTmgw%)t<i1Ky{vmp_nz*U?u70G-6`D}-Fe+ty32a1x9A1EUEfWgq933is4vtP
z>4)g6_0#n?>KpX4^>O`D{X_aE^;`9?=nv|T=uhZB)nC&8RsVy*VMsOP8U`2!8VU_X
zhC0JdhPj5t25z|Bu*9&`aKB-tVU^(#!xM(544Vwk8Fm<s8crF`8@@FXquuB<x{V&A
z*ErBvXe=@gF%C5r8%vGTj1L&s8DBBJZaibWX#Bg$YO<LeCYMPxNv3Y5YfR~;KBm5=
z8%)`zeA5t9m8se^!8FO#U}`i4OkvXk(^Ata(^IA`rtPLTOdpy~n?5p~HJvkkZ~BMn
zrzDa@lQc=Xq#jAbl1h@wl7=UZOsYt#OrDV3m^>@_=HyUvBzZ~l!^w{(Kc4(V@>9u2
zlP@HHll-GO+3Yo6XU;PZHCLJ^nf>NQbHF^)95l~1&oM{LbIq;h`R0Y@hs{r$H=DPc
zcboT`-!LCBpEF-He{KG&`EM4m7%fQ_v&Cw$Ssa$`mR^<|%OJ~m%T$ZsvcR&$vexpf
zWt-)o<z34;%X!NM%V(C)E#Fy*)nHArW?OTu1FQqBh1MEtt#zuk&N|&%Z}nTF*0{CR
zI^Vj``jGXI^|1Ab^{DlI>v8Kz>xb6gS--V@XT5Cw!TO`nO}Iw57K<$vOEVn{H7>LY
z^M!@NEy7}f3%3h*3U>*sgpI;xVXN?*@PcqoI4@ifJ`+9{z7YN(ToV2$d~Hjzd2PLH
zy=|GcEL)*%jIGL6ZJS`5XsfZ++NRp-Y%^>(+S+Wl+HSMmVOwHbYFlPoYddIr-S(#K
zknOPTi0!EDOWRkrKiU3l`-|-x+qZVBJ<FbB&$H*-3+#jJgY8r7)9lmj_4XU>4fZB`
zoBbvG%k~}io%Y@Kz4ra~1NKkspW1(8|E>Kq`{(vA9K@0C7~~l280si?lsd{C!yO|X
z)s9Jyn;juX*wO5WI+i&ec0A@-?bznn?)atS700WN*Bs{@=N%UupE-W#xaj!3lRA4j
zdpoalUhnMZ?C-q6neUwDoa>A^Tb%Qp3!Dp`w>TF&xpS5CdFL_b3FimSQ_eHakDX_o
z=bRUvmz>|bJT9-RyQ_!mT31h3FISPP&NahzqpQKy<hsc<%N2Fq?ONs9=-TYs>Uz%g
zf@`<y9oM_A_gu$ZCtMd@-?=WkesKNh2Di(d?(XC6>&|dzx=Y*>+!Nh3?ppU$_Z;_P
zH+SFeUgBQrUgh5C-t6A$e$M@Zdyo5w`>6YU_i^`0_XYQtq9EEur|1?vqF3xL_7GFV
zR549V7yF2P#SAf1%o20NJaLFvDprckVpNQat>S!fp?Hh9SmfgE;u3MGxJ<l9yiZ&q
zJ|M0XSBX!F2gHNo>*AZ@A@Q(yL_8|KFCG_9iXV!n#gD|Z;yLlWctQNqWAO+cyT|Eq
zdpsVmr@N<zC&iQMN%N$8`gr<!GCY}{EYA?nXwM{1lV`3c=DE$Y!t<DCt!IO0lV^)(
zyXR%k4$n@{Ym!MymMoGW*(ImsmOPSI>Mr$=QlwNVO-h&gNPVRYDO1Xla-=*dUn-CW
zNrR=KQn6Gjl}jU}QPOB>j8r96OB1AN(gtahv_*PWdS3d4^rG~V^s=-=+9~ap_DcJu
z1JXh1b?Hs%kaSo&A{~|9mySy(r4Oak(nr!+>6~<4x*&ZfeJ*_={Xx1U{ZaZ_`iu09
z^sV%rbXodA`q2ws>eYC4UW3=<P4-&6g4gbKdfi@+*X!->?cq)Frh3!7>E1rxzTOP)
m0B^pxz+2)i^_F|bdaJzE-YMQ0>TeO0s-JA4`q}>Oo%7#PyW=1L

delta 2607
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
R!26RV-;7nhx$eo%{2TCHx`O}!

diff --git a/include/vlc_interaction.h b/include/vlc_interaction.h
index 1085cfdc6487..d77c80bae708 100644
--- a/include/vlc_interaction.h
+++ b/include/vlc_interaction.h
@@ -5,6 +5,7 @@
  * $Id$
  *
  * Authors: Clément Stenac <zorglub@videolan.org>
+ *          Felix Kühne <fkuehne@videolan.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -52,6 +53,8 @@ struct interaction_dialog_t
     char           *psz_title;          ///< Title
     char           *psz_description;    ///< Descriptor string
 
+    char           *psz_returned[1];    ///< returned responses from the user
+
     int             i_widgets;          ///< Number of dialog widgets
     user_widget_t **pp_widgets;         ///< Dialog widgets
 
@@ -70,12 +73,13 @@ struct interaction_dialog_t
 /**
  * Possible flags . Reusable and button types
  */
-#define DIALOG_REUSABLE      0x01
-#define DIALOG_OK_CANCEL     0x02
-#define DIALOG_YES_NO        0x04
-#define DIALOG_YES_NO_CANCEL 0x04
-#define DIALOG_CLEAR_NOSHOW  0x08
-#define DIALOG_GOT_ANSWER    0x10
+#define DIALOG_REUSABLE             0x01
+#define DIALOG_OK_CANCEL            0x02
+#define DIALOG_YES_NO               0x04
+#define DIALOG_YES_NO_CANCEL        0x04
+#define DIALOG_CLEAR_NOSHOW         0x08
+#define DIALOG_GOT_ANSWER           0x10
+#define DIALOG_LOGIN_PW_OK_CANCEL   0x20
 
 /**
  * Possible return codes
diff --git a/modules/access/http.c b/modules/access/http.c
index 8eed91920158..71bdcb011a48 100644
--- a/modules/access/http.c
+++ b/modules/access/http.c
@@ -290,8 +290,9 @@ connect:
         char *psz_login = NULL; char *psz_password = NULL;
         int i_ret;
         msg_Dbg( p_access, "authentication failed" );
-        i_ret = intf_UserLoginPassword( p_access, "HTTP authentication",
-                         "Please enter a valid login and password.", &psz_login, &psz_password );
+        i_ret = intf_UserLoginPassword( p_access, _("HTTP authentication"),
+                        _("Please enter a valid login name and a password."), 
+                                                &psz_login, &psz_password );
         if( i_ret == DIALOG_OK_YES )
         {
             msg_Dbg( p_access, "retrying with user=%s, pwd=%s",
diff --git a/modules/gui/macosx/interaction.h b/modules/gui/macosx/interaction.h
index 018af7330a7a..444b1300156f 100644
--- a/modules/gui/macosx/interaction.h
+++ b/modules/gui/macosx/interaction.h
@@ -38,12 +38,24 @@
     IBOutlet id o_prog_title;
     IBOutlet id o_prog_win;
 
+    /* authentication dialogue */
+    IBOutlet id o_auth_cancel_btn;
+    IBOutlet id o_auth_description;
+    IBOutlet id o_auth_login_fld;
+    IBOutlet id o_auth_login_txt;
+    IBOutlet id o_auth_ok_btn;
+    IBOutlet id o_auth_pw_fld;
+    IBOutlet id o_auth_pw_txt;
+    IBOutlet id o_auth_title;
+    IBOutlet id o_auth_win;
+
     interaction_dialog_t * p_dialog;
     intf_thread_t * p_intf;
     BOOL nib_interact_loaded;
 }
 
 - (IBAction)cancelAndClose:(id)sender;
+- (IBAction)okayAndClose:(id)sender;
 
 -(id)initDialog: (interaction_dialog_t *)_p_dialog;
 -(void)runDialog;
diff --git a/modules/gui/macosx/interaction.m b/modules/gui/macosx/interaction.m
index ce694b4dcfe2..a65d8fe2e632 100644
--- a/modules/gui/macosx/interaction.m
+++ b/modules/gui/macosx/interaction.m
@@ -120,6 +120,10 @@
         nib_interact_loaded = [NSBundle loadNibNamed:@"Interaction" owner:self];
         [o_prog_cancel_btn setTitle: _NS("Cancel")];
         [o_prog_bar setUsesThreadedAnimation: YES];
+        [o_auth_login_txt setStringValue: _NS("Login:")];
+        [o_auth_pw_txt setStringValue: _NS("Password:")];
+        [o_auth_cancel_btn setTitle: _NS("Cancel")];
+        [o_auth_ok_btn setTitle: _NS("OK")];
     }
 
     NSString *o_title = [NSString stringWithUTF8String:p_dialog->psz_title ? p_dialog->psz_title : "title"];
@@ -177,6 +181,17 @@
                 o_window, self,@selector(sheetDidEnd: returnCode: contextInfo:),\
                 NULL, nil, o_description );
         }
+        else if( p_dialog->i_flags & DIALOG_LOGIN_PW_OK_CANCEL )
+        {
+            msg_Dbg( p_intf, "requested flag: DIALOG_LOGIN_PW_OK_CANCEL" );
+            [o_auth_title setStringValue: o_title];
+            [o_auth_description setStringValue: o_description];
+            [o_auth_login_fld setStringValue: @""];
+            [o_auth_pw_fld setStringValue: @""];
+            [NSApp beginSheet: o_auth_win modalForWindow: o_window \
+                modalDelegate: self didEndSelector: nil contextInfo: nil];
+            [o_auth_win makeKeyWindow];
+        }
         else if( p_dialog->i_type & WIDGET_PROGRESS )
         {
             msg_Dbg( p_intf, "requested type: WIDGET_PROGRESS" );
@@ -244,6 +259,11 @@
         [NSApp endSheet: o_prog_win];
         [o_prog_win close];
     }
+    if( p_dialog->i_flags & DIALOG_LOGIN_PW_OK_CANCEL )
+    {
+        [NSApp endSheet: o_auth_win];
+        [o_auth_win close];
+    }
 }
 
 -(void)destroyDialog
@@ -261,4 +281,18 @@
     msg_Dbg( p_intf, "dialog cancelled" );
 }
 
+- (IBAction)okayAndClose:(id)sender
+{
+    msg_Dbg( p_intf, "dialog's okay btn pressed, returning values" );
+    vlc_mutex_lock( &p_dialog->p_interaction->object_lock );
+    if( p_dialog->i_flags == DIALOG_LOGIN_PW_OK_CANCEL )
+    {
+        p_dialog->psz_returned[0] = strdup( [[o_auth_login_fld stringValue] UTF8String] );
+        p_dialog->psz_returned[1] = strdup( [[o_auth_pw_fld stringValue] UTF8String] );
+    }
+    p_dialog->i_return = DIALOG_OK_YES;
+    p_dialog->i_status = ANSWERED_DIALOG;
+    vlc_mutex_unlock( &p_dialog->p_interaction->object_lock );
+}
+
 @end
diff --git a/src/interface/interaction.c b/src/interface/interaction.c
index 78ab63ab98dc..76472110020c 100644
--- a/src/interface/interaction.c
+++ b/src/interface/interaction.c
@@ -5,6 +5,7 @@
  * $Id$
  *
  * Authors: Clément Stenac <zorglub@videolan.org>
+ *          Felix Kühne <fkuehne@videolan.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -406,47 +407,24 @@ int __intf_UserLoginPassword( vlc_object_t *p_this,
                               char **ppsz_login,
                               char **ppsz_password )
 {
+
     int i_ret;
     interaction_dialog_t *p_new = NULL;
-    user_widget_t *p_widget = NULL;
 
     INTERACT_INIT( p_new );
 
     p_new->i_type = INTERACT_DIALOG_TWOWAY;
     p_new->psz_title = strdup( psz_title );
+    p_new->psz_description = strdup( psz_description );
 
-    /* Text */
-    p_widget = (user_widget_t* )malloc( sizeof( user_widget_t ) );
-    p_widget->i_type = WIDGET_TEXT;
-    p_widget->psz_text = strdup( psz_description );
-    p_widget->val.psz_string = NULL;
-    INSERT_ELEM ( p_new->pp_widgets, p_new->i_widgets,
-                  p_new->i_widgets,  p_widget );
-
-    /* Login */
-    p_widget = (user_widget_t* )malloc( sizeof( user_widget_t ) );
-    p_widget->i_type = WIDGET_INPUT_TEXT;
-    p_widget->psz_text = strdup( _("Login") );
-    p_widget->val.psz_string = NULL;
-    INSERT_ELEM ( p_new->pp_widgets, p_new->i_widgets,
-                  p_new->i_widgets,  p_widget );
-
-    /* Password */
-    p_widget = (user_widget_t* )malloc( sizeof( user_widget_t ) );
-    p_widget->i_type = WIDGET_INPUT_TEXT;
-    p_widget->psz_text = strdup( _("Password") );
-    p_widget->val.psz_string = NULL;
-    INSERT_ELEM ( p_new->pp_widgets, p_new->i_widgets,
-                  p_new->i_widgets,  p_widget );
-
-    p_new->i_flags = DIALOG_OK_CANCEL;
+    p_new->i_flags = DIALOG_LOGIN_PW_OK_CANCEL;
 
     i_ret = intf_Interact( p_this, p_new );
 
     if( i_ret != DIALOG_CANCELLED )
     {
-        *ppsz_login = strdup( p_new->pp_widgets[1]->val.psz_string );
-        *ppsz_password = strdup( p_new->pp_widgets[2]->val.psz_string );
+        *ppsz_login = strdup( p_new->psz_returned[0] );
+        *ppsz_password = strdup( p_new->psz_returned[1] );
     }
     return i_ret;
 }
@@ -671,6 +649,9 @@ static void intf_InteractionDialogDestroy( interaction_dialog_t *p_dialog )
     }
     FREE( p_dialog->psz_title );
     FREE( p_dialog->psz_description );
+    
+    FREE( p_dialog->psz_returned[0] );
+    FREE( p_dialog->psz_returned[1] );
 
     free( p_dialog );
 }
-- 
GitLab