X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fskins2%2Fsrc%2Fdialogs.cpp;h=ee80de2a5ae274dab159c99cbf3dfeb0da077b47;hb=15a6423d9be7811633a2dab3cfdec8745471e094;hp=7ba6829120cadcbfccf43831539641745d0d016a;hpb=cfe22e5485777df42f02a129f9d36882b7ee67f2;p=vlc diff --git a/modules/gui/skins2/src/dialogs.cpp b/modules/gui/skins2/src/dialogs.cpp index 7ba6829120..ee80de2a5a 100644 --- a/modules/gui/skins2/src/dialogs.cpp +++ b/modules/gui/skins2/src/dialogs.cpp @@ -5,7 +5,7 @@ * $Id$ * * Authors: Cyril Deguet - * Olivier Teulière + * Olivier Teulière * * 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 @@ -19,7 +19,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. *****************************************************************************/ #include "dialogs.hpp" @@ -28,7 +28,7 @@ #include "../commands/cmd_quit.hpp" #include "../commands/cmd_playlist.hpp" #include "../commands/cmd_playtree.hpp" - +#include /// Callback called when a new skin is chosen void Dialogs::showChangeSkinCB( intf_dialog_args_t *pArg ) @@ -41,7 +41,7 @@ void Dialogs::showChangeSkinCB( intf_dialog_args_t *pArg ) { // Create a change skin command CmdChangeSkin *pCmd = - new CmdChangeSkin( pIntf, pArg->psz_results[0] ); + new CmdChangeSkin( pIntf, sFromLocale( pArg->psz_results[0] ) ); // Push the command in the asynchronous command queue AsyncQueue *pQueue = AsyncQueue::instance( pIntf ); @@ -57,7 +57,6 @@ void Dialogs::showChangeSkinCB( intf_dialog_args_t *pArg ) } } - void Dialogs::showPlaylistLoadCB( intf_dialog_args_t *pArg ) { intf_thread_t *pIntf = (intf_thread_t *)pArg->p_arg; @@ -66,7 +65,7 @@ void Dialogs::showPlaylistLoadCB( intf_dialog_args_t *pArg ) { // Create a Playlist Load command CmdPlaylistLoad *pCmd = - new CmdPlaylistLoad( pIntf, pArg->psz_results[0] ); + new CmdPlaylistLoad( pIntf, sFromLocale( pArg->psz_results[0] ) ); // Push the command in the asynchronous command queue AsyncQueue *pQueue = AsyncQueue::instance( pIntf ); @@ -97,7 +96,7 @@ static int PopupMenuCB( vlc_object_t *p_this, const char *psz_variable, vlc_value_t old_val, vlc_value_t new_val, void *param ) { Dialogs *p_dialogs = (Dialogs *)param; - p_dialogs->showPopupMenu( new_val.b_bool != 0 ); + p_dialogs->showPopupMenu( new_val.b_bool != 0, INTF_DIALOG_POPUPMENU ); return VLC_SUCCESS; } @@ -116,8 +115,8 @@ Dialogs::~Dialogs() // Detach the dialogs provider from its parent interface vlc_object_detach( m_pProvider ); - module_Unneed( m_pProvider, m_pModule ); - vlc_object_destroy( m_pProvider ); + module_unneed( m_pProvider, m_pModule ); + vlc_object_release( m_pProvider ); } /* Unregister callbacks */ @@ -160,18 +159,15 @@ bool Dialogs::init() { // Allocate descriptor m_pProvider = (intf_thread_t *)vlc_object_create( getIntf(), - VLC_OBJECT_DIALOGS ); + sizeof( intf_thread_t ) ); if( m_pProvider == NULL ) - { - msg_Err( getIntf(), "out of memory" ); return false; - } - m_pModule = module_Need( m_pProvider, "dialogs provider", NULL, 0 ); + m_pModule = module_need( m_pProvider, "dialogs provider", NULL, false ); if( m_pModule == NULL ) { - msg_Err( getIntf(), "No suitable dialogs provider found (hint: compile the wxWidgets plugin, and make sure it is loaded properly)" ); - vlc_object_destroy( m_pProvider ); + msg_Err( getIntf(), "no suitable dialogs provider found (hint: compile the qt4 plugin, and make sure it is loaded properly)" ); + vlc_object_release( m_pProvider ); m_pProvider = NULL; return false; } @@ -199,9 +195,8 @@ void Dialogs::showFileGeneric( const string &rTitle, const string &rExtensions, { if( m_pProvider && m_pProvider->pf_show_dialog ) { - intf_dialog_args_t *p_arg = - (intf_dialog_args_t *)malloc( sizeof(intf_dialog_args_t) ); - memset( p_arg, 0, sizeof(intf_dialog_args_t) ); + intf_dialog_args_t *p_arg = (intf_dialog_args_t*) + calloc( 1, sizeof( intf_dialog_args_t ) ); p_arg->psz_title = strdup( rTitle.c_str() ); p_arg->psz_extensions = strdup( rExtensions.c_str() ); @@ -221,7 +216,7 @@ void Dialogs::showFileGeneric( const string &rTitle, const string &rExtensions, void Dialogs::showChangeSkin() { showFileGeneric( _("Open a skin file"), - _("Skin files (*.vlt;*.wsz)|*.vlt;*.wsz|Skin files (*.xml)|*.xml"), + _("Skin files |*.vlt;*.wsz;*.xml"), showChangeSkinCB, kOPEN ); } @@ -229,24 +224,35 @@ void Dialogs::showChangeSkin() void Dialogs::showPlaylistLoad() { showFileGeneric( _("Open playlist"), - _("All playlists|*.pls;*.m3u;*.asx;*.b4s|M3U files|*.m3u"), + _("Playlist Files|"EXTENSIONS_PLAYLIST"|" + "All Files|*"), showPlaylistLoadCB, kOPEN ); } void Dialogs::showPlaylistSave() { - showFileGeneric( _("Save playlist"), _("M3U file|*.m3u"), + showFileGeneric( _("Save playlist"), _("XSPF playlist|*.xspf|" + "M3U file|*.m3u|" + "HTML playlist|*.html"), showPlaylistSaveCB, kSAVE ); } +void Dialogs::showPlaylist() +{ + if( m_pProvider && m_pProvider->pf_show_dialog ) + { + m_pProvider->pf_show_dialog( m_pProvider, INTF_DIALOG_PLAYLIST, + 0, NULL ); + } +} void Dialogs::showFileSimple( bool play ) { if( m_pProvider && m_pProvider->pf_show_dialog ) { m_pProvider->pf_show_dialog( m_pProvider, INTF_DIALOG_FILE_SIMPLE, - (int)play, 0 ); + (int)play, NULL ); } } @@ -256,7 +262,7 @@ void Dialogs::showFile( bool play ) if( m_pProvider && m_pProvider->pf_show_dialog ) { m_pProvider->pf_show_dialog( m_pProvider, INTF_DIALOG_FILE, - (int)play, 0 ); + (int)play, NULL ); } } @@ -266,7 +272,7 @@ void Dialogs::showDirectory( bool play ) if( m_pProvider && m_pProvider->pf_show_dialog ) { m_pProvider->pf_show_dialog( m_pProvider, INTF_DIALOG_DIRECTORY, - (int)play, 0 ); + (int)play, NULL ); } } @@ -276,7 +282,7 @@ void Dialogs::showDisc( bool play ) if( m_pProvider && m_pProvider->pf_show_dialog ) { m_pProvider->pf_show_dialog( m_pProvider, INTF_DIALOG_DISC, - (int)play, 0 ); + (int)play, NULL ); } } @@ -286,7 +292,7 @@ void Dialogs::showNet( bool play ) if( m_pProvider && m_pProvider->pf_show_dialog ) { m_pProvider->pf_show_dialog( m_pProvider, INTF_DIALOG_NET, - (int)play, 0 ); + (int)play, NULL ); } } @@ -295,7 +301,7 @@ void Dialogs::showMessages() { if( m_pProvider && m_pProvider->pf_show_dialog ) { - m_pProvider->pf_show_dialog( m_pProvider, INTF_DIALOG_MESSAGES, 0, 0 ); + m_pProvider->pf_show_dialog( m_pProvider, INTF_DIALOG_MESSAGES, 0, NULL ); } } @@ -304,7 +310,7 @@ void Dialogs::showPrefs() { if( m_pProvider && m_pProvider->pf_show_dialog ) { - m_pProvider->pf_show_dialog( m_pProvider, INTF_DIALOG_PREFS, 0, 0 ); + m_pProvider->pf_show_dialog( m_pProvider, INTF_DIALOG_PREFS, 0, NULL ); } } @@ -313,7 +319,7 @@ void Dialogs::showFileInfo() { if( m_pProvider && m_pProvider->pf_show_dialog ) { - m_pProvider->pf_show_dialog( m_pProvider, INTF_DIALOG_FILEINFO, 0, 0 ); + m_pProvider->pf_show_dialog( m_pProvider, INTF_DIALOG_FILEINFO, 0, NULL ); } } @@ -322,17 +328,31 @@ void Dialogs::showStreamingWizard() { if( m_pProvider && m_pProvider->pf_show_dialog ) { - m_pProvider->pf_show_dialog( m_pProvider, INTF_DIALOG_WIZARD, 0, 0 ); + m_pProvider->pf_show_dialog( m_pProvider, INTF_DIALOG_WIZARD, 0, NULL ); } } -void Dialogs::showPopupMenu( bool bShow ) +void Dialogs::showPopupMenu( bool bShow, int popupType = INTF_DIALOG_POPUPMENU ) { if( m_pProvider && m_pProvider->pf_show_dialog ) { - m_pProvider->pf_show_dialog( m_pProvider, INTF_DIALOG_POPUPMENU, - (int)bShow, 0 ); + m_pProvider->pf_show_dialog( m_pProvider, popupType, + (int)bShow, NULL ); } } +void Dialogs::showInteraction( interaction_dialog_t *p_dialog ) +{ + intf_dialog_args_t *p_arg = (intf_dialog_args_t *) + calloc( 1, sizeof(intf_dialog_args_t) ); + + p_arg->p_dialog = p_dialog; + p_arg->p_intf = getIntf(); + + if( m_pProvider && m_pProvider->pf_show_dialog ) + { + m_pProvider->pf_show_dialog( m_pProvider, INTF_DIALOG_INTERACTION, + 0, p_arg ); + } +}