diff options
Diffstat (limited to 'rbutil/rbutilqt/installtalkwindow.cpp')
-rw-r--r-- | rbutil/rbutilqt/installtalkwindow.cpp | 90 |
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 | ||
41 | void 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 | ||
62 | void InstallTalkWindow::change() | 53 | void 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 | ||