Save the internal name for tts / encoder in the configuration file, not the displayed nice name. Additionally, kill a few warnings.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16233 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dominik Riebeling 2008-02-06 21:51:35 +00:00
parent cd31193948
commit c789f3a8a2
7 changed files with 69 additions and 66 deletions

View file

@ -134,9 +134,11 @@ void Config::accept()
settings->setCacheOffline(ui.cacheOfflineMode->isChecked()); settings->setCacheOffline(ui.cacheOfflineMode->isChecked());
// tts settings // tts settings
settings->setCurTTS(ui.comboTts->currentText()); int i = ui.comboTts->currentIndex();
settings->setCurTTS(ui.comboTts->itemData(i).toString());
//encoder settings //encoder settings
settings->setCurEncoder(ui.comboEncoder->currentText()); i = ui.comboEncoder->currentIndex();
settings->setCurEncoder(ui.comboEncoder->itemData(i).toString());
// sync settings // sync settings
settings->sync(); settings->sync();
@ -286,20 +288,22 @@ void Config::setDevices()
// tts / encoder tab // tts / encoder tab
//encoders //encoders
ui.comboEncoder->addItems(getEncoderList()); int index;
QStringList encoders = getEncoderList();
for(int a = 0; a < encoders.size(); a++)
ui.comboEncoder->addItem(getEncoderName(encoders.at(a)), encoders.at(a));
//update index of combobox //update index of combobox
int index = ui.comboEncoder->findText(settings->curEncoder(),Qt::MatchExactly); index = ui.comboEncoder->findData(settings->curEncoder());
if(index < 0) index = 0; if(index < 0) index = 0;
ui.comboEncoder->setCurrentIndex(index); ui.comboEncoder->setCurrentIndex(index);
updateEncState(index); updateEncState(index);
//tts //tts
ui.comboTts->addItems(getTTSList()); QStringList ttslist = getTTSList();
for(int a = 0; a < ttslist.size(); a++)
ui.comboTts->addItem(getTTSName(ttslist.at(a)), ttslist.at(a));
//update index of combobox //update index of combobox
index = ui.comboTts->findText(settings->curTTS(),Qt::MatchExactly); index = ui.comboTts->findData(settings->curTTS());
if(index < 0) index = 0; if(index < 0) index = 0;
ui.comboTts->setCurrentIndex(index); ui.comboTts->setCurrentIndex(index);
updateTtsState(index); updateTtsState(index);
@ -309,7 +313,7 @@ void Config::setDevices()
void Config::updateTtsState(int index) void Config::updateTtsState(int index)
{ {
QString ttsName = ui.comboTts->itemText(index); QString ttsName = ui.comboTts->itemData(index).toString();
TTSBase* tts = getTTS(ttsName); TTSBase* tts = getTTS(ttsName);
tts->setCfg(settings); tts->setCfg(settings);
@ -322,12 +326,12 @@ void Config::updateTtsState(int index)
{ {
ui.configTTSstatus->setText("Configuration INVALID"); ui.configTTSstatus->setText("Configuration INVALID");
ui.configTTSstatusimg->setPixmap(QPixmap(QString::fromUtf8(":/icons/icons/dialog-error.png"))); ui.configTTSstatusimg->setPixmap(QPixmap(QString::fromUtf8(":/icons/icons/dialog-error.png")));
} }
} }
void Config::updateEncState(int index) void Config::updateEncState(int index)
{ {
QString encoder = ui.comboEncoder->itemText(index); QString encoder = ui.comboEncoder->itemData(index).toString();
EncBase* enc = getEncoder(encoder); EncBase* enc = getEncoder(encoder);
enc->setCfg(settings); enc->setCfg(settings);
@ -583,7 +587,8 @@ void Config::cacheClear()
void Config::configTts() void Config::configTts()
{ {
TTSBase* tts =getTTS(ui.comboTts->currentText()); int index = ui.comboTts->currentIndex();
TTSBase* tts = getTTS(ui.comboTts->itemData(index).toString());
tts->setCfg(settings); tts->setCfg(settings);
tts->showCfg(); tts->showCfg();
@ -593,7 +598,8 @@ void Config::configTts()
void Config::configEnc() void Config::configEnc()
{ {
EncBase* enc =getEncoder(ui.comboEncoder->currentText()); int index = ui.comboEncoder->currentIndex();
EncBase* enc = getEncoder(ui.comboEncoder->itemData(index).toString());
enc->setCfg(settings); enc->setCfg(settings);
enc->showCfg(); enc->showCfg();

View file

@ -94,7 +94,7 @@ void CreateVoiceWindow::setSettings(RbSettings* sett)
TTSBase* tts = getTTS(ttsName); TTSBase* tts = getTTS(ttsName);
tts->setCfg(settings); tts->setCfg(settings);
if(tts->configOk()) if(tts->configOk())
ui.labelTtsProfile->setText(tr("Selected TTS engine : <b>%1</b>").arg(ttsName)); ui.labelTtsProfile->setText(tr("Selected TTS engine : <b>%1</b>").arg(getTTSName(ttsName)));
else else
ui.labelTtsProfile->setText(tr("Selected TTS Engine: <b>%1</b>").arg("Invalid TTS configuration!")); ui.labelTtsProfile->setText(tr("Selected TTS Engine: <b>%1</b>").arg("Invalid TTS configuration!"));
@ -104,7 +104,7 @@ void CreateVoiceWindow::setSettings(RbSettings* sett)
if(enc != NULL) { if(enc != NULL) {
enc->setCfg(settings); enc->setCfg(settings);
if(enc->configOk()) if(enc->configOk())
ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg(encoder)); ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg(getEncoderName(encoder)));
else else
ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg("Invalid encoder configuration!")); ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg("Invalid encoder configuration!"));
} }

View file

@ -26,56 +26,55 @@
static QMap<QString,QString> encoderList; static QMap<QString,QString> encoderList;
static QMap<QString,EncBase*> encoderCache; static QMap<QString,EncBase*> encoderCache;
void initEncoderList()
// initialize list of encoders
void initEncodernamesList()
{ {
encoderList["rbspeex"] = "Rockbox Speex Encoder"; encoderList["rbspeex"] = "Rockbox Speex Encoder";
encoderList["lame"] = "Lame Mp3 Encoder"; encoderList["lame"] = "Lame Mp3 Encoder";
} }
// function to get a specific encoder
EncBase* getEncoder(QString encname) // get nice name for a specific encoder
QString getEncoderName(QString encoder)
{
if(encoderList.isEmpty())
initEncodernamesList();
return encoderList.value(encoder);
}
// get a specific encoder object
EncBase* getEncoder(QString encoder)
{ {
// init list if its empty
if(encoderList.count() == 0) initEncoderList();
QString encoder = encoderList.key(encname);
// check cache // check cache
if(encoderCache.contains(encoder)) if(encoderCache.contains(encoder))
return encoderCache.value(encoder); return encoderCache.value(encoder);
EncBase* enc; EncBase* enc;
if(encoder == "rbspeex") if(encoder == "rbspeex")
{ {
enc = new EncRbSpeex(); enc = new EncRbSpeex();
encoderCache[encoder] = enc; encoderCache[encoder] = enc;
return enc; return enc;
} }
else if(encoder == "lame") else if(encoder == "lame")
{ {
enc = new EncExes(encoder); enc = new EncExes(encoder);
encoderCache[encoder] = enc; encoderCache[encoder] = enc;
return enc; return enc;
} }
else else
return NULL; return NULL;
} }
// get the list of encoders, nice names
QStringList getEncoderList() QStringList getEncoderList()
{ {
// init list if its empty if(encoderList.isEmpty())
if(encoderList.count() == 0) initEncoderList(); initEncodernamesList();
return encoderList.keys();
QStringList encList;
QMapIterator<QString, QString> i(encoderList);
while (i.hasNext()) {
i.next();
encList << i.value();
}
return encList;
} }

View file

@ -32,11 +32,12 @@ extern "C"
class EncBase; class EncBase;
//inits the encoder List //inits the encoder List
void initEncoderList(); void initEncodernamesList(void);
// function to get a specific encoder // function to get a specific encoder
EncBase* getEncoder(QString encname); EncBase* getEncoder(QString encname);
// get the list of encoders, nice names // get the list of encoders, nice names
QStringList getEncoderList(); QString getEncoderName(QString encoder);
QStringList getEncoderList(void);
class EncBase : public QDialog class EncBase : public QDialog
@ -45,7 +46,8 @@ class EncBase : public QDialog
public: public:
EncBase(QWidget *parent ); EncBase(QWidget *parent );
virtual bool encode(QString input,QString output){return false;} virtual bool encode(QString input,QString output)
{(void)input; (void)output; return false;}
virtual bool start(){return false;} virtual bool start(){return false;}
virtual bool stop(){return false;} virtual bool stop(){return false;}
virtual void showCfg(){} virtual void showCfg(){}

View file

@ -114,7 +114,7 @@ void InstallTalkWindow::setSettings(RbSettings* sett)
TTSBase* tts = getTTS(ttsName); TTSBase* tts = getTTS(ttsName);
tts->setCfg(settings); tts->setCfg(settings);
if(tts->configOk()) if(tts->configOk())
ui.labelTtsProfile->setText(tr("Selected TTS engine : <b>%1</b>").arg(ttsName)); ui.labelTtsProfile->setText(tr("Selected TTS engine : <b>%1</b>").arg(getTTSName(ttsName)));
else else
ui.labelTtsProfile->setText(tr("Selected TTS Engine: <b>%1</b>").arg("Invalid TTS configuration!")); ui.labelTtsProfile->setText(tr("Selected TTS Engine: <b>%1</b>").arg("Invalid TTS configuration!"));
@ -123,7 +123,7 @@ void InstallTalkWindow::setSettings(RbSettings* sett)
if(enc != NULL) { if(enc != NULL) {
enc->setCfg(settings); enc->setCfg(settings);
if(enc->configOk()) if(enc->configOk())
ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg(encoder)); ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg(getEncoderName(encoder)));
else else
ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg("Invalid encoder configuration!")); ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg("Invalid encoder configuration!"));
} }

View file

@ -36,18 +36,13 @@ void initTTSList()
} }
// function to get a specific encoder // function to get a specific encoder
TTSBase* getTTS(QString ttsname) TTSBase* getTTS(QString ttsName)
{ {
// init list if its empty
if(ttsList.count() == 0) initTTSList();
QString ttsName = ttsList.key(ttsname);
// check cache // check cache
if(ttsCache.contains(ttsName)) if(ttsCache.contains(ttsName))
return ttsCache.value(ttsName); return ttsCache.value(ttsName);
TTSBase* tts; TTSBase* tts;
if(ttsName == "sapi") if(ttsName == "sapi")
{ {
tts = new TTSSapi(); tts = new TTSSapi();
@ -66,18 +61,18 @@ TTSBase* getTTS(QString ttsname)
QStringList getTTSList() QStringList getTTSList()
{ {
// init list if its empty // init list if its empty
if(ttsList.count() == 0) initTTSList(); if(ttsList.count() == 0)
initTTSList();
QStringList ttsNameList; return ttsList.keys();
QMapIterator<QString, QString> i(ttsList);
while (i.hasNext()) {
i.next();
ttsNameList << i.value();
}
return ttsNameList;
} }
QString getTTSName(QString tts)
{
if(ttsList.isEmpty())
initTTSList();
return ttsList.value(tts);
}
/********************************************************************* /*********************************************************************
* TTS Base * TTS Base

View file

@ -37,6 +37,7 @@ void initTTSList();
TTSBase* getTTS(QString ttsname); TTSBase* getTTS(QString ttsname);
// get the list of tts, nice names // get the list of tts, nice names
QStringList getTTSList(); QStringList getTTSList();
QString getTTSName(QString tts);
class TTSBase : public QObject class TTSBase : public QObject
@ -44,8 +45,8 @@ class TTSBase : public QObject
Q_OBJECT Q_OBJECT
public: public:
TTSBase(); TTSBase();
virtual bool voice(QString text,QString wavfile) {return false;} virtual bool voice(QString text,QString wavfile) {(void)text; (void)wavfile; return false;}
virtual bool start(QString *errStr){return false;} virtual bool start(QString *errStr){(void)errStr; return false;}
virtual bool stop(){return false;} virtual bool stop(){return false;}
virtual void showCfg(){} virtual void showCfg(){}
virtual bool configOk(){return false;} virtual bool configOk(){return false;}