diff options
author | Jari Karppinen <jari.karppinen@qt.io> | 2019-05-22 14:29:13 +0300 |
---|---|---|
committer | Jari Karppinen <jari.karppinen@qt.io> | 2019-05-23 11:25:11 +0300 |
commit | 243065d9203e58991ed3e7b1ff6d3e6b4d2d3281 (patch) | |
tree | a8e5f5b65a79a7022da7143b015d5b09567ce321 | |
parent | 2b9c8edc95852069ca9b6a69dd66fca17b27d777 (diff) |
Remove hardcoded C locale on Linux
Task-number: QT3DS-3522
Change-Id: Iab5af7e41ceed974bc692aca7bf59f5cd48772d7
Reviewed-by: Antti Määttä <antti.maatta@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Reviewed-by: Pasi Keränen <pasi.keranen@qt.io>
-rw-r--r-- | src/Authoring/QT3DSDM/QT3DSDM.pro | 3 | ||||
-rw-r--r-- | src/Authoring/QT3DSDM/Systems/Qt3DSDMWStrOpsImpl.h | 14 | ||||
-rw-r--r-- | src/Authoring/Studio/Application/StudioApp.cpp | 6 | ||||
-rw-r--r-- | src/Runtime/Source/foundation/StringConversionImpl.h | 20 |
4 files changed, 24 insertions, 19 deletions
diff --git a/src/Authoring/QT3DSDM/QT3DSDM.pro b/src/Authoring/QT3DSDM/QT3DSDM.pro index ca35f825..d0367220 100644 --- a/src/Authoring/QT3DSDM/QT3DSDM.pro +++ b/src/Authoring/QT3DSDM/QT3DSDM.pro @@ -56,4 +56,5 @@ HEADERS += \ Systems/Qt3DSDMDataTypes.h \ Systems/Qt3DSDMMetaDataTypes.h \ Systems/Qt3DSDMMetaDataValue.h \ - Systems/Qt3DSDMMetaData.h + Systems/Qt3DSDMMetaData.h \ + Systems/Qt3DSDMWStrOpsImpl.h diff --git a/src/Authoring/QT3DSDM/Systems/Qt3DSDMWStrOpsImpl.h b/src/Authoring/QT3DSDM/Systems/Qt3DSDMWStrOpsImpl.h index a594abed..d65ac131 100644 --- a/src/Authoring/QT3DSDM/Systems/Qt3DSDMWStrOpsImpl.h +++ b/src/Authoring/QT3DSDM/Systems/Qt3DSDMWStrOpsImpl.h @@ -177,13 +177,15 @@ struct WStrOps<QT3DSF32> { QT3DSU32 ToStr(QT3DSF32 item, NVDataRef<wchar_t> buffer) { - return static_cast<QT3DSU32>( - swprintf(buffer.begin(), buffer.size(), L"%g", static_cast<QT3DSF64>(item))); + QString s = QLocale::c().toString(item); + wcsncpy(buffer.begin(), s.toStdWString().c_str(), buffer.size()); + return s.length(); } QT3DSU32 ToStr(QT3DSF32 item, NVDataRef<char8_t> buffer) { - return static_cast<QT3DSU32>( - _snprintf(buffer.begin(), buffer.size(), "%g", static_cast<QT3DSF64>(item))); + QString s = QLocale::c().toString(item); + strncpy(buffer.begin(), s.toStdString().c_str(), buffer.size()); + return s.length(); } bool StrTo(const char8_t *buffer, QT3DSF32 &item) { @@ -198,7 +200,9 @@ struct WStrOps<QT3DSF64> { QT3DSU32 ToStr(QT3DSF64 item, NVDataRef<wchar_t> buffer) { - return static_cast<QT3DSU32>(swprintf(buffer.begin(), buffer.size(), L"%g", item)); + QString s = QLocale::c().toString(item); + wcsncpy(buffer.begin(), s.toStdWString().c_str(), buffer.size()); + return s.length(); } bool StrTo(const char8_t *buffer, QT3DSF64 &item) { diff --git a/src/Authoring/Studio/Application/StudioApp.cpp b/src/Authoring/Studio/Application/StudioApp.cpp index 9875f39d..c7264c97 100644 --- a/src/Authoring/Studio/Application/StudioApp.cpp +++ b/src/Authoring/Studio/Application/StudioApp.cpp @@ -69,12 +69,6 @@ const QString activePresentationQuery = QStringLiteral("activePresentation:"); int main(int argc, char *argv[]) { - // Note: This will prevent localization from working on Linux, but it will fix QT3DS-1473 - // TODO: To be removed once the new parser is in use -#if defined(Q_OS_LINUX) - qputenv("LC_ALL", "C"); -#endif - bool isOpenGLES = false; // init runtime static resources diff --git a/src/Runtime/Source/foundation/StringConversionImpl.h b/src/Runtime/Source/foundation/StringConversionImpl.h index c49c14b4..c5063e6d 100644 --- a/src/Runtime/Source/foundation/StringConversionImpl.h +++ b/src/Runtime/Source/foundation/StringConversionImpl.h @@ -37,6 +37,7 @@ #include "foundation/Utils.h" #include "stdlib.h" #include "stdio.h" //snprintf +#include <QLocale> #if !defined EA_PLATFORM_WINDOWS #define _snprintf snprintf @@ -184,13 +185,15 @@ namespace foundation { { QT3DSU32 ToStr(QT3DSF32 item, NVDataRef<char8_t> buffer) { - return static_cast<QT3DSU32>( - _snprintf(buffer.begin(), buffer.size(), "%g", static_cast<QT3DSF64>(item))); + QString s = QLocale::c().toString(item); + strncpy(buffer.begin(), s.toStdString().c_str(), buffer.size()); + return s.length(); } bool StrTo(const char8_t *buffer, QT3DSF32 &item) { - item = (QT3DSF32)strtod(buffer, NULL); - return true; + bool ok; + item = QLocale::c().toFloat(buffer, &ok); + return ok; } }; @@ -199,12 +202,15 @@ namespace foundation { { QT3DSU32 ToStr(QT3DSF64 item, NVDataRef<char8_t> buffer) { - return static_cast<QT3DSU32>(_snprintf(buffer.begin(), buffer.size(), "%g", item)); + QString s = QLocale::c().toString(item); + strncpy(buffer.begin(), s.toStdString().c_str(), buffer.size()); + return s.length(); } bool StrTo(const char8_t *buffer, QT3DSF64 &item) { - item = strtod(buffer, NULL); - return true; + bool ok; + item = QLocale::c().toDouble(buffer, &ok); + return ok; } }; } |