cui/source/tabpages/numfmt.cxx | 31 ++++++++++++++++----------- include/svx/flagsdef.hxx | 31 +++++++++++++++++++++------ include/svx/numfmtsh.hxx | 5 ++-- svx/source/items/numfmtsh.cxx | 46 +++++++++++++++++++++++++++++++++++------ 4 files changed, 85 insertions(+), 28 deletions(-)
New commits: commit 9724eaa94e1f1e58dbbba2ecad4287245e0f0bf0 Author: Laurent Balland-Poirier <laurent.balland-poir...@laposte.net> Date: Wed Jun 15 22:55:59 2016 +0200 tdf#100413 Use same default values for preview string and format list Add specific default values for: - scientific: to distinguish engineering notation - fraction: to have quarter format understandable Change-Id: I73b74713a4bc502e9967b8d2c9983cfc6244912e Reviewed-on: https://gerrit.libreoffice.org/26391 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Eike Rathke <er...@redhat.com> Tested-by: Eike Rathke <er...@redhat.com> diff --git a/cui/source/tabpages/numfmt.cxx b/cui/source/tabpages/numfmt.cxx index 21d8afe..415c4a4 100644 --- a/cui/source/tabpages/numfmt.cxx +++ b/cui/source/tabpages/numfmt.cxx @@ -1683,31 +1683,36 @@ IMPL_LINK_TYPED( SvxNumberFormatTabPage, LostFocusHdl_Impl, Control&, rControl, OUString SvxNumberFormatTabPage::GetExpColorString( Color*& rpPreviewColor, const OUString& rFormatStr, short nTmpCatPos) { - double nVal = 0; + SvxNumValCategory i; switch (nTmpCatPos) { - case CAT_CURRENCY: nVal=SVX_NUMVAL_CURRENCY; break; + case CAT_ALL: i=SVX_NUMVAL_STANDARD; break; - case CAT_SCIENTIFIC: - case CAT_FRACTION: - case CAT_NUMBER: nVal=SVX_NUMVAL_STANDARD; break; + case CAT_NUMBER: i=SVX_NUMVAL_STANDARD; break; - case CAT_PERCENT: nVal=SVX_NUMVAL_PERCENT; break; + case CAT_PERCENT: i=SVX_NUMVAL_PERCENT; break; - case CAT_ALL: nVal=SVX_NUMVAL_STANDARD; break; + case CAT_CURRENCY: i=SVX_NUMVAL_CURRENCY; break; - case CAT_TIME: nVal=SVX_NUMVAL_TIME; break; - case CAT_DATE: nVal=SVX_NUMVAL_DATE; break; + case CAT_DATE: i=SVX_NUMVAL_DATE; break; - case CAT_BOOLEAN: nVal=SVX_NUMVAL_BOOLEAN; break; + case CAT_TIME: i=SVX_NUMVAL_TIME; break; + + case CAT_SCIENTIFIC: i=SVX_NUMVAL_SCIENTIFIC; break; + + case CAT_FRACTION: i=SVX_NUMVAL_FRACTION; break; + + case CAT_BOOLEAN: i=SVX_NUMVAL_BOOLEAN; break; + + case CAT_USERDEFINED: i=SVX_NUMVAL_STANDARD; break; - case CAT_USERDEFINED: case CAT_TEXT: - default: nVal=0;break; + default: i=SVX_NUMVAL_NOVALUE;break; } + double fVal = fSvxNumValConst[i]; OUString aPreviewString; - pNumFmtShell->MakePrevStringFromVal( rFormatStr, aPreviewString, rpPreviewColor, nVal ); + pNumFmtShell->MakePrevStringFromVal( rFormatStr, aPreviewString, rpPreviewColor, fVal ); return aPreviewString; } diff --git a/include/svx/flagsdef.hxx b/include/svx/flagsdef.hxx index eedea33..fbf833d 100644 --- a/include/svx/flagsdef.hxx +++ b/include/svx/flagsdef.hxx @@ -70,13 +70,30 @@ namespace o3tl #define SVX_ENABLE_FLASH 0x04 -// copy from numfmt.hxx -#define SVX_NUMVAL_STANDARD -1234.12345678901234 -#define SVX_NUMVAL_CURRENCY -1234 -#define SVX_NUMVAL_PERCENT -0.1295 -#define SVX_NUMVAL_TIME 36525.5678935185 -#define SVX_NUMVAL_DATE 36525.5678935185 -#define SVX_NUMVAL_BOOLEAN 1 +// Default values for Number Format Category List and Preview +enum SvxNumValCategory +{ + SVX_NUMVAL_STANDARD = 0, + SVX_NUMVAL_PERCENT, + SVX_NUMVAL_CURRENCY, + SVX_NUMVAL_DATE, + SVX_NUMVAL_TIME, + SVX_NUMVAL_SCIENTIFIC, + SVX_NUMVAL_FRACTION, + SVX_NUMVAL_BOOLEAN, + SVX_NUMVAL_NOVALUE +}; +const double fSvxNumValConst[] = { + -1234.56789012345678, // SVX_NUMVAL_STANDARD + -0.1295, // SVX_NUMVAL_PERCENT + -1234.0, // SVX_NUMVAL_CURRENCY + 36525.5678935185, // SVX_NUMVAL_DATE + 36525.5678935185, // SVX_NUMVAL_TIME + 12345.67889, // SVX_NUMVAL_SCIENTIFIC + 123.456, // SVX_NUMVAL_FRACTION + 1.0, // SVX_NUMVAL_BOOLEAN + 0.0 // SVX_NUMVAL_NOVALUE +}; // copy from page.hxx // enum ------------------------------------------------------------------ diff --git a/include/svx/numfmtsh.hxx b/include/svx/numfmtsh.hxx index 179b597..6c4f6eb 100644 --- a/include/svx/numfmtsh.hxx +++ b/include/svx/numfmtsh.hxx @@ -130,6 +130,8 @@ public: sal_uInt16 GetFormatIntegerDigits( const OUString& rFormat ) const; + double GetDefaultValNum( const short nType ) const; + void MakePreviewString( const OUString& rFormatStr, OUString& rPreviewStr, Color*& rpFontColor ); @@ -177,8 +179,6 @@ public: void SetUseStarFormat( bool bUse ) { bUseStarFormat = bUse; } private: - static const double DEFAULT_NUMVALUE; - SvNumberFormatter* pFormatter; SvNumberFormatTable* pCurFmtTable; SvxNumberValueType eValType; @@ -197,6 +197,7 @@ private: sal_uInt32 nCurCurrencyEntryPos; std::vector<OUString> aCurrencyFormatList; bool bUseStarFormat; + bool bIsDefaultValNum; SVX_DLLPRIVATE short FillEntryList_Impl( std::vector<OUString>& rList ); SVX_DLLPRIVATE void FillEListWithStd_Impl( std::vector<OUString>& rList,sal_uInt16 aPrivCat, short &Pos); diff --git a/svx/source/items/numfmtsh.cxx b/svx/source/items/numfmtsh.cxx index b4a4fc2..878d388 100644 --- a/svx/source/items/numfmtsh.cxx +++ b/svx/source/items/numfmtsh.cxx @@ -27,13 +27,11 @@ #include <svl/currencytable.hxx> #include <svx/numfmtsh.hxx> +#include <svx/flagsdef.hxx> #include <svx/tbcontrl.hxx> #include <limits> -const double SvxNumberFormatShell::DEFAULT_NUMVALUE = 1234.56789; - - SvxNumberFormatShell* SvxNumberFormatShell::Create( SvNumberFormatter* pNumFormatter, sal_uInt32 nFormatKey, SvxNumberValueType eNumValType, @@ -69,8 +67,9 @@ SvxNumberFormatShell::SvxNumberFormatShell( SvNumberFormatter* pNumFormatter, , bBankingSymbol (false) , nCurCurrencyEntryPos((sal_uInt16) SELPOS_NONE) , bUseStarFormat (false) + , bIsDefaultValNum (true) { - nValNum = DEFAULT_NUMVALUE; + nValNum = SVX_NUMVAL_STANDARD; switch ( eValType ) { @@ -78,13 +77,17 @@ SvxNumberFormatShell::SvxNumberFormatShell( SvNumberFormatter* pNumFormatter, aValStr = rNumStr; break; case SVX_VALUE_TYPE_NUMBER: + if ( pFormatter ) + { + nValNum = GetDefaultValNum( pFormatter->GetType( nCurFormatKey ) ); + } + SAL_FALLTHROUGH; case SVX_VALUE_TYPE_UNDEFINED: default: aValStr.clear(); } } - SvxNumberFormatShell::SvxNumberFormatShell( SvNumberFormatter* pNumFormatter, sal_uInt32 nFormatKey, SvxNumberValueType eNumValType, @@ -101,6 +104,7 @@ SvxNumberFormatShell::SvxNumberFormatShell( SvNumberFormatter* pNumFormatter, , bBankingSymbol (false) , nCurCurrencyEntryPos((sal_uInt16) SELPOS_NONE) , bUseStarFormat (false) + , bIsDefaultValNum (false) { // #50441# When used in Writer, the SvxNumberInfoItem contains the // original string in addition to the value @@ -116,7 +120,8 @@ SvxNumberFormatShell::SvxNumberFormatShell( SvNumberFormatter* pNumFormatter, case SVX_VALUE_TYPE_STRING: case SVX_VALUE_TYPE_UNDEFINED: default: - nValNum = DEFAULT_NUMVALUE; + nValNum = SVX_NUMVAL_STANDARD; + bIsDefaultValNum = true; } } @@ -401,6 +406,33 @@ void SvxNumberFormatShell::GetOptions( const OUString& rFormat, } +double SvxNumberFormatShell::GetDefaultValNum( const short nType ) const +{ + switch( nType ) + { + case css::util::NumberFormat::NUMBER: + return fSvxNumValConst[SVX_NUMVAL_STANDARD]; + case css::util::NumberFormat::CURRENCY: + return fSvxNumValConst[SVX_NUMVAL_CURRENCY]; + case css::util::NumberFormat::PERCENT: + return fSvxNumValConst[SVX_NUMVAL_PERCENT]; + case css::util::NumberFormat::DATE: + case css::util::NumberFormat::DATETIME: + return fSvxNumValConst[SVX_NUMVAL_DATE]; + case css::util::NumberFormat::TIME: + return fSvxNumValConst[SVX_NUMVAL_TIME]; + case css::util::NumberFormat::SCIENTIFIC: + return fSvxNumValConst[SVX_NUMVAL_SCIENTIFIC]; + case css::util::NumberFormat::FRACTION: + return fSvxNumValConst[SVX_NUMVAL_FRACTION]; + case css::util::NumberFormat::LOGICAL: + return fSvxNumValConst[SVX_NUMVAL_BOOLEAN]; + default: break; + } + return fSvxNumValConst[SVX_NUMVAL_NOVALUE]; +} + + void SvxNumberFormatShell::MakePreviewString( const OUString& rFormatStr, OUString& rPreviewStr, Color*& rpFontColor ) @@ -428,6 +460,8 @@ void SvxNumberFormatShell::MakePreviewString( const OUString& rFormatStr, } else { + if ( bIsDefaultValNum ) + nValNum = GetDefaultValNum( pFormatter->GetType(nExistingFormat) ); pFormatter->GetOutputString( nValNum, nExistingFormat, rPreviewStr, &rpFontColor, bUseStarFormat ); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits