summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/installtalkwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/rbutilqt/installtalkwindow.cpp')
-rw-r--r--rbutil/rbutilqt/installtalkwindow.cpp90
1 files changed, 46 insertions, 44 deletions
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)
28 ui.setupUi(this); 28 ui.setupUi(this);
29 talkcreator = new TalkFileCreator(this); 29 talkcreator = new TalkFileCreator(this);
30 30
31 connect(ui.buttonBrowse, SIGNAL(clicked()), this, SLOT(browseFolder()));
32 connect(ui.change,SIGNAL(clicked()),this,SLOT(change())); 31 connect(ui.change,SIGNAL(clicked()),this,SLOT(change()));
33 32
34 ui.recursive->setChecked(true); 33 ui.recursive->setChecked(true);
35 ui.GenerateOnlyNew->setChecked(true); 34 ui.GenerateOnlyNew->setChecked(true);
36 ui.StripExtensions->setChecked(true); 35 ui.StripExtensions->setChecked(true);
37 36
38 updateSettings(); 37 fsm = new QFileSystemModel(this);
39} 38 QString mp = RbSettings::value(RbSettings::Mountpoint).toString();
39 fsm->setRootPath(mp);
40 ui.treeView->setModel(fsm);
41 ui.treeView->setSelectionMode(QAbstractItemView::ExtendedSelection);
42 ui.treeView->setRootIndex(fsm->index(mp));
43 qDebug() << fsm->columnCount();
44 fsm->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot);
45 for(int i = 1; i < fsm->columnCount(); i++)
46 ui.treeView->setColumnHidden(i, true);
47 ui.treeView->setHeaderHidden(true);
40 48
41void InstallTalkWindow::browseFolder() 49 updateSettings();
42{
43 QString selected;
44 QString startfolder;
45 if(QFileInfo(ui.lineTalkFolder->text()).isDir())
46 {
47 startfolder = ui.lineTalkFolder->text();
48 }
49 else
50 {
51 startfolder = RbSettings::value(RbSettings::Mountpoint).toString();
52 }
53 selected = QFileDialog::getExistingDirectory(this,
54 tr("Select folder to create talk files"), startfolder);
55 if(!selected.isEmpty())
56 {
57 ui.lineTalkFolder->setText(selected);
58 }
59} 50}
60 51
61 52
62void InstallTalkWindow::change() 53void InstallTalkWindow::change()
63{ 54{
64 Config *cw = new Config(this,4); 55 Config *cw = new Config(this, 4);
65 56
66 // make sure the current selected folder doesn't get lost on settings 57 // make sure the current selected folder doesn't get lost on settings
67 // changes. If the current selection is invalid don't accept it so 58 // changes.
68 // it gets reset to the old value after closing the settings dialog. 59 QModelIndexList si = ui.treeView->selectionModel()->selectedIndexes();
69 QString folderToTalk = ui.lineTalkFolder->text(); 60 QStringList foldersToTalk;
70 if(QFileInfo(folderToTalk).isDir()) 61 for(int i = 0; i < si.size(); i++) {
71 RbSettings::setValue(RbSettings::LastTalkedFolder, folderToTalk); 62 if(si.at(i).column() == 0) {
63 foldersToTalk.append(fsm->filePath(si.at(i)));
64 }
65 }
66 RbSettings::setValue(RbSettings::LastTalkedFolder, foldersToTalk);
72 connect(cw, SIGNAL(settingsUpdated()), this, SLOT(updateSettings())); 67 connect(cw, SIGNAL(settingsUpdated()), this, SLOT(updateSettings()));
73 68
74 cw->show(); 69 cw->show();
@@ -78,24 +73,20 @@ void InstallTalkWindow::accept()
78{ 73{
79 logger = new ProgressLoggerGui(this); 74 logger = new ProgressLoggerGui(this);
80 75
76 QModelIndexList si = ui.treeView->selectionModel()->selectedIndexes();
77 QStringList foldersToTalk;
78 for(int i = 0; i < si.size(); i++) {
79 if(si.at(i).column() == 0) {
80 foldersToTalk.append(fsm->filePath(si.at(i)));
81 }
82 }
81 connect(logger,SIGNAL(closed()),this,SLOT(close())); 83 connect(logger,SIGNAL(closed()),this,SLOT(close()));
82 logger->show(); 84 logger->show();
83 85
84 86 RbSettings::setValue(RbSettings::LastTalkedFolder, foldersToTalk);
85 QString folderToTalk = ui.lineTalkFolder->text();
86
87 if(!QFileInfo(folderToTalk).isDir())
88 {
89 logger->addItem(tr("The Folder to Talk is wrong!"),LOGERROR);
90 logger->setFinished();
91 return;
92 }
93
94 RbSettings::setValue(RbSettings::LastTalkedFolder, folderToTalk);
95 87
96 RbSettings::sync(); 88 RbSettings::sync();
97 89
98 talkcreator->setDir(QDir(folderToTalk));
99 talkcreator->setMountPoint(RbSettings::value(RbSettings::Mountpoint).toString()); 90 talkcreator->setMountPoint(RbSettings::value(RbSettings::Mountpoint).toString());
100 91
101 talkcreator->setGenerateOnlyNew(ui.GenerateOnlyNew->isChecked()); 92 talkcreator->setGenerateOnlyNew(ui.GenerateOnlyNew->isChecked());
@@ -110,7 +101,10 @@ void InstallTalkWindow::accept()
110 connect(talkcreator, SIGNAL(logProgress(int, int)), logger, SLOT(setProgress(int, int))); 101 connect(talkcreator, SIGNAL(logProgress(int, int)), logger, SLOT(setProgress(int, int)));
111 connect(logger,SIGNAL(aborted()),talkcreator,SLOT(abort())); 102 connect(logger,SIGNAL(aborted()),talkcreator,SLOT(abort()));
112 103
113 talkcreator->createTalkFiles(); 104 for(int i = 0; i < foldersToTalk.size(); i++) {
105 talkcreator->setDir(QDir(foldersToTalk.at(i)));
106 talkcreator->createTalkFiles();
107 }
114} 108}
115 109
116 110
@@ -119,14 +113,22 @@ void InstallTalkWindow::updateSettings(void)
119 QString ttsName = RbSettings::value(RbSettings::Tts).toString(); 113 QString ttsName = RbSettings::value(RbSettings::Tts).toString();
120 TTSBase* tts = TTSBase::getTTS(this,ttsName); 114 TTSBase* tts = TTSBase::getTTS(this,ttsName);
121 if(tts->configOk()) 115 if(tts->configOk())
122 ui.labelTtsProfile->setText(tr("Selected TTS engine: <b>%1</b>") 116 ui.labelTtsProfile->setText(tr("<b>%1</b>")
123 .arg(TTSBase::getTTSName(ttsName))); 117 .arg(TTSBase::getTTSName(ttsName)));
124 else 118 else
125 ui.labelTtsProfile->setText(tr("Selected TTS engine: <b>%1</b>") 119 ui.labelTtsProfile->setText(tr("<b>%1</b>")
126 .arg("Invalid TTS configuration!")); 120 .arg("Invalid TTS configuration!"));
127 121
128 ui.lineTalkFolder->setText( 122 QStringList folders = RbSettings::value(RbSettings::LastTalkedFolder).toStringList();
129 RbSettings::value(RbSettings::LastTalkedFolder).toString()); 123 for(int i = 0; i < folders.size(); ++i) {
124 QModelIndex mi = fsm->index(folders.at(i));
125 ui.treeView->selectionModel()->select(mi, QItemSelectionModel::Select);
126 // make sure all parent items are expanded.
127 while((mi = mi.parent()) != QModelIndex()) {
128 ui.treeView->setExpanded(mi, true);
129 }
130 }
131
130 emit settingsUpdated(); 132 emit settingsUpdated();
131} 133}
132 134