summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Wenger <domonoky@googlemail.com>2008-01-13 13:51:33 +0000
committerDominik Wenger <domonoky@googlemail.com>2008-01-13 13:51:33 +0000
commit62f7f9e5504149d644a1d8db8b22a41621604c66 (patch)
treeab9c3e357dd416d2c95d77842b214609e90e5f5a
parentbf6d5cce683b94933ea013f7b0bfc5ec60a7fe16 (diff)
downloadrockbox-62f7f9e5504149d644a1d8db8b22a41621604c66.tar.gz
rockbox-62f7f9e5504149d644a1d8db8b22a41621604c66.zip
rbutil: improve voice creation: better parser for genlang output. Make progressbar working while voicegeneration. Sort the voice language list. Make the rbutil Translations built in. (run lrelease before make)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16075 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--rbutil/rbutilqt/createvoicewindow.cpp1
-rw-r--r--rbutil/rbutilqt/rbutil.ini3
-rw-r--r--rbutil/rbutilqt/rbutilqt.qrc7
-rw-r--r--rbutil/rbutilqt/voicefile.cpp102
4 files changed, 74 insertions, 39 deletions
diff --git a/rbutil/rbutilqt/createvoicewindow.cpp b/rbutil/rbutilqt/createvoicewindow.cpp
index b8a14498de..3ae489c7c7 100644
--- a/rbutil/rbutilqt/createvoicewindow.cpp
+++ b/rbutil/rbutilqt/createvoicewindow.cpp
@@ -82,6 +82,7 @@ void CreateVoiceWindow::setDeviceSettings(QSettings *dev)
}
devices->endGroup();
+ languages.sort();
ui.comboLanguage->addItems(languages);
// set saved lang
ui.comboLanguage->setCurrentIndex(ui.comboLanguage->findText(userSettings->value("voicelanguage").toString()));
diff --git a/rbutil/rbutilqt/rbutil.ini b/rbutil/rbutilqt/rbutil.ini
index 2f2e904ab4..562106ee15 100644
--- a/rbutil/rbutilqt/rbutil.ini
+++ b/rbutil/rbutilqt/rbutil.ini
@@ -434,9 +434,12 @@ bootloadername=firmware.mi4
resolution=132x80x16
manualname=
brand=Sandisk
+usbid=0x07817450
+usbid=0x07817451
voicename=sansac200
targetid=30
+
[languages]
lang1=africaans
lang2=bulgarian
diff --git a/rbutil/rbutilqt/rbutilqt.qrc b/rbutil/rbutilqt/rbutilqt.qrc
index 71e4c93d19..3f544291ff 100644
--- a/rbutil/rbutilqt/rbutilqt.qrc
+++ b/rbutil/rbutilqt/rbutilqt.qrc
@@ -36,4 +36,11 @@
<qresource prefix="/ini" >
<file>rbutil.ini</file>
</qresource>
+ <qresource prefix="/lang" >
+ <file>rbutil_de.qm</file>
+ <file>rbutil_tr.qm</file>
+ <file>rbutil_fr.qm</file>
+ <file>rbutil_zh_CN.qm</file>
+ <file>rbutil_zh_TW.qm</file>
+ </qresource>
</RCC>
diff --git a/rbutil/rbutilqt/voicefile.cpp b/rbutil/rbutilqt/voicefile.cpp
index 6c80400a68..8fbac75c75 100644
--- a/rbutil/rbutilqt/voicefile.cpp
+++ b/rbutil/rbutilqt/voicefile.cpp
@@ -38,7 +38,7 @@ bool VoiceFileCreator::createVoiceFile(ProgressloggerInterface* logger)
{
m_abort = false;
m_logger = logger;
- m_logger->addItem("Starting Voicefile generation",LOGINFO);
+ m_logger->addItem(tr("Starting Voicefile generation"),LOGINFO);
// test if tempdir exists
if(!QDir(QDir::tempPath()+"/rbvoice/").exists())
@@ -52,8 +52,7 @@ bool VoiceFileCreator::createVoiceFile(ProgressloggerInterface* logger)
QFile info(m_mountpoint+"/.rockbox/rockbox-info.txt");
if(!info.open(QIODevice::ReadOnly))
{
- m_logger->addItem("failed to open rockbox-info.txt",LOGERROR);
- m_logger->abort();
+ m_logger->addItem(tr("failed to open rockbox-info.txt"),LOGERROR);
return false;
}
@@ -141,7 +140,7 @@ void VoiceFileCreator::downloadDone(bool error)
QFile genlang(filename);
if(!genlang.open(QIODevice::ReadOnly))
{
- m_logger->addItem("failed to open downloaded file",LOGERROR);
+ m_logger->addItem(tr("failed to open downloaded file"),LOGERROR);
m_logger->abort();
return;
}
@@ -152,7 +151,7 @@ void VoiceFileCreator::downloadDone(bool error)
if(!m_tts->start())
{
- m_logger->addItem("Init of TTS engine failed",LOGERROR);
+ m_logger->addItem(tr("Init of TTS engine failed"),LOGERROR);
m_logger->abort();
return;
}
@@ -163,49 +162,84 @@ void VoiceFileCreator::downloadDone(bool error)
if(!m_enc->start())
{
- m_logger->addItem("Init of Encoder engine failed",LOGERROR);
+ m_logger->addItem(tr("Init of Encoder engine failed"),LOGERROR);
m_tts->stop();
m_logger->abort();
return;
}
QApplication::processEvents();
-
connect(m_logger,SIGNAL(aborted()),this,SLOT(abort()));
- QStringList mp3files;
-
+
+ //read in downloaded file
+ QList<QPair<QString,QString> > voicepairs;
QTextStream in(&genlang);
in.setCodec("UTF-8");
-
- bool emptyfile = true;
+ QString id, voice;
+ bool idfound = false;
+ bool voicefound=false;
while (!in.atEnd())
{
+ QString line = in.readLine();
+ if(line.contains("id:")) //ID found
+ {
+ id = line.remove("id:").remove('"').trimmed();
+ idfound = true;
+ }
+ else if(line.contains("voice:")) // voice found
+ {
+ voice = line.remove("voice:").remove('"').trimmed();
+ voicefound=true;
+ }
+
+ if(idfound && voicefound)
+ {
+ voicepairs.append(QPair<QString,QString>(id,voice));
+ idfound=false;
+ voicefound=false;
+ }
+ }
+ genlang.close();
+
+ // check for empty list
+ if(voicepairs.size() == 0)
+ {
+ m_logger->addItem(tr("The downloaded file was empty!"),LOGERROR);
+ m_logger->abort();
+ m_tts->stop();
+ return;
+ }
+
+ m_logger->setProgressMax(voicepairs.size());
+ m_logger->setProgressValue(0);
+
+ // create voice clips
+ QStringList mp3files;
+ for(int i=0; i< voicepairs.size(); i++)
+ {
if(m_abort)
{
m_logger->addItem("aborted.",LOGERROR);
- break;
+ m_logger->abort();
+ m_tts->stop();
+ return;
}
-
- QString comment = in.readLine();
- QString id = in.readLine();
- QString voice = in.readLine();
- id = id.remove("id:").remove('"').trimmed();
- voice = voice.remove("voice:").remove('"').trimmed();
-
- QString wavname = m_path + "/" + id + ".wav";
- QString toSpeak = voice;
- QString encodedname = m_path + "/" + id +".mp3";
+ m_logger->setProgressValue(i);
+
+ QString wavname = m_path + "/" + voicepairs.at(i).first + ".wav";
+ QString toSpeak = voicepairs.at(i).second;
+ QString encodedname = m_path + "/" + voicepairs.at(i).first +".mp3";
// todo PAUSE
- if(id == "VOICE_PAUSE")
+ if(voicepairs.at(i).first == "VOICE_PAUSE")
{
QFile::copy(":/builtin/builtin/VOICE_PAUSE.wav",m_path + "/VOICE_PAUSE.wav");
}
else
{
- if(voice == "") continue;
+ if(toSpeak == "") continue;
m_logger->addItem(tr("creating ")+toSpeak,LOGINFO);
QApplication::processEvents();
@@ -222,25 +256,15 @@ void VoiceFileCreator::downloadDone(bool error)
// remove the wav file
QFile::remove(wavname);
// remember the mp3 file for later removing
- mp3files << encodedname;
- // remember that we have done something
- emptyfile = false;
-
- }
- genlang.close();
-
- if(emptyfile)
- {
- m_logger->addItem(tr("The downloaded file was empty!"),LOGERROR);
- m_logger->abort();
- return;
+ mp3files << encodedname;
}
+
//make voicefile
FILE* ids2 = fopen(filename.toUtf8(), "r");
if (ids2 == NULL)
{
- m_logger->addItem("Error opening downloaded file",LOGERROR);
+ m_logger->addItem(tr("Error opening downloaded file"),LOGERROR);
m_logger->abort();
return;
}
@@ -248,7 +272,7 @@ void VoiceFileCreator::downloadDone(bool error)
FILE* output = fopen(QString(m_mountpoint + "/.rockbox/langs/" + m_lang + ".voice").toUtf8(), "wb");
if (output == NULL)
{
- m_logger->addItem("Error opening output file",LOGERROR);
+ m_logger->addItem(tr("Error opening output file"),LOGERROR);
return;
}
@@ -262,7 +286,7 @@ void VoiceFileCreator::downloadDone(bool error)
m_logger->setProgressMax(100);
m_logger->setProgressValue(100);
- m_logger->addItem("successfully created.",LOGOK);
+ m_logger->addItem(tr("successfully created."),LOGOK);
m_logger->abort();
}