[PATCH] Fix UTF8 problems in the divelist
subsurface at henrik.synth.no
subsurface at henrik.synth.no
Wed Apr 24 13:53:03 PDT 2013
From: Henrik Brautaset Aronsen <subsurface at henrik.synth.no>
Non-ascii content in the divelist wasn't encoded properly.
Signed-off-by: Henrik Brautaset Aronsen <subsurface at henrik.synth.no>
---
Ooops, use this instead. The previous patch might lead to unexpected results [1].
Henrik
[1] http://www.qtforum.org/article/23762/qstring-to-char.html?s=f663f488b5f799a7ac564ce8800009d93cb54726#post84335
qt-ui/models.cpp | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp
index 40307d0..d123ec2 100644
--- a/qt-ui/models.cpp
+++ b/qt-ui/models.cpp
@@ -10,6 +10,11 @@
extern struct tank_info tank_info[100];
+QString fixUtf8(QString str)
+{
+ return QString::fromUtf8(str.toAscii().data());
+}
+
CylindersModel::CylindersModel(QObject* parent): QAbstractTableModel(parent)
{
}
@@ -374,7 +379,7 @@ QVariant DiveTripModel::data(const QModelIndex &index, int role) const
retVal = item->diveNumber();
break;
case DATE:
- retVal = item->diveDateTime();
+ retVal = fixUtf8(item->diveDateTime());
break;
case DURATION:
retVal = item->diveDuration();
@@ -383,7 +388,7 @@ QVariant DiveTripModel::data(const QModelIndex &index, int role) const
retVal = item->diveDepth();
break;
case LOCATION:
- retVal = item->diveLocation();
+ retVal = fixUtf8(item->diveLocation());
break;
}
}
@@ -393,7 +398,8 @@ QVariant DiveTripModel::data(const QModelIndex &index, int role) const
QVariant DiveTripModel::headerData(int section, Qt::Orientation orientation, int role) const
{
- QVariant ret;
+ QVariant converted;
+ QString ret;
if (orientation != Qt::Horizontal){
return ret;
}
@@ -407,7 +413,7 @@ QVariant DiveTripModel::headerData(int section, Qt::Orientation orientation, int
ret = tr("Date");
break;
case RATING:
- ret = UTF8_BLACKSTAR;
+ ret = QString(UTF8_BLACKSTAR);
break;
case DEPTH:
ret = tr("ft");
@@ -416,7 +422,7 @@ QVariant DiveTripModel::headerData(int section, Qt::Orientation orientation, int
ret = tr("min");
break;
case TEMPERATURE:
- ret = UTF8_DEGREE "F";
+ ret = QString(UTF8_DEGREE "F");
break;
case TOTALWEIGHT:
ret = tr("lbs");
@@ -428,7 +434,7 @@ QVariant DiveTripModel::headerData(int section, Qt::Orientation orientation, int
ret = tr("Cyl");
break;
case NITROX:
- ret = "O" UTF8_SUBSCRIPT_2 "%";
+ ret = QString("O" UTF8_SUBSCRIPT_2 "%");
break;
case SAC:
ret = tr("SAC");
@@ -443,8 +449,9 @@ QVariant DiveTripModel::headerData(int section, Qt::Orientation orientation, int
ret = tr("Location");
break;
}
+ converted = fixUtf8(ret);
}
- return ret;
+ return converted;
}
int DiveTripModel::rowCount(const QModelIndex &parent) const
--
1.8.1.3
More information about the subsurface
mailing list