summaryrefslogtreecommitdiffstats
path: root/rbutil
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 /rbutil
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
Diffstat (limited to 'rbutil')
-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)
return op;
}
+bool RbSettings::ttsUseSapi4()
+{
+ userSettings->beginGroup("sapi");
+ bool op = userSettings->value("useSapi4",false).toBool();
+ userSettings->endGroup();
+ return op;
+}
+
QString RbSettings::encoderPath(QString enc)
{
userSettings->beginGroup(enc);
@@ -523,6 +531,14 @@ void RbSettings::setTTSLang(QString tts, QString lang)
userSettings->endGroup();
}
+void RbSettings::setTTSUseSapi4(bool value)
+{
+ userSettings->beginGroup("sapi");
+ userSettings->setValue("useSapi4",value);
+ userSettings->endGroup();
+}
+
+
void RbSettings::setEncoderPath(QString enc, QString path)
{
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
QString ttsVoice(QString tts);
int ttsSpeed(QString tts);
QString ttsLang(QString tts);
+ bool ttsUseSapi4();
QString encoderPath(QString enc);
QString encoderOptions(QString enc);
double encoderQuality(QString enc);
@@ -116,6 +117,7 @@ class RbSettings : public QObject
void setTTSSpeed(QString tts, int speed);
void setTTSVoice(QString tts, QString voice);
void setTTSLang(QString tts, QString lang);
+ void setTTSUseSapi4(bool value);
void setEncoderPath(QString enc, QString path);
void setEncoderOptions(QString enc, QString options);
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 @@
<item row="3" column="1" >
<widget class="QLineEdit" name="ttsoptions" />
</item>
- <item row="4" column="0" colspan="2" >
+ <item row="5" column="0" colspan="2" >
<spacer>
<property name="orientation" >
<enum>Qt::Vertical</enum>
@@ -79,7 +79,7 @@
</property>
</spacer>
</item>
- <item row="5" column="0" colspan="2" >
+ <item row="6" column="0" colspan="2" >
<layout class="QHBoxLayout" >
<item>
<widget class="QPushButton" name="reset" >
@@ -123,6 +123,13 @@
</item>
</layout>
</item>
+ <item row="4" column="0" colspan="2" >
+ <widget class="QCheckBox" name="usesapi4" >
+ <property name="text" >
+ <string>Use Sapi 4</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</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()
ttsList["flite"] = "Flite TTS Engine";
ttsList["swift"] = "Swift TTS Engine";
#if defined(Q_OS_WIN)
- ttsList["sapi"] = "Sapi 5 TTS Engine";
+ ttsList["sapi"] = "Sapi TTS Engine";
#endif
}
@@ -156,7 +156,7 @@ TTSSapi::TTSSapi() : TTSBase()
{
m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\" /speed:%speed \"%options\"";
defaultLanguage ="english";
-
+ m_sapi4 =false;
}
@@ -166,8 +166,9 @@ bool TTSSapi::start(QString *errStr)
m_TTSOpts = settings->ttsOptions("sapi");
m_TTSLanguage =settings->ttsLang("sapi");
m_TTSVoice=settings->ttsVoice("sapi");
- m_TTSSpeed=settings->ttsSpeed("sapi");
-
+ m_TTSSpeed=QString("%1").arg(settings->ttsSpeed("sapi"));
+ m_sapi4 = settings->ttsUseSapi4();
+
QFile::remove(QDir::tempPath() +"/sapi_voice.vbs");
QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs");
m_TTSexec = QDir::tempPath() +"/sapi_voice.vbs";
@@ -186,6 +187,9 @@ bool TTSSapi::start(QString *errStr)
execstring.replace("%voice",m_TTSVoice);
execstring.replace("%speed",m_TTSSpeed);
+ if(m_sapi4)
+ execstring.append(" /sapi4 ");
+
qDebug() << "init" << execstring;
voicescript = new QProcess(NULL);
//connect(voicescript,SIGNAL(readyReadStandardError()),this,SLOT(error()));
@@ -219,9 +223,13 @@ QStringList TTSSapi::getVoiceList(QString language)
return result;
// create the voice process
- QString execstring = "cscript //nologo \"%exe\" /language:%lang /listvoices";;
+ QString execstring = "cscript //nologo \"%exe\" /language:%lang /listvoices";
execstring.replace("%exe",m_TTSexec);
execstring.replace("%lang",language);
+
+ if(settings->ttsUseSapi4())
+ execstring.append(" /sapi4 ");
+
qDebug() << "init" << execstring;
voicescript = new QProcess(NULL);
voicescript->start(execstring);
@@ -234,6 +242,11 @@ QStringList TTSSapi::getVoiceList(QString language)
result = dataRaw.split(",",QString::SkipEmptyParts);
result.sort();
result.removeFirst();
+ for(int i = 0; i< result.size();i++)
+ {
+ result[i] = result.at(i).simplified();
+ }
+
delete voicescript;
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:
QString m_TTSLanguage;
QString m_TTSVoice;
QString m_TTSSpeed;
-
+ bool m_sapi4;
};
class 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)
this->hide();
connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset()));
connect(ui.languagecombo,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateVoices(QString)));
-
+ connect(ui.usesapi4,SIGNAL(stateChanged(int)),this,SLOT(useSapi4Changed(int)));
}
void TTSSapiGui::showCfg()
@@ -40,8 +40,11 @@ void TTSSapiGui::showCfg()
QString selLang = settings->ttsLang("sapi");
QString selVoice = settings->ttsVoice("sapi");
ui.speed->setValue(settings->ttsSpeed("sapi"));
+ if(settings->ttsUseSapi4())
+ ui.usesapi4->setCheckState(Qt::Checked);
+ else
+ ui.usesapi4->setCheckState(Qt::Unchecked);
-
// fill in language combobox
QStringList languages = settings->allLanguages();
@@ -79,6 +82,10 @@ void TTSSapiGui::accept(void)
settings->setTTSLang("sapi",ui.languagecombo->currentText());
settings->setTTSVoice("sapi",ui.voicecombo->currentText());
settings->setTTSSpeed("sapi",ui.speed->value());
+ if(ui.usesapi4->checkState() == Qt::Checked)
+ settings->setTTSUseSapi4(true);
+ else
+ settings->setTTSUseSapi4(false);
// sync settings
settings->sync();
@@ -98,6 +105,18 @@ void TTSSapiGui::updateVoices(QString language)
}
+void TTSSapiGui::useSapi4Changed(int)
+{
+ if(ui.usesapi4->checkState() == Qt::Checked)
+ settings->setTTSUseSapi4(true);
+ else
+ settings->setTTSUseSapi4(false);
+ // sync settings
+ settings->sync();
+ updateVoices(ui.languagecombo->currentText());
+
+}
+
TTSExesGui::TTSExesGui(QDialog* parent) : QDialog(parent)
{
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:
virtual void reject(void);
virtual void reset(void);
void updateVoices(QString language);
+ void useSapi4Changed(int);
private:
Ui::SapiCfgFrm ui;
RbSettings* settings;