diff --git a/src/app/container/calculator.cpp b/src/app/container/calculator.cpp index 238616e74..937547b71 100644 --- a/src/app/container/calculator.cpp +++ b/src/app/container/calculator.cpp @@ -28,6 +28,7 @@ #include "calculator.h" #include +#include #include "../widgets/vapplication.h" int Calculator::iVal = -1; @@ -68,10 +69,22 @@ Calculator::Calculator(const QString &formula, bool fromUser) DefinePostfixOprt(qApp->PostfixOperator(mm_Oprt), MmUnit); DefinePostfixOprt(qApp->PostfixOperator(in_Oprt), InchUnit); - QLocale loc = QLocale::system(); - SetDecSep(loc.decimalPoint().toLatin1()); - SetThousandsSep(loc.groupSeparator().toLatin1()); - SetArgSep(';'); + QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), + QApplication::applicationName()); + bool osSeparatorValue = settings.value("configuration/osSeparator", 1).toBool(); + + if (osSeparatorValue) + { + QLocale loc = QLocale::system(); + SetDecSep(loc.decimalPoint().toLatin1()); + SetThousandsSep(loc.groupSeparator().toLatin1()); + SetArgSep(';'); + } + else + { + SetArgSep(','); + SetDecSep('.'); + } } else { diff --git a/src/app/dialogs/app/pages.cpp b/src/app/dialogs/app/pages.cpp index 476c941da..1e17fd272 100644 --- a/src/app/dialogs/app/pages.cpp +++ b/src/app/dialogs/app/pages.cpp @@ -51,7 +51,7 @@ void ConfigurationPage::Apply() QApplication::applicationName()); settings.setValue("configuration/autosave/state", autoSaveCheck->isChecked()); settings.setValue("configuration/autosave/time", autoTime->value()); - //settings.setValue("configuration/osSeparator", osOptionCheck->isChecked()); + settings.setValue("configuration/osSeparator", osOptionCheck->isChecked()); if (langChanged) { QString locale = qvariant_cast(langCombo->itemData(langCombo->currentIndex())); @@ -157,10 +157,9 @@ QGroupBox *ConfigurationPage::LangGroup() QLabel *separatorLabel = new QLabel(tr("Decimal separator parts")); - osOptionCheck = new QCheckBox(tr("With OS options (.)")); - //bool osOptionValue = settings.value("configuration/osSeparator", 1).toBool(); - //osOptionCheck->setChecked(osOptionValue); - osOptionCheck->setEnabled(false); + osOptionCheck = new QCheckBox(tr("With OS options (%1)").arg(QLocale::system().decimalPoint().toLatin1())); + bool osOptionValue = settings.value("configuration/osSeparator", 1).toBool(); + osOptionCheck->setChecked(osOptionValue); QHBoxLayout *separatorLayout = new QHBoxLayout; separatorLayout->addWidget(separatorLabel); diff --git a/src/app/dialogs/tools/dialogtool.cpp b/src/app/dialogs/tools/dialogtool.cpp index d051e2d03..a4e00f419 100644 --- a/src/app/dialogs/tools/dialogtool.cpp +++ b/src/app/dialogs/tools/dialogtool.cpp @@ -336,8 +336,20 @@ void DialogTool::Eval(QLineEdit *edit, bool &flag, QTimer *timer, QLabel *label) Calculator cal(data); const qreal result = cal.EvalFormula(formula); - QLocale loc = QLocale::system(); - label->setText(loc.toString(result)); + QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), + QApplication::applicationName()); + bool osSeparatorValue = settings.value("configuration/osSeparator", 1).toBool(); + + if (osSeparatorValue) + { + QLocale loc = QLocale::system(); + label->setText(loc.toString(result)); + } + else + { + QLocale loc = QLocale(QLocale::C); + label->setText(loc.toString(result)); + } flag = true; palette.setColor(labelEditFormula->foregroundRole(), QColor(76, 76, 76)); emit ToolTip(""); diff --git a/src/app/widgets/vapplication.cpp b/src/app/widgets/vapplication.cpp index 6718e9b1f..5fa41b309 100644 --- a/src/app/widgets/vapplication.cpp +++ b/src/app/widgets/vapplication.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include @@ -1789,8 +1790,12 @@ QString VApplication::FormulaFromUser(const QString &formula) } } + QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), + QApplication::applicationName()); + bool osSeparatorValue = settings.value("configuration/osSeparator", 1).toBool(); + QLocale loc = QLocale::system(); - if(loc != QLocale(QLocale::C)) + if(loc != QLocale(QLocale::C) && osSeparatorValue) { QList nKeys = numbers.keys(); QList nValues = numbers.values(); @@ -1903,8 +1908,12 @@ QString VApplication::FormulaToUser(const QString &formula) } } + QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), + QApplication::applicationName()); + bool osSeparatorValue = settings.value("configuration/osSeparator", 1).toBool(); + QLocale loc = QLocale::system(); - if(loc != QLocale::C) + if(loc != QLocale::C && osSeparatorValue) { QList nKeys = numbers.keys(); QList nValues = numbers.values();