diff options
Diffstat (limited to 'src/optionseditor.cpp')
-rwxr-xr-x | src/optionseditor.cpp | 729 |
1 files changed, 729 insertions, 0 deletions
diff --git a/src/optionseditor.cpp b/src/optionseditor.cpp new file mode 100755 index 0000000..efd9b1e --- /dev/null +++ b/src/optionseditor.cpp @@ -0,0 +1,729 @@ + +#include "optionseditor.h" +#include "options.h" +#include "tagengine.h" +#include "filelist.h" +#include "conversionoptions.h" +#include "outputdirectory.h" + +#include <qlayout.h> +#include <qstring.h> +#include <qlabel.h> +#include <qdatetime.h> + +#include <klocale.h> +#include <kiconloader.h> +#include <kpushbutton.h> +//#include <kmessagebox.h> +#include <klineedit.h> +#include <kcombobox.h> +#include <knuminput.h> +#include <ktextedit.h> + +// TODO add warning, when editing tags and converting to an unsupported file format + +OptionsEditor::OptionsEditor( TagEngine* _tagEngine, Config* _config, FileList* _fileList, QWidget* parent, const char* name, Page startPage ) + : KDialogBase( + IconList, + i18n("Options Editor"), + /*User2 | User1 |*/ Ok, + Ok, // default button + parent, + name, + false, // modal + true/*, // separator + i18n("Next"), + i18n("Previous")*/ + ) +{ + fileList = _fileList; + config = _config; + tagEngine = _tagEngine; + + // create an icon loader object for loading icons + KIconLoader* iconLoader = new KIconLoader(); + + resize( 400, 350 ); + // TODO move the dialog beside the main window + setIcon( iconLoader->loadIcon("view_text",KIcon::Small) ); + +// setButtonGuiItem( User2, KGuiItem(i18n("Previous"),iconLoader->loadIconSet("previous",KIcon::Small,16,true/*KDE3.5,false*/)) ); +// setButtonGuiItem( User1, KGuiItem(i18n("Next"),iconLoader->loadIconSet("next",KIcon::Small,16,true/*KDE3.5,false*/)) ); + setButtonGuiItem( Ok, KGuiItem(i18n("Close"),iconLoader->loadIconSet("exit",KIcon::Small,16,true/*KDE3.5,false*/)) ); + + //// options page //// + conversionOptions = addPage( i18n("Conversion"), i18n("Conversion options"), iconLoader->loadIcon("soundkonverter",KIcon::Desktop) ); + // the grid for all widgets in the main window + QGridLayout* conversionOptionsGridLayout = new QGridLayout( conversionOptions, 1, 1, 0, 6, "conversionOptionsGridLayout" ); + // generate the options input area + options = new Options( config, i18n("Choose your prefered output options and click on \"Close\"!"), conversionOptions, "options" ); + conversionOptionsGridLayout->addWidget( options, 0, 0 ); + connect( options, SIGNAL(optionsChanged()), + this, SLOT(optionsChanged()) + ); + conversionOptionsGridLayout->setRowStretch( 1, 1 ); + + lEditOptions = new QLabel( "", conversionOptions, "lEditOptions" ); + conversionOptionsGridLayout->addWidget( lEditOptions, 2, 0 ); + lEditOptions->setAlignment( Qt::AlignHCenter ); + lEditOptions->hide(); + pEditOptions = new KPushButton( i18n("Edit conversion options"), conversionOptions, "pEditOptions" ); + pEditOptions->setFixedWidth( pEditOptions->sizeHint().width() ); + conversionOptionsGridLayout->addWidget( pEditOptions, 3, 0, Qt::AlignHCenter ); + pEditOptions->hide(); + connect( pEditOptions, SIGNAL(clicked()), + this, SLOT(editOptionsClicked()) + ); + + //// tags page //// + tags = addPage( i18n("Tags"), i18n("Tags"), iconLoader->loadIcon("view_text",KIcon::Desktop) ); + // the grid for all widgets in the main window + QGridLayout* tagsGridLayout = new QGridLayout( tags, 1, 1, 0, 6, "tagsGridLayout" ); + + // add the inputs + // add a horizontal box layout for the title and track number + QHBoxLayout *titleBox = new QHBoxLayout( -1, "titleBox" ); + tagsGridLayout->addLayout( titleBox, 0, 1 ); + // and fill it up + lTitleLabel = new QLabel( i18n("Title:"), tags, "lTitleLabel" ); + tagsGridLayout->addWidget( lTitleLabel, 0, 0 ); + lTitle = new KLineEdit( tags, "lTitle" ); + titleBox->addWidget( lTitle ); + connect( lTitle, SIGNAL(textChanged(const QString&)), + this, SLOT(titleChanged(const QString&)) + ); + pTitleEdit = new KPushButton( " ", tags, "pTitleEdit" ); + pTitleEdit->setPixmap( iconLoader->loadIcon("kwrite",KIcon::Small) ); + pTitleEdit->setFixedSize( lTitle->sizeHint().height(), lTitle->sizeHint().height() ); + pTitleEdit->hide(); + titleBox->addWidget( pTitleEdit ); + connect( pTitleEdit, SIGNAL(clicked()), + this, SLOT(editTitleClicked()) + ); + lNumberLabel = new QLabel( i18n("Track No.:"), tags, "lNumberLabel" ); + titleBox->addWidget( lNumberLabel ); + iNumber = new KIntSpinBox( 0, 999, 1, 1, 10, tags, "iNumber" ); + titleBox->addWidget( iNumber ); + connect( iNumber, SIGNAL(valueChanged(int)), + this, SLOT(numberChanged(int)) + ); + pNumberEdit = new KPushButton( " ", tags, "pNumberEdit" ); + pNumberEdit->setPixmap( iconLoader->loadIcon("kwrite",KIcon::Small) ); + pNumberEdit->setFixedSize( iNumber->sizeHint().height(), iNumber->sizeHint().height() ); + pNumberEdit->hide(); + titleBox->addWidget( pNumberEdit ); + connect( pNumberEdit, SIGNAL(clicked()), + this, SLOT(editNumberClicked()) + ); + + // add a horizontal box layout for the artist and the composer + QHBoxLayout *artistBox = new QHBoxLayout( -1, "artistBox" ); + tagsGridLayout->addLayout( artistBox, 1, 1 ); + // and fill it up + lArtistLabel = new QLabel( i18n("Artist:"), tags, "lArtistLabel" ); + tagsGridLayout->addWidget( lArtistLabel, 1, 0 ); + lArtist = new KLineEdit( tags, "lArtist" ); + artistBox->addWidget( lArtist ); + connect( lArtist, SIGNAL(textChanged(const QString&)), + this, SLOT(artistChanged(const QString&)) + ); + pArtistEdit = new KPushButton( " ", tags, "pArtistEdit" ); + pArtistEdit->setPixmap( iconLoader->loadIcon("kwrite",KIcon::Small) ); + pArtistEdit->setFixedSize( lArtist->sizeHint().height(), lArtist->sizeHint().height() ); + pArtistEdit->hide(); + artistBox->addWidget( pArtistEdit ); + connect( pArtistEdit, SIGNAL(clicked()), + this, SLOT(editArtistClicked()) + ); + lComposerLabel = new QLabel( i18n("Composer:"), tags, "lComposerLabel" ); + artistBox->addWidget( lComposerLabel ); + lComposer = new KLineEdit( tags, "lComposer" ); + artistBox->addWidget( lComposer ); + connect( lComposer, SIGNAL(textChanged(const QString&)), + this, SLOT(composerChanged(const QString&)) + ); + pComposerEdit = new KPushButton( " ", tags, "pComposerEdit" ); + pComposerEdit->setPixmap( iconLoader->loadIcon("kwrite",KIcon::Small) ); + pComposerEdit->setFixedSize( lComposer->sizeHint().height(), lComposer->sizeHint().height() ); + pComposerEdit->hide(); + artistBox->addWidget( pComposerEdit ); + connect( pComposerEdit, SIGNAL(clicked()), + this, SLOT(editComposerClicked()) + ); + + // add a horizontal box layout for the album + QHBoxLayout *albumBox = new QHBoxLayout( -1, "albumBox" ); + tagsGridLayout->addLayout( albumBox, 2, 1 ); + // and fill it up + lAlbumLabel = new QLabel( i18n("Album:"), tags, "lAlbumLabel" ); + tagsGridLayout->addWidget( lAlbumLabel, 2, 0 ); + lAlbum = new KLineEdit( tags, "lAlbum" ); + albumBox->addWidget( lAlbum ); + connect( lAlbum, SIGNAL(textChanged(const QString&)), + this, SLOT(albumChanged(const QString&)) + ); + pAlbumEdit = new KPushButton( " ", tags, "pAlbumEdit" ); + pAlbumEdit->setPixmap( iconLoader->loadIcon("kwrite",KIcon::Small) ); + pAlbumEdit->setFixedSize( lAlbum->sizeHint().height(), lAlbum->sizeHint().height() ); + pAlbumEdit->hide(); + albumBox->addWidget( pAlbumEdit ); + connect( pAlbumEdit, SIGNAL(clicked()), + this, SLOT(editAlbumClicked()) + ); + + // add a horizontal box layout for the disc number, year and genre + QHBoxLayout *albumdataBox = new QHBoxLayout( -1, "albumdataBox" ); + tagsGridLayout->addLayout( albumdataBox, 3, 1 ); + // and fill it up + lDiscLabel = new QLabel( i18n("Disc No.:"), tags, "lDiscLabel" ); + tagsGridLayout->addWidget( lDiscLabel, 3, 0 ); + iDisc = new KIntSpinBox( 0, 99, 1, 1, 10, tags, "iDisc" ); + albumdataBox->addWidget( iDisc ); + connect( iDisc, SIGNAL(valueChanged(int)), + this, SLOT(discChanged(int)) + ); + pDiscEdit = new KPushButton( " ", tags, "pDiscEdit" ); + pDiscEdit->setPixmap( iconLoader->loadIcon("kwrite",KIcon::Small) ); + pDiscEdit->setFixedSize( iDisc->sizeHint().height(), iDisc->sizeHint().height() ); + pDiscEdit->hide(); + albumdataBox->addWidget( pDiscEdit ); + connect( pDiscEdit, SIGNAL(clicked()), + this, SLOT(editDiscClicked()) + ); + albumdataBox->addStretch(); + lYearLabel = new QLabel( i18n("Year:"), tags, "lYearLabel" ); + albumdataBox->addWidget( lYearLabel ); + iYear = new KIntSpinBox( 0, 99999, 1, QDate::currentDate().year(), 10, tags, "iYear" ); + albumdataBox->addWidget( iYear ); + connect( iYear, SIGNAL(valueChanged(int)), + this, SLOT(yearChanged(int)) + ); + pYearEdit = new KPushButton( " ", tags, "pYearEdit" ); + pYearEdit->setPixmap( iconLoader->loadIcon("kwrite",KIcon::Small) ); + pYearEdit->setFixedSize( iYear->sizeHint().height(), iYear->sizeHint().height() ); + pYearEdit->hide(); + albumdataBox->addWidget( pYearEdit ); + connect( pYearEdit, SIGNAL(clicked()), + this, SLOT(editYearClicked()) + ); + albumdataBox->addStretch(); + lGenreLabel = new QLabel( i18n("Genre:"), tags, "lGenreLabel" ); + albumdataBox->addWidget( lGenreLabel ); + cGenre = new KComboBox( true, tags, "cGenre" ); + cGenre->insertStringList( tagEngine->genreList ); + cGenre->setCurrentText( "" ); + KCompletion *cGenreCompletion = cGenre->completionObject(); + cGenreCompletion->insertItems( tagEngine->genreList ); + cGenreCompletion->setIgnoreCase( tags ); + albumdataBox->addWidget( cGenre ); + connect( cGenre, SIGNAL(textChanged(const QString&)), + this, SLOT(genreChanged(const QString&)) + ); + pGenreEdit = new KPushButton( " ", tags, "pGenreEdit" ); + pGenreEdit->setPixmap( iconLoader->loadIcon("kwrite",KIcon::Small) ); + pGenreEdit->setFixedSize( cGenre->sizeHint().height(), cGenre->sizeHint().height() ); + pGenreEdit->hide(); + albumdataBox->addWidget( pGenreEdit ); + connect( pGenreEdit, SIGNAL(clicked()), + this, SLOT(editGenreClicked()) + ); + + // add a horizontal box layout for the comment + QHBoxLayout *commentBox = new QHBoxLayout( -1, "commentBox" ); + tagsGridLayout->addLayout( commentBox, 4, 1 ); + // and fill it up + lCommentLabel = new QLabel( i18n("Comment:"), tags, "lCommentLabel" ); + tagsGridLayout->addWidget( lCommentLabel, 4, 0 ); + tComment = new KTextEdit( tags, "tComment" ); + commentBox->addWidget( tComment ); + connect( tComment, SIGNAL(textChanged()), + this, SLOT(commentChanged()) + ); + pCommentEdit = new KPushButton( " ", tags, "pCommentEdit" ); + pCommentEdit->setPixmap( iconLoader->loadIcon("kwrite",KIcon::Small) ); + pCommentEdit->setFixedSize( lTitle->sizeHint().height(), lTitle->sizeHint().height() ); + pCommentEdit->hide(); + commentBox->addWidget( pCommentEdit ); + connect( pCommentEdit, SIGNAL(clicked()), + this, SLOT(editCommentClicked()) + ); + tagsGridLayout->setRowStretch( 4, 1 ); + + lEditTags = new QLabel( "", tags, "lEditTags" ); + tagsGridLayout->addWidget( lEditTags, 5, 1 ); + lEditTags->setAlignment( Qt::AlignHCenter ); + lEditTags->hide(); + pEditTags = new KPushButton( i18n("Edit tags"), tags, "pEditTags" ); + pEditTags->setFixedWidth( pEditTags->sizeHint().width() ); + tagsGridLayout->addWidget( pEditTags, 6, 1, Qt::AlignHCenter ); + pEditTags->hide(); + connect( pEditTags, SIGNAL(clicked()), + this, SLOT(editTagsClicked()) + ); + + // delete the icon loader object + delete iconLoader; +} + +OptionsEditor::~OptionsEditor() +{} + +/*void OptionsEditor::moveWindow( int x, int y ) +{ + move( x, y ); +}*/ + +void OptionsEditor::setTagInputEnabled( bool enabled ) +{ + lTitleLabel->setEnabled( enabled ); + lTitle->setEnabled( enabled ); + pTitleEdit->hide(); + lNumberLabel->setEnabled( enabled ); + iNumber->setEnabled( enabled ); + pNumberEdit->hide(); + lArtistLabel->setEnabled( enabled ); + lArtist->setEnabled( enabled ); + pArtistEdit->hide(); + lComposerLabel->setEnabled( enabled ); + lComposer->setEnabled( enabled ); + pComposerEdit->hide(); + lAlbumLabel->setEnabled( enabled ); + lAlbum->setEnabled( enabled ); + pAlbumEdit->hide(); + lDiscLabel->setEnabled( enabled ); + iDisc->setEnabled( enabled ); + pDiscEdit->hide(); + lYearLabel->setEnabled( enabled ); + iYear->setEnabled( enabled ); + pYearEdit->hide(); + lGenreLabel->setEnabled( enabled ); + cGenre->setEnabled( enabled ); + pGenreEdit->hide(); + lCommentLabel->setEnabled( enabled ); + tComment->setEnabled( enabled ); + tComment->setReadOnly( !enabled ); + pCommentEdit->hide(); + + if( !enabled ) { + lTitle->setText( "" ); + iNumber->setValue( 0 ); + lArtist->setText( "" ); + lComposer->setText( "" ); + lAlbum->setText( "" ); + iDisc->setValue( 0 ); + iYear->setValue( 0 ); + cGenre->setCurrentText( "" ); + tComment->setText( "" ); + } +} + +void OptionsEditor::itemsSelected( QValueList<FileListItem*> items ) +{ + for( QValueList<FileListItem*>::Iterator it = items.begin(); it != items.end(); ) { + if( (*it)->converting || (*it) == 0 ) it = items.remove( it ); + else it++; + } + + selectedItems = items; + + if( items.count() == 0 ) { + setCaption( i18n("No file selected") ); + options->setEnabled( false ); + lEditOptions->hide(); + pEditOptions->hide(); + setTagInputEnabled( false ); + lEditTags->hide(); + pEditTags->hide(); + return; + } + + options->setEnabled( true ); + lEditOptions->hide(); + pEditOptions->hide(); + setTagInputEnabled( true ); + lEditTags->hide(); + pEditTags->hide(); + + if( items.count() == 1 ) { + setCaption( KURL::decode_string(items.first()->fileName).replace("%2f","/").replace("%%","%") ); + // HACK ...but seems to work... + // FIXME directory does get set properly + disconnect( options, SIGNAL(optionsChanged()), 0, 0 ); + options->setCurrentOptions( items.first()->options ); + connect( options, SIGNAL(optionsChanged()), + this, SLOT(optionsChanged()) + ); + if( items.first()->tags == 0 && !items.first()->local ) { + setTagInputEnabled( false ); + lEditTags->setText( i18n("The tags could not be read, because this file isn't a local one.\n" + "soundKonverter will try to read the tags, when it is about to convert the file.\n" + "If you want to edit the tags, you can hit the button below but then soundKonverter will not try\n" + "to read the tags.") ); + lEditTags->show(); + pEditTags->show(); + } + else if( items.first()->tags == 0 ) { + setTagInputEnabled( false ); + lEditTags->setText( i18n("Reading the tags of this file failed.\n" + "soundKonverter will try to read the tags a second time, when it is about to convert the file.\n" + "If you want to edit the tags, you can hit the button below but then soundKonverter will not try\n" + "to read the tags a second time.") ); + lEditTags->show(); + pEditTags->show(); + } + else { + lTitle->setText( items.first()->tags->title ); + iNumber->setValue( items.first()->tags->track ); + lArtist->setText( items.first()->tags->artist ); + lComposer->setText( items.first()->tags->composer ); + lAlbum->setText( items.first()->tags->album ); + iDisc->setValue( items.first()->tags->disc ); + iYear->setValue( items.first()->tags->year ); + cGenre->setCurrentText( items.first()->tags->genre ); + tComment->setText( items.first()->tags->comment ); + } + } + else { + setCaption( i18n("%1 Files").arg(items.count()) ); + QValueList<FileListItem*>::Iterator it = items.begin(); + ConversionOptions cOptions = (*it)->options; + QString title = ( (*it)->tags == 0 ) ? "" : (*it)->tags->title; + int number = ( (*it)->tags == 0 ) ? 0 : (*it)->tags->track; + QString artist = ( (*it)->tags == 0 ) ? "" : (*it)->tags->artist; + QString composer = ( (*it)->tags == 0 ) ? "" : (*it)->tags->composer; + QString album = ( (*it)->tags == 0 ) ? "" : (*it)->tags->album; + int disc = ( (*it)->tags == 0 ) ? 0 : (*it)->tags->disc; + int year = ( (*it)->tags == 0 ) ? 0 : (*it)->tags->year; + QString genre = ( (*it)->tags == 0 ) ? "" : (*it)->tags->genre; + QString comment = ( (*it)->tags == 0 ) ? "" : (*it)->tags->comment; + while( it != items.end() ) { + if( !cOptions.nearlyEqual((*it)->options) ) { + options->setEnabled( false ); + lEditOptions->setText( i18n("You have selected multiple files with different conversion options.\nYou can change the options of all files by hitting the button below.") ); + lEditOptions->show(); + pEditOptions->show(); + } + if( (*it)->tags == 0 ) { + setTagInputEnabled( false ); + lEditTags->setText( i18n("Reading the tags of one or more files failed.\n" + "soundKonverter will try to read the tags a second time, when it is about to convert the files.\n" + "If you want to edit the tags, you can hit the button below but then soundKonverter will not try\n" + "to read the tags a second time.") ); + lEditTags->show(); + pEditTags->show(); + it++; + continue; + } + if( title != (*it)->tags->title && lTitle->isEnabled() ) { + lTitle->setEnabled( false ); + lTitle->setText( "" ); + pTitleEdit->show(); + } + if( number != (*it)->tags->track && iNumber->isEnabled() ) { + iNumber->setEnabled( false ); + iNumber->setValue( 1 ); + pNumberEdit->show(); + } + if( artist != (*it)->tags->artist && lArtist->isEnabled() ) { + lArtist->setEnabled( false ); + lArtist->setText( "" ); + pArtistEdit->show(); + } + if( composer != (*it)->tags->composer && lComposer->isEnabled() ) { + lComposer->setEnabled( false ); + lComposer->setText( "" ); + pComposerEdit->show(); + } + if( album != (*it)->tags->album && lAlbum->isEnabled() ) { + lAlbum->setEnabled( false ); + lAlbum->setText( "" ); + pAlbumEdit->show(); + } + if( disc != (*it)->tags->disc && iDisc->isEnabled() ) { + iDisc->setEnabled( false ); + iDisc->setValue( 1 ); + pDiscEdit->show(); + } + if( year != (*it)->tags->year && iYear->isEnabled() ) { + iYear->setEnabled( false ); + iYear->setValue( QDate::currentDate().year() ); + pYearEdit->show(); + } + if( genre != (*it)->tags->genre && cGenre->isEnabled() ) { + cGenre->setEnabled( false ); + cGenre->setCurrentText( "" ); + pGenreEdit->show(); + } + if( comment != (*it)->tags->comment && tComment->isEnabled() ) { + tComment->setEnabled( false ); + tComment->setReadOnly( true ); + tComment->setText( "" ); + pCommentEdit->show(); + } + it++; + } + if( options->isEnabled() ) { + // HACK ...but seems to work... + // FIXME directory does get set properly + disconnect( options, SIGNAL(optionsChanged()), 0, 0 ); + options->setCurrentOptions( items.first()->options ); + connect( options, SIGNAL(optionsChanged()), + this, SLOT(optionsChanged()) + ); + } + if( lTitle->isEnabled() ) { + lTitle->setText( title ); + } + if( iNumber->isEnabled() ) { + iNumber->setValue( number ); + } + if( lArtist->isEnabled() ) { + lArtist->setText( artist ); + } + if( lComposer->isEnabled() ) { + lComposer->setText( composer ); + } + if( lAlbum->isEnabled() ) { + lAlbum->setText( album ); + } + if( iDisc->isEnabled() ) { + iDisc->setValue( disc ); + } + if( iYear->isEnabled() ) { + iYear->setValue( year ); + } + if( cGenre->isEnabled() ) { + cGenre->setCurrentText( genre ); + } + if( tComment->isEnabled() ) { + tComment->setText( comment ); + } + } +} + +void OptionsEditor::setPreviousEnabled( bool enabled ) +{ + enableButton( User2, enabled ); +} + +void OptionsEditor::setNextEnabled( bool enabled ) +{ + enableButton( User1, enabled ); +} + + +void OptionsEditor::optionsChanged() +{ + if( !options->isEnabled() ) return; + + QString filePathName; +// QString outputFilePathName; + + for( QValueList<FileListItem*>::Iterator it = selectedItems.begin(); it != selectedItems.end(); ++it ) { + filePathName = (*it)->options.filePathName; +// outputFilePathName = (*it)->options.outputFilePathName; + (*it)->options = options->getCurrentOptions(); + (*it)->options.filePathName = filePathName; +// (*it)->options.outputFilePathName = outputFilePathName; + //(*it)->updateOptionsCell(); + //(*it)->updateOutputCell(); + fileList->updateItem( *it ); + } +} + +void OptionsEditor::titleChanged( const QString& text ) +{ + if( !lTitle->isEnabled() ) return; + + for( QValueList<FileListItem*>::Iterator it = selectedItems.begin(); it != selectedItems.end(); ++it ) { + (*it)->tags->title = text; + //(*it)->updateOutputCell(); + fileList->updateItem( *it ); + } +} + +void OptionsEditor::numberChanged( int value ) +{ + if( !iNumber->isEnabled() ) return; + + for( QValueList<FileListItem*>::Iterator it = selectedItems.begin(); it != selectedItems.end(); ++it ) { + (*it)->tags->track = value; + //(*it)->updateOutputCell(); + fileList->updateItem( *it ); + } +} + +void OptionsEditor::artistChanged( const QString& text ) +{ + if( !lArtist->isEnabled() ) return; + + for( QValueList<FileListItem*>::Iterator it = selectedItems.begin(); it != selectedItems.end(); ++it ) { + (*it)->tags->artist = text; + //(*it)->updateOutputCell(); + fileList->updateItem( *it ); + } +} + +void OptionsEditor::composerChanged( const QString& text ) +{ + if( !lComposer->isEnabled() ) return; + + for( QValueList<FileListItem*>::Iterator it = selectedItems.begin(); it != selectedItems.end(); ++it ) { + (*it)->tags->composer = text; + //(*it)->updateOutputCell(); + fileList->updateItem( *it ); + } +} + +void OptionsEditor::albumChanged( const QString& text ) +{ + if( !lAlbum->isEnabled() ) return; + + for( QValueList<FileListItem*>::Iterator it = selectedItems.begin(); it != selectedItems.end(); ++it ) { + (*it)->tags->album = text; + //(*it)->updateOutputCell(); + fileList->updateItem( *it ); + } +} + +void OptionsEditor::discChanged( int value ) +{ + if( !iDisc->isEnabled() ) return; + + for( QValueList<FileListItem*>::Iterator it = selectedItems.begin(); it != selectedItems.end(); ++it ) { + (*it)->tags->disc = value; + //(*it)->updateOutputCell(); + fileList->updateItem( *it ); + } +} + +void OptionsEditor::yearChanged( int value ) +{ + if( !iYear->isEnabled() ) return; + + for( QValueList<FileListItem*>::Iterator it = selectedItems.begin(); it != selectedItems.end(); ++it ) { + (*it)->tags->year = value; + //(*it)->updateOutputCell(); + fileList->updateItem( *it ); + } +} + +void OptionsEditor::genreChanged( const QString& text ) +{ + if( !cGenre->isEnabled() ) return; + + for( QValueList<FileListItem*>::Iterator it = selectedItems.begin(); it != selectedItems.end(); ++it ) { + (*it)->tags->genre = text; + //(*it)->updateOutputCell(); + fileList->updateItem( *it ); + } +} + +void OptionsEditor::commentChanged() +{ + if( !tComment->isEnabled() ) return; + + QString text = tComment->text(); + + for( QValueList<FileListItem*>::Iterator it = selectedItems.begin(); it != selectedItems.end(); ++it ) { + (*it)->tags->comment = text; + //(*it)->updateOutputCell(); + fileList->updateItem( *it ); + } +} + + +void OptionsEditor::editTitleClicked() +{ + lTitle->setEnabled( true ); + lTitle->setFocus(); + pTitleEdit->hide(); + titleChanged( lTitle->text() ); +} + +void OptionsEditor::editNumberClicked() +{ + iNumber->setEnabled( true ); + iNumber->setFocus(); + pNumberEdit->hide(); + numberChanged( iNumber->value() ); +} + +void OptionsEditor::editArtistClicked() +{ + lArtist->setEnabled( true ); + lArtist->setFocus(); + pArtistEdit->hide(); + artistChanged( lArtist->text() ); +} + +void OptionsEditor::editComposerClicked() +{ + lComposer->setEnabled( true ); + lComposer->setFocus(); + pComposerEdit->hide(); + composerChanged( lComposer->text() ); +} + +void OptionsEditor::editAlbumClicked() +{ + lAlbum->setEnabled( true ); + lAlbum->setFocus(); + pAlbumEdit->hide(); + albumChanged( lAlbum->text() ); +} + +void OptionsEditor::editDiscClicked() +{ + iDisc->setEnabled( true ); + iDisc->setFocus(); + pDiscEdit->hide(); + discChanged( iDisc->value() ); +} + +void OptionsEditor::editYearClicked() +{ + iYear->setEnabled( true ); + iYear->setFocus(); + pYearEdit->hide(); + yearChanged( iYear->value() ); +} + +void OptionsEditor::editGenreClicked() +{ + cGenre->setEnabled( true ); + cGenre->setFocus(); + pGenreEdit->hide(); + genreChanged( cGenre->currentText() ); +} + +void OptionsEditor::editCommentClicked() +{ + tComment->setEnabled( true ); + tComment->setReadOnly( false ); + tComment->setFocus(); + pCommentEdit->hide(); + commentChanged(); +} + + +void OptionsEditor::editOptionsClicked() +{ + // TODO set default / first profile (use config values) + options->setProfile( i18n("Medium") ); + options->setFormat( "ogg" ); + options->setEnabled( true ); + lEditOptions->hide(); + pEditOptions->hide(); + optionsChanged(); +} + +void OptionsEditor::editTagsClicked() +{ + for( QValueList<FileListItem*>::Iterator it = selectedItems.begin(); it != selectedItems.end(); ++it ) { + (*it)->tags = new TagData(); + } + + itemsSelected( selectedItems ); +} + |