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:
parent
40137a9c07
commit
d111f3b66f
1 changed files with 14 additions and 7 deletions
|
|
@ -128,8 +128,14 @@ void ThemesInstallWindow::downloadDone(bool error)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
qDebug() << "adding theme:" << tl.at(i);
|
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(""", "\"").replace("&", "&");
|
||||||
|
name.replace("<", "<").replace(">", ">");
|
||||||
QListWidgetItem *w = new QListWidgetItem;
|
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));
|
w->setData(Qt::UserRole, tl.at(i));
|
||||||
ui.listThemes->addItem(w);
|
ui.listThemes->addItem(w);
|
||||||
|
|
||||||
|
|
@ -191,12 +197,13 @@ void ThemesInstallWindow::updateDetails(QListWidgetItem* cur, QListWidgetItem* p
|
||||||
+ iniDetails.value("image").toString()));
|
+ iniDetails.value("image").toString()));
|
||||||
|
|
||||||
QString text;
|
QString text;
|
||||||
text = tr("<b>Author:</b> %1<hr/>").arg(iniDetails.value("author",
|
QTextCodec* codec = QTextCodec::codecForName("UTF-8");
|
||||||
tr("unknown")).toString());
|
text = tr("<b>Author:</b> %1<hr/>").arg(codec->toUnicode(iniDetails
|
||||||
text += tr("<b>Version:</b> %1<hr/>").arg(iniDetails.value("version",
|
.value("author", tr("unknown")).toByteArray()));
|
||||||
tr("unknown")).toString());
|
text += tr("<b>Version:</b> %1<hr/>").arg(codec->toUnicode(iniDetails
|
||||||
text += tr("<b>Description:</b> %1<hr/>").arg(iniDetails.value("about",
|
.value("version", tr("unknown")).toByteArray()));
|
||||||
tr("no description")).toString());
|
text += tr("<b>Description:</b> %1<hr/>").arg(codec->toUnicode(iniDetails
|
||||||
|
.value("about", tr("no description")).toByteArray()));
|
||||||
|
|
||||||
text.trimmed();
|
text.trimmed();
|
||||||
text.replace("\n", "<br/>");
|
text.replace("\n", "<br/>");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue