vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Wed Feb 8 19:53:53 2012 +0200| [9b247e7c299f53c905278c45bf45545dc4bcd390] | committer: Rémi Denis-Courmont
Qt4: encode disc MRL correctly (fix #5638) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9b247e7c299f53c905278c45bf45545dc4bcd390 --- modules/gui/qt4/components/open_panels.cpp | 48 +++++++++++++-------------- 1 files changed, 23 insertions(+), 25 deletions(-) diff --git a/modules/gui/qt4/components/open_panels.cpp b/modules/gui/qt4/components/open_panels.cpp index 809e08d..b79d621 100644 --- a/modules/gui/qt4/components/open_panels.cpp +++ b/modules/gui/qt4/components/open_panels.cpp @@ -489,16 +489,9 @@ void DiscOpenPanel::updateButtons() #undef setDrive -#if !defined( WIN32 ) && !defined( __OS2__ ) -# define LOCALHOST "" -#else -# define LOCALHOST "/" -#endif - /* Update the current MRL */ void DiscOpenPanel::updateMRL() { - QString mrl; QString discPath; QStringList fileList; @@ -508,56 +501,61 @@ void DiscOpenPanel::updateMRL() discPath = ui.deviceCombo->currentText(); /* MRL scheme */ + const char *scheme; /* DVD */ if( ui.dvdRadioButton->isChecked() ) { if( !ui.dvdsimple->isChecked() ) - mrl = "dvd://" LOCALHOST; + scheme = "dvd"; else - mrl = "dvdsimple://" LOCALHOST; + scheme = "dvdsimple"; } else if ( ui.bdRadioButton->isChecked() ) - mrl = "bluray://" LOCALHOST; + scheme = "bluray"; /* VCD */ else if ( ui.vcdRadioButton->isChecked() ) - mrl = "vcd://" LOCALHOST; + scheme = "vcd"; /* CDDA */ else - mrl = "cdda://" LOCALHOST; + scheme = "cdda"; - mrl += discPath; + char *mrl = make_URI( qtu(discPath), scheme ); + if( unlikely(mrl == NULL) ) + return; /* Title/chapter encoded in MRL */ + QString anchor = ""; if( ui.titleSpin->value() > 0 ) { if( ui.dvdRadioButton->isChecked() || ui.bdRadioButton->isChecked() ) { - mrl += QString("#%1").arg( ui.titleSpin->value() ); + anchor = QString("#%1").arg( ui.titleSpin->value() ); if ( ui.chapterSpin->value() > 0 ) - mrl+= QString(":%1").arg( ui.chapterSpin->value() ); + anchor += QString(":%1").arg( ui.chapterSpin->value() ); } else if ( ui.vcdRadioButton->isChecked() ) - mrl += QString("#%1").arg( ui.titleSpin->value() ); + anchor = QString("#%1").arg( ui.titleSpin->value() ); } emit methodChanged( "disc-caching" ); - fileList << mrl; mrl = ""; + fileList << (qfu(mrl) + anchor); + free(mrl); + + QString opts = ""; /* Input item options */ if ( ui.dvdRadioButton->isChecked() || ui.vcdRadioButton->isChecked() ) { - if ( ui.audioSpin->value() >= 0 ) { - mrl += " :audio-track=" + + if ( ui.audioSpin->value() >= 0 ) + opts += " :audio-track=" + QString("%1").arg( ui.audioSpin->value() ); - } - if ( ui.subtitlesSpin->value() >= 0 ) { - mrl += " :sub-track=" + + if ( ui.subtitlesSpin->value() >= 0 ) + opts += " :sub-track=" + QString("%1").arg( ui.subtitlesSpin->value() ); - } } if( ui.audioCDRadioButton->isChecked() ) { if( ui.titleSpin->value() > 0 ) - mrl += QString(" :cdda-track=%1").arg( ui.titleSpin->value() ); + opts += QString(" :cdda-track=%1").arg( ui.titleSpin->value() ); } - emit mrlUpdated( fileList, mrl ); + emit mrlUpdated( fileList, opts ); } void DiscOpenPanel::browseDevice() _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
