summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/base
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2012-09-09 11:20:33 +0200
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2012-09-09 12:07:51 +0200
commit6be7dabdd952ef114941affca0e16ce8470595d3 (patch)
treec3a64a0b7092df7ee5d4ec1abef6ee604ad580fc /rbutil/rbutilqt/base
parent4a9ba12ca79a2b5cf13499821b84ba5b64defbe7 (diff)
downloadrockbox-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')
-rw-r--r--rbutil/rbutilqt/base/ttssapi.cpp62
-rw-r--r--rbutil/rbutilqt/base/ttssapi.h7
2 files changed, 35 insertions, 34 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
24TTSSapi::TTSSapi(QObject* parent) : TTSBase(parent) 24TTSSapi::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
70void TTSSapi::saveSettings() 75void 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()
94bool TTSSapi::start(QString *errStr) 99bool 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
264bool TTSSapi::configOk() 262bool 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}
diff --git a/rbutil/rbutilqt/base/ttssapi.h b/rbutil/rbutilqt/base/ttssapi.h
index 98f6f4255a..f645774852 100644
--- a/rbutil/rbutilqt/base/ttssapi.h
+++ b/rbutil/rbutilqt/base/ttssapi.h
@@ -61,12 +61,15 @@ class TTSSapi : public TTSBase
61 61
62 QString m_TTSexec; 62 QString m_TTSexec;
63 QString m_TTSOpts; 63 QString m_TTSOpts;
64 QString m_TTSTemplate;
65 QString m_TTSLanguage; 64 QString m_TTSLanguage;
66 QString m_TTSVoice; 65 QString m_TTSVoice;
67 QString m_TTSSpeed; 66 QString m_TTSSpeed;
68 bool m_sapi4;
69 bool m_started; 67 bool m_started;
68
69 protected:
70 QString m_TTSTemplate;
71 QString m_TTSVoiceTemplate;
72 QString m_TTSType;
70}; 73};
71 74
72 75