You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
575 lines
24 KiB
575 lines
24 KiB
|
|
#include "optionssimple.h"
|
|
#include "config.h"
|
|
#include "convertpluginloader.h"
|
|
#include "optionsdetailed.h"
|
|
|
|
#include <tqlayout.h>
|
|
#include <tqlabel.h>
|
|
#include <tqstring.h>
|
|
#include <tqtooltip.h>
|
|
|
|
#include <tdelocale.h>
|
|
#include <kcombobox.h>
|
|
#include <kiconloader.h>
|
|
#include <tdemessagebox.h>
|
|
#include <tdetoolbarbutton.h>
|
|
//#include <kdebug.h>
|
|
#include <kpushbutton.h>
|
|
|
|
|
|
// FIXME when changing the output directory, check if the profile is a user defined and set it to 'User defined', if it is
|
|
|
|
// TODO hide lossless/hybrid/etc. when not available
|
|
OptionsSimple::OptionsSimple( Config* _config, OptionsDetailed* _optionsDetailed, const TQString &text, TQWidget *parent, const char *name )
|
|
: TQWidget( parent, name )
|
|
{
|
|
config = _config;
|
|
optionsDetailed = _optionsDetailed;
|
|
|
|
// create an icon loader object for loading icons
|
|
TDEIconLoader* iconLoader = new TDEIconLoader();
|
|
|
|
TQGridLayout *grid = new TQGridLayout( this, 3, 1, 6, 3 );
|
|
|
|
TQHBoxLayout *topBox = new TQHBoxLayout( );
|
|
grid->addLayout( topBox, 0, 0 );
|
|
|
|
TQLabel *lQuality = new TQLabel( i18n("Quality")+":", this, "lQuality" );
|
|
topBox->addWidget( lQuality, 0, TQt::AlignVCenter );
|
|
cProfile = new KComboBox( this, "cProfile" );
|
|
sProfile += i18n("Very low");
|
|
sProfile += i18n("Low");
|
|
sProfile += i18n("Medium");
|
|
sProfile += i18n("High");
|
|
sProfile += i18n("Very high");
|
|
sProfile += i18n("Lossless");
|
|
sProfile += i18n("Hybrid");
|
|
sProfile += config->getAllProfiles();
|
|
sProfile.remove( i18n("Last used") );
|
|
sProfile.remove( "Last used" );
|
|
sProfile += i18n("User defined");
|
|
cProfile->insertStringList( sProfile );
|
|
topBox->addWidget( cProfile, 0, TQt::AlignVCenter );
|
|
connect( cProfile, TQT_SIGNAL(activated(int)),
|
|
this, TQT_SLOT(profileChanged())
|
|
);
|
|
connect( cProfile, TQT_SIGNAL(activated(int)),
|
|
this, TQT_SLOT(somethingChanged())
|
|
);
|
|
topBox->addSpacing( 3 );
|
|
//pProfileRemove = new TDEToolBarButton( "edit-delete", 1002, this, "pProfileRemove" );
|
|
pProfileRemove = new KPushButton( iconLoader->loadIcon("edit-delete",TDEIcon::Small), i18n("Remove"), this, "pProfileRemove" );
|
|
pProfileRemove->hide();
|
|
TQToolTip::add( pProfileRemove, i18n("Remove the selected profile") );
|
|
topBox->addWidget( pProfileRemove, 0, TQt::AlignVCenter );
|
|
connect( pProfileRemove, TQT_SIGNAL(clicked()),
|
|
this, TQT_SLOT(profileRemove())
|
|
);
|
|
//pProfileInfo = new TDEToolBarButton( "messagebox_info", 1110, this, "pProfileInfo" );
|
|
pProfileInfo = new KPushButton( iconLoader->loadIcon("messagebox_info",TDEIcon::Small), i18n("Info"), this, "pProfileInfo" );
|
|
TQToolTip::add( pProfileInfo, i18n("Information about the selected profile") );
|
|
topBox->addWidget( pProfileInfo, 0, TQt::AlignVCenter );
|
|
connect( pProfileInfo, TQT_SIGNAL(clicked()),
|
|
this, TQT_SLOT(profileInfo())
|
|
);
|
|
topBox->addSpacing( 18 );
|
|
|
|
TQLabel *lFormat = new TQLabel( i18n("Output format")+":", this, "lFormat" );
|
|
topBox->addWidget( lFormat, 0, TQt::AlignVCenter );
|
|
cFormat = new KComboBox( this, "cFormat" );
|
|
topBox->addWidget( cFormat, 0, TQt::AlignVCenter );
|
|
connect( cFormat, TQT_SIGNAL(activated(int)),
|
|
this, TQT_SLOT(formatChanged())
|
|
);
|
|
connect( cFormat, TQT_SIGNAL(activated(int)),
|
|
this, TQT_SLOT(somethingChanged())
|
|
);
|
|
topBox->addSpacing( 3 );
|
|
//pFormatInfo = new TDEToolBarButton( "messagebox_info", 1111, this, "pFormatInfo" );
|
|
pFormatInfo = new KPushButton( iconLoader->loadIcon("messagebox_info",TDEIcon::Small), i18n("Info"), this, "pFormatInfo" );
|
|
TQToolTip::add( pFormatInfo, i18n("Information about the selected file format") );
|
|
topBox->addWidget( pFormatInfo, 0, TQt::AlignVCenter );
|
|
connect( pFormatInfo, TQT_SIGNAL(clicked()),
|
|
this, TQT_SLOT(formatInfo())
|
|
);
|
|
topBox->addStretch( );
|
|
|
|
TQHBoxLayout *middleBox = new TQHBoxLayout( );
|
|
grid->addLayout( middleBox, 1, 0 );
|
|
|
|
outputDirectory = new OutputDirectory( config, this, "outputDirectory" );
|
|
middleBox->addWidget( outputDirectory, 0, TQt::AlignVCenter );
|
|
connect( outputDirectory, TQT_SIGNAL(modeChanged(OutputDirectory::Mode)),
|
|
this, TQT_SLOT(outputDirectoryModeChanged(OutputDirectory::Mode))
|
|
);
|
|
connect( outputDirectory, TQT_SIGNAL(directoryChanged(const TQString&)),
|
|
this, TQT_SLOT(outputDirectoryPathChanged(const TQString&))
|
|
);
|
|
connect( outputDirectory, TQT_SIGNAL(modeChanged(OutputDirectory::Mode)),
|
|
this, TQT_SLOT(somethingChanged())
|
|
);
|
|
connect( outputDirectory, TQT_SIGNAL(directoryChanged(const TQString&)),
|
|
this, TQT_SLOT(somethingChanged())
|
|
);
|
|
|
|
TQHBoxLayout *bottomBox = new TQHBoxLayout( );
|
|
grid->addLayout( bottomBox, 2, 0 );
|
|
|
|
TQLabel *lInfo = new TQLabel( text, this, "lInfo" );
|
|
lInfo->setFixedHeight( cProfile->height() );
|
|
bottomBox->addWidget( lInfo, 0, TQt::AlignVCenter | TQt::AlignLeft );
|
|
|
|
// delete the icon loader object
|
|
delete iconLoader;
|
|
}
|
|
|
|
|
|
OptionsSimple::~OptionsSimple()
|
|
{
|
|
}
|
|
|
|
int OptionsSimple::profileIndex( const TQString &string )
|
|
{
|
|
TQString profile = string;
|
|
if( profile == "Very low" ) profile = i18n("Very low");
|
|
else if( profile == "Low" ) profile = i18n("Low");
|
|
else if( profile == "Medium" ) profile = i18n("Medium");
|
|
else if( profile == "High" ) profile = i18n("High");
|
|
else if( profile == "Very high" ) profile = i18n("Very high");
|
|
else if( profile == "Lossless" ) profile = i18n("Lossless");
|
|
else if( profile == "Hybrid" ) profile = i18n("Hybrid");
|
|
else if( profile == "User defined" ) profile = i18n("User defined");
|
|
return sProfile.findIndex( profile );
|
|
}
|
|
|
|
int OptionsSimple::formatIndex( const TQString &string )
|
|
{
|
|
return sFormat.findIndex( string );
|
|
}
|
|
|
|
void OptionsSimple::profileInfo()
|
|
{
|
|
TQString sProfileString = cProfile->currentText();
|
|
|
|
if( sProfileString == i18n("Very low") ) {
|
|
KMessageBox::information( this,
|
|
i18n("This produces sound files of a very low quality.\nThat can be useful, if you have a mobile device, where your memory cell is limited. It is not recommended to save your music in this quality without a copy with higher quality.\nIt can also be used to save audio files with voices."),
|
|
i18n("Profile")+": "+sProfileString );
|
|
}
|
|
else if( sProfileString == i18n("Low") ) {
|
|
KMessageBox::information( this,
|
|
i18n("This produces sound files of a low quality.\nThat can be useful if you habe a mobile device where your memory cell is limited. It is not recommended to save your music in this quality without a copy with higher quality."),
|
|
i18n("Profile")+": "+sProfileString );
|
|
}
|
|
else if( sProfileString == i18n("Medium") ) {
|
|
KMessageBox::information( this,
|
|
i18n("This produces sound files of a medium quality.\nIf your disc space is limited, you can use this to save your music."),
|
|
i18n("Profile")+": "+sProfileString );
|
|
}
|
|
else if( sProfileString == i18n("High") ) {
|
|
KMessageBox::information( this,
|
|
i18n("This produces sound files of a high quality.\nIf you have enough disc space available, you can use this to save your music."),
|
|
i18n("Profile")+": "+sProfileString );
|
|
}
|
|
else if( sProfileString == i18n("Very high") ) {
|
|
KMessageBox::information( this,
|
|
i18n("This produces sound files of a very high quality.\nYou should only use this, if you are a quality freak and have enough disc space available."),
|
|
i18n("Profile")+": "+sProfileString );
|
|
}
|
|
else if( sProfileString == i18n("Lossless") ) {
|
|
KMessageBox::information( this,
|
|
i18n("This produces files, that have exact the same quality as the input files.\nThis files are very big and definitely only for quality freaks."),
|
|
i18n("Profile")+": "+sProfileString );
|
|
}
|
|
else if( sProfileString == i18n("Hybrid") ) {
|
|
KMessageBox::information( this,
|
|
i18n("This produces two files. One lossy compressed playable file and one correction file.\nBoth files together result in a file that is equivalent to the input file."),
|
|
i18n("Profile")+": "+sProfileString );
|
|
}
|
|
else if( sProfileString == i18n("User defined") ) {
|
|
KMessageBox::information( this,
|
|
i18n("You can define your own profile in the \"detailed\" tab."),
|
|
i18n("Profile")+": "+sProfileString );
|
|
}
|
|
// else { // the info button is hidden when showing user defined profiles
|
|
// KMessageBox::error( this,
|
|
// i18n("This is a user defined profile."),
|
|
// i18n("Profile")+": "+sProfileString );
|
|
// }
|
|
}
|
|
|
|
void OptionsSimple::profileRemove()
|
|
{
|
|
int ret = KMessageBox::questionYesNo( this,
|
|
i18n("Do you really want to remove the profile: %1").arg(cProfile->currentText()),
|
|
i18n("Remove profile?") );
|
|
if( ret != KMessageBox::Yes ) return;
|
|
|
|
config->removeProfile( cProfile->currentText() );
|
|
|
|
sProfile.clear();
|
|
cProfile->clear();
|
|
sProfile += i18n("Very low");
|
|
sProfile += i18n("Low");
|
|
sProfile += i18n("Medium");
|
|
sProfile += i18n("High");
|
|
sProfile += i18n("Very high");
|
|
sProfile += i18n("Lossless");
|
|
sProfile += i18n("Hybrid");
|
|
sProfile += config->getAllProfiles();
|
|
sProfile.remove( i18n("Last used") );
|
|
sProfile.remove( "Last used" );
|
|
sProfile += i18n("User defined");
|
|
cProfile->insertStringList( sProfile );
|
|
profileChanged();
|
|
}
|
|
|
|
void OptionsSimple::formatInfo()
|
|
{
|
|
TQString format = cFormat->currentText();
|
|
|
|
if( format == "wav" ) {
|
|
KMessageBox::information( this,
|
|
i18n("<p>Wave is a file format, that doesn't compress it's audio data.</p>\n<p>So the quality is very high, but the file size is enormous. It is widely spread and should work with every audio player.</p>\n<a href=\"http://en.wikipedia.org/wiki/Wav\">http://en.wikipedia.org/wiki/Wav</a>"),
|
|
i18n("File format")+": " + format,
|
|
TQString(), KMessageBox::Notify | KMessageBox::AllowLink );
|
|
return;
|
|
}
|
|
else {
|
|
KMessageBox::information( this,
|
|
config->getFormatDescription(format),
|
|
i18n("File format")+": " + format,
|
|
TQString(), KMessageBox::Notify | KMessageBox::AllowLink );
|
|
}
|
|
}
|
|
|
|
void OptionsSimple::profileChanged()
|
|
{
|
|
TQString last;
|
|
|
|
ConversionOptions options = config->getProfile( cProfile->currentText() );
|
|
if( !options.encodingOptions.sFormat.isEmpty() ) {
|
|
pProfileRemove->show();
|
|
pProfileInfo->hide();
|
|
last = cFormat->currentText();
|
|
cFormat->clear();
|
|
sFormat = options.encodingOptions.sFormat;
|
|
cFormat->insertStringList( sFormat );
|
|
cFormat->setCurrentItem( formatIndex(last) );
|
|
outputDirectory->setMode( options.outputOptions.mode );
|
|
outputDirectory->setDirectory( options.outputOptions.directory );
|
|
optionsDetailed->setCurrentOptions( options );
|
|
return;
|
|
}
|
|
|
|
pProfileRemove->hide();
|
|
pProfileInfo->show();
|
|
|
|
if( cProfile->currentText() == i18n("Very low") ) {
|
|
last = cFormat->currentText();
|
|
cFormat->clear();
|
|
sFormat = config->allLossyEncodableFormats();
|
|
cFormat->insertStringList( sFormat );
|
|
cFormat->setCurrentItem( formatIndex(last) );
|
|
formatChanged();
|
|
ConvertPlugin* plugin = config->encoderForFormat( cFormat->currentText() );
|
|
if( plugin == 0 ) {
|
|
// FIXME error handling
|
|
//kdDebug() << "NULL POINTER: `" << "OptionsSimple::profileChanged() / Very low" << "'" << endl;
|
|
return;
|
|
}
|
|
if( plugin->enc.lossy.quality.enabled ) {
|
|
optionsDetailed->setQualityMode( i18n("Quality") );
|
|
optionsDetailed->setQuality( 20 );
|
|
}
|
|
else if( plugin->enc.lossy.bitrate.abr.enabled || plugin->enc.lossy.bitrate.cbr.enabled) {
|
|
optionsDetailed->setQualityMode( i18n("Bitrate") );
|
|
optionsDetailed->setQuality( 64 );
|
|
}
|
|
optionsDetailed->setBitrateRangeEnabled( false );
|
|
optionsDetailed->setSamplingrateEnabled( true );
|
|
optionsDetailed->setSamplingrate( 22050 );
|
|
optionsDetailed->setChannelsEnabled( true );
|
|
optionsDetailed->setChannels( i18n("Mono") );
|
|
optionsDetailed->setReplayGainEnabled( true );
|
|
optionsDetailed->setUserOptions( config->binaries[plugin->enc.bin] + " " + plugin->enc.in_out_files );
|
|
}
|
|
else if( cProfile->currentText() == i18n("Low") ) {
|
|
last = cFormat->currentText();
|
|
cFormat->clear();
|
|
sFormat = config->allLossyEncodableFormats();
|
|
cFormat->insertStringList( sFormat );
|
|
cFormat->setCurrentItem( formatIndex(last) );
|
|
formatChanged();
|
|
ConvertPlugin* plugin = config->encoderForFormat( cFormat->currentText() );
|
|
if( plugin == 0 ) {
|
|
// FIXME error handling
|
|
//kdDebug() << "NULL POINTER: `" << "OptionsSimple::profileChanged() / Low" << "'" << endl;
|
|
return;
|
|
}
|
|
if( plugin->enc.lossy.quality.enabled ) {
|
|
optionsDetailed->setQualityMode( i18n("Quality") );
|
|
optionsDetailed->setQuality( 30 );
|
|
}
|
|
else if( plugin->enc.lossy.bitrate.abr.enabled || plugin->enc.lossy.bitrate.cbr.enabled ) {
|
|
optionsDetailed->setQualityMode( i18n("Bitrate") );
|
|
optionsDetailed->setQuality( 96 );
|
|
}
|
|
optionsDetailed->setBitrateRangeEnabled( false );
|
|
optionsDetailed->setSamplingrateEnabled( true );
|
|
optionsDetailed->setSamplingrate( 22050 );
|
|
optionsDetailed->setChannelsEnabled( false );
|
|
optionsDetailed->setReplayGainEnabled( true );
|
|
optionsDetailed->setUserOptions( config->binaries[plugin->enc.bin] + " " + plugin->enc.in_out_files );
|
|
}
|
|
else if( cProfile->currentText() == i18n("Medium") ) {
|
|
last = cFormat->currentText();
|
|
cFormat->clear();
|
|
sFormat = config->allLossyEncodableFormats();
|
|
cFormat->insertStringList( sFormat );
|
|
cFormat->setCurrentItem( formatIndex(last) );
|
|
formatChanged();
|
|
ConvertPlugin* plugin = config->encoderForFormat( cFormat->currentText() );
|
|
if( plugin == 0 ) {
|
|
// FIXME error handling
|
|
//kdDebug() << "NULL POINTER: `" << "OptionsSimple::profileChanged() / Medium" << "'" << endl;
|
|
return;
|
|
}
|
|
if( plugin->enc.lossy.quality.enabled ) {
|
|
optionsDetailed->setQualityMode( i18n("Quality") );
|
|
optionsDetailed->setQuality( 40 );
|
|
}
|
|
else if( plugin->enc.lossy.bitrate.abr.enabled || plugin->enc.lossy.bitrate.cbr.enabled ) {
|
|
optionsDetailed->setQualityMode( i18n("Bitrate") );
|
|
optionsDetailed->setQuality( 192 );
|
|
}
|
|
optionsDetailed->setBitrateRangeEnabled( false );
|
|
optionsDetailed->setSamplingrateEnabled( false );
|
|
optionsDetailed->setChannelsEnabled( false );
|
|
optionsDetailed->setReplayGainEnabled( true );
|
|
optionsDetailed->setUserOptions( config->binaries[plugin->enc.bin] + " " + plugin->enc.in_out_files );
|
|
}
|
|
else if( cProfile->currentText() == i18n("High") ) {
|
|
last = cFormat->currentText();
|
|
cFormat->clear();
|
|
sFormat = config->allLossyEncodableFormats();
|
|
cFormat->insertStringList( sFormat );
|
|
cFormat->setCurrentItem( formatIndex(last) );
|
|
formatChanged();
|
|
ConvertPlugin* plugin = config->encoderForFormat( cFormat->currentText() );
|
|
if( plugin == 0 ) {
|
|
// FIXME error handling
|
|
//kdDebug() << "NULL POINTER: `" << "OptionsSimple::profileChanged() / High" << "'" << endl;
|
|
return;
|
|
}
|
|
if( plugin->enc.lossy.quality.enabled ) {
|
|
optionsDetailed->setQualityMode( i18n("Quality") );
|
|
optionsDetailed->setQuality( 50 );
|
|
}
|
|
else if( plugin->enc.lossy.bitrate.abr.enabled || plugin->enc.lossy.bitrate.cbr.enabled ) {
|
|
optionsDetailed->setQualityMode( i18n("Bitrate") );
|
|
optionsDetailed->setQuality( 240 );
|
|
}
|
|
optionsDetailed->setBitrateRangeEnabled( false );
|
|
optionsDetailed->setSamplingrateEnabled( false );
|
|
optionsDetailed->setChannelsEnabled( false );
|
|
optionsDetailed->setReplayGainEnabled( true );
|
|
optionsDetailed->setUserOptions( config->binaries[plugin->enc.bin] + " " + plugin->enc.in_out_files );
|
|
}
|
|
else if( cProfile->currentText() == i18n("Very high") ) {
|
|
last = cFormat->currentText();
|
|
cFormat->clear();
|
|
sFormat = config->allLossyEncodableFormats();
|
|
cFormat->insertStringList( sFormat );
|
|
cFormat->setCurrentItem( formatIndex(last) );
|
|
formatChanged();
|
|
ConvertPlugin* plugin = config->encoderForFormat( cFormat->currentText() );
|
|
if( plugin == 0 ) {
|
|
// FIXME error handling
|
|
//kdDebug() << "NULL POINTER: `" << "OptionsSimple::profileChanged() / Very high" << "'" << endl;
|
|
return;
|
|
}
|
|
if( plugin->enc.lossy.quality.enabled ) {
|
|
optionsDetailed->setQualityMode( i18n("Quality") );
|
|
optionsDetailed->setQuality( 60 );
|
|
}
|
|
else if( plugin->enc.lossy.bitrate.abr.enabled || plugin->enc.lossy.bitrate.cbr.enabled ) {
|
|
optionsDetailed->setQualityMode( i18n("Bitrate") );
|
|
optionsDetailed->setQuality( 320 );
|
|
}
|
|
optionsDetailed->setBitrateRangeEnabled( false );
|
|
optionsDetailed->setSamplingrateEnabled( false );
|
|
optionsDetailed->setChannelsEnabled( false );
|
|
optionsDetailed->setReplayGainEnabled( true );
|
|
optionsDetailed->setUserOptions( config->binaries[plugin->enc.bin] + " " + plugin->enc.in_out_files );
|
|
}
|
|
else if( cProfile->currentText() == i18n("Lossless") ) {
|
|
last = cFormat->currentText();
|
|
cFormat->clear();
|
|
sFormat = config->allLosslessEncodableFormats();
|
|
sFormat += "wav";
|
|
cFormat->insertStringList( sFormat );
|
|
cFormat->setCurrentItem( formatIndex(last) );
|
|
formatChanged();
|
|
optionsDetailed->setReplayGainEnabled( true );
|
|
ConvertPlugin* plugin = config->encoderForFormat( cFormat->currentText() );
|
|
if( plugin != 0 ) {
|
|
optionsDetailed->setUserOptions( config->binaries[plugin->enc.bin] + " " + plugin->enc.in_out_files );
|
|
}
|
|
}
|
|
else if( cProfile->currentText() == i18n("Hybrid")/* || cProfile->currentText() == "Hybrid"*/ ) {
|
|
last = cFormat->currentText();
|
|
cFormat->clear();
|
|
sFormat = config->allHybridEncodableFormats();
|
|
cFormat->insertStringList( sFormat );
|
|
cFormat->setCurrentItem( formatIndex(last) );
|
|
formatChanged();
|
|
optionsDetailed->setReplayGainEnabled( true );
|
|
ConvertPlugin* plugin = config->encoderForFormat( cFormat->currentText() );
|
|
optionsDetailed->setQualityMode( i18n("Hybrid") );
|
|
if( plugin != 0 ) {
|
|
optionsDetailed->setUserOptions( config->binaries[plugin->enc.bin] + " " + plugin->enc.in_out_files );
|
|
}
|
|
}
|
|
else if( cProfile->currentText() == i18n("User defined") ) {
|
|
last = cFormat->currentText();
|
|
cFormat->clear();
|
|
sFormat = config->allEncodableFormats();
|
|
sFormat += "wav";
|
|
cFormat->insertStringList( sFormat );
|
|
cFormat->setCurrentItem( formatIndex(last) );
|
|
formatChanged();
|
|
}
|
|
}
|
|
|
|
void OptionsSimple::formatChanged()
|
|
{
|
|
optionsDetailed->setFormat( cFormat->currentText() );
|
|
}
|
|
|
|
void OptionsSimple::outputDirectoryModeChanged( OutputDirectory::Mode mode )
|
|
{
|
|
optionsDetailed->setOutputDirectoryMode( mode );
|
|
if( cProfile->currentText() != i18n("User defined") && config->getAllProfiles().findIndex(cProfile->currentText()) != -1 ) {
|
|
ConversionOptions options = config->getProfile( cProfile->currentText() );
|
|
// if( options.encodingOptions.sFormat.isEmpty() ) return;
|
|
if( outputDirectory->mode() != options.outputOptions.mode || outputDirectory->directory() != options.outputOptions.directory ) {
|
|
cProfile->setCurrentItem( profileIndex(i18n("User defined")) ); // NOTE not refill() ?
|
|
profileChanged();
|
|
}
|
|
// refill();
|
|
}
|
|
}
|
|
|
|
void OptionsSimple::outputDirectoryPathChanged( const TQString& path )
|
|
{
|
|
optionsDetailed->setOutputDirectoryPath( path );
|
|
if( cProfile->currentText() != i18n("User defined") && config->getAllProfiles().findIndex(cProfile->currentText()) != -1 ) {
|
|
ConversionOptions options = config->getProfile( cProfile->currentText() );
|
|
// if( options.encodingOptions.sFormat.isEmpty() ) return;
|
|
if( outputDirectory->mode() != options.outputOptions.mode || outputDirectory->directory() != options.outputOptions.directory ) {
|
|
cProfile->setCurrentItem( profileIndex(i18n("User defined")) ); // NOTE not refill() ?
|
|
profileChanged();
|
|
}
|
|
// refill();
|
|
}
|
|
}
|
|
|
|
void OptionsSimple::setCurrentProfile( const TQString& profile )
|
|
{
|
|
// TODO check profile (and don't change, if not available)
|
|
cProfile->setCurrentItem( profileIndex(profile) );
|
|
profileChanged();
|
|
}
|
|
|
|
void OptionsSimple::setCurrentFormat( const TQString& format )
|
|
{
|
|
cFormat->setCurrentItem( formatIndex(format) );
|
|
formatChanged();
|
|
}
|
|
|
|
// TODO check for errors
|
|
void OptionsSimple::setCurrentOutputDirectory( const TQString& directory )
|
|
{
|
|
outputDirectory->setMode( OutputDirectory::Specify );
|
|
outputDirectory->setDirectory( directory );
|
|
optionsDetailed->setOutputDirectoryMode( OutputDirectory::Specify );
|
|
optionsDetailed->setOutputDirectoryPath( directory );
|
|
}
|
|
|
|
void OptionsSimple::somethingChanged()
|
|
{
|
|
emit optionsChanged();
|
|
}
|
|
|
|
void OptionsSimple::refill()
|
|
{
|
|
sProfile.clear();
|
|
cProfile->clear();
|
|
sProfile += i18n("Very low");
|
|
sProfile += i18n("Low");
|
|
sProfile += i18n("Medium");
|
|
sProfile += i18n("High");
|
|
sProfile += i18n("Very high");
|
|
sProfile += i18n("Lossless");
|
|
sProfile += i18n("Hybrid");
|
|
sProfile += config->getAllProfiles();
|
|
sProfile.remove( i18n("Last used") );
|
|
sProfile.remove( "Last used" );
|
|
sProfile += i18n("User defined");
|
|
cProfile->insertStringList( sProfile );
|
|
|
|
cProfile->setCurrentItem( profileIndex(config->getProfileName(optionsDetailed->getCurrentOptions())) );
|
|
|
|
if( cProfile->currentText() == i18n("Very low") || cProfile->currentText() == i18n("Low") ||
|
|
cProfile->currentText() == i18n("Medium") || cProfile->currentText() == i18n("High") ||
|
|
cProfile->currentText() == i18n("Very high") ) {
|
|
cFormat->clear();
|
|
sFormat = config->allLossyEncodableFormats();
|
|
cFormat->insertStringList( sFormat );
|
|
cFormat->setCurrentItem( formatIndex(optionsDetailed->getFormat()) );
|
|
pProfileInfo->show();
|
|
pProfileRemove->hide();
|
|
}
|
|
else if( cProfile->currentText() == i18n("Lossless") ) {
|
|
cFormat->clear();
|
|
sFormat = config->allLosslessEncodableFormats();
|
|
sFormat += "wav";
|
|
cFormat->insertStringList( sFormat );
|
|
cFormat->setCurrentItem( formatIndex(optionsDetailed->getFormat()) );
|
|
pProfileInfo->show();
|
|
pProfileRemove->hide();
|
|
}
|
|
else if( cProfile->currentText() == i18n("Hybrid") ) {
|
|
cFormat->clear();
|
|
sFormat = config->allHybridEncodableFormats();
|
|
cFormat->insertStringList( sFormat );
|
|
cFormat->setCurrentItem( formatIndex(optionsDetailed->getFormat()) );
|
|
pProfileInfo->show();
|
|
pProfileRemove->hide();
|
|
}
|
|
else if( cProfile->currentText() == i18n("User defined") ) {
|
|
cFormat->clear();
|
|
sFormat = config->allEncodableFormats();
|
|
sFormat += "wav";
|
|
cFormat->insertStringList( sFormat );
|
|
cFormat->setCurrentItem( formatIndex(optionsDetailed->getFormat()) );
|
|
pProfileInfo->show();
|
|
pProfileRemove->hide();
|
|
}
|
|
else {
|
|
ConversionOptions options = config->getProfile( cProfile->currentText() );
|
|
cFormat->clear();
|
|
sFormat = options.encodingOptions.sFormat;
|
|
cFormat->insertStringList( sFormat );
|
|
cFormat->setCurrentItem( formatIndex(optionsDetailed->getFormat()) );
|
|
pProfileInfo->hide();
|
|
pProfileRemove->show();
|
|
}
|
|
|
|
outputDirectory->setMode( optionsDetailed->getOutputDirectoryMode() );
|
|
outputDirectory->setDirectory( optionsDetailed->getOutputDirectoryPath() );
|
|
}
|
|
|