1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-11-24 03:35:53 +01: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 \ positioning \
svg \ svg \
serialport serialport
greaterThan(QT_MAJOR_VERSION, 5) { greaterThan(QT_MAJOR_VERSION, 5) {
QT += openglwidgets QT += openglwidgets
lessThan(QT_MINOR_VERSION, 5) {
QT += core5compat
} }
}
CONFIG += object_parallel_to_source CONFIG += object_parallel_to_source
INCLUDEPATH += ./src INCLUDEPATH += ./src
@ -581,11 +578,13 @@ unix:!macx:!android {
} }
android { android {
RESOURCES += theme-color.qrc QT += core5compat
HEADERS += src/GUI/navigationwidget.h HEADERS += src/GUI/navigationwidget.h
SOURCES += src/GUI/navigationwidget.cpp SOURCES += src/GUI/navigationwidget.cpp
RESOURCES += theme-color.qrc
defineReplace(versionCode) { defineReplace(versionCode) {
segments = $$split(1, ".") segments = $$split(1, ".")
for (segment, segments): \ for (segment, segments): \

View File

@ -1,6 +1,17 @@
#include "textcodec.h" #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) static QTextCodec *codec(int mib)
{ {
@ -74,7 +85,7 @@ QString TextCodec::toString(const QByteArray &ba)
return _codec ? _codec->toUnicode(ba) : QString::fromLatin1(ba); return _codec ? _codec->toUnicode(ba) : QString::fromLatin1(ba);
} }
#else // QT 6.5 #else // QT 6 || ANDROID
TextCodec::TextCodec() TextCodec::TextCodec()
{ {
@ -97,4 +108,4 @@ QString TextCodec::toString(const QByteArray &ba)
{ {
return _decoder.isValid() ? _decoder.decode(ba) : QString::fromLatin1(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 #define TEXTCODEC_H
#include <QString> #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> #include <QTextCodec>
#else // QT 6.5 #else // QT 6 || ANDROID
#include <QStringDecoder> #include <QStringDecoder>
#endif // QT 6.5 #endif // QT 6 || ANDROID
class TextCodec class TextCodec
{ {
@ -17,7 +17,7 @@ public:
QString toString(const QByteArray &ba); QString toString(const QByteArray &ba);
private: 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; QTextCodec *_codec;
#else // QT 6.5 #else // QT 6.5
QStringDecoder _decoder; QStringDecoder _decoder;