diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2012-09-09 11:20:33 +0200 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2012-09-09 12:07:51 +0200 |
commit | 6be7dabdd952ef114941affca0e16ce8470595d3 (patch) | |
tree | c3a64a0b7092df7ee5d4ec1abef6ee604ad580fc /rbutil/rbutilqt/base/ttssapi.cpp | |
parent | 4a9ba12ca79a2b5cf13499821b84ba5b64defbe7 (diff) | |
download | rockbox-6be7dabdd952ef114941affca0e16ce8470595d3.tar.gz rockbox-6be7dabdd952ef114941affca0e16ce8470595d3.zip |
Make SAPI implementation more parametrizable.
Move command line template for listing voices and generation into protected
member variables and initialize them in the constructor. This allows derived
classes to overwrite these, allowing to change the command line call. Make the
name used for storing the classes values to the configuration parametrize at
all.
Remove SAPI4 support, this will be handled in a derived class later.
Change-Id: Ib5a261c56cdf93a44fffdfa6edea409d89fd84ba
Diffstat (limited to 'rbutil/rbutilqt/base/ttssapi.cpp')
-rw-r--r-- | rbutil/rbutilqt/base/ttssapi.cpp | 62 |
1 files changed, 30 insertions, 32 deletions
diff --git a/rbutil/rbutilqt/base/ttssapi.cpp b/rbutil/rbutilqt/base/ttssapi.cpp index 666b101266..603e7c5559 100644 --- a/rbutil/rbutilqt/base/ttssapi.cpp +++ b/rbutil/rbutilqt/base/ttssapi.cpp | |||
@@ -23,10 +23,11 @@ | |||
23 | 23 | ||
24 | TTSSapi::TTSSapi(QObject* parent) : TTSBase(parent) | 24 | TTSSapi::TTSSapi(QObject* parent) : TTSBase(parent) |
25 | { | 25 | { |
26 | m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\"" | 26 | m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang " |
27 | " /speed:%speed \"%options\""; | 27 | "/voice:\"%voice\" /speed:%speed \"%options\""; |
28 | m_TTSVoiceTemplate = "cscript //nologo \"%exe\" /language:%lang /listvoices"; | ||
29 | m_TTSType = "sapi"; | ||
28 | defaultLanguage = "english"; | 30 | defaultLanguage = "english"; |
29 | m_sapi4 = false; | ||
30 | m_started = false; | 31 | m_started = false; |
31 | } | 32 | } |
32 | 33 | ||
@@ -43,40 +44,44 @@ void TTSSapi::generateSettings() | |||
43 | for(int i = 0; i < languages.values().size(); ++i) { | 44 | for(int i = 0; i < languages.values().size(); ++i) { |
44 | langs.append(languages.values().at(i).at(0)); | 45 | langs.append(languages.values().at(i).at(0)); |
45 | } | 46 | } |
46 | EncTtsSetting* setting =new EncTtsSetting(this,EncTtsSetting::eSTRINGLIST, | 47 | EncTtsSetting* setting = new EncTtsSetting(this, |
47 | tr("Language:"),RbSettings::subValue("sapi",RbSettings::TtsLanguage), | 48 | EncTtsSetting::eSTRINGLIST, tr("Language:"), |
48 | langs); | 49 | RbSettings::subValue(m_TTSType, RbSettings::TtsLanguage), |
50 | langs); | ||
49 | connect(setting,SIGNAL(dataChanged()),this,SLOT(updateVoiceList())); | 51 | connect(setting,SIGNAL(dataChanged()),this,SLOT(updateVoiceList())); |
50 | insertSetting(eLANGUAGE,setting); | 52 | insertSetting(eLANGUAGE,setting); |
51 | // voice | 53 | // voice |
52 | setting = new EncTtsSetting(this,EncTtsSetting::eSTRINGLIST, | 54 | setting = new EncTtsSetting(this, |
53 | tr("Voice:"),RbSettings::subValue("sapi",RbSettings::TtsVoice), | 55 | EncTtsSetting::eSTRINGLIST, tr("Voice:"), |
54 | getVoiceList(RbSettings::subValue("sapi",RbSettings::TtsLanguage).toString()), | 56 | RbSettings::subValue(m_TTSType, RbSettings::TtsVoice), |
55 | EncTtsSetting::eREFRESHBTN); | 57 | getVoiceList(RbSettings::subValue(m_TTSType, |
58 | RbSettings::TtsLanguage).toString()), | ||
59 | EncTtsSetting::eREFRESHBTN); | ||
56 | connect(setting,SIGNAL(refresh()),this,SLOT(updateVoiceList())); | 60 | connect(setting,SIGNAL(refresh()),this,SLOT(updateVoiceList())); |
57 | insertSetting(eVOICE,setting); | 61 | insertSetting(eVOICE,setting); |
58 | //speed | 62 | //speed |
59 | int speed = RbSettings::subValue("sapi", RbSettings::TtsSpeed).toInt(); | 63 | int speed = RbSettings::subValue(m_TTSType, RbSettings::TtsSpeed).toInt(); |
60 | if(speed > 10 || speed < -10) | 64 | if(speed > 10 || speed < -10) |
61 | speed = 0; | 65 | speed = 0; |
62 | insertSetting(eSPEED, new EncTtsSetting(this, EncTtsSetting::eINT, | 66 | insertSetting(eSPEED, new EncTtsSetting(this, |
63 | tr("Speed:"), speed, -10, 10)); | 67 | EncTtsSetting::eINT, tr("Speed:"), speed, -10, 10)); |
64 | // options | 68 | // options |
65 | insertSetting(eOPTIONS,new EncTtsSetting(this,EncTtsSetting::eSTRING, | 69 | insertSetting(eOPTIONS, new EncTtsSetting(this, |
66 | tr("Options:"),RbSettings::subValue("sapi",RbSettings::TtsOptions))); | 70 | EncTtsSetting::eSTRING, tr("Options:"), |
71 | RbSettings::subValue(m_TTSType, RbSettings::TtsOptions))); | ||
67 | 72 | ||
68 | } | 73 | } |
69 | 74 | ||
70 | void TTSSapi::saveSettings() | 75 | void TTSSapi::saveSettings() |
71 | { | 76 | { |
72 | //save settings in user config | 77 | //save settings in user config |
73 | RbSettings::setSubValue("sapi",RbSettings::TtsLanguage, | 78 | RbSettings::setSubValue(m_TTSType, RbSettings::TtsLanguage, |
74 | getSetting(eLANGUAGE)->current().toString()); | 79 | getSetting(eLANGUAGE)->current().toString()); |
75 | RbSettings::setSubValue("sapi",RbSettings::TtsVoice, | 80 | RbSettings::setSubValue(m_TTSType, RbSettings::TtsVoice, |
76 | getSetting(eVOICE)->current().toString()); | 81 | getSetting(eVOICE)->current().toString()); |
77 | RbSettings::setSubValue("sapi",RbSettings::TtsSpeed, | 82 | RbSettings::setSubValue(m_TTSType, RbSettings::TtsSpeed, |
78 | getSetting(eSPEED)->current().toInt()); | 83 | getSetting(eSPEED)->current().toInt()); |
79 | RbSettings::setSubValue("sapi",RbSettings::TtsOptions, | 84 | RbSettings::setSubValue(m_TTSType, RbSettings::TtsOptions, |
80 | getSetting(eOPTIONS)->current().toString()); | 85 | getSetting(eOPTIONS)->current().toString()); |
81 | 86 | ||
82 | RbSettings::sync(); | 87 | RbSettings::sync(); |
@@ -94,11 +99,10 @@ void TTSSapi::updateVoiceList() | |||
94 | bool TTSSapi::start(QString *errStr) | 99 | bool TTSSapi::start(QString *errStr) |
95 | { | 100 | { |
96 | 101 | ||
97 | m_TTSOpts = RbSettings::subValue("sapi",RbSettings::TtsOptions).toString(); | 102 | m_TTSOpts = RbSettings::subValue(m_TTSType, RbSettings::TtsOptions).toString(); |
98 | m_TTSLanguage =RbSettings::subValue("sapi",RbSettings::TtsLanguage).toString(); | 103 | m_TTSLanguage =RbSettings::subValue(m_TTSType, RbSettings::TtsLanguage).toString(); |
99 | m_TTSVoice=RbSettings::subValue("sapi",RbSettings::TtsVoice).toString(); | 104 | m_TTSVoice=RbSettings::subValue(m_TTSType, RbSettings::TtsVoice).toString(); |
100 | m_TTSSpeed=RbSettings::subValue("sapi",RbSettings::TtsSpeed).toString(); | 105 | m_TTSSpeed=RbSettings::subValue(m_TTSType, RbSettings::TtsSpeed).toString(); |
101 | m_sapi4 = RbSettings::subValue("sapi",RbSettings::TtsUseSapi4).toBool(); | ||
102 | 106 | ||
103 | QFile::remove(QDir::tempPath() +"/sapi_voice.vbs"); | 107 | QFile::remove(QDir::tempPath() +"/sapi_voice.vbs"); |
104 | QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs"); | 108 | QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs"); |
@@ -118,9 +122,6 @@ bool TTSSapi::start(QString *errStr) | |||
118 | execstring.replace("%voice",m_TTSVoice); | 122 | execstring.replace("%voice",m_TTSVoice); |
119 | execstring.replace("%speed",m_TTSSpeed); | 123 | execstring.replace("%speed",m_TTSSpeed); |
120 | 124 | ||
121 | if(m_sapi4) | ||
122 | execstring.append(" /sapi4 "); | ||
123 | |||
124 | qDebug() << "[TTSSapi] Start:" << execstring; | 125 | qDebug() << "[TTSSapi] Start:" << execstring; |
125 | voicescript = new QProcess(NULL); | 126 | voicescript = new QProcess(NULL); |
126 | //connect(voicescript,SIGNAL(readyReadStandardError()),this,SLOT(error())); | 127 | //connect(voicescript,SIGNAL(readyReadStandardError()),this,SLOT(error())); |
@@ -179,13 +180,10 @@ QStringList TTSSapi::getVoiceList(QString language) | |||
179 | return result; | 180 | return result; |
180 | 181 | ||
181 | // create the voice process | 182 | // create the voice process |
182 | QString execstring = "cscript //nologo \"%exe\" /language:%lang /listvoices"; | 183 | QString execstring = m_TTSVoiceTemplate; |
183 | execstring.replace("%exe",m_TTSexec); | 184 | execstring.replace("%exe",m_TTSexec); |
184 | execstring.replace("%lang",language); | 185 | execstring.replace("%lang",language); |
185 | 186 | ||
186 | if(RbSettings::value(RbSettings::TtsUseSapi4).toBool()) | ||
187 | execstring.append(" /sapi4 "); | ||
188 | |||
189 | qDebug() << "[TTSSapi] Start:" << execstring; | 187 | qDebug() << "[TTSSapi] Start:" << execstring; |
190 | voicescript = new QProcess(NULL); | 188 | voicescript = new QProcess(NULL); |
191 | voicescript->start(execstring); | 189 | voicescript->start(execstring); |
@@ -263,7 +261,7 @@ bool TTSSapi::stop() | |||
263 | 261 | ||
264 | bool TTSSapi::configOk() | 262 | bool TTSSapi::configOk() |
265 | { | 263 | { |
266 | if(RbSettings::subValue("sapi",RbSettings::TtsVoice).toString().isEmpty()) | 264 | if(RbSettings::subValue(m_TTSType, RbSettings::TtsVoice).toString().isEmpty()) |
267 | return false; | 265 | return false; |
268 | return true; | 266 | return true; |
269 | } | 267 | } |