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.
soundkonverter/src/options.cpp

274 lines
10 KiB

#include "options.h"
#include "optionssimple.h"
#include "optionsdetailed.h"
#include "config.h"
#include <tqlayout.h>
#include <tqtooltip.h>
#include <tqfile.h>
#include <tqcolor.h>
#include <klocale.h>
#include <ktabwidget.h>
#include <kpushbutton.h>
#include <kiconloader.h>
#include <tdeio/job.h>
#include <kstandarddirs.h>
// FIXME prevent converting wav files to wav
Options::Options( Config* _config, const TQString &text, TQWidget *parent, const char *name )
: TQWidget( parent, name )
{
config = _config;
connect( config, TQT_SIGNAL(configChanged()),
this, TQT_SLOT(configChanged())
);
TQGridLayout *gridLayout = new TQGridLayout( this, 1, 1 );
tab = new KTabWidget( this, "tab" );
optionsDetailed = new OptionsDetailed( config, this, "optionsDetailed" );
optionsSimple = new OptionsSimple( config, optionsDetailed, text, this, "optionsSimple" );
tab->addTab( optionsSimple, i18n("Simple") );
connect( optionsSimple, TQT_SIGNAL(optionsChanged()),
this, TQT_SLOT(somethingChanged())
);
tab->addTab( optionsDetailed, i18n("Detailed") );
connect( optionsDetailed, TQT_SIGNAL(optionsChanged()),
this, TQT_SLOT(somethingChanged())
);
// connect( optionsSimple, TQT_SIGNAL(setFormat(const TQString&)),
// optionsDetailed, TQT_SLOT(setFormat(const TQString&))
// );
// connect( optionsSimple, TQT_SIGNAL(setQualityMode(const TQString&)),
// optionsDetailed, TQT_SLOT(setQualityMode(const TQString&))
// );
// connect( optionsSimple, TQT_SIGNAL(setQuality(int)),
// optionsDetailed, TQT_SLOT(setQuality(int))
// );
// connect( optionsSimple, TQT_SIGNAL(setBitrateMode(const TQString&)),
// optionsDetailed, TQT_SLOT(setBitrateMode(const TQString&))
// );
// connect( optionsSimple, TQT_SIGNAL(setBitrateRangeEnabled(bool)),
// optionsDetailed, TQT_SLOT(setBitrateRangeEnabled(bool))
// );
// connect( optionsSimple, TQT_SIGNAL(setMinBitrate(int)),
// optionsDetailed, TQT_SLOT(setMinBitrate(int))
// );
// connect( optionsSimple, TQT_SIGNAL(setMaxBitrate(int)),
// optionsDetailed, TQT_SLOT(setMaxBitrate(int))
// );
// connect( optionsSimple, TQT_SIGNAL(setSamplingrateEnabled(bool)),
// optionsDetailed, TQT_SLOT(setSamplingrateEnabled(bool))
// );
// connect( optionsSimple, TQT_SIGNAL(setSamplingrate(int)),
// optionsDetailed, TQT_SLOT(setSamplingrate(int))
// );
// connect( optionsSimple, TQT_SIGNAL(setSamplingrate(const TQString&)),
// optionsDetailed, TQT_SLOT(setSamplingrate(const TQString&))
// );
// connect( optionsSimple, TQT_SIGNAL(setChannelsEnabled(bool)),
// optionsDetailed, TQT_SLOT(setChannelsEnabled(bool))
// );
// connect( optionsSimple, TQT_SIGNAL(setChannels(const TQString&)),
// optionsDetailed, TQT_SLOT(setChannels(const TQString&))
// );
// connect( optionsSimple, TQT_SIGNAL(setReplayGainEnabled(bool)),
// optionsDetailed, TQT_SLOT(setReplayGainEnabled(bool))
// );
// connect( optionsSimple, TQT_SIGNAL(setOutputDirectoryMode(OutputDirectory::Mode)),
// optionsDetailed, TQT_SLOT(setOutputDirectoryMode(OutputDirectory::Mode))
// );
// connect( optionsSimple, TQT_SIGNAL(setOutputDirectoryPath(const TQString&)),
// optionsDetailed, TQT_SLOT(setOutputDirectoryPath(const TQString&))
// );
// connect( optionsSimple, TQT_SIGNAL(setOptions(const ConversionOptions&)),
// optionsDetailed, TQT_SLOT(setCurrentOptions(const ConversionOptions&))
// );
// connect( optionsSimple, TQT_SIGNAL(setUserOptions(const TQString&)),
// optionsDetailed, TQT_SLOT(setUserOptions(const TQString&))
// );
if( config->data.general.startTab == 0 ) tab->setCurrentPage( config->data.general.lastTab );
else tab->setCurrentPage( config->data.general.startTab - 1 );
gridLayout->addWidget( tab, 0, 0 );
connect( tab, TQT_SIGNAL( currentChanged(TQWidget*) ),
this, TQT_SLOT( tabChanged(TQWidget*) )
);
// draw the toggle button
TQVBoxLayout *optionsTopBox = new TQVBoxLayout( -1, "optionsTopBox" );
gridLayout->addLayout( optionsTopBox, 0, 0 );
TQHBoxLayout *optionsBox = new TQHBoxLayout( 6, "optionsBox" );
optionsTopBox->addLayout( optionsBox );
optionsTopBox->addStretch();
optionsBox->addStretch();
// pPluginsNotify = new KPushButton( "", this, "pPluginsNotify");
// pPluginsNotify->setPixmap( TDEGlobal::iconLoader()->loadIcon("connect_creating",TDEIcon::Toolbar) );
// TQToolTip::add( pPluginsNotify, i18n("There are new plugin updates available.\nClick on this button in order to open the configuration dialog.") );
// pPluginsNotify->hide();
// pPluginsNotify->setPaletteBackgroundColor( TQColor(255,220,247) );
// optionsBox->addWidget( pPluginsNotify );
// connect( pPluginsNotify, TQT_SIGNAL(clicked()),
// this, TQT_SLOT(showConfigDialogPlugins())
// );
pBackendsNotify = new KPushButton( "", this, "pBackendsNotify");
pBackendsNotify->setPixmap( TDEGlobal::iconLoader()->loadIcon("kcmsystem",TDEIcon::Toolbar) );
TQToolTip::add( pBackendsNotify, i18n("soundKonverter either found new backends or misses some.\nClick on this button in order to open the configuration dialog.") );
pBackendsNotify->setShown( config->backendsChanged );
config->backendsChanged = false;
pBackendsNotify->setPaletteBackgroundColor( TQColor(255,220,247) );
optionsBox->addWidget( pBackendsNotify );
connect( pBackendsNotify, TQT_SIGNAL(clicked()),
this, TQT_SLOT(showConfigDialogBackends())
);
pAdvancedOptionsToggle = new KPushButton( i18n("Advanced Options"), this, "pAdvancedOptionsToggle");
pAdvancedOptionsToggle->setToggleButton( true );
pAdvancedOptionsToggle->hide();
optionsBox->addWidget( pAdvancedOptionsToggle );
connect( pAdvancedOptionsToggle, TQT_SIGNAL(clicked()),
optionsDetailed, TQT_SLOT(toggleAdvancedOptions())
);
/* NOTE kaligames.de is down
if( config->data.plugins.checkForUpdates ) {
config->onlinePluginsChanged = false;
getPluginListJob = TDEIO::file_copy("http://kaligames.de/downloads/soundkonverter/plugins/download.php?version=" + TQString::number(config->data.app.configVersion),
locateLocal("data","soundkonverter/pluginlist_new.txt"), -1, true, false, false );
connect( getPluginListJob, TQT_SIGNAL(result(TDEIO::Job*)),
this, TQT_SLOT(getPluginListFinished(TDEIO::Job*))
);
}
*/
if( config->data.general.defaultProfile == i18n("Last used") || config->getAllProfiles().findIndex(config->data.general.defaultProfile) != -1 ) {
setCurrentOptions( config->getProfile(config->data.general.defaultProfile) );
}
else {
setProfile( config->data.general.defaultProfile );
setFormat( config->data.general.defaultFormat );
}
}
Options::~Options()
{}
// void Options::getPluginListFinished( TDEIO::Job* job )
// {
// if( job->error() == 0 ) {
// TQFile file( locateLocal("data","soundkonverter/pluginlist.txt") );
// TQFile newFile( locateLocal("data","soundkonverter/pluginlist_new.txt") );
//
// if( !file.exists() ) { // TODO check against the installed plugins
// pPluginsNotify->show();
// TDEIO::file_move( locateLocal("data","soundkonverter/pluginlist_new.txt"), locateLocal("data","soundkonverter/pluginlist.txt"), -1, true, false, false );
// config->onlinePluginsChanged = true;
// return;
// }
//
// if( file.open(IO_ReadOnly) && newFile.open(IO_ReadOnly) ) {
// TQTextStream stream( &file );
// TQTextStream newStream( &newFile );
// while( !stream.atEnd() && !newStream.atEnd() ) {
// if( stream.readLine() != newStream.readLine() ) {
// file.close();
// newFile.close();
// pPluginsNotify->show();
// TDEIO::file_move( locateLocal("data","soundkonverter/pluginlist_new.txt"), locateLocal("data","soundkonverter/pluginlist.txt"), -1, true, false, false );
// config->onlinePluginsChanged = true;
// return;
// }
// }
// if( stream.atEnd() != newStream.atEnd() ) {
// file.close();
// newFile.close();
// pPluginsNotify->show();
// TDEIO::file_move( locateLocal("data","soundkonverter/pluginlist_new.txt"), locateLocal("data","soundkonverter/pluginlist.txt"), -1, true, false, false );
// config->onlinePluginsChanged = true;
// return;
// }
// file.close();
// newFile.close();
// }
// newFile.remove();
// }
// }
// void Options::showConfigDialogPlugins()
// {
// pPluginsNotify->hide();
// emit showConfigPluginsPage();
// }
void Options::showConfigDialogBackends()
{
pBackendsNotify->hide();
emit showConfigEnvironmentPage();
}
ConversionOptions Options::getCurrentOptions()
{
return optionsDetailed->getCurrentOptions();
}
void Options::setCurrentOptions( const ConversionOptions& options )
{
optionsDetailed->setCurrentOptions( options );
/*if( tab->page(tab->currentPageIndex()) == optionsSimple ) {
optionsSimple->refill();
}*/
optionsSimple->refill();
}
void Options::tabChanged( TQWidget* widget )
{
if( widget == optionsSimple ) {
pAdvancedOptionsToggle->hide();
optionsSimple->refill();
}
else {
pAdvancedOptionsToggle->show();
}
config->data.general.lastTab = tab->currentPageIndex();
}
void Options::setProfile( const TQString& profile )
{
optionsSimple->setCurrentProfile( profile );
}
void Options::setFormat( const TQString& format )
{
optionsSimple->setCurrentFormat( format );
}
void Options::setOutputDirectory( const TQString& directory )
{
optionsSimple->setCurrentOutputDirectory( directory );
}
void Options::somethingChanged()
{
emit optionsChanged();
}
// TODO right this way? - seems to work
void Options::configChanged()
{
optionsDetailed->refill();
/*if( tab->page(tab->currentPageIndex()) == optionsSimple ) {
optionsSimple->refill();
}*/
optionsSimple->refill();
}