summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cui/source/tabpages/chardlg.cxx10
-rw-r--r--include/svtools/ctrlbox.hxx3
-rw-r--r--include/vcl/field.hxx18
-rw-r--r--svtools/source/control/ctrlbox.cxx14
-rw-r--r--vcl/source/control/field.cxx71
5 files changed, 47 insertions, 69 deletions
diff --git a/cui/source/tabpages/chardlg.cxx b/cui/source/tabpages/chardlg.cxx
index 1e641d05c688..cc34b315dd08 100644
--- a/cui/source/tabpages/chardlg.cxx
+++ b/cui/source/tabpages/chardlg.cxx
@@ -1040,14 +1040,8 @@ bool SvxCharNamePage::FillItemSet_Impl( SfxItemSet& rSet, LanguageGroup eLangGrp
if ( pSizeBox->GetText().isEmpty() ) // GetValue() returns the min-value
nSize = 0;
- long nSavedSize = pSizeBox->GetSavedValue().toInt32();
- bool bRel = true;
-
- if ( !pSizeBox->IsRelative() )
- {
- nSavedSize *= 10;
- bRel = false;
- }
+ long nSavedSize = static_cast<long>(pSizeBox->GetSavedIntValue());
+ const bool bRel = pSizeBox->IsRelative();
switch ( eLangGrp )
{
diff --git a/include/svtools/ctrlbox.hxx b/include/svtools/ctrlbox.hxx
index b446b7a0503d..5e557e24777f 100644
--- a/include/svtools/ctrlbox.hxx
+++ b/include/svtools/ctrlbox.hxx
@@ -362,6 +362,7 @@ class SVT_DLLPUBLIC FontSizeBox : public MetricBox
protected:
virtual OUString CreateFieldText( sal_Int64 nValue ) const override;
+ virtual sal_Int64 GetValueFromStringUnit(const OUString& rStr, FieldUnit eOutUnit) const override;
public:
FontSizeBox( vcl::Window* pParent, WinBits nWinStyle );
@@ -384,8 +385,6 @@ public:
virtual void SetValue( sal_Int64 nNewValue, FieldUnit eInUnit ) override;
virtual void SetValue( sal_Int64 nNewValue ) override;
- virtual sal_Int64 GetValue( FieldUnit eOutUnit ) const override;
- virtual sal_Int64 GetValue() const override;
private:
FontSizeBox( const FontSizeBox& ) = delete;
diff --git a/include/vcl/field.hxx b/include/vcl/field.hxx
index 0380259acf01..615421153a0d 100644
--- a/include/vcl/field.hxx
+++ b/include/vcl/field.hxx
@@ -155,7 +155,8 @@ public:
void SetUserValue( sal_Int64 nNewValue );
virtual void SetValue( sal_Int64 nNewValue );
- virtual sal_Int64 GetValue() const;
+ sal_Int64 GetValue() const;
+ sal_Int64 GetSavedIntValue() const;
virtual OUString CreateFieldText( sal_Int64 nValue ) const;
bool IsValueModified() const;
@@ -186,6 +187,8 @@ protected:
SAL_DLLPRIVATE void ImplNewFieldValue( sal_Int64 nNewValue );
SAL_DLLPRIVATE void ImplSetUserValue( sal_Int64 nNewValue, Selection const * pNewSelection = nullptr );
+ virtual sal_Int64 GetValueFromString(const OUString& rStr) const;
+
private:
SAL_DLLPRIVATE void ImplInit();
@@ -225,8 +228,8 @@ public:
virtual void SetValue( sal_Int64 nValue ) override;
using NumericFormatter::SetUserValue;
void SetUserValue( sal_Int64 nNewValue, FieldUnit eInUnit );
- virtual sal_Int64 GetValue( FieldUnit eOutUnit ) const;
- virtual sal_Int64 GetValue() const override;
+ using NumericFormatter::GetValue;
+ sal_Int64 GetValue( FieldUnit eOutUnit ) const;
virtual OUString CreateFieldText( sal_Int64 nValue ) const override;
sal_Int64 GetCorrectedValue( FieldUnit eOutUnit ) const;
@@ -242,6 +245,9 @@ protected:
SAL_DLLPRIVATE bool ImplMetricReformat( const OUString& rStr, double& rValue, OUString& rOutStr );
+ virtual sal_Int64 GetValueFromString(const OUString& rStr) const override;
+ virtual sal_Int64 GetValueFromStringUnit(const OUString& rStr, FieldUnit eOutUnit) const;
+
private:
SAL_DLLPRIVATE void ImplInit();
@@ -255,6 +261,7 @@ class VCL_DLLPUBLIC CurrencyFormatter : public NumericFormatter
protected:
CurrencyFormatter();
SAL_DLLPRIVATE bool ImplCurrencyReformat( const OUString& rStr, OUString& rOutStr );
+ virtual sal_Int64 GetValueFromString(const OUString& rStr) const override;
public:
virtual ~CurrencyFormatter() override;
@@ -262,7 +269,6 @@ public:
virtual void Reformat() override;
virtual void SetValue( sal_Int64 nNewValue ) override;
- virtual sal_Int64 GetValue() const override;
virtual OUString CreateFieldText( sal_Int64 nValue ) const override;
};
@@ -661,8 +667,7 @@ public:
FieldUnit eInUnit = FUNIT_NONE ) const;
// Needed, because GetValue() with nPos hide these functions
- virtual sal_Int64 GetValue( FieldUnit eOutUnit ) const override;
- virtual sal_Int64 GetValue() const override;
+ using MetricFormatter::GetValue;
virtual void dispose() override;
};
@@ -681,7 +686,6 @@ public:
virtual void ReformatAll() override;
- virtual sal_Int64 GetValue() const override;
virtual void dispose() override;
};
diff --git a/svtools/source/control/ctrlbox.cxx b/svtools/source/control/ctrlbox.cxx
index 29665a781a25..82cd893e9710 100644
--- a/svtools/source/control/ctrlbox.cxx
+++ b/svtools/source/control/ctrlbox.cxx
@@ -1562,23 +1562,17 @@ void FontSizeBox::SetValue( sal_Int64 nNewValue )
SetValue( nNewValue, FUNIT_NONE );
}
-sal_Int64 FontSizeBox::GetValue( FieldUnit eOutUnit ) const
+sal_Int64 FontSizeBox::GetValueFromStringUnit(const OUString& rStr, FieldUnit eOutUnit) const
{
if ( !bRelative )
{
FontSizeNames aFontSizeNames( GetSettings().GetUILanguageTag().getLanguageType() );
- sal_Int64 nValue = aFontSizeNames.Name2Size( GetText() );
- if ( nValue)
+ sal_Int64 nValue = aFontSizeNames.Name2Size( rStr );
+ if ( nValue )
return MetricField::ConvertValue( nValue, GetBaseValue(), GetDecimalDigits(), GetUnit(), eOutUnit );
}
- return MetricBox::GetValue( eOutUnit );
-}
-
-sal_Int64 FontSizeBox::GetValue() const
-{
- // implementation not inline, because it is a virtual function
- return GetValue( FUNIT_NONE );
+ return MetricBox::GetValueFromStringUnit( rStr, eOutUnit );
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/control/field.cxx b/vcl/source/control/field.cxx
index d04886eeb228..6df9b1478285 100644
--- a/vcl/source/control/field.cxx
+++ b/vcl/source/control/field.cxx
@@ -582,15 +582,12 @@ void NumericFormatter::SetUserValue( sal_Int64 nNewValue )
ImplSetUserValue( nNewValue );
}
-sal_Int64 NumericFormatter::GetValue() const
+sal_Int64 NumericFormatter::GetValueFromString(const OUString& rStr) const
{
- if ( !GetField() )
- return 0;
-
sal_Int64 nTempValue;
- if ( ImplNumericGetValue( GetField()->GetText(), nTempValue,
- GetDecimalDigits(), ImplGetLocaleDataWrapper() ) )
+ if (ImplNumericGetValue(rStr, nTempValue,
+ GetDecimalDigits(), ImplGetLocaleDataWrapper()))
{
return ClipAgainstMinMax(nTempValue);
}
@@ -598,6 +595,16 @@ sal_Int64 NumericFormatter::GetValue() const
return mnLastValue;
}
+sal_Int64 NumericFormatter::GetValue() const
+{
+ return GetField() ? GetValueFromString(GetField()->GetText()) : 0;
+}
+
+sal_Int64 NumericFormatter::GetSavedIntValue() const
+{
+ return GetField() ? GetValueFromString(GetField()->GetSavedValue()) : 0;
+}
+
bool NumericFormatter::IsValueModified() const
{
if ( ImplGetEmptyFieldValue() )
@@ -1399,36 +1406,37 @@ void MetricFormatter::SetUserValue( sal_Int64 nNewValue, FieldUnit eInUnit )
NumericFormatter::SetUserValue( nNewValue );
}
-sal_Int64 MetricFormatter::GetValue( FieldUnit eOutUnit ) const
+sal_Int64 MetricFormatter::GetValueFromStringUnit(const OUString& rStr, FieldUnit eOutUnit) const
{
- if ( !GetField() )
- return 0;
-
double nTempValue;
// caution: precision loss in double cast
- if ( !ImplMetricGetValue( GetField()->GetText(), nTempValue, mnBaseValue, GetDecimalDigits(), ImplGetLocaleDataWrapper(), meUnit ) )
+ if (!ImplMetricGetValue(rStr, nTempValue, mnBaseValue, GetDecimalDigits(), ImplGetLocaleDataWrapper(), meUnit))
nTempValue = static_cast<double>(mnLastValue);
// caution: precision loss in double cast
- if ( nTempValue > mnMax )
+ if (nTempValue > mnMax)
nTempValue = static_cast<double>(mnMax);
- else if ( nTempValue < mnMin )
+ else if (nTempValue < mnMin)
nTempValue = static_cast<double>(mnMin);
// convert to requested units
- return MetricField::ConvertValue( static_cast<sal_Int64>(nTempValue), mnBaseValue, GetDecimalDigits(), meUnit, eOutUnit );
+ return MetricField::ConvertValue(static_cast<sal_Int64>(nTempValue), mnBaseValue, GetDecimalDigits(), meUnit, eOutUnit);
}
-void MetricFormatter::SetValue( sal_Int64 nValue )
+sal_Int64 MetricFormatter::GetValueFromString(const OUString& rStr) const
{
- // Implementation not inline, because it is a virtual Function
- SetValue( nValue, FUNIT_NONE );
+ return GetValueFromStringUnit(rStr, FUNIT_NONE);
+}
+
+sal_Int64 MetricFormatter::GetValue( FieldUnit eOutUnit ) const
+{
+ return GetField() ? GetValueFromStringUnit(GetField()->GetText(), eOutUnit) : 0;
}
-sal_Int64 MetricFormatter::GetValue() const
+void MetricFormatter::SetValue( sal_Int64 nValue )
{
// Implementation not inline, because it is a virtual Function
- return GetValue( FUNIT_NONE );
+ SetValue( nValue, FUNIT_NONE );
}
void MetricFormatter::SetMin( sal_Int64 nNewMin, FieldUnit eInUnit )
@@ -1783,18 +1791,6 @@ sal_Int32 MetricBox::GetValuePos( sal_Int64 nValue, FieldUnit eInUnit ) const
return ComboBox::GetEntryPos( CreateFieldText( nValue ) );
}
-sal_Int64 MetricBox::GetValue( FieldUnit eOutUnit ) const
-{
- // Implementation not inline, because it is a virtual Function
- return MetricFormatter::GetValue( eOutUnit );
-}
-
-sal_Int64 MetricBox::GetValue() const
-{
- // Implementation not inline, because it is a virtual Function
- return GetValue( FUNIT_NONE );
-}
-
static bool ImplCurrencyProcessKeyInput( const KeyEvent& rKEvt,
bool bUseThousandSep, const LocaleDataWrapper& rWrapper )
{
@@ -1849,13 +1845,10 @@ OUString CurrencyFormatter::CreateFieldText( sal_Int64 nValue ) const
IsUseThousandSep() );
}
-sal_Int64 CurrencyFormatter::GetValue() const
+sal_Int64 CurrencyFormatter::GetValueFromString(const OUString& rStr) const
{
- if ( !GetField() )
- return 0;
-
sal_Int64 nTempValue;
- if ( ImplCurrencyGetValue( GetField()->GetText(), nTempValue, GetDecimalDigits(), ImplGetLocaleDataWrapper() ) )
+ if ( ImplCurrencyGetValue( rStr, nTempValue, GetDecimalDigits(), ImplGetLocaleDataWrapper() ) )
{
return ClipAgainstMinMax(nTempValue);
}
@@ -2043,10 +2036,4 @@ void CurrencyBox::ReformatAll()
SetUpdateMode( true );
}
-sal_Int64 CurrencyBox::GetValue() const
-{
- // Implementation not inline, because it is a virtual Function
- return CurrencyFormatter::GetValue();
-}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */