From b20872ffad86e64b30c2dd2f88c4b954f367595b Mon Sep 17 00:00:00 2001 From: Stefan Gerlach Date: Thu, 23 Jul 2020 10:26:25 +0200 Subject: [PATCH] [locale] more fixes in spreadsheet --- src/backend/core/column/ColumnPrivate.cpp | 6 +++--- src/backend/datasources/filters/AbstractFileFilter.cpp | 8 ++------ src/backend/datasources/filters/AbstractFileFilter.h | 3 +-- src/commonfrontend/spreadsheet/SpreadsheetView.cpp | 4 ++-- 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/backend/core/column/ColumnPrivate.cpp b/src/backend/core/column/ColumnPrivate.cpp index 60e16a445..af7ae500f 100644 --- a/src/backend/core/column/ColumnPrivate.cpp +++ b/src/backend/core/column/ColumnPrivate.cpp @@ -353,21 +353,21 @@ void ColumnPrivate::setColumnMode(AbstractColumn::ColumnMode mode) { break; case AbstractColumn::ColumnMode::Numeric: filter = new String2DoubleFilter(); - //TODO: set number locale + static_cast(filter)->setNumberLocale(numberLocale); filter_is_temporary = true; temp_col = new Column("temp_col", *(static_cast*>(old_data)), m_column_mode); m_data = new QVector(); break; case AbstractColumn::ColumnMode::Integer: filter = new String2IntegerFilter(); - //TODO: set number locale + static_cast(filter)->setNumberLocale(numberLocale); filter_is_temporary = true; temp_col = new Column("temp_col", *(static_cast*>(old_data)), m_column_mode); m_data = new QVector(); break; case AbstractColumn::ColumnMode::BigInt: filter = new String2BigIntFilter(); - //TODO: set number locale + static_cast(filter)->setNumberLocale(numberLocale); filter_is_temporary = true; temp_col = new Column("temp_col", *(static_cast*>(old_data)), m_column_mode); m_data = new QVector(); diff --git a/src/backend/datasources/filters/AbstractFileFilter.cpp b/src/backend/datasources/filters/AbstractFileFilter.cpp index b8b467947..6a27a7c8c 100644 --- a/src/backend/datasources/filters/AbstractFileFilter.cpp +++ b/src/backend/datasources/filters/AbstractFileFilter.cpp @@ -44,17 +44,13 @@ bool AbstractFileFilter::isNan(const QString& s) { return false; } -AbstractColumn::ColumnMode AbstractFileFilter::columnMode(const QString& valueString, const QString& dateTimeFormat) { - QLocale locale; - return columnMode(valueString, dateTimeFormat, locale); -} AbstractColumn::ColumnMode AbstractFileFilter::columnMode(const QString& valueString, const QString& dateTimeFormat, QLocale::Language lang) { - QLocale locale(lang); - return columnMode(valueString, dateTimeFormat, locale); + return columnMode(valueString, dateTimeFormat, QLocale(lang)); } AbstractColumn::ColumnMode AbstractFileFilter::columnMode(const QString& valueString, const QString& dateTimeFormat, const QLocale& locale) { + DEBUG("AbstractFileFilter::columnMode()") //TODO: use BigInt as default integer? if (valueString.size() == 0) // empty string treated as integer (meaning the non-empty strings will determine the data type) diff --git a/src/backend/datasources/filters/AbstractFileFilter.h b/src/backend/datasources/filters/AbstractFileFilter.h index 5c1488037..982eadc80 100644 --- a/src/backend/datasources/filters/AbstractFileFilter.h +++ b/src/backend/datasources/filters/AbstractFileFilter.h @@ -51,9 +51,8 @@ public: ~AbstractFileFilter() override = default; static bool isNan(const QString&); - static AbstractColumn::ColumnMode columnMode(const QString& valueString, const QString& dateTimeFormat); static AbstractColumn::ColumnMode columnMode(const QString& valueString, const QString& dateTimeFormat, QLocale::Language); - static AbstractColumn::ColumnMode columnMode(const QString& valueString, const QString& dateTimeFormat, const QLocale&); + static AbstractColumn::ColumnMode columnMode(const QString& valueString, const QString& dateTimeFormat, const QLocale& = QLocale()); static QStringList numberFormats(); static AbstractFileFilter::FileType fileType(const QString&); static QStringList fileTypes(); diff --git a/src/commonfrontend/spreadsheet/SpreadsheetView.cpp b/src/commonfrontend/spreadsheet/SpreadsheetView.cpp index 489308547..90334c440 100644 --- a/src/commonfrontend/spreadsheet/SpreadsheetView.cpp +++ b/src/commonfrontend/spreadsheet/SpreadsheetView.cpp @@ -1540,7 +1540,7 @@ void SpreadsheetView::pasteIntoSelection() { // if (!localeDetermined) // localeDetermined = determineLocale(nonEmptyValue, locale); - const auto mode = AbstractFileFilter::columnMode(nonEmptyValue, QLatin1String("yyyy-dd-MM hh:mm:ss:zzz")); + const auto mode = AbstractFileFilter::columnMode(nonEmptyValue, QLatin1String("yyyy-dd-MM hh:mm:ss:zzz"), numberLocale); col->setColumnMode(mode); } @@ -1560,7 +1560,7 @@ void SpreadsheetView::pasteIntoSelection() { // if (!localeDetermined) // localeDetermined = determineLocale(nonEmptyValue, locale); - const auto mode = AbstractFileFilter::columnMode(nonEmptyValue, QLatin1String("yyyy-dd-MM hh:mm:ss:zzz")); + const auto mode = AbstractFileFilter::columnMode(nonEmptyValue, QLatin1String("yyyy-dd-MM hh:mm:ss:zzz"), numberLocale); Column* new_col = new Column(QString::number(curCol), mode); new_col->setPlotDesignation(AbstractColumn::PlotDesignation::Y); new_col->insertRows(0, m_spreadsheet->rowCount()); -- GitLab