diff options
Diffstat (limited to 'unotools/source/config/compatibility.cxx')
-rw-r--r-- | unotools/source/config/compatibility.cxx | 833 |
1 files changed, 0 insertions, 833 deletions
diff --git a/unotools/source/config/compatibility.cxx b/unotools/source/config/compatibility.cxx deleted file mode 100644 index 7771e293e4..0000000000 --- a/unotools/source/config/compatibility.cxx +++ /dev/null @@ -1,833 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_unotools.hxx" - -//_________________________________________________________________________________________________________________ -// includes -//_________________________________________________________________________________________________________________ - -#include <unotools/compatibility.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/configitem.hxx> -#include <unotools/syslocale.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/uno/Sequence.hxx> - -#include <vector> - -#include <itemholder1.hxx> - -#include <algorithm> - -//_________________________________________________________________________________________________________________ -// namespaces -//_________________________________________________________________________________________________________________ - -using namespace ::std; -using namespace ::utl; -using namespace ::rtl; -using namespace ::osl; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::beans; - -//_________________________________________________________________________________________________________________ -// const -//_________________________________________________________________________________________________________________ - -#define ROOTNODE_OPTIONS OUString( RTL_CONSTASCII_USTRINGPARAM( "Office.Compatibility/" ) ) -#define PATHDELIMITER OUString( RTL_CONSTASCII_USTRINGPARAM( "/" ) ) -#define SETNODE_ALLFILEFORMATS OUString( RTL_CONSTASCII_USTRINGPARAM( "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 PROPERTYCOUNT 13 - -#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 - -//_________________________________________________________________________________________________________________ -// private declarations! -//_________________________________________________________________________________________________________________ - -/*-**************************************************************************************************************** - @descr struct to hold information about one compatibility entry -****************************************************************************************************************-*/ -struct 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 ) {} - 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 ) {} - - 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; } - - 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; -}; - -/*-**************************************************************************************************************** - @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; - - 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; - 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; -}; - -class SvtCompatibilityOptions_Impl : public ConfigItem -{ - //------------------------------------------------------------------------------------------------------------- - // public methods - //------------------------------------------------------------------------------------------------------------- - - public: - - //--------------------------------------------------------------------------------------------------------- - // constructor / destructor - //--------------------------------------------------------------------------------------------------------- - - SvtCompatibilityOptions_Impl(); - ~SvtCompatibilityOptions_Impl(); - - void SetDefault( OUString sName, bool bValue ); - - //--------------------------------------------------------------------------------------------------------- - // overloaded methods of baseclass - //--------------------------------------------------------------------------------------------------------- - - /*-****************************************************************************************************//** - @short called for notify of configmanager - @descr These method is called from the ConfigManager before application ends or from the - PropertyChangeListener if the sub tree broadcasts changes. You must update your - internal values. - - @seealso baseclass ConfigItem - - @param "lPropertyNames" is the list of properties which should be updated. - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Notify( const Sequence< OUString >& lPropertyNames ); - - /*-****************************************************************************************************//** - @short write changes to configuration - @descr These method writes the changed values into the sub tree - and should always called in our destructor to guarantee consistency of config data. - - @seealso baseclass ConfigItem - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - virtual void Commit(); - - //--------------------------------------------------------------------------------------------------------- - // 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! - - @seealso - - - @param - - @return - - - @onerror - - *//*-*****************************************************************************************************/ - - void Clear(); - Sequence< Sequence< PropertyValue > > GetList() const; - void AppendItem( const ::rtl::OUString& _sName, - const ::rtl::OUString& _sModule, - bool _bUsePrtMetrics, - bool _bAddSpacing, - bool _bAddSpacingAtPages, - bool _bUseOurTabStops, - bool _bNoExtLeading, - bool _bUseLineSpacing, - bool _bAddTableSpacing, - bool _bUseObjPos, - bool _bUseOurTextWrapping, - bool _bConsiderWrappingStyle, - bool _bExpandWordSpace ); - - 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; } - - //------------------------------------------------------------------------------------------------------------- - // private methods - //------------------------------------------------------------------------------------------------------------- - - private: - - /*-****************************************************************************************************//** - @short return list of key names of our configuration management which represent one module tree - @descr These methods return the current list of key names! We need it to get needed values from our - configuration management and support dynamical menu item lists! - - @seealso - - - @param - - @return A list of configuration key names is returned. - - @onerror - - *//*-*****************************************************************************************************/ - - Sequence< OUString > impl_GetPropertyNames( Sequence< OUString >& rItems ); - - /*-****************************************************************************************************//** - @short expand the list for all well known properties to destination - @descr - - @attention - - - @seealso method impl_GetPropertyNames() - - @param "lSource" , original list - @param "lDestination" , destination of operation - @return A list of configuration key names is returned. - - @onerror - - *//*-*****************************************************************************************************/ - - void impl_ExpandPropertyNames( const Sequence< OUString >& lSource, - Sequence< OUString >& lDestination ); - - //------------------------------------------------------------------------------------------------------------- - // private member - //------------------------------------------------------------------------------------------------------------- - - private: - - SvtCompatibility m_aOptions; - SvtCompatibilityEntry m_aDefOptions; -}; - -//_________________________________________________________________________________________________________________ -// definitions -//_________________________________________________________________________________________________________________ - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtCompatibilityOptions_Impl::SvtCompatibilityOptions_Impl() - // Init baseclasses first - : ConfigItem( ROOTNODE_OPTIONS ) - // Init member then... -{ - // Get names and values of all accessable menu entries and fill internal structures. - // See impl_GetPropertyNames() for further informations. - Sequence< OUString > lNodes; - 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 ) - { - 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; - m_aOptions.AppendEntry( aItem ); - - if ( !bDefaultFound && aItem.sName.equals( COMPATIBILITY_DEFAULT_NAME ) != sal_False ) - { - SvtSysLocale aSysLocale; - com::sun::star::lang::Locale aLocale = aSysLocale.GetLocale(); - if ( aLocale.Language.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("zh")) || - aLocale.Language.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ja")) || - aLocale.Language.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ko")) ) - aItem.bExpandWordSpace = false; - - m_aDefOptions = aItem; - bDefaultFound = true; - } - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtCompatibilityOptions_Impl::~SvtCompatibilityOptions_Impl() -{ - // We must save our current values .. if user forget it! - if( IsModified() == sal_True ) - { - Commit(); - } -} - -void SvtCompatibilityOptions_Impl::SetDefault( OUString sName, bool bValue ) -{ - if ( COMPATIBILITY_PROPERTYNAME_USEPRTMETRICS.equals( sName ) ) - m_aDefOptions.SetUsePrtMetrics( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_ADDSPACING.equals( sName ) ) - m_aDefOptions.SetAddSpacing( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_ADDSPACINGATPAGES.equals( sName ) ) - m_aDefOptions.SetAddSpacingAtPages( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_USEOURTABSTOPS.equals( sName ) ) - m_aDefOptions.SetUseOurTabStops( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_NOEXTLEADING.equals( sName ) ) - m_aDefOptions.SetNoExtLeading( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_USELINESPACING.equals( sName ) ) - m_aDefOptions.SetUseLineSpacing( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_ADDTABLESPACING.equals( sName ) ) - m_aDefOptions.SetAddTableSpacing( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_USEOBJECTPOSITIONING.equals( sName ) ) - m_aDefOptions.SetUseObjPos( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_USEOURTEXTWRAPPING.equals( sName ) ) - m_aDefOptions.SetUseOurTextWrapping( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_CONSIDERWRAPPINGSTYLE.equals( sName ) ) - m_aDefOptions.SetConsiderWrappingStyle( bValue ); - else if ( COMPATIBILITY_PROPERTYNAME_EXPANDWORDSPACE.equals( sName ) ) - m_aDefOptions.SetExpandWordSpace( bValue ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCompatibilityOptions_Impl::Notify( const Sequence< OUString >& ) -{ - DBG_ASSERT( sal_False, "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::Commit() -{ - // Write all properties! - // Delete complete set first. - ClearNodeSet( SETNODE_ALLFILEFORMATS ); - - 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_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; - - SetSetProperties( SETNODE_ALLFILEFORMATS, lPropertyValues ); - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCompatibilityOptions_Impl::Clear() -{ - m_aOptions.Clear(); - SetModified(); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -Sequence< Sequence< PropertyValue > > SvtCompatibilityOptions_Impl::GetList() const -{ - Sequence< Sequence< PropertyValue > > lReturn; - lReturn = m_aOptions.GetList(); - return lReturn; -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** - -void SvtCompatibilityOptions_Impl::AppendItem( const ::rtl::OUString& _sName, - const ::rtl::OUString& _sModule, - bool _bUsePrtMetrics, - bool _bAddSpacing, - bool _bAddSpacingAtPages, - bool _bUseOurTabStops, - bool _bNoExtLeading, - bool _bUseLineSpacing, - bool _bAddTableSpacing, - bool _bUseObjPos, - bool _bUseOurTextWrapping, - bool _bConsiderWrappingStyle, - bool _bExpandWordSpace ) -{ - 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 ); - m_aOptions.AppendEntry( aItem ); - - // default item reset? - if ( _sName.equals( COMPATIBILITY_DEFAULT_NAME ) != sal_False ) - m_aDefOptions = aItem; - - SetModified(); -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -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 ) ); - 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 ) - { - 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; - } -} - -//***************************************************************************************************************** -// initialize static member -// DON'T DO IT IN YOUR HEADER! -// see definition for further informations -//***************************************************************************************************************** -SvtCompatibilityOptions_Impl* SvtCompatibilityOptions::m_pDataContainer = NULL; -sal_Int32 SvtCompatibilityOptions::m_nRefCount = 0; - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -SvtCompatibilityOptions::SvtCompatibilityOptions() -{ - // Global access, must be guarded (multithreading!). - MutexGuard aGuard( GetOwnStaticMutex() ); - // Increase ouer refcount ... - ++m_nRefCount; - // ... and initialize ouer data container only if it not already exist! - if( m_pDataContainer == NULL ) - { - m_pDataContainer = new SvtCompatibilityOptions_Impl; - ItemHolder1::holdConfigItem(E_COMPATIBILITY); - } -} - -//***************************************************************************************************************** -// destructor -//***************************************************************************************************************** -SvtCompatibilityOptions::~SvtCompatibilityOptions() -{ - // Global access, must be guarded (multithreading!) - MutexGuard aGuard( GetOwnStaticMutex() ); - // Decrease ouer refcount. - --m_nRefCount; - // If last instance was deleted ... - // we must destroy ouer static data container! - if( m_nRefCount <= 0 ) - { - delete m_pDataContainer; - m_pDataContainer = NULL; - } -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCompatibilityOptions::Clear() -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->Clear(); -} - -void SvtCompatibilityOptions::SetDefault( ::rtl::OUString sName, bool bValue ) -{ - m_pDataContainer->SetDefault( sName, bValue ); -} - -//***************************************************************************************************************** -// public method -//***************************************************************************************************************** -void SvtCompatibilityOptions::AppendItem( const ::rtl::OUString& sName, - const ::rtl::OUString& sModule, - bool bUsePrtMetrics, - bool bAddSpacing, - bool bAddSpacingAtPages, - bool bUseOurTabStops, - bool bNoExtLeading, - bool bUseLineSpacing, - bool bAddTableSpacing, - bool bUseObjPos, - bool bUseOurTextWrapping, - bool bConsiderWrappingStyle, - bool bExpandWordSpace ) -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->AppendItem( - sName, sModule, bUsePrtMetrics, bAddSpacing, - bAddSpacingAtPages, bUseOurTabStops, bNoExtLeading, - bUseLineSpacing, bAddTableSpacing, bUseObjPos, - bUseOurTextWrapping, bConsiderWrappingStyle, bExpandWordSpace ); -} - -bool SvtCompatibilityOptions::IsUsePrtDevice() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsUsePrtDevice(); -} - -bool SvtCompatibilityOptions::IsAddSpacing() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsAddSpacing(); -} - -bool SvtCompatibilityOptions::IsAddSpacingAtPages() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsAddSpacingAtPages(); -} - -bool SvtCompatibilityOptions::IsUseOurTabStops() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsUseOurTabStops(); -} - -bool SvtCompatibilityOptions::IsNoExtLeading() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsNoExtLeading(); -} - -bool SvtCompatibilityOptions::IsUseLineSpacing() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsUseLineSpacing(); -} - -bool SvtCompatibilityOptions::IsAddTableSpacing() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsAddTableSpacing(); -} - -bool SvtCompatibilityOptions::IsUseObjectPositioning() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsUseObjPos(); -} - -bool SvtCompatibilityOptions::IsUseOurTextWrapping() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsUseOurTextWrapping(); -} - -bool SvtCompatibilityOptions::IsConsiderWrappingStyle() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsConsiderWrappingStyle(); -} - -bool SvtCompatibilityOptions::IsExpandWordSpace() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsExpandWordSpace(); -} - -Sequence< Sequence< PropertyValue > > SvtCompatibilityOptions::GetList() const -{ - MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetList(); -} - -namespace -{ - class theCompatibilityOptionsMutex : public rtl::Static<osl::Mutex, theCompatibilityOptionsMutex>{}; -} - -//***************************************************************************************************************** -// private method -//***************************************************************************************************************** -Mutex& SvtCompatibilityOptions::GetOwnStaticMutex() -{ - return theCompatibilityOptionsMutex::get(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |