Don't segfault upon opening the voice / talk creation window if the encoder setting is missing. This could happen if the configuration file is older and the user didn't re-save the settings.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16202 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dominik Riebeling 2008-02-02 21:34:39 +00:00
parent 51f6fb56f1
commit 91a503b23e
2 changed files with 24 additions and 12 deletions

View file

@ -87,15 +87,20 @@ void CreateVoiceWindow::setSettings(RbSettings* sett)
ui.labelTtsProfile->setText(tr("Selected TTS Engine: <b>%1</b>").arg("Invalid TTS configuration!"));
QString encoder = settings->curEncoder();
EncBase* enc = getEncoder(encoder);
enc->setCfg(settings);
if(enc->configOk())
ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg(encoder));
// only proceed if encoder setting is set
if(!encoder.isEmpty()) {
// FIXME: getEncoder CAN return a NULL pointer. Additional error
// checking is required or getEncoder should use the default engine
EncBase* enc = getEncoder(encoder);
enc->setCfg(settings);
if(enc->configOk())
ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg(encoder));
else
ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg("Invalid encoder configuration!"));
}
else
ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg("Invalid encoder configuration!"));
ui.wavtrimthreshold->setValue(settings->wavtrimTh());
ui.wavtrimthreshold->setValue(settings->wavtrimTh());
}

View file

@ -119,13 +119,20 @@ void InstallTalkWindow::setSettings(RbSettings* sett)
ui.labelTtsProfile->setText(tr("Selected TTS Engine: <b>%1</b>").arg("Invalid TTS configuration!"));
QString encoder = settings->curEncoder();
EncBase* enc = getEncoder(encoder);
enc->setCfg(settings);
if(enc->configOk())
ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg(encoder));
// only proceed if encoder setting is set
if(!encoder.isEmpty()) {
// FIXME: getEncoder CAN return a NULL pointer. Additional error
// checking is required or getEncoder should use the default engine
EncBase* enc = getEncoder(encoder);
enc->setCfg(settings);
if(enc->configOk())
ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg(encoder));
else
ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg("Invalid encoder configuration!"));
}
else
ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg("Invalid encoder configuration!"));
setTalkFolder(settings->lastTalkedFolder());
}