#include "configenvironmentpage.h" #include "config.h" #include #include #include #include //#include //#include #include #include #include #include #include #include ConfigEnvironmentPage::ConfigEnvironmentPage( Config* _config, TQMap* _binaries, TQWidget *parent, const char *name ) : ConfigPageBase( parent, name ) { config = _config; binaries = _binaries; // create an icon loader object for loading icons KIconLoader* iconLoader = new KIconLoader(); TQVBoxLayout* box = new TQVBoxLayout( parent, 0, 6 ); TQLabel* lDirectoriesLabel = new TQLabel( i18n("Directories to be scanned")+":", parent, "lDirectoriesLabel" ); box->addWidget( lDirectoriesLabel ); // KEditListBox* eDirectories = new KEditListBox( parent, "eDirectories" ); // box->addWidget( eDirectories ); TQHBoxLayout* directoriesBox = new TQHBoxLayout( box ); lDirectories = new TDEListBox( parent, "lDirectories" ); lDirectories->insertStringList( config->data.environment.directories ); directoriesBox->addWidget( lDirectories ); connect( lDirectories, TQT_SIGNAL(highlighted(int)), this, TQT_SLOT(directoriesSelectionChanged(int)) ); TQVBoxLayout* directoriesMiddleBox = new TQVBoxLayout( directoriesBox ); pDirUp = new KPushButton( "", parent, "pDirUp" ); pDirUp->setPixmap( iconLoader->loadIcon("up",KIcon::Toolbar) ); pDirUp->setEnabled( false ); TQToolTip::add( pDirUp, i18n("Move selected directory one position up.\nThis effects which backend will be chosen, if there are several versions.") ); directoriesMiddleBox->addWidget( pDirUp ); connect( pDirUp, TQT_SIGNAL(clicked()), this, TQT_SLOT(dirUp()) ); directoriesMiddleBox->addStretch(); pDirDown = new KPushButton( "", parent, "pDirDown" ); pDirDown->setPixmap( iconLoader->loadIcon("down",KIcon::Toolbar) ); pDirDown->setEnabled( false ); TQToolTip::add( pDirDown, i18n("Move selected directory one position down.\nThis effects which backend will be chosen, if there are several versions.") ); directoriesMiddleBox->addWidget( pDirDown ); connect( pDirDown, TQT_SIGNAL(clicked()), this, TQT_SLOT(dirDown()) ); TQVBoxLayout* directoriesRightBox = new TQVBoxLayout( directoriesBox ); pAddDirectory = new KPushButton( iconLoader->loadIcon("add",KIcon::Small), i18n("Add ..."), parent, "pAddDirectory" ); directoriesRightBox->addWidget( pAddDirectory ); connect( pAddDirectory, TQT_SIGNAL(clicked()), this, TQT_SLOT(addDirectory()) ); pRemoveDirectory = new KPushButton( iconLoader->loadIcon("remove",KIcon::Small), i18n("Remove"), parent, "pRemoveDirectory" ); directoriesRightBox->addWidget( pRemoveDirectory ); pRemoveDirectory->setEnabled( false ); connect( pRemoveDirectory, TQT_SIGNAL(clicked()), this, TQT_SLOT(removeDirectory()) ); directoriesRightBox->addStretch(); box->addSpacing( 5 ); TQHBoxLayout* programsBox = new TQHBoxLayout( box ); TQVBoxLayout* foundProgramsBox = new TQVBoxLayout( programsBox ); TQLabel* lFoundProgramsLabel = new TQLabel( i18n("Programs found")+":", parent, "lFoundProgramsLabel" ); foundProgramsBox->addWidget( lFoundProgramsLabel ); lFoundPrograms = new TDEListBox( parent, "lFoundPrograms" ); lFoundPrograms->setSelectionMode( TQListBox::NoSelection ); foundProgramsBox->addWidget( lFoundPrograms ); //connect(lPrograms,TQT_SIGNAL(highlighted(int)),this,TQT_SLOT(programsSelectionChanged(int))); programsBox->setStretchFactor( foundProgramsBox, 3 ); TQVBoxLayout* notFoundProgramsBox = new TQVBoxLayout( programsBox ); TQLabel* lNotFoundProgramsLabel = new TQLabel( i18n("Programs not found")+":", parent, "lNotFoundProgramsLabel" ); notFoundProgramsBox->addWidget( lNotFoundProgramsLabel ); lNotFoundPrograms = new TDEListBox( parent, "lNotFoundPrograms" ); lNotFoundPrograms->setSelectionMode( TQListBox::NoSelection ); notFoundProgramsBox->addWidget( lNotFoundPrograms ); //connect(lPrograms,TQT_SIGNAL(highlighted(int)),this,TQT_SLOT(programsSelectionChanged(int))); programsBox->setStretchFactor( notFoundProgramsBox, 2 ); for( TQMap::Iterator it = config->binaries.begin(); it != config->binaries.end(); ++it ) { if( it.data() != "" ) { lFoundPrograms->insertItem( it.data() ); } else { lNotFoundPrograms->insertItem( it.key() ); } } // box->addStretch(); // delete the icon loader object delete iconLoader; } ConfigEnvironmentPage::~ConfigEnvironmentPage() {} void ConfigEnvironmentPage::resetDefaults() { lDirectories->clear(); TQString datadir = locateLocal( "data", "soundkonverter/bin/" ); datadir.remove( datadir.length() - 1, 1 ); lDirectories->insertItem( datadir ); lDirectories->insertItem( TQDir::homeDirPath() + "/bin" ); lDirectories->insertItem( "/usr/local/bin" ); lDirectories->insertItem( "/usr/bin" ); refill(); cfgChanged(); } void ConfigEnvironmentPage::saveSettings() { config->data.environment.directories.clear(); for( uint i = 0; i < lDirectories->count(); i++ ) { config->data.environment.directories.append( lDirectories->text(i) ); } config->binaries = *binaries; } void ConfigEnvironmentPage::directoriesSelectionChanged( int index ) { pRemoveDirectory->setEnabled( true ); if( index != 0 ) pDirUp->setEnabled( true ); else pDirUp->setEnabled( false ); if( index != lDirectories->count() - 1 ) pDirDown->setEnabled( true ); else pDirDown->setEnabled( false ); } void ConfigEnvironmentPage::dirUp() { int index = lDirectories->currentItem(); if( index > 0 ) { TQString text = lDirectories->currentText(); lDirectories->removeItem( index ); lDirectories->insertItem( text, index - 1 ); lDirectories->setSelected( index - 1, true ); refill(); cfgChanged(); } } void ConfigEnvironmentPage::dirDown() { int index = lDirectories->currentItem(); if( (uint)index < lDirectories->count() - 1 ) { TQString text = lDirectories->currentText(); lDirectories->removeItem( index ); lDirectories->insertItem( text, index + 1 ); lDirectories->setSelected( index + 1, true ); refill(); cfgChanged(); } } void ConfigEnvironmentPage::addDirectory() { TQString dirname = KFileDialog::getExistingDirectory( "/", 0 ); if( dirname != NULL ) { lDirectories->insertItem( dirname ); refill(); cfgChanged(); } } void ConfigEnvironmentPage::removeDirectory() { lDirectories->removeItem( lDirectories->currentItem() ); refill(); cfgChanged(); } void ConfigEnvironmentPage::refill() { for( TQMap::Iterator it = binaries->begin(); it != binaries->end(); ++it ) { it.data() = ""; for( uint i = 0; i < lDirectories->count(); i++ ) { if( it.data() == "" && TQFile::exists(lDirectories->text(i) + "/" + it.key()) ) { it.data() = lDirectories->text(i) + "/" + it.key(); } } } lFoundPrograms->clear(); lNotFoundPrograms->clear(); for( TQMap::Iterator it = binaries->begin(); it != binaries->end(); ++it ) { if( it.data() != "" ) { lFoundPrograms->insertItem( it.data() ); } else { lNotFoundPrograms->insertItem( it.key() ); } } emit rebuildBackendsPage(); }