1
0
Fork 0
forked from len0rd/rockbox

Qt always assumes ini files to use Latin1 encoding but the theme site uses utf-8. Explicitly convert texts displayed to the user. Fixes non-ascii characters showing up incorrectly.

Replace some HTML entities for the themes list as that isn't parsed as HTML.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20811 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dominik Riebeling 2009-04-27 17:48:49 +00:00
parent 40137a9c07
commit d111f3b66f

View file

@ -128,8 +128,14 @@ void ThemesInstallWindow::downloadDone(bool error)
continue;
}
qDebug() << "adding theme:" << tl.at(i);
// convert to unicode and replace HTML-specific entities
QByteArray raw = iniDetails.value("name").toByteArray();
QTextCodec* codec = QTextCodec::codecForHtml(raw);
QString name = codec->toUnicode(raw);
name.replace("&quot;", "\"").replace("&amp;", "&");
name.replace("&lt;", "<").replace("&gt;", ">");
QListWidgetItem *w = new QListWidgetItem;
w->setData(Qt::DisplayRole, iniDetails.value("name").toString().trimmed());
w->setData(Qt::DisplayRole, name.trimmed());
w->setData(Qt::UserRole, tl.at(i));
ui.listThemes->addItem(w);
@ -191,12 +197,13 @@ void ThemesInstallWindow::updateDetails(QListWidgetItem* cur, QListWidgetItem* p
+ iniDetails.value("image").toString()));
QString text;
text = tr("<b>Author:</b> %1<hr/>").arg(iniDetails.value("author",
tr("unknown")).toString());
text += tr("<b>Version:</b> %1<hr/>").arg(iniDetails.value("version",
tr("unknown")).toString());
text += tr("<b>Description:</b> %1<hr/>").arg(iniDetails.value("about",
tr("no description")).toString());
QTextCodec* codec = QTextCodec::codecForName("UTF-8");
text = tr("<b>Author:</b> %1<hr/>").arg(codec->toUnicode(iniDetails
.value("author", tr("unknown")).toByteArray()));
text += tr("<b>Version:</b> %1<hr/>").arg(codec->toUnicode(iniDetails
.value("version", tr("unknown")).toByteArray()));
text += tr("<b>Description:</b> %1<hr/>").arg(codec->toUnicode(iniDetails
.value("about", tr("no description")).toByteArray()));
text.trimmed();
text.replace("\n", "<br/>");