From a6817becf30b9e7c4d682e42128a374c8ba49ffc Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Wed, 7 Jul 2010 21:15:08 +0300 Subject: [PATCH] Qt4: fix opening directory with special characters --- modules/gui/qt4/dialogs_provider.cpp | 38 ++++++++++++++++++---------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/modules/gui/qt4/dialogs_provider.cpp b/modules/gui/qt4/dialogs_provider.cpp index f4fccfc0da..8e77ada669 100644 --- a/modules/gui/qt4/dialogs_provider.cpp +++ b/modules/gui/qt4/dialogs_provider.cpp @@ -497,22 +497,34 @@ static void openDirectory( intf_thread_t *p_intf, bool pl, bool go ) { QString dir = QFileDialog::getExistingDirectory( NULL, qtr( I_OP_DIR_WINTITLE ), p_intf->p_sys->filepath ); - if (!dir.isEmpty() ) + if( dir.isEmpty() ) + return; + + QString mrl; + + if( dir.endsWith( "/VIDEO_TS", Qt::CaseInsensitive ) ) + mrl = qfu("dvd://") + toNativeSeparators( dir ); + else { - QString mrl = (dir.endsWith( "VIDEO_TS", Qt::CaseInsensitive ) ? - "dvd://" : "directory://") - + toNativeSeparators( dir ); - input_item_t *p_input = input_item_New( THEPL, qtu( mrl ), NULL ); + char *uri = make_URI( qtu( dir ), "directory" ); + if( unlikely(uri == NULL) ) + return; + mrl = qfu(uri); + free( uri ); + } - /* FIXME: playlist_AddInput() can fail */ - playlist_AddInput( THEPL, p_input, - go ? ( PLAYLIST_APPEND | PLAYLIST_GO ) : PLAYLIST_APPEND, + input_item_t *p_input = input_item_New( THEPL, qtu( mrl ), NULL ); + if( unlikely( p_input == NULL ) ) + return; + + /* FIXME: playlist_AddInput() can fail */ + playlist_AddInput( THEPL, p_input, + go ? ( PLAYLIST_APPEND | PLAYLIST_GO ) : PLAYLIST_APPEND, PLAYLIST_END, pl, pl_Unlocked ); - RecentsMRL::getInstance( p_intf )->addRecent( mrl ); - if( !go ) - input_Read( THEPL, p_input ); - vlc_gc_decref( p_input ); - } + RecentsMRL::getInstance( p_intf )->addRecent( mrl ); + if( !go ) + input_Read( THEPL, p_input ); + vlc_gc_decref( p_input ); } void DialogsProvider::PLOpenDir() -- 2.39.2