X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Finterface%2Finteraction.c;h=78ab63ab98dc9d8b3e1c3fabd77e64650ae8781d;hb=470b47fe952dbba82beca44cafefd4b6ec711384;hp=e0c96b89b8b52d12575b4e91aa01c9f2bf3dc04a;hpb=095cd049a80bce98733be6ffc32ab1c46cd16a67;p=vlc diff --git a/src/interface/interaction.c b/src/interface/interaction.c index e0c96b89b8..78ab63ab98 100644 --- a/src/interface/interaction.c +++ b/src/interface/interaction.c @@ -1,10 +1,10 @@ /***************************************************************************** * interaction.c: User interaction functions ***************************************************************************** - * Copyright (C) 1998-2004 VideoLAN - * $Id: interface.c 10147 2005-03-05 17:18:30Z gbazin $ + * Copyright (C) 2005-2006 VideoLAN + * $Id$ * - * Authors: Clément Stenac + * Authors: Clément Stenac * * 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 @@ -18,7 +18,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ /** @@ -73,6 +73,11 @@ int __intf_Interact( vlc_object_t *p_this, interaction_dialog_t * p_dialog->i_id = ++p_interaction->i_last_id; } + if( p_this->i_flags & OBJECT_FLAGS_NOINTERACT ) + { + return VLC_EGENERIC; + } + p_dialog->p_interaction = p_interaction; p_dialog->p_parent = p_this; @@ -89,6 +94,8 @@ int __intf_Interact( vlc_object_t *p_this, interaction_dialog_t * /** * Destroy the interaction system + * \param The interaction object to destroy + * \return nothing */ void intf_InteractionDestroy( interaction_t *p_interaction ) { @@ -163,7 +170,6 @@ void intf_InteractionManage( playlist_t *p_playlist ) { case ANSWERED_DIALOG: // Ask interface to hide it - msg_Dbg( p_interaction, "Hiding dialog %i", p_dialog->i_id ); p_dialog->i_action = INTERACT_HIDE; val.p_address = p_dialog; if( p_interaction->p_intf ) @@ -176,15 +182,11 @@ void intf_InteractionManage( playlist_t *p_playlist ) if( p_interaction->p_intf ) var_Set( p_interaction->p_intf, "interaction", val ); p_dialog->i_status = SENT_DIALOG; - msg_Dbg( p_interaction, "Updating dialog %i, %i widgets", - p_dialog->i_id, p_dialog->i_widgets ); break; case HIDDEN_DIALOG: if( !(p_dialog->i_flags & DIALOG_GOT_ANSWER) ) break; if( !(p_dialog->i_flags & DIALOG_REUSABLE) ) { - msg_Dbg( p_interaction, "Destroying dialog %i", - p_dialog->i_id ); p_dialog->i_action = INTERACT_DESTROY; val.p_address = p_dialog; if( p_interaction->p_intf ) @@ -192,8 +194,6 @@ void intf_InteractionManage( playlist_t *p_playlist ) } break; case DESTROYED_DIALOG: - msg_Dbg( p_interaction, "Removing dialog %i", - p_dialog->i_id ); // Interface has now destroyed it, remove it REMOVE_ELEM( p_interaction->pp_dialogs, p_interaction->i_dialogs, i_index); @@ -228,6 +228,7 @@ void intf_InteractionManage( playlist_t *p_playlist ) new->pp_widgets = NULL; \ new->psz_title = NULL; \ new->psz_description = NULL; \ + new->p_private = NULL; \ new->i_id = 0; \ new->i_flags = 0; \ new->i_status = NEW_DIALOG; @@ -289,12 +290,10 @@ void __intf_UserFatal( vlc_object_t *p_this, intf_Interact( p_this, p_new ); } -/** Helper function to make a login/password box +/** Helper function to ask a yes-no question * \param p_this Parent vlc_object * \param psz_title Title for the dialog * \param psz_description A description - * \param ppsz_login Returned login - * \param ppsz_password Returned password * \return Clicked button code */ int __intf_UserYesNo( vlc_object_t *p_this, @@ -358,6 +357,7 @@ int __intf_UserProgress( vlc_object_t *p_this, return p_new->i_id; } + /** Update a progress bar * \param p_this Parent vlc_object * \param i_id Identifier of the dialog @@ -378,7 +378,7 @@ void __intf_UserProgressUpdate( vlc_object_t *p_this, int i_id, if( !p_dialog ) { - vlc_mutex_unlock( &p_intearction->object_lock ) ; + vlc_mutex_unlock( &p_interaction->object_lock ) ; return; } @@ -392,12 +392,12 @@ void __intf_UserProgressUpdate( vlc_object_t *p_this, int i_id, vlc_mutex_unlock( &p_interaction->object_lock) ; } - - -/** Helper function to ask a yes-no question +/** Helper function to make a login/password box * \param p_this Parent vlc_object * \param psz_title Title for the dialog * \param psz_description A description + * \param ppsz_login Returned login + * \param ppsz_password Returned password * \return Clicked button code */ int __intf_UserLoginPassword( vlc_object_t *p_this, @@ -513,8 +513,6 @@ static void intf_InteractionInit( playlist_t *p_playlist ) { interaction_t *p_interaction; - msg_Dbg( p_playlist, "initializing interaction system" ); - p_interaction = vlc_object_create( VLC_OBJECT( p_playlist ), sizeof( interaction_t ) ); if( !p_interaction ) @@ -544,7 +542,7 @@ static void intf_InteractionSearchInterface( interaction_t *p_interaction ) p_list = vlc_list_find( p_interaction, VLC_OBJECT_INTF, FIND_ANYWHERE ); if( !p_list ) { - msg_Err( p_interaction, "Unable to create module list" ); + msg_Err( p_interaction, "unable to create module list" ); return; } @@ -562,7 +560,8 @@ static void intf_InteractionSearchInterface( interaction_t *p_interaction ) } /* Add a dialog to the queue and wait for answer */ -static int intf_WaitAnswer( interaction_t *p_interact, interaction_dialog_t *p_dialog ) +static int intf_WaitAnswer( interaction_t *p_interact, + interaction_dialog_t *p_dialog ) { int i; vlc_bool_t b_found = VLC_FALSE; @@ -604,10 +603,12 @@ static int intf_WaitAnswer( interaction_t *p_interact, interaction_dialog_t *p_d } /* Add a dialog to the queue and return */ -static int intf_Send( interaction_t *p_interact, interaction_dialog_t *p_dialog ) +static int intf_Send( interaction_t *p_interact, + interaction_dialog_t *p_dialog ) { int i; vlc_bool_t b_found = VLC_FALSE; + if( p_interact == NULL ) return VLC_ENOOBJ; vlc_mutex_lock( &p_interact->object_lock ); for( i = 0 ; i< p_interact->i_dialogs; i++ )