#include "replaygainscanner.h" #include "logger.h" #include "combobutton.h" #include "config.h" #include "dirdialog.h" #include #include #include #include #include #include #include #include #include #include // FIXME file name encoding !!! ReplayGainScanner::ReplayGainScanner( TagEngine* _tagEngine, Config* _config, Logger* _logger, TQWidget *parent, const char *name, bool modal, WFlags f ) : KDialog( parent, name, modal, f ) { tagEngine = _tagEngine; config = _config; logger = _logger; // create an icon loader object for loading icons TDEIconLoader* iconLoader = new TDEIconLoader(); setCaption( i18n("Replay Gain Tool") ); resize( 600, 400 ); setIcon( iconLoader->loadIcon("soundkonverter_replaygain",TDEIcon::Small) ); TQGridLayout* grid = new TQGridLayout( this, 4, 1, 11, 6 ); TQHBoxLayout* filterBox = new TQHBoxLayout(); grid->addLayout( filterBox, 0, 0 ); cAdd = new ComboButton( this, "cAdd" ); cAdd->insertItem( iconLoader->loadIcon("folder",TDEIcon::Small),i18n("Add Folder ...") ); cAdd->insertItem( iconLoader->loadIcon("sound",TDEIcon::Small),i18n("Add Files ...") ); filterBox->addWidget( cAdd ); connect( cAdd, TQT_SIGNAL(clicked(int)), this, TQT_SLOT(addClicked(int)) ); filterBox->addStretch(); cForce = new TQCheckBox( i18n("Force recalculation"), this, "cForce" ); TQToolTip::add( cForce, i18n("Recalculate Replay Gain tag for files that already have a Replay Gain tag set.") ); filterBox->addWidget( cForce ); /*TQLabel *lFilter=new TQLabel(i18n("Show:"),this,"lFilter"); filterBox->addWidget(lFilter); cFilter=new TQComboBox(this,"cFilter"); cFilter->insertItem(i18n("All")); cFilter->insertItem(i18n("With Replay Gain")); cFilter->insertItem(i18n("Without Replay Gain")); cFilter->insertItem(i18n("Unknown")); filterBox->addWidget(cFilter);*/ lList = new ReplayGainFileList( tagEngine, config, logger, this, "lList" ); grid->addWidget( lList, 1, 0 ); connect( this, TQT_SIGNAL(addFile(const TQString&)), lList, TQT_SLOT(addFile(const TQString&)) ); connect( this, TQT_SIGNAL(addDir(const TQString&,const TQStringList&,bool)), lList, TQT_SLOT(addDir(const TQString&,const TQStringList&,bool)) ); connect( this, TQT_SIGNAL(calcAllReplayGain(bool)), lList, TQT_SLOT(calcAllReplayGain(bool)) ); connect( this, TQT_SIGNAL(removeAllReplayGain()), lList, TQT_SLOT(removeAllReplayGain()) ); connect( this, TQT_SIGNAL(cancelProcess()), lList, TQT_SLOT(cancelProcess()) ); connect( lList, TQT_SIGNAL(processStarted()), this, TQT_SLOT(processStarted()) ); connect( lList, TQT_SIGNAL(processStopped()), this, TQT_SLOT(processStopped()) ); connect( lList, TQT_SIGNAL(updateProgress(int,int)), this, TQT_SLOT(updateProgress(int,int)) ); TQHBoxLayout* progressBox = new TQHBoxLayout(); grid->addLayout( progressBox, 2, 0 ); pProgressBar = new KProgress( this, "pProgressBar" ); progressBox->addWidget( pProgressBar ); TQHBoxLayout* buttonBox = new TQHBoxLayout(); grid->addLayout( buttonBox, 3, 0 ); pTagVisible = new KPushButton( iconLoader->loadIcon("apply",TDEIcon::Small), i18n("Tag untagged"), this, "pTagVisible" ); TQToolTip::add( pTagVisible, i18n("Calculate Replay Gain tag for all files in the file list without Replay Gain tag.") ); buttonBox->addWidget( pTagVisible ); connect( pTagVisible, TQT_SIGNAL(clicked()), this, TQT_SLOT(calcReplayGainClicked()) ); pRemoveTag = new KPushButton( iconLoader->loadIcon("cancel",TDEIcon::Small), i18n("Untag tagged"), this, "pRemoveTag" ); TQToolTip::add( pRemoveTag, i18n("Remove the Replay Gain tag from all files in the file list.") ); buttonBox->addWidget( pRemoveTag ); connect( pRemoveTag, TQT_SIGNAL(clicked()), this, TQT_SLOT(removeReplayGainClicked()) ); pCancel = new KPushButton( iconLoader->loadIcon("cancel",TDEIcon::Small),i18n("Cancel"), this, "pCancel" ); pCancel->hide(); buttonBox->addWidget( pCancel ); connect( pCancel, TQT_SIGNAL(clicked()), this, TQT_SLOT(cancelClicked()) ); buttonBox->addStretch(); pOk = new KPushButton( iconLoader->loadIcon("exit",TDEIcon::Small), i18n("Close"), this, "pOk" ); pOk->setFocus(); buttonBox->addWidget( pOk ); connect( pOk, TQT_SIGNAL(clicked()), this, TQT_SLOT(accept()) ); // delete the icon loader object delete iconLoader; } ReplayGainScanner::~ReplayGainScanner() {} void ReplayGainScanner::addClicked( int index ) { if( index == 1 ) { showFileDialog(); } else { showDirDialog(); } } void ReplayGainScanner::showFileDialog() { KFileDialog* dialog = new KFileDialog( ":file_open", config->replayGainFilter(), this, i18n("Choose files!"), true ); dialog->setMode ( KFile::Files | KFile::ExistingOnly ); if( dialog->exec() == KDialog::Accepted ) { TQStringList urls = dialog->selectedURLs().toStringList(); for( TQStringList::Iterator it = urls.begin(); it != urls.end(); ++it ) { emit addFile( *it ); } } } void ReplayGainScanner::showDirDialog() { // TQString directory = KFileDialog::getExistingDirectory( ":file_open", this, i18n("Choose a directory!") ); // if( directory != NULL ) // { // emit addDir( directory ); // } DirDialog *dialog = new DirDialog( config, DirDialog::ReplayGain, this, "DirDialog" ); TQ_CHECK_PTR( dialog ); if( dialog->exec() ) { emit addDir( dialog->directory, dialog->selectedFileTypes, dialog->recursive ); } delete dialog; } void ReplayGainScanner::addFiles( TQStringList files ) { for( TQStringList::Iterator it = files.begin(); it != files.end(); ++it ) { emit addFile( *it ); } } void ReplayGainScanner::calcReplayGainClicked() { emit calcAllReplayGain( cForce->isChecked() ); } void ReplayGainScanner::removeReplayGainClicked() { emit removeAllReplayGain(); } void ReplayGainScanner::cancelClicked() { emit cancelProcess(); } void ReplayGainScanner::processStarted() { pTagVisible->hide(); pRemoveTag->hide(); pCancel->show(); } void ReplayGainScanner::processStopped() { pTagVisible->show(); pRemoveTag->show(); pCancel->hide(); pProgressBar->setProgress( 100 ); pProgressBar->setTotalSteps( 100 ); setCaption( i18n("Finished") + " - " + i18n("Replay Gain Tool") ); } void ReplayGainScanner::updateProgress( int progress, int totalSteps ) { /* pProgressBar->setProgress( int(processedTime) + percent * int(timeCount) / 100 ); pProgressBar->setTotalSteps( int(time) );*/ pProgressBar->setProgress( progress ); pProgressBar->setTotalSteps( totalSteps ); float fPercent; if( pProgressBar->totalSteps() > 0 ) fPercent = pProgressBar->progress() * 100 / pProgressBar->totalSteps(); else fPercent = 0; TQString percent; percent.sprintf( "%i%%", (int)fPercent ); setCaption( percent + " - " + i18n("Replay Gain Tool") ); }