1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-10-06 06:43:22 +02:00

Always use the core5compat module for code page transformations on Android

This commit is contained in:
Martin Tůma 2024-02-11 18:19:54 +01:00
parent 7bcd5f63bc
commit 65fac30780
3 changed files with 23 additions and 13 deletions

View File

@ -17,12 +17,9 @@ QT += core \
positioning \
svg \
serialport
greaterThan(QT_MAJOR_VERSION, 5) {
QT += openglwidgets
lessThan(QT_MINOR_VERSION, 5) {
QT += core5compat
greaterThan(QT_MAJOR_VERSION, 5) {
QT += openglwidgets
}
}
CONFIG += object_parallel_to_source
INCLUDEPATH += ./src
@ -581,11 +578,13 @@ unix:!macx:!android {
}
android {
RESOURCES += theme-color.qrc
QT += core5compat
HEADERS += src/GUI/navigationwidget.h
SOURCES += src/GUI/navigationwidget.cpp
RESOURCES += theme-color.qrc
defineReplace(versionCode) {
segments = $$split(1, ".")
for (segment, segments): \

View File

@ -1,6 +1,17 @@
#include "textcodec.h"
#if QT_VERSION < QT_VERSION_CHECK(6, 5, 0)
/*
QStringDecoder can use the ICU library for codepage transformations since
Qt 6.5, but we use QTextCodec from the core5compat module on Android to
reduce the size of the app bundle (the ICU library has ~30MB).
On all other platforms, we require a Qt6 build with ICU support for all
the CP* encodings to work. On Linux, most distros compile Qt6 with ICU
support, on Windows and OS X a special Qt6 build is required as
the "official" Qt6 installers have ICU support disabled (QTBUG-121353).
*/
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) || defined(Q_OS_ANDROID)
static QTextCodec *codec(int mib)
{
@ -74,7 +85,7 @@ QString TextCodec::toString(const QByteArray &ba)
return _codec ? _codec->toUnicode(ba) : QString::fromLatin1(ba);
}
#else // QT 6.5
#else // QT 6 || ANDROID
TextCodec::TextCodec()
{
@ -97,4 +108,4 @@ QString TextCodec::toString(const QByteArray &ba)
{
return _decoder.isValid() ? _decoder.decode(ba) : QString::fromLatin1(ba);
}
#endif // QT 6.5
#endif // QT 6 || ANDROID

View File

@ -2,11 +2,11 @@
#define TEXTCODEC_H
#include <QString>
#if QT_VERSION < QT_VERSION_CHECK(6, 5, 0)
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) || defined(Q_OS_ANDROID)
#include <QTextCodec>
#else // QT 6.5
#else // QT 6 || ANDROID
#include <QStringDecoder>
#endif // QT 6.5
#endif // QT 6 || ANDROID
class TextCodec
{
@ -17,7 +17,7 @@ public:
QString toString(const QByteArray &ba);
private:
#if QT_VERSION < QT_VERSION_CHECK(6, 5, 0)
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) || defined(Q_OS_ANDROID)
QTextCodec *_codec;
#else // QT 6.5
QStringDecoder _decoder;