[Libreoffice-commits] core.git: cui/source include/svx svx/source

Laurent Balland-Poirier laurent.balland-poirier at laposte.net
Wed Jun 29 09:46:49 UTC 2016


 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-poirier at 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 <ci at libreoffice.org>
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Eike Rathke <erack at 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 );
         }


More information about the Libreoffice-commits mailing list