diff --git a/src/Mod/Spreadsheet/Gui/SheetModel.cpp b/src/Mod/Spreadsheet/Gui/SheetModel.cpp index 6d354b1d8f..222d69475e 100644 --- a/src/Mod/Spreadsheet/Gui/SheetModel.cpp +++ b/src/Mod/Spreadsheet/Gui/SheetModel.cpp @@ -23,8 +23,9 @@ #include "PreCompiled.h" #ifndef _PreComp_ -#include +# include # include +# include # include #endif @@ -34,6 +35,7 @@ #include "../App/Sheet.h" #include #include +#include #include using namespace SpreadsheetGui; @@ -328,17 +330,24 @@ QVariant SheetModel::data(const QModelIndex &index, int role) const const Base::Unit & computedUnit = floatProp->getUnit(); DisplayUnit displayUnit; + // Display locale specific decimal separator (#0003875,#0003876) if (cell->getDisplayUnit(displayUnit)) { - if (computedUnit.isEmpty() || computedUnit == displayUnit.unit) - v = QString::number(floatProp->getValue() / displayUnit.scaler) + Base::Tools::fromStdString(" " + displayUnit.stringRep); - else + if (computedUnit.isEmpty() || computedUnit == displayUnit.unit) { + QString number = QLocale::system().toString(floatProp->getValue() / displayUnit.scaler,'f',Base::UnitsApi::getDecimals()); + //QString number = QString::number(floatProp->getValue() / displayUnit.scaler); + v = number + Base::Tools::fromStdString(" " + displayUnit.stringRep); + } + else { v = QString::fromUtf8("ERR: unit"); + } } else { + QString number = QLocale::system().toString(floatProp->getValue(),'f',Base::UnitsApi::getDecimals()); + //QString number = QString::number(floatProp->getValue()); if (!computedUnit.isEmpty()) - v = QString::number(floatProp->getValue()) + Base::Tools::fromStdString(" " + getUnitString(computedUnit)); + v = number + Base::Tools::fromStdString(" " + getUnitString(computedUnit)); else - v = QString::number(floatProp->getValue()); + v = number; } return QVariant(v); @@ -379,10 +388,16 @@ QVariant SheetModel::data(const QModelIndex &index, int role) const QString v; DisplayUnit displayUnit; - if (cell->getDisplayUnit(displayUnit)) - v = QString::number(floatProp->getValue() / displayUnit.scaler) + Base::Tools::fromStdString(" " + displayUnit.stringRep); - else - v = QString::number(floatProp->getValue()); + // Display locale specific decimal separator (#0003875,#0003876) + if (cell->getDisplayUnit(displayUnit)) { + QString number = QLocale::system().toString(floatProp->getValue() / displayUnit.scaler,'f',Base::UnitsApi::getDecimals()); + //QString number = QString::number(floatProp->getValue() / displayUnit.scaler); + v = number + Base::Tools::fromStdString(" " + displayUnit.stringRep); + } + else { + v = QLocale::system().toString(floatProp->getValue(),'f',Base::UnitsApi::getDecimals()); + //v = QString::number(floatProp->getValue()); + } return QVariant(v); } default: