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