diff options
author | Katarina Behrens <Katarina.Behrens@cib.de> | 2015-07-13 18:41:19 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2015-07-20 11:20:16 +0000 |
commit | 01d1165572f53ca50c626fa036343932c1e8c5db (patch) | |
tree | ac650c621f89b459d848ffbfda39871d744359ed /sc | |
parent | 8eaef6b5217eecaa111c80e426bdf225481a71fb (diff) |
tdf#92256: ODF save/load syntax for string reference
Change-Id: Iec38867c2fa3750f052e4afc99c5f8d48808c373
Reviewed-on: https://gerrit.libreoffice.org/17017
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Eike Rathke <erack@redhat.com>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/inc/unonames.hxx | 1 | ||||
-rw-r--r-- | sc/source/ui/unoobj/confuno.cxx | 48 |
2 files changed, 49 insertions, 0 deletions
diff --git a/sc/inc/unonames.hxx b/sc/inc/unonames.hxx index d937775769c0..b064995a1468 100644 --- a/sc/inc/unonames.hxx +++ b/sc/inc/unonames.hxx @@ -511,6 +511,7 @@ #define SC_UNO_INTEROPGRABBAG "InteropGrabBag" #define SC_UNO_RECORDCHANGES "RecordChanges" #define SC_UNO_ISRECORDCHANGESPROTECTED "IsRecordChangesProtected" +#define SC_UNO_SYNTAXSTRINGREF "SyntaxStringRef" // document properties from FormModel diff --git a/sc/source/ui/unoobj/confuno.cxx b/sc/source/ui/unoobj/confuno.cxx index a56c36f8293f..82f250200dab 100644 --- a/sc/source/ui/unoobj/confuno.cxx +++ b/sc/source/ui/unoobj/confuno.cxx @@ -31,6 +31,7 @@ #include <com/sun/star/beans/PropertyAttribute.hpp> #include <cppuhelper/supportsservice.hxx> +#include <formula/grammar.hxx> #include <sfx2/printer.hxx> #include <xmloff/xmluconv.hxx> #include <rtl/ustrbuf.hxx> @@ -75,6 +76,7 @@ static const SfxItemPropertyMapEntry* lcl_GetConfigPropertyMap() {OUString(SC_UNO_SHAREDOC), 0, cppu::UnoType<bool>::get(), 0, 0}, {OUString(SC_UNO_MODIFYPASSWORDINFO), 0, cppu::UnoType<uno::Sequence< beans::PropertyValue >>::get(), 0, 0}, {OUString(SC_UNO_EMBED_FONTS), 0, cppu::UnoType<bool>::get(), 0, 0}, + {OUString(SC_UNO_SYNTAXSTRINGREF), 0, cppu::UnoType<sal_Int16>::get(), 0, 0}, { OUString(), 0, css::uno::Type(), 0, 0 } }; return aConfigPropertyMap_Impl; @@ -297,6 +299,28 @@ void SAL_CALL ScDocumentConfiguration::setPropertyValue( rDoc.SetIsUsingEmbededFonts(bVal); } } + else if ( aPropertyName == SC_UNO_SYNTAXSTRINGREF ) + { + ScCalcConfig aCalcConfig = rDoc.GetCalcConfig(); + sal_Int16 nUno = 0; + + if( aValue >>= nUno ) + { + switch (nUno) + { + case 0: // CONV_OOO + case 2: // CONV_XL_A1 + case 3: // CONV_XL_R1C1 + aCalcConfig.meStringRefAddressSyntax = static_cast<formula::FormulaGrammar::AddressConvention>( nUno ); + break; + default: + aCalcConfig.meStringRefAddressSyntax = formula::FormulaGrammar::CONV_UNSPECIFIED; + break; + + } + rDoc.SetCalcConfig( aCalcConfig ); + } + } else { @@ -433,6 +457,30 @@ uno::Any SAL_CALL ScDocumentConfiguration::getPropertyValue( const OUString& aPr { aRet <<= rDoc.IsUsingEmbededFonts(); } + else if ( aPropertyName == SC_UNO_SYNTAXSTRINGREF ) + { + ScCalcConfig aCalcConfig = rDoc.GetCalcConfig(); + formula::FormulaGrammar::AddressConvention aConv = aCalcConfig.meStringRefAddressSyntax; + + switch (aConv) + { + case formula::FormulaGrammar::CONV_OOO: + case formula::FormulaGrammar::CONV_XL_A1: + case formula::FormulaGrammar::CONV_XL_R1C1: + aRet <<= static_cast<sal_Int16>( aConv ); + break; + + case formula::FormulaGrammar::CONV_UNSPECIFIED: + case formula::FormulaGrammar::CONV_ODF: + case formula::FormulaGrammar::CONV_XL_OOX: + case formula::FormulaGrammar::CONV_LOTUS_A1: + case formula::FormulaGrammar::CONV_LAST: + { + aRet <<= sal_Int16(9999); + break; + } + } + } else { |