From d111f3b66f6368a77aafc1b28cf29e36c8e19289 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Mon, 27 Apr 2009 17:48:49 +0000 Subject: 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 --- rbutil/rbutilqt/themesinstallwindow.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'rbutil/rbutilqt') diff --git a/rbutil/rbutilqt/themesinstallwindow.cpp b/rbutil/rbutilqt/themesinstallwindow.cpp index 77dd21d747..669482eadd 100644 --- a/rbutil/rbutilqt/themesinstallwindow.cpp +++ b/rbutil/rbutilqt/themesinstallwindow.cpp @@ -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(""", "\"").replace("&", "&"); + name.replace("<", "<").replace(">", ">"); 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("Author: %1
").arg(iniDetails.value("author", - tr("unknown")).toString()); - text += tr("Version: %1
").arg(iniDetails.value("version", - tr("unknown")).toString()); - text += tr("Description: %1
").arg(iniDetails.value("about", - tr("no description")).toString()); + QTextCodec* codec = QTextCodec::codecForName("UTF-8"); + text = tr("Author: %1
").arg(codec->toUnicode(iniDetails + .value("author", tr("unknown")).toByteArray())); + text += tr("Version: %1
").arg(codec->toUnicode(iniDetails + .value("version", tr("unknown")).toByteArray())); + text += tr("Description: %1
").arg(codec->toUnicode(iniDetails + .value("about", tr("no description")).toByteArray())); text.trimmed(); text.replace("\n", "
"); -- cgit v1.2.3