Skip to content

Commit

Permalink
fixes 0003876: Spreadsheet WB does not respect number of decimal sett…
Browse files Browse the repository at this point in the history
…ings

fixes 0003875: Spreadsheet workbench does not respect locale for decimal separator
  • Loading branch information
wwmayer committed Mar 2, 2019
1 parent 039ed11 commit 58aa9b1
Showing 1 changed file with 25 additions and 10 deletions.
35 changes: 25 additions & 10 deletions src/Mod/Spreadsheet/Gui/SheetModel.cpp
Expand Up @@ -23,8 +23,9 @@
#include "PreCompiled.h"

#ifndef _PreComp_
#include <QtCore>
# include <QtCore>
# include <QApplication>
# include <QLocale>
# include <QMessageBox>
#endif

Expand All @@ -34,6 +35,7 @@
#include "../App/Sheet.h"
#include <Gui/Command.h>
#include <Base/Tools.h>
#include <Base/UnitsApi.h>
#include <boost/bind.hpp>

using namespace SpreadsheetGui;
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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:
Expand Down

0 comments on commit 58aa9b1

Please sign in to comment.