summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cui/source/options/optgdlg.cxx2
-rw-r--r--include/unotools/compatibility.hxx243
-rw-r--r--sw/source/core/doc/DocumentSettingManager.cxx24
-rw-r--r--sw/source/ui/config/optcomp.cxx338
-rw-r--r--unotools/source/config/compatibility.cxx697
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