From 5d04943cbd4190513343beffa30e71d31801b052 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
Date: Sun, 14 May 2006 14:36:08 +0000
Subject: [PATCH] * new dialogue type to prompt the user for a string * the
 core is widget-free now (except for the header to keep wx compiling,
 hopefully) * updated the OSX-implementation to reflect the recent changes

more clean up is necessary; testing and any feedback is welcomed

refs #553
---
 .../English.lproj/Interaction.nib/classes.nib |   6 +
 .../English.lproj/Interaction.nib/info.nib    |   1 +
 .../Interaction.nib/keyedobjects.nib          | Bin 8501 -> 10669 bytes
 include/vlc_interaction.h                     |   4 +
 modules/gui/macosx/interaction.h              |   8 ++
 modules/gui/macosx/interaction.m              |  53 +++++----
 src/interface/interaction.c                   | 104 +++++++++++-------
 7 files changed, 114 insertions(+), 62 deletions(-)

diff --git a/extras/MacOSX/Resources/English.lproj/Interaction.nib/classes.nib b/extras/MacOSX/Resources/English.lproj/Interaction.nib/classes.nib
index 1c88a82d039d..e384c091c36b 100644
--- a/extras/MacOSX/Resources/English.lproj/Interaction.nib/classes.nib
+++ b/extras/MacOSX/Resources/English.lproj/Interaction.nib/classes.nib
@@ -15,6 +15,12 @@
                 "o_auth_pw_txt" = id; 
                 "o_auth_title" = id; 
                 "o_auth_win" = id; 
+                "o_input_cancel_btn" = id; 
+                "o_input_description" = id; 
+                "o_input_fld" = id; 
+                "o_input_ok_btn" = id; 
+                "o_input_title" = id; 
+                "o_input_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 1948872518da..cd510a34d2ca 100644
--- a/extras/MacOSX/Resources/English.lproj/Interaction.nib/info.nib
+++ b/extras/MacOSX/Resources/English.lproj/Interaction.nib/info.nib
@@ -8,6 +8,7 @@
 	<string>443.0</string>
 	<key>IBOpenObjects</key>
 	<array>
+		<integer>79</integer>
 		<integer>55</integer>
 	</array>
 	<key>IBSystem Version</key>
diff --git a/extras/MacOSX/Resources/English.lproj/Interaction.nib/keyedobjects.nib b/extras/MacOSX/Resources/English.lproj/Interaction.nib/keyedobjects.nib
index 6d5426a777288f7dceca048dfd0a04dc33883ad9..926546adf28b12c6ec3a90c5fd2f32c916d45d99 100644
GIT binary patch
literal 10669
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

delta 5350
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
Nl75w+)kkye{{Y_}(%b+5

diff --git a/include/vlc_interaction.h b/include/vlc_interaction.h
index 25aeb6dfd454..36ec30c0ae99 100644
--- a/include/vlc_interaction.h
+++ b/include/vlc_interaction.h
@@ -83,6 +83,7 @@ struct interaction_dialog_t
 #define DIALOG_GOT_ANSWER           0x10
 #define DIALOG_LOGIN_PW_OK_CANCEL   0x20
 #define DIALOG_USER_PROGRESS        0x40
+#define DIALOG_PSZ_INPUT_OK_CANCEL      0x80
 
 /**
  * Possible return codes
@@ -176,6 +177,9 @@ VLC_EXPORT( int, __intf_UserProgress,( vlc_object_t*, const char*, const char*,
 #define intf_UserProgressUpdate( a, b, c, d ) __intf_UserProgressUpdate( VLC_OBJECT(a),b,c, d )
 VLC_EXPORT( void, __intf_UserProgressUpdate,( vlc_object_t*, int, const char*, float) );
 
+#define intf_UserStringInput( a, b, c, d ) __intf_UserStringInput( VLC_OBJECT(a),b,c,d )
+VLC_EXPORT( int, __intf_UserStringInput,(vlc_object_t*, const char*, const char*, char **) );
+
 #define intf_UserHide( a, b ) __intf_UserHide( VLC_OBJECT(a), b )
 VLC_EXPORT( void, __intf_UserHide,( vlc_object_t *, int ));
 
diff --git a/modules/gui/macosx/interaction.h b/modules/gui/macosx/interaction.h
index 444b1300156f..12f21c616b48 100644
--- a/modules/gui/macosx/interaction.h
+++ b/modules/gui/macosx/interaction.h
@@ -49,6 +49,14 @@
     IBOutlet id o_auth_title;
     IBOutlet id o_auth_win;
 
+    /* string input dialogue */
+    IBOutlet id o_input_cancel_btn;
+    IBOutlet id o_input_description;
+    IBOutlet id o_input_fld;
+    IBOutlet id o_input_ok_btn;
+    IBOutlet id o_input_title;
+    IBOutlet id o_input_win;
+
     interaction_dialog_t * p_dialog;
     intf_thread_t * p_intf;
     BOOL nib_interact_loaded;
diff --git a/modules/gui/macosx/interaction.m b/modules/gui/macosx/interaction.m
index 97b90cbdfe39..4a03f9cbd763 100644
--- a/modules/gui/macosx/interaction.m
+++ b/modules/gui/macosx/interaction.m
@@ -110,7 +110,6 @@
 
 -(void)runDialog
 {
-    int i = 0;
     id o_window = NULL;
     if( !p_dialog )
         msg_Err( p_intf, "no available interaction framework" );
@@ -124,6 +123,8 @@
         [o_auth_pw_txt setStringValue: _NS("Password:")];
         [o_auth_cancel_btn setTitle: _NS("Cancel")];
         [o_auth_ok_btn setTitle: _NS("OK")];
+        [o_input_ok_btn setTitle: _NS("OK")];
+        [o_input_cancel_btn setTitle: _NS("Cancel")];
     }
 
     NSString *o_title = [NSString stringWithUTF8String:p_dialog->psz_title ? p_dialog->psz_title : "title"];
@@ -153,33 +154,25 @@
     msg_Dbg( p_intf, "Description: %s", [o_description UTF8String] );
     if( p_dialog->i_id == DIALOG_ERRORS )
     {
-        for( i = 0; i < p_dialog->i_widgets; i++ )
-        {
-            msg_Err( p_intf, "Error: %s", p_dialog->pp_widgets[i]->psz_text );
-        }
+        msg_Err( p_intf, "Error: %s", p_dialog->psz_description );
     }
     else
     {
-        for( i = 0; i < p_dialog->i_widgets; i++ )
-        {
-            msg_Dbg( p_intf, "widget: %s", p_dialog->pp_widgets[i]->psz_text );
-            o_description = [o_description stringByAppendingString: \
-                [NSString stringWithUTF8String: \
-                    p_dialog->pp_widgets[i]->psz_text]];
-        }
         if( p_dialog->i_flags & DIALOG_OK_CANCEL )
         {
             msg_Dbg( p_intf, "requested flag: DIALOG_OK_CANCEL" );
-            NSBeginInformationalAlertSheet( o_title, @"OK" , @"Cancel", nil, \
-                o_window, self,@selector(sheetDidEnd: returnCode: contextInfo:),\
-                NULL, nil, o_description );
+            NSBeginInformationalAlertSheet( o_title, _NS("OK") , _NS("Cancel"),
+                nil, o_window, self,
+                @selector(sheetDidEnd: returnCode: contextInfo:), NULL, nil, 
+                o_description );
         }
         else if( p_dialog->i_flags & DIALOG_YES_NO_CANCEL )
         {
             msg_Dbg( p_intf, "requested flag: DIALOG_YES_NO_CANCEL" );
-            NSBeginInformationalAlertSheet( o_title, @"Yes", @"No", @"Cancel", \
-                o_window, self,@selector(sheetDidEnd: returnCode: contextInfo:),\
-                NULL, nil, o_description );
+            NSBeginInformationalAlertSheet( o_title, _NS("Yes"), _NS("No"),
+                _NS("Cancel"), o_window, self,
+                @selector(sheetDidEnd: returnCode: contextInfo:), NULL, nil, 
+                o_description );
         }
         else if( p_dialog->i_flags & DIALOG_LOGIN_PW_OK_CANCEL )
         {
@@ -188,7 +181,7 @@
             [o_auth_description setStringValue: o_description];
             [o_auth_login_fld setStringValue: @""];
             [o_auth_pw_fld setStringValue: @""];
-            [NSApp beginSheet: o_auth_win modalForWindow: o_window \
+            [NSApp beginSheet: o_auth_win modalForWindow: o_window
                 modalDelegate: self didEndSelector: nil contextInfo: nil];
             [o_auth_win makeKeyWindow];
         }
@@ -198,12 +191,22 @@
             [o_prog_title setStringValue: o_title];
             [o_prog_description setStringValue: o_description];
             [o_prog_bar setDoubleValue: 0];
-            [NSApp beginSheet: o_prog_win modalForWindow: o_window \
+            [NSApp beginSheet: o_prog_win modalForWindow: o_window
                 modalDelegate: self didEndSelector: nil contextInfo: nil];
             [o_prog_win makeKeyWindow];
         }
+        else if( p_dialog->i_flags & DIALOG_PSZ_INPUT_OK_CANCEL )
+        {
+            msg_Dbg( p_intf, "requested flag: DIALOG_STRING_INPUT_OK" );
+            [o_input_title setStringValue: o_title];
+            [o_input_description setStringValue: o_description];
+            [o_input_fld setStringValue: @""];
+            [NSApp beginSheet: o_input_win modalForWindow: o_window
+                modalDelegate: self didEndSelector: nil contextInfo: nil];
+            [o_input_win makeKeyWindow];
+        }
         else
-            msg_Warn( p_intf, "requested dialog type not implemented yet" );
+            msg_Warn( p_intf, "requested dialog type unknown" );
     }
 }
 
@@ -239,7 +242,6 @@
             [NSString stringWithUTF8String: p_dialog->psz_description]];
         [o_prog_bar setDoubleValue: \
             (double)(p_dialog->val.f_float)];
-        msg_Dbg( p_intf, "new value: %f", [o_prog_bar doubleValue] );
 
         if( [o_prog_bar doubleValue] == 100.0 )
         {
@@ -263,6 +265,11 @@
         [NSApp endSheet: o_auth_win];
         [o_auth_win close];
     }
+    if( p_dialog->i_flags & DIALOG_PSZ_INPUT_OK_CANCEL )
+    {
+        [NSApp endSheet: o_input_win];
+        [o_input_win close];
+    }
 }
 
 -(void)destroyDialog
@@ -289,6 +296,8 @@
         p_dialog->psz_returned[0] = strdup( [[o_auth_login_fld stringValue] UTF8String] );
         p_dialog->psz_returned[1] = strdup( [[o_auth_pw_fld stringValue] UTF8String] );
     }
+    else if( p_dialog->i_flags == DIALOG_PSZ_INPUT_OK_CANCEL )
+        p_dialog->psz_returned[0] = strdup( [[o_input_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 );
diff --git a/src/interface/interaction.c b/src/interface/interaction.c
index 466cb14b7f1a..214ce959e448 100644
--- a/src/interface/interaction.c
+++ b/src/interface/interaction.c
@@ -221,12 +221,9 @@ void intf_InteractionManage( playlist_t *p_playlist )
 }
 
 
-
 #define INTERACT_INIT( new )                                            \
         new = (interaction_dialog_t*)malloc(                            \
                         sizeof( interaction_dialog_t ) );               \
-        new->i_widgets = 0;                                             \
-        new->pp_widgets = NULL;                                         \
         new->psz_title = NULL;                                          \
         new->psz_description = NULL;                                    \
         new->p_private = NULL;                                          \
@@ -250,7 +247,6 @@ void __intf_UserFatal( vlc_object_t *p_this,
 {
     va_list args;
     interaction_dialog_t *p_new = NULL;
-    user_widget_t *p_widget = NULL;
     int i_id = DIALOG_ERRORS;
 
     if( i_id > 0 )
@@ -272,20 +268,10 @@ void __intf_UserFatal( vlc_object_t *p_this,
     p_new->i_type = INTERACT_DIALOG_ONEWAY;
     p_new->psz_title = strdup( psz_title );
 
-    p_widget = (user_widget_t* )malloc( sizeof( user_widget_t ) );
-
-    p_widget->i_type = WIDGET_TEXT;
-    p_widget->val.psz_string = NULL;
-
     va_start( args, psz_format );
-    vasprintf( &p_widget->psz_text, psz_format, args );
+    vasprintf( &p_new->psz_description, psz_format, args );
     va_end( args );
 
-    INSERT_ELEM ( p_new->pp_widgets,
-                  p_new->i_widgets,
-                  p_new->i_widgets,
-                  p_widget );
-
     p_new->i_flags |= DIALOG_CLEAR_NOSHOW;
 
     intf_Interact( p_this, p_new );
@@ -303,29 +289,45 @@ int __intf_UserYesNo( vlc_object_t *p_this,
 {
     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 );
+    p_new->i_flags = DIALOG_YES_NO_CANCEL;
 
-    /* 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 );
+    i_ret = intf_Interact( p_this, p_new );
 
-    p_new->i_flags = DIALOG_YES_NO_CANCEL;
+    return i_ret;
+}
+
+/** Helper function to trigger a okay-cancel dialogue
+ *  \param p_this           Parent vlc_object
+ *  \param psz_title        Title for the dialog
+ *  \param psz_description  A description
+ *  \return                 Clicked button code
+ */
+int __intf_UserOkayCancel( vlc_object_t *p_this,
+                      const char *psz_title,
+                      const char *psz_description )
+{
+    int i_ret;
+    interaction_dialog_t *p_new = 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 );
+    p_new->i_flags = DIALOG_OK_CANCEL;
 
     i_ret = intf_Interact( p_this, p_new );
 
     return i_ret;
 }
 
-/** Helper function to make a progressbar box
+/** Helper function to create a dialogue showing a progress-bar with some info
  *  \param p_this           Parent vlc_object
  *  \param psz_title        Title for the dialog
  *  \param psz_status       Current status
@@ -354,7 +356,7 @@ int __intf_UserProgress( vlc_object_t *p_this,
     return p_new->i_id;
 }
 
-/** Update a progress bar
+/** Update a progress bar in a dialogue
  *  \param p_this           Parent vlc_object
  *  \param i_id             Identifier of the dialog
  *  \param psz_status       New status
@@ -388,7 +390,7 @@ void __intf_UserProgressUpdate( vlc_object_t *p_this, int i_id,
     vlc_mutex_unlock( &p_interaction->object_lock) ;
 }
 
-/** Helper function to make a login/password box
+/** Helper function to make a login/password dialogue
  *  \param p_this           Parent vlc_object
  *  \param psz_title        Title for the dialog
  *  \param psz_description  A description
@@ -424,6 +426,39 @@ int __intf_UserLoginPassword( vlc_object_t *p_this,
     return i_ret;
 }
 
+/** Helper function to make a dialogue asking the user for !password string
+ *  \param p_this           Parent vlc_object
+ *  \param psz_title        Title for the dialog
+ *  \param psz_description  A description
+ *  \param ppsz_usersString Returned login
+ *  \return                 Clicked button code
+ */
+int __intf_UserStringInput( vlc_object_t *p_this,
+                              const char *psz_title,
+                              const char *psz_description,
+                              char **ppsz_usersString )
+{
+
+    int i_ret;
+    interaction_dialog_t *p_new = 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 );
+
+    p_new->i_flags = DIALOG_PSZ_INPUT_OK_CANCEL;
+
+    i_ret = intf_Interact( p_this, p_new );
+
+    if( i_ret != DIALOG_CANCELLED )
+    {
+        *ppsz_usersString = strdup( p_new->psz_returned[0] );
+    }
+    return i_ret;
+}
+
 /** Hide an interaction dialog
  * \param p_this the parent vlc object
  * \param i_id the id of the item to hide
@@ -629,24 +664,13 @@ static interaction_dialog_t *intf_InteractionGetById( vlc_object_t* p_this,
 
 static void intf_InteractionDialogDestroy( interaction_dialog_t *p_dialog )
 {
-    int i;
-    for( i = p_dialog->i_widgets - 1 ; i >= 0 ; i-- )
-    {
-        user_widget_t *p_widget = p_dialog->pp_widgets[i];
-        FREE( p_widget->psz_text );
-        if( p_widget->i_type == WIDGET_INPUT_TEXT )
-        {
-            FREE( p_widget->val.psz_string );
-        }
+ /*   FREE( p_dialog->val.psz_string );
 
-        REMOVE_ELEM( p_dialog->pp_widgets, p_dialog->i_widgets, i );
-        free( p_widget );
-    }
     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->psz_returned[1] ); */
 
     free( p_dialog );
 }
-- 
GitLab