summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Wenger <domonoky@googlemail.com>2008-02-11 17:39:07 +0000
committerDominik Wenger <domonoky@googlemail.com>2008-02-11 17:39:07 +0000
commit5f641ed3c2194b44b053bf963069a76d6f6c4b2c (patch)
treedcc6bab4d5993f87055309f84905820e39d67452
parent8681ba082c532fa3890c3494275f1c8e38a628af (diff)
downloadrockbox-5f641ed3c2194b44b053bf963069a76d6f6c4b2c.tar.gz
rockbox-5f641ed3c2194b44b053bf963069a76d6f6c4b2c.zip
rbutil: fix a Bug in the sapi settings. Allow sapi4 (not sure if it really works).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16284 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--rbutil/rbutilqt/rbsettings.cpp16
-rw-r--r--rbutil/rbutilqt/rbsettings.h2
-rw-r--r--rbutil/rbutilqt/sapicfgfrm.ui11
-rw-r--r--rbutil/rbutilqt/tts.cpp23
-rw-r--r--rbutil/rbutilqt/tts.h2
-rw-r--r--rbutil/rbutilqt/ttsgui.cpp23
-rw-r--r--rbutil/rbutilqt/ttsgui.h1
7 files changed, 68 insertions, 10 deletions
diff --git a/rbutil/rbutilqt/rbsettings.cpp b/rbutil/rbutilqt/rbsettings.cpp
index 6e3e63110e..2aa43f7f84 100644
--- a/rbutil/rbutilqt/rbsettings.cpp
+++ b/rbutil/rbutilqt/rbsettings.cpp
@@ -307,6 +307,14 @@ QString RbSettings::ttsLang(QString tts)
307 return op; 307 return op;
308} 308}
309 309
310bool RbSettings::ttsUseSapi4()
311{
312 userSettings->beginGroup("sapi");
313 bool op = userSettings->value("useSapi4",false).toBool();
314 userSettings->endGroup();
315 return op;
316}
317
310QString RbSettings::encoderPath(QString enc) 318QString RbSettings::encoderPath(QString enc)
311{ 319{
312 userSettings->beginGroup(enc); 320 userSettings->beginGroup(enc);
@@ -523,6 +531,14 @@ void RbSettings::setTTSLang(QString tts, QString lang)
523 userSettings->endGroup(); 531 userSettings->endGroup();
524} 532}
525 533
534void RbSettings::setTTSUseSapi4(bool value)
535{
536 userSettings->beginGroup("sapi");
537 userSettings->setValue("useSapi4",value);
538 userSettings->endGroup();
539}
540
541
526void RbSettings::setEncoderPath(QString enc, QString path) 542void RbSettings::setEncoderPath(QString enc, QString path)
527{ 543{
528 userSettings->beginGroup(enc); 544 userSettings->beginGroup(enc);
diff --git a/rbutil/rbutilqt/rbsettings.h b/rbutil/rbutilqt/rbsettings.h
index ad94c63801..0613bea022 100644
--- a/rbutil/rbutilqt/rbsettings.h
+++ b/rbutil/rbutilqt/rbsettings.h
@@ -69,6 +69,7 @@ class RbSettings : public QObject
69 QString ttsVoice(QString tts); 69 QString ttsVoice(QString tts);
70 int ttsSpeed(QString tts); 70 int ttsSpeed(QString tts);
71 QString ttsLang(QString tts); 71 QString ttsLang(QString tts);
72 bool ttsUseSapi4();
72 QString encoderPath(QString enc); 73 QString encoderPath(QString enc);
73 QString encoderOptions(QString enc); 74 QString encoderOptions(QString enc);
74 double encoderQuality(QString enc); 75 double encoderQuality(QString enc);
@@ -116,6 +117,7 @@ class RbSettings : public QObject
116 void setTTSSpeed(QString tts, int speed); 117 void setTTSSpeed(QString tts, int speed);
117 void setTTSVoice(QString tts, QString voice); 118 void setTTSVoice(QString tts, QString voice);
118 void setTTSLang(QString tts, QString lang); 119 void setTTSLang(QString tts, QString lang);
120 void setTTSUseSapi4(bool value);
119 void setEncoderPath(QString enc, QString path); 121 void setEncoderPath(QString enc, QString path);
120 void setEncoderOptions(QString enc, QString options); 122 void setEncoderOptions(QString enc, QString options);
121 void setEncoderQuality(QString enc, double q); 123 void setEncoderQuality(QString enc, double q);
diff --git a/rbutil/rbutilqt/sapicfgfrm.ui b/rbutil/rbutilqt/sapicfgfrm.ui
index 03fccd1291..955fcdd73f 100644
--- a/rbutil/rbutilqt/sapicfgfrm.ui
+++ b/rbutil/rbutilqt/sapicfgfrm.ui
@@ -66,7 +66,7 @@
66 <item row="3" column="1" > 66 <item row="3" column="1" >
67 <widget class="QLineEdit" name="ttsoptions" /> 67 <widget class="QLineEdit" name="ttsoptions" />
68 </item> 68 </item>
69 <item row="4" column="0" colspan="2" > 69 <item row="5" column="0" colspan="2" >
70 <spacer> 70 <spacer>
71 <property name="orientation" > 71 <property name="orientation" >
72 <enum>Qt::Vertical</enum> 72 <enum>Qt::Vertical</enum>
@@ -79,7 +79,7 @@
79 </property> 79 </property>
80 </spacer> 80 </spacer>
81 </item> 81 </item>
82 <item row="5" column="0" colspan="2" > 82 <item row="6" column="0" colspan="2" >
83 <layout class="QHBoxLayout" > 83 <layout class="QHBoxLayout" >
84 <item> 84 <item>
85 <widget class="QPushButton" name="reset" > 85 <widget class="QPushButton" name="reset" >
@@ -123,6 +123,13 @@
123 </item> 123 </item>
124 </layout> 124 </layout>
125 </item> 125 </item>
126 <item row="4" column="0" colspan="2" >
127 <widget class="QCheckBox" name="usesapi4" >
128 <property name="text" >
129 <string>Use Sapi 4</string>
130 </property>
131 </widget>
132 </item>
126 </layout> 133 </layout>
127 </widget> 134 </widget>
128 </item> 135 </item>
diff --git a/rbutil/rbutilqt/tts.cpp b/rbutil/rbutilqt/tts.cpp
index 9bdbf6fe3e..1f40df003b 100644
--- a/rbutil/rbutilqt/tts.cpp
+++ b/rbutil/rbutilqt/tts.cpp
@@ -30,7 +30,7 @@ void initTTSList()
30 ttsList["flite"] = "Flite TTS Engine"; 30 ttsList["flite"] = "Flite TTS Engine";
31 ttsList["swift"] = "Swift TTS Engine"; 31 ttsList["swift"] = "Swift TTS Engine";
32#if defined(Q_OS_WIN) 32#if defined(Q_OS_WIN)
33 ttsList["sapi"] = "Sapi 5 TTS Engine"; 33 ttsList["sapi"] = "Sapi TTS Engine";
34#endif 34#endif
35 35
36} 36}
@@ -156,7 +156,7 @@ TTSSapi::TTSSapi() : TTSBase()
156{ 156{
157 m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\" /speed:%speed \"%options\""; 157 m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\" /speed:%speed \"%options\"";
158 defaultLanguage ="english"; 158 defaultLanguage ="english";
159 159 m_sapi4 =false;
160} 160}
161 161
162 162
@@ -166,8 +166,9 @@ bool TTSSapi::start(QString *errStr)
166 m_TTSOpts = settings->ttsOptions("sapi"); 166 m_TTSOpts = settings->ttsOptions("sapi");
167 m_TTSLanguage =settings->ttsLang("sapi"); 167 m_TTSLanguage =settings->ttsLang("sapi");
168 m_TTSVoice=settings->ttsVoice("sapi"); 168 m_TTSVoice=settings->ttsVoice("sapi");
169 m_TTSSpeed=settings->ttsSpeed("sapi"); 169 m_TTSSpeed=QString("%1").arg(settings->ttsSpeed("sapi"));
170 170 m_sapi4 = settings->ttsUseSapi4();
171
171 QFile::remove(QDir::tempPath() +"/sapi_voice.vbs"); 172 QFile::remove(QDir::tempPath() +"/sapi_voice.vbs");
172 QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs"); 173 QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs");
173 m_TTSexec = QDir::tempPath() +"/sapi_voice.vbs"; 174 m_TTSexec = QDir::tempPath() +"/sapi_voice.vbs";
@@ -186,6 +187,9 @@ bool TTSSapi::start(QString *errStr)
186 execstring.replace("%voice",m_TTSVoice); 187 execstring.replace("%voice",m_TTSVoice);
187 execstring.replace("%speed",m_TTSSpeed); 188 execstring.replace("%speed",m_TTSSpeed);
188 189
190 if(m_sapi4)
191 execstring.append(" /sapi4 ");
192
189 qDebug() << "init" << execstring; 193 qDebug() << "init" << execstring;
190 voicescript = new QProcess(NULL); 194 voicescript = new QProcess(NULL);
191 //connect(voicescript,SIGNAL(readyReadStandardError()),this,SLOT(error())); 195 //connect(voicescript,SIGNAL(readyReadStandardError()),this,SLOT(error()));
@@ -219,9 +223,13 @@ QStringList TTSSapi::getVoiceList(QString language)
219 return result; 223 return result;
220 224
221 // create the voice process 225 // create the voice process
222 QString execstring = "cscript //nologo \"%exe\" /language:%lang /listvoices";; 226 QString execstring = "cscript //nologo \"%exe\" /language:%lang /listvoices";
223 execstring.replace("%exe",m_TTSexec); 227 execstring.replace("%exe",m_TTSexec);
224 execstring.replace("%lang",language); 228 execstring.replace("%lang",language);
229
230 if(settings->ttsUseSapi4())
231 execstring.append(" /sapi4 ");
232
225 qDebug() << "init" << execstring; 233 qDebug() << "init" << execstring;
226 voicescript = new QProcess(NULL); 234 voicescript = new QProcess(NULL);
227 voicescript->start(execstring); 235 voicescript->start(execstring);
@@ -234,6 +242,11 @@ QStringList TTSSapi::getVoiceList(QString language)
234 result = dataRaw.split(",",QString::SkipEmptyParts); 242 result = dataRaw.split(",",QString::SkipEmptyParts);
235 result.sort(); 243 result.sort();
236 result.removeFirst(); 244 result.removeFirst();
245 for(int i = 0; i< result.size();i++)
246 {
247 result[i] = result.at(i).simplified();
248 }
249
237 250
238 delete voicescript; 251 delete voicescript;
239 QFile::setPermissions(QDir::tempPath() +"/sapi_voice.vbs",QFile::ReadOwner |QFile::WriteOwner|QFile::ExeOwner 252 QFile::setPermissions(QDir::tempPath() +"/sapi_voice.vbs",QFile::ReadOwner |QFile::WriteOwner|QFile::ExeOwner
diff --git a/rbutil/rbutilqt/tts.h b/rbutil/rbutilqt/tts.h
index 1addbe2ebb..a5427fe05f 100644
--- a/rbutil/rbutilqt/tts.h
+++ b/rbutil/rbutilqt/tts.h
@@ -88,7 +88,7 @@ private:
88 QString m_TTSLanguage; 88 QString m_TTSLanguage;
89 QString m_TTSVoice; 89 QString m_TTSVoice;
90 QString m_TTSSpeed; 90 QString m_TTSSpeed;
91 91 bool m_sapi4;
92}; 92};
93 93
94class TTSExes : public TTSBase 94class TTSExes : public TTSBase
diff --git a/rbutil/rbutilqt/ttsgui.cpp b/rbutil/rbutilqt/ttsgui.cpp
index 76488c5411..3ed2e87f0e 100644
--- a/rbutil/rbutilqt/ttsgui.cpp
+++ b/rbutil/rbutilqt/ttsgui.cpp
@@ -30,7 +30,7 @@ TTSSapiGui::TTSSapiGui(TTSSapi* sapi,QDialog* parent) : QDialog(parent)
30 this->hide(); 30 this->hide();
31 connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); 31 connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset()));
32 connect(ui.languagecombo,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateVoices(QString))); 32 connect(ui.languagecombo,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateVoices(QString)));
33 33 connect(ui.usesapi4,SIGNAL(stateChanged(int)),this,SLOT(useSapi4Changed(int)));
34} 34}
35 35
36void TTSSapiGui::showCfg() 36void TTSSapiGui::showCfg()
@@ -40,8 +40,11 @@ void TTSSapiGui::showCfg()
40 QString selLang = settings->ttsLang("sapi"); 40 QString selLang = settings->ttsLang("sapi");
41 QString selVoice = settings->ttsVoice("sapi"); 41 QString selVoice = settings->ttsVoice("sapi");
42 ui.speed->setValue(settings->ttsSpeed("sapi")); 42 ui.speed->setValue(settings->ttsSpeed("sapi"));
43 if(settings->ttsUseSapi4())
44 ui.usesapi4->setCheckState(Qt::Checked);
45 else
46 ui.usesapi4->setCheckState(Qt::Unchecked);
43 47
44
45 // fill in language combobox 48 // fill in language combobox
46 QStringList languages = settings->allLanguages(); 49 QStringList languages = settings->allLanguages();
47 50
@@ -79,6 +82,10 @@ void TTSSapiGui::accept(void)
79 settings->setTTSLang("sapi",ui.languagecombo->currentText()); 82 settings->setTTSLang("sapi",ui.languagecombo->currentText());
80 settings->setTTSVoice("sapi",ui.voicecombo->currentText()); 83 settings->setTTSVoice("sapi",ui.voicecombo->currentText());
81 settings->setTTSSpeed("sapi",ui.speed->value()); 84 settings->setTTSSpeed("sapi",ui.speed->value());
85 if(ui.usesapi4->checkState() == Qt::Checked)
86 settings->setTTSUseSapi4(true);
87 else
88 settings->setTTSUseSapi4(false);
82 // sync settings 89 // sync settings
83 settings->sync(); 90 settings->sync();
84 91
@@ -98,6 +105,18 @@ void TTSSapiGui::updateVoices(QString language)
98 105
99} 106}
100 107
108void TTSSapiGui::useSapi4Changed(int)
109{
110 if(ui.usesapi4->checkState() == Qt::Checked)
111 settings->setTTSUseSapi4(true);
112 else
113 settings->setTTSUseSapi4(false);
114 // sync settings
115 settings->sync();
116 updateVoices(ui.languagecombo->currentText());
117
118}
119
101TTSExesGui::TTSExesGui(QDialog* parent) : QDialog(parent) 120TTSExesGui::TTSExesGui(QDialog* parent) : QDialog(parent)
102{ 121{
103 ui.setupUi(this); 122 ui.setupUi(this);
diff --git a/rbutil/rbutilqt/ttsgui.h b/rbutil/rbutilqt/ttsgui.h
index 427dcd288c..8f53bf34a4 100644
--- a/rbutil/rbutilqt/ttsgui.h
+++ b/rbutil/rbutilqt/ttsgui.h
@@ -42,6 +42,7 @@ public slots:
42 virtual void reject(void); 42 virtual void reject(void);
43 virtual void reset(void); 43 virtual void reset(void);
44 void updateVoices(QString language); 44 void updateVoices(QString language);
45 void useSapi4Changed(int);
45private: 46private:
46 Ui::SapiCfgFrm ui; 47 Ui::SapiCfgFrm ui;
47 RbSettings* settings; 48 RbSettings* settings;