diff options
-rw-r--r-- | cui/source/options/optgdlg.cxx | 2 | ||||
-rw-r--r-- | include/unotools/compatibility.hxx | 243 | ||||
-rw-r--r-- | sw/source/core/doc/DocumentSettingManager.cxx | 24 | ||||
-rw-r--r-- | sw/source/ui/config/optcomp.cxx | 338 | ||||
-rw-r--r-- | unotools/source/config/compatibility.cxx | 697 |
5 files changed, 444 insertions, 860 deletions
diff --git a/cui/source/options/optgdlg.cxx b/cui/source/options/optgdlg.cxx index 8f4412a53d91..f8244f5dd5cc 100644 --- a/cui/source/options/optgdlg.cxx +++ b/cui/source/options/optgdlg.cxx @@ -1426,7 +1426,7 @@ bool OfaLanguagesTabPage::FillItemSet( SfxItemSet* rSet ) SvtScriptType nNewType = SvtLanguageOptions::GetScriptTypeOfLanguage( eNewLocale ); bool bNewCJK = bool( nNewType & SvtScriptType::ASIAN ); SvtCompatibilityOptions aCompatOpts; - aCompatOpts.SetDefault( COMPATIBILITY_PROPERTYNAME_EXPANDWORDSPACE, !bNewCJK ); + aCompatOpts.SetDefault( SvtCompatibilityEntry::Index::ExpandWordSpace, !bNewCJK ); } if(m_pDecimalSeparatorCB->IsValueChangedFromSaved()) diff --git a/include/unotools/compatibility.hxx b/include/unotools/compatibility.hxx index 551627b251a1..8d18092b3bd9 100644 --- a/include/unotools/compatibility.hxx +++ b/include/unotools/compatibility.hxx @@ -19,54 +19,152 @@ #ifndef INCLUDED_UNOTOOLS_COMPATIBILITY_HXX #define INCLUDED_UNOTOOLS_COMPATIBILITY_HXX -#include <unotools/unotoolsdllapi.h> #include <sal/types.h> #include <osl/mutex.hxx> #include <com/sun/star/uno/Sequence.h> #include <com/sun/star/beans/PropertyValue.hpp> #include <unotools/options.hxx> +#include <unotools/unotoolsdllapi.h> +#include <rtl/ustring.hxx> #include <memory> -enum CompatibilityOptions -{ - COPT_USE_PRINTERDEVICE = 0, - COPT_ADD_SPACING, - COPT_ADD_SPACING_AT_PAGES, - COPT_USE_OUR_TABSTOPS, - COPT_NO_EXTLEADING, - COPT_USE_LINESPACING, - COPT_ADD_TABLESPACING, - COPT_USE_OBJECTPOSITIONING, - COPT_USE_OUR_TEXTWRAPPING, - COPT_CONSIDER_WRAPPINGSTYLE, - COPT_EXPAND_WORDSPACE, - COPT_PROTECT_FORM, - COPT_MS_WORD_COMP_TRAILING_BLANKS -}; - /*-************************************************************************************************************ - @descr The method GetList() returns a list of property values. - Use follow defines to separate values by names. + @descr Struct to hold information about one compatibility entry *//*-*************************************************************************************************************/ -#define COMPATIBILITY_PROPERTYNAME_NAME "Name" -#define COMPATIBILITY_PROPERTYNAME_MODULE "Module" -#define COMPATIBILITY_PROPERTYNAME_USEPRTMETRICS "UsePrinterMetrics" -#define COMPATIBILITY_PROPERTYNAME_ADDSPACING "AddSpacing" -#define COMPATIBILITY_PROPERTYNAME_ADDSPACINGATPAGES "AddSpacingAtPages" -#define COMPATIBILITY_PROPERTYNAME_USEOURTABSTOPS "UseOurTabStopFormat" -#define COMPATIBILITY_PROPERTYNAME_NOEXTLEADING "NoExternalLeading" -#define COMPATIBILITY_PROPERTYNAME_USELINESPACING "UseLineSpacing" -#define COMPATIBILITY_PROPERTYNAME_ADDTABLESPACING "AddTableSpacing" -#define COMPATIBILITY_PROPERTYNAME_USEOBJECTPOSITIONING "UseObjectPositioning" -#define COMPATIBILITY_PROPERTYNAME_USEOURTEXTWRAPPING "UseOurTextWrapping" -#define COMPATIBILITY_PROPERTYNAME_CONSIDERWRAPPINGSTYLE "ConsiderWrappingStyle" -#define COMPATIBILITY_PROPERTYNAME_EXPANDWORDSPACE "ExpandWordSpace" -#define COMPATIBILITY_PROPERTYNAME_PROTECTFORM "ProtectForm" -#define COMPATIBILITY_PROPERTYNAME_MSWORDTRAILINGBLANKS "MsWordCompTrailingBlanks" - -#define COMPATIBILITY_DEFAULT_NAME "_default" - -// forward declarations +class UNOTOOLS_DLLPUBLIC SvtCompatibilityEntry +{ + public: + /*-************************************************************************************************************ + @descr The method SvtCompatibilityOptions::GetList() returns a list of property values. + Use follow enum class to separate values by names. + Sync it with sPropertyName in SvtCompatibilityEntry::getName() + *//*-*************************************************************************************************************/ + enum class Index + { + /* Should be in the start. Do not remove it. */ + Name, + Module, + + /* Editable list of compatibility options. */ + UsePrtMetrics, + AddSpacing, + AddSpacingAtPages, + UseOurTabStops, + NoExtLeading, + UseLineSpacing, + AddTableSpacing, + UseObjectPositioning, + UseOurTextWrapping, + ConsiderWrappingStyle, + ExpandWordSpace, + ProtectForm, + MsWordTrailingBlanks, + + /* Should be at the end. Do not remove it. */ + INVALID + }; + + SvtCompatibilityEntry(); + ~SvtCompatibilityEntry(); + + static OUString getName( const Index rIdx ); + + static inline OUString getUserEntryName() + { + return OUString( "_user" ); + } + + static inline OUString getDefaultEntryName() + { + return OUString( "_default" ); + } + + static inline Index getIndex( const OUString& rName ) + { + for ( int i = static_cast<int>(Index::Name); i < static_cast<int>(Index::INVALID); ++i ) + if ( getName( Index(i) ) == rName ) + return Index(i); + + /* SvtCompatibilityEntry::getIndex() Undeclared compatibility property name */ + assert(false); + + return Index::INVALID; + } + + static inline size_t getElementCount() + { + return static_cast<size_t>(Index::INVALID); + } + + inline css::uno::Any getValue( const Index rIdx ) const + { + if ( static_cast<size_t>(rIdx) < getElementCount() ) + { + return m_aPropertyValue[ static_cast<int>(rIdx) ]; + } else + { + /* Wrong index. */ + assert( false ); + return css::uno::Any(); + } + } + + template<typename T> + inline T getValue( const Index rIdx ) const + { + T aValue = T(); + + if ( static_cast<size_t>(rIdx) < getElementCount() ) + { + m_aPropertyValue[ static_cast<int>(rIdx) ] >>= aValue; + } else + { + /* Wrong index. */ + assert( false ); + } + + return aValue; + } + + inline void setValue( const Index rIdx, css::uno::Any& rValue ) + { + if ( static_cast<size_t>(rIdx) < getElementCount() ) + { + m_aPropertyValue[ static_cast<int>(rIdx) ] = rValue; + } else + { + /* Wrong index. */ + assert( false ); + } + } + + template<typename T> + inline void setValue( const Index rIdx, T rValue ) + { + if ( static_cast<size_t>(rIdx) < getElementCount() ) + { + m_aPropertyValue[ static_cast<int>(rIdx) ] = css::uno::Any(rValue); + } else + { + /* Wrong index. */ + assert( false ); + } + } + + inline bool isDefaultEntry() const + { + return m_bDefaultEntry; + } + + inline void setDefaultEntry( bool rValue ) + { + m_bDefaultEntry = rValue; + } + + private: + std::vector<css::uno::Any> m_aPropertyValue; + bool m_bDefaultEntry; +}; /*-************************************************************************************************************ @short forward declaration to our private date container implementation @@ -74,7 +172,6 @@ enum CompatibilityOptions You can create the container if it is necessary. The class which use these mechanism is faster and smaller then a complete implementation! *//*-*************************************************************************************************************/ - class SvtCompatibilityOptions_Impl; /*-************************************************************************************************************ @@ -82,23 +179,30 @@ class SvtCompatibilityOptions_Impl; @descr Make it possible to configure dynamic menu structures of menus like "new" or "wizard". @devstatus ready to use *//*-*************************************************************************************************************/ - class UNOTOOLS_DLLPUBLIC SvtCompatibilityOptions: public utl::detail::Options { public: - SvtCompatibilityOptions(); + SvtCompatibilityOptions(); virtual ~SvtCompatibilityOptions() override; - // interface + /*-**************************************************************************************************** + @short append a new item + @descr + + @seealso method Clear() + + @param "aItem" SvtCompatibilityEntry + *//*-*****************************************************************************************************/ + void AppendItem( const SvtCompatibilityEntry& aItem ); /*-**************************************************************************************************** @short clear complete specified list @descr Call this methods to clear the whole list. *//*-*****************************************************************************************************/ - void Clear(); - void SetDefault( const OUString & sName, bool bValue ); + void SetDefault( SvtCompatibilityEntry::Index rIdx, bool rValue ); + bool GetDefault( SvtCompatibilityEntry::Index rIdx ) const; /*-**************************************************************************************************** @short return complete specified list @@ -108,49 +212,10 @@ class UNOTOOLS_DLLPUBLIC SvtCompatibilityOptions: public utl::detail::Options @onerror We return an empty list. *//*-*****************************************************************************************************/ - css::uno::Sequence< css::uno::Sequence< css::beans::PropertyValue > > GetList() const; - /*-**************************************************************************************************** - @short append a new item - @descr - - @seealso method Clear() - - @param "sName" Name - @param "sModule" Module - *//*-*****************************************************************************************************/ - - void AppendItem( const OUString& sName, - const OUString& sModule, - bool bUsePrtMetrics, - bool bAddSpacing, - bool bAddSpacingAtPages, - bool bUseOurTabStops, - bool bNoExtLeading, - bool bUseLineSpacing, - bool bAddTableSpacing, - bool bUseObjectPositioning, - bool bUseOurTextWrapping, - bool bConsiderWrappingStyle, - bool bExpandWordSpace, - bool bProtectForm, - bool bMsWordCompTrailingBlanks ); - - bool IsUsePrtDevice() const; - bool IsAddSpacing() const; - bool IsAddSpacingAtPages() const; - bool IsUseOurTabStops() const; - bool IsNoExtLeading() const; - bool IsUseLineSpacing() const; - bool IsAddTableSpacing() const; - bool IsUseObjectPositioning() const; - bool IsUseOurTextWrapping() const; - bool IsConsiderWrappingStyle() const; - bool IsExpandWordSpace() const; - bool IsMsWordCompTrailingBlanks() const; - private: + std::shared_ptr<SvtCompatibilityOptions_Impl> m_pImpl; /*-**************************************************************************************************** @short return a reference to a static mutex @@ -159,12 +224,8 @@ class UNOTOOLS_DLLPUBLIC SvtCompatibilityOptions: public utl::detail::Options We create a static mutex only for one ime and use at different times. @return A reference to a static mutex member. *//*-*****************************************************************************************************/ - - UNOTOOLS_DLLPRIVATE static ::osl::Mutex& GetOwnStaticMutex(); - - std::shared_ptr<SvtCompatibilityOptions_Impl> m_pImpl; - -}; // class SvtCompatibilityOptions + UNOTOOLS_DLLPRIVATE static osl::Mutex& GetOwnStaticMutex(); +}; #endif // INCLUDED_UNOTOOLS_COMPATIBILITY_HXX diff --git a/sw/source/core/doc/DocumentSettingManager.cxx b/sw/source/core/doc/DocumentSettingManager.cxx index 22a258189580..ec0eb827e701 100644 --- a/sw/source/core/doc/DocumentSettingManager.cxx +++ b/sw/source/core/doc/DocumentSettingManager.cxx @@ -98,18 +98,18 @@ sw::DocumentSettingManager::DocumentSettingManager(SwDoc &rDoc) if (!utl::ConfigManager::IsAvoidConfig()) { const SvtCompatibilityOptions aOptions; - mbParaSpaceMax = aOptions.IsAddSpacing(); - mbParaSpaceMaxAtPages = aOptions.IsAddSpacingAtPages(); - mbTabCompat = !aOptions.IsUseOurTabStops(); - mbUseVirtualDevice = !aOptions.IsUsePrtDevice(); - mbAddExternalLeading = !aOptions.IsNoExtLeading(); - mbOldLineSpacing = aOptions.IsUseLineSpacing(); - mbAddParaSpacingToTableCells = aOptions.IsAddTableSpacing(); - mbUseFormerObjectPos = aOptions.IsUseObjectPositioning(); - mbUseFormerTextWrapping = aOptions.IsUseOurTextWrapping(); - mbConsiderWrapOnObjPos = aOptions.IsConsiderWrappingStyle(); - mbDoNotJustifyLinesWithManualBreak = !aOptions.IsExpandWordSpace(); - mbMsWordCompTrailingBlanks = aOptions.IsMsWordCompTrailingBlanks(); + mbParaSpaceMax = aOptions.GetDefault( SvtCompatibilityEntry::Index::AddSpacing ); + mbParaSpaceMaxAtPages = aOptions.GetDefault( SvtCompatibilityEntry::Index::AddSpacingAtPages ); + mbTabCompat = !aOptions.GetDefault( SvtCompatibilityEntry::Index::UseOurTabStops ); + mbUseVirtualDevice = !aOptions.GetDefault( SvtCompatibilityEntry::Index::UsePrtMetrics ); + mbAddExternalLeading = !aOptions.GetDefault( SvtCompatibilityEntry::Index::NoExtLeading ); + mbOldLineSpacing = aOptions.GetDefault( SvtCompatibilityEntry::Index::UseLineSpacing ); + mbAddParaSpacingToTableCells = aOptions.GetDefault( SvtCompatibilityEntry::Index::AddTableSpacing ); + mbUseFormerObjectPos = aOptions.GetDefault( SvtCompatibilityEntry::Index::UseObjectPositioning ); + mbUseFormerTextWrapping = aOptions.GetDefault( SvtCompatibilityEntry::Index::UseOurTextWrapping ); + mbConsiderWrapOnObjPos = aOptions.GetDefault( SvtCompatibilityEntry::Index::ConsiderWrappingStyle ); + mbDoNotJustifyLinesWithManualBreak = !aOptions.GetDefault( SvtCompatibilityEntry::Index::ExpandWordSpace ); + mbMsWordCompTrailingBlanks = aOptions.GetDefault( SvtCompatibilityEntry::Index::MsWordTrailingBlanks ); } else { diff --git a/sw/source/ui/config/optcomp.cxx b/sw/source/ui/config/optcomp.cxx index 69e54a3bbcf7..59d71431ba47 100644 --- a/sw/source/ui/config/optcomp.cxx +++ b/sw/source/ui/config/optcomp.cxx @@ -41,60 +41,15 @@ using namespace ::com::sun::star::document; using namespace ::com::sun::star::uno; using namespace ::std; -struct CompatibilityItem -{ - OUString m_sName; - OUString m_sModule; - bool m_bUsePrtMetrics; - bool m_bAddSpacing; - bool m_bAddSpacingAtPages; - bool m_bUseOurTabStops; - bool m_bNoExtLeading; - bool m_bUseLineSpacing; - bool m_bAddTableSpacing; - bool m_bUseObjPos; - bool m_bUseOurTextWrapping; - bool m_bConsiderWrappingStyle; - bool m_bExpandWordSpace; - bool m_bProtectForm; - bool m_bMsWordCompTrailingBlanks; - bool m_bIsDefault; - - CompatibilityItem( const OUString& _rName, const OUString& _rModule, - bool _bUsePrtMetrics, bool _bAddSpacing, bool _bAddSpacingAtPages, - bool _bUseOurTabStops, bool _bNoExtLeading, bool _bUseLineSpacing, - bool _bAddTableSpacing, bool _bUseObjPos, bool _bUseOurTextWrapping, - bool _bConsiderWrappingStyle, bool _bExpandWordSpace, bool _bProtectForm, - bool _bMsWordCompTrailingBlanks, bool _bIsDefault ) : - - m_sName ( _rName ), - m_sModule ( _rModule ), - m_bUsePrtMetrics ( _bUsePrtMetrics ), - m_bAddSpacing ( _bAddSpacing ), - m_bAddSpacingAtPages ( _bAddSpacingAtPages ), - m_bUseOurTabStops ( _bUseOurTabStops ), - m_bNoExtLeading ( _bNoExtLeading ), - m_bUseLineSpacing ( _bUseLineSpacing ), - m_bAddTableSpacing ( _bAddTableSpacing ), - m_bUseObjPos ( _bUseObjPos ), - m_bUseOurTextWrapping ( _bUseOurTextWrapping ), - m_bConsiderWrappingStyle( _bConsiderWrappingStyle ), - m_bExpandWordSpace ( _bExpandWordSpace ), - m_bProtectForm ( _bProtectForm), - m_bMsWordCompTrailingBlanks( _bMsWordCompTrailingBlanks), - m_bIsDefault ( _bIsDefault ) {} -}; - struct SwCompatibilityOptPage_Impl { - typedef vector< CompatibilityItem > SwCompatibilityItemList; + typedef vector< SvtCompatibilityEntry > SwCompatibilityItemList; - SwCompatibilityItemList m_aList; + SwCompatibilityItemList m_aList; }; SwCompatibilityOptPage::SwCompatibilityOptPage(vcl::Window* pParent, const SfxItemSet& rSet) - : SfxTabPage(pParent, "OptCompatPage", - "modules/swriter/ui/optcompatpage.ui", &rSet) + : SfxTabPage(pParent, "OptCompatPage", "modules/swriter/ui/optcompatpage.ui", &rSet) , m_pWrtShell(nullptr) , m_pImpl(new SwCompatibilityOptPage_Impl) , m_nSavedOptions(0) @@ -104,15 +59,18 @@ SwCompatibilityOptPage::SwCompatibilityOptPage(vcl::Window* pParent, const SfxIt get(m_pOptionsLB, "options"); get(m_pDefaultPB, "default"); - for (sal_Int32 nId = COPT_USE_PRINTERDEVICE; nId <= COPT_MS_WORD_COMP_TRAILING_BLANKS; ++nId) + for ( int i = (static_cast<int>(SvtCompatibilityEntry::Index::Module) + 1); i < static_cast<int>(SvtCompatibilityEntry::Index::INVALID); ++i ) { - const OUString sEntry = m_pFormattingLB->GetEntry(nId); + int nCoptIdx = i - 2; /* Do not consider "Name" & "Module" indexes */ + + const OUString sEntry = m_pFormattingLB->GetEntry( nCoptIdx ); SvTreeListEntry* pEntry = m_pOptionsLB->SvTreeListBox::InsertEntry( sEntry ); if ( pEntry ) { m_pOptionsLB->SetCheckButtonState( pEntry, SvButtonState::Unchecked ); } } + m_sUserEntry = m_pFormattingLB->GetEntry(m_pFormattingLB->GetEntryCount()-1); m_pFormattingLB->Clear(); @@ -227,21 +185,10 @@ void SwCompatibilityOptPage::InitControls( const SfxItemSet& rSet ) // loading file formats Sequence< Sequence< PropertyValue > > aList = m_aConfigItem.GetList(); - OUString sName; - OUString sModule; - bool bUsePrtMetrics = false; - bool bAddSpacing = false; - bool bAddSpacingAtPages = false; - bool bUseOurTabStops = false; - bool bNoExtLeading = false; - bool bUseLineSpacing = false; - bool bAddTableSpacing = false; - bool bUseObjPos = false; - bool bUseOurTextWrapping = false; - bool bConsiderWrappingStyle = false; - bool bExpandWordSpace = false; - bool bProtectForm = false; - bool bMsWordCompTrailingBlanks = false; + + SvtCompatibilityEntry aEntry; + aEntry.setValue<bool>( SvtCompatibilityEntry::Index::ExpandWordSpace, false ); + const sal_Int32 nCount = aList.getLength(); for ( sal_Int32 i = 0; i < nCount; ++i ) { @@ -250,73 +197,51 @@ void SwCompatibilityOptPage::InitControls( const SfxItemSet& rSet ) for ( sal_Int32 j = 0; j < nEntries; j++ ) { PropertyValue aValue = rEntry[j]; - if ( aValue.Name == COMPATIBILITY_PROPERTYNAME_NAME ) - aValue.Value >>= sName; - else if ( aValue.Name == COMPATIBILITY_PROPERTYNAME_MODULE ) - aValue.Value >>= sModule; - else if ( aValue.Name == COMPATIBILITY_PROPERTYNAME_USEPRTMETRICS ) - aValue.Value >>= bUsePrtMetrics; - else if ( aValue.Name == COMPATIBILITY_PROPERTYNAME_ADDSPACING ) - aValue.Value >>= bAddSpacing; - else if ( aValue.Name == COMPATIBILITY_PROPERTYNAME_ADDSPACINGATPAGES ) - aValue.Value >>= bAddSpacingAtPages; - else if ( aValue.Name == COMPATIBILITY_PROPERTYNAME_USEOURTABSTOPS ) - aValue.Value >>= bUseOurTabStops; - else if ( aValue.Name == COMPATIBILITY_PROPERTYNAME_NOEXTLEADING ) - aValue.Value >>= bNoExtLeading; - else if ( aValue.Name == COMPATIBILITY_PROPERTYNAME_USELINESPACING ) - aValue.Value >>= bUseLineSpacing; - else if ( aValue.Name == COMPATIBILITY_PROPERTYNAME_ADDTABLESPACING ) - aValue.Value >>= bAddTableSpacing; - else if ( aValue.Name == COMPATIBILITY_PROPERTYNAME_USEOBJECTPOSITIONING ) - aValue.Value >>= bUseObjPos; - else if ( aValue.Name == COMPATIBILITY_PROPERTYNAME_USEOURTEXTWRAPPING ) - aValue.Value >>= bUseOurTextWrapping; - else if ( aValue.Name == COMPATIBILITY_PROPERTYNAME_CONSIDERWRAPPINGSTYLE ) - aValue.Value >>= bConsiderWrappingStyle; - else if ( aValue.Name == COMPATIBILITY_PROPERTYNAME_EXPANDWORDSPACE ) - aValue.Value >>= bExpandWordSpace; - else if ( aValue.Name == COMPATIBILITY_PROPERTYNAME_PROTECTFORM ) - aValue.Value >>= bProtectForm; - else if ( aValue.Name == COMPATIBILITY_PROPERTYNAME_MSWORDTRAILINGBLANKS ) - aValue.Value >>= bMsWordCompTrailingBlanks; + aEntry.setValue( SvtCompatibilityEntry::getIndex(aValue.Name), aValue.Value ); } - const bool bIsUserEntry = sName == "_user"; - const bool bIsDefaultEntry = sName == COMPATIBILITY_DEFAULT_NAME; + const OUString sEntryName = aEntry.getValue<OUString>( SvtCompatibilityEntry::Index::Name ); + + const bool bIsUserEntry = ( sEntryName == SvtCompatibilityEntry::getUserEntryName() ); + const bool bIsDefaultEntry = ( sEntryName == SvtCompatibilityEntry::getDefaultEntryName() ); + + aEntry.setDefaultEntry( bIsDefaultEntry ); - CompatibilityItem aItem( - sName, sModule, bUsePrtMetrics, bAddSpacing, - bAddSpacingAtPages, bUseOurTabStops, bNoExtLeading, - bUseLineSpacing, bAddTableSpacing, bUseObjPos, - bUseOurTextWrapping, bConsiderWrappingStyle, bExpandWordSpace, - bProtectForm, bMsWordCompTrailingBlanks, bIsDefaultEntry ); - m_pImpl->m_aList.push_back( aItem ); + m_pImpl->m_aList.push_back( aEntry ); - if ( aItem.m_bIsDefault ) + if ( aEntry.isDefaultEntry() ) continue; OUString sNewEntry; if ( bIsUserEntry ) sNewEntry = m_sUserEntry; - else if ( pObjShell && !sName.isEmpty() ) + + else if ( pObjShell && !sEntryName.isEmpty() ) { SfxFilterContainer* pFacCont = pObjShell->GetFactory().GetFilterContainer(); - std::shared_ptr<const SfxFilter> pFilter = pFacCont->GetFilter4FilterName( sName ); + std::shared_ptr<const SfxFilter> pFilter = pFacCont->GetFilter4FilterName( sEntryName ); if ( pFilter ) sNewEntry = pFilter->GetUIName(); } if ( sNewEntry.isEmpty() ) - sNewEntry = sName; + sNewEntry = sEntryName; const sal_Int32 nPos = m_pFormattingLB->InsertEntry( sNewEntry ); sal_uLong nOptions = convertBools2Ulong_Impl( - bUsePrtMetrics, bAddSpacing, bAddSpacingAtPages, - bUseOurTabStops, bNoExtLeading, bUseLineSpacing, - bAddTableSpacing, bUseObjPos, bUseOurTextWrapping, - bConsiderWrappingStyle, bExpandWordSpace, bProtectForm, - bMsWordCompTrailingBlanks ); + aEntry.getValue<bool>( SvtCompatibilityEntry::Index::UsePrtMetrics ), + aEntry.getValue<bool>( SvtCompatibilityEntry::Index::AddSpacing ), + aEntry.getValue<bool>( SvtCompatibilityEntry::Index::AddSpacingAtPages ), + aEntry.getValue<bool>( SvtCompatibilityEntry::Index::UseOurTabStops ), + aEntry.getValue<bool>( SvtCompatibilityEntry::Index::NoExtLeading ), + aEntry.getValue<bool>( SvtCompatibilityEntry::Index::UseLineSpacing ), + aEntry.getValue<bool>( SvtCompatibilityEntry::Index::AddTableSpacing ), + aEntry.getValue<bool>( SvtCompatibilityEntry::Index::UseObjectPositioning ), + aEntry.getValue<bool>( SvtCompatibilityEntry::Index::UseOurTextWrapping ), + aEntry.getValue<bool>( SvtCompatibilityEntry::Index::ConsiderWrappingStyle ), + aEntry.getValue<bool>( SvtCompatibilityEntry::Index::ExpandWordSpace ), + aEntry.getValue<bool>( SvtCompatibilityEntry::Index::ProtectForm ), + aEntry.getValue<bool>( SvtCompatibilityEntry::Index::MsWordTrailingBlanks ) ); m_pFormattingLB->SetEntryData( nPos, reinterpret_cast<void*>((sal_IntPtr)nOptions) ); } @@ -336,36 +261,18 @@ IMPL_LINK_NOARG(SwCompatibilityOptPage, UseAsDefaultHdl, Button*, void) "modules/swriter/ui/querydefaultcompatdialog.ui"); if (aQuery->Execute() == RET_YES) { - for ( vector< CompatibilityItem >::iterator pItem = m_pImpl->m_aList.begin(); + for ( vector< SvtCompatibilityEntry >::iterator pItem = m_pImpl->m_aList.begin(); pItem != m_pImpl->m_aList.end(); ++pItem ) { - if ( pItem->m_bIsDefault ) + if ( pItem->isDefaultEntry() ) { const sal_Int32 nCount = m_pOptionsLB->GetEntryCount(); for ( sal_Int32 i = 0; i < nCount; ++i ) { bool bChecked = m_pOptionsLB->IsChecked(static_cast< sal_uLong >( i )); - CompatibilityOptions eOption = static_cast< CompatibilityOptions >(i); - switch ( eOption ) - { - case COPT_USE_PRINTERDEVICE : pItem->m_bUsePrtMetrics = bChecked; break; - case COPT_ADD_SPACING : pItem->m_bAddSpacing = bChecked; break; - case COPT_ADD_SPACING_AT_PAGES : pItem->m_bAddSpacingAtPages = bChecked; break; - case COPT_USE_OUR_TABSTOPS : pItem->m_bUseOurTabStops = bChecked; break; - case COPT_NO_EXTLEADING : pItem->m_bNoExtLeading = bChecked; break; - case COPT_USE_LINESPACING : pItem->m_bUseLineSpacing = bChecked; break; - case COPT_ADD_TABLESPACING : pItem->m_bAddTableSpacing = bChecked; break; - case COPT_USE_OBJECTPOSITIONING: pItem->m_bUseObjPos = bChecked; break; - case COPT_USE_OUR_TEXTWRAPPING: pItem->m_bUseOurTextWrapping = bChecked; break; - case COPT_CONSIDER_WRAPPINGSTYLE: pItem->m_bConsiderWrappingStyle = bChecked; break; - case COPT_EXPAND_WORDSPACE: pItem->m_bExpandWordSpace = bChecked; break; - case COPT_PROTECT_FORM: pItem->m_bProtectForm = bChecked; break; - case COPT_MS_WORD_COMP_TRAILING_BLANKS: pItem->m_bMsWordCompTrailingBlanks = bChecked; break; - default: - { - OSL_FAIL("SwCompatibilityOptPage::UseAsDefaultHdl(): wrong option" ); - } - } + + int nCoptIdx = i + 2; /* Consider "Name" & "Module" indexes */ + pItem->setValue<bool>( SvtCompatibilityEntry::Index(nCoptIdx), bChecked ); } break; } @@ -394,19 +301,19 @@ sal_uLong SwCompatibilityOptPage::GetDocumentOptions() const { const IDocumentSettingAccess& rIDocumentSettingAccess = m_pWrtShell->getIDocumentSettingAccess(); nRet = convertBools2Ulong_Impl( - !rIDocumentSettingAccess.get(DocumentSettingId::USE_VIRTUAL_DEVICE), - rIDocumentSettingAccess.get(DocumentSettingId::PARA_SPACE_MAX), - rIDocumentSettingAccess.get(DocumentSettingId::PARA_SPACE_MAX_AT_PAGES), - !rIDocumentSettingAccess.get(DocumentSettingId::TAB_COMPAT), - !rIDocumentSettingAccess.get(DocumentSettingId::ADD_EXT_LEADING), - rIDocumentSettingAccess.get(DocumentSettingId::OLD_LINE_SPACING), - rIDocumentSettingAccess.get(DocumentSettingId::ADD_PARA_SPACING_TO_TABLE_CELLS), - rIDocumentSettingAccess.get(DocumentSettingId::USE_FORMER_OBJECT_POS), - rIDocumentSettingAccess.get(DocumentSettingId::USE_FORMER_TEXT_WRAPPING), - rIDocumentSettingAccess.get(DocumentSettingId::CONSIDER_WRAP_ON_OBJECT_POSITION), - !rIDocumentSettingAccess.get(DocumentSettingId::DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK), - rIDocumentSettingAccess.get(DocumentSettingId::PROTECT_FORM), - rIDocumentSettingAccess.get(DocumentSettingId::MS_WORD_COMP_TRAILING_BLANKS)); + !rIDocumentSettingAccess.get( DocumentSettingId::USE_VIRTUAL_DEVICE ), + rIDocumentSettingAccess.get( DocumentSettingId::PARA_SPACE_MAX ), + rIDocumentSettingAccess.get( DocumentSettingId::PARA_SPACE_MAX_AT_PAGES ), + !rIDocumentSettingAccess.get( DocumentSettingId::TAB_COMPAT ), + !rIDocumentSettingAccess.get( DocumentSettingId::ADD_EXT_LEADING ), + rIDocumentSettingAccess.get( DocumentSettingId::OLD_LINE_SPACING ), + rIDocumentSettingAccess.get( DocumentSettingId::ADD_PARA_SPACING_TO_TABLE_CELLS ), + rIDocumentSettingAccess.get( DocumentSettingId::USE_FORMER_OBJECT_POS ), + rIDocumentSettingAccess.get( DocumentSettingId::USE_FORMER_TEXT_WRAPPING ), + rIDocumentSettingAccess.get( DocumentSettingId::CONSIDER_WRAP_ON_OBJECT_POSITION ), + !rIDocumentSettingAccess.get( DocumentSettingId::DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK ), + rIDocumentSettingAccess.get( DocumentSettingId::PROTECT_FORM ), + rIDocumentSettingAccess.get( DocumentSettingId::MS_WORD_COMP_TRAILING_BLANKS ) ); } return nRet; } @@ -414,16 +321,9 @@ sal_uLong SwCompatibilityOptPage::GetDocumentOptions() const void SwCompatibilityOptPage::WriteOptions() { m_aConfigItem.Clear(); - for ( vector< CompatibilityItem >::const_iterator pItem = m_pImpl->m_aList.begin(); + for ( vector< SvtCompatibilityEntry >::const_iterator pItem = m_pImpl->m_aList.begin(); pItem != m_pImpl->m_aList.end(); ++pItem ) - m_aConfigItem.AppendItem( - pItem->m_sName, pItem->m_sModule, pItem->m_bUsePrtMetrics, pItem->m_bAddSpacing, - pItem->m_bAddSpacingAtPages, pItem->m_bUseOurTabStops, - pItem->m_bNoExtLeading, pItem->m_bUseLineSpacing, - pItem->m_bAddTableSpacing, pItem->m_bUseObjPos, - pItem->m_bUseOurTextWrapping, pItem->m_bConsiderWrappingStyle, - pItem->m_bExpandWordSpace, pItem->m_bProtectForm, - pItem->m_bMsWordCompTrailingBlanks ); + m_aConfigItem.AppendItem(*pItem); } VclPtr<SfxTabPage> SwCompatibilityOptPage::Create( vcl::Window* pParent, const SfxItemSet* rAttrSet ) @@ -440,83 +340,75 @@ bool SwCompatibilityOptPage::FillItemSet( SfxItemSet* ) const sal_uLong nCount = m_pOptionsLB->GetEntryCount(); OSL_ENSURE( nCount <= 32, "SwCompatibilityOptPage::Reset(): entry overflow" ); - bool bSetParaSpaceMax = false; - for ( sal_uLong i = 0; i < nCount; ++i ) { - CompatibilityOptions nOption = static_cast< CompatibilityOptions >(i); bool bChecked = m_pOptionsLB->IsChecked(i); bool bSavedChecked = ( ( nSavedOptions & 0x00000001 ) == 0x00000001 ); if ( bChecked != bSavedChecked ) { - if ( COPT_USE_PRINTERDEVICE == nOption ) - { - m_pWrtShell->SetUseVirDev( !bChecked ); - bModified = true; - } - else if ( ( COPT_ADD_SPACING == nOption || COPT_ADD_SPACING_AT_PAGES == nOption ) && !bSetParaSpaceMax ) - bSetParaSpaceMax = true; - else if ( COPT_USE_OUR_TABSTOPS == nOption ) - { - m_pWrtShell->SetTabCompat( !bChecked ); - bModified = true; - } - else if ( COPT_NO_EXTLEADING == nOption ) - { - m_pWrtShell->SetAddExtLeading( !bChecked ); - bModified = true; - } - else if ( COPT_USE_LINESPACING == nOption ) - { - m_pWrtShell->SetUseFormerLineSpacing( bChecked ); - bModified = true; - } - else if ( COPT_ADD_TABLESPACING == nOption ) - { - m_pWrtShell->SetAddParaSpacingToTableCells( bChecked ); - bModified = true; - } - else if ( COPT_USE_OBJECTPOSITIONING == nOption ) - { - m_pWrtShell->SetUseFormerObjectPositioning( bChecked ); - bModified = true; - } - else if ( COPT_USE_OUR_TEXTWRAPPING == nOption ) + int nCoptIdx = i + 2; /* Consider "Name" & "Module" indexes */ + switch ( SvtCompatibilityEntry::Index(nCoptIdx) ) { - m_pWrtShell->SetUseFormerTextWrapping( bChecked ); - bModified = true; - } - else if ( COPT_CONSIDER_WRAPPINGSTYLE == nOption ) - { - m_pWrtShell->SetConsiderWrapOnObjPos( bChecked ); - bModified = true; - } - else if ( COPT_EXPAND_WORDSPACE == nOption ) - { - m_pWrtShell->SetDoNotJustifyLinesWithManualBreak( !bChecked ); - bModified = true; - } - else if ( COPT_PROTECT_FORM == nOption ) - { - m_pWrtShell->SetProtectForm( bChecked ); - bModified = true; - } - else if ( COPT_MS_WORD_COMP_TRAILING_BLANKS == nOption ) - { - m_pWrtShell->SetMsWordCompTrailingBlanks( bChecked ); - bModified = true; + case SvtCompatibilityEntry::Index::UsePrtMetrics: + m_pWrtShell->SetUseVirDev( !bChecked ); + break; + + case SvtCompatibilityEntry::Index::AddSpacing: + m_pWrtShell->SetParaSpaceMax( bChecked ); + break; + + case SvtCompatibilityEntry::Index::AddSpacingAtPages: + m_pWrtShell->SetParaSpaceMaxAtPages( bChecked ); + break; + + case SvtCompatibilityEntry::Index::UseOurTabStops: + m_pWrtShell->SetTabCompat( !bChecked ); + break; + + case SvtCompatibilityEntry::Index::NoExtLeading: + m_pWrtShell->SetAddExtLeading( !bChecked ); + break; + + case SvtCompatibilityEntry::Index::UseLineSpacing: + m_pWrtShell->SetUseFormerLineSpacing( bChecked ); + break; + + case SvtCompatibilityEntry::Index::AddTableSpacing: + m_pWrtShell->SetAddParaSpacingToTableCells( bChecked ); + break; + + case SvtCompatibilityEntry::Index::UseObjectPositioning: + m_pWrtShell->SetUseFormerObjectPositioning( bChecked ); + break; + + case SvtCompatibilityEntry::Index::UseOurTextWrapping: + m_pWrtShell->SetUseFormerTextWrapping( bChecked ); + break; + + case SvtCompatibilityEntry::Index::ConsiderWrappingStyle: + m_pWrtShell->SetConsiderWrapOnObjPos( bChecked ); + break; + + case SvtCompatibilityEntry::Index::ExpandWordSpace: + m_pWrtShell->SetDoNotJustifyLinesWithManualBreak( !bChecked ); + break; + + case SvtCompatibilityEntry::Index::ProtectForm: + m_pWrtShell->SetProtectForm( bChecked ); + break; + + case SvtCompatibilityEntry::Index::MsWordTrailingBlanks: + m_pWrtShell->SetMsWordCompTrailingBlanks( bChecked ); + break; + + default: + break; } + bModified = true; } nSavedOptions = nSavedOptions >> 1; } - - if ( bSetParaSpaceMax ) - { - m_pWrtShell->SetParaSpaceMax( m_pOptionsLB->IsChecked( (sal_uLong)COPT_ADD_SPACING ) ); - m_pWrtShell->SetParaSpaceMaxAtPages( m_pOptionsLB->IsChecked( (sal_uLong)COPT_ADD_SPACING_AT_PAGES ) ); - bModified = true; - } } if ( bModified ) diff --git a/unotools/source/config/compatibility.cxx b/unotools/source/config/compatibility.cxx index 795f2b7617df..b1d713e16347 100644 --- a/unotools/source/config/compatibility.cxx +++ b/unotools/source/config/compatibility.cxx @@ -25,13 +25,10 @@ #include <com/sun/star/uno/Any.hxx> #include <com/sun/star/uno/Sequence.hxx> -#include <vector> - #include "itemholder1.hxx" #include <algorithm> - -// namespaces +#include <vector> using namespace ::std; using namespace ::utl; @@ -43,196 +40,87 @@ using namespace ::com::sun::star::beans; #define PATHDELIMITER "/" #define SETNODE_ALLFILEFORMATS "AllFileFormats" -#define PROPERTYNAME_NAME COMPATIBILITY_PROPERTYNAME_NAME -#define PROPERTYNAME_MODULE COMPATIBILITY_PROPERTYNAME_MODULE -#define PROPERTYNAME_USEPRTMETRICS COMPATIBILITY_PROPERTYNAME_USEPRTMETRICS -#define PROPERTYNAME_ADDSPACING COMPATIBILITY_PROPERTYNAME_ADDSPACING -#define PROPERTYNAME_ADDSPACINGATPAGES COMPATIBILITY_PROPERTYNAME_ADDSPACINGATPAGES -#define PROPERTYNAME_USEOURTABSTOPS COMPATIBILITY_PROPERTYNAME_USEOURTABSTOPS -#define PROPERTYNAME_NOEXTLEADING COMPATIBILITY_PROPERTYNAME_NOEXTLEADING -#define PROPERTYNAME_USELINESPACING COMPATIBILITY_PROPERTYNAME_USELINESPACING -#define PROPERTYNAME_ADDTABLESPACING COMPATIBILITY_PROPERTYNAME_ADDTABLESPACING -#define PROPERTYNAME_USEOBJPOS COMPATIBILITY_PROPERTYNAME_USEOBJECTPOSITIONING -#define PROPERTYNAME_USEOURTEXTWRAP COMPATIBILITY_PROPERTYNAME_USEOURTEXTWRAPPING -#define PROPERTYNAME_CONSIDERWRAPSTYLE COMPATIBILITY_PROPERTYNAME_CONSIDERWRAPPINGSTYLE -#define PROPERTYNAME_EXPANDWORDSPACE COMPATIBILITY_PROPERTYNAME_EXPANDWORDSPACE -#define PROPERTYNAME_PROTECTFORM COMPATIBILITY_PROPERTYNAME_PROTECTFORM -#define PROPERTYNAME_MSWORDTRAILINGBLANKS COMPATIBILITY_PROPERTYNAME_MSWORDTRAILINGBLANKS - -#define PROPERTYCOUNT 15 - -#define OFFSET_NAME 0 -#define OFFSET_MODULE 1 -#define OFFSET_USEPRTMETRICS 2 -#define OFFSET_ADDSPACING 3 -#define OFFSET_ADDSPACINGATPAGES 4 -#define OFFSET_USEOURTABSTOPS 5 -#define OFFSET_NOEXTLEADING 6 -#define OFFSET_USELINESPACING 7 -#define OFFSET_ADDTABLESPACING 8 -#define OFFSET_USEOBJPOS 9 -#define OFFSET_USEOURTEXTWRAPPING 10 -#define OFFSET_CONSIDERWRAPPINGSTYLE 11 -#define OFFSET_EXPANDWORDSPACE 12 -#define OFFSET_PROTECTFORM 13 -#define OFFSET_MSWORDTRAILINGBLANKS 14 - -// private declarations! +SvtCompatibilityEntry::SvtCompatibilityEntry() + : m_aPropertyValue( SvtCompatibilityEntry::getElementCount() ) +{ + /* Should be in the start. Do not remove it. */ + setValue<OUString>( Index::Name, OUString("") ); + setValue<OUString>( Index::Module, OUString("") ); + + /* Editable list of default values. Sync it with the SvtCompatibilityEntry::Index enum class. */ + setValue<bool>( Index::UsePrtMetrics, false ); + setValue<bool>( Index::AddSpacing, false ); + setValue<bool>( Index::AddSpacingAtPages, false ); + setValue<bool>( Index::UseOurTabStops, false ); + setValue<bool>( Index::NoExtLeading, false ); + setValue<bool>( Index::UseLineSpacing, false ); + setValue<bool>( Index::AddTableSpacing, false ); + setValue<bool>( Index::UseObjectPositioning, false ); + setValue<bool>( Index::UseOurTextWrapping, false ); + setValue<bool>( Index::ConsiderWrappingStyle, false ); + setValue<bool>( Index::ExpandWordSpace, true ); + setValue<bool>( Index::ProtectForm, false ); + setValue<bool>( Index::MsWordTrailingBlanks, false ); + + setDefaultEntry( false ); +} -/*-**************************************************************************************************************** - @descr struct to hold information about one compatibility entry -****************************************************************************************************************-*/ -struct SvtCompatibilityEntry +SvtCompatibilityEntry::~SvtCompatibilityEntry() { - public: - SvtCompatibilityEntry() : - bUsePrtMetrics( false ), bAddSpacing( false ), - bAddSpacingAtPages( false ), bUseOurTabStops( false ), - bNoExtLeading( false ), bUseLineSpacing( false ), - bAddTableSpacing( false ), bUseObjPos( false ), - bUseOurTextWrapping( false ), bConsiderWrappingStyle( false ), - bExpandWordSpace( true ), bProtectForm( false ), - bMsWordCompTrailingBlanks ( false ) {} - - SvtCompatibilityEntry( - const OUString& _rName, const OUString& _rNewModule ) : - sName( _rName ), sModule( _rNewModule ), - bUsePrtMetrics( false ), bAddSpacing( false ), - bAddSpacingAtPages( false ), bUseOurTabStops( false ), - bNoExtLeading( false ), bUseLineSpacing( false ), - bAddTableSpacing( false ), bUseObjPos( false ), - bUseOurTextWrapping( false ), bConsiderWrappingStyle( false ), - bExpandWordSpace( true ), bProtectForm( false ), - bMsWordCompTrailingBlanks( false ) {} - - inline void SetUsePrtMetrics( bool _bSet ) { bUsePrtMetrics = _bSet; } - inline void SetAddSpacing( bool _bSet ) { bAddSpacing = _bSet; } - inline void SetAddSpacingAtPages( bool _bSet ) { bAddSpacingAtPages = _bSet; } - inline void SetUseOurTabStops( bool _bSet ) { bUseOurTabStops = _bSet; } - inline void SetNoExtLeading( bool _bSet ) { bNoExtLeading = _bSet; } - inline void SetUseLineSpacing( bool _bSet ) { bUseLineSpacing = _bSet; } - inline void SetAddTableSpacing( bool _bSet ) { bAddTableSpacing = _bSet; } - inline void SetUseObjPos( bool _bSet ) { bUseObjPos = _bSet; } - inline void SetUseOurTextWrapping( bool _bSet ) { bUseOurTextWrapping = _bSet; } - inline void SetConsiderWrappingStyle( bool _bSet ) { bConsiderWrappingStyle = _bSet; } - inline void SetExpandWordSpace( bool _bSet ) { bExpandWordSpace = _bSet; } - inline void SetProtectForm( bool _bSet ) { bProtectForm = _bSet; } - inline void SetMsWordCompTrailingBlanks( bool _bSet ) { bMsWordCompTrailingBlanks = _bSet; } +} - public: - OUString sName; - OUString sModule; - bool bUsePrtMetrics; - bool bAddSpacing; - bool bAddSpacingAtPages; - bool bUseOurTabStops; - bool bNoExtLeading; - bool bUseLineSpacing; - bool bAddTableSpacing; - bool bUseObjPos; - bool bUseOurTextWrapping; - bool bConsiderWrappingStyle; - bool bExpandWordSpace; - bool bProtectForm; - bool bMsWordCompTrailingBlanks; -}; +OUString SvtCompatibilityEntry::getName( const Index rIdx ) +{ + static const char* sPropertyName[] = + { + /* Should be in the start. Do not remove it. */ + "Name", + "Module", + + /* Editable list of compatibility option names. Sync it with the SvtCompatibilityEntry::Index enum class. */ + "UsePrinterMetrics", + "AddSpacing", + "AddSpacingAtPages", + "UseOurTabStopFormat", + "NoExternalLeading", + "UseLineSpacing", + "AddTableSpacing", + "UseObjectPositioning", + "UseOurTextWrapping", + "ConsiderWrappingStyle", + "ExpandWordSpace", + "ProtectForm", + "MsWordCompTrailingBlanks" + }; + + /* Size of sPropertyName array not equal size of the SvtCompatibilityEntry::Index enum class */ + assert( SAL_N_ELEMENTS(sPropertyName) == static_cast<int>( SvtCompatibilityEntry::getElementCount() ) ); + + return OUString::createFromAscii( sPropertyName[ static_cast<int>(rIdx) ] ); +} /*-**************************************************************************************************************** @descr support simple menu structures and operations on it ****************************************************************************************************************-*/ -class SvtCompatibility -{ - public: - - // append one entry - void AppendEntry( const SvtCompatibilityEntry& rEntry ) - { - lEntries.push_back( rEntry ); - } - - // the only way to free memory! - void Clear() - { - lEntries.clear(); - } - - // convert internal list to external format - Sequence< Sequence< PropertyValue > > GetList() const - { - sal_Int32 nCount = (sal_Int32)lEntries.size(); - sal_Int32 nStep = 0; - Sequence< PropertyValue > lProperties( PROPERTYCOUNT ); - Sequence< Sequence< PropertyValue > > lResult( nCount ); - const vector< SvtCompatibilityEntry >* pList = &lEntries; - - lProperties[ OFFSET_NAME ].Name = PROPERTYNAME_NAME; - lProperties[ OFFSET_MODULE ].Name = PROPERTYNAME_MODULE; - lProperties[ OFFSET_USEPRTMETRICS ].Name = PROPERTYNAME_USEPRTMETRICS; - lProperties[ OFFSET_ADDSPACING ].Name = PROPERTYNAME_ADDSPACING; - lProperties[ OFFSET_ADDSPACINGATPAGES ].Name = PROPERTYNAME_ADDSPACINGATPAGES; - lProperties[ OFFSET_USEOURTABSTOPS ].Name = PROPERTYNAME_USEOURTABSTOPS; - lProperties[ OFFSET_NOEXTLEADING ].Name = PROPERTYNAME_NOEXTLEADING; - lProperties[ OFFSET_USELINESPACING ].Name = PROPERTYNAME_USELINESPACING; - lProperties[ OFFSET_ADDTABLESPACING ].Name = PROPERTYNAME_ADDTABLESPACING; - lProperties[ OFFSET_USEOBJPOS ].Name = PROPERTYNAME_USEOBJPOS; - lProperties[ OFFSET_USEOURTEXTWRAPPING ].Name = PROPERTYNAME_USEOURTEXTWRAP; - lProperties[ OFFSET_CONSIDERWRAPPINGSTYLE ].Name = PROPERTYNAME_CONSIDERWRAPSTYLE; - lProperties[ OFFSET_EXPANDWORDSPACE ].Name = PROPERTYNAME_EXPANDWORDSPACE; - lProperties[ OFFSET_MSWORDTRAILINGBLANKS ].Name = PROPERTYNAME_MSWORDTRAILINGBLANKS; - - for ( vector< SvtCompatibilityEntry >::const_iterator pItem = pList->begin(); - pItem != pList->end(); ++pItem ) - { - lProperties[ OFFSET_NAME ].Value <<= pItem->sName; - lProperties[ OFFSET_MODULE ].Value <<= pItem->sModule; - lProperties[ OFFSET_USEPRTMETRICS ].Value <<= pItem->bUsePrtMetrics; - lProperties[ OFFSET_ADDSPACING ].Value <<= pItem->bAddSpacing; - lProperties[ OFFSET_ADDSPACINGATPAGES ].Value <<= pItem->bAddSpacingAtPages; - lProperties[ OFFSET_USEOURTABSTOPS ].Value <<= pItem->bUseOurTabStops; - lProperties[ OFFSET_NOEXTLEADING ].Value <<= pItem->bNoExtLeading; - lProperties[ OFFSET_USELINESPACING ].Value <<= pItem->bUseLineSpacing; - lProperties[ OFFSET_ADDTABLESPACING ].Value <<= pItem->bAddTableSpacing; - lProperties[ OFFSET_USEOBJPOS ].Value <<= pItem->bUseObjPos; - lProperties[ OFFSET_USEOURTEXTWRAPPING ].Value <<= pItem->bUseOurTextWrapping; - lProperties[ OFFSET_CONSIDERWRAPPINGSTYLE ].Value <<= pItem->bConsiderWrappingStyle; - lProperties[ OFFSET_EXPANDWORDSPACE ].Value <<= pItem->bExpandWordSpace; - lProperties[ OFFSET_MSWORDTRAILINGBLANKS ].Value <<= pItem->bMsWordCompTrailingBlanks; - lResult[ nStep ] = lProperties; - ++nStep; - } - - return lResult; - } - - int size() const - { - return lEntries.size(); - } - - const SvtCompatibilityEntry& operator[]( int i ) const - { - return lEntries[i]; - } - - private: - vector< SvtCompatibilityEntry > lEntries; -}; +/*-**************************************************************************************************** + @short base implementation of public interface for "SvtCompatibilityOptions"! + @descr These class is used as static member of "SvtCompatibilityOptions" ... + => The code exist only for one time and isn't duplicated for every instance! +*//*-*****************************************************************************************************/ class SvtCompatibilityOptions_Impl : public ConfigItem { - - // public methods - public: - - // constructor / destructor - - SvtCompatibilityOptions_Impl(); + SvtCompatibilityOptions_Impl(); virtual ~SvtCompatibilityOptions_Impl() override; - void SetDefault( const OUString & sName, bool bValue ); + void AppendItem( const SvtCompatibilityEntry& aItem ); + void Clear(); - // override methods of baseclass + void SetDefault( SvtCompatibilityEntry::Index rIdx, bool rValue ); + bool GetDefault( SvtCompatibilityEntry::Index rIdx ) const; + + Sequence< Sequence< PropertyValue > > GetList() const; /*-**************************************************************************************************** @short called for notify of configmanager @@ -244,52 +132,9 @@ class SvtCompatibilityOptions_Impl : public ConfigItem @param "lPropertyNames" is the list of properties which should be updated. *//*-*****************************************************************************************************/ - virtual void Notify( const Sequence< OUString >& lPropertyNames ) override; - // public interface - - /*-**************************************************************************************************** - @short base implementation of public interface for "SvtCompatibilityOptions"! - @descr These class is used as static member of "SvtCompatibilityOptions" ... - => The code exist only for one time and isn't duplicated for every instance! - *//*-*****************************************************************************************************/ - - void Clear(); - Sequence< Sequence< PropertyValue > > GetList() const; - void AppendItem( const OUString& _sName, - const OUString& _sModule, - bool _bUsePrtMetrics, - bool _bAddSpacing, - bool _bAddSpacingAtPages, - bool _bUseOurTabStops, - bool _bNoExtLeading, - bool _bUseLineSpacing, - bool _bAddTableSpacing, - bool _bUseObjPos, - bool _bUseOurTextWrapping, - bool _bConsiderWrappingStyle, - bool _bExpandWordSpace, - bool _bProtectForm, - bool _bMsWordCompTrailingBlanks ); - - inline bool IsUsePrtDevice() const { return m_aDefOptions.bUsePrtMetrics; } - inline bool IsAddSpacing() const { return m_aDefOptions.bAddSpacing; } - inline bool IsAddSpacingAtPages() const { return m_aDefOptions.bAddSpacingAtPages; } - inline bool IsUseOurTabStops() const { return m_aDefOptions.bUseOurTabStops; } - inline bool IsNoExtLeading() const { return m_aDefOptions.bNoExtLeading; } - inline bool IsUseLineSpacing() const { return m_aDefOptions.bUseLineSpacing; } - inline bool IsAddTableSpacing() const { return m_aDefOptions.bAddTableSpacing; } - inline bool IsUseObjPos() const { return m_aDefOptions.bUseObjPos; } - inline bool IsUseOurTextWrapping() const { return m_aDefOptions.bUseOurTextWrapping; } - inline bool IsConsiderWrappingStyle() const { return m_aDefOptions.bConsiderWrappingStyle; } - inline bool IsExpandWordSpace() const { return m_aDefOptions.bExpandWordSpace; } - inline bool IsMsWordCompTrailingBlanks() const { return m_aDefOptions.bMsWordCompTrailingBlanks; } - - // private methods - private: - virtual void ImplCommit() override; /*-**************************************************************************************************** @@ -298,7 +143,6 @@ class SvtCompatibilityOptions_Impl : public ConfigItem configuration management and support dynamical menu item lists! @return A list of configuration key names is returned. *//*-*****************************************************************************************************/ - Sequence< OUString > impl_GetPropertyNames( Sequence< OUString >& rItems ); /*-**************************************************************************************************** @@ -309,68 +153,48 @@ class SvtCompatibilityOptions_Impl : public ConfigItem @param "lDestination" , destination of operation @return A list of configuration key names is returned. *//*-*****************************************************************************************************/ - static void impl_ExpandPropertyNames( const Sequence< OUString >& lSource, Sequence< OUString >& lDestination ); - // private member - private: - - SvtCompatibility m_aOptions; - SvtCompatibilityEntry m_aDefOptions; + std::vector< SvtCompatibilityEntry > m_aOptions; + SvtCompatibilityEntry m_aDefOptions; }; -// constructor - -SvtCompatibilityOptions_Impl::SvtCompatibilityOptions_Impl() - // Init baseclasses first - : ConfigItem( ROOTNODE_OPTIONS ) - // Init member then... +SvtCompatibilityOptions_Impl::SvtCompatibilityOptions_Impl() : ConfigItem( ROOTNODE_OPTIONS ) { // Get names and values of all accessible menu entries and fill internal structures. // See impl_GetPropertyNames() for further information. Sequence< OUString > lNodes; - Sequence< OUString > lNames = impl_GetPropertyNames( lNodes ); - sal_uInt32 nCount = lNodes.getLength(); - Sequence< Any > lValues = GetProperties( lNames ); + Sequence< OUString > lNames = impl_GetPropertyNames( lNodes ); + sal_uInt32 nCount = lNodes.getLength(); + Sequence< Any > lValues = GetProperties( lNames ); // Safe impossible cases. // We need values from ALL configuration keys. // Follow assignment use order of values in relation to our list of key names! DBG_ASSERT( !( lNames.getLength()!=lValues.getLength() ), "SvtCompatibilityOptions_Impl::SvtCompatibilityOptions_Impl()\nI miss some values of configuration keys!\n" ); - SvtCompatibilityEntry aItem; - sal_uInt32 nItem = 0; - sal_uInt32 nPosition = 0; - // Get names/values for new menu. // 4 subkeys for every item! bool bDefaultFound = false; - for( nItem = 0; nItem < nCount; ++nItem ) + for ( sal_uInt32 nItem = 0; nItem < nCount; ++nItem ) { - aItem.sName = lNodes[ nItem ]; - lValues[ nPosition++ ] >>= aItem.sModule; - lValues[ nPosition++ ] >>= aItem.bUsePrtMetrics; - lValues[ nPosition++ ] >>= aItem.bAddSpacing; - lValues[ nPosition++ ] >>= aItem.bAddSpacingAtPages; - lValues[ nPosition++ ] >>= aItem.bUseOurTabStops; - lValues[ nPosition++ ] >>= aItem.bNoExtLeading; - lValues[ nPosition++ ] >>= aItem.bUseLineSpacing; - lValues[ nPosition++ ] >>= aItem.bAddTableSpacing; - lValues[ nPosition++ ] >>= aItem.bUseObjPos; - lValues[ nPosition++ ] >>= aItem.bUseOurTextWrapping; - lValues[ nPosition++ ] >>= aItem.bConsiderWrappingStyle; - lValues[ nPosition++ ] >>= aItem.bExpandWordSpace; - lValues[ nPosition++ ] >>= aItem.bMsWordCompTrailingBlanks; - m_aOptions.AppendEntry( aItem ); - - if ( !bDefaultFound && aItem.sName == COMPATIBILITY_DEFAULT_NAME ) + SvtCompatibilityEntry aItem; + + aItem.setValue<OUString>( SvtCompatibilityEntry::Index::Name, lNodes[ nItem ] ); + + for ( int i = static_cast<int>(SvtCompatibilityEntry::Index::Module); i < static_cast<int>(SvtCompatibilityEntry::Index::INVALID); ++i ) + aItem.setValue( SvtCompatibilityEntry::Index(i), lValues[ i - 1 ] ); + + m_aOptions.push_back( aItem ); + + if ( !bDefaultFound && aItem.getValue<OUString>( SvtCompatibilityEntry::Index::Name ) == SvtCompatibilityEntry::getDefaultEntryName() ) { SvtSysLocale aSysLocale; css::lang::Locale aLocale = aSysLocale.GetLanguageTag().getLocale(); if ( aLocale.Language == "zh" || aLocale.Language == "ja" || aLocale.Language == "ko" ) - aItem.bExpandWordSpace = false; + aItem.setValue<bool>( SvtCompatibilityEntry::Index::ExpandWordSpace, false ); m_aDefOptions = aItem; bDefaultFound = true; @@ -378,233 +202,124 @@ SvtCompatibilityOptions_Impl::SvtCompatibilityOptions_Impl() } } -// destructor - SvtCompatibilityOptions_Impl::~SvtCompatibilityOptions_Impl() { - assert(!IsModified()); // should have been committed + assert( !IsModified() ); // should have been committed } -void SvtCompatibilityOptions_Impl::SetDefault( const OUString & sName, bool bValue ) +void SvtCompatibilityOptions_Impl::AppendItem( const SvtCompatibilityEntry& aItem ) { - if ( sName == COMPATIBILITY_PROPERTYNAME_USEPRTMETRICS ) - m_aDefOptions.SetUsePrtMetrics( bValue ); - else if ( sName == COMPATIBILITY_PROPERTYNAME_ADDSPACING ) - m_aDefOptions.SetAddSpacing( bValue ); - else if ( sName == COMPATIBILITY_PROPERTYNAME_ADDSPACINGATPAGES ) - m_aDefOptions.SetAddSpacingAtPages( bValue ); - else if ( sName == COMPATIBILITY_PROPERTYNAME_USEOURTABSTOPS ) - m_aDefOptions.SetUseOurTabStops( bValue ); - else if ( sName == COMPATIBILITY_PROPERTYNAME_NOEXTLEADING ) - m_aDefOptions.SetNoExtLeading( bValue ); - else if ( sName == COMPATIBILITY_PROPERTYNAME_USELINESPACING ) - m_aDefOptions.SetUseLineSpacing( bValue ); - else if ( sName == COMPATIBILITY_PROPERTYNAME_ADDTABLESPACING ) - m_aDefOptions.SetAddTableSpacing( bValue ); - else if ( sName == COMPATIBILITY_PROPERTYNAME_USEOBJECTPOSITIONING ) - m_aDefOptions.SetUseObjPos( bValue ); - else if ( sName == COMPATIBILITY_PROPERTYNAME_USEOURTEXTWRAPPING ) - m_aDefOptions.SetUseOurTextWrapping( bValue ); - else if ( sName == COMPATIBILITY_PROPERTYNAME_CONSIDERWRAPPINGSTYLE ) - m_aDefOptions.SetConsiderWrappingStyle( bValue ); - else if ( sName == COMPATIBILITY_PROPERTYNAME_EXPANDWORDSPACE ) - m_aDefOptions.SetExpandWordSpace( bValue ); - else if ( sName == COMPATIBILITY_PROPERTYNAME_MSWORDTRAILINGBLANKS ) - m_aDefOptions.SetExpandWordSpace( bValue ); + m_aOptions.push_back( aItem ); + + // default item reset? + if ( aItem.getValue<OUString>( SvtCompatibilityEntry::Index::Name ) == SvtCompatibilityEntry::getDefaultEntryName() ) + m_aDefOptions = aItem; + + SetModified(); } -// public method +void SvtCompatibilityOptions_Impl::Clear() +{ + m_aOptions.clear(); -void SvtCompatibilityOptions_Impl::Notify( const Sequence< OUString >& ) + SetModified(); +} + +void SvtCompatibilityOptions_Impl::SetDefault( SvtCompatibilityEntry::Index rIdx, bool rValue ) { - SAL_WARN( "unotools.config", "SvtCompatibilityOptions_Impl::Notify()\nNot implemented yet! I don't know how I can handle a dynamical list of unknown properties ...\n" ); + /* Are not set Name and Module */ + assert( rIdx != SvtCompatibilityEntry::Index::Name && rIdx != SvtCompatibilityEntry::Index::Module ); + + m_aDefOptions.setValue<bool>( rIdx, rValue ); } -// public method +bool SvtCompatibilityOptions_Impl::GetDefault( SvtCompatibilityEntry::Index rIdx ) const +{ + /* Are not set Name and Module */ + assert( rIdx != SvtCompatibilityEntry::Index::Name && rIdx != SvtCompatibilityEntry::Index::Module ); -void SvtCompatibilityOptions_Impl::ImplCommit() + return m_aDefOptions.getValue<bool>( rIdx ); +} + +Sequence< Sequence< PropertyValue > > SvtCompatibilityOptions_Impl::GetList() const { - // Write all properties! - // Delete complete set first. - ClearNodeSet( SETNODE_ALLFILEFORMATS ); + Sequence< PropertyValue > lProperties( SvtCompatibilityEntry::getElementCount() ); + Sequence< Sequence< PropertyValue > > lResult( m_aOptions.size() ); - SvtCompatibilityEntry aItem; - OUString sNode; - Sequence< PropertyValue > lPropertyValues( PROPERTYCOUNT - 1 ); - sal_uInt32 nItem = 0; - sal_uInt32 nNewCount = m_aOptions.size(); - for( nItem = 0; nItem < nNewCount; ++nItem ) - { - aItem = m_aOptions[ nItem ]; - sNode = SETNODE_ALLFILEFORMATS PATHDELIMITER + aItem.sName + PATHDELIMITER; - - lPropertyValues[ OFFSET_MODULE - 1 ].Name = sNode + PROPERTYNAME_MODULE; - lPropertyValues[ OFFSET_USEPRTMETRICS - 1 ].Name = sNode + PROPERTYNAME_USEPRTMETRICS; - lPropertyValues[ OFFSET_ADDSPACING - 1 ].Name = sNode + PROPERTYNAME_ADDSPACING; - lPropertyValues[ OFFSET_ADDSPACINGATPAGES - 1 ].Name = sNode + PROPERTYNAME_ADDSPACINGATPAGES; - lPropertyValues[ OFFSET_USEOURTABSTOPS - 1 ].Name = sNode + PROPERTYNAME_USEOURTABSTOPS; - lPropertyValues[ OFFSET_NOEXTLEADING - 1 ].Name = sNode + PROPERTYNAME_NOEXTLEADING; - lPropertyValues[ OFFSET_USELINESPACING - 1 ].Name = sNode + PROPERTYNAME_USELINESPACING; - lPropertyValues[ OFFSET_ADDTABLESPACING - 1 ].Name = sNode + PROPERTYNAME_ADDTABLESPACING; - lPropertyValues[ OFFSET_USEOBJPOS - 1 ].Name = sNode + PROPERTYNAME_USEOBJPOS; - lPropertyValues[ OFFSET_USEOURTEXTWRAPPING - 1 ].Name = sNode + PROPERTYNAME_USEOURTEXTWRAP; - lPropertyValues[ OFFSET_CONSIDERWRAPPINGSTYLE - 1 ].Name = sNode + PROPERTYNAME_CONSIDERWRAPSTYLE; - lPropertyValues[ OFFSET_EXPANDWORDSPACE - 1 ].Name = sNode + PROPERTYNAME_EXPANDWORDSPACE; - lPropertyValues[ OFFSET_PROTECTFORM - 1 ].Name = sNode + PROPERTYNAME_PROTECTFORM; - lPropertyValues[ OFFSET_MSWORDTRAILINGBLANKS - 1 ].Name = sNode + PROPERTYNAME_MSWORDTRAILINGBLANKS; - - lPropertyValues[ OFFSET_MODULE - 1 ].Value <<= aItem.sModule; - lPropertyValues[ OFFSET_USEPRTMETRICS - 1 ].Value <<= aItem.bUsePrtMetrics; - lPropertyValues[ OFFSET_ADDSPACING - 1 ].Value <<= aItem.bAddSpacing; - lPropertyValues[ OFFSET_ADDSPACINGATPAGES - 1 ].Value <<= aItem.bAddSpacingAtPages; - lPropertyValues[ OFFSET_USEOURTABSTOPS - 1 ].Value <<= aItem.bUseOurTabStops; - lPropertyValues[ OFFSET_NOEXTLEADING - 1 ].Value <<= aItem.bNoExtLeading; - lPropertyValues[ OFFSET_USELINESPACING - 1 ].Value <<= aItem.bUseLineSpacing; - lPropertyValues[ OFFSET_ADDTABLESPACING - 1 ].Value <<= aItem.bAddTableSpacing; - lPropertyValues[ OFFSET_USEOBJPOS - 1 ].Value <<= aItem.bUseObjPos; - lPropertyValues[ OFFSET_USEOURTEXTWRAPPING - 1 ].Value <<= aItem.bUseOurTextWrapping; - lPropertyValues[ OFFSET_CONSIDERWRAPPINGSTYLE - 1 ].Value <<= aItem.bConsiderWrappingStyle; - lPropertyValues[ OFFSET_EXPANDWORDSPACE - 1 ].Value <<= aItem.bExpandWordSpace; - lPropertyValues[ OFFSET_PROTECTFORM - 1 ].Value <<= aItem.bProtectForm; - lPropertyValues[ OFFSET_MSWORDTRAILINGBLANKS - 1 ].Value <<= aItem.bMsWordCompTrailingBlanks; + for ( int i = static_cast<int>(SvtCompatibilityEntry::Index::Name); i < static_cast<int>(SvtCompatibilityEntry::Index::INVALID); ++i ) + lProperties[i].Name = SvtCompatibilityEntry::getName( SvtCompatibilityEntry::Index(i) ); - SetSetProperties( SETNODE_ALLFILEFORMATS, lPropertyValues ); + sal_Int32 j = 0; + for ( std::vector< SvtCompatibilityEntry >::const_iterator pItem = m_aOptions.begin(); pItem != m_aOptions.end(); ++pItem ) + { + for ( int i = static_cast<int>(SvtCompatibilityEntry::Index::Name); i < static_cast<int>(SvtCompatibilityEntry::Index::INVALID); ++i ) + lProperties[i].Value = pItem->getValue( SvtCompatibilityEntry::Index(i) ); + lResult[ j++ ] = lProperties; } -} - -// public method -void SvtCompatibilityOptions_Impl::Clear() -{ - m_aOptions.Clear(); - SetModified(); + return lResult; } -// public method - -Sequence< Sequence< PropertyValue > > SvtCompatibilityOptions_Impl::GetList() const +void SvtCompatibilityOptions_Impl::Notify( const Sequence< OUString >& ) { - Sequence< Sequence< PropertyValue > > lReturn; - lReturn = m_aOptions.GetList(); - return lReturn; + SAL_WARN( "unotools.config", "SvtCompatibilityOptions_Impl::Notify()\nNot implemented yet! I don't know how I can handle a dynamical list of unknown properties ...\n" ); } -// public method - -void SvtCompatibilityOptions_Impl::AppendItem( const OUString& _sName, - const OUString& _sModule, - bool _bUsePrtMetrics, - bool _bAddSpacing, - bool _bAddSpacingAtPages, - bool _bUseOurTabStops, - bool _bNoExtLeading, - bool _bUseLineSpacing, - bool _bAddTableSpacing, - bool _bUseObjPos, - bool _bUseOurTextWrapping, - bool _bConsiderWrappingStyle, - bool _bExpandWordSpace, - bool _bProtectForm, - bool _bMsWordCompTrailingBlanks ) +void SvtCompatibilityOptions_Impl::ImplCommit() { - SvtCompatibilityEntry aItem( _sName, _sModule ); - aItem.SetUsePrtMetrics( _bUsePrtMetrics ); - aItem.SetAddSpacing( _bAddSpacing ); - aItem.SetAddSpacingAtPages( _bAddSpacingAtPages ); - aItem.SetUseOurTabStops( _bUseOurTabStops ); - aItem.SetNoExtLeading( _bNoExtLeading ); - aItem.SetUseLineSpacing( _bUseLineSpacing ); - aItem.SetAddTableSpacing( _bAddTableSpacing ); - aItem.SetUseObjPos( _bUseObjPos ); - aItem.SetUseOurTextWrapping( _bUseOurTextWrapping ); - aItem.SetConsiderWrappingStyle( _bConsiderWrappingStyle ); - aItem.SetExpandWordSpace( _bExpandWordSpace ); - aItem.SetProtectForm( _bProtectForm ); - aItem.SetMsWordCompTrailingBlanks( _bMsWordCompTrailingBlanks ); - m_aOptions.AppendEntry( aItem ); + // Write all properties! + // Delete complete set first. + ClearNodeSet( SETNODE_ALLFILEFORMATS ); - // default item reset? - if ( _sName == COMPATIBILITY_DEFAULT_NAME ) - m_aDefOptions = aItem; + Sequence< PropertyValue > lPropertyValues( SvtCompatibilityEntry::getElementCount() - 1 ); + sal_uInt32 nNewCount = m_aOptions.size(); + for ( sal_uInt32 nItem = 0; nItem < nNewCount; ++nItem ) + { + SvtCompatibilityEntry aItem = m_aOptions[ nItem ]; + OUString sNode = SETNODE_ALLFILEFORMATS PATHDELIMITER + aItem.getValue<OUString>( SvtCompatibilityEntry::Index::Name ) + PATHDELIMITER; - SetModified(); -} + for ( int i = static_cast<int>(SvtCompatibilityEntry::Index::Module); i < static_cast<int>(SvtCompatibilityEntry::Index::INVALID); ++i ) + { + lPropertyValues[ i - 1 ].Name = sNode + SvtCompatibilityEntry::getName( SvtCompatibilityEntry::Index(i) ); + lPropertyValues[ i - 1 ].Value = aItem.getValue( SvtCompatibilityEntry::Index(i) ); + } -// private method + SetSetProperties( SETNODE_ALLFILEFORMATS, lPropertyValues ); + } +} Sequence< OUString > SvtCompatibilityOptions_Impl::impl_GetPropertyNames( Sequence< OUString >& rItems ) { // First get ALL names of current existing list items in configuration! rItems = GetNodeNames( SETNODE_ALLFILEFORMATS ); // expand list to result list ... - Sequence< OUString > lProperties( rItems.getLength() * ( PROPERTYCOUNT - 1 ) ); + Sequence< OUString > lProperties( rItems.getLength() * ( SvtCompatibilityEntry::getElementCount() - 1 ) ); impl_ExpandPropertyNames( rItems, lProperties ); // Return result. return lProperties; } -// private method - void SvtCompatibilityOptions_Impl::impl_ExpandPropertyNames( const Sequence< OUString >& lSource, Sequence< OUString >& lDestination ) { - OUString sFixPath; - sal_Int32 nDestStep = 0; sal_Int32 nSourceCount = lSource.getLength(); // Copy entries to destination and expand every item with 2 supported sub properties. - for( sal_Int32 nSourceStep = 0; nSourceStep < nSourceCount; ++nSourceStep ) + for ( sal_Int32 nSourceStep = 0; nSourceStep < nSourceCount; ++nSourceStep ) { + OUString sFixPath; sFixPath = SETNODE_ALLFILEFORMATS; sFixPath += PATHDELIMITER; sFixPath += lSource[ nSourceStep ]; sFixPath += PATHDELIMITER; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_MODULE; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_USEPRTMETRICS; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_ADDSPACING; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_ADDSPACINGATPAGES; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_USEOURTABSTOPS; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_NOEXTLEADING; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_USELINESPACING; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_ADDTABLESPACING; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_USEOBJPOS; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_USEOURTEXTWRAP; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_CONSIDERWRAPSTYLE; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_EXPANDWORDSPACE; - ++nDestStep; - lDestination[nDestStep] = sFixPath; - lDestination[nDestStep] += PROPERTYNAME_MSWORDTRAILINGBLANKS; - ++nDestStep; + for ( int i = static_cast<int>(SvtCompatibilityEntry::Index::Module); i < static_cast<int>(SvtCompatibilityEntry::Index::INVALID); ++i ) + lDestination[ i - 1 ] = sFixPath + SvtCompatibilityEntry::getName( SvtCompatibilityEntry::Index(i) ); } } -namespace { - -std::weak_ptr<SvtCompatibilityOptions_Impl> theOptions; - +namespace +{ + std::weak_ptr<SvtCompatibilityOptions_Impl> theOptions; } SvtCompatibilityOptions::SvtCompatibilityOptions() @@ -613,11 +328,11 @@ SvtCompatibilityOptions::SvtCompatibilityOptions() MutexGuard aGuard( GetOwnStaticMutex() ); m_pImpl = theOptions.lock(); - if( !m_pImpl ) + if ( !m_pImpl ) { - m_pImpl = std::make_shared<SvtCompatibilityOptions_Impl>(); + m_pImpl = std::make_shared<SvtCompatibilityOptions_Impl>(); theOptions = m_pImpl; - ItemHolder1::holdConfigItem(E_COMPATIBILITY); + ItemHolder1::holdConfigItem( E_COMPATIBILITY ); } } @@ -628,112 +343,28 @@ SvtCompatibilityOptions::~SvtCompatibilityOptions() m_pImpl.reset(); } -void SvtCompatibilityOptions::Clear() +void SvtCompatibilityOptions::AppendItem( const SvtCompatibilityEntry& aItem ) { MutexGuard aGuard( GetOwnStaticMutex() ); - m_pImpl->Clear(); -} - -void SvtCompatibilityOptions::SetDefault( const OUString & sName, bool bValue ) -{ - m_pImpl->SetDefault( sName, bValue ); + m_pImpl->AppendItem( aItem ); } -void SvtCompatibilityOptions::AppendItem( const OUString& sName, - const OUString& sModule, - bool bUsePrtMetrics, - bool bAddSpacing, - bool bAddSpacingAtPages, - bool bUseOurTabStops, - bool bNoExtLeading, - bool bUseLineSpacing, - bool bAddTableSpacing, - bool bUseObjPos, - bool bUseOurTextWrapping, - bool bConsiderWrappingStyle, - bool bExpandWordSpace, - bool bProtectForm, - bool bMsWordCompTrailingBlanks ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pImpl->AppendItem( - sName, sModule, bUsePrtMetrics, bAddSpacing, - bAddSpacingAtPages, bUseOurTabStops, bNoExtLeading, - bUseLineSpacing, bAddTableSpacing, bUseObjPos, - bUseOurTextWrapping, bConsiderWrappingStyle, bExpandWordSpace, - bProtectForm, bMsWordCompTrailingBlanks ); -} - -bool SvtCompatibilityOptions::IsUsePrtDevice() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pImpl->IsUsePrtDevice(); -} - -bool SvtCompatibilityOptions::IsAddSpacing() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pImpl->IsAddSpacing(); -} - -bool SvtCompatibilityOptions::IsAddSpacingAtPages() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pImpl->IsAddSpacingAtPages(); -} - -bool SvtCompatibilityOptions::IsUseOurTabStops() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pImpl->IsUseOurTabStops(); -} - -bool SvtCompatibilityOptions::IsNoExtLeading() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pImpl->IsNoExtLeading(); -} - -bool SvtCompatibilityOptions::IsUseLineSpacing() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pImpl->IsUseLineSpacing(); -} - -bool SvtCompatibilityOptions::IsAddTableSpacing() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pImpl->IsAddTableSpacing(); -} - -bool SvtCompatibilityOptions::IsUseObjectPositioning() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pImpl->IsUseObjPos(); -} - -bool SvtCompatibilityOptions::IsUseOurTextWrapping() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pImpl->IsUseOurTextWrapping(); -} - -bool SvtCompatibilityOptions::IsConsiderWrappingStyle() const +void SvtCompatibilityOptions::Clear() { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pImpl->IsConsiderWrappingStyle(); + m_pImpl->Clear(); } -bool SvtCompatibilityOptions::IsExpandWordSpace() const +void SvtCompatibilityOptions::SetDefault( SvtCompatibilityEntry::Index rIdx, bool rValue ) { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pImpl->IsExpandWordSpace(); + m_pImpl->SetDefault( rIdx, rValue ); } -bool SvtCompatibilityOptions::IsMsWordCompTrailingBlanks() const +bool SvtCompatibilityOptions::GetDefault( SvtCompatibilityEntry::Index rIdx ) const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pImpl->IsMsWordCompTrailingBlanks(); + return m_pImpl->GetDefault( rIdx ); } Sequence< Sequence< PropertyValue > > SvtCompatibilityOptions::GetList() const |