summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2007-08-28 23:10:42 +0000
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2007-08-28 23:10:42 +0000
commitc03102b34616f81f35cc2ea17af2942fd009d291 (patch)
treeb6a61535c9e63e9a982b9dc5493f0d27c86f2788
parentf2bf042edfef57e499b4d18694acca92d435d447 (diff)
downloadrockbox-c03102b34616f81f35cc2ea17af2942fd009d291.tar.gz
rockbox-c03102b34616f81f35cc2ea17af2942fd009d291.zip
Completely rework the talk files window: move settings to configuration dialog and add configuration presets. Remove some old cruft from talkfile handling and rely on values from rbutil.ini. Autodetection of executables is missing.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14495 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--rbutil/rbutilqt/configure.cpp92
-rw-r--r--rbutil/rbutilqt/configure.h3
-rw-r--r--rbutil/rbutilqt/configurefrm.ui209
-rw-r--r--rbutil/rbutilqt/icons/audio-input-microphone.pngbin0 -> 703 bytes
-rw-r--r--rbutil/rbutilqt/installtalkfrm.ui134
-rw-r--r--rbutil/rbutilqt/installtalkwindow.cpp192
-rw-r--r--rbutil/rbutilqt/installtalkwindow.h21
-rw-r--r--rbutil/rbutilqt/installzip.h2
-rw-r--r--rbutil/rbutilqt/rbutil.ini42
-rw-r--r--rbutil/rbutilqt/rbutilqt.qrc1
-rw-r--r--rbutil/rbutilqt/talkfile.cpp26
-rw-r--r--rbutil/rbutilqt/talkfile.h24
12 files changed, 386 insertions, 360 deletions
diff --git a/rbutil/rbutilqt/configure.cpp b/rbutil/rbutilqt/configure.cpp
index e6b97b214d..b1f778b586 100644
--- a/rbutil/rbutilqt/configure.cpp
+++ b/rbutil/rbutilqt/configure.cpp
@@ -68,6 +68,10 @@ Config::Config(QWidget *parent) : QDialog(parent)
68 connect(ui.buttonAutodetect,SIGNAL(clicked()),this,SLOT(autodetect())); 68 connect(ui.buttonAutodetect,SIGNAL(clicked()),this,SLOT(autodetect()));
69 connect(ui.buttonCacheBrowse, SIGNAL(clicked()), this, SLOT(browseCache())); 69 connect(ui.buttonCacheBrowse, SIGNAL(clicked()), this, SLOT(browseCache()));
70 connect(ui.buttonCacheClear, SIGNAL(clicked()), this, SLOT(cacheClear())); 70 connect(ui.buttonCacheClear, SIGNAL(clicked()), this, SLOT(cacheClear()));
71 connect(ui.browseTts, SIGNAL(clicked()), this, SLOT(browseTts()));
72 connect(ui.comboEncoder, SIGNAL(currentIndexChanged(int)), this, SLOT(updateEncOpts(int)));
73 connect(ui.comboTts, SIGNAL(currentIndexChanged(int)), this, SLOT(updateTtsOpts(int)));
74
71 75
72} 76}
73 77
@@ -119,6 +123,19 @@ void Config::accept()
119 userSettings->setValue("defaults/cachedisable", ui.cacheDisable->isChecked()); 123 userSettings->setValue("defaults/cachedisable", ui.cacheDisable->isChecked());
120 userSettings->setValue("defaults/offline", ui.cacheOfflineMode->isChecked()); 124 userSettings->setValue("defaults/offline", ui.cacheOfflineMode->isChecked());
121 125
126 // tts settings
127 if(QFileInfo(ui.ttsExecutable->text()).isExecutable())
128 userSettings->setValue("ttsbin", ui.ttsExecutable->text());
129 userSettings->setValue("ttsopts", ui.ttsOptions->text());
130 if(QFileInfo(ui.encoderExecutable->text()).isExecutable())
131 userSettings->setValue("encbin", ui.encoderExecutable->text());
132 userSettings->setValue("ttsopts", ui.ttsOptions->text());
133 QString preset;
134 preset = ui.comboEncoder->itemData(ui.comboEncoder->currentIndex(), Qt::UserRole).toString();
135 userSettings->setValue("encpreset", preset);
136 preset = ui.comboTts->itemData(ui.comboTts->currentIndex(), Qt::UserRole).toString();
137 userSettings->setValue("ttspreset", preset);
138
122 // sync settings 139 // sync settings
123 userSettings->sync(); 140 userSettings->sync();
124 this->close(); 141 this->close();
@@ -186,6 +203,7 @@ void Config::setUserSettings(QSettings *user)
186 } 203 }
187 ui.cacheSize->setText(tr("Current cache size is %1 kiB.") 204 ui.cacheSize->setText(tr("Current cache size is %1 kiB.")
188 .arg(sz/1024)); 205 .arg(sz/1024));
206
189} 207}
190 208
191 209
@@ -262,6 +280,58 @@ void Config::setDevices(QSettings *dev)
262 ui.treeDevices->insertTopLevelItems(0, items); 280 ui.treeDevices->insertTopLevelItems(0, items);
263 if(w3 != 0) 281 if(w3 != 0)
264 ui.treeDevices->setCurrentItem(w3); // hilight old selection 282 ui.treeDevices->setCurrentItem(w3); // hilight old selection
283
284 // tts / encoder tab
285 QStringList keys;
286
287 devices->beginGroup("encoders");
288 keys = devices->allKeys();
289 for(int i=0; i < keys.size();i++)
290 ui.comboEncoder->addItem(devices->value(keys.at(i), "null").toString(),
291 keys.at(i));
292 devices->endGroup();
293
294 devices->beginGroup("tts");
295 keys = devices->allKeys();
296 for(int i=0; i < keys.size();i++)
297 ui.comboTts->addItem(devices->value(keys.at(i), "null").toString(), keys.at(i));
298 devices->endGroup();
299
300 int index;
301 index = ui.comboTts->findData(userSettings->value("ttspreset").toString(),
302 Qt::UserRole, Qt::MatchExactly);
303 ui.comboTts->setCurrentIndex(index);
304 updateTtsOpts(index);
305 ui.ttsExecutable->setText(userSettings->value("ttsbin").toString());
306
307 index = ui.comboEncoder->findData(userSettings->value("encpreset").toString(),
308 Qt::UserRole, Qt::MatchExactly);
309 ui.comboEncoder->setCurrentIndex(index);
310 updateEncOpts(index);
311 ui.encoderExecutable->setText(userSettings->value("encbin").toString());
312
313}
314
315
316void Config::updateEncOpts(int index)
317{
318 qDebug() << "updateEncOpts()";
319 QString c = ui.comboEncoder->itemData(index, Qt::UserRole).toString();
320 devices->beginGroup(c);
321 ui.encoderOptions->setText(devices->value("options").toString());
322 ui.encoderOptions->setEnabled(devices->value("edit").toBool());
323 devices->endGroup();
324}
325
326
327void Config::updateTtsOpts(int index)
328{
329 QString c = ui.comboTts->itemData(index, Qt::UserRole).toString();
330 devices->beginGroup(c);
331 qDebug() << devices->value("edit").toBool();
332 ui.ttsOptions->setText(devices->value("options").toString());
333 ui.ttsOptions->setEnabled(devices->value("edit").toBool());
334 devices->endGroup();
265} 335}
266 336
267 337
@@ -466,3 +536,25 @@ void Config::cacheClear()
466 qDebug() << "removed:" << f; 536 qDebug() << "removed:" << f;
467 } 537 }
468} 538}
539
540
541void Config::browseTts()
542{
543 BrowseDirtree browser(this);
544 browser.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
545
546 if(QFileInfo(ui.ttsExecutable->text()).isDir())
547 {
548 QDir d(ui.ttsExecutable->text());
549 browser.setDir(d);
550 }
551 if(browser.exec() == QDialog::Accepted)
552 {
553 qDebug() << browser.getSelected();
554 QString exe = browser.getSelected();
555 if(!QFileInfo(exe).isExecutable())
556 return;
557 ui.ttsExecutable->setText(exe);
558 }
559
560}
diff --git a/rbutil/rbutilqt/configure.h b/rbutil/rbutilqt/configure.h
index 33f30acc0f..ee7ff08604 100644
--- a/rbutil/rbutilqt/configure.h
+++ b/rbutil/rbutilqt/configure.h
@@ -63,6 +63,9 @@ class Config : public QDialog
63 void setMountpoint(QString); 63 void setMountpoint(QString);
64 void setCache(QString); 64 void setCache(QString);
65 void cacheClear(void); 65 void cacheClear(void);
66 void browseTts(void);
67 void updateTtsOpts(int);
68 void updateEncOpts(int);
66}; 69};
67 70
68#endif 71#endif
diff --git a/rbutil/rbutilqt/configurefrm.ui b/rbutil/rbutilqt/configurefrm.ui
index 087cdf34bd..af54ad1442 100644
--- a/rbutil/rbutilqt/configurefrm.ui
+++ b/rbutil/rbutilqt/configurefrm.ui
@@ -6,7 +6,7 @@
6 <x>0</x> 6 <x>0</x>
7 <y>0</y> 7 <y>0</y>
8 <width>500</width> 8 <width>500</width>
9 <height>400</height> 9 <height>435</height>
10 </rect> 10 </rect>
11 </property> 11 </property>
12 <property name="windowTitle" > 12 <property name="windowTitle" >
@@ -20,39 +20,6 @@
20 </property> 20 </property>
21 </widget> 21 </widget>
22 </item> 22 </item>
23 <item row="2" column="0" >
24 <spacer>
25 <property name="orientation" >
26 <enum>Qt::Horizontal</enum>
27 </property>
28 <property name="sizeHint" >
29 <size>
30 <width>40</width>
31 <height>20</height>
32 </size>
33 </property>
34 </spacer>
35 </item>
36 <item row="2" column="1" >
37 <widget class="QPushButton" name="buttonOk" >
38 <property name="text" >
39 <string>&amp;Ok</string>
40 </property>
41 <property name="icon" >
42 <iconset resource="rbutilqt.qrc" >:/icons/icons/go-next.png</iconset>
43 </property>
44 </widget>
45 </item>
46 <item row="2" column="2" >
47 <widget class="QPushButton" name="buttonCancel" >
48 <property name="text" >
49 <string>&amp;Cancel</string>
50 </property>
51 <property name="icon" >
52 <iconset resource="rbutilqt.qrc" >:/icons/icons/process-stop.png</iconset>
53 </property>
54 </widget>
55 </item>
56 <item row="1" column="0" colspan="3" > 23 <item row="1" column="0" colspan="3" >
57 <widget class="QTabWidget" name="tabConfiguration" > 24 <widget class="QTabWidget" name="tabConfiguration" >
58 <property name="currentIndex" > 25 <property name="currentIndex" >
@@ -319,7 +286,7 @@
319 <string>&amp;Browse</string> 286 <string>&amp;Browse</string>
320 </property> 287 </property>
321 <property name="icon" > 288 <property name="icon" >
322 <iconset resource="rbutilqt.qrc" >:/icons/icons/system-search.png</iconset> 289 <iconset resource="rbutilqt.qrc" >:/icons/icons/edit-find.png</iconset>
323 </property> 290 </property>
324 </widget> 291 </widget>
325 </item> 292 </item>
@@ -384,6 +351,178 @@
384 </item> 351 </item>
385 </layout> 352 </layout>
386 </widget> 353 </widget>
354 <widget class="QWidget" name="tabTts" >
355 <attribute name="title" >
356 <string>&amp;TTS &amp;&amp; Encoder</string>
357 </attribute>
358 <attribute name="icon" >
359 <iconset resource="rbutilqt.qrc" >:/icons/icons/audio-input-microphone.png</iconset>
360 </attribute>
361 <layout class="QGridLayout" >
362 <item row="0" column="0" colspan="2" >
363 <widget class="QGroupBox" name="groupBox_2" >
364 <property name="title" >
365 <string>TTS Engine</string>
366 </property>
367 <layout class="QGridLayout" >
368 <item row="0" column="0" >
369 <widget class="QLabel" name="labelTts" >
370 <property name="text" >
371 <string>&amp;Select TTS profile</string>
372 </property>
373 <property name="buddy" >
374 <cstring>comboTts</cstring>
375 </property>
376 </widget>
377 </item>
378 <item row="0" column="1" colspan="2" >
379 <widget class="QComboBox" name="comboTts" />
380 </item>
381 <item row="1" column="0" >
382 <widget class="QLabel" name="labelTtsExecutable" >
383 <property name="text" >
384 <string>TTS executable</string>
385 </property>
386 <property name="buddy" >
387 <cstring>ttsExecutable</cstring>
388 </property>
389 </widget>
390 </item>
391 <item row="1" column="1" >
392 <widget class="QLineEdit" name="ttsExecutable" />
393 </item>
394 <item row="1" column="2" >
395 <widget class="QPushButton" name="browseTts" >
396 <property name="text" >
397 <string>&amp;Browse</string>
398 </property>
399 <property name="icon" >
400 <iconset resource="rbutilqt.qrc" >:/icons/icons/edit-find.png</iconset>
401 </property>
402 </widget>
403 </item>
404 <item row="2" column="0" >
405 <widget class="QLabel" name="labelTtsOptions" >
406 <property name="text" >
407 <string>TTS Options</string>
408 </property>
409 <property name="buddy" >
410 <cstring>ttsOptions</cstring>
411 </property>
412 </widget>
413 </item>
414 <item row="2" column="1" colspan="2" >
415 <widget class="QLineEdit" name="ttsOptions" />
416 </item>
417 </layout>
418 </widget>
419 </item>
420 <item rowspan="2" row="1" column="0" colspan="2" >
421 <widget class="QGroupBox" name="groupBox_3" >
422 <property name="title" >
423 <string>Encoder Engine</string>
424 </property>
425 <layout class="QGridLayout" >
426 <item row="0" column="0" >
427 <widget class="QLabel" name="labelEncoder" >
428 <property name="text" >
429 <string>Select &amp;encoder profile</string>
430 </property>
431 <property name="buddy" >
432 <cstring>comboEncoder</cstring>
433 </property>
434 </widget>
435 </item>
436 <item row="0" column="1" colspan="2" >
437 <widget class="QComboBox" name="comboEncoder" />
438 </item>
439 <item row="1" column="0" >
440 <widget class="QLabel" name="labelEncoderExecutable" >
441 <property name="text" >
442 <string>Encoder executable</string>
443 </property>
444 <property name="buddy" >
445 <cstring>encoderExecutable</cstring>
446 </property>
447 </widget>
448 </item>
449 <item row="1" column="1" >
450 <widget class="QLineEdit" name="encoderExecutable" />
451 </item>
452 <item row="1" column="2" >
453 <widget class="QPushButton" name="browseEncoder" >
454 <property name="text" >
455 <string>B&amp;rowse</string>
456 </property>
457 <property name="icon" >
458 <iconset resource="rbutilqt.qrc" >:/icons/icons/edit-find.png</iconset>
459 </property>
460 </widget>
461 </item>
462 <item row="2" column="0" >
463 <widget class="QLabel" name="labelEncoderOptions" >
464 <property name="text" >
465 <string>Encoder options</string>
466 </property>
467 <property name="buddy" >
468 <cstring>encoderOptions</cstring>
469 </property>
470 </widget>
471 </item>
472 <item row="2" column="1" colspan="2" >
473 <widget class="QLineEdit" name="encoderOptions" />
474 </item>
475 </layout>
476 </widget>
477 </item>
478 <item row="3" column="0" >
479 <spacer>
480 <property name="orientation" >
481 <enum>Qt::Vertical</enum>
482 </property>
483 <property name="sizeHint" >
484 <size>
485 <width>20</width>
486 <height>40</height>
487 </size>
488 </property>
489 </spacer>
490 </item>
491 </layout>
492 </widget>
493 </widget>
494 </item>
495 <item row="2" column="0" >
496 <spacer>
497 <property name="orientation" >
498 <enum>Qt::Horizontal</enum>
499 </property>
500 <property name="sizeHint" >
501 <size>
502 <width>40</width>
503 <height>20</height>
504 </size>
505 </property>
506 </spacer>
507 </item>
508 <item row="2" column="1" >
509 <widget class="QPushButton" name="buttonOk" >
510 <property name="text" >
511 <string>&amp;Ok</string>
512 </property>
513 <property name="icon" >
514 <iconset resource="rbutilqt.qrc" >:/icons/icons/go-next.png</iconset>
515 </property>
516 </widget>
517 </item>
518 <item row="2" column="2" >
519 <widget class="QPushButton" name="buttonCancel" >
520 <property name="text" >
521 <string>&amp;Cancel</string>
522 </property>
523 <property name="icon" >
524 <iconset resource="rbutilqt.qrc" >:/icons/icons/process-stop.png</iconset>
525 </property>
387 </widget> 526 </widget>
388 </item> 527 </item>
389 </layout> 528 </layout>
diff --git a/rbutil/rbutilqt/icons/audio-input-microphone.png b/rbutil/rbutilqt/icons/audio-input-microphone.png
new file mode 100644
index 0000000000..53a0393179
--- /dev/null
+++ b/rbutil/rbutilqt/icons/audio-input-microphone.png
Binary files differ
diff --git a/rbutil/rbutilqt/installtalkfrm.ui b/rbutil/rbutilqt/installtalkfrm.ui
index d43326dd6e..ef1a997826 100644
--- a/rbutil/rbutilqt/installtalkfrm.ui
+++ b/rbutil/rbutilqt/installtalkfrm.ui
@@ -8,15 +8,15 @@
8 <rect> 8 <rect>
9 <x>0</x> 9 <x>0</x>
10 <y>0</y> 10 <y>0</y>
11 <width>681</width> 11 <width>600</width>
12 <height>516</height> 12 <height>450</height>
13 </rect> 13 </rect>
14 </property> 14 </property>
15 <property name="windowTitle" > 15 <property name="windowTitle" >
16 <string>Install Talk Files</string> 16 <string>Install Talk Files</string>
17 </property> 17 </property>
18 <layout class="QGridLayout" > 18 <layout class="QGridLayout" >
19 <item rowspan="5" row="0" column="0" > 19 <item rowspan="6" row="0" column="0" >
20 <widget class="QLabel" name="label" > 20 <widget class="QLabel" name="label" >
21 <property name="text" > 21 <property name="text" >
22 <string/> 22 <string/>
@@ -29,17 +29,17 @@
29 </property> 29 </property>
30 </widget> 30 </widget>
31 </item> 31 </item>
32 <item row="0" column="1" colspan="5" > 32 <item row="0" column="1" colspan="3" >
33 <widget class="QLabel" name="label_2" > 33 <widget class="QLabel" name="label_2" >
34 <property name="text" > 34 <property name="text" >
35 <string>Select the Folder to generate Talkfiles for.</string> 35 <string>Select the Folder to generate Talkfiles for.</string>
36 </property> 36 </property>
37 </widget> 37 </widget>
38 </item> 38 </item>
39 <item row="1" column="1" colspan="4" > 39 <item row="1" column="1" colspan="2" >
40 <widget class="QLineEdit" name="lineTalkFolder" /> 40 <widget class="QLineEdit" name="lineTalkFolder" />
41 </item> 41 </item>
42 <item row="1" column="5" > 42 <item row="1" column="3" >
43 <widget class="QPushButton" name="buttonBrowse" > 43 <widget class="QPushButton" name="buttonBrowse" >
44 <property name="text" > 44 <property name="text" >
45 <string>&amp;Browse</string> 45 <string>&amp;Browse</string>
@@ -49,134 +49,74 @@
49 </property> 49 </property>
50 </widget> 50 </widget>
51 </item> 51 </item>
52 <item row="2" column="1" colspan="5" > 52 <item row="2" column="1" colspan="3" >
53 <widget class="QGroupBox" name="groupBox" > 53 <widget class="QGroupBox" name="groupBox_2" >
54 <property name="title" > 54 <property name="title" >
55 <string>TTS Engine</string> 55 <string>Generation settings</string>
56 </property> 56 </property>
57 <layout class="QGridLayout" > 57 <layout class="QGridLayout" >
58 <item row="0" column="0" colspan="2" > 58 <item row="0" column="0" >
59 <widget class="QLabel" name="label_3" > 59 <widget class="QLabel" name="labelEncProfile" >
60 <property name="text" >
61 <string>Select a TTS Engine</string>
62 </property>
63 </widget>
64 </item>
65 <item row="1" column="0" colspan="2" >
66 <widget class="QComboBox" name="TTScbx" />
67 </item>
68 <item row="2" column="0" colspan="2" >
69 <widget class="QLabel" name="label_4" >
70 <property name="text" >
71 <string>Select the TTS executable in your Filesystem</string>
72 </property>
73 </widget>
74 </item>
75 <item row="3" column="0" >
76 <widget class="QLineEdit" name="TTSpath" />
77 </item>
78 <item row="3" column="1" >
79 <widget class="QPushButton" name="buttonBrowseTTS" >
80 <property name="text" > 60 <property name="text" >
81 <string>Browse</string> 61 <string>Encoder profile:</string>
82 </property> 62 </property>
83 </widget> 63 </widget>
84 </item> 64 </item>
85 <item row="4" column="0" > 65 <item row="1" column="0" >
86 <widget class="QLabel" name="label_7" > 66 <widget class="QLabel" name="labelTtsProfile" >
87 <property name="text" > 67 <property name="text" >
88 <string>TTS Options</string> 68 <string>TTS profile:</string>
89 </property> 69 </property>
90 </widget> 70 </widget>
91 </item> 71 </item>
92 <item row="5" column="0" colspan="2" >
93 <widget class="QLineEdit" name="TTSOptions" />
94 </item>
95 </layout> 72 </layout>
96 </widget> 73 </widget>
97 </item> 74 </item>
98 <item row="3" column="1" colspan="5" > 75 <item row="3" column="1" colspan="3" >
99 <widget class="QGroupBox" name="groupBox_2" > 76 <widget class="QGroupBox" name="groupBox" >
100 <property name="title" > 77 <property name="title" >
101 <string>Encoder Engine</string> 78 <string>Generation options</string>
102 </property> 79 </property>
103 <layout class="QGridLayout" > 80 <layout class="QGridLayout" >
104 <item row="0" column="0" colspan="2" > 81 <item row="0" column="0" >
105 <widget class="QLabel" name="label_5" > 82 <widget class="QCheckBox" name="OverwriteWav" >
106 <property name="text" > 83 <property name="text" >
107 <string>Select an Encoder</string> 84 <string>Overwrite Wavefiles</string>
108 </property> 85 </property>
109 </widget> 86 </widget>
110 </item> 87 </item>
111 <item row="1" column="0" colspan="2" > 88 <item row="1" column="0" >
112 <widget class="QComboBox" name="Encodercbx" /> 89 <widget class="QCheckBox" name="RemoveWav" >
90 <property name="text" >
91 <string>Remove Wavefiles</string>
92 </property>
93 </widget>
113 </item> 94 </item>
114 <item row="2" column="0" colspan="2" > 95 <item row="2" column="0" >
115 <widget class="QLabel" name="label_6" > 96 <widget class="QCheckBox" name="recursive" >
116 <property name="text" > 97 <property name="text" >
117 <string>Select the Encoder executable in your Filesystem</string> 98 <string>Run recursive</string>
118 </property> 99 </property>
119 </widget> 100 </widget>
120 </item> 101 </item>
121 <item row="3" column="0" > 102 <item row="3" column="0" >
122 <widget class="QLineEdit" name="Encoderpath" /> 103 <widget class="QCheckBox" name="StripExtensions" >
123 </item>
124 <item row="3" column="1" >
125 <widget class="QPushButton" name="buttonBrowseEncoder" >
126 <property name="text" > 104 <property name="text" >
127 <string>Browse</string> 105 <string>Strip Extensions</string>
128 </property> 106 </property>
129 </widget> 107 </widget>
130 </item> 108 </item>
131 <item row="4" column="0" > 109 <item row="4" column="0" >
132 <widget class="QLabel" name="label_8" > 110 <widget class="QCheckBox" name="OverwriteTalk" >
133 <property name="text" > 111 <property name="text" >
134 <string>Encoder Options</string> 112 <string>Overwrite Talkfiles</string>
135 </property> 113 </property>
136 </widget> 114 </widget>
137 </item> 115 </item>
138 <item row="5" column="0" colspan="2" >
139 <widget class="QLineEdit" name="EncoderOptions" />
140 </item>
141 </layout> 116 </layout>
142 </widget> 117 </widget>
143 </item> 118 </item>
144 <item row="4" column="1" >
145 <widget class="QCheckBox" name="OverwriteWav" >
146 <property name="text" >
147 <string>Overwrite Wavefiles</string>
148 </property>
149 </widget>
150 </item>
151 <item row="4" column="2" > 119 <item row="4" column="2" >
152 <widget class="QCheckBox" name="RemoveWav" >
153 <property name="text" >
154 <string>Remove Wavefiles</string>
155 </property>
156 </widget>
157 </item>
158 <item row="4" column="3" colspan="2" >
159 <widget class="QCheckBox" name="recursive" >
160 <property name="text" >
161 <string>Run recursive</string>
162 </property>
163 </widget>
164 </item>
165 <item row="5" column="1" >
166 <widget class="QCheckBox" name="OverwriteTalk" >
167 <property name="text" >
168 <string>Overwrite Talkfiles</string>
169 </property>
170 </widget>
171 </item>
172 <item row="5" column="2" >
173 <widget class="QCheckBox" name="StripExtensions" >
174 <property name="text" >
175 <string>Strip Extensions</string>
176 </property>
177 </widget>
178 </item>
179 <item row="5" column="4" >
180 <spacer> 120 <spacer>
181 <property name="orientation" > 121 <property name="orientation" >
182 <enum>Qt::Vertical</enum> 122 <enum>Qt::Vertical</enum>
@@ -184,12 +124,12 @@
184 <property name="sizeHint" > 124 <property name="sizeHint" >
185 <size> 125 <size>
186 <width>20</width> 126 <width>20</width>
187 <height>111</height> 127 <height>40</height>
188 </size> 128 </size>
189 </property> 129 </property>
190 </spacer> 130 </spacer>
191 </item> 131 </item>
192 <item row="6" column="1" colspan="3" > 132 <item row="5" column="1" >
193 <spacer> 133 <spacer>
194 <property name="orientation" > 134 <property name="orientation" >
195 <enum>Qt::Horizontal</enum> 135 <enum>Qt::Horizontal</enum>
@@ -202,7 +142,7 @@
202 </property> 142 </property>
203 </spacer> 143 </spacer>
204 </item> 144 </item>
205 <item row="6" column="4" colspan="2" > 145 <item row="5" column="2" colspan="2" >
206 <layout class="QHBoxLayout" > 146 <layout class="QHBoxLayout" >
207 <item> 147 <item>
208 <widget class="QPushButton" name="buttonOk" > 148 <widget class="QPushButton" name="buttonOk" >
diff --git a/rbutil/rbutilqt/installtalkwindow.cpp b/rbutil/rbutilqt/installtalkwindow.cpp
index d52d7788ce..cc2def6ab1 100644
--- a/rbutil/rbutilqt/installtalkwindow.cpp
+++ b/rbutil/rbutilqt/installtalkwindow.cpp
@@ -28,19 +28,12 @@ InstallTalkWindow::InstallTalkWindow(QWidget *parent) : QDialog(parent)
28 talkcreator = new TalkFileCreator(this); 28 talkcreator = new TalkFileCreator(this);
29 29
30 connect(ui.buttonBrowse, SIGNAL(clicked()), this, SLOT(browseFolder())); 30 connect(ui.buttonBrowse, SIGNAL(clicked()), this, SLOT(browseFolder()));
31 connect(ui.buttonBrowseTTS, SIGNAL(clicked()), this, SLOT(browseTTS())); 31
32 connect(ui.buttonBrowseEncoder, SIGNAL(clicked()), this, SLOT(browseEncoder()));
33
34 connect(ui.Encodercbx,SIGNAL(currentIndexChanged(int)),this,SLOT(setEncoderOptions(int)));
35 connect(ui.TTScbx,SIGNAL(currentIndexChanged(int)),this,SLOT(setTTSOptions(int)));
36
37 ui.OverwriteWav->setChecked(true); 32 ui.OverwriteWav->setChecked(true);
38 ui.RemoveWav->setChecked(true); 33 ui.RemoveWav->setChecked(true);
39 ui.recursive->setChecked(true); 34 ui.recursive->setChecked(true);
40 ui.OverwriteTalk->setChecked(true); 35 ui.OverwriteTalk->setChecked(true);
41 ui.StripExtensions->setChecked(true); 36 ui.StripExtensions->setChecked(true);
42
43
44} 37}
45 38
46void InstallTalkWindow::browseFolder() 39void InstallTalkWindow::browseFolder()
@@ -67,87 +60,9 @@ void InstallTalkWindow::browseFolder()
67 60
68void InstallTalkWindow::setTalkFolder(QString folder) 61void InstallTalkWindow::setTalkFolder(QString folder)
69{ 62{
70 ui.lineTalkFolder->clear(); 63 ui.lineTalkFolder->setText(folder);
71 ui.lineTalkFolder->insert(folder);
72} 64}
73 65
74void InstallTalkWindow::browseTTS()
75{
76 BrowseDirtree browser(this);
77 browser.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
78
79 if(QFileInfo(ui.TTSpath->text()).isDir())
80 {
81 QDir d(ui.TTSpath->text());
82 browser.setDir(d);
83 }
84 else
85 {
86 QDir d("/media");
87 browser.setDir(d);
88 }
89 if(browser.exec() == QDialog::Accepted)
90 {
91 qDebug() << browser.getSelected();
92 setTTSExec(browser.getSelected());
93 }
94
95}
96
97void InstallTalkWindow::setTTSExec(QString path)
98{
99 ui.TTSpath->clear();
100 ui.TTSpath->insert(path);
101}
102
103void InstallTalkWindow::browseEncoder()
104{
105 BrowseDirtree browser(this);
106 browser.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
107
108 if(QFileInfo(ui.Encoderpath->text()).isDir())
109 {
110 QDir d(ui.Encoderpath->text());
111 browser.setDir(d);
112 }
113 else
114 {
115 QDir d("/media");
116 browser.setDir(d);
117 }
118 if(browser.exec() == QDialog::Accepted)
119 {
120 qDebug() << browser.getSelected();
121 setEncoderExec(browser.getSelected());
122 }
123}
124
125void InstallTalkWindow::setEncoderExec(QString path)
126{
127 ui.Encoderpath->clear();
128 ui.Encoderpath->insert(path);
129}
130
131void InstallTalkWindow::setEncoderOptions(int index)
132{
133 QString options = talkcreator->getEncOpts(ui.Encodercbx->itemText(index));
134 setEncoderOptions(options);
135}
136void InstallTalkWindow::setEncoderOptions(QString options)
137{
138 ui.EncoderOptions->clear();
139 ui.EncoderOptions->insert(options);
140}
141void InstallTalkWindow::setTTSOptions(QString options)
142{
143 ui.TTSOptions->clear();
144 ui.TTSOptions->insert(options);
145}
146void InstallTalkWindow::setTTSOptions(int index)
147{
148 QString options = talkcreator->getTTsOpts(ui.TTScbx->itemText(index));
149 setEncoderOptions(options);
150}
151 66
152void InstallTalkWindow::accept() 67void InstallTalkWindow::accept()
153{ 68{
@@ -155,8 +70,8 @@ void InstallTalkWindow::accept()
155 logger->show(); 70 logger->show();
156 71
157 QString folderToTalk = ui.lineTalkFolder->text(); 72 QString folderToTalk = ui.lineTalkFolder->text();
158 QString pathEncoder = ui.Encoderpath->text(); 73 QString pathEncoder = userSettings->value("encbin").toString();
159 QString pathTTS = ui.TTSpath->text(); 74 QString pathTTS = userSettings->value("ttsbin").toString();
160 75
161 if(!QFileInfo(folderToTalk).isDir()) 76 if(!QFileInfo(folderToTalk).isDir())
162 { 77 {
@@ -165,33 +80,40 @@ void InstallTalkWindow::accept()
165 return; 80 return;
166 } 81 }
167 82
168 if(!QFileInfo(pathEncoder).exists()) 83 if(!QFileInfo(pathEncoder).isExecutable())
169 { 84 {
170 logger->addItem(tr("Path to Encoder is wrong!"),LOGERROR); 85 logger->addItem(tr("Path to Encoder is wrong!"),LOGERROR);
171 logger->abort(); 86 logger->abort();
172 return; 87 return;
173 } 88 }
174 89
175 if(!QFileInfo(pathTTS).exists()) 90 if(!QFileInfo(pathTTS).isExecutable())
176 { 91 {
177 logger->addItem(tr("Path to TTS is wrong!"),LOGERROR); 92 logger->addItem(tr("Path to TTS is wrong!"),LOGERROR);
178 logger->abort(); 93 logger->abort();
179 return; 94 return;
180 } 95 }
181 96
182 userSettings->setValue("defaults/folderToTalk",folderToTalk); 97 userSettings->setValue("last_talked_folder", folderToTalk);
183 userSettings->setValue("defaults/pathEncoder",pathEncoder);
184 userSettings->setValue("defaults/pathTTS",pathTTS);
185 98
186 userSettings->sync(); 99 userSettings->sync();
187 100
188 talkcreator->setDir(folderToTalk); 101 talkcreator->setDir(folderToTalk);
189 talkcreator->setTTSexe(pathTTS); 102 talkcreator->setTTSexe(pathTTS);
190 talkcreator->setEncexe(pathEncoder); 103 talkcreator->setEncexe(pathEncoder);
191 talkcreator->setEncOpts(ui.EncoderOptions->text()); 104 talkcreator->setEncOpts(userSettings->value("encopts").toString());
192 talkcreator->setTTsOpts(ui.TTSOptions->text()); 105 talkcreator->setTTsOpts(userSettings->value("ttsopts").toString());
193 talkcreator->setTTsType(ui.TTScbx->currentText()); 106
194 talkcreator->setEncType(ui.Encodercbx->currentText()); 107 devices->beginGroup(userSettings->value("ttspreset").toString());
108 talkcreator->setTTsType(devices->value("tts").toString());
109 talkcreator->setTTsOpts(devices->value("options").toString());
110 talkcreator->setTTsTemplate(devices->value("template").toString());
111 devices->endGroup();
112 devices->beginGroup(userSettings->value("encpreset").toString());
113 talkcreator->setEncType(devices->value("encoder").toString());
114 talkcreator->setEncOpts(devices->value("options").toString());
115 talkcreator->setEncTemplate(devices->value("template").toString());
116 devices->endGroup();
195 117
196 talkcreator->setOverwriteTalk(ui.OverwriteTalk->isChecked()); 118 talkcreator->setOverwriteTalk(ui.OverwriteTalk->isChecked());
197 talkcreator->setOverwriteWav(ui.OverwriteWav->isChecked()); 119 talkcreator->setOverwriteWav(ui.OverwriteWav->isChecked());
@@ -200,7 +122,7 @@ void InstallTalkWindow::accept()
200 talkcreator->setStripExtensions(ui.StripExtensions->isChecked()); 122 talkcreator->setStripExtensions(ui.StripExtensions->isChecked());
201 123
202 talkcreator->createTalkFiles(logger); 124 talkcreator->createTalkFiles(logger);
203 connect(logger,SIGNAL(closed()),this,SLOT(close())); 125 connect(logger,SIGNAL(closed()),this,SLOT(close()));
204} 126}
205 127
206 128
@@ -208,64 +130,21 @@ void InstallTalkWindow::setDeviceSettings(QSettings *dev)
208{ 130{
209 devices = dev; 131 devices = dev;
210 qDebug() << "Install::setDeviceSettings:" << devices; 132 qDebug() << "Install::setDeviceSettings:" << devices;
211
212 QStringList encoders;
213 QStringList encodersOpts;
214 QStringList encodersTemplates;
215
216 QStringList tts;
217 QStringList ttsOpts;
218 QStringList ttsTemplates;
219 133
220 devices->beginGroup("encoders"); 134 QString profile;
221 QStringList keys = devices->allKeys();
222 qDebug() << keys;
223 for(int i=0; i < keys.size();i++)
224 {
225 encoders << devices->value(keys.at(i),"null").toString();
226 }
227 qDebug() << encoders;
228 devices->endGroup();
229 for(int i=0; i < encoders.size();i++)
230 {
231 devices->beginGroup(encoders.at(i));
232 encodersOpts << devices->value("options","null").toString();
233 encodersTemplates << devices->value("template","null").toString();
234 devices->endGroup();
235 }
236 qDebug() << encodersOpts;
237 qDebug() << encodersTemplates;
238 135
136 profile = userSettings->value("ttspreset").toString();
239 devices->beginGroup("tts"); 137 devices->beginGroup("tts");
240 keys = devices->allKeys(); 138 ui.labelTtsProfile->setText(tr("TTS Profile: <b>%1</b>")
241 qDebug() << keys; 139 .arg(devices->value(profile, tr("Invalid TTS profile!")).toString()));
242 for(int i=0; i < keys.size();i++) 140 qDebug() << profile;
243 { 141 devices->endGroup();
244 tts << devices->value(keys.at(i),"null").toString(); 142 profile = userSettings->value("encpreset").toString();
245 } 143 devices->beginGroup("encoders");
246 qDebug() << tts; 144 ui.labelEncProfile->setText(tr("Encoder Profile: <b>%1</b>")
145 .arg(devices->value(profile, tr("Invalid encoder profile!")).toString()));
146 qDebug() << profile;
247 devices->endGroup(); 147 devices->endGroup();
248 for(int i= 0; i < tts.size();i++)
249 {
250 devices->beginGroup(tts.at(i));
251 ttsOpts << devices->value("options","null").toString();
252 ttsTemplates << devices->value("template","null").toString();
253 devices->endGroup();
254 }
255 qDebug() << ttsOpts;
256 qDebug() << ttsTemplates;
257
258 talkcreator->setSupportedEnc(encoders);
259 talkcreator->setSupportedEncOptions(encodersOpts);
260 talkcreator->setSupportedEncTemplates(encodersTemplates);
261
262 talkcreator->setSupportedTTS(tts);
263 talkcreator->setSupportedTTSOptions(ttsOpts);
264 talkcreator->setSupportedTTSTemplates(ttsTemplates);
265
266 ui.Encodercbx->insertItems(0,talkcreator->getSupportedEnc());
267 ui.TTScbx->insertItems(0,talkcreator->getSupportedTTS());
268
269} 148}
270 149
271 150
@@ -277,7 +156,6 @@ void InstallTalkWindow::setUserSettings(QSettings *user)
277 156
278 talkcreator->setMountPoint(userSettings->value("defaults/mountpoint").toString()); 157 talkcreator->setMountPoint(userSettings->value("defaults/mountpoint").toString());
279 158
280 setTalkFolder(userSettings->value("defaults/folderToTalk").toString()); 159 setTalkFolder(userSettings->value("last_talked_folder").toString());
281 setEncoderExec(userSettings->value("defaults/pathEncoder").toString()); 160
282 setTTSExec(userSettings->value("defaults/pathTTS").toString());
283} 161}
diff --git a/rbutil/rbutilqt/installtalkwindow.h b/rbutil/rbutilqt/installtalkwindow.h
index 0e8f9306c0..f4fce5f61f 100644
--- a/rbutil/rbutilqt/installtalkwindow.h
+++ b/rbutil/rbutilqt/installtalkwindow.h
@@ -32,7 +32,7 @@ class InstallTalkWindow : public QDialog
32{ 32{
33 Q_OBJECT 33 Q_OBJECT
34 public: 34 public:
35 InstallTalkWindow(QWidget *parent = 0); 35 InstallTalkWindow(QWidget *parent = 0);
36 void setUserSettings(QSettings*); 36 void setUserSettings(QSettings*);
37 void setDeviceSettings(QSettings*); 37 void setDeviceSettings(QSettings*);
38 38
@@ -40,21 +40,11 @@ class InstallTalkWindow : public QDialog
40 void accept(void); 40 void accept(void);
41 41
42 private slots: 42 private slots:
43 void browseFolder(void); 43 void browseFolder(void);
44 void browseTTS(void); 44 void setTalkFolder(QString folder);
45 void browseEncoder(void); 45
46
47 void setTalkFolder(QString folder);
48 void setTTSExec(QString path);
49 void setEncoderExec(QString path);
50
51 void setEncoderOptions(int index);
52 void setTTSOptions(int index);
53 void setEncoderOptions(QString options);
54 void setTTSOptions(QString options);
55
56 private: 46 private:
57 TalkFileCreator* talkcreator; 47 TalkFileCreator* talkcreator;
58 Ui::InstallTalkFrm ui; 48 Ui::InstallTalkFrm ui;
59 ProgressLoggerGui* logger; 49 ProgressLoggerGui* logger;
60 QSettings *devices; 50 QSettings *devices;
@@ -62,5 +52,4 @@ class InstallTalkWindow : public QDialog
62 52
63}; 53};
64 54
65
66#endif 55#endif
diff --git a/rbutil/rbutilqt/installzip.h b/rbutil/rbutilqt/installzip.h
index 9beeb9bbeb..629445d28f 100644
--- a/rbutil/rbutilqt/installzip.h
+++ b/rbutil/rbutilqt/installzip.h
@@ -47,7 +47,7 @@ public:
47 void setUnzip(bool i) { m_unzip = i; } 47 void setUnzip(bool i) { m_unzip = i; }
48 void setTarget(QString t) { m_target = t; } 48 void setTarget(QString t) { m_target = t; }
49 void setCache(QDir c) { m_cache = c; }; 49 void setCache(QDir c) { m_cache = c; };
50 void setCache(QString c) { m_cache = QDir(c); qDebug() << "!!!set cache:" << m_cache;} 50 void setCache(QString c) { m_cache = QDir(c);}
51 51
52signals: 52signals:
53 void done(bool error); 53 void done(bool error);
diff --git a/rbutil/rbutilqt/rbutil.ini b/rbutil/rbutilqt/rbutil.ini
index 09d9e24647..ec75610686 100644
--- a/rbutil/rbutilqt/rbutil.ini
+++ b/rbutil/rbutilqt/rbutil.ini
@@ -342,21 +342,47 @@ manualname=
342brand=Sandisk 342brand=Sandisk
343 343
344[encoders] 344[encoders]
345encoder01 = lame 345encpreset01 = "Lame (default)"
346encpreset02 = "Lame (user-adjusted)"
346 347
347[tts] 348[encpreset01]
348tts01 = espeak 349encoder = lame
349tts02 = flite 350options = ""
351template = "\"%exe\" %options \"%input\" \"%output\""
352edit = false
350 353
351[lame] 354[encpreset02]
355encoder = lame
352options = "" 356options = ""
353template = "\"%exe\" %options \"%input\" \"%output\"" 357template = "\"%exe\" %options \"%input\" \"%output\""
354 358edit = true
355[espeak] 359
360[tts]
361ttspreset01 = "espeak (default)"
362ttspreset02 = "espeak (user-adjusted)"
363ttspreset03 = "flite (default)"
364ttspreset04 = "flite (user-adjusted)"
365
366[ttspreset01]
367tts = "espeak"
356options = "" 368options = ""
357template = "\"%exe\" %options -w \"%wavfile\" \"%text\"" 369template = "\"%exe\" %options -w \"%wavfile\" \"%text\""
370edit = false
358 371
359[flite] 372[ttspreset02]
373tts = "espeak"
374options = ""
375template = "\"%exe\" %options -w \"%wavfile\" \"%text\""
376edit = true
377
378[ttspreset03]
379tts = "flite"
360options = "" 380options = ""
361template = "\"%exe\" %options -o \"%wavfile\" \"%text\"" 381template = "\"%exe\" %options -o \"%wavfile\" \"%text\""
382edit = false
362 383
384[ttspreset04]
385tts = "flite"
386options = ""
387template = "\"%exe\" %options -o \"%wavfile\" \"%text\""
388edit = true
diff --git a/rbutil/rbutilqt/rbutilqt.qrc b/rbutil/rbutilqt/rbutilqt.qrc
index 8cc9eea48b..0761fd4f1a 100644
--- a/rbutil/rbutilqt/rbutilqt.qrc
+++ b/rbutil/rbutilqt/rbutilqt.qrc
@@ -4,6 +4,7 @@
4 <file>gpl-2.0.html</file> 4 <file>gpl-2.0.html</file>
5 </qresource> 5 </qresource>
6 <qresource prefix="/icons" > 6 <qresource prefix="/icons" >
7 <file>icons/audio-input-microphone.png</file>
7 <file>icons/bootloader_btn.png</file> 8 <file>icons/bootloader_btn.png</file>
8 <file>icons/dialog-error.png</file> 9 <file>icons/dialog-error.png</file>
9 <file>icons/dialog-information.png</file> 10 <file>icons/dialog-information.png</file>
diff --git a/rbutil/rbutilqt/talkfile.cpp b/rbutil/rbutilqt/talkfile.cpp
index ee65dc27af..77f5c3fd3f 100644
--- a/rbutil/rbutilqt/talkfile.cpp
+++ b/rbutil/rbutilqt/talkfile.cpp
@@ -24,19 +24,6 @@ TalkFileCreator::TalkFileCreator(QObject* parent): QObject(parent)
24 24
25} 25}
26 26
27void TalkFileCreator::setTTsType(QString tts)
28{
29 m_curTTS = tts;
30 int index = m_supportedTTS.indexOf(m_curTTS);
31 m_curTTSTemplate = m_supportedTTSTemplates.at(index);
32}
33
34void TalkFileCreator::setEncType(QString enc)
35{
36 m_curEnc = enc;
37 int index = m_supportedEnc.indexOf(m_curEnc);
38 m_curEncTemplate = m_supportedEncTemplates.at(index);
39}
40 27
41bool TalkFileCreator::initEncoder() 28bool TalkFileCreator::initEncoder()
42{ 29{
@@ -203,17 +190,4 @@ bool TalkFileCreator::encode(QString input,QString output)
203 190
204} 191}
205 192
206QString TalkFileCreator::getTTsOpts(QString ttsname)
207{
208 int index = m_supportedTTS.indexOf(ttsname);
209
210 return m_supportedTTSOpts.at(index);
211}
212
213QString TalkFileCreator::getEncOpts(QString encname)
214{
215 int index = m_supportedEnc.indexOf(encname);
216
217 return m_supportedEncOpts.at(index);
218}
219 193
diff --git a/rbutil/rbutilqt/talkfile.h b/rbutil/rbutilqt/talkfile.h
index 1fabb8514a..8c94b35a4d 100644
--- a/rbutil/rbutilqt/talkfile.h
+++ b/rbutil/rbutilqt/talkfile.h
@@ -35,23 +35,13 @@ public:
35 void setTTSexe(QString exe){m_TTSexec=exe;} 35 void setTTSexe(QString exe){m_TTSexec=exe;}
36 void setEncexe(QString exe){m_EncExec=exe;} 36 void setEncexe(QString exe){m_EncExec=exe;}
37 37
38 void setSupportedTTS(QStringList list) {m_supportedTTS=list;} 38 void setTTsType(QString tts) { m_curTTS = tts; }
39 void setSupportedTTSOptions(QStringList list) {m_supportedTTSOpts=list;}
40 void setSupportedTTSTemplates(QStringList list) {m_supportedTTSTemplates=list;}
41
42 QStringList getSupportedTTS(){return m_supportedTTS;}
43 void setTTsType(QString tts);
44 QString getTTsOpts(QString ttsname);
45 void setTTsOpts(QString opts) {m_TTSOpts=opts;} 39 void setTTsOpts(QString opts) {m_TTSOpts=opts;}
46 40 void setTTsTemplate(QString t) { m_curTTSTemplate = t; }
47 void setSupportedEnc(QStringList list) {m_supportedEnc=list;}
48 void setSupportedEncOptions(QStringList list) {m_supportedEncOpts=list;}
49 void setSupportedEncTemplates(QStringList list) {m_supportedEncTemplates=list;}
50 41
51 QStringList getSupportedEnc(){return m_supportedEnc;} 42 void setEncType(QString enc) { m_curEnc = enc; }
52 void setEncType(QString enc);
53 QString getEncOpts(QString encname);
54 void setEncOpts(QString opts) {m_EncOpts=opts;} 43 void setEncOpts(QString opts) {m_EncOpts=opts;}
44 void setEncTemplate(QString t) { m_curEncTemplate = t; }
55 45
56 void setDir(QString dir){m_dir = dir; } 46 void setDir(QString dir){m_dir = dir; }
57 void setMountPoint(QString mountpoint) {m_mountpoint =mountpoint; } 47 void setMountPoint(QString mountpoint) {m_mountpoint =mountpoint; }
@@ -78,17 +68,11 @@ private:
78 QString m_mountpoint; 68 QString m_mountpoint;
79 QString m_curTTS; 69 QString m_curTTS;
80 QString m_TTSexec; 70 QString m_TTSexec;
81 QStringList m_supportedTTS;
82 QStringList m_supportedTTSOpts;
83 QStringList m_supportedTTSTemplates;
84 QString m_TTSOpts; 71 QString m_TTSOpts;
85 QString m_curTTSTemplate; 72 QString m_curTTSTemplate;
86 73
87 QString m_curEnc; 74 QString m_curEnc;
88 QString m_EncExec; 75 QString m_EncExec;
89 QStringList m_supportedEnc;
90 QStringList m_supportedEncOpts;
91 QStringList m_supportedEncTemplates;
92 QString m_EncOpts; 76 QString m_EncOpts;
93 QString m_curEncTemplate; 77 QString m_curEncTemplate;
94 78