From 4db8257a88e991b8d84d1bdce3119eaa3558b544 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20Paul=20K=C3=BChne?= 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 25c8f22925..1c88a82d03 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 8ebe9a6103..1948872518 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 @@ IBDocumentLocation - 103 27 356 240 0 0 1440 878 + 97 142 356 240 0 0 1440 878 IBFramework Version 443.0 IBOpenObjects - 5 + 55 IBSystem Version - 8H14 + 8I127 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 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 delta 2607 zcmZ`(30PIf6+Y+g^WMEP&!o~AS5zR13y2CXxK_l9Ad3PDBAbdJB#6-vlQ-_WQLoV? zH7=;Q;)c61#x06QrIr|*s7*~8KVxDNtv;6b_=bk-%9tSQO zsm=Fq`pfhxbNazjyAQpx~4vd9-coQbWbeI9NVF}o<6yAqF!D?6o>tG{nhaIpR z4!}t`1!v$aoQDfg17E=v_yz93uW%n8z`x)L0wQW?A;tRWhYhh2`eOuk!LHZ?`=nq$ zjKRSekBOLsLvSdj;xNp>k(iAIScnsm;~aQ~b8((L zJg6M{Lo^J4Kf*wW;e^#omIq#i<)OOo6E|&F-m1wwwvG%3v0B8ycG!Ra98=In05%Fc0Pn!v(NV@URFL z+pD!W=euIp50=4lv3{sE8TJ9pDHF!sp7&S*ANo9a1O5_!k^5!1T-hROaZy21?xd2w zMFmC0e*s^lGEbyFA;A4ELO4XgdMIB9<*)(L>|#BLZi3C_uou@&8+#FTCRX6~45? zNnqGjxK=B~-{5QbyFhSV2=a}PC)3x0qf;WqpPKiiAQ_UFX8E5x~H z$2uBW@DLuYhez<(OUpz@a|@orv-R+-mX&gce;rViQ1$}tz{CF!P$a%8LeqZa2>4$W zgZ1zQlzbIa+0$7c>rmnEL7>8y?QF9}bS*X57@K%AcH#X!8Lwb-Y=JE?00S`yU%^(` z8iT0fcZ^JpO>8&5q&Tl|bV_Vua$aFh z(L^5U)d+iHueI0kk9Pb)&t&eHRWCO)XlqH6j{Y2hrkcQLYpIxE{-K18&4kxEZ(L zR;<8nxE*)kPCkqe=V?5hkKh@6B+ukoJe%k6+-N?E$GCJCaj7nctA#7j)zanf3UD>| zq5T*Jt@cRl;p*sf$WPS1i-v-y@N^lTw$ok?a*G=3CmMShevH-l72d#mQa!1O6e>kX zQBsnWB~6xQOUtCy(gtahv_-0rwo5yuN@7;Z@s*=u1HPYA8 zb?IB_uJl+|WtUuEZYj5wd&vXjBzcIOERU2&%O!HDJWXCCFOiqZ?q%|O@(1z?d8NEv zJ}jS<&&$>FMY%@4B;Qq3rJmA2X`!@H!jw)*xY9-GszfS1mEKB%lCESZnM$^jtGunO zQYw`rN|jQhTvu)@kCZ3MGZj@?RaIRz)p}}6wUgRi?W@M9@oJ(vL`_i()Cp>-Iz?UP zR#&Q<)qUzo^^{tro>kAO7t~AYH|o#o15MF1&Cu#;ep;~BR%@??YGGQGmZ%NYQnXBM ztTtJjqb<=^X>sm6H$py2yqgNFj9}aNE(qQq!|eyL8J`{BYz-KB$^B)DI}E)Cpn~uOeS-Q zO;(Z($2kh^YjkK88@$V2kj@jFK+N4TSlqnjhr(bLh}8SPAUj&P22 zW;t`6rOtWI1mF`J?%(`OI>oC0nYcTf}<7YGA!$g;@Qq z!B(JeLw483Fo9R}%jqY&MU351+O3%}3 zdX;`hZ_u0c4!uk7(Wk5dYseb2rp%wUU;!+MwPL}nEo;w0Ss3fYdazVBoTal2mdUbN zE*s7ASUwxair8yxJe$BKvNzb9>@DVIQ`j^%gUw=d*b-*5ciBp|imhRr*%ns8TI^+q R!26RV-;7nhx$eo%{2TCHx`O}! diff --git a/include/vlc_interaction.h b/include/vlc_interaction.h index 1085cfdc64..d77c80bae7 100644 --- a/include/vlc_interaction.h +++ b/include/vlc_interaction.h @@ -5,6 +5,7 @@ * $Id$ * * Authors: Clément Stenac + * Felix Kühne * * 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 8eed919201..71bdcb011a 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 018af7330a..444b130015 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 ce694b4dcf..a65d8fe2e6 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 78ab63ab98..7647211002 100644 --- a/src/interface/interaction.c +++ b/src/interface/interaction.c @@ -5,6 +5,7 @@ * $Id$ * * Authors: Clément Stenac + * Felix Kühne * * 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 ); } -- 2.39.2