diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-03-01 19:09:31 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-03-01 19:09:31 +0000 |
commit | f2cfda2a54780868dfe0af7bd652fcd4906547da (patch) | |
tree | c6ac23545528f5701818424f2af5f79ce3665e6c /src/configenvironmentpage.cpp | |
download | soundkonverter-f2cfda2a54780868dfe0af7bd652fcd4906547da.tar.gz soundkonverter-f2cfda2a54780868dfe0af7bd652fcd4906547da.zip |
Added KDE3 version of SoundKonverter
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/soundkonverter@1097614 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'src/configenvironmentpage.cpp')
-rwxr-xr-x | src/configenvironmentpage.cpp | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/src/configenvironmentpage.cpp b/src/configenvironmentpage.cpp new file mode 100755 index 0000000..26dbd5b --- /dev/null +++ b/src/configenvironmentpage.cpp @@ -0,0 +1,223 @@ + +#include "configenvironmentpage.h" + +#include "config.h" + +#include <klocale.h> +#include <kiconloader.h> +#include <kpushbutton.h> +#include <klistbox.h> +//#include <keditlistbox.h> +//#include <kurlrequester.h> +#include <kfiledialog.h> +#include <kstandarddirs.h> + +#include <qlayout.h> +#include <qlabel.h> +#include <qtooltip.h> +#include <qmap.h> + + +ConfigEnvironmentPage::ConfigEnvironmentPage( Config* _config, QMap<QString, QString>* _binaries, QWidget *parent, const char *name ) + : ConfigPageBase( parent, name ) +{ + config = _config; + binaries = _binaries; + + // create an icon loader object for loading icons + KIconLoader* iconLoader = new KIconLoader(); + + QVBoxLayout* box = new QVBoxLayout( parent, 0, 6 ); + + QLabel* lDirectoriesLabel = new QLabel( i18n("Directories to be scanned")+":", parent, "lDirectoriesLabel" ); + box->addWidget( lDirectoriesLabel ); + +// KEditListBox* eDirectories = new KEditListBox( parent, "eDirectories" ); +// box->addWidget( eDirectories ); + + QHBoxLayout* directoriesBox = new QHBoxLayout( box ); + lDirectories = new KListBox( parent, "lDirectories" ); + lDirectories->insertStringList( config->data.environment.directories ); + directoriesBox->addWidget( lDirectories ); + connect( lDirectories, SIGNAL(highlighted(int)), + this, SLOT(directoriesSelectionChanged(int)) + ); + + QVBoxLayout* directoriesMiddleBox = new QVBoxLayout( directoriesBox ); + pDirUp = new KPushButton( "", parent, "pDirUp" ); + pDirUp->setPixmap( iconLoader->loadIcon("up",KIcon::Toolbar) ); + pDirUp->setEnabled( false ); + QToolTip::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, SIGNAL(clicked()), + this, SLOT(dirUp()) + ); + + directoriesMiddleBox->addStretch(); + pDirDown = new KPushButton( "", parent, "pDirDown" ); + pDirDown->setPixmap( iconLoader->loadIcon("down",KIcon::Toolbar) ); + pDirDown->setEnabled( false ); + QToolTip::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, SIGNAL(clicked()), + this, SLOT(dirDown()) + ); + + QVBoxLayout* directoriesRightBox = new QVBoxLayout( directoriesBox ); + pAddDirectory = new KPushButton( iconLoader->loadIcon("add",KIcon::Small), i18n("Add ..."), parent, "pAddDirectory" ); + directoriesRightBox->addWidget( pAddDirectory ); + connect( pAddDirectory, SIGNAL(clicked()), + this, SLOT(addDirectory()) + ); + + pRemoveDirectory = new KPushButton( iconLoader->loadIcon("remove",KIcon::Small), i18n("Remove"), parent, "pRemoveDirectory" ); + directoriesRightBox->addWidget( pRemoveDirectory ); + pRemoveDirectory->setEnabled( false ); + connect( pRemoveDirectory, SIGNAL(clicked()), + this, SLOT(removeDirectory()) + ); + + directoriesRightBox->addStretch(); + + box->addSpacing( 5 ); + + QHBoxLayout* programsBox = new QHBoxLayout( box ); + + QVBoxLayout* foundProgramsBox = new QVBoxLayout( programsBox ); + QLabel* lFoundProgramsLabel = new QLabel( i18n("Programs found")+":", parent, "lFoundProgramsLabel" ); + foundProgramsBox->addWidget( lFoundProgramsLabel ); + lFoundPrograms = new KListBox( parent, "lFoundPrograms" ); + lFoundPrograms->setSelectionMode( QListBox::NoSelection ); + foundProgramsBox->addWidget( lFoundPrograms ); + //connect(lPrograms,SIGNAL(highlighted(int)),this,SLOT(programsSelectionChanged(int))); + programsBox->setStretchFactor( foundProgramsBox, 3 ); + + QVBoxLayout* notFoundProgramsBox = new QVBoxLayout( programsBox ); + QLabel* lNotFoundProgramsLabel = new QLabel( i18n("Programs not found")+":", parent, "lNotFoundProgramsLabel" ); + notFoundProgramsBox->addWidget( lNotFoundProgramsLabel ); + lNotFoundPrograms = new KListBox( parent, "lNotFoundPrograms" ); + lNotFoundPrograms->setSelectionMode( QListBox::NoSelection ); + notFoundProgramsBox->addWidget( lNotFoundPrograms ); + //connect(lPrograms,SIGNAL(highlighted(int)),this,SLOT(programsSelectionChanged(int))); + programsBox->setStretchFactor( notFoundProgramsBox, 2 ); + + for( QMap<QString, QString>::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(); + QString datadir = locateLocal( "data", "soundkonverter/bin/" ); + datadir.remove( datadir.length() - 1, 1 ); + lDirectories->insertItem( datadir ); + lDirectories->insertItem( QDir::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 ) { + QString 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 ) { + QString text = lDirectories->currentText(); + lDirectories->removeItem( index ); + lDirectories->insertItem( text, index + 1 ); + lDirectories->setSelected( index + 1, true ); + refill(); + cfgChanged(); + } +} + +void ConfigEnvironmentPage::addDirectory() +{ + QString 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( QMap<QString, QString>::Iterator it = binaries->begin(); it != binaries->end(); ++it ) { + it.data() = ""; + for( uint i = 0; i < lDirectories->count(); i++ ) { + if( it.data() == "" && QFile::exists(lDirectories->text(i) + "/" + it.key()) ) { + it.data() = lDirectories->text(i) + "/" + it.key(); + } + } + } + + lFoundPrograms->clear(); + lNotFoundPrograms->clear(); + for( QMap<QString, QString>::Iterator it = binaries->begin(); it != binaries->end(); ++it ) { + if( it.data() != "" ) { + lFoundPrograms->insertItem( it.data() ); + } + else { + lNotFoundPrograms->insertItem( it.key() ); + } + } + + emit rebuildBackendsPage(); +} + + |