diff options
Diffstat (limited to 'binfilter/bf_sw/source/core/inc/txmsrt.hxx')
-rw-r--r-- | binfilter/bf_sw/source/core/inc/txmsrt.hxx | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/binfilter/bf_sw/source/core/inc/txmsrt.hxx b/binfilter/bf_sw/source/core/inc/txmsrt.hxx new file mode 100644 index 000000000000..e69afd0e07c1 --- /dev/null +++ b/binfilter/bf_sw/source/core/inc/txmsrt.hxx @@ -0,0 +1,195 @@ +/* -*- 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. + * + ************************************************************************/ +#ifndef _TXMSRT_HXX +#define _TXMSRT_HXX + +#include <i18npool/lang.h> +#include <tox.hxx> +class CharClass; +namespace binfilter { + + +class SwCntntNode; +class SwTxtNode; +class SwTxtTOXMark; +class SwIndex; +class SwFmtFld; +class IndexEntrySupplierWrapper; + +enum TOXSortType +{ + TOX_SORT_INDEX, + TOX_SORT_CUSTOM, + TOX_SORT_CONTENT, + TOX_SORT_PARA, + TOX_SORT_TABLE, + TOX_SORT_AUTHORITY +}; + +struct SwTOXSource +{ + const SwCntntNode* pNd; + xub_StrLen nPos; + BOOL bMainEntry; + + SwTOXSource() : pNd(0), nPos(0), bMainEntry(FALSE) {} + SwTOXSource( const SwCntntNode* pNode, xub_StrLen n, BOOL bMain ) + : pNd(pNode), nPos(n), bMainEntry(bMain) + {} +}; + +SV_DECL_VARARR( SwTOXSources, SwTOXSource, 0, 10 ) + +class SwTOXInternational +{ + IndexEntrySupplierWrapper* pIndexWrapper; + CharClass* pCharClass; + LanguageType eLang; + String sSortAlgorithm; + USHORT nOptions; + + void Init(); + +public: + SwTOXInternational( LanguageType nLang, USHORT nOptions, + const String& rSortAlgorithm ); + SwTOXInternational( const SwTOXInternational& ); + ~SwTOXInternational(); + + sal_Int32 Compare( const String& rTxt1, const String& rTxtReading1, + const ::com::sun::star::lang::Locale& rLocale1, + const String& rTxt2, const String& rTxtReading2, + const ::com::sun::star::lang::Locale& rLocale2 ) const; + + inline BOOL IsEqual( const String& rTxt1, const String& rTxtReading1, + const ::com::sun::star::lang::Locale& rLocale1, + const String& rTxt2, const String& rTxtReading2, + const ::com::sun::star::lang::Locale& rLocale2 ) const + { + return 0 == Compare( rTxt1, rTxtReading1, rLocale1, + rTxt2, rTxtReading2, rLocale2 ); + } + inline BOOL IsNumeric( const String& rStr ) const; +}; + +/*-------------------------------------------------------------------- + Beschreibung: Klassen fuer die Sortierung der Verzeichnisse + --------------------------------------------------------------------*/ + +struct SwTOXSortTabBase +{ + SwTOXSources aTOXSources; + ::com::sun::star::lang::Locale aLocale; + const SwTxtNode* pTOXNd; + const SwTxtTOXMark* pTxtMark; + const SwTOXInternational* pTOXIntl; + ULONG nPos; + xub_StrLen nCntPos; + USHORT nType; + static USHORT nOpt; + + SwTOXSortTabBase( TOXSortType nType, + const SwCntntNode* pTOXSrc, + const SwTxtTOXMark* pTxtMark, + const SwTOXInternational* pIntl, + const ::com::sun::star::lang::Locale* pLocale = NULL ); + + USHORT GetType() const { return nType; } + USHORT GetOptions() const { return nOpt; } + + virtual void FillText( SwTxtNode& rNd, const SwIndex& rInsPos, USHORT nAuthField = 0) const; + virtual USHORT GetLevel() const = 0; + virtual BOOL operator==( const SwTOXSortTabBase& ); + virtual BOOL operator<( const SwTOXSortTabBase& ); + + virtual String GetURL() const; + + inline void GetTxt( String&, String& ) const; + inline const ::com::sun::star::lang::Locale& GetLocale() const; + +private: + BOOL bValidTxt; + String sSortTxt; + String sSortTxtReading; + + virtual void _GetText( String&, String& ) = 0; +}; + +inline void SwTOXSortTabBase::GetTxt( String& rSortTxt, + String& rSortTxtReading ) const +{ + if( !bValidTxt ) + { + SwTOXSortTabBase* pThis = (SwTOXSortTabBase*)this; + pThis->_GetText( pThis->sSortTxt, pThis->sSortTxtReading ); + pThis->bValidTxt = TRUE; + } + + rSortTxt = sSortTxt; + rSortTxtReading = sSortTxtReading; + } + + inline const ::com::sun::star::lang::Locale& SwTOXSortTabBase::GetLocale() const + { + return aLocale; + } + +/*-------------------------------------------------------------------- + Beschreibung: fuer Sortierung nach Text + --------------------------------------------------------------------*/ + + + +/*-------------------------------------------------------------------- + Beschreibung: fuer Sortierung nach Position + --------------------------------------------------------------------*/ + + + + +struct SwTOXAuthority : public SwTOXSortTabBase +{ +private: + SwFmtFld& m_rField; + virtual void FillText( SwTxtNode& rNd, const SwIndex& rInsPos, USHORT nAuthField = 0 ) const; + virtual void _GetText( String&, String& ); + +public: + SwTOXAuthority( const SwCntntNode& rNd, SwFmtFld& rField, const SwTOXInternational& rIntl ); + SwFmtFld& GetFldFmt() {return m_rField;} + + virtual BOOL operator==( const SwTOXSortTabBase& ); + virtual BOOL operator<( const SwTOXSortTabBase& ); + virtual USHORT GetLevel() const; +}; + + +} //namespace binfilter +#endif // _TXMSRT_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |