From 062eaeffe7cb986255063bb9b0a5f3fb3fc8e34c Mon Sep 17 00:00:00 2001 From: Tzvetelina Tzeneva Date: Thu, 22 Dec 2011 17:27:32 +0100 Subject: sw: Improved document comparison based on RSIDs. --- editeng/Package_inc.mk | 1 + editeng/inc/editeng/rsiditem.hxx | 43 +++++++++++++++++++++++++++++++++++++++ editeng/inc/editeng/svxenum.hxx | 6 ++++++ editeng/source/items/textitem.cxx | 28 ++++++++++++++++++++++++- 4 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 editeng/inc/editeng/rsiditem.hxx (limited to 'editeng') diff --git a/editeng/Package_inc.mk b/editeng/Package_inc.mk index 61d060373462..0305a047032a 100644 --- a/editeng/Package_inc.mk +++ b/editeng/Package_inc.mk @@ -113,6 +113,7 @@ $(eval $(call gb_Package_add_file,editeng_inc,inc/editeng/postitem.hxx,editeng/p $(eval $(call gb_Package_add_file,editeng_inc,inc/editeng/prntitem.hxx,editeng/prntitem.hxx)) $(eval $(call gb_Package_add_file,editeng_inc,inc/editeng/protitem.hxx,editeng/protitem.hxx)) $(eval $(call gb_Package_add_file,editeng_inc,inc/editeng/prszitem.hxx,editeng/prszitem.hxx)) +$(eval $(call gb_Package_add_file,editeng_inc,inc/editeng/rsiditem.hxx,editeng/rsiditem.hxx)) $(eval $(call gb_Package_add_file,editeng_inc,inc/editeng/scriptspaceitem.hxx,editeng/scriptspaceitem.hxx)) $(eval $(call gb_Package_add_file,editeng_inc,inc/editeng/scripttypeitem.hxx,editeng/scripttypeitem.hxx)) $(eval $(call gb_Package_add_file,editeng_inc,inc/editeng/shaditem.hxx,editeng/shaditem.hxx)) diff --git a/editeng/inc/editeng/rsiditem.hxx b/editeng/inc/editeng/rsiditem.hxx new file mode 100644 index 000000000000..e98fb8e4e129 --- /dev/null +++ b/editeng/inc/editeng/rsiditem.hxx @@ -0,0 +1,43 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License or as specified alternatively below. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * Major Contributor(s): + * [ Copyright (C) 2009 Tzvetelina Tzeneva (initial developer) ] + */ +#ifndef _SVX_RSIDITEM_HXX +#define _SVX_RSIDITEM_HXX + +#include +#include "editeng/editengdllapi.h" + +//---------------------- +// SvxRsidItem +//---------------------- + +class EDITENG_DLLPUBLIC SvxRsidItem : public SfxUInt32Item +{ +public: + TYPEINFO(); + + SvxRsidItem( sal_uInt32 nRsid, sal_uInt16 nId ) : SfxUInt32Item( nId, nRsid ) {} + SvxRsidItem( SvStream& rIn, sal_uInt16 nId ) : SfxUInt32Item( nId, rIn ) {} + + virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const; + virtual SfxPoolItem* Create( SvStream& rIn, sal_uInt16 nVer ) const; + + virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const; + virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId = 0 ); +}; + +#endif // _SVX_RSIDITEM_HXX diff --git a/editeng/inc/editeng/svxenum.hxx b/editeng/inc/editeng/svxenum.hxx index 68849722059b..2d07e9fe7a77 100644 --- a/editeng/inc/editeng/svxenum.hxx +++ b/editeng/inc/editeng/svxenum.hxx @@ -222,6 +222,12 @@ enum SvxExtNumType SVX_NUM_CHARS_LOWER_LETTER_N }; +enum SvxCompareMode +{ + SVX_CMP_AUTO = 0, + SVX_CMP_BY_WORD, + SVX_CMP_BY_CHAR +}; #endif diff --git a/editeng/source/items/textitem.cxx b/editeng/source/items/textitem.cxx index e3069074573a..db0edf2c9ffd 100644 --- a/editeng/source/items/textitem.cxx +++ b/editeng/source/items/textitem.cxx @@ -73,6 +73,7 @@ #include #include #include +#include #include #include #include @@ -157,7 +158,7 @@ TYPEINIT1_FACTORY(SvxScriptTypeItem, SfxUInt16Item, new SvxScriptTypeItem); TYPEINIT1_FACTORY(SvxCharRotateItem, SfxUInt16Item, new SvxCharRotateItem(0, sal_False, 0)); TYPEINIT1_FACTORY(SvxCharScaleWidthItem, SfxUInt16Item, new SvxCharScaleWidthItem(100, 0)); TYPEINIT1_FACTORY(SvxCharReliefItem, SfxEnumItem, new SvxCharReliefItem(RELIEF_NONE, 0)); - +TYPEINIT1_FACTORY(SvxRsidItem, SfxUInt32Item, new SvxRsidItem(0, 0)); TYPEINIT1(SvxScriptSetItem, SfxSetItem ); @@ -3740,4 +3741,29 @@ short GetI18NScriptType( sal_uInt16 nItemType ) return 0; } +bool SvxRsidItem::QueryValue( uno::Any& rVal, sal_uInt8 ) const +{ + rVal <<= ( (sal_uInt32)GetValue() ); + return true; +} + +bool SvxRsidItem::PutValue( const uno::Any& rVal, sal_uInt8 ) +{ + sal_uInt32 nRsid = 0; + if( !( rVal >>= nRsid ) ) + return false; + + SetValue( nRsid ); + return true; +} + +SfxPoolItem* SvxRsidItem::Clone( SfxItemPool * ) const +{ + return new SvxRsidItem( *this ); +} + +SfxPoolItem* SvxRsidItem::Create(SvStream& rIn, sal_uInt16 ) const +{ + return new SvxRsidItem( rIn, Which() ); +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit