rbutil: Use lang-enum.txt in voicestrings.zip if present

rockbox-gerrit-noreply--- via rockbox-cvs <[email protected]>
Newsgroups gmane.comp.systems.archos.rockbox.cvs
Message-ID <[email protected]>
commit d9289e7f5ce99675a261e3547f211920dd41c1b8
Author: Solomon Peachy <[email protected]>
Date:   Mon Jan 12 20:22:43 2026 -0500

    rbutil:  Use lang-enum.txt in voicestrings.zip if present
    
    With this change, the code that looks for the VOICE_INVALID_VOICE_FILE
    and VOICE_LANG_NAME to produce standalone clips will finally work.
    
    Change-Id: I65ec592a1d3a6c83f92efadec72657c42552b41a

diff --git a/utils/rbutilqt/base/voicefile.cpp b/utils/rbutilqt/base/voicefile.cpp
index e5b7a1df1f..af5c94fd67 100644
--- a/utils/rbutilqt/base/voicefile.cpp
+++ b/utils/rbutilqt/base/voicefile.cpp
@@ -64,6 +64,7 @@ bool VoiceFileCreator::createVoiceFile()
     m_voiceformat = info.voicefmt();
     QString version = m_versionstring.left(m_versionstring.indexOf("-")).remove("r");
 
+    QMap<int, QString> enumstrings;
     // check if voicefile is present on target
     QString fn = m_mountpoint + "/.rockbox/langs/voicestrings.zip";
     LOG_INFO() << "searching for zipped voicestrings at" << fn;
@@ -72,14 +73,17 @@ bool VoiceFileCreator::createVoiceFile()
         ZipUtil z(this);
         if(z.open(fn)) {
             QStringList contents = z.files();
-            int vindex = -1, cindex = -1;
+            int vindex = -1, cindex = -1, eindex = -1;
             for(int index = 0; index < contents.size(); ++index) {
                 // strip any path, we don't know the structure in the zip
                 if(QFileInfo(contents.at(index)).baseName() == m_lang)
                     vindex = index;
                 if(QFileInfo(contents.at(index)).baseName() == "voice-corrections")
                     cindex = index;
-                if (vindex != -1 && cindex != -1)
+                if(QFileInfo(contents.at(index)).baseName() == "lang-enum")
+                    eindex = index;
+
+                if (vindex != -1 && cindex != -1 && eindex != -1)
                     break;
             }
             if(cindex != -1) {
@@ -98,6 +102,25 @@ bool VoiceFileCreator::createVoiceFile()
                     corrFile = &corrfile;
                 }
             }
+            if(eindex != -1) {
+                LOG_INFO() << "extracting voice corrections file";
+                QTemporaryFile enumfileT;
+                enumfileT.open();
+                QTextStream in(&enumfileT);
+                QString cfn = enumfileT.fileName();
+                if(z.extractArchive(cfn, QFileInfo(contents.at(eindex)).fileName())) {
+                    emit logItem(tr("Extracted language enumeration file from installation"), LOGINFO);
+
+                    while(!in.atEnd()) {
+                        QString line = in.readLine();
+                        QStringList row = line.split(":");
+                        int id = row[0].toInt(NULL, 0);
+                        QString name = row[1];
+                        enumstrings[id] = name;
+                    }
+                    enumfileT.close();
+                }
+            }
             if(vindex != -1) {
                 LOG_INFO() << "extracting strings file from zip";
                 // extract strings
@@ -142,9 +165,13 @@ bool VoiceFileCreator::createVoiceFile()
                         m_filename = voicefontlist.fileName();
                         for(auto key : voicestrings.keys()) {
                             QByteArray qba;
-                            qba = QString("id: %1_%2\n")
-                                    .arg(key < 0x8000 ? "LANG" : "VOICE")
-                                    .arg(key).toUtf8();
+                            if (enumstrings.contains(key)) {
+                                qba = QString("id: %1\n").arg(enumstrings[key]).toUtf8();
+                            } else {
+                                qba = QString("id: %1_%2\n")
+                                        .arg(key < 0x8000 ? "LANG" : "VOICE")
+                                        .arg(key).toUtf8();
+                            }
                             voicefontlist.write(qba);
                             qba = QString("voice: \"%1\"\n").arg(
                                     voicestrings[key]).toUtf8();
-- 
rockbox-cvs mailing list
[email protected]
https://lists.haxx.se/mailman/listinfo/rockbox-cvs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.