diff --git a/rbutil/rbutilqt/installtalkfrm.ui b/rbutil/rbutilqt/installtalkfrm.ui index de9a199ac7..216a473573 100644 --- a/rbutil/rbutilqt/installtalkfrm.ui +++ b/rbutil/rbutilqt/installtalkfrm.ui @@ -9,15 +9,15 @@ 0 0 - 600 - 450 + 722 + 448 Install Talk Files - + @@ -30,37 +30,48 @@ - - - - Select the Folder to generate Talkfiles for. - - - - - - - Talkfile Folder - - - - - - - &Browse - - - - :/icons/system-search.png:/icons/system-search.png - - - - + - Generation settings + Generation options - + + + + + Strip Extensions + + + false + + + + + + + Generate for files + + + true + + + false + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + @@ -68,7 +79,27 @@ - + + + + Generate for folders + + + true + + + + + + + Recurse into folders + + + true + + + + @@ -81,49 +112,30 @@ - - - - Qt::Horizontal + + + + Ignore files - - - 40 - 20 - + + + + + + + + + Skip existing - + + true + + - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - + @@ -149,86 +161,46 @@ - - - - Generation options + + + + + + + Select folders for Talkfile generation (Ctrl for multiselect) - - - - - - - - Ignore files (comma seperated Wildcards): - - - - - - - Generate .talk files for Files - - - true - - - false - - - - - - - Generate .talk files for Folders - - - true - - - - - - - Run recursive - - - true - - - - - - - Strip Extensions - - - false - - - - - - - Create only new Talkfiles - - - true - - - - + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + - lineTalkFolder - buttonBrowse - change buttonOk buttonCancel + treeView + change + talkFiles + talkFolders + recursive + GenerateOnlyNew + StripExtensions + checkBox + ignoreFiles diff --git a/rbutil/rbutilqt/installtalkwindow.cpp b/rbutil/rbutilqt/installtalkwindow.cpp index de723ae33e..f2e042e2a5 100644 --- a/rbutil/rbutilqt/installtalkwindow.cpp +++ b/rbutil/rbutilqt/installtalkwindow.cpp @@ -28,47 +28,42 @@ InstallTalkWindow::InstallTalkWindow(QWidget *parent) : QDialog(parent) ui.setupUi(this); talkcreator = new TalkFileCreator(this); - connect(ui.buttonBrowse, SIGNAL(clicked()), this, SLOT(browseFolder())); connect(ui.change,SIGNAL(clicked()),this,SLOT(change())); ui.recursive->setChecked(true); ui.GenerateOnlyNew->setChecked(true); ui.StripExtensions->setChecked(true); - updateSettings(); -} + fsm = new QFileSystemModel(this); + QString mp = RbSettings::value(RbSettings::Mountpoint).toString(); + fsm->setRootPath(mp); + ui.treeView->setModel(fsm); + ui.treeView->setSelectionMode(QAbstractItemView::ExtendedSelection); + ui.treeView->setRootIndex(fsm->index(mp)); + qDebug() << fsm->columnCount(); + fsm->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot); + for(int i = 1; i < fsm->columnCount(); i++) + ui.treeView->setColumnHidden(i, true); + ui.treeView->setHeaderHidden(true); -void InstallTalkWindow::browseFolder() -{ - QString selected; - QString startfolder; - if(QFileInfo(ui.lineTalkFolder->text()).isDir()) - { - startfolder = ui.lineTalkFolder->text(); - } - else - { - startfolder = RbSettings::value(RbSettings::Mountpoint).toString(); - } - selected = QFileDialog::getExistingDirectory(this, - tr("Select folder to create talk files"), startfolder); - if(!selected.isEmpty()) - { - ui.lineTalkFolder->setText(selected); - } + updateSettings(); } void InstallTalkWindow::change() { - Config *cw = new Config(this,4); + Config *cw = new Config(this, 4); // make sure the current selected folder doesn't get lost on settings - // changes. If the current selection is invalid don't accept it so - // it gets reset to the old value after closing the settings dialog. - QString folderToTalk = ui.lineTalkFolder->text(); - if(QFileInfo(folderToTalk).isDir()) - RbSettings::setValue(RbSettings::LastTalkedFolder, folderToTalk); + // changes. + QModelIndexList si = ui.treeView->selectionModel()->selectedIndexes(); + QStringList foldersToTalk; + for(int i = 0; i < si.size(); i++) { + if(si.at(i).column() == 0) { + foldersToTalk.append(fsm->filePath(si.at(i))); + } + } + RbSettings::setValue(RbSettings::LastTalkedFolder, foldersToTalk); connect(cw, SIGNAL(settingsUpdated()), this, SLOT(updateSettings())); cw->show(); @@ -78,24 +73,20 @@ void InstallTalkWindow::accept() { logger = new ProgressLoggerGui(this); + QModelIndexList si = ui.treeView->selectionModel()->selectedIndexes(); + QStringList foldersToTalk; + for(int i = 0; i < si.size(); i++) { + if(si.at(i).column() == 0) { + foldersToTalk.append(fsm->filePath(si.at(i))); + } + } connect(logger,SIGNAL(closed()),this,SLOT(close())); logger->show(); - - QString folderToTalk = ui.lineTalkFolder->text(); - - if(!QFileInfo(folderToTalk).isDir()) - { - logger->addItem(tr("The Folder to Talk is wrong!"),LOGERROR); - logger->setFinished(); - return; - } - - RbSettings::setValue(RbSettings::LastTalkedFolder, folderToTalk); + RbSettings::setValue(RbSettings::LastTalkedFolder, foldersToTalk); RbSettings::sync(); - talkcreator->setDir(QDir(folderToTalk)); talkcreator->setMountPoint(RbSettings::value(RbSettings::Mountpoint).toString()); talkcreator->setGenerateOnlyNew(ui.GenerateOnlyNew->isChecked()); @@ -110,7 +101,10 @@ void InstallTalkWindow::accept() connect(talkcreator, SIGNAL(logProgress(int, int)), logger, SLOT(setProgress(int, int))); connect(logger,SIGNAL(aborted()),talkcreator,SLOT(abort())); - talkcreator->createTalkFiles(); + for(int i = 0; i < foldersToTalk.size(); i++) { + talkcreator->setDir(QDir(foldersToTalk.at(i))); + talkcreator->createTalkFiles(); + } } @@ -119,14 +113,22 @@ void InstallTalkWindow::updateSettings(void) QString ttsName = RbSettings::value(RbSettings::Tts).toString(); TTSBase* tts = TTSBase::getTTS(this,ttsName); if(tts->configOk()) - ui.labelTtsProfile->setText(tr("Selected TTS engine: %1") + ui.labelTtsProfile->setText(tr("%1") .arg(TTSBase::getTTSName(ttsName))); else - ui.labelTtsProfile->setText(tr("Selected TTS engine: %1") + ui.labelTtsProfile->setText(tr("%1") .arg("Invalid TTS configuration!")); - ui.lineTalkFolder->setText( - RbSettings::value(RbSettings::LastTalkedFolder).toString()); + QStringList folders = RbSettings::value(RbSettings::LastTalkedFolder).toStringList(); + for(int i = 0; i < folders.size(); ++i) { + QModelIndex mi = fsm->index(folders.at(i)); + ui.treeView->selectionModel()->select(mi, QItemSelectionModel::Select); + // make sure all parent items are expanded. + while((mi = mi.parent()) != QModelIndex()) { + ui.treeView->setExpanded(mi, true); + } + } + emit settingsUpdated(); } diff --git a/rbutil/rbutilqt/installtalkwindow.h b/rbutil/rbutilqt/installtalkwindow.h index acac221af9..ab233955d8 100644 --- a/rbutil/rbutilqt/installtalkwindow.h +++ b/rbutil/rbutilqt/installtalkwindow.h @@ -38,7 +38,6 @@ class InstallTalkWindow : public QDialog void change(void); private slots: - void browseFolder(void); void updateSettings(void); signals: @@ -49,6 +48,7 @@ class InstallTalkWindow : public QDialog TalkFileCreator* talkcreator; Ui::InstallTalkFrm ui; ProgressLoggerGui* logger; + QFileSystemModel *fsm; }; #endif