#include "dirdialog.h" #include "configuration.h" #include <tqlayout.h> #include <tqlabel.h> #include <tqdir.h> #include <tqcheckbox.h> #include <tdelocale.h> #include <kiconloader.h> #include <klineedit.h> #include <kpushbutton.h> // #include <kurlrequester.h> #include <tdelistbox.h> #include <tdefiledialog.h> DirDialog::DirDialog( Config* config, Mode mode, TQWidget *parent, const char *name, bool modal, WFlags f ) : KDialog( parent, name, modal, f ) { // create an icon loader object for loading icons TDEIconLoader* iconLoader = new TDEIconLoader(); setCaption( i18n("Add folder") ); resize( 400, 235 ); setIcon( iconLoader->loadIcon("folder_open",TDEIcon::Small) ); TQGridLayout* grid = new TQGridLayout( this, 4, 1, 11, 6 ); TQHBoxLayout* directoryBox = new TQHBoxLayout(); grid->addLayout( directoryBox, 0, 0 ); TQLabel* labelDirectory = new TQLabel( i18n("Directory:"), this, "labelDirectory" ); directoryBox->addWidget( labelDirectory ); // uDirectory = new KURLRequester( this, "uDirectory" ); // uDirectory->setMode( KFile::Directory | KFile::ExistingOnly | KFile::LocalOnly ); // uDirectory->setURL( TQDir::homeDirPath() ); // directoryBox->addWidget( uDirectory ); lDirectory = new KLineEdit( this, "lDirectory" ); directoryBox->addWidget( lDirectory ); pDirectory = new KPushButton( iconLoader->loadIcon("folder_open",TDEIcon::Small), "", this, "pDirectory" ); directoryBox->addWidget( pDirectory ); connect( pDirectory, TQ_SIGNAL(clicked()), this, TQ_SLOT(selectDirectoryClicked()) ); TQHBoxLayout* fileTypesBox = new TQHBoxLayout(); grid->addLayout( fileTypesBox, 1, 0 ); fileTypes = new TDEListBox( this, "fileTypes" ); if( mode == Convert ) fileTypes->insertStringList( config->fileTypes() ); else if( mode == ReplayGain ) fileTypes->insertStringList( config->replayGainFileTypes() ); fileTypes->setSelectionMode( TQListBox::Multi ); for( int i = 0; i < fileTypes->count(); i++ ) fileTypes->setSelected( i, true ); fileTypesBox->addWidget( fileTypes ); TQVBoxLayout* fileTypesButtonsBox = new TQVBoxLayout(); fileTypesBox->addLayout( fileTypesButtonsBox ); pSelectAll = new KPushButton( iconLoader->loadIcon("font-x-generic",TDEIcon::Small), i18n("Select all"), this, "pSelectAll" ); fileTypesButtonsBox->addWidget( pSelectAll ); connect( pSelectAll, TQ_SIGNAL(clicked()), this, TQ_SLOT(selectAllClicked()) ); pSelectNone = new KPushButton( iconLoader->loadIcon("application-x-zerosize",TDEIcon::Small), i18n("Select none"), this, "pSelectNone" ); fileTypesButtonsBox->addWidget( pSelectNone ); connect( pSelectNone, TQ_SIGNAL(clicked()), this, TQ_SLOT(selectNoneClicked()) ); cRecursive = new TQCheckBox( i18n("Recursive"), this, "cRecursive" ); cRecursive->setChecked( true ); recursive = true; fileTypesButtonsBox->addWidget( cRecursive ); connect( cRecursive, TQ_SIGNAL(toggled(bool)), this, TQ_SLOT(recursiveToggled(bool)) ); fileTypesButtonsBox->addStretch(); TQHBoxLayout* buttonBox = new TQHBoxLayout(); grid->addLayout( buttonBox, 2, 0 ); pOk = new KPushButton( iconLoader->loadIcon("folder_open",TDEIcon::Small), i18n("Open"), this, "pOk" ); buttonBox->addWidget( pOk ); connect( pOk, TQ_SIGNAL(clicked()), this, TQ_SLOT(okClicked()) ); buttonBox->addStretch(); pCancel = new KPushButton( iconLoader->loadIcon("cancel",TDEIcon::Small),i18n("Cancel"), this, "pCancel" ); pOk->setFocus(); buttonBox->addWidget( pCancel ); connect( pCancel, TQ_SIGNAL(clicked()), this, TQ_SLOT(reject()) ); // delete the icon loader object delete iconLoader; TQString directory = KFileDialog::getExistingDirectory( ":file_open", this, i18n("Choose a directory") ); if( !directory.isEmpty() ) { lDirectory->setText( directory ); } else { lDirectory->setText( TQDir::homeDirPath() ); } } DirDialog::~DirDialog() {} void DirDialog::okClicked() { selectedFileTypes.clear(); for( int i = 0; i < fileTypes->count(); i++ ) { if( fileTypes->isSelected(i) ) selectedFileTypes += TQStringList::split(", ",fileTypes->text(i)); } directory = lDirectory->text(); emit accept(); } void DirDialog::selectDirectoryClicked() { TQString directory = KFileDialog::getExistingDirectory( lDirectory->text(), this, i18n("Choose a directory") ); if( !directory.isEmpty() ) { lDirectory->setText( directory ); } } void DirDialog::selectAllClicked() { for( int i = 0; i < fileTypes->count(); i++ ) fileTypes->setSelected( i, true ); } void DirDialog::selectNoneClicked() { for( int i = 0; i < fileTypes->count(); i++ ) fileTypes->setSelected( i, false ); } void DirDialog::recursiveToggled( bool checked ) { recursive = checked; } #include "dirdialog.moc"