summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Adams <chris.adams@qinetic.com.au>2020-10-01 13:35:34 +1000
committerChris Adams <chris.adams@qinetic.com.au>2020-11-02 13:18:03 +1000
commitfdaa78b4ab7f02f9213fdec2a8e18d896d504a45 (patch)
tree9e4b9e4db0033c55549cb61374c11225e9d43529
parentf9a8f0fc914c040d48bbd0ef52d7a68eea175a98 (diff)
QTextCodec is now part of the Qt5Compat library
Change-Id: I9d6a6d46822d4f82debb1446a90443857f27c962 Reviewed-by: Pekka Vuorela <pvuorela@iki.fi> Reviewed-by: Alberto Mardegan <mardy@users.sourceforge.net>
-rw-r--r--src/versit/qvcard21writer.cpp8
-rw-r--r--src/versit/qvcard30writer.cpp3
-rw-r--r--src/versit/qversitdocumentwriter_p.cpp20
-rw-r--r--src/versit/qversitproperty.cpp4
-rw-r--r--src/versit/qversitreader.cpp3
-rw-r--r--src/versit/qversitreader_p.cpp3
-rw-r--r--src/versit/qversitutils.cpp4
-rw-r--r--src/versit/qversitwriter.cpp4
-rw-r--r--src/versit/qversitwriter_p.cpp3
-rw-r--r--src/versit/versit.pro2
-rw-r--r--tests/auto/versit/qvcard21writer/qvcard21writer.pro2
-rw-r--r--tests/auto/versit/qvcard21writer/tst_qvcard21writer.cpp2
-rw-r--r--tests/auto/versit/qvcard30writer/qvcard30writer.pro2
-rw-r--r--tests/auto/versit/qvcard30writer/tst_qvcard30writer.cpp2
-rw-r--r--tests/auto/versit/qversitreader/qversitreader.pro2
-rw-r--r--tests/auto/versit/qversitreader/tst_qversitreader.cpp37
-rw-r--r--tests/auto/versit/qversitwriter/qversitwriter.pro2
-rw-r--r--tests/auto/versit/qversitwriter/tst_qversitwriter.cpp13
18 files changed, 69 insertions, 47 deletions
diff --git a/src/versit/qvcard21writer.cpp b/src/versit/qvcard21writer.cpp
index a890c208b..0d6a78b6f 100644
--- a/src/versit/qvcard21writer.cpp
+++ b/src/versit/qvcard21writer.cpp
@@ -40,9 +40,10 @@
#include "qvcard21writer_p.h"
#include <QtCore/qregularexpression.h>
-#include <QtCore/qtextcodec.h>
#include <QtCore/qvariant.h>
+#include <QTextCodec>
+
#include "qversitproperty.h"
#include <algorithm>
@@ -58,9 +59,8 @@ QTextEncoder* QVCard21Writer::utf8Encoder()
{
static QTextEncoder* encoder = 0;
if (encoder == 0) {
- encoder = QTextCodec::codecForName("UTF-8")->makeEncoder();
- // Hack so the encoder doesn't output a byte order mark
- encoder->fromUnicode(QString());
+ // prevent output of byte order mark for UTF-8 encoding
+ encoder = QTextCodec::codecForName("UTF-8")->makeEncoder(QStringConverterBase::Flag::Default);
}
return encoder;
}
diff --git a/src/versit/qvcard30writer.cpp b/src/versit/qvcard30writer.cpp
index 592bb6220..ef182f02c 100644
--- a/src/versit/qvcard30writer.cpp
+++ b/src/versit/qvcard30writer.cpp
@@ -41,9 +41,10 @@
#include <QtCore/qbuffer.h>
#include <QtCore/qregularexpression.h>
-#include <QtCore/qtextcodec.h>
#include <QtCore/qvariant.h>
+#include <QTextCodec>
+
#include "qversitproperty.h"
#include "qversitutils_p.h"
diff --git a/src/versit/qversitdocumentwriter_p.cpp b/src/versit/qversitdocumentwriter_p.cpp
index 47a956a1b..0793a08e5 100644
--- a/src/versit/qversitdocumentwriter_p.cpp
+++ b/src/versit/qversitdocumentwriter_p.cpp
@@ -40,7 +40,9 @@
#include "qversitdocumentwriter_p.h"
#include <QtCore/qiodevice.h>
-#include <QtCore/qtextcodec.h>
+#include <QtCore/qbytearray.h>
+
+#include <QTextCodec>
#include "qversitutils_p.h"
@@ -86,11 +88,9 @@ void QVersitDocumentWriter::setCodec(QTextCodec *codec)
if (mEncoder)
delete mEncoder;
mCodec = codec;
- mEncoder = codec->makeEncoder();
-
- // Hack so the encoder doesn't output a byte order mark for UTF-8.
- if (mCodec->name() == "UTF-8")
- mEncoder->fromUnicode(QString());
+ mEncoder = codec->makeEncoder(mCodec->name() == QByteArrayLiteral("UTF-8")
+ ? QStringConverterBase::Flag::Default
+ : QStringConverterBase::Flag::WriteBom);
// UTF-(16|32)(LE|BE) are the only codecs where characters in the base64 range aren't encoded
// the same as in ASCII. For ASCII compatible codecs, we can do some optimizations.
@@ -225,14 +225,16 @@ void QVersitDocumentWriter::writeString(const QString &value)
// Write the first "spaceRemaining" characters
QStringRef line(&value, charsWritten, spaceRemaining);
charsWritten += spaceRemaining;
- if (mDevice->write(mEncoder->fromUnicode(line.constData(), line.length())) < 0
- || mDevice->write(mEncoder->fromUnicode(crlfSpace)) < 0)
+ const QByteArray encodedLine = mEncoder->fromUnicode(line.constData(), line.length());
+ const QByteArray encodedCrlfSpace = mEncoder->fromUnicode(crlfSpace);
+ if (mDevice->write(encodedLine) < 0 || mDevice->write(encodedCrlfSpace) < 0)
mSuccessful = false;
spaceRemaining = MAX_LINE_LENGTH - 1; // minus 1 for the space at the front.
mCurrentLineLength = 1;
}
- if (mDevice->write(mEncoder->fromUnicode(value.mid(charsWritten))) < 0)
+ const QByteArray encodedRemainder = mEncoder->fromUnicode(value.mid(charsWritten));
+ if (mDevice->write(encodedRemainder) < 0)
mSuccessful = false;
mCurrentLineLength += value.length() - charsWritten;
}
diff --git a/src/versit/qversitproperty.cpp b/src/versit/qversitproperty.cpp
index b0999c011..af7f8ec5f 100644
--- a/src/versit/qversitproperty.cpp
+++ b/src/versit/qversitproperty.cpp
@@ -39,13 +39,13 @@
#include "qversitproperty.h"
#include "qversitproperty_p.h"
+#include "qversitdocument.h"
#ifndef QT_NO_DEBUG_STREAM
#include <QtCore/qdebug.h>
#endif
-#include <QtCore/qtextcodec.h>
-#include "qversitdocument.h"
+#include <QTextCodec>
QT_BEGIN_NAMESPACE_VERSIT
diff --git a/src/versit/qversitreader.cpp b/src/versit/qversitreader.cpp
index 0964c5c89..17708efdf 100644
--- a/src/versit/qversitreader.cpp
+++ b/src/versit/qversitreader.cpp
@@ -41,7 +41,8 @@
#include "qversitreader_p.h"
#include <QtCore/qbuffer.h>
-#include <QtCore/qtextcodec.h>
+
+#include <QTextCodec>
QT_BEGIN_NAMESPACE_VERSIT
diff --git a/src/versit/qversitreader_p.cpp b/src/versit/qversitreader_p.cpp
index b8300e705..6e240642f 100644
--- a/src/versit/qversitreader_p.cpp
+++ b/src/versit/qversitreader_p.cpp
@@ -40,9 +40,10 @@
#include "qversitreader_p.h"
#include <QtCore/qbuffer.h>
-#include <QtCore/qtextcodec.h>
#include <QtCore/qvariant.h>
+#include <QTextCodec>
+
#include "qversitutils_p.h"
QT_BEGIN_NAMESPACE_VERSIT
diff --git a/src/versit/qversitutils.cpp b/src/versit/qversitutils.cpp
index f9bde18d0..08ff3901d 100644
--- a/src/versit/qversitutils.cpp
+++ b/src/versit/qversitutils.cpp
@@ -39,15 +39,15 @@
#include "qversitutils_p.h"
-#include <QtCore/QTextCodec>
#include <QtCore/qstring.h>
-#include <QtCore/qtextcodec.h>
#include <QtCore/qvariant.h>
#include <QtCore/QJsonArray>
#include <QtCore/QJsonDocument>
#include <QtCore/QJsonValue>
+#include <QTextCodec>
+
#include "qversitdocument.h"
QT_BEGIN_NAMESPACE_VERSIT
diff --git a/src/versit/qversitwriter.cpp b/src/versit/qversitwriter.cpp
index f377a6a3e..150bbae56 100644
--- a/src/versit/qversitwriter.cpp
+++ b/src/versit/qversitwriter.cpp
@@ -39,11 +39,11 @@
#include "qversitwriter.h"
#include "qversitwriter_p.h"
+#include "qversitutils_p.h"
#include <QtCore/qbuffer.h>
-#include <QtCore/qtextcodec.h>
-#include "qversitutils_p.h"
+#include <QTextCodec>
QT_BEGIN_NAMESPACE_VERSIT
diff --git a/src/versit/qversitwriter_p.cpp b/src/versit/qversitwriter_p.cpp
index 3b158382a..f10495f0e 100644
--- a/src/versit/qversitwriter_p.cpp
+++ b/src/versit/qversitwriter_p.cpp
@@ -41,7 +41,8 @@
#include <QtCore/qbuffer.h>
#include <QtCore/qstringlist.h>
-#include <QtCore/qtextcodec.h>
+
+#include <QTextCodec>
#include "qvcard21writer_p.h"
#include "qvcard30writer_p.h"
diff --git a/src/versit/versit.pro b/src/versit/versit.pro
index 06093a18b..c91928cb7 100644
--- a/src/versit/versit.pro
+++ b/src/versit/versit.pro
@@ -1,5 +1,5 @@
TARGET = QtVersit
-QT = core contacts
+QT = core contacts core5compat
MODULE_PLUGIN_TYPES = \
versit
diff --git a/tests/auto/versit/qvcard21writer/qvcard21writer.pro b/tests/auto/versit/qvcard21writer/qvcard21writer.pro
index 7e023086d..6e5f8d9b2 100644
--- a/tests/auto/versit/qvcard21writer/qvcard21writer.pro
+++ b/tests/auto/versit/qvcard21writer/qvcard21writer.pro
@@ -1,6 +1,6 @@
include(../../auto.pri)
-QT += versit versit-private
+QT += versit versit-private core5compat
HEADERS += tst_qvcard21writer.h
SOURCES += tst_qvcard21writer.cpp
diff --git a/tests/auto/versit/qvcard21writer/tst_qvcard21writer.cpp b/tests/auto/versit/qvcard21writer/tst_qvcard21writer.cpp
index 2b47d77f0..7673ecd72 100644
--- a/tests/auto/versit/qvcard21writer/tst_qvcard21writer.cpp
+++ b/tests/auto/versit/qvcard21writer/tst_qvcard21writer.cpp
@@ -38,6 +38,8 @@
#include <QByteArray>
#include <QVariant>
+#include <QTextCodec>
+
// This says "NOKIA" in Katakana
const QString KATAKANA_NOKIA(QString::fromUtf8("\xe3\x83\x8e\xe3\x82\xad\xe3\x82\xa2"));
diff --git a/tests/auto/versit/qvcard30writer/qvcard30writer.pro b/tests/auto/versit/qvcard30writer/qvcard30writer.pro
index 03a7f2c91..7fd95fa53 100644
--- a/tests/auto/versit/qvcard30writer/qvcard30writer.pro
+++ b/tests/auto/versit/qvcard30writer/qvcard30writer.pro
@@ -1,6 +1,6 @@
include(../../auto.pri)
-QT += versit versit-private
+QT += versit versit-private core5compat
DEFINES += QT_ASCII_CAST_WARNINGS
diff --git a/tests/auto/versit/qvcard30writer/tst_qvcard30writer.cpp b/tests/auto/versit/qvcard30writer/tst_qvcard30writer.cpp
index 9071f37da..53070558d 100644
--- a/tests/auto/versit/qvcard30writer/tst_qvcard30writer.cpp
+++ b/tests/auto/versit/qvcard30writer/tst_qvcard30writer.cpp
@@ -38,6 +38,8 @@
#include <QByteArray>
#include <QVariant>
+#include <QTextCodec>
+
// This says "NOKIA" in Katakana encoded with UTF-8
const QString KATAKANA_NOKIA(QString::fromUtf8("\xe3\x83\x8e\xe3\x82\xad\xe3\x82\xa2"));
diff --git a/tests/auto/versit/qversitreader/qversitreader.pro b/tests/auto/versit/qversitreader/qversitreader.pro
index 1187b4c28..a8e269797 100644
--- a/tests/auto/versit/qversitreader/qversitreader.pro
+++ b/tests/auto/versit/qversitreader/qversitreader.pro
@@ -1,6 +1,6 @@
include(../../auto.pri)
-QT += versit versit-private
+QT += versit versit-private core5compat
HEADERS += tst_qversitreader.h
SOURCES += tst_qversitreader.cpp
diff --git a/tests/auto/versit/qversitreader/tst_qversitreader.cpp b/tests/auto/versit/qversitreader/tst_qversitreader.cpp
index 4af80ac03..9457d403f 100644
--- a/tests/auto/versit/qversitreader/tst_qversitreader.cpp
+++ b/tests/auto/versit/qversitreader/tst_qversitreader.cpp
@@ -35,6 +35,8 @@
#include <QtTest/QtTest>
#include <QSignalSpy>
+#include <QTextCodec>
+
// This says "NOKIA" in Katakana encoded with UTF-8
const QByteArray KATAKANA_NOKIA("\xe3\x83\x8e\xe3\x82\xad\xe3\x82\xa2");
@@ -1493,48 +1495,48 @@ void tst_QVersitReader::testExtractParts()
// Empty value
QByteArray text;
- parts = mReaderPrivate->extractParts(text,";", mAsciiCodec);
+ parts = mReaderPrivate->extractParts(text, VersitUtils::encode(';', mAsciiCodec), mAsciiCodec);
QVERIFY(parts.isEmpty());
// Only separator
text = ";";
- parts = mReaderPrivate->extractParts(text,";", mAsciiCodec);
+ parts = mReaderPrivate->extractParts(text, VersitUtils::encode(';', mAsciiCodec), mAsciiCodec);
QVERIFY(parts.isEmpty());
// One part
text = "part";
- parts = mReaderPrivate->extractParts(text,";", mAsciiCodec);
+ parts = mReaderPrivate->extractParts(text, VersitUtils::encode(';', mAsciiCodec), mAsciiCodec);
QCOMPARE(parts.count(),1);
QCOMPARE(QLatin1String(parts[0]),QLatin1String("part"));
// Separator in the beginning, one part
text = ";part";
- parts = mReaderPrivate->extractParts(text,";", mAsciiCodec);
+ parts = mReaderPrivate->extractParts(text, VersitUtils::encode(';', mAsciiCodec), mAsciiCodec);
QCOMPARE(parts.count(),1);
QCOMPARE(QLatin1String(parts[0]),QLatin1String("part"));
// Separator in the end, one part
text = "part;";
- parts = mReaderPrivate->extractParts(text,";", mAsciiCodec);
+ parts = mReaderPrivate->extractParts(text, VersitUtils::encode(';', mAsciiCodec), mAsciiCodec);
QCOMPARE(parts.count(),1);
QCOMPARE(QLatin1String(parts[0]),QLatin1String("part"));
// One part that contains escaped separator
text = "part\\;";
- parts = mReaderPrivate->extractParts(text,";", mAsciiCodec);
+ parts = mReaderPrivate->extractParts(text, VersitUtils::encode(';', mAsciiCodec), mAsciiCodec);
QCOMPARE(parts.count(),1);
QCOMPARE(QLatin1String(parts[0]),QLatin1String("part\\;"));
// Two parts
text = "part1;part2";
- parts = mReaderPrivate->extractParts(text,";", mAsciiCodec);
+ parts = mReaderPrivate->extractParts(text, VersitUtils::encode(';', mAsciiCodec), mAsciiCodec);
QCOMPARE(parts.count(),2);
QCOMPARE(QLatin1String(parts[0]),QLatin1String("part1"));
QCOMPARE(QLatin1String(parts[1]),QLatin1String("part2"));
// Two parts that contain escaped separators
text = "pa\\;rt1;par\\;t2";
- parts = mReaderPrivate->extractParts(text,";", mAsciiCodec);
+ parts = mReaderPrivate->extractParts(text, VersitUtils::encode(';', mAsciiCodec), mAsciiCodec);
QCOMPARE(parts.count(),2);
QCOMPARE(QLatin1String(parts[0]),QLatin1String("pa\\;rt1"));
QCOMPARE(QLatin1String(parts[1]),QLatin1String("par\\;t2"));
@@ -1542,7 +1544,7 @@ void tst_QVersitReader::testExtractParts()
// Test wide character support
QTextCodec* codec = QTextCodec::codecForName("UTF-16BE");
text = codec->fromUnicode(QStringLiteral("part1;part2"));
- parts = mReaderPrivate->extractParts(text,";", codec);
+ parts = mReaderPrivate->extractParts(text, VersitUtils::encode(';', codec), codec);
QCOMPARE(parts.count(),2);
QCOMPARE(codec->toUnicode(parts[0]),QStringLiteral("part1"));
QCOMPARE(codec->toUnicode(parts[1]),QStringLiteral("part2"));
@@ -1849,8 +1851,10 @@ void tst_QVersitReader::testReadLine()
QFETCH(QList<QString>, expectedLines);
QTextCodec* codec = QTextCodec::codecForName(codecName);
- QTextEncoder* encoder = codec->makeEncoder();
- encoder->fromUnicode(QString());
+ QTextEncoder* encoder = codec->makeEncoder(codecName == QStringLiteral("UTF-8")
+ ? QStringConverterBase::Flag::Default
+ : QStringConverterBase::Flag::WriteBom);
+ encoder->fromUnicode(QString()); // Throw away BOM.
QByteArray bytes(encoder->fromUnicode(data));
@@ -1868,17 +1872,16 @@ void tst_QVersitReader::testReadLine()
QVERIFY(!lineReader.atEnd());
LByteArray line = lineReader.readLine();
QCOMPARE(line.toByteArray(), testLine);
-
-
QByteArray expectedBytes(encoder->fromUnicode(expectedLine));
QVERIFY(!lineReader.atEnd());
line = lineReader.readLine();
- if(line.toByteArray() != expectedBytes) {
- qDebug() << line.toByteArray();
+ QByteArray encodedLine = line.toByteArray();
+ if (encodedLine != expectedBytes) {
+ qDebug() << encodedLine;
qDebug() << expectedBytes;
- QCOMPARE(line.toByteArray(), expectedBytes);
+ QCOMPARE(encodedLine, expectedBytes);
}
- QCOMPARE(line.size(), expectedBytes.length());
+ QCOMPARE(encodedLine.size(), expectedBytes.length());
}
// (test push a line to a line reader that's reached its end)
diff --git a/tests/auto/versit/qversitwriter/qversitwriter.pro b/tests/auto/versit/qversitwriter/qversitwriter.pro
index 947a219ad..15eff9518 100644
--- a/tests/auto/versit/qversitwriter/qversitwriter.pro
+++ b/tests/auto/versit/qversitwriter/qversitwriter.pro
@@ -1,6 +1,6 @@
include(../../auto.pri)
-QT += versit versit-private
+QT += versit versit-private core5compat
HEADERS += tst_qversitwriter.h
SOURCES += tst_qversitwriter.cpp
diff --git a/tests/auto/versit/qversitwriter/tst_qversitwriter.cpp b/tests/auto/versit/qversitwriter/tst_qversitwriter.cpp
index f0c4530cf..59f388932 100644
--- a/tests/auto/versit/qversitwriter/tst_qversitwriter.cpp
+++ b/tests/auto/versit/qversitwriter/tst_qversitwriter.cpp
@@ -35,6 +35,8 @@
#include <QtTest/QtTest>
#include <QByteArray>
+#include <QTextCodec>
+
QTVERSIT_USE_NAMESPACE
void tst_QVersitWriter::init()
@@ -168,7 +170,11 @@ END:VCARD\r\n");
QCOMPARE(mWriter->error(), QVersitWriter::NoError);
mOutputDevice->seek(0);
result = mOutputDevice->readAll();
- QByteArray expected(utf16->fromUnicode(QLatin1String(vCard21.data())));
+
+ QTextCodec::ConverterState state(QTextCodec::DefaultConversion);
+ const QString decodedData = QString::fromLatin1(vCard21.data());
+ QByteArray expected(utf16->fromUnicode(decodedData.constData(), decodedData.size(), &state));
+
QCOMPARE(result, expected);
}
@@ -278,7 +284,10 @@ void tst_QVersitWriter::testWritingDocument()
QVERIFY2(mWriter->waitForFinished(), QString::number(mWriter->error()).toLatin1().data());
mOutputDevice->seek(0);
result = mOutputDevice->readAll();
- expected = utf16->fromUnicode(QString::fromLatin1(expected));
+
+ QTextCodec::ConverterState state(QTextCodec::DefaultConversion);
+ const QString decodedData = QString::fromLatin1(expected);
+ expected = utf16->fromUnicode(decodedData.constData(), decodedData.size(), &state);
if (result!=expected) qDebug() << result << expected;
QCOMPARE(result, expected);
}