63void QNdefNfcTextRecord::setLocale(
const QString &locale)
65 QByteArray p = payload();
67 quint8 status = p.isEmpty() ? 0 : p.at(0);
69 quint8 codeLength = status & 0x3f;
71 quint8 newStatus = (status & 0xd0) | locale.size();
74 p.replace(1, codeLength, locale.toLatin1());
82QString QNdefNfcTextRecord::text()
const
84 const QByteArray p = payload();
89 quint8 status = p.at(0);
90 bool utf16 = status & 0x80;
91 quint8 codeLength = status & 0x3f;
93 auto toUnicode = QStringDecoder(
94 utf16 ? QStringDecoder::Encoding::Utf16BE : QStringDecoder::Encoding::Utf8,
95 QStringDecoder::Flag::Stateless);
97 return toUnicode(QByteArrayView(p.constData() + 1 + codeLength, p.size() - 1 - codeLength));
103void QNdefNfcTextRecord::setText(
const QString text)
105 if (payload().isEmpty())
106 setLocale(QLocale().name());
108 QByteArray p = payload();
110 quint8 status = p.at(0);
112 bool utf16 = status & 0x80;
113 quint8 codeLength = status & 0x3f;
115 p.truncate(1 + codeLength);
117 auto fromUnicode = QStringEncoder(
118 utf16? QStringEncoder::Encoding::Utf16BE : QStringEncoder::Encoding::Utf8,
119 QStringEncoder::Flag::Stateless|QStringEncoder::Flag::WriteBom);
121 p += fromUnicode(text);