summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Balland-Poirier <laurent.balland-poirier@laposte.net>2016-06-15 22:55:59 +0200
committerEike Rathke <erack@redhat.com>2016-06-29 09:46:20 +0000
commit9724eaa94e1f1e58dbbba2ecad4287245e0f0bf0 (patch)
tree0c46b710a396e20f6fe27335bc1e8df27e520e71
parentac265f6210452ee48c1766942a3a311aedc3cdcd (diff)
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 <ci@libreoffice.org> Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com>
-rw-r--r--cui/source/tabpages/numfmt.cxx31
-rw-r--r--include/svx/flagsdef.hxx31
-rw-r--r--include/svx/numfmtsh.hxx5
-rw-r--r--svx/source/items/numfmtsh.cxx46
4 files changed, 85 insertions, 28 deletions
diff --git a/cui/source/tabpages/numfmt.cxx b/cui/source/tabpages/numfmt.cxx
index 21d8afec3794..415c4a45b078 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 eedea33e8323..fbf833d6902e 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 179b597de497..6c4f6eb64db0 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 b4a4fc2cad6a..878d38868632 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 );
}