summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Wenger <domonoky@googlemail.com>2008-01-19 18:33:33 +0000
committerDominik Wenger <domonoky@googlemail.com>2008-01-19 18:33:33 +0000
commit6b5780dae3561842c858f9c63d00430521628c9c (patch)
tree130cf07117dfa39d29811ddd6d509aa9456de657
parent2cffb1bf3df30d312944cc283a48c081def2fec8 (diff)
downloadrockbox-6b5780dae3561842c858f9c63d00430521628c9c.tar.gz
rockbox-6b5780dae3561842c858f9c63d00430521628c9c.zip
rbutilqt: made the sapi TTS more configurable, you can now select a specific voice in the config dialog. Also reworked some setSetting functions, to remove depencies.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16111 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--rbutil/rbutilqt/configure.cpp19
-rw-r--r--rbutil/rbutilqt/configure.h8
-rw-r--r--rbutil/rbutilqt/createvoicefrm.ui31
-rw-r--r--rbutil/rbutilqt/createvoicewindow.cpp27
-rw-r--r--rbutil/rbutilqt/createvoicewindow.h3
-rw-r--r--rbutil/rbutilqt/installtalkwindow.cpp18
-rw-r--r--rbutil/rbutilqt/installtalkwindow.h3
-rw-r--r--rbutil/rbutilqt/rbutilqt.cpp9
-rw-r--r--rbutil/rbutilqt/rbutilqt.pro6
-rw-r--r--rbutil/rbutilqt/sapicfgfrm.ui57
-rw-r--r--rbutil/rbutilqt/talkfile.cpp24
-rw-r--r--rbutil/rbutilqt/talkfile.h3
-rw-r--r--rbutil/rbutilqt/tts.cpp117
-rw-r--r--rbutil/rbutilqt/tts.h16
-rw-r--r--rbutil/rbutilqt/voicefile.cpp10
-rw-r--r--rbutil/rbutilqt/voicefile.h5
16 files changed, 264 insertions, 92 deletions
diff --git a/rbutil/rbutilqt/configure.cpp b/rbutil/rbutilqt/configure.cpp
index 993757ed5a..e74dc6e30d 100644
--- a/rbutil/rbutilqt/configure.cpp
+++ b/rbutil/rbutilqt/configure.cpp
@@ -150,10 +150,17 @@ void Config::abort()
150 this->close(); 150 this->close();
151} 151}
152 152
153 153void Config::setSettings(QSettings* user,QSettings* device)
154void Config::setUserSettings(QSettings *user)
155{ 154{
156 userSettings = user; 155 userSettings = user;
156 devices = device;
157
158 setUserSettings();
159 setDevices();
160}
161
162void Config::setUserSettings()
163{
157 // set proxy 164 // set proxy
158 proxy = userSettings->value("proxy").toString(); 165 proxy = userSettings->value("proxy").toString();
159 166
@@ -214,9 +221,9 @@ void Config::updateCacheInfo(QString path)
214} 221}
215 222
216 223
217void Config::setDevices(QSettings *dev) 224void Config::setDevices()
218{ 225{
219 devices = dev; 226
220 // setup devices table 227 // setup devices table
221 qDebug() << "Config::setDevices()"; 228 qDebug() << "Config::setDevices()";
222 devices->beginGroup("platforms"); 229 devices->beginGroup("platforms");
@@ -320,7 +327,7 @@ void Config::updateTtsState(int index)
320{ 327{
321 QString ttsName = ui.comboTts->itemText(index); 328 QString ttsName = ui.comboTts->itemText(index);
322 TTSBase* tts = getTTS(ttsName); 329 TTSBase* tts = getTTS(ttsName);
323 tts->setUserCfg(userSettings); 330 tts->setCfg(userSettings,devices);
324 331
325 if(tts->configOk()) 332 if(tts->configOk())
326 { 333 {
@@ -624,7 +631,7 @@ void Config::configTts()
624{ 631{
625 TTSBase* tts =getTTS(ui.comboTts->currentText()); 632 TTSBase* tts =getTTS(ui.comboTts->currentText());
626 633
627 tts->setUserCfg(userSettings); 634 tts->setCfg(userSettings,devices);
628 tts->showCfg(); 635 tts->showCfg();
629 updateTtsState(ui.comboTts->currentIndex()); 636 updateTtsState(ui.comboTts->currentIndex());
630} 637}
diff --git a/rbutil/rbutilqt/configure.h b/rbutil/rbutilqt/configure.h
index c7068e01dc..bb4afb6c86 100644
--- a/rbutil/rbutilqt/configure.h
+++ b/rbutil/rbutilqt/configure.h
@@ -29,9 +29,8 @@ class Config : public QDialog
29 Q_OBJECT 29 Q_OBJECT
30 public: 30 public:
31 Config(QWidget *parent = 0,int index=0); 31 Config(QWidget *parent = 0,int index=0);
32 void setUserSettings(QSettings*); 32 void setSettings(QSettings* user,QSettings* device);
33 void setDevices(QSettings*); 33
34
35 signals: 34 signals:
36 void settingsUpdated(void); 35 void settingsUpdated(void);
37 36
@@ -40,6 +39,9 @@ class Config : public QDialog
40 void abort(void); 39 void abort(void);
41 40
42 private: 41 private:
42 void setUserSettings();
43 void setDevices();
44
43 Ui::ConfigForm ui; 45 Ui::ConfigForm ui;
44 QSettings *userSettings; 46 QSettings *userSettings;
45 QSettings *devices; 47 QSettings *devices;
diff --git a/rbutil/rbutilqt/createvoicefrm.ui b/rbutil/rbutilqt/createvoicefrm.ui
index 8847409f37..c79478f1a1 100644
--- a/rbutil/rbutilqt/createvoicefrm.ui
+++ b/rbutil/rbutilqt/createvoicefrm.ui
@@ -8,8 +8,8 @@
8 <rect> 8 <rect>
9 <x>0</x> 9 <x>0</x>
10 <y>0</y> 10 <y>0</y>
11 <width>637</width> 11 <width>659</width>
12 <height>421</height> 12 <height>482</height>
13 </rect> 13 </rect>
14 </property> 14 </property>
15 <property name="windowTitle" > 15 <property name="windowTitle" >
@@ -94,7 +94,7 @@
94 </layout> 94 </layout>
95 </widget> 95 </widget>
96 </item> 96 </item>
97 <item row="3" column="1" > 97 <item row="4" column="1" >
98 <spacer> 98 <spacer>
99 <property name="orientation" > 99 <property name="orientation" >
100 <enum>Qt::Vertical</enum> 100 <enum>Qt::Vertical</enum>
@@ -107,7 +107,7 @@
107 </property> 107 </property>
108 </spacer> 108 </spacer>
109 </item> 109 </item>
110 <item row="4" column="1" > 110 <item row="5" column="1" >
111 <spacer> 111 <spacer>
112 <property name="orientation" > 112 <property name="orientation" >
113 <enum>Qt::Horizontal</enum> 113 <enum>Qt::Horizontal</enum>
@@ -120,7 +120,7 @@
120 </property> 120 </property>
121 </spacer> 121 </spacer>
122 </item> 122 </item>
123 <item row="4" column="2" > 123 <item row="5" column="2" >
124 <layout class="QHBoxLayout" > 124 <layout class="QHBoxLayout" >
125 <item> 125 <item>
126 <widget class="QPushButton" name="buttonOk" > 126 <widget class="QPushButton" name="buttonOk" >
@@ -144,6 +144,27 @@
144 </item> 144 </item>
145 </layout> 145 </layout>
146 </item> 146 </item>
147 <item row="3" column="1" colspan="2" >
148 <layout class="QHBoxLayout" >
149 <item>
150 <widget class="QLabel" name="label_3" >
151 <property name="text" >
152 <string>Wavtrim Threshold</string>
153 </property>
154 </widget>
155 </item>
156 <item>
157 <widget class="QSpinBox" name="wavtrimthreshold" >
158 <property name="maximum" >
159 <number>5000</number>
160 </property>
161 <property name="value" >
162 <number>500</number>
163 </property>
164 </widget>
165 </item>
166 </layout>
167 </item>
147 </layout> 168 </layout>
148 </widget> 169 </widget>
149 <tabstops> 170 <tabstops>
diff --git a/rbutil/rbutilqt/createvoicewindow.cpp b/rbutil/rbutilqt/createvoicewindow.cpp
index 3ae489c7c7..ff72e9a463 100644
--- a/rbutil/rbutilqt/createvoicewindow.cpp
+++ b/rbutil/rbutilqt/createvoicewindow.cpp
@@ -34,8 +34,7 @@ CreateVoiceWindow::CreateVoiceWindow(QWidget *parent) : QDialog(parent)
34void CreateVoiceWindow::change() 34void CreateVoiceWindow::change()
35{ 35{
36 Config *cw = new Config(this,4); 36 Config *cw = new Config(this,4);
37 cw->setUserSettings(userSettings); 37 cw->setSettings(userSettings,devices);
38 cw->setDevices(devices);
39 cw->show(); 38 cw->show();
40 connect(cw, SIGNAL(settingsUpdated()), this, SIGNAL(settingsUpdated())); 39 connect(cw, SIGNAL(settingsUpdated()), this, SIGNAL(settingsUpdated()));
41} 40}
@@ -47,19 +46,21 @@ void CreateVoiceWindow::accept()
47 connect(logger,SIGNAL(closed()),this,SLOT(close())); 46 connect(logger,SIGNAL(closed()),this,SLOT(close()));
48 47
49 QString platform = userSettings->value("platform").toString(); 48 QString platform = userSettings->value("platform").toString();
50 QString lang = ui.comboLanguage->currentText(); 49 QString lang = ui.comboLanguage->currentText();
50 int wvThreshold = ui.wavtrimthreshold->value();
51 51
52 //safe selected language 52 //safe selected language
53 userSettings->setValue("voicelanguage",lang); 53 userSettings->setValue("voicelanguage",lang);
54 userSettings->setValue("wavtrimthreshold",wvThreshold);
54 userSettings->sync(); 55 userSettings->sync();
55 56
56 //configure voicecreator 57 //configure voicecreator
57 voicecreator->setUserSettings(userSettings); 58 voicecreator->setSettings(userSettings,devices);
58 voicecreator->setDeviceSettings(devices);
59 voicecreator->setMountPoint(userSettings->value("mountpoint").toString()); 59 voicecreator->setMountPoint(userSettings->value("mountpoint").toString());
60 voicecreator->setTargetId(devices->value(platform + "/targetid").toInt()); 60 voicecreator->setTargetId(devices->value(platform + "/targetid").toInt());
61 voicecreator->setLang(lang); 61 voicecreator->setLang(lang);
62 voicecreator->setProxy(m_proxy); 62 voicecreator->setProxy(m_proxy);
63 voicecreator->setWavtrimThreshold(wvThreshold);
63 64
64 //start creating 65 //start creating
65 voicecreator->createVoiceFile(logger); 66 voicecreator->createVoiceFile(logger);
@@ -67,9 +68,10 @@ void CreateVoiceWindow::accept()
67 68
68 69
69 70
70void CreateVoiceWindow::setDeviceSettings(QSettings *dev) 71void CreateVoiceWindow::setSettings(QSettings *user,QSettings *dev)
71{ 72{
72 devices = dev; 73 devices = dev;
74 userSettings = user;
73 qDebug() << "Install::setDeviceSettings:" << devices; 75 qDebug() << "Install::setDeviceSettings:" << devices;
74 76
75 // fill in language combobox 77 // fill in language combobox
@@ -86,15 +88,10 @@ void CreateVoiceWindow::setDeviceSettings(QSettings *dev)
86 ui.comboLanguage->addItems(languages); 88 ui.comboLanguage->addItems(languages);
87 // set saved lang 89 // set saved lang
88 ui.comboLanguage->setCurrentIndex(ui.comboLanguage->findText(userSettings->value("voicelanguage").toString())); 90 ui.comboLanguage->setCurrentIndex(ui.comboLanguage->findText(userSettings->value("voicelanguage").toString()));
89}
90
91void CreateVoiceWindow::setUserSettings(QSettings *user)
92{
93 userSettings = user;
94 91
95 QString ttsName = userSettings->value("tts", "none").toString(); 92 QString ttsName = userSettings->value("tts", "none").toString();
96 TTSBase* tts = getTTS(ttsName); 93 TTSBase* tts = getTTS(ttsName);
97 tts->setUserCfg(userSettings); 94 tts->setCfg(userSettings,devices);
98 if(tts->configOk()) 95 if(tts->configOk())
99 ui.labelTtsProfile->setText(tr("Selected TTS engine : <b>%1</b>").arg(ttsName)); 96 ui.labelTtsProfile->setText(tr("Selected TTS engine : <b>%1</b>").arg(ttsName));
100 else 97 else
@@ -107,8 +104,12 @@ void CreateVoiceWindow::setUserSettings(QSettings *user)
107 ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg(encoder)); 104 ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg(encoder));
108 else 105 else
109 ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg("Invalid encoder configuration!")); 106 ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg("Invalid encoder configuration!"));
110 107
108 ui.wavtrimthreshold->setValue(userSettings->value("wavtrimthreshold", 500).toInt());
109
111} 110}
112 111
113 112
114 113
114
115
diff --git a/rbutil/rbutilqt/createvoicewindow.h b/rbutil/rbutilqt/createvoicewindow.h
index 76472721fe..cd99b389a2 100644
--- a/rbutil/rbutilqt/createvoicewindow.h
+++ b/rbutil/rbutilqt/createvoicewindow.h
@@ -33,8 +33,7 @@ class CreateVoiceWindow : public QDialog
33 Q_OBJECT 33 Q_OBJECT
34 public: 34 public:
35 CreateVoiceWindow(QWidget *parent = 0); 35 CreateVoiceWindow(QWidget *parent = 0);
36 void setUserSettings(QSettings*); 36 void setSettings(QSettings* user,QSettings* device);
37 void setDeviceSettings(QSettings*);
38 void setProxy(QUrl proxy){m_proxy = proxy;} 37 void setProxy(QUrl proxy){m_proxy = proxy;}
39 38
40 signals: 39 signals:
diff --git a/rbutil/rbutilqt/installtalkwindow.cpp b/rbutil/rbutilqt/installtalkwindow.cpp
index 4634ba3eaf..e1b0b69049 100644
--- a/rbutil/rbutilqt/installtalkwindow.cpp
+++ b/rbutil/rbutilqt/installtalkwindow.cpp
@@ -66,8 +66,7 @@ void InstallTalkWindow::setTalkFolder(QString folder)
66void InstallTalkWindow::change() 66void InstallTalkWindow::change()
67{ 67{
68 Config *cw = new Config(this,4); 68 Config *cw = new Config(this,4);
69 cw->setUserSettings(userSettings); 69 cw->setSettings(userSettings,devices);
70 cw->setDevices(devices);
71 cw->show(); 70 cw->show();
72 connect(cw, SIGNAL(settingsUpdated()), this, SIGNAL(settingsUpdated())); 71 connect(cw, SIGNAL(settingsUpdated()), this, SIGNAL(settingsUpdated()));
73} 72}
@@ -91,7 +90,7 @@ void InstallTalkWindow::accept()
91 90
92 userSettings->sync(); 91 userSettings->sync();
93 92
94 talkcreator->setUserSettings(userSettings); 93 talkcreator->setSettings(userSettings,devices);
95 talkcreator->setDir(QDir(folderToTalk)); 94 talkcreator->setDir(QDir(folderToTalk));
96 talkcreator->setMountPoint(userSettings->value("mountpoint").toString()); 95 talkcreator->setMountPoint(userSettings->value("mountpoint").toString());
97 96
@@ -107,14 +106,15 @@ void InstallTalkWindow::accept()
107} 106}
108 107
109 108
110void InstallTalkWindow::setDeviceSettings(QSettings *dev) 109void InstallTalkWindow::setSettings(QSettings *user,QSettings *dev)
111{ 110{
112 devices = dev; 111 devices = dev;
112 userSettings = user;
113 qDebug() << "Install::setDeviceSettings:" << devices; 113 qDebug() << "Install::setDeviceSettings:" << devices;
114 114
115 QString ttsName = userSettings->value("tts", "none").toString(); 115 QString ttsName = userSettings->value("tts", "none").toString();
116 TTSBase* tts = getTTS(ttsName); 116 TTSBase* tts = getTTS(ttsName);
117 tts->setUserCfg(userSettings); 117 tts->setCfg(userSettings,devices);
118 if(tts->configOk()) 118 if(tts->configOk())
119 ui.labelTtsProfile->setText(tr("Selected TTS engine : <b>%1</b>").arg(ttsName)); 119 ui.labelTtsProfile->setText(tr("Selected TTS engine : <b>%1</b>").arg(ttsName));
120 else 120 else
@@ -127,12 +127,8 @@ void InstallTalkWindow::setDeviceSettings(QSettings *dev)
127 ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg(encoder)); 127 ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg(encoder));
128 else 128 else
129 ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg("Invalid encoder configuration!")); 129 ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg("Invalid encoder configuration!"));
130} 130
131
132void InstallTalkWindow::setUserSettings(QSettings *user)
133{
134 userSettings = user;
135
136 setTalkFolder(userSettings->value("last_talked_folder").toString()); 131 setTalkFolder(userSettings->value("last_talked_folder").toString());
137 132
138} 133}
134
diff --git a/rbutil/rbutilqt/installtalkwindow.h b/rbutil/rbutilqt/installtalkwindow.h
index 11c4c6b6a8..5899c5701e 100644
--- a/rbutil/rbutilqt/installtalkwindow.h
+++ b/rbutil/rbutilqt/installtalkwindow.h
@@ -33,8 +33,7 @@ class InstallTalkWindow : public QDialog
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 setSettings(QSettings* user,QSettings* device);
37 void setDeviceSettings(QSettings*);
38 37
39 signals: 38 signals:
40 void settingsUpdated(void); 39 void settingsUpdated(void);
diff --git a/rbutil/rbutilqt/rbutilqt.cpp b/rbutil/rbutilqt/rbutilqt.cpp
index a28defc413..bbba56e2e8 100644
--- a/rbutil/rbutilqt/rbutilqt.cpp
+++ b/rbutil/rbutilqt/rbutilqt.cpp
@@ -253,8 +253,7 @@ void RbUtilQt::help()
253void RbUtilQt::configDialog() 253void RbUtilQt::configDialog()
254{ 254{
255 Config *cw = new Config(this); 255 Config *cw = new Config(this);
256 cw->setUserSettings(userSettings); 256 cw->setSettings(userSettings,devices);
257 cw->setDevices(devices);
258 cw->show(); 257 cw->show();
259 connect(cw, SIGNAL(settingsUpdated()), this, SLOT(downloadInfo())); 258 connect(cw, SIGNAL(settingsUpdated()), this, SLOT(downloadInfo()));
260 connect(cw, SIGNAL(settingsUpdated()), this, SLOT(updateSettings())); 259 connect(cw, SIGNAL(settingsUpdated()), this, SLOT(updateSettings()));
@@ -748,8 +747,7 @@ void RbUtilQt::createTalkFiles(void)
748{ 747{
749 if(chkConfig(true)) return; 748 if(chkConfig(true)) return;
750 InstallTalkWindow *installWindow = new InstallTalkWindow(this); 749 InstallTalkWindow *installWindow = new InstallTalkWindow(this);
751 installWindow->setUserSettings(userSettings); 750 installWindow->setSettings(userSettings,devices);
752 installWindow->setDeviceSettings(devices);
753 installWindow->show(); 751 installWindow->show();
754 connect(installWindow, SIGNAL(settingsUpdated()), this, SLOT(downloadInfo())); 752 connect(installWindow, SIGNAL(settingsUpdated()), this, SLOT(downloadInfo()));
755 connect(installWindow, SIGNAL(settingsUpdated()), this, SLOT(updateSettings())); 753 connect(installWindow, SIGNAL(settingsUpdated()), this, SLOT(updateSettings()));
@@ -760,8 +758,7 @@ void RbUtilQt::createVoiceFile(void)
760{ 758{
761 if(chkConfig(true)) return; 759 if(chkConfig(true)) return;
762 CreateVoiceWindow *installWindow = new CreateVoiceWindow(this); 760 CreateVoiceWindow *installWindow = new CreateVoiceWindow(this);
763 installWindow->setUserSettings(userSettings); 761 installWindow->setSettings(userSettings,devices);
764 installWindow->setDeviceSettings(devices);
765 installWindow->setProxy(proxy()); 762 installWindow->setProxy(proxy());
766 763
767 installWindow->show(); 764 installWindow->show();
diff --git a/rbutil/rbutilqt/rbutilqt.pro b/rbutil/rbutilqt/rbutilqt.pro
index fe95a4c665..ca20444a8b 100644
--- a/rbutil/rbutilqt/rbutilqt.pro
+++ b/rbutil/rbutilqt/rbutilqt.pro
@@ -17,6 +17,12 @@ rbspeex.commands = @$(MAKE) -C ../../tools/rbspeex librbspeex.a
17QMAKE_EXTRA_TARGETS = rbspeex 17QMAKE_EXTRA_TARGETS = rbspeex
18PRE_TARGETDEPS = rbspeex 18PRE_TARGETDEPS = rbspeex
19 19
20# add a custom rule for makeing the translations
21lrelease.commands = lrelease rbutilqt.pro
22QMAKE_EXTRA_TARGETS += lrelease
23PRE_TARGETDEPS = lrelease
24
25
20SOURCES += rbutilqt.cpp \ 26SOURCES += rbutilqt.cpp \
21 main.cpp \ 27 main.cpp \
22 install.cpp \ 28 install.cpp \
diff --git a/rbutil/rbutilqt/sapicfgfrm.ui b/rbutil/rbutilqt/sapicfgfrm.ui
index 9e4cde430a..03fccd1291 100644
--- a/rbutil/rbutilqt/sapicfgfrm.ui
+++ b/rbutil/rbutilqt/sapicfgfrm.ui
@@ -18,41 +18,68 @@
18 <property name="title" > 18 <property name="title" >
19 <string>Configure TTS Engine</string> 19 <string>Configure TTS Engine</string>
20 </property> 20 </property>
21 <layout class="QVBoxLayout" > 21 <layout class="QGridLayout" >
22 <item> 22 <item row="0" column="0" >
23 <widget class="QLabel" name="label_2" > 23 <widget class="QLabel" name="label_3" >
24 <property name="text" > 24 <property name="text" >
25 <string>TTS options</string> 25 <string>Language</string>
26 </property> 26 </property>
27 </widget> 27 </widget>
28 </item> 28 </item>
29 <item> 29 <item row="0" column="1" >
30 <widget class="QLineEdit" name="ttsoptions" /> 30 <widget class="QComboBox" name="languagecombo" />
31 </item> 31 </item>
32 <item> 32 <item row="1" column="0" >
33 <widget class="QLabel" name="label_3" > 33 <widget class="QLabel" name="label" >
34 <property name="text" > 34 <property name="text" >
35 <string>Language</string> 35 <string>Voice</string>
36 </property>
37 </widget>
38 </item>
39 <item row="1" column="1" >
40 <widget class="QComboBox" name="voicecombo" />
41 </item>
42 <item row="2" column="0" >
43 <widget class="QLabel" name="label_4" >
44 <property name="text" >
45 <string>Speed</string>
36 </property> 46 </property>
37 </widget> 47 </widget>
38 </item> 48 </item>
39 <item> 49 <item row="2" column="1" >
40 <widget class="QLineEdit" name="ttslanguage" /> 50 <widget class="QSpinBox" name="speed" >
51 <property name="minimum" >
52 <number>-10</number>
53 </property>
54 <property name="maximum" >
55 <number>10</number>
56 </property>
57 </widget>
58 </item>
59 <item row="3" column="0" >
60 <widget class="QLabel" name="label_2" >
61 <property name="text" >
62 <string>TTS options</string>
63 </property>
64 </widget>
65 </item>
66 <item row="3" column="1" >
67 <widget class="QLineEdit" name="ttsoptions" />
41 </item> 68 </item>
42 <item> 69 <item row="4" column="0" colspan="2" >
43 <spacer> 70 <spacer>
44 <property name="orientation" > 71 <property name="orientation" >
45 <enum>Qt::Vertical</enum> 72 <enum>Qt::Vertical</enum>
46 </property> 73 </property>
47 <property name="sizeHint" > 74 <property name="sizeHint" >
48 <size> 75 <size>
49 <width>20</width> 76 <width>473</width>
50 <height>40</height> 77 <height>21</height>
51 </size> 78 </size>
52 </property> 79 </property>
53 </spacer> 80 </spacer>
54 </item> 81 </item>
55 <item> 82 <item row="5" column="0" colspan="2" >
56 <layout class="QHBoxLayout" > 83 <layout class="QHBoxLayout" >
57 <item> 84 <item>
58 <widget class="QPushButton" name="reset" > 85 <widget class="QPushButton" name="reset" >
diff --git a/rbutil/rbutilqt/talkfile.cpp b/rbutil/rbutilqt/talkfile.cpp
index c602716f67..89166daa90 100644
--- a/rbutil/rbutilqt/talkfile.cpp
+++ b/rbutil/rbutilqt/talkfile.cpp
@@ -28,15 +28,17 @@ bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger)
28{ 28{
29 m_abort = false; 29 m_abort = false;
30 m_logger = logger; 30 m_logger = logger;
31 m_logger->addItem("Starting Talk file generation",LOGINFO); 31 m_logger->addItem(tr("Starting Talk file generation"),LOGINFO);
32 32
33 //tts 33 //tts
34 m_tts = getTTS(userSettings->value("tts").toString()); 34 m_tts = getTTS(userSettings->value("tts").toString());
35 m_tts->setUserCfg(userSettings); 35 m_tts->setCfg(userSettings,deviceSettings);
36 36
37 if(!m_tts->start()) 37 QString errStr;
38 if(!m_tts->start(&errStr))
38 { 39 {
39 m_logger->addItem("Init of TTS engine failed",LOGERROR); 40 m_logger->addItem(errStr,LOGERROR);
41 m_logger->addItem(tr("Init of TTS engine failed"),LOGERROR);
40 m_logger->abort(); 42 m_logger->abort();
41 return false; 43 return false;
42 } 44 }
@@ -47,7 +49,7 @@ bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger)
47 49
48 if(!m_enc->start()) 50 if(!m_enc->start())
49 { 51 {
50 m_logger->addItem("Init of Encoder engine failed",LOGERROR); 52 m_logger->addItem(tr("Init of Encoder engine failed"),LOGERROR);
51 m_logger->abort(); 53 m_logger->abort();
52 m_tts->stop(); 54 m_tts->stop();
53 return false; 55 return false;
@@ -65,7 +67,7 @@ bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger)
65 { 67 {
66 if(m_abort) 68 if(m_abort)
67 { 69 {
68 m_logger->addItem("Talk file creation aborted",LOGERROR); 70 m_logger->addItem(tr("Talk file creation aborted"),LOGERROR);
69 m_logger->abort(); 71 m_logger->abort();
70 m_tts->stop(); 72 m_tts->stop();
71 return false; 73 return false;
@@ -127,10 +129,10 @@ bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger)
127 { 129 {
128 if(!wavfilenameInf.exists() || m_overwriteWav) 130 if(!wavfilenameInf.exists() || m_overwriteWav)
129 { 131 {
130 m_logger->addItem("Voicing of " + toSpeak,LOGINFO); 132 m_logger->addItem(tr("Voicing of %1").arg(toSpeak),LOGINFO);
131 if(!m_tts->voice(toSpeak,wavfilename)) 133 if(!m_tts->voice(toSpeak,wavfilename))
132 { 134 {
133 m_logger->addItem("Voicing of " + toSpeak + " failed",LOGERROR); 135 m_logger->addItem(tr("Voicing of %s failed").arg(toSpeak),LOGERROR);
134 m_logger->abort(); 136 m_logger->abort();
135 m_tts->stop(); 137 m_tts->stop();
136 m_enc->stop(); 138 m_enc->stop();
@@ -138,10 +140,10 @@ bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger)
138 } 140 }
139 QApplication::processEvents(); 141 QApplication::processEvents();
140 } 142 }
141 m_logger->addItem("Encoding of " + toSpeak,LOGINFO); 143 m_logger->addItem(tr("Encoding of %1").arg(toSpeak),LOGINFO);
142 if(!m_enc->encode(wavfilename,filename)) 144 if(!m_enc->encode(wavfilename,filename))
143 { 145 {
144 m_logger->addItem("Encoding of " + wavfilename + " failed",LOGERROR); 146 m_logger->addItem(tr("Encoding of %1 failed").arg(wavfilename),LOGERROR);
145 m_logger->abort(); 147 m_logger->abort();
146 m_tts->stop(); 148 m_tts->stop();
147 m_enc->stop(); 149 m_enc->stop();
@@ -168,7 +170,7 @@ bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger)
168 170
169 installlog.endGroup(); 171 installlog.endGroup();
170 m_tts->stop(); 172 m_tts->stop();
171 m_logger->addItem("Finished creating Talk files",LOGOK); 173 m_logger->addItem(tr("Finished creating Talk files"),LOGOK);
172 m_logger->setProgressMax(1); 174 m_logger->setProgressMax(1);
173 m_logger->setProgressValue(1); 175 m_logger->setProgressValue(1);
174 m_logger->abort(); 176 m_logger->abort();
diff --git a/rbutil/rbutilqt/talkfile.h b/rbutil/rbutilqt/talkfile.h
index d45d3a1907..38462b1891 100644
--- a/rbutil/rbutilqt/talkfile.h
+++ b/rbutil/rbutilqt/talkfile.h
@@ -36,7 +36,7 @@ public:
36 36
37 bool createTalkFiles(ProgressloggerInterface* logger); 37 bool createTalkFiles(ProgressloggerInterface* logger);
38 38
39 void setUserSettings(QSettings* setting) { userSettings = setting;} 39 void setSettings(QSettings* uSettings,QSettings* dSettings) { userSettings = uSettings; deviceSettings = dSettings;}
40 40
41 void setDir(QDir dir){m_dir = dir; } 41 void setDir(QDir dir){m_dir = dir; }
42 void setMountPoint(QString mountpoint) {m_mountpoint =mountpoint; } 42 void setMountPoint(QString mountpoint) {m_mountpoint =mountpoint; }
@@ -56,6 +56,7 @@ private:
56 TTSBase* m_tts; 56 TTSBase* m_tts;
57 EncBase* m_enc; 57 EncBase* m_enc;
58 QSettings *userSettings; 58 QSettings *userSettings;
59 QSettings *deviceSettings;
59 60
60 QDir m_dir; 61 QDir m_dir;
61 QString m_mountpoint; 62 QString m_mountpoint;
diff --git a/rbutil/rbutilqt/tts.cpp b/rbutil/rbutilqt/tts.cpp
index b7c89ecbe9..de8e1d4468 100644
--- a/rbutil/rbutilqt/tts.cpp
+++ b/rbutil/rbutilqt/tts.cpp
@@ -104,7 +104,7 @@ TTSExes::TTSExes(QString name,QWidget *parent) : TTSBase(parent)
104 connect(ui.browse,SIGNAL(clicked()),this,SLOT(browse())); 104 connect(ui.browse,SIGNAL(clicked()),this,SLOT(browse()));
105} 105}
106 106
107bool TTSExes::start() 107bool TTSExes::start(QString *errStr)
108{ 108{
109 userSettings->beginGroup(m_name); 109 userSettings->beginGroup(m_name);
110 m_TTSexec = userSettings->value("ttspath","").toString(); 110 m_TTSexec = userSettings->value("ttspath","").toString();
@@ -120,6 +120,7 @@ bool TTSExes::start()
120 } 120 }
121 else 121 else
122 { 122 {
123 *errStr = tr("TTS executable not found");
123 return false; 124 return false;
124 } 125 }
125} 126}
@@ -244,42 +245,111 @@ void TTSExes::browse()
244**********************************************************************/ 245**********************************************************************/
245TTSSapi::TTSSapi(QWidget *parent) : TTSBase(parent) 246TTSSapi::TTSSapi(QWidget *parent) : TTSBase(parent)
246{ 247{
247 m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang \"%options\""; 248 m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\" /speed:%speed \"%options\"";
248 defaultLanguage ="english"; 249 defaultLanguage ="english";
249 ui.setupUi(this); 250 ui.setupUi(this);
250 this->hide(); 251 this->hide();
251 connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); 252 connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset()));
253 connect(ui.languagecombo,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateVoices(QString)));
252} 254}
253 255
254 256
255bool TTSSapi::start() 257bool TTSSapi::start(QString *errStr)
256{ 258{
257 259
258 userSettings->beginGroup("sapi"); 260 userSettings->beginGroup("sapi");
259 m_TTSOpts = userSettings->value("ttsoptions","").toString(); 261 m_TTSOpts = userSettings->value("ttsoptions","").toString();
260 m_TTSLanguage =userSettings->value("ttslanguage","").toString(); 262 m_TTSLanguage =userSettings->value("ttslanguage","").toString();
263 m_TTSVoice=userSettings->value("ttsvoice","").toString();
264 m_TTSSpeed=userSettings->value("ttsspeed","").toString();
261 userSettings->endGroup(); 265 userSettings->endGroup();
262 266
267 QFile::remove(QDir::tempPath() +"/sapi_voice.vbs");
263 QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs"); 268 QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs");
264 m_TTSexec = QDir::tempPath() +"/sapi_voice.vbs"; 269 m_TTSexec = QDir::tempPath() +"/sapi_voice.vbs";
265 270
266 QFileInfo tts(m_TTSexec); 271 QFileInfo tts(m_TTSexec);
267 if(!tts.exists()) 272 if(!tts.exists())
273 {
274 *errStr = tr("Could not copy the Sapi-script");
268 return false; 275 return false;
269 276 }
270 // create the voice process 277 // create the voice process
271 QString execstring = m_TTSTemplate; 278 QString execstring = m_TTSTemplate;
272 execstring.replace("%exe",m_TTSexec); 279 execstring.replace("%exe",m_TTSexec);
273 execstring.replace("%options",m_TTSOpts); 280 execstring.replace("%options",m_TTSOpts);
274 execstring.replace("%lang",m_TTSLanguage); 281 execstring.replace("%lang",m_TTSLanguage);
282 execstring.replace("%voice",m_TTSVoice);
283 execstring.replace("%speed",m_TTSSpeed);
284
275 qDebug() << "init" << execstring; 285 qDebug() << "init" << execstring;
276 voicescript = new QProcess(NULL); 286 voicescript = new QProcess(NULL);
287 //connect(voicescript,SIGNAL(readyReadStandardError()),this,SLOT(error()));
288
277 voicescript->start(execstring); 289 voicescript->start(execstring);
278 if(!voicescript->waitForStarted()) 290 if(!voicescript->waitForStarted())
291 {
292 *errStr = tr("Could not start the Sapi-script");
279 return false; 293 return false;
294 }
295
296 if(!voicescript->waitForReadyRead(100))
297 {
298 *errStr = voicescript->readAllStandardError();
299 if(*errStr != "")
300 return false;
301 }
280 return true; 302 return true;
281} 303}
282 304
305
306QStringList TTSSapi::getVoiceList(QString language)
307{
308 QStringList result;
309
310 QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs");
311 m_TTSexec = QDir::tempPath() +"/sapi_voice.vbs";
312
313 QFileInfo tts(m_TTSexec);
314 if(!tts.exists())
315 return result;
316
317 // create the voice process
318 QString execstring = "cscript //nologo \"%exe\" /language:%lang /listvoices";;
319 execstring.replace("%exe",m_TTSexec);
320 execstring.replace("%lang",language);
321 qDebug() << "init" << execstring;
322 voicescript = new QProcess(NULL);
323 voicescript->start(execstring);
324 if(!voicescript->waitForStarted())
325 return result;
326
327 voicescript->waitForReadyRead();
328
329 QString dataRaw = voicescript->readAllStandardError().data();
330 result = dataRaw.split(",",QString::SkipEmptyParts);
331 result.sort();
332 result.removeFirst();
333
334 delete voicescript;
335 QFile::setPermissions(QDir::tempPath() +"/sapi_voice.vbs",QFile::ReadOwner |QFile::WriteOwner|QFile::ExeOwner
336 |QFile::ReadUser| QFile::WriteUser| QFile::ExeUser
337 |QFile::ReadGroup |QFile::WriteGroup |QFile::ExeGroup
338 |QFile::ReadOther |QFile::WriteOther |QFile::ExeOther );
339 QFile::remove(QDir::tempPath() +"/sapi_voice.vbs");
340
341 return result;
342}
343
344void TTSSapi::updateVoices(QString language)
345{
346 QStringList Voices = getVoiceList(language);
347 ui.voicecombo->clear();
348 ui.voicecombo->addItems(Voices);
349
350
351}
352
283bool TTSSapi::voice(QString text,QString wavfile) 353bool TTSSapi::voice(QString text,QString wavfile)
284{ 354{
285 QString query = "SPEAK\t"+wavfile+"\t"+text+"\r\n"; 355 QString query = "SPEAK\t"+wavfile+"\t"+text+"\r\n";
@@ -296,6 +366,11 @@ bool TTSSapi::stop()
296 voicescript->write(query.toUtf8()); 366 voicescript->write(query.toUtf8());
297 voicescript->waitForFinished(); 367 voicescript->waitForFinished();
298 delete voicescript; 368 delete voicescript;
369 QFile::setPermissions(QDir::tempPath() +"/sapi_voice.vbs",QFile::ReadOwner |QFile::WriteOwner|QFile::ExeOwner
370 |QFile::ReadUser| QFile::WriteUser| QFile::ExeUser
371 |QFile::ReadGroup |QFile::WriteGroup |QFile::ExeGroup
372 |QFile::ReadOther |QFile::WriteOther |QFile::ExeOther );
373 QFile::remove(QDir::tempPath() +"/sapi_voice.vbs");
299 return true; 374 return true;
300} 375}
301 376
@@ -303,7 +378,7 @@ bool TTSSapi::stop()
303void TTSSapi::reset() 378void TTSSapi::reset()
304{ 379{
305 ui.ttsoptions->setText(""); 380 ui.ttsoptions->setText("");
306 ui.ttslanguage->setText(defaultLanguage); 381 ui.languagecombo->setCurrentIndex(ui.languagecombo->findText(defaultLanguage));
307} 382}
308 383
309void TTSSapi::showCfg() 384void TTSSapi::showCfg()
@@ -311,9 +386,35 @@ void TTSSapi::showCfg()
311 // try to get config from settings 386 // try to get config from settings
312 userSettings->beginGroup("sapi"); 387 userSettings->beginGroup("sapi");
313 ui.ttsoptions->setText(userSettings->value("ttsoptions","").toString()); 388 ui.ttsoptions->setText(userSettings->value("ttsoptions","").toString());
314 ui.ttslanguage->setText(userSettings->value("ttslanguage",defaultLanguage).toString()); 389 QString selLang = userSettings->value("ttslanguage",defaultLanguage).toString();
390 QString selVoice = userSettings->value("ttsvoice","").toString();
391 ui.speed->setValue(userSettings->value("ttsspeed",0).toInt());
315 userSettings->endGroup(); 392 userSettings->endGroup();
316 393
394 // fill in language combobox
395
396 deviceSettings->beginGroup("languages");
397 QStringList keys = deviceSettings->allKeys();
398 QStringList languages;
399 for(int i =0 ; i < keys.size();i++)
400 {
401 languages << deviceSettings->value(keys.at(i)).toString();
402 }
403 deviceSettings->endGroup();
404
405 languages.sort();
406 ui.languagecombo->clear();
407 ui.languagecombo->addItems(languages);
408
409 // set saved lang
410 ui.languagecombo->setCurrentIndex(ui.languagecombo->findText(selLang));
411
412 // fill in voice combobox
413 updateVoices(selLang);
414
415 // set saved lang
416 ui.voicecombo->setCurrentIndex(ui.voicecombo->findText(selVoice));
417
317 //show dialog 418 //show dialog
318 this->exec(); 419 this->exec();
319 420
@@ -326,7 +427,9 @@ void TTSSapi::accept(void)
326 //save settings in user config 427 //save settings in user config
327 userSettings->beginGroup("sapi"); 428 userSettings->beginGroup("sapi");
328 userSettings->setValue("ttsoptions",ui.ttsoptions->text()); 429 userSettings->setValue("ttsoptions",ui.ttsoptions->text());
329 userSettings->setValue("ttslanguage",ui.ttslanguage->text()); 430 userSettings->setValue("ttslanguage",ui.languagecombo->currentText());
431 userSettings->setValue("ttsvoice",ui.voicecombo->currentText());
432 userSettings->setValue("ttsspeed",QString("%1").arg(ui.speed->value()));
330 userSettings->endGroup(); 433 userSettings->endGroup();
331 // sync settings 434 // sync settings
332 userSettings->sync(); 435 userSettings->sync();
diff --git a/rbutil/rbutilqt/tts.h b/rbutil/rbutilqt/tts.h
index f9439ba48d..d792f077e0 100644
--- a/rbutil/rbutilqt/tts.h
+++ b/rbutil/rbutilqt/tts.h
@@ -42,12 +42,12 @@ class TTSBase : public QDialog
42public: 42public:
43 TTSBase(QWidget *parent ); 43 TTSBase(QWidget *parent );
44 virtual bool voice(QString text,QString wavfile) {return false;} 44 virtual bool voice(QString text,QString wavfile) {return false;}
45 virtual bool start(){return false;} 45 virtual bool start(QString *errStr){return false;}
46 virtual bool stop(){return false;} 46 virtual bool stop(){return false;}
47 virtual void showCfg(){} 47 virtual void showCfg(){}
48 virtual bool configOk(){return false;} 48 virtual bool configOk(){return false;}
49 49
50 void setUserCfg(QSettings *uSettings){userSettings = uSettings;} 50 void setCfg(QSettings *uSettings, QSettings *dSettings){userSettings = uSettings;deviceSettings = dSettings;}
51 51
52public slots: 52public slots:
53 virtual void accept(void){} 53 virtual void accept(void){}
@@ -56,6 +56,8 @@ public slots:
56 56
57protected: 57protected:
58 QSettings *userSettings; 58 QSettings *userSettings;
59 QSettings *deviceSettings;
60
59}; 61};
60 62
61class TTSSapi : public TTSBase 63class TTSSapi : public TTSBase
@@ -64,7 +66,7 @@ class TTSSapi : public TTSBase
64public: 66public:
65 TTSSapi(QWidget *parent = NULL); 67 TTSSapi(QWidget *parent = NULL);
66 virtual bool voice(QString text,QString wavfile); 68 virtual bool voice(QString text,QString wavfile);
67 virtual bool start(); 69 virtual bool start(QString *errStr);
68 virtual bool stop(); 70 virtual bool stop();
69 virtual void showCfg(); 71 virtual void showCfg();
70 virtual bool configOk(); 72 virtual bool configOk();
@@ -74,7 +76,10 @@ public slots:
74 virtual void reject(void); 76 virtual void reject(void);
75 virtual void reset(void); 77 virtual void reset(void);
76 78
79 void updateVoices(QString language);
77private: 80private:
81 QStringList getVoiceList(QString language);
82
78 Ui::SapiCfgFrm ui; 83 Ui::SapiCfgFrm ui;
79 QProcess* voicescript; 84 QProcess* voicescript;
80 85
@@ -84,6 +89,9 @@ private:
84 QString m_TTSOpts; 89 QString m_TTSOpts;
85 QString m_TTSTemplate; 90 QString m_TTSTemplate;
86 QString m_TTSLanguage; 91 QString m_TTSLanguage;
92 QString m_TTSVoice;
93 QString m_TTSSpeed;
94
87}; 95};
88 96
89class TTSExes : public TTSBase 97class TTSExes : public TTSBase
@@ -92,7 +100,7 @@ class TTSExes : public TTSBase
92public: 100public:
93 TTSExes(QString name,QWidget *parent = NULL); 101 TTSExes(QString name,QWidget *parent = NULL);
94 virtual bool voice(QString text,QString wavfile); 102 virtual bool voice(QString text,QString wavfile);
95 virtual bool start(); 103 virtual bool start(QString *errStr);
96 virtual bool stop() {return true;} 104 virtual bool stop() {return true;}
97 virtual void showCfg(); 105 virtual void showCfg();
98 virtual bool configOk(); 106 virtual bool configOk();
diff --git a/rbutil/rbutilqt/voicefile.cpp b/rbutil/rbutilqt/voicefile.cpp
index 8fbac75c75..47b659a347 100644
--- a/rbutil/rbutilqt/voicefile.cpp
+++ b/rbutil/rbutilqt/voicefile.cpp
@@ -26,7 +26,7 @@
26 26
27VoiceFileCreator::VoiceFileCreator(QObject* parent) :QObject(parent) 27VoiceFileCreator::VoiceFileCreator(QObject* parent) :QObject(parent)
28{ 28{
29 29 m_wavtrimThreshold=500;
30} 30}
31 31
32void VoiceFileCreator::abort() 32void VoiceFileCreator::abort()
@@ -147,10 +147,12 @@ void VoiceFileCreator::downloadDone(bool error)
147 147
148 //tts 148 //tts
149 m_tts = getTTS(userSettings->value("tts").toString()); 149 m_tts = getTTS(userSettings->value("tts").toString());
150 m_tts->setUserCfg(userSettings); 150 m_tts->setCfg(userSettings,deviceSettings);
151 151
152 if(!m_tts->start()) 152 QString errStr;
153 if(!m_tts->start(&errStr))
153 { 154 {
155 m_logger->addItem(errStr,LOGERROR);
154 m_logger->addItem(tr("Init of TTS engine failed"),LOGERROR); 156 m_logger->addItem(tr("Init of TTS engine failed"),LOGERROR);
155 m_logger->abort(); 157 m_logger->abort();
156 return; 158 return;
@@ -249,7 +251,7 @@ void VoiceFileCreator::downloadDone(bool error)
249 // todo strip 251 // todo strip
250 char buffer[255]; 252 char buffer[255];
251 253
252 wavtrim((char*)qPrintable(wavname),500,buffer,255); 254 wavtrim((char*)qPrintable(wavname),m_wavtrimThreshold,buffer,255);
253 255
254 // encode wav 256 // encode wav
255 m_enc->encode(wavname,encodedname); 257 m_enc->encode(wavname,encodedname);
diff --git a/rbutil/rbutilqt/voicefile.h b/rbutil/rbutilqt/voicefile.h
index b82f0373c7..ce7c953237 100644
--- a/rbutil/rbutilqt/voicefile.h
+++ b/rbutil/rbutilqt/voicefile.h
@@ -44,12 +44,12 @@ public:
44 bool createVoiceFile(ProgressloggerInterface* logger); 44 bool createVoiceFile(ProgressloggerInterface* logger);
45 45
46 // set infos 46 // set infos
47 void setUserSettings(QSettings* setting) { userSettings = setting;} 47 void setSettings(QSettings* uSettings,QSettings* dSettings) { userSettings = uSettings;deviceSettings = dSettings;}
48 void setDeviceSettings(QSettings* setting) { deviceSettings = setting;}
49 48
50 void setMountPoint(QString mountpoint) {m_mountpoint =mountpoint; } 49 void setMountPoint(QString mountpoint) {m_mountpoint =mountpoint; }
51 void setTargetId(int id){m_targetid = id;} 50 void setTargetId(int id){m_targetid = id;}
52 void setLang(QString name){m_lang =name;} 51 void setLang(QString name){m_lang =name;}
52 void setWavtrimThreshold(int th){m_wavtrimThreshold = th;}
53 void setProxy(QUrl proxy){m_proxy = proxy;} 53 void setProxy(QUrl proxy){m_proxy = proxy;}
54 54
55private slots: 55private slots:
@@ -75,6 +75,7 @@ private:
75 QString m_path; //path where the wav and mp3 files are stored to 75 QString m_path; //path where the wav and mp3 files are stored to
76 int m_targetid; //the target id 76 int m_targetid; //the target id
77 QString m_lang; // the language which will be spoken 77 QString m_lang; // the language which will be spoken
78 int m_wavtrimThreshold;
78 79
79 ProgressloggerInterface* m_logger; 80 ProgressloggerInterface* m_logger;
80 81