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/optionseditor.cpp

732 lines
27 KiB

#include "optionseditor.h"
#include "options.h"
#include "tagengine.h"
#include "filelist.h"
#include "conversionoptions.h"
#include "outputdirectory.h"
#include "configuration.h"
#include <tqlayout.h>
#include <tqstring.h>
#include <tqlabel.h>
#include <tqdatetime.h>
#include <tdelocale.h>
#include <kiconloader.h>
#include <kpushbutton.h>
//#include <tdemessagebox.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, TQWidget* 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
TDEIconLoader* iconLoader = new TDEIconLoader();
resize( 400, 350 );
// TODO move the dialog beside the main window
setIcon( iconLoader->loadIcon("view_text",TDEIcon::Small) );
// setButtonGuiItem( User2, KGuiItem(i18n("Previous"),iconLoader->loadIconSet("go-previous",TDEIcon::Small,16,true/*KDE3.5,false*/)) );
// setButtonGuiItem( User1, KGuiItem(i18n("Next"),iconLoader->loadIconSet("go-next",TDEIcon::Small,16,true/*KDE3.5,false*/)) );
setButtonGuiItem( Ok, KGuiItem(i18n("Close"),iconLoader->loadIconSet("system-log-out",TDEIcon::Small,16,true/*KDE3.5,false*/)) );
//// options page ////
conversionOptions = addPage( i18n("Conversion"), i18n("Conversion options"), iconLoader->loadIcon("soundkonverter",TDEIcon::Desktop) );
// the grid for all widgets in the main window
TQGridLayout* conversionOptionsGridLayout = new TQGridLayout( 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, TQ_SIGNAL(optionsChanged()),
this, TQ_SLOT(optionsChanged())
);
conversionOptionsGridLayout->setRowStretch( 1, 1 );
lEditOptions = new TQLabel( "", conversionOptions, "lEditOptions" );
conversionOptionsGridLayout->addWidget( lEditOptions, 2, 0 );
lEditOptions->setAlignment( TQt::AlignHCenter );
lEditOptions->hide();
pEditOptions = new KPushButton( i18n("Edit conversion options"), conversionOptions, "pEditOptions" );
pEditOptions->setFixedWidth( pEditOptions->sizeHint().width() );
conversionOptionsGridLayout->addWidget( pEditOptions, 3, 0, TQt::AlignHCenter );
pEditOptions->hide();
connect( pEditOptions, TQ_SIGNAL(clicked()),
this, TQ_SLOT(editOptionsClicked())
);
//// tags page ////
tags = addPage( i18n("Tags"), i18n("Tags"), iconLoader->loadIcon("view_text",TDEIcon::Desktop) );
// the grid for all widgets in the main window
TQGridLayout* tagsGridLayout = new TQGridLayout( tags, 1, 1, 0, 6, "tagsGridLayout" );
// add the inputs
// add a horizontal box layout for the title and track number
TQHBoxLayout *titleBox = new TQHBoxLayout( -1, "titleBox" );
tagsGridLayout->addLayout( titleBox, 0, 1 );
// and fill it up
lTitleLabel = new TQLabel( i18n("Title:"), tags, "lTitleLabel" );
tagsGridLayout->addWidget( lTitleLabel, 0, 0 );
lTitle = new KLineEdit( tags, "lTitle" );
titleBox->addWidget( lTitle );
connect( lTitle, TQ_SIGNAL(textChanged(const TQString&)),
this, TQ_SLOT(titleChanged(const TQString&))
);
pTitleEdit = new KPushButton( " ", tags, "pTitleEdit" );
pTitleEdit->setPixmap( iconLoader->loadIcon("kwrite",TDEIcon::Small) );
pTitleEdit->setFixedSize( lTitle->sizeHint().height(), lTitle->sizeHint().height() );
pTitleEdit->hide();
titleBox->addWidget( pTitleEdit );
connect( pTitleEdit, TQ_SIGNAL(clicked()),
this, TQ_SLOT(editTitleClicked())
);
lNumberLabel = new TQLabel( i18n("Track No.:"), tags, "lNumberLabel" );
titleBox->addWidget( lNumberLabel );
iNumber = new KIntSpinBox( 0, 999, 1, 1, 10, tags, "iNumber" );
titleBox->addWidget( iNumber );
connect( iNumber, TQ_SIGNAL(valueChanged(int)),
this, TQ_SLOT(numberChanged(int))
);
pNumberEdit = new KPushButton( " ", tags, "pNumberEdit" );
pNumberEdit->setPixmap( iconLoader->loadIcon("kwrite",TDEIcon::Small) );
pNumberEdit->setFixedSize( iNumber->sizeHint().height(), iNumber->sizeHint().height() );
pNumberEdit->hide();
titleBox->addWidget( pNumberEdit );
connect( pNumberEdit, TQ_SIGNAL(clicked()),
this, TQ_SLOT(editNumberClicked())
);
// add a horizontal box layout for the artist and the composer
TQHBoxLayout *artistBox = new TQHBoxLayout( -1, "artistBox" );
tagsGridLayout->addLayout( artistBox, 1, 1 );
// and fill it up
lArtistLabel = new TQLabel( i18n("Artist:"), tags, "lArtistLabel" );
tagsGridLayout->addWidget( lArtistLabel, 1, 0 );
lArtist = new KLineEdit( tags, "lArtist" );
artistBox->addWidget( lArtist );
connect( lArtist, TQ_SIGNAL(textChanged(const TQString&)),
this, TQ_SLOT(artistChanged(const TQString&))
);
pArtistEdit = new KPushButton( " ", tags, "pArtistEdit" );
pArtistEdit->setPixmap( iconLoader->loadIcon("kwrite",TDEIcon::Small) );
pArtistEdit->setFixedSize( lArtist->sizeHint().height(), lArtist->sizeHint().height() );
pArtistEdit->hide();
artistBox->addWidget( pArtistEdit );
connect( pArtistEdit, TQ_SIGNAL(clicked()),
this, TQ_SLOT(editArtistClicked())
);
lComposerLabel = new TQLabel( i18n("Composer:"), tags, "lComposerLabel" );
artistBox->addWidget( lComposerLabel );
lComposer = new KLineEdit( tags, "lComposer" );
artistBox->addWidget( lComposer );
connect( lComposer, TQ_SIGNAL(textChanged(const TQString&)),
this, TQ_SLOT(composerChanged(const TQString&))
);
pComposerEdit = new KPushButton( " ", tags, "pComposerEdit" );
pComposerEdit->setPixmap( iconLoader->loadIcon("kwrite",TDEIcon::Small) );
pComposerEdit->setFixedSize( lComposer->sizeHint().height(), lComposer->sizeHint().height() );
pComposerEdit->hide();
artistBox->addWidget( pComposerEdit );
connect( pComposerEdit, TQ_SIGNAL(clicked()),
this, TQ_SLOT(editComposerClicked())
);
// add a horizontal box layout for the album
TQHBoxLayout *albumBox = new TQHBoxLayout( -1, "albumBox" );
tagsGridLayout->addLayout( albumBox, 2, 1 );
// and fill it up
lAlbumLabel = new TQLabel( i18n("Album:"), tags, "lAlbumLabel" );
tagsGridLayout->addWidget( lAlbumLabel, 2, 0 );
lAlbum = new KLineEdit( tags, "lAlbum" );
albumBox->addWidget( lAlbum );
connect( lAlbum, TQ_SIGNAL(textChanged(const TQString&)),
this, TQ_SLOT(albumChanged(const TQString&))
);
pAlbumEdit = new KPushButton( " ", tags, "pAlbumEdit" );
pAlbumEdit->setPixmap( iconLoader->loadIcon("kwrite",TDEIcon::Small) );
pAlbumEdit->setFixedSize( lAlbum->sizeHint().height(), lAlbum->sizeHint().height() );
pAlbumEdit->hide();
albumBox->addWidget( pAlbumEdit );
connect( pAlbumEdit, TQ_SIGNAL(clicked()),
this, TQ_SLOT(editAlbumClicked())
);
// add a horizontal box layout for the disc number, year and genre
TQHBoxLayout *albumdataBox = new TQHBoxLayout( -1, "albumdataBox" );
tagsGridLayout->addLayout( albumdataBox, 3, 1 );
// and fill it up
lDiscLabel = new TQLabel( 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, TQ_SIGNAL(valueChanged(int)),
this, TQ_SLOT(discChanged(int))
);
pDiscEdit = new KPushButton( " ", tags, "pDiscEdit" );
pDiscEdit->setPixmap( iconLoader->loadIcon("kwrite",TDEIcon::Small) );
pDiscEdit->setFixedSize( iDisc->sizeHint().height(), iDisc->sizeHint().height() );
pDiscEdit->hide();
albumdataBox->addWidget( pDiscEdit );
connect( pDiscEdit, TQ_SIGNAL(clicked()),
this, TQ_SLOT(editDiscClicked())
);
albumdataBox->addStretch();
lYearLabel = new TQLabel( i18n("Year:"), tags, "lYearLabel" );
albumdataBox->addWidget( lYearLabel );
iYear = new KIntSpinBox( 0, 99999, 1, TQDate::currentDate().year(), 10, tags, "iYear" );
albumdataBox->addWidget( iYear );
connect( iYear, TQ_SIGNAL(valueChanged(int)),
this, TQ_SLOT(yearChanged(int))
);
pYearEdit = new KPushButton( " ", tags, "pYearEdit" );
pYearEdit->setPixmap( iconLoader->loadIcon("kwrite",TDEIcon::Small) );
pYearEdit->setFixedSize( iYear->sizeHint().height(), iYear->sizeHint().height() );
pYearEdit->hide();
albumdataBox->addWidget( pYearEdit );
connect( pYearEdit, TQ_SIGNAL(clicked()),
this, TQ_SLOT(editYearClicked())
);
albumdataBox->addStretch();
lGenreLabel = new TQLabel( i18n("Genre:"), tags, "lGenreLabel" );
albumdataBox->addWidget( lGenreLabel );
cGenre = new KComboBox( true, tags, "cGenre" );
cGenre->insertStringList( tagEngine->genreList );
cGenre->setCurrentText( "" );
TDECompletion *cGenreCompletion = cGenre->completionObject();
cGenreCompletion->insertItems( tagEngine->genreList );
cGenreCompletion->setIgnoreCase( tags );
albumdataBox->addWidget( cGenre );
connect( cGenre, TQ_SIGNAL(textChanged(const TQString&)),
this, TQ_SLOT(genreChanged(const TQString&))
);
pGenreEdit = new KPushButton( " ", tags, "pGenreEdit" );
pGenreEdit->setPixmap( iconLoader->loadIcon("kwrite",TDEIcon::Small) );
pGenreEdit->setFixedSize( cGenre->sizeHint().height(), cGenre->sizeHint().height() );
pGenreEdit->hide();
albumdataBox->addWidget( pGenreEdit );
connect( pGenreEdit, TQ_SIGNAL(clicked()),
this, TQ_SLOT(editGenreClicked())
);
// add a horizontal box layout for the comment
TQHBoxLayout *commentBox = new TQHBoxLayout( -1, "commentBox" );
tagsGridLayout->addLayout( commentBox, 4, 1 );
// and fill it up
lCommentLabel = new TQLabel( i18n("Comment:"), tags, "lCommentLabel" );
tagsGridLayout->addWidget( lCommentLabel, 4, 0 );
tComment = new KTextEdit( tags, "tComment" );
commentBox->addWidget( tComment );
connect( tComment, TQ_SIGNAL(textChanged()),
this, TQ_SLOT(commentChanged())
);
pCommentEdit = new KPushButton( " ", tags, "pCommentEdit" );
pCommentEdit->setPixmap( iconLoader->loadIcon("kwrite",TDEIcon::Small) );
pCommentEdit->setFixedSize( lTitle->sizeHint().height(), lTitle->sizeHint().height() );
pCommentEdit->hide();
commentBox->addWidget( pCommentEdit );
connect( pCommentEdit, TQ_SIGNAL(clicked()),
this, TQ_SLOT(editCommentClicked())
);
tagsGridLayout->setRowStretch( 4, 1 );
lEditTags = new TQLabel( "", tags, "lEditTags" );
tagsGridLayout->addWidget( lEditTags, 5, 1 );
lEditTags->setAlignment( TQt::AlignHCenter );
lEditTags->hide();
pEditTags = new KPushButton( i18n("Edit tags"), tags, "pEditTags" );
pEditTags->setFixedWidth( pEditTags->sizeHint().width() );
tagsGridLayout->addWidget( pEditTags, 6, 1, TQt::AlignHCenter );
pEditTags->hide();
connect( pEditTags, TQ_SIGNAL(clicked()),
this, TQ_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( TQValueList<FileListItem*> items )
{
for( TQValueList<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, TQ_SIGNAL(optionsChanged()), 0, 0 );
options->setCurrentOptions( items.first()->options );
connect( options, TQ_SIGNAL(optionsChanged()),
this, TQ_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()) );
TQValueList<FileListItem*>::Iterator it = items.begin();
ConversionOptions cOptions = (*it)->options;
TQString title = ( (*it)->tags == 0 ) ? "" : (*it)->tags->title;
int number = ( (*it)->tags == 0 ) ? 0 : (*it)->tags->track;
TQString artist = ( (*it)->tags == 0 ) ? "" : (*it)->tags->artist;
TQString composer = ( (*it)->tags == 0 ) ? "" : (*it)->tags->composer;
TQString 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;
TQString genre = ( (*it)->tags == 0 ) ? "" : (*it)->tags->genre;
TQString 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( TQDate::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, TQ_SIGNAL(optionsChanged()), 0, 0 );
options->setCurrentOptions( items.first()->options );
connect( options, TQ_SIGNAL(optionsChanged()),
this, TQ_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;
TQString filePathName;
// TQString outputFilePathName;
for( TQValueList<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 TQString& text )
{
if( !lTitle->isEnabled() ) return;
for( TQValueList<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( TQValueList<FileListItem*>::Iterator it = selectedItems.begin(); it != selectedItems.end(); ++it ) {
(*it)->tags->track = value;
//(*it)->updateOutputCell();
fileList->updateItem( *it );
}
}
void OptionsEditor::artistChanged( const TQString& text )
{
if( !lArtist->isEnabled() ) return;
for( TQValueList<FileListItem*>::Iterator it = selectedItems.begin(); it != selectedItems.end(); ++it ) {
(*it)->tags->artist = text;
//(*it)->updateOutputCell();
fileList->updateItem( *it );
}
}
void OptionsEditor::composerChanged( const TQString& text )
{
if( !lComposer->isEnabled() ) return;
for( TQValueList<FileListItem*>::Iterator it = selectedItems.begin(); it != selectedItems.end(); ++it ) {
(*it)->tags->composer = text;
//(*it)->updateOutputCell();
fileList->updateItem( *it );
}
}
void OptionsEditor::albumChanged( const TQString& text )
{
if( !lAlbum->isEnabled() ) return;
for( TQValueList<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( TQValueList<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( TQValueList<FileListItem*>::Iterator it = selectedItems.begin(); it != selectedItems.end(); ++it ) {
(*it)->tags->year = value;
//(*it)->updateOutputCell();
fileList->updateItem( *it );
}
}
void OptionsEditor::genreChanged( const TQString& text )
{
if( !cGenre->isEnabled() ) return;
for( TQValueList<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;
TQString text = tComment->text();
for( TQValueList<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( TQValueList<FileListItem*>::Iterator it = selectedItems.begin(); it != selectedItems.end(); ++it ) {
(*it)->tags = new TagData();
}
itemsSelected( selectedItems );
}
#include "optionseditor.moc"