X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fdialogs%2Fconvert.cpp;h=62cf8401870fa1b5cea9dfc6ca6d994710e7cf21;hb=82d7c41a88adb9fd85d956c949876315871eb138;hp=0e240fff41c8a07703bbab6d178dd092afde5664;hpb=2db381f650ad54b0e87afa5a6e378bb3a00368c7;p=vlc diff --git a/modules/gui/qt4/dialogs/convert.cpp b/modules/gui/qt4/dialogs/convert.cpp index 0e240fff41..62cf840187 100644 --- a/modules/gui/qt4/dialogs/convert.cpp +++ b/modules/gui/qt4/dialogs/convert.cpp @@ -68,28 +68,41 @@ ConvertDialog::ConvertDialog( QWidget *parent, intf_thread_t *_p_intf, destLayout->addWidget( fileSelectButton, 0, 2); BUTTONACT( fileSelectButton, fileBrowse() ); - displayBox = new QCheckBox( qtr( "Display the output" ) ); - displayBox->setToolTip( qtr( "This display the resulting media, but can " - "slow things down." ) ); - destLayout->addWidget( displayBox, 2, 0, 1, -1 ); - - mainLayout->addWidget( destBox, 1, 0, 1, -1 ); + mainLayout->addWidget( destBox, 3, 0, 1, -1 ); /* Profile Editor */ QGroupBox *settingBox = new QGroupBox( qtr( "Settings" ) ); QGridLayout *settingLayout = new QGridLayout( settingBox ); - profile = new VLCProfileSelector( this ); - settingLayout->addWidget( profile, 0, 0, 1, -1 ); + QRadioButton *convertRadio = new QRadioButton( qtr( "Convert" ) ); + dumpRadio = new QRadioButton( qtr( "Dump raw input" ) ); + QButtonGroup *buttonGroup = new QButtonGroup(this); + buttonGroup->addButton( convertRadio ); + buttonGroup->addButton( dumpRadio ); + convertRadio->setChecked( true ); + + settingLayout->addWidget( convertRadio, 1, 0 ); + + QWidget *convertPanel = new QWidget( this ); + QVBoxLayout *convertLayout = new QVBoxLayout( convertPanel ); + + displayBox = new QCheckBox( qtr( "Display the output" ) ); + displayBox->setToolTip( qtr( "This display the resulting media, but can " + "slow things down." ) ); + convertLayout->addWidget( displayBox ); deinterBox = new QCheckBox( qtr( "Deinterlace" ) ); - settingLayout->addWidget( deinterBox, 1, 0 ); + convertLayout->addWidget( deinterBox ); + + profile = new VLCProfileSelector( this ); + convertLayout->addWidget( profile ); - dumpBox = new QCheckBox( qtr( "Dump raw input" ) ); - settingLayout->addWidget( dumpBox, 1, 1 ); + settingLayout->addWidget( convertPanel, 2, 0 ); - mainLayout->addWidget( settingBox, 3, 0, 1, -1 ); + settingLayout->addWidget( dumpRadio, 5, 0 ); + + mainLayout->addWidget( settingBox, 1, 0, 1, -1 ); /* Buttons */ QPushButton *okButton = new QPushButton( qtr( "&Start" ) ); @@ -105,15 +118,21 @@ ConvertDialog::ConvertDialog( QWidget *parent, intf_thread_t *_p_intf, BUTTONACT(okButton,close()); BUTTONACT(cancelButton,cancel()); - CONNECT(dumpBox,toggled(bool),this,dumpChecked(bool)); + CONNECT( convertRadio, toggled(bool), convertPanel, setEnabled(bool) ); + CONNECT(profile, optionsChanged(), this, setDestinationFileExtension()); + CONNECT(fileLine, editingFinished(), this, setDestinationFileExtension()); } void ConvertDialog::fileBrowse() { + QString fileExtension = ( ! profile->isEnabled() ) ? ".*" : "." + profile->getMux(); + QString fileName = QFileDialog::getSaveFileName( this, qtr( "Save file..." ), - "", - qtr( "Containers (*.ps *.ts *.mpg *.ogg *.asf *.mp4 *.mov *.wav *.raw *.flv *.webm)" ) ); + p_intf->p_sys->filepath, + QString( "%1 (*%2);;%3 (*.*)" ).arg( qtr( "Containers" ) ) + .arg( fileExtension ).arg( qtr("All") ) ); fileLine->setText( toNativeSeparators( fileName ) ); + setDestinationFileExtension(); } void ConvertDialog::cancel() @@ -125,7 +144,7 @@ void ConvertDialog::close() { hide(); - if( dumpBox->isChecked() ) + if( dumpRadio->isChecked() ) { mrl = "demux=dump :demuxdump-file=" + fileLine->text(); } @@ -141,7 +160,8 @@ void ConvertDialog::close() if( displayBox->isChecked() ) mrl += "duplicate{dst=display,dst="; mrl += "std{access=file{no-overwrite},mux=" + profile->getMux() - + ",dst='" + fileLine->text() + "'}"; + + ",dst='" + fileLine->text().replace( QChar('\''), "\\\'" ) + + "'}"; if( displayBox->isChecked() ) mrl += "}"; } @@ -150,9 +170,15 @@ void ConvertDialog::close() accept(); } -void ConvertDialog::dumpChecked( bool checked ) +void ConvertDialog::setDestinationFileExtension() { - deinterBox->setEnabled( !checked ); - displayBox->setEnabled( !checked ); - profile->setEnabled( !checked ); + if( !fileLine->text().isEmpty() && profile->isEnabled() ) + { + QString newFileExtension = "." + profile->getMux(); + if( fileLine->text().lastIndexOf( "." ) == -1 ) + { + QString newFileName = fileLine->text().append( newFileExtension ); + fileLine->setText( toNativeSeparators( newFileName ) ); + } + } }