[Libreoffice-commits] core.git: 2 commits - include/xmloff xmloff/source

Eike Rathke erack at redhat.com
Tue Sep 13 18:04:42 UTC 2016


 include/xmloff/xmlnumfi.hxx      |    2 -
 xmloff/source/style/xmlnumfi.cxx |   41 +++++++++++++++++++++++++--------------
 2 files changed, 28 insertions(+), 15 deletions(-)

New commits:
commit e12c9b41012e44275761b35795b83ec4bc838d42
Author: Eike Rathke <erack at redhat.com>
Date:   Tue Sep 13 19:33:11 2016 +0200

    do not add calendar modifier to format code when importing as E or EE keyword
    
    ... with implicit calendar switch.
    
    Change-Id: Ie4d848e261fe86bbe504954b2e0c7cf24bc181bc

diff --git a/include/xmloff/xmlnumfi.hxx b/include/xmloff/xmlnumfi.hxx
index a3eb590..10283e6 100644
--- a/include/xmloff/xmlnumfi.hxx
+++ b/include/xmloff/xmlnumfi.hxx
@@ -186,7 +186,7 @@ public:
     void SetHasLongDoW(bool bSet)               { bHasLongDoW = bSet; }
     bool HasEra() const                         { return bHasEra; }
 
-    void UpdateCalendar( const OUString& rNewCalendar );
+    void UpdateCalendar( const OUString& rNewCalendar, bool bImplicitSecondaryCalendarEC = false );
 
     const LocaleDataWrapper& GetLocaleData() const;
 
diff --git a/xmloff/source/style/xmlnumfi.cxx b/xmloff/source/style/xmlnumfi.cxx
index 164ce76..257d945 100644
--- a/xmloff/source/style/xmlnumfi.cxx
+++ b/xmloff/source/style/xmlnumfi.cxx
@@ -1201,20 +1201,33 @@ void SvXMLNumFmtElementContext::EndElement()
                     : ( bEffLong ? NF_KEY_MM : NF_KEY_M ) ) );
             break;
         case XML_TOK_STYLE_YEAR:
-            rParent.UpdateCalendar( sCalendar );
 //! I18N doesn't provide SYSTEM or extended date information yet
-            // Y after G (era) is replaced by E, also if we're switching to the
-            // other second known calendar for a locale.
-            if ( rParent.HasEra() || rParent.GetLocaleData().doesSecondaryCalendarUseEC( sCalendar))
             {
-                rParent.AddNfKeyword(
-                    sal::static_int_cast< sal_uInt16 >(
-                        bEffLong ? NF_KEY_EEC : NF_KEY_EC ) );
+                // Y after G (era) is replaced by E, also if we're switching to the
+                // other second known calendar for a locale.
+                bool bImplicitEC = (!sCalendar.isEmpty() &&
+                        rParent.GetLocaleData().doesSecondaryCalendarUseEC( sCalendar));
+                if (rParent.HasEra() || bImplicitEC)
+                {
+                    // If E or EE is the first format keyword, passing
+                    // bImplicitEC=true suppresses the superfluous calendar
+                    // modifier for this format. This does not help for
+                    // something like [~cal]DD/MM/EE but so far only YMD order
+                    // is used with such calendars. Live with the modifier if
+                    // other keywords precede this.
+                    rParent.UpdateCalendar( sCalendar, bImplicitEC);
+                    rParent.AddNfKeyword(
+                            sal::static_int_cast< sal_uInt16 >(
+                                bEffLong ? NF_KEY_EEC : NF_KEY_EC ) );
+                }
+                else
+                {
+                    rParent.UpdateCalendar( sCalendar );
+                    rParent.AddNfKeyword(
+                            sal::static_int_cast< sal_uInt16 >(
+                                bEffLong ? NF_KEY_YYYY : NF_KEY_YY ) );
+                }
             }
-            else
-                rParent.AddNfKeyword(
-                    sal::static_int_cast< sal_uInt16 >(
-                        bEffLong ? NF_KEY_YYYY : NF_KEY_YY ) );
             break;
         case XML_TOK_STYLE_ERA:
             rParent.UpdateCalendar( sCalendar );
@@ -2257,12 +2270,12 @@ void SvXMLNumFormatContext::AddColor( sal_uInt32 const nColor )
     }
 }
 
-void SvXMLNumFormatContext::UpdateCalendar( const OUString& rNewCalendar )
+void SvXMLNumFormatContext::UpdateCalendar( const OUString& rNewCalendar, bool bImplicitSecondaryCalendarEC )
 {
     if ( rNewCalendar != sCalendar )
     {
         sCalendar = rNewCalendar;
-        if ( !sCalendar.isEmpty() )
+        if ( !sCalendar.isEmpty() && !bImplicitSecondaryCalendarEC )
         {
             aFormatCode.append( "[~" );            // intro for calendar code
             aFormatCode.append( sCalendar );
commit 426723912fcb9bca39e0cada68e209f5f1be927c
Author: Eike Rathke <erack at redhat.com>
Date:   Tue Sep 13 16:18:32 2016 +0200

    that copypasta comment fragment makes no sense
    
    Change-Id: I835fd6045e5ab5aeb93c91edb07037b1ed3ea4a9

diff --git a/xmloff/source/style/xmlnumfi.cxx b/xmloff/source/style/xmlnumfi.cxx
index 1fd5afd..164ce76 100644
--- a/xmloff/source/style/xmlnumfi.cxx
+++ b/xmloff/source/style/xmlnumfi.cxx
@@ -2266,7 +2266,7 @@ void SvXMLNumFormatContext::UpdateCalendar( const OUString& rNewCalendar )
         {
             aFormatCode.append( "[~" );            // intro for calendar code
             aFormatCode.append( sCalendar );
-            aFormatCode.append( ']' );    // end of "new" currency symbolcalendar code
+            aFormatCode.append( ']' );    // end of calendar code
         }
     }
 }


More information about the Libreoffice-commits mailing list