2000-09-18 23:08:29 +00:00
/*************************************************************************
*
2005-09-09 04:26:11 +00:00
* OpenOffice . org - a multi - platform office productivity suite
2000-09-18 23:08:29 +00:00
*
2005-09-09 04:26:11 +00:00
* $ RCSfile : unofield . cxx , v $
2000-09-18 23:08:29 +00:00
*
2007-11-12 15:27:00 +00:00
* $ Revision : 1.100 $
2000-09-18 23:08:29 +00:00
*
2007-11-12 15:27:00 +00:00
* last change : $ Author : rt $ $ Date : 2007 - 11 - 12 16 : 27 : 00 $
2000-09-18 23:08:29 +00:00
*
2005-09-09 04:26:11 +00:00
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1 .
2000-09-18 23:08:29 +00:00
*
*
2005-09-09 04:26:11 +00:00
* GNU Lesser General Public License Version 2.1
* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
* Copyright 2005 by Sun Microsystems , Inc .
* 901 San Antonio Road , Palo Alto , CA 94303 , USA
2000-09-18 23:08:29 +00:00
*
2005-09-09 04:26:11 +00:00
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1 , as published by the Free Software Foundation .
2000-09-18 23:08:29 +00:00
*
2005-09-09 04:26:11 +00:00
* This library 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 for more details .
2000-09-18 23:08:29 +00:00
*
2005-09-09 04:26:11 +00:00
* You should have received a copy of the GNU Lesser General Public
* License along with this library ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place , Suite 330 , Boston ,
* MA 02111 - 1307 USA
2000-09-18 23:08:29 +00:00
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2006-09-16 20:56:58 +00:00
// MARKER(update_precomp.py): autogen include statement, do not remove
# include "precompiled_sw.hxx"
2000-09-18 23:08:29 +00:00
# include <swtypes.hxx>
# include <cmdid.h>
2001-10-24 17:56:14 +00:00
2000-09-18 23:08:29 +00:00
# ifndef _DOC_HXX //autogen
# include <doc.hxx>
# endif
# ifndef _HINTS_HXX //autogen
# include <hints.hxx>
# endif
# ifndef _FMTFLD_HXX //autogen
# include <fmtfld.hxx>
# endif
# ifndef _TXTFLD_HXX //autogen
# include <txtfld.hxx>
# endif
# ifndef _NDTXT_HXX //autogen
# include <ndtxt.hxx>
# endif
# ifndef _UNOMAP_HXX
# include <unomap.hxx>
# endif
# ifndef _UNOPRNMS_HXX
# include <unoprnms.hxx>
# endif
# ifndef _UNOOBJ_HXX
# include <unoobj.hxx>
# endif
# ifndef _UNOCOLL_HXX
# include <unocoll.hxx>
# endif
# ifndef _SVXLINKMGR_HXX
# include <svx/linkmgr.hxx>
# endif
# ifndef _DOCSTAT_HXX //autogen
# include <docstat.hxx>
# endif
2005-10-05 12:22:06 +00:00
# ifndef _EDITSH_HXX
# include <editsh.hxx>
# endif
# ifndef _VIEWSH_HXX
# include <viewsh.hxx>
# endif
2001-04-23 12:11:12 +00:00
# ifndef _COMPHELPER_TYPES_HXX_
# include <comphelper/types.hxx>
# endif
2004-08-02 13:19:37 +00:00
# ifndef _COMPHELPER_PROCESSFACTORY_HXX_
# include <comphelper/processfactory.hxx>
# endif
2000-09-18 23:08:29 +00:00
# ifndef _COM_SUN_STAR_UTIL_TIME_HPP_
# include <com/sun/star/util/Time.hpp>
# endif
# ifndef _COM_SUN_STAR_UTIL_DATETIMERANGE_HPP_
# include <com/sun/star/util/DateTimeRange.hpp>
# endif
# ifndef _COM_SUN_STAR_UTIL_DATETIME_HPP_
# include <com/sun/star/util/DateTime.hpp>
# endif
# ifndef _COM_SUN_STAR_UTIL_DATE_HPP_
# include <com/sun/star/util/Date.hpp>
# endif
# ifndef _COM_SUN_STAR_BEANS_XFASTPROPERTYSET_HPP_
# include <com/sun/star/beans/XFastPropertySet.hpp>
# endif
# ifndef _COM_SUN_STAR_BEANS_XPROPERTYSTATECHANGELISTENER_HPP_
# include <com/sun/star/beans/XPropertyStateChangeListener.hpp>
# endif
# ifndef _COM_SUN_STAR_BEANS_PROPERTYATTRIBUTE_HPP_
# include <com/sun/star/beans/PropertyAttribute.hpp>
# endif
# ifndef _COM_SUN_STAR_BEANS_XPROPERTYCONTAINER_HPP_
# include <com/sun/star/beans/XPropertyContainer.hpp>
# endif
2006-08-14 15:54:19 +00:00
2001-03-08 09:15:55 +00:00
//undef to prevent error (from sfx2/docfile.cxx)
# undef SEQUENCE
2000-09-18 23:08:29 +00:00
# ifndef _COM_SUN_STAR_TEXT_SETVARIABLETYPE_HPP_
# include <com/sun/star/text/SetVariableType.hpp>
# endif
# ifndef _COM_SUN_STAR_TEXT_WRAPTEXTMODE_HPP_
# include <com/sun/star/text/WrapTextMode.hpp>
# endif
# ifndef _COM_SUN_STAR_TEXT_TEXTCONTENTANCHORTYPE_HPP_
# include <com/sun/star/text/TextContentAnchorType.hpp>
# endif
2000-10-17 11:36:09 +00:00
# ifndef _COM_SUN_STAR_TEXT_PAGENUMBERTYPE_HPP_
# include <com/sun/star/text/PageNumberType.hpp>
# endif
2000-09-18 23:08:29 +00:00
# ifndef _UNOFIELD_HXX
# include <unofield.hxx>
# endif
# ifndef _UNOCRSR_HXX
# include <unocrsr.hxx>
# endif
2000-11-22 14:23:00 +00:00
# ifndef _AUTHFLD_HXX
# include <authfld.hxx>
# endif
2000-09-18 23:08:29 +00:00
# ifndef _FLDDAT_HXX
# include <flddat.hxx>
# endif
# ifndef _DBFLD_HXX
# include <dbfld.hxx>
# endif
# ifndef _USRFLD_HXX
# include <usrfld.hxx>
# endif
# ifndef _DOCUFLD_HXX
# include <docufld.hxx>
# endif
# ifndef _EXPFLD_HXX
# include <expfld.hxx>
# endif
# ifndef _CHPFLD_HXX
# include <chpfld.hxx>
# endif
2003-06-30 14:52:29 +00:00
# ifndef _FLDDROPDOWN_HXX
# include <flddropdown.hxx>
# endif
2000-09-18 23:08:29 +00:00
# ifndef _POOLFMT_HXX
# include <poolfmt.hxx>
# endif
2000-11-07 08:58:56 +00:00
# ifndef _POOLFMT_HRC
# include <poolfmt.hrc>
# endif
2000-09-18 23:08:29 +00:00
# ifndef _PAGEDESC_HXX //autogen
# include <pagedesc.hxx>
# endif
# ifndef _DOCARY_HXX
# include <docary.hxx>
# endif
# ifndef _REFFLD_HXX
# include <reffld.hxx>
# endif
# ifndef _DDEFLD_HXX
# include <ddefld.hxx>
# endif
2005-10-05 12:22:06 +00:00
# ifndef _SWSTYLENAMEMAPPER_HXX
# include <SwStyleNameMapper.hxx>
# endif
# ifndef _SWUNOHELPER_HXX
# include <swunohelper.hxx>
# endif
# ifndef SW_UNOFLDMID_H
# include <unofldmid.h>
# endif
# ifndef _SCRIPTINFO_HXX
# include <scriptinfo.hxx>
# endif
2003-04-01 14:21:47 +00:00
# ifndef _DATETIME_HXX
# include <tools/datetime.hxx>
# endif
2004-08-02 13:19:37 +00:00
# ifndef _URLOBJ_HXX
# include <tools/urlobj.hxx>
# endif
# ifndef _SVX_DATACCESSDESCRIPTOR_HXX_
# include <svx/dataaccessdescriptor.hxx>
# endif
2000-09-18 23:08:29 +00:00
# define _SVSTDARR_STRINGS
# include <svtools/svstdarr.hxx>
# ifndef _VOS_MUTEX_HXX_ //autogen
# include <vos/mutex.hxx>
# endif
# ifndef _SV_SVAPP_HXX //autogen
# include <vcl/svapp.hxx>
# endif
2001-07-20 09:22:01 +00:00
2000-09-18 23:08:29 +00:00
using namespace : : com : : sun : : star ;
using namespace : : rtl ;
2007-09-27 08:36:28 +00:00
using namespace nsSwDocInfoSubType ;
2000-09-18 23:08:29 +00:00
2001-11-06 07:37:32 +00:00
# define COM_TEXT_FLDMASTER "com.sun.star.text.FieldMaster."
2000-09-18 23:08:29 +00:00
2007-01-30 14:22:46 +00:00
// case-corrected version of the first part for the service names (see #i67811)
# define COM_TEXT_FLDMASTER_CC "com.sun.star.text.fieldmaster."
2001-10-24 17:56:14 +00:00
static const sal_uInt16 aDocInfoSubTypeFromService [ ] =
{
2007-09-27 08:36:28 +00:00
DI_CHANGE | DI_SUB_AUTHOR , //PROPERTY_MAP_FLDTYP_DOCINFO_CHANGE_AUTHOR
DI_CHANGE | DI_SUB_DATE , //PROPERTY_MAP_FLDTYP_DOCINFO_CHANGE_DATE_TIME
DI_EDIT | DI_SUB_TIME , //PROPERTY_MAP_FLDTYP_DOCINFO_EDIT_TIME
2001-10-24 17:56:14 +00:00
DI_COMMENT , //PROPERTY_MAP_FLDTYP_DOCINFO_DESCRIPTION
2007-09-27 08:36:28 +00:00
DI_CREATE | DI_SUB_AUTHOR , //PROPERTY_MAP_FLDTYP_DOCINFO_CREATE_AUTHOR
DI_CREATE | DI_SUB_DATE , //PROPERTY_MAP_FLDTYP_DOCINFO_CREATE_DATE_TIME
2001-10-24 17:56:14 +00:00
DI_INFO1 , //PROPERTY_MAP_FLDTYP_DOCINFO_INFO_0
DI_INFO2 , //PROPERTY_MAP_FLDTYP_DOCINFO_INFO_1
DI_INFO3 , //PROPERTY_MAP_FLDTYP_DOCINFO_INFO_2
DI_INFO4 , //PROPERTY_MAP_FLDTYP_DOCINFO_INFO_3
2007-09-27 08:36:28 +00:00
DI_PRINT | DI_SUB_AUTHOR , //PROPERTY_MAP_FLDTYP_DOCINFO_PRINT_AUTHOR
DI_PRINT | DI_SUB_DATE , //PROPERTY_MAP_FLDTYP_DOCINFO_PRINT_DATE_TIME
2001-10-24 17:56:14 +00:00
DI_KEYS , //PROPERTY_MAP_FLDTYP_DOCINFO_KEY_WORDS
DI_THEMA , //PROPERTY_MAP_FLDTYP_DOCINFO_SUBJECT
DI_TITEL , //PROPERTY_MAP_FLDTYP_DOCINFO_TITLE
DI_DOCNO //PROPERTY_MAP_FLDTYP_DOCINFO_REVISION
2000-09-18 23:08:29 +00:00
} ;
struct ServiceIdResId
{
USHORT nResId ;
USHORT nServiceId ;
} ;
2001-10-24 17:56:14 +00:00
static const ServiceIdResId aServiceToRes [ ] =
2000-09-18 23:08:29 +00:00
{
{ RES_DATETIMEFLD , SW_SERVICE_FIELDTYPE_DATETIME } ,
{ RES_USERFLD , SW_SERVICE_FIELDTYPE_USER } ,
{ RES_SETEXPFLD , SW_SERVICE_FIELDTYPE_SET_EXP } ,
{ RES_GETEXPFLD , SW_SERVICE_FIELDTYPE_GET_EXP } ,
{ RES_FILENAMEFLD , SW_SERVICE_FIELDTYPE_FILE_NAME } ,
{ RES_PAGENUMBERFLD , SW_SERVICE_FIELDTYPE_PAGE_NUM } ,
{ RES_AUTHORFLD , SW_SERVICE_FIELDTYPE_AUTHOR } ,
{ RES_CHAPTERFLD , SW_SERVICE_FIELDTYPE_CHAPTER } ,
{ RES_GETREFFLD , SW_SERVICE_FIELDTYPE_GET_REFERENCE } ,
{ RES_HIDDENTXTFLD , SW_SERVICE_FIELDTYPE_CONDITIONED_TEXT } ,
{ RES_POSTITFLD , SW_SERVICE_FIELDTYPE_ANNOTATION } ,
{ RES_INPUTFLD , SW_SERVICE_FIELDTYPE_INPUT } ,
{ RES_MACROFLD , SW_SERVICE_FIELDTYPE_MACRO } ,
{ RES_DDEFLD , SW_SERVICE_FIELDTYPE_DDE } ,
{ RES_HIDDENPARAFLD , SW_SERVICE_FIELDTYPE_HIDDEN_PARA } ,
{ RES_DOCINFOFLD , SW_SERVICE_FIELDTYPE_DOC_INFO } ,
{ RES_TEMPLNAMEFLD , SW_SERVICE_FIELDTYPE_TEMPLATE_NAME } ,
{ RES_EXTUSERFLD , SW_SERVICE_FIELDTYPE_USER_EXT } ,
{ RES_REFPAGESETFLD , SW_SERVICE_FIELDTYPE_REF_PAGE_SET } ,
{ RES_REFPAGEGETFLD , SW_SERVICE_FIELDTYPE_REF_PAGE_GET } ,
{ RES_JUMPEDITFLD , SW_SERVICE_FIELDTYPE_JUMP_EDIT } ,
{ RES_SCRIPTFLD , SW_SERVICE_FIELDTYPE_SCRIPT } ,
{ RES_DBNEXTSETFLD , SW_SERVICE_FIELDTYPE_DATABASE_NEXT_SET } ,
{ RES_DBNUMSETFLD , SW_SERVICE_FIELDTYPE_DATABASE_NUM_SET } ,
{ RES_DBSETNUMBERFLD , SW_SERVICE_FIELDTYPE_DATABASE_SET_NUM } ,
{ RES_DBFLD , SW_SERVICE_FIELDTYPE_DATABASE } ,
{ RES_DBNAMEFLD , SW_SERVICE_FIELDTYPE_DATABASE_NAME } ,
{ RES_DOCSTATFLD , SW_SERVICE_FIELDTYPE_PAGE_COUNT } ,
{ RES_DOCSTATFLD , SW_SERVICE_FIELDTYPE_PARAGRAPH_COUNT } ,
{ RES_DOCSTATFLD , SW_SERVICE_FIELDTYPE_WORD_COUNT } ,
{ RES_DOCSTATFLD , SW_SERVICE_FIELDTYPE_CHARACTER_COUNT } ,
{ RES_DOCSTATFLD , SW_SERVICE_FIELDTYPE_TABLE_COUNT } ,
{ RES_DOCSTATFLD , SW_SERVICE_FIELDTYPE_GRAPHIC_OBJECT_COUNT } ,
{ RES_DOCSTATFLD , SW_SERVICE_FIELDTYPE_EMBEDDED_OBJECT_COUNT } ,
{ RES_DOCINFOFLD , SW_SERVICE_FIELDTYPE_DOCINFO_CHANGE_AUTHOR } ,
{ RES_DOCINFOFLD , SW_SERVICE_FIELDTYPE_DOCINFO_CHANGE_DATE_TIME } ,
{ RES_DOCINFOFLD , SW_SERVICE_FIELDTYPE_DOCINFO_EDIT_TIME } ,
{ RES_DOCINFOFLD , SW_SERVICE_FIELDTYPE_DOCINFO_DESCRIPTION } ,
{ RES_DOCINFOFLD , SW_SERVICE_FIELDTYPE_DOCINFO_CREATE_AUTHOR } ,
{ RES_DOCINFOFLD , SW_SERVICE_FIELDTYPE_DOCINFO_CREATE_DATE_TIME } ,
{ RES_DOCINFOFLD , SW_SERVICE_FIELDTYPE_DOCINFO_INFO_0 } ,
{ RES_DOCINFOFLD , SW_SERVICE_FIELDTYPE_DOCINFO_INFO_1 } ,
{ RES_DOCINFOFLD , SW_SERVICE_FIELDTYPE_DOCINFO_INFO_2 } ,
{ RES_DOCINFOFLD , SW_SERVICE_FIELDTYPE_DOCINFO_INFO_3 } ,
{ RES_DOCINFOFLD , SW_SERVICE_FIELDTYPE_DOCINFO_PRINT_AUTHOR } ,
{ RES_DOCINFOFLD , SW_SERVICE_FIELDTYPE_DOCINFO_PRINT_DATE_TIME } ,
{ RES_DOCINFOFLD , SW_SERVICE_FIELDTYPE_DOCINFO_KEY_WORDS } ,
{ RES_DOCINFOFLD , SW_SERVICE_FIELDTYPE_DOCINFO_SUBJECT } ,
{ RES_DOCINFOFLD , SW_SERVICE_FIELDTYPE_DOCINFO_TITLE } ,
{ RES_INPUTFLD , SW_SERVICE_FIELDTYPE_INPUT_USER } ,
{ RES_HIDDENTXTFLD , SW_SERVICE_FIELDTYPE_HIDDEN_TEXT } ,
2000-11-09 09:44:28 +00:00
{ RES_AUTHORITY , SW_SERVICE_FIELDTYPE_BIBLIOGRAPHY } ,
2001-01-29 14:29:30 +00:00
{ RES_COMBINED_CHARS , SW_SERVICE_FIELDTYPE_COMBINED_CHARACTERS } ,
2003-06-30 14:52:29 +00:00
{ RES_DROPDOWN , SW_SERVICE_FIELDTYPE_DROPDOWN } ,
2001-10-17 12:38:26 +00:00
{ RES_TABLEFLD , SW_SERVICE_FIELDTYPE_TABLE_FORMULA } ,
2000-09-18 23:08:29 +00:00
{ USHRT_MAX , USHRT_MAX }
} ;
//-----------------------------------------------------------------
sal_uInt16 lcl_ServiceIdToResId ( sal_uInt16 nServiceId )
{
2003-12-01 16:24:08 +00:00
const ServiceIdResId * pMap = aServiceToRes ;
while ( USHRT_MAX ! = pMap - > nServiceId & & nServiceId ! = pMap - > nServiceId )
+ + pMap ;
2001-10-24 17:56:14 +00:00
# ifdef DBG_UTIL
if ( USHRT_MAX = = pMap - > nServiceId )
DBG_ERROR ( " service id not found " ) ;
# endif
return pMap - > nResId ;
}
//-----------------------------------------------------------------
sal_uInt16 lcl_GetServiceForField ( const SwField & rFld )
{
sal_uInt16 nWhich = rFld . Which ( ) , nSrvId = USHRT_MAX ;
//special handling for some fields
switch ( nWhich )
{
case RES_INPUTFLD :
if ( INP_USR = = ( rFld . GetSubType ( ) & 0x00ff ) )
nSrvId = SW_SERVICE_FIELDTYPE_INPUT_USER ;
break ;
case RES_DOCINFOFLD :
{
USHORT nSubType = rFld . GetSubType ( ) ;
switch ( ( nSubType & 0xff ) )
{
case DI_CHANGE :
nSrvId = ( ( nSubType & 0x300 ) = = DI_SUB_AUTHOR )
? SW_SERVICE_FIELDTYPE_DOCINFO_CHANGE_AUTHOR
: SW_SERVICE_FIELDTYPE_DOCINFO_CHANGE_DATE_TIME ;
break ;
case DI_CREATE :
nSrvId = ( ( nSubType & 0x300 ) = = DI_SUB_AUTHOR )
? SW_SERVICE_FIELDTYPE_DOCINFO_CREATE_AUTHOR
: SW_SERVICE_FIELDTYPE_DOCINFO_CREATE_DATE_TIME ;
break ;
case DI_PRINT :
nSrvId = ( ( nSubType & 0x300 ) = = DI_SUB_AUTHOR )
? SW_SERVICE_FIELDTYPE_DOCINFO_PRINT_AUTHOR
: SW_SERVICE_FIELDTYPE_DOCINFO_PRINT_DATE_TIME ;
break ;
case DI_EDIT : nSrvId = SW_SERVICE_FIELDTYPE_DOCINFO_EDIT_TIME ; break ;
case DI_COMMENT : nSrvId = SW_SERVICE_FIELDTYPE_DOCINFO_DESCRIPTION ; break ;
case DI_INFO1 : nSrvId = SW_SERVICE_FIELDTYPE_DOCINFO_INFO_0 ; break ;
case DI_INFO2 : nSrvId = SW_SERVICE_FIELDTYPE_DOCINFO_INFO_1 ; break ;
case DI_INFO3 : nSrvId = SW_SERVICE_FIELDTYPE_DOCINFO_INFO_2 ; break ;
case DI_INFO4 : nSrvId = SW_SERVICE_FIELDTYPE_DOCINFO_INFO_3 ; break ;
case DI_KEYS : nSrvId = SW_SERVICE_FIELDTYPE_DOCINFO_KEY_WORDS ; break ;
case DI_THEMA : nSrvId = SW_SERVICE_FIELDTYPE_DOCINFO_SUBJECT ; break ;
case DI_TITEL : nSrvId = SW_SERVICE_FIELDTYPE_DOCINFO_TITLE ; break ;
case DI_DOCNO : nSrvId = SW_SERVICE_FIELDTYPE_DOCINFO_REVISION ; break ;
}
}
break ;
case RES_HIDDENTXTFLD :
nSrvId = TYP_CONDTXTFLD = = rFld . GetSubType ( )
? SW_SERVICE_FIELDTYPE_CONDITIONED_TEXT
: SW_SERVICE_FIELDTYPE_HIDDEN_TEXT ;
break ;
case RES_DOCSTATFLD :
{
switch ( rFld . GetSubType ( ) )
{
case DS_PAGE : nSrvId = SW_SERVICE_FIELDTYPE_PAGE_COUNT ; break ;
case DS_PARA : nSrvId = SW_SERVICE_FIELDTYPE_PARAGRAPH_COUNT ; break ;
case DS_WORD : nSrvId = SW_SERVICE_FIELDTYPE_WORD_COUNT ; break ;
case DS_CHAR : nSrvId = SW_SERVICE_FIELDTYPE_CHARACTER_COUNT ; break ;
case DS_TBL : nSrvId = SW_SERVICE_FIELDTYPE_TABLE_COUNT ; break ;
case DS_GRF : nSrvId = SW_SERVICE_FIELDTYPE_GRAPHIC_OBJECT_COUNT ; break ;
case DS_OLE : nSrvId = SW_SERVICE_FIELDTYPE_EMBEDDED_OBJECT_COUNT ; break ;
}
}
break ;
}
if ( USHRT_MAX = = nSrvId )
{
for ( const ServiceIdResId * pMap = aServiceToRes ;
USHRT_MAX ! = pMap - > nResId ; + + pMap )
if ( nWhich = = pMap - > nResId )
{
nSrvId = pMap - > nServiceId ;
break ;
}
}
# ifdef DBG_UTIL
if ( USHRT_MAX = = nSrvId )
DBG_ERROR ( " resid not found " ) ;
# endif
return nSrvId ;
}
sal_uInt16 lcl_GetPropMapIdForFieldType ( USHORT nWhich )
{
sal_uInt16 nId ;
switch ( nWhich )
2000-09-18 23:08:29 +00:00
{
2001-10-24 17:56:14 +00:00
case RES_USERFLD : nId = PROPERTY_MAP_FLDMSTR_USER ; break ;
case RES_DBFLD : nId = PROPERTY_MAP_FLDMSTR_DATABASE ; break ;
case RES_SETEXPFLD : nId = PROPERTY_MAP_FLDMSTR_SET_EXP ; break ;
case RES_DDEFLD : nId = PROPERTY_MAP_FLDMSTR_DDE ; break ;
case RES_AUTHORITY : nId = PROPERTY_MAP_FLDMSTR_BIBLIOGRAPHY ; break ;
default : nId = PROPERTY_MAP_FLDMSTR_DUMMY0 ;
2000-09-18 23:08:29 +00:00
}
2001-10-24 17:56:14 +00:00
return nId ;
2000-09-18 23:08:29 +00:00
}
2001-10-24 17:56:14 +00:00
BYTE GetFieldTypeMId ( const OUString & rProperty , const SwFieldType & rTyp )
{
USHORT nId = lcl_GetPropMapIdForFieldType ( rTyp . Which ( ) ) ;
const SfxItemPropertyMap * pMap = aSwMapProvider . GetPropertyMap ( nId ) ;
if ( ! pMap )
nId = USHRT_MAX ;
else
2002-07-24 06:15:11 +00:00
{
nId = USHRT_MAX ; // in case of property not found
2001-10-24 17:56:14 +00:00
for ( ; pMap - > pName ; + + pMap )
if ( rProperty . equalsAsciiL ( pMap - > pName , pMap - > nNameLen ) )
{
nId = pMap - > nWID ;
break ;
}
2002-07-24 06:15:11 +00:00
}
2001-10-24 17:56:14 +00:00
return ( BYTE ) nId ;
}
USHORT lcl_GetPropertyMapOfService ( USHORT nServiceId )
2000-09-18 23:08:29 +00:00
{
2001-10-24 17:56:14 +00:00
USHORT nRet ;
switch ( nServiceId )
2000-09-18 23:08:29 +00:00
{
2001-10-24 17:56:14 +00:00
case SW_SERVICE_FIELDTYPE_DATETIME : nRet = PROPERTY_MAP_FLDTYP_DATETIME ; break ;
case SW_SERVICE_FIELDTYPE_USER : nRet = PROPERTY_MAP_FLDTYP_USER ; break ;
case SW_SERVICE_FIELDTYPE_SET_EXP : nRet = PROPERTY_MAP_FLDTYP_SET_EXP ; break ;
case SW_SERVICE_FIELDTYPE_GET_EXP : nRet = PROPERTY_MAP_FLDTYP_GET_EXP ; break ;
case SW_SERVICE_FIELDTYPE_FILE_NAME : nRet = PROPERTY_MAP_FLDTYP_FILE_NAME ; break ;
case SW_SERVICE_FIELDTYPE_PAGE_NUM : nRet = PROPERTY_MAP_FLDTYP_PAGE_NUM ; break ;
case SW_SERVICE_FIELDTYPE_AUTHOR : nRet = PROPERTY_MAP_FLDTYP_AUTHOR ; break ;
case SW_SERVICE_FIELDTYPE_CHAPTER : nRet = PROPERTY_MAP_FLDTYP_CHAPTER ; break ;
case SW_SERVICE_FIELDTYPE_GET_REFERENCE : nRet = PROPERTY_MAP_FLDTYP_GET_REFERENCE ; break ;
case SW_SERVICE_FIELDTYPE_CONDITIONED_TEXT : nRet = PROPERTY_MAP_FLDTYP_CONDITIONED_TEXT ; break ;
case SW_SERVICE_FIELDTYPE_ANNOTATION : nRet = PROPERTY_MAP_FLDTYP_ANNOTATION ; break ;
case SW_SERVICE_FIELDTYPE_INPUT_USER :
case SW_SERVICE_FIELDTYPE_INPUT : nRet = PROPERTY_MAP_FLDTYP_INPUT ; break ;
case SW_SERVICE_FIELDTYPE_MACRO : nRet = PROPERTY_MAP_FLDTYP_MACRO ; break ;
case SW_SERVICE_FIELDTYPE_DDE : nRet = PROPERTY_MAP_FLDTYP_DDE ; break ;
case SW_SERVICE_FIELDTYPE_HIDDEN_PARA : nRet = PROPERTY_MAP_FLDTYP_HIDDEN_PARA ; break ;
case SW_SERVICE_FIELDTYPE_DOC_INFO : nRet = PROPERTY_MAP_FLDTYP_DOC_INFO ; break ;
case SW_SERVICE_FIELDTYPE_TEMPLATE_NAME : nRet = PROPERTY_MAP_FLDTYP_TEMPLATE_NAME ; break ;
case SW_SERVICE_FIELDTYPE_USER_EXT : nRet = PROPERTY_MAP_FLDTYP_USER_EXT ; break ;
case SW_SERVICE_FIELDTYPE_REF_PAGE_SET : nRet = PROPERTY_MAP_FLDTYP_REF_PAGE_SET ; break ;
case SW_SERVICE_FIELDTYPE_REF_PAGE_GET : nRet = PROPERTY_MAP_FLDTYP_REF_PAGE_GET ; break ;
case SW_SERVICE_FIELDTYPE_JUMP_EDIT : nRet = PROPERTY_MAP_FLDTYP_JUMP_EDIT ; break ;
case SW_SERVICE_FIELDTYPE_SCRIPT : nRet = PROPERTY_MAP_FLDTYP_SCRIPT ; break ;
case SW_SERVICE_FIELDTYPE_DATABASE_NEXT_SET : nRet = PROPERTY_MAP_FLDTYP_DATABASE_NEXT_SET ; break ;
case SW_SERVICE_FIELDTYPE_DATABASE_NUM_SET : nRet = PROPERTY_MAP_FLDTYP_DATABASE_NUM_SET ; break ;
case SW_SERVICE_FIELDTYPE_DATABASE_SET_NUM : nRet = PROPERTY_MAP_FLDTYP_DATABASE_SET_NUM ; break ;
case SW_SERVICE_FIELDTYPE_DATABASE : nRet = PROPERTY_MAP_FLDTYP_DATABASE ; break ;
case SW_SERVICE_FIELDTYPE_DATABASE_NAME : nRet = PROPERTY_MAP_FLDTYP_DATABASE_NAME ; break ;
case SW_SERVICE_FIELDTYPE_TABLE_FORMULA : nRet = PROPERTY_MAP_FLDTYP_TABLE_FORMULA ; break ;
case SW_SERVICE_FIELDTYPE_PAGE_COUNT :
case SW_SERVICE_FIELDTYPE_PARAGRAPH_COUNT :
case SW_SERVICE_FIELDTYPE_WORD_COUNT :
case SW_SERVICE_FIELDTYPE_CHARACTER_COUNT :
case SW_SERVICE_FIELDTYPE_TABLE_COUNT :
case SW_SERVICE_FIELDTYPE_GRAPHIC_OBJECT_COUNT :
case SW_SERVICE_FIELDTYPE_EMBEDDED_OBJECT_COUNT : nRet = PROPERTY_MAP_FLDTYP_DOCSTAT ; break ;
case SW_SERVICE_FIELDTYPE_DOCINFO_CHANGE_AUTHOR :
case SW_SERVICE_FIELDTYPE_DOCINFO_CREATE_AUTHOR :
case SW_SERVICE_FIELDTYPE_DOCINFO_PRINT_AUTHOR : nRet = PROPERTY_MAP_FLDTYP_DOCINFO_AUTHOR ; break ;
case SW_SERVICE_FIELDTYPE_DOCINFO_CHANGE_DATE_TIME :
case SW_SERVICE_FIELDTYPE_DOCINFO_CREATE_DATE_TIME :
case SW_SERVICE_FIELDTYPE_DOCINFO_PRINT_DATE_TIME : nRet = PROPERTY_MAP_FLDTYP_DOCINFO_DATE_TIME ; break ;
case SW_SERVICE_FIELDTYPE_DOCINFO_EDIT_TIME : nRet = PROPERTY_MAP_FLDTYP_DOCINFO_EDIT_TIME ; break ;
case SW_SERVICE_FIELDTYPE_DOCINFO_DESCRIPTION :
case SW_SERVICE_FIELDTYPE_DOCINFO_INFO_0 :
case SW_SERVICE_FIELDTYPE_DOCINFO_INFO_1 :
case SW_SERVICE_FIELDTYPE_DOCINFO_INFO_2 :
case SW_SERVICE_FIELDTYPE_DOCINFO_INFO_3 :
case SW_SERVICE_FIELDTYPE_DOCINFO_KEY_WORDS :
case SW_SERVICE_FIELDTYPE_DOCINFO_SUBJECT :
case SW_SERVICE_FIELDTYPE_DOCINFO_TITLE : nRet = PROPERTY_MAP_FLDTYP_DOCINFO_MISC ; break ;
case SW_SERVICE_FIELDTYPE_DOCINFO_REVISION : nRet = PROPERTY_MAP_FLDTYP_DOCINFO_REVISION ; break ;
case SW_SERVICE_FIELDTYPE_BIBLIOGRAPHY : nRet = PROPERTY_MAP_FLDTYP_BIBLIOGRAPHY ; break ;
case SW_SERVICE_FIELDTYPE_DUMMY_0 :
case SW_SERVICE_FIELDTYPE_COMBINED_CHARACTERS : nRet = PROPERTY_MAP_FLDTYP_COMBINED_CHARACTERS ; break ;
2003-06-30 14:52:29 +00:00
case SW_SERVICE_FIELDTYPE_DROPDOWN : nRet = PROPERTY_MAP_FLDTYP_DROPDOWN ; break ;
2001-10-24 17:56:14 +00:00
case SW_SERVICE_FIELDTYPE_DUMMY_4 :
case SW_SERVICE_FIELDTYPE_DUMMY_5 :
case SW_SERVICE_FIELDTYPE_DUMMY_6 :
case SW_SERVICE_FIELDTYPE_DUMMY_7 :
case SW_SERVICE_FIELDTYPE_DUMMY_8 : nRet = PROPERTY_MAP_FLDTYP_DUMMY_0 ; break ;
case SW_SERVICE_FIELDMASTER_USER : nRet = PROPERTY_MAP_FLDMSTR_USER ; break ;
case SW_SERVICE_FIELDMASTER_DDE : nRet = PROPERTY_MAP_FLDMSTR_DDE ; break ;
case SW_SERVICE_FIELDMASTER_SET_EXP : nRet = PROPERTY_MAP_FLDMSTR_SET_EXP ; break ;
case SW_SERVICE_FIELDMASTER_DATABASE : nRet = PROPERTY_MAP_FLDMSTR_DATABASE ; break ;
case SW_SERVICE_FIELDMASTER_BIBLIOGRAPHY : nRet = PROPERTY_MAP_FLDMSTR_BIBLIOGRAPHY ; break ;
case SW_SERVICE_FIELDMASTER_DUMMY2 :
case SW_SERVICE_FIELDMASTER_DUMMY3 :
case SW_SERVICE_FIELDMASTER_DUMMY4 :
case SW_SERVICE_FIELDMASTER_DUMMY5 : nRet = PROPERTY_MAP_FLDMSTR_DUMMY0 ; break ;
case SW_SERVICE_FIELDTYPE_HIDDEN_TEXT : nRet = PROPERTY_MAP_FLDTYP_HIDDEN_TEXT ; break ;
default :
DBG_ERROR ( " wrong service id " ) ;
nRet = USHRT_MAX ;
2000-09-18 23:08:29 +00:00
}
2001-10-24 17:56:14 +00:00
return nRet ;
2000-09-18 23:08:29 +00:00
}
2001-10-24 17:56:14 +00:00
2000-09-18 23:08:29 +00:00
/******************************************************************
* SwXFieldMaster
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
TYPEINIT1 ( SwXFieldMaster , SwClient ) ;
/* -----------------------------13.03.00 12:15--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
const uno : : Sequence < sal_Int8 > & SwXFieldMaster : : getUnoTunnelId ( )
2000-09-18 23:08:29 +00:00
{
static uno : : Sequence < sal_Int8 > aSeq = : : CreateUnoTunnelId ( ) ;
return aSeq ;
}
/* -----------------------------10.03.00 18:04--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
sal_Int64 SAL_CALL SwXFieldMaster : : getSomething ( const uno : : Sequence < sal_Int8 > & rId )
throw ( uno : : RuntimeException )
{
if ( rId . getLength ( ) = = 16
& & 0 = = rtl_compareMemory ( getUnoTunnelId ( ) . getConstArray ( ) ,
rId . getConstArray ( ) , 16 ) )
{
2007-09-27 08:36:28 +00:00
return sal : : static_int_cast < sal_Int64 > ( reinterpret_cast < sal_IntPtr > ( this ) ) ;
2000-09-18 23:08:29 +00:00
}
return 0 ;
}
/* -----------------------------06.04.00 13:22--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
OUString SwXFieldMaster : : getImplementationName ( void ) throw ( uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
return C2U ( " SwXFieldMaster " ) ;
}
/* -----------------------------06.04.00 13:22--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
BOOL SwXFieldMaster : : supportsService ( const OUString & rServiceName ) throw ( uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
2001-04-20 10:05:28 +00:00
sal_Bool bRet = sal_False ;
2001-10-24 17:56:14 +00:00
if ( rServiceName . equalsAsciiL (
RTL_CONSTASCII_STRINGPARAM ( " com.sun.star.text.TextFieldMaster " ) ) )
2001-04-20 10:05:28 +00:00
bRet = sal_True ;
2001-06-18 13:31:32 +00:00
else
{
2001-10-17 06:55:17 +00:00
const sal_Char * pEntry ;
switch ( nResTypeId )
2001-06-18 13:31:32 +00:00
{
2001-10-17 06:55:17 +00:00
case RES_USERFLD : pEntry = " User " ; break ;
case RES_DBFLD : pEntry = " Database " ; break ;
case RES_SETEXPFLD : pEntry = " SetExpression " ; break ;
case RES_DDEFLD : pEntry = " DDE " ; break ;
case RES_AUTHORITY : pEntry = " Bibliography " ; break ;
default : pEntry = 0 ;
}
if ( pEntry )
{
ByteString aTmp ( RTL_CONSTASCII_STRINGPARAM (
" com.sun.star.text.fieldmaster. " ) ) ;
aTmp . Append ( pEntry ) ;
bRet = rServiceName . equalsAsciiL ( aTmp . GetBuffer ( ) , aTmp . Len ( ) ) ;
2001-06-18 13:31:32 +00:00
}
}
2001-04-20 10:05:28 +00:00
return bRet ;
2000-09-18 23:08:29 +00:00
}
/* -----------------------------06.04.00 13:22--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
uno : : Sequence < OUString > SwXFieldMaster : : getSupportedServiceNames ( void ) throw ( uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
2007-06-05 16:32:51 +00:00
uno : : Sequence < OUString > aRet ( 2 ) ;
2000-09-18 23:08:29 +00:00
OUString * pArray = aRet . getArray ( ) ;
2000-10-10 07:49:24 +00:00
pArray [ 0 ] = C2U ( " com.sun.star.text.TextFieldMaster " ) ;
2001-10-17 06:55:17 +00:00
const sal_Char * pEntry1 ;
switch ( nResTypeId )
{
case RES_USERFLD : pEntry1 = " User " ; break ;
case RES_DBFLD : pEntry1 = " Database " ; break ;
case RES_SETEXPFLD : pEntry1 = " SetExpression " ; break ;
case RES_DDEFLD : pEntry1 = " DDE " ; break ;
case RES_AUTHORITY : pEntry1 = " Bibliography " ; break ;
default : pEntry1 = 0 ;
}
if ( pEntry1 )
{
String s ;
s . AppendAscii ( " com.sun.star.text.fieldmaster. " ) . AppendAscii ( pEntry1 ) ;
pArray [ 1 ] = s ;
}
2000-09-18 23:08:29 +00:00
return aRet ;
}
/*-- 14.12.98 11:08:33---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
SwXFieldMaster : : SwXFieldMaster ( SwDoc * pDoc , sal_uInt16 nResId ) :
aLstnrCntnr ( ( XPropertySet * ) this ) ,
nResTypeId ( nResId ) ,
2007-09-27 08:36:28 +00:00
m_pDoc ( pDoc ) ,
2000-09-18 23:08:29 +00:00
m_bIsDescriptor ( sal_True ) ,
fParam1 ( 0. ) ,
2001-02-21 11:45:25 +00:00
nParam1 ( - 1 ) ,
2007-09-27 08:36:28 +00:00
bParam1 ( FALSE ) ,
2001-02-21 11:45:25 +00:00
nParam2 ( 0 )
2000-09-18 23:08:29 +00:00
{
2001-03-30 13:15:27 +00:00
pDoc - > GetPageDescFromPool ( RES_POOLPAGE_STANDARD ) - > Add ( this ) ;
2000-09-18 23:08:29 +00:00
}
/*-- 14.12.98 11:08:33---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
SwXFieldMaster : : SwXFieldMaster ( SwFieldType & rType , SwDoc * pDoc ) :
SwClient ( & rType ) ,
aLstnrCntnr ( ( XPropertySet * ) this ) ,
nResTypeId ( rType . Which ( ) ) ,
2007-09-27 08:36:28 +00:00
m_pDoc ( pDoc ) ,
2000-09-18 23:08:29 +00:00
m_bIsDescriptor ( sal_False ) ,
fParam1 ( 0. ) ,
nParam1 ( - 1 ) ,
bParam1 ( FALSE )
{
}
/*-- 14.12.98 11:08:34---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
SwXFieldMaster : : ~ SwXFieldMaster ( )
{
}
/*-- 14.12.98 11:08:35---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
uno : : Reference < beans : : XPropertySetInfo > SwXFieldMaster : : getPropertySetInfo ( void )
2000-09-18 23:08:29 +00:00
throw ( uno : : RuntimeException )
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
2007-06-05 16:32:51 +00:00
uno : : Reference < beans : : XPropertySetInfo > aRef = new SfxItemPropertySetInfo (
2001-10-24 17:56:14 +00:00
aSwMapProvider . GetPropertyMap (
lcl_GetPropMapIdForFieldType ( nResTypeId ) ) ) ;
2000-09-18 23:08:29 +00:00
return aRef ;
}
/*-- 14.12.98 11:08:35---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2001-10-24 17:56:14 +00:00
void SwXFieldMaster : : setPropertyValue ( const OUString & rPropertyName ,
const uno : : Any & rValue )
2007-06-05 16:32:51 +00:00
throw ( beans : : UnknownPropertyException , beans : : PropertyVetoException ,
lang : : IllegalArgumentException , lang : : WrappedTargetException , uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
2001-03-30 13:15:27 +00:00
SwFieldType * pType = GetFldType ( sal_True ) ;
2000-09-18 23:08:29 +00:00
if ( pType )
{
sal_Bool bSetValue = sal_True ;
2001-06-13 10:54:27 +00:00
if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_SUB_TYPE ) ) )
2000-09-18 23:08:29 +00:00
{
2001-07-20 09:22:01 +00:00
const SvStringsDtor & rExtraArr = SwStyleNameMapper : : GetExtraUINameArray ( ) ;
2000-09-18 23:08:29 +00:00
String sTypeName = pType - > GetName ( ) ;
static sal_uInt16 nIds [ ] =
{
RES_POOLCOLL_LABEL_DRAWING - RES_POOLCOLL_EXTRA_BEGIN ,
RES_POOLCOLL_LABEL_ABB - RES_POOLCOLL_EXTRA_BEGIN ,
RES_POOLCOLL_LABEL_TABLE - RES_POOLCOLL_EXTRA_BEGIN ,
RES_POOLCOLL_LABEL_FRAME - RES_POOLCOLL_EXTRA_BEGIN ,
0
} ;
for ( const sal_uInt16 * pIds = nIds ; * pIds ; + + pIds )
{
if ( sTypeName = = * rExtraArr [ * pIds ] )
{
bSetValue = sal_False ;
break ;
}
}
}
2001-10-24 17:56:14 +00:00
if ( bSetValue )
{
2004-08-02 13:19:37 +00:00
// nothing special to be done here for the properties
2005-03-08 10:16:17 +00:00
// UNO_NAME_DATA_BASE_NAME and UNO_NAME_DATA_BASE_URL.
2004-08-02 13:19:37 +00:00
// We just call PutValue (empty string is allowed).
// Thus the last property set will be used as Data Source.
2001-10-24 17:56:14 +00:00
BYTE nMId = GetFieldTypeMId ( rPropertyName , * pType ) ;
if ( UCHAR_MAX ! = nMId )
pType - > PutValue ( rValue , nMId ) ;
2002-07-24 06:15:11 +00:00
else
2007-06-05 16:32:51 +00:00
throw beans : : UnknownPropertyException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( " Unknown property: " ) ) + rPropertyName , static_cast < cppu : : OWeakObject * > ( this ) ) ;
2001-10-24 17:56:14 +00:00
}
2000-09-18 23:08:29 +00:00
}
else if ( ! pType & & m_pDoc & &
2001-06-13 10:54:27 +00:00
( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_NAME ) ) ) )
2000-09-18 23:08:29 +00:00
{
OUString uTmp ;
2001-10-24 17:56:14 +00:00
rValue > > = uTmp ;
2000-09-18 23:08:29 +00:00
String sTypeName ( uTmp ) ;
2007-09-27 08:36:28 +00:00
SwFieldType * pType2 = m_pDoc - > GetFldType ( nResTypeId , sTypeName , sal_False ) ;
2002-09-10 12:52:20 +00:00
String sTable ( SW_RES ( STR_POOLCOLL_LABEL_TABLE ) ) ;
String sDrawing ( SW_RES ( STR_POOLCOLL_LABEL_DRAWING ) ) ;
String sFrame ( SW_RES ( STR_POOLCOLL_LABEL_FRAME ) ) ;
String sIllustration ( SW_RES ( STR_POOLCOLL_LABEL_ABB ) ) ;
2007-09-27 08:36:28 +00:00
if ( pType2 | |
2002-09-10 12:52:20 +00:00
( RES_SETEXPFLD = = nResTypeId & &
( sTypeName = = sTable | | sTypeName = = sDrawing | |
sTypeName = = sFrame | | sTypeName = = sIllustration ) ) )
2000-09-18 23:08:29 +00:00
{
2007-06-05 16:32:51 +00:00
throw lang : : IllegalArgumentException ( ) ;
2000-09-18 23:08:29 +00:00
}
else
{
switch ( nResTypeId )
{
case RES_USERFLD :
{
SwUserFieldType aType ( m_pDoc , sTypeName ) ;
2007-09-27 08:36:28 +00:00
pType2 = m_pDoc - > InsertFldType ( aType ) ;
( ( SwUserFieldType * ) pType2 ) - > SetContent ( sParam1 ) ;
( ( SwUserFieldType * ) pType2 ) - > SetValue ( fParam1 ) ;
( ( SwUserFieldType * ) pType2 ) - > SetType ( bParam1 ? nsSwGetSetExpType : : GSE_EXPR : nsSwGetSetExpType : : GSE_STRING ) ;
2000-09-18 23:08:29 +00:00
}
break ;
case RES_DDEFLD :
{
SwDDEFieldType aType ( sTypeName , sParam1 ,
2007-09-27 08:36:28 +00:00
sal : : static_int_cast < USHORT > ( bParam1 ? sfx2 : : LINKUPDATE_ALWAYS : sfx2 : : LINKUPDATE_ONCALL ) ) ;
pType2 = m_pDoc - > InsertFldType ( aType ) ;
2000-09-18 23:08:29 +00:00
}
break ;
case RES_SETEXPFLD :
{
SwSetExpFieldType aType ( m_pDoc , sTypeName ) ;
if ( sParam1 . Len ( ) )
aType . SetDelimiter ( sParam1 . GetChar ( 0 ) ) ;
if ( nParam1 > - 1 & & nParam1 < MAXLEVEL )
aType . SetOutlineLvl ( nParam1 ) ;
2007-09-27 08:36:28 +00:00
pType2 = m_pDoc - > InsertFldType ( aType ) ;
2000-09-18 23:08:29 +00:00
}
break ;
2007-07-18 11:56:44 +00:00
case RES_DBFLD :
{
: : GetString ( rValue , sParam3 ) ;
pType = GetFldType ( ) ;
}
break ;
2000-09-18 23:08:29 +00:00
}
2007-09-27 08:36:28 +00:00
if ( pType2 )
2001-04-17 14:57:57 +00:00
{
2007-09-27 08:36:28 +00:00
pType2 - > Add ( this ) ;
2001-04-17 14:57:57 +00:00
m_bIsDescriptor = sal_False ;
}
2000-09-18 23:08:29 +00:00
else
throw uno : : RuntimeException ( ) ;
}
2007-09-27 08:36:28 +00:00
DBG_ASSERT ( pType2 , " kein FieldType gefunden! " ) ;
2000-09-18 23:08:29 +00:00
}
else
{
2001-10-24 17:56:14 +00:00
switch ( nResTypeId )
2000-09-18 23:08:29 +00:00
{
2001-10-24 17:56:14 +00:00
case RES_USERFLD :
2001-06-13 10:54:27 +00:00
if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_CONTENT ) ) )
2001-10-24 17:56:14 +00:00
: : GetString ( rValue , sParam1 ) ;
2001-06-13 10:54:27 +00:00
else if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_VALUE ) ) )
2000-09-18 23:08:29 +00:00
{
2007-06-05 16:32:51 +00:00
if ( rValue . getValueType ( ) ! = : : getCppuType ( static_cast < const double * > ( 0 ) ) )
throw lang : : IllegalArgumentException ( ) ;
2001-10-24 17:56:14 +00:00
fParam1 = * ( double * ) rValue . getValue ( ) ;
2000-09-18 23:08:29 +00:00
}
2001-06-13 10:54:27 +00:00
else if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_IS_EXPRESSION ) ) )
2000-09-18 23:08:29 +00:00
{
2001-10-24 17:56:14 +00:00
if ( rValue . getValueType ( ) ! = : : getBooleanCppuType ( ) )
2007-06-05 16:32:51 +00:00
throw lang : : IllegalArgumentException ( ) ;
2001-10-24 17:56:14 +00:00
bParam1 = * ( sal_Bool * ) rValue . getValue ( ) ;
2000-09-18 23:08:29 +00:00
}
2007-03-09 12:15:38 +00:00
2001-10-24 17:56:14 +00:00
break ;
case RES_DBFLD :
2001-06-13 10:54:27 +00:00
if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_BASE_NAME ) ) )
2001-10-24 17:56:14 +00:00
: : GetString ( rValue , sParam1 ) ;
2001-06-13 10:54:27 +00:00
else if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_TABLE_NAME ) ) )
2001-10-24 17:56:14 +00:00
: : GetString ( rValue , sParam2 ) ;
2001-06-13 10:54:27 +00:00
else if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_COLUMN_NAME ) ) )
2001-10-24 17:56:14 +00:00
: : GetString ( rValue , sParam3 ) ;
2001-06-13 10:54:27 +00:00
else if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_COMMAND_TYPE ) ) )
2001-10-24 17:56:14 +00:00
rValue > > = nParam2 ;
2004-08-02 13:19:37 +00:00
if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_BASE_URL ) ) )
: : GetString ( rValue , sParam5 ) ;
2001-03-30 13:15:27 +00:00
2005-03-08 10:16:17 +00:00
if ( ( sParam1 . Len ( ) | | sParam5 . Len ( ) )
2004-08-02 13:19:37 +00:00
& & sParam2 . Len ( ) & & sParam3 . Len ( ) )
2001-03-30 13:15:27 +00:00
GetFldType ( ) ;
2001-10-24 17:56:14 +00:00
break ;
case RES_SETEXPFLD :
2001-06-13 10:54:27 +00:00
if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_NUMBERING_SEPARATOR ) ) )
2001-10-24 17:56:14 +00:00
: : GetString ( rValue , sParam1 ) ;
2001-06-13 10:54:27 +00:00
else if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_CHAPTER_NUMBERING_LEVEL ) ) )
2001-10-24 17:56:14 +00:00
rValue > > = nParam1 ;
break ;
case RES_DDEFLD :
2000-09-18 23:08:29 +00:00
{
2001-10-24 17:56:14 +00:00
USHORT nPart = rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DDE_COMMAND_TYPE ) ) ? 0 :
rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DDE_COMMAND_FILE ) ) ? 1 :
rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DDE_COMMAND_ELEMENT ) ) ? 2 :
rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_IS_AUTOMATIC_UPDATE ) ) ? 3 : USHRT_MAX ;
if ( nPart < 3 )
2000-09-18 23:08:29 +00:00
{
2001-10-24 17:56:14 +00:00
String sTmp ;
if ( ! sParam1 . Len ( ) )
2004-10-04 18:13:25 +00:00
( sParam1 = sfx2 : : cTokenSeperator )
+ = sfx2 : : cTokenSeperator ;
2001-10-24 17:56:14 +00:00
2004-10-04 18:13:25 +00:00
sParam1 . SetToken ( nPart , sfx2 : : cTokenSeperator ,
2001-10-24 17:56:14 +00:00
: : GetString ( rValue , sTmp ) ) ;
2000-09-18 23:08:29 +00:00
}
2001-10-24 17:56:14 +00:00
else if ( 3 = = nPart )
bParam1 = * ( sal_Bool * ) rValue . getValue ( ) ;
2000-09-18 23:08:29 +00:00
}
2001-10-24 17:56:14 +00:00
break ;
default :
2007-06-05 16:32:51 +00:00
throw beans : : UnknownPropertyException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( " Unknown property: " ) ) + rPropertyName , static_cast < cppu : : OWeakObject * > ( this ) ) ;
2001-10-24 17:56:14 +00:00
}
2000-09-18 23:08:29 +00:00
}
}
2001-03-30 13:15:27 +00:00
/* -----------------------------30.03.01 14:40--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
SwFieldType * SwXFieldMaster : : GetFldType ( sal_Bool bDontCreate ) const
{
if ( ! bDontCreate & & RES_DBFLD = = nResTypeId & & m_bIsDescriptor & & m_pDoc )
{
SwDBData aData ;
2004-08-02 13:19:37 +00:00
// set DataSource
svx : : ODataAccessDescriptor aAcc ;
if ( sParam1 . Len ( ) > 0 )
aAcc [ svx : : daDataSource ] < < = OUString ( sParam1 ) ; // DataBaseName
else if ( sParam5 . Len ( ) > 0 )
aAcc [ svx : : daDatabaseLocation ] < < = OUString ( sParam5 ) ; // DataBaseURL
2005-03-08 10:16:17 +00:00
aData . sDataSource = aAcc . getDataSource ( ) ;
2004-08-02 13:19:37 +00:00
2001-03-30 13:15:27 +00:00
aData . sCommand = sParam2 ;
aData . nCommandType = nParam2 ;
SwDBFieldType aType ( m_pDoc , sParam3 , aData ) ;
SwFieldType * pType = m_pDoc - > InsertFldType ( aType ) ;
SwXFieldMaster * pThis = ( ( SwXFieldMaster * ) this ) ;
pType - > Add ( pThis ) ;
pThis - > m_bIsDescriptor = sal_False ;
}
if ( m_bIsDescriptor )
return 0 ;
else
return ( SwFieldType * ) GetRegisteredIn ( ) ;
}
2000-09-18 23:08:29 +00:00
/*-- 14.12.98 11:08:36---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
typedef SwFmtFld * SwFmtFldPtr ;
SV_DECL_PTRARR ( SwDependentFields , SwFmtFldPtr , 5 , 5 )
SV_IMPL_PTRARR ( SwDependentFields , SwFmtFldPtr )
uno : : Any SwXFieldMaster : : getPropertyValue ( const OUString & rPropertyName )
2007-06-05 16:32:51 +00:00
throw ( beans : : UnknownPropertyException , lang : : WrappedTargetException , uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
uno : : Any aRet ;
2001-03-30 13:15:27 +00:00
SwFieldType * pType = GetFldType ( sal_True ) ;
2001-07-12 10:05:32 +00:00
if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_INSTANCE_NAME ) ) )
{
String sName ;
if ( pType )
SwXTextFieldMasters : : getInstanceName ( * pType , sName ) ;
2001-10-24 17:56:14 +00:00
aRet < < = OUString ( sName ) ;
2001-07-12 10:05:32 +00:00
}
else if ( pType )
2000-09-18 23:08:29 +00:00
{
2001-10-24 17:56:14 +00:00
if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_NAME ) ) )
2000-11-07 08:58:56 +00:00
{
2001-10-24 17:56:14 +00:00
aRet < < = SwXFieldMaster : : GetProgrammaticName ( * pType , * GetDoc ( ) ) ;
2000-11-07 08:58:56 +00:00
}
2001-06-13 10:54:27 +00:00
else if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DEPENDENT_TEXT_FIELDS ) ) )
2000-09-18 23:08:29 +00:00
{
//fill all text fields into a sequence
SwClientIter aIter ( * pType ) ;
SwDependentFields aFldArr ;
SwFmtFldPtr pFld = ( SwFmtFld * ) aIter . First ( TYPE ( SwFmtFld ) ) ;
while ( pFld )
{
if ( pFld - > IsFldInDoc ( ) )
aFldArr . Insert ( pFld , aFldArr . Count ( ) ) ;
pFld = ( SwFmtFld * ) aIter . Next ( ) ;
}
2007-06-05 16:32:51 +00:00
uno : : Sequence < uno : : Reference < text : : XDependentTextField > > aRetSeq ( aFldArr . Count ( ) ) ;
uno : : Reference < text : : XDependentTextField > * pRetSeq = aRetSeq . getArray ( ) ;
2000-09-18 23:08:29 +00:00
SwXTextField * pInsert = 0 ;
2007-09-27 08:36:28 +00:00
for ( USHORT i = 0 ; i < aFldArr . Count ( ) ; i + + )
2000-09-18 23:08:29 +00:00
{
pFld = aFldArr . GetObject ( i ) ;
SwXTextField * pTemp = ( SwXTextField * ) aIter . First ( TYPE ( SwXTextField ) ) ;
while ( pTemp )
{
if ( pTemp - > GetFldFmt ( ) = = pFld )
{
pInsert = pTemp ;
break ;
}
pTemp = ( SwXTextField * ) aIter . Next ( ) ;
}
if ( ! pInsert )
pInsert = new SwXTextField ( * pFld , GetDoc ( ) ) ;
2007-06-05 16:32:51 +00:00
pRetSeq [ i ] = uno : : Reference < text : : XDependentTextField > ( pInsert ) ;
2000-09-18 23:08:29 +00:00
pInsert = 0 ;
}
aRet < < = aRetSeq ;
}
else if ( pType )
2001-10-24 17:56:14 +00:00
{
//TODO: Properties fuer die uebrigen Feldtypen einbauen
BYTE nMId = GetFieldTypeMId ( rPropertyName , * pType ) ;
if ( UCHAR_MAX ! = nMId )
2004-08-02 13:19:37 +00:00
{
2001-10-24 17:56:14 +00:00
pType - > QueryValue ( aRet , nMId ) ;
2004-08-02 13:19:37 +00:00
if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_BASE_NAME ) ) | |
2005-03-08 10:16:17 +00:00
rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_BASE_URL ) ) )
2004-08-02 13:19:37 +00:00
{
OUString aDataSource ;
aRet > > = aDataSource ;
aRet < < = OUString ( ) ;
OUString * pStr = 0 ; // only one of this properties will return
// a non-empty string.
2005-03-08 10:16:17 +00:00
INetURLObject aObj ;
aObj . SetURL ( aDataSource ) ;
BOOL bIsURL = aObj . GetProtocol ( ) ! = INET_PROT_NOT_VALID ;
if ( bIsURL & & rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_BASE_URL ) ) )
pStr = & aDataSource ; // DataBaseURL
else if ( ! bIsURL & & rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_BASE_NAME ) ) )
pStr = & aDataSource ; // DataBaseName
2004-08-02 13:19:37 +00:00
if ( pStr )
aRet < < = * pStr ;
}
}
2002-07-24 06:15:11 +00:00
else
2007-06-05 16:32:51 +00:00
throw beans : : UnknownPropertyException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( " Unknown property: " ) ) + rPropertyName , static_cast < cppu : : OWeakObject * > ( this ) ) ;
2000-09-18 23:08:29 +00:00
}
2001-02-21 11:45:25 +00:00
else
{
2001-06-13 10:54:27 +00:00
if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_COMMAND_TYPE ) ) )
2001-02-21 11:45:25 +00:00
aRet < < = nParam2 ;
}
2000-09-18 23:08:29 +00:00
}
else
2001-03-01 11:19:46 +00:00
{
2001-06-13 10:54:27 +00:00
if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_COMMAND_TYPE ) ) )
2001-03-01 11:19:46 +00:00
aRet < < = nParam2 ;
2001-07-12 10:05:32 +00:00
else if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DEPENDENT_TEXT_FIELDS ) ) )
{
2007-06-05 16:32:51 +00:00
uno : : Sequence < uno : : Reference < text : : XDependentTextField > > aRetSeq ( 0 ) ;
2001-07-12 10:05:32 +00:00
aRet < < = aRetSeq ;
}
2001-10-24 17:56:14 +00:00
else
2001-03-01 11:19:46 +00:00
{
2001-10-24 17:56:14 +00:00
const String * pStr = 0 ;
String sStr ;
switch ( nResTypeId )
{
case RES_USERFLD :
if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_CONTENT ) ) )
pStr = & sParam1 ;
else if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_VALUE ) ) )
aRet < < = fParam1 ;
else if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_IS_EXPRESSION ) ) )
aRet . setValue ( & bParam1 , : : getBooleanCppuType ( ) ) ;
break ;
case RES_DBFLD :
2004-08-02 13:19:37 +00:00
if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_BASE_NAME ) ) | |
2005-03-08 10:16:17 +00:00
rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_BASE_URL ) ) )
2004-08-02 13:19:37 +00:00
{
pStr = 0 ; // only one of this properties will return
// a non-empty string.
2005-03-08 10:16:17 +00:00
INetURLObject aObj ;
aObj . SetURL ( sParam5 ) ; // SetSmartURL
BOOL bIsURL = aObj . GetProtocol ( ) ! = INET_PROT_NOT_VALID ;
if ( bIsURL & & rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_BASE_URL ) ) )
pStr = & sParam5 ; // DataBaseURL
else if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_BASE_NAME ) ) )
2004-08-02 13:19:37 +00:00
pStr = & sParam1 ; // DataBaseName
}
2001-10-24 17:56:14 +00:00
else if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_TABLE_NAME ) ) )
pStr = & sParam2 ;
else if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_COLUMN_NAME ) ) )
pStr = & sParam3 ;
break ;
case RES_SETEXPFLD :
if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_NUMBERING_SEPARATOR ) ) )
pStr = & sParam1 ;
else if ( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_CHAPTER_NUMBERING_LEVEL ) ) )
aRet < < = nParam1 ;
break ;
case RES_DDEFLD :
{
USHORT nPart = rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DDE_COMMAND_TYPE ) ) ? 0 :
rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DDE_COMMAND_FILE ) ) ? 1 :
rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DDE_COMMAND_ELEMENT ) ) ? 2 :
rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_IS_AUTOMATIC_UPDATE ) ) ? 3 : USHRT_MAX ;
if ( nPart < 3 )
2004-10-04 18:13:25 +00:00
pStr = & ( sStr = sParam1 . GetToken ( nPart , sfx2 : : cTokenSeperator ) ) ;
2001-10-24 17:56:14 +00:00
else if ( 3 = = nPart )
aRet . setValue ( & bParam1 , : : getBooleanCppuType ( ) ) ;
}
break ;
default :
2007-06-05 16:32:51 +00:00
throw beans : : UnknownPropertyException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( " Unknown property: " ) ) + rPropertyName , static_cast < cppu : : OWeakObject * > ( this ) ) ;
2001-03-01 11:19:46 +00:00
}
2001-10-24 17:56:14 +00:00
if ( pStr )
aRet < < = OUString ( * pStr ) ;
2001-03-01 11:19:46 +00:00
}
}
2000-09-18 23:08:29 +00:00
return aRet ;
}
/*-- 14.12.98 11:08:36---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-09-27 08:36:28 +00:00
void SwXFieldMaster : : addPropertyChangeListener ( const OUString & /*PropertyName*/ , const uno : : Reference < beans : : XPropertyChangeListener > & /*aListener*/ ) throw ( beans : : UnknownPropertyException , lang : : WrappedTargetException , uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
DBG_WARNING ( " not implemented " )
}
/*-- 14.12.98 11:08:36---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-09-27 08:36:28 +00:00
void SwXFieldMaster : : removePropertyChangeListener ( const OUString & /*PropertyName*/ , const uno : : Reference < beans : : XPropertyChangeListener > & /*aListener*/ ) throw ( beans : : UnknownPropertyException , lang : : WrappedTargetException , uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
DBG_WARNING ( " not implemented " )
}
/*-- 14.12.98 11:08:37---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-09-27 08:36:28 +00:00
void SwXFieldMaster : : addVetoableChangeListener ( const OUString & /*PropertyName*/ , const uno : : Reference < beans : : XVetoableChangeListener > & /*aListener*/ ) throw ( beans : : UnknownPropertyException , lang : : WrappedTargetException , uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
DBG_WARNING ( " not implemented " )
}
/*-- 14.12.98 11:08:37---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-09-27 08:36:28 +00:00
void SwXFieldMaster : : removeVetoableChangeListener ( const OUString & /*PropertyName*/ , const uno : : Reference < beans : : XVetoableChangeListener > & /*aListener*/ ) throw ( beans : : UnknownPropertyException , lang : : WrappedTargetException , uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
DBG_WARNING ( " not implemented " )
}
/*-- 25.02.99 11:01:57---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
void SwXFieldMaster : : dispose ( void ) throw ( uno : : RuntimeException )
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
2001-03-30 13:15:27 +00:00
SwFieldType * pFldType = GetFldType ( sal_True ) ;
2000-09-18 23:08:29 +00:00
if ( pFldType )
{
sal_uInt16 nTypeIdx = USHRT_MAX ;
const SwFldTypes * pTypes = GetDoc ( ) - > GetFldTypes ( ) ;
for ( sal_uInt16 i = 0 ; i < pTypes - > Count ( ) ; i + + )
{
if ( ( * pTypes ) [ i ] = = pFldType )
nTypeIdx = i ;
}
// zuerst alle Felder loeschen
SwClientIter aIter ( * pFldType ) ;
SwFmtFld * pFld = ( SwFmtFld * ) aIter . First ( TYPE ( SwFmtFld ) ) ;
while ( pFld )
{
// Feld im Undo?
SwTxtFld * pTxtFld = pFld - > GetTxtFld ( ) ;
if ( pTxtFld & & pTxtFld - > GetTxtNode ( ) . GetNodes ( ) . IsDocNodes ( ) )
{
SwTxtNode & rTxtNode = ( SwTxtNode & ) * pTxtFld - > GetpTxtNode ( ) ;
SwPaM aPam ( rTxtNode , * pTxtFld - > GetStart ( ) ) ;
aPam . SetMark ( ) ;
aPam . Move ( ) ;
GetDoc ( ) - > DeleteAndJoin ( aPam ) ;
}
pFld = ( SwFmtFld * ) aIter . Next ( ) ;
}
// dann den FieldType loeschen
GetDoc ( ) - > RemoveFldType ( nTypeIdx ) ;
}
else
throw uno : : RuntimeException ( ) ;
}
/*-- 25.02.99 11:02:00---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
void SwXFieldMaster : : addEventListener ( const uno : : Reference < lang : : XEventListener > & aListener )
2000-09-18 23:08:29 +00:00
throw ( uno : : RuntimeException )
{
if ( ! GetRegisteredIn ( ) )
throw uno : : RuntimeException ( ) ;
aLstnrCntnr . AddListener ( aListener ) ;
}
/*-- 25.02.99 11:02:02---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
void SwXFieldMaster : : removeEventListener ( const uno : : Reference < lang : : XEventListener > & aListener )
2000-09-18 23:08:29 +00:00
throw ( uno : : RuntimeException )
{
if ( ! GetRegisteredIn ( ) | | ! aLstnrCntnr . RemoveListener ( aListener ) )
throw uno : : RuntimeException ( ) ;
}
/*-- 14.12.98 11:08:38---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
void SwXFieldMaster : : Modify ( SfxPoolItem * pOld , SfxPoolItem * pNew )
{
ClientModify ( this , pOld , pNew ) ;
if ( ! GetRegisteredIn ( ) )
{
aLstnrCntnr . Disposing ( ) ;
m_pDoc = 0 ;
}
}
2000-11-07 08:58:56 +00:00
/* -----------------------------06.11.00 09:44--------------------------------
const Programmatic2UIName_Impl * lcl_GetFieldNameTable ( )
{
static BOOL bInitialized = FALSE ;
static Programmatic2UIName_Impl aFieldNames [ 5 ] ;
if ( ! bInitialized )
{
bInitialized = TRUE ;
int nName = 0 ;
aFieldNames [ nName ] . sUIName = String ( SW_RES ( STR_POOLCOLL_LABEL_ABB ) ) ;
aFieldNames [ nName + + ] . sProgrammaticName = String ( SW_RES ( STR_POCO_PRGM_LABEL_ABB ) ) ;
aFieldNames [ nName ] . sUIName = String ( SW_RES ( STR_POOLCOLL_LABEL_TABLE ) ) ;
aFieldNames [ nName + + ] . sProgrammaticName = String ( SW_RES ( STR_POCO_PRGM_LABEL_TABLE ) ) ;
aFieldNames [ nName ] . sUIName = String ( SW_RES ( STR_POOLCOLL_LABEL_FRAME ) ) ;
aFieldNames [ nName + + ] . sProgrammaticName = String ( SW_RES ( STR_POCO_PRGM_LABEL_FRAME ) ) ;
aFieldNames [ nName ] . sUIName = String ( SW_RES ( STR_POOLCOLL_LABEL_DRAWING ) ) ;
aFieldNames [ nName + + ] . sProgrammaticName = String ( SW_RES ( STR_POCO_PRGM_LABEL_DRAWING ) ) ;
}
return & aFieldNames [ 0 ] ;
}
2001-07-20 09:22:01 +00:00
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2000-11-07 08:58:56 +00:00
/* -----------------------------06.11.00 10:26--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
OUString SwXFieldMaster : : GetProgrammaticName ( const SwFieldType & rType , SwDoc & rDoc )
{
OUString sRet ( rType . GetName ( ) ) ;
if ( RES_SETEXPFLD = = rType . Which ( ) )
{
const SwFldTypes * pTypes = rDoc . GetFldTypes ( ) ;
for ( sal_uInt16 i = 0 ; i < = INIT_FLDTYPES ; i + + )
{
if ( ( * pTypes ) [ i ] = = & rType )
{
2007-09-27 08:36:28 +00:00
sRet = SwStyleNameMapper : : GetProgName ( sRet , nsSwGetPoolIdFromName : : GET_POOLID_TXTCOLL ) ;
2000-11-07 08:58:56 +00:00
break ;
}
}
}
return sRet ;
}
/* -----------------------------06.11.00 14:12--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
OUString SwXFieldMaster : : LocalizeFormula (
const SwSetExpField & rFld ,
const OUString & rFormula ,
sal_Bool bQuery )
{
2001-07-20 09:22:01 +00:00
const OUString sTypeName ( rFld . GetTyp ( ) - > GetName ( ) ) ;
2007-09-27 08:36:28 +00:00
OUString sProgName = SwStyleNameMapper : : GetProgName ( sTypeName , nsSwGetPoolIdFromName : : GET_POOLID_TXTCOLL ) ;
2000-11-07 08:58:56 +00:00
if ( sProgName ! = sTypeName )
{
OUString sSource = bQuery ? sTypeName : sProgName ;
OUString sDest = bQuery ? sProgName : sTypeName ;
if ( ! rFormula . compareTo ( sSource , sSource . getLength ( ) ) )
{
OUString sTmpFormula = sDest ;
sTmpFormula + = rFormula . copy ( sSource . getLength ( ) ) ;
return sTmpFormula ;
}
}
return rFormula ;
}
2000-09-18 23:08:29 +00:00
/******************************************************************
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct SwFieldProperties_Impl
{
String sPar1 ;
String sPar2 ;
String sPar3 ;
String sPar4 ;
2004-08-02 13:19:37 +00:00
String sPar5 ;
String sPar6 ;
2001-10-24 17:56:14 +00:00
Date aDate ;
double fDouble ;
2007-06-05 16:32:51 +00:00
uno : : Sequence < beans : : PropertyValue > aPropSeq ;
uno : : Sequence < OUString > aStrings ;
2001-10-24 17:56:14 +00:00
util : : DateTime * pDateTime ;
2000-09-18 23:08:29 +00:00
sal_Int32 nSubType ;
sal_Int32 nFormat ;
sal_uInt16 nUSHORT1 ;
sal_uInt16 nUSHORT2 ;
sal_Int16 nSHORT1 ;
sal_Int8 nByte1 ;
2001-10-24 17:56:14 +00:00
sal_Bool bFormatIsDefault ;
2000-09-18 23:08:29 +00:00
sal_Bool bBool1 ;
sal_Bool bBool2 ;
sal_Bool bBool3 ;
2002-11-15 10:17:38 +00:00
sal_Bool bBool4 ;
2000-09-18 23:08:29 +00:00
SwFieldProperties_Impl ( ) :
2007-09-27 08:36:28 +00:00
fDouble ( 0. ) ,
pDateTime ( 0 ) ,
2000-09-18 23:08:29 +00:00
nSubType ( 0 ) ,
nFormat ( 0 ) ,
nUSHORT1 ( 0 ) ,
nUSHORT2 ( 0 ) ,
nSHORT1 ( 0 ) ,
nByte1 ( 0 ) ,
2007-09-27 08:36:28 +00:00
bFormatIsDefault ( sal_True ) ,
2000-09-18 23:08:29 +00:00
bBool1 ( sal_False ) ,
bBool2 ( sal_False ) ,
2000-11-17 15:24:47 +00:00
bBool3 ( sal_False ) ,
2007-09-27 08:36:28 +00:00
bBool4 ( sal_True ) //Automatic language
2000-09-18 23:08:29 +00:00
{ }
2000-11-17 15:24:47 +00:00
~ SwFieldProperties_Impl ( )
{ delete pDateTime ; }
2000-09-18 23:08:29 +00:00
} ;
TYPEINIT1 ( SwXTextField , SwClient ) ;
/* -----------------------------13.03.00 12:15--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
const uno : : Sequence < sal_Int8 > & SwXTextField : : getUnoTunnelId ( )
2000-09-18 23:08:29 +00:00
{
static uno : : Sequence < sal_Int8 > aSeq = : : CreateUnoTunnelId ( ) ;
return aSeq ;
}
/* -----------------------------10.03.00 18:04--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
sal_Int64 SAL_CALL SwXTextField : : getSomething ( const uno : : Sequence < sal_Int8 > & rId )
throw ( uno : : RuntimeException )
{
if ( rId . getLength ( ) = = 16
& & 0 = = rtl_compareMemory ( getUnoTunnelId ( ) . getConstArray ( ) ,
rId . getConstArray ( ) , 16 ) )
{
2007-09-27 08:36:28 +00:00
return sal : : static_int_cast < sal_Int64 > ( reinterpret_cast < sal_IntPtr > ( this ) ) ;
2000-09-18 23:08:29 +00:00
}
return 0 ;
}
/*-- 14.12.98 11:37:14---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2003-06-30 14:52:29 +00:00
2000-09-18 23:08:29 +00:00
SwXTextField : : SwXTextField ( sal_uInt16 nServiceId ) :
aLstnrCntnr ( ( XTextContent * ) this ) ,
2007-09-27 08:36:28 +00:00
pFmtFld ( 0 ) ,
2000-09-18 23:08:29 +00:00
m_pDoc ( 0 ) ,
m_bIsDescriptor ( nServiceId ! = USHRT_MAX ) ,
2007-09-27 08:36:28 +00:00
m_bCallUpdate ( sal_False ) ,
m_nServiceId ( nServiceId ) ,
m_pProps ( new SwFieldProperties_Impl )
2000-09-18 23:08:29 +00:00
{
//Set visible as default!
2003-04-17 13:43:00 +00:00
if ( SW_SERVICE_FIELDTYPE_SET_EXP = = nServiceId | |
SW_SERVICE_FIELDTYPE_DATABASE_SET_NUM = = nServiceId | |
SW_SERVICE_FIELDTYPE_DATABASE = = nServiceId | |
SW_SERVICE_FIELDTYPE_DATABASE_NAME = = nServiceId )
2000-09-18 23:08:29 +00:00
m_pProps - > bBool2 = sal_True ;
2001-10-17 12:38:26 +00:00
else if ( SW_SERVICE_FIELDTYPE_TABLE_FORMULA = = nServiceId )
m_pProps - > bBool1 = sal_True ;
2007-07-18 11:56:44 +00:00
if ( SW_SERVICE_FIELDTYPE_SET_EXP = = nServiceId )
m_pProps - > nUSHORT2 = USHRT_MAX ;
2001-10-17 12:38:26 +00:00
2000-09-18 23:08:29 +00:00
}
/*-- 14.12.98 11:37:15---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
SwXTextField : : SwXTextField ( const SwFmtFld & rFmt , SwDoc * pDc ) :
aLstnrCntnr ( ( XTextContent * ) this ) ,
2007-09-27 08:36:28 +00:00
pFmtFld ( & rFmt ) ,
2000-09-18 23:08:29 +00:00
m_pDoc ( pDc ) ,
m_bIsDescriptor ( sal_False ) ,
2007-09-27 08:36:28 +00:00
m_bCallUpdate ( sal_False ) ,
m_nServiceId ( lcl_GetServiceForField ( * pFmtFld - > GetFld ( ) ) ) ,
m_pProps ( 0 )
2000-09-18 23:08:29 +00:00
{
2001-11-06 07:37:32 +00:00
pDc - > GetUnoCallBack ( ) - > Add ( this ) ;
2000-09-18 23:08:29 +00:00
}
/*-- 14.12.98 11:37:15---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
SwXTextField : : ~ SwXTextField ( )
{
delete m_pProps ;
}
/*-- 14.12.98 11:37:16---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
void SwXTextField : : attachTextFieldMaster ( const uno : : Reference < beans : : XPropertySet > & xFieldMaster )
throw ( lang : : IllegalArgumentException , uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
if ( ! m_bIsDescriptor )
throw uno : : RuntimeException ( ) ;
2007-06-05 16:32:51 +00:00
uno : : Reference < lang : : XUnoTunnel > xMasterTunnel ( xFieldMaster , uno : : UNO_QUERY ) ;
2003-03-27 14:45:43 +00:00
if ( ! xMasterTunnel . is ( ) )
2007-06-05 16:32:51 +00:00
throw lang : : IllegalArgumentException ( ) ;
2007-09-27 08:36:28 +00:00
SwXFieldMaster * pMaster = reinterpret_cast < SwXFieldMaster * > (
sal : : static_int_cast < sal_IntPtr > ( xMasterTunnel - > getSomething ( SwXFieldMaster : : getUnoTunnelId ( ) ) ) ) ;
2000-09-18 23:08:29 +00:00
SwFieldType * pFieldType = pMaster ? pMaster - > GetFldType ( ) : 0 ;
if ( pFieldType & & pFieldType - > Which ( ) = = lcl_ServiceIdToResId ( m_nServiceId ) )
{
m_sTypeName = pFieldType - > GetName ( ) ;
2007-07-18 11:56:44 +00:00
pFieldType - > Add ( & m_aFieldTypeClient ) ;
2000-09-18 23:08:29 +00:00
}
else
2007-06-05 16:32:51 +00:00
throw lang : : IllegalArgumentException ( ) ;
2000-09-18 23:08:29 +00:00
}
/*-- 14.12.98 11:37:16---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
uno : : Reference < beans : : XPropertySet > SwXTextField : : getTextFieldMaster ( void ) throw ( uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
2007-07-18 11:56:44 +00:00
SwFieldType * pType = 0 ;
if ( m_bIsDescriptor & & m_aFieldTypeClient . GetRegisteredIn ( ) )
{
pType = ( SwFieldType * ) m_aFieldTypeClient . GetRegisteredIn ( ) ;
}
else
{
if ( ! GetRegisteredIn ( ) )
throw uno : : RuntimeException ( ) ;
pType = pFmtFld - > GetFld ( ) - > GetTyp ( ) ;
}
2000-09-18 23:08:29 +00:00
SwXFieldMaster * pMaster = ( SwXFieldMaster * )
SwClientIter ( * pType ) . First ( TYPE ( SwXFieldMaster ) ) ;
if ( ! pMaster )
pMaster = new SwXFieldMaster ( * pType , GetDoc ( ) ) ;
return pMaster ;
}
/*-- 14.12.98 11:37:16---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
OUString SwXTextField : : getPresentation ( sal_Bool bShowCommand ) throw ( uno : : RuntimeException )
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
OUString sRet ;
const SwField * pField = GetField ( ) ;
if ( pField )
sRet = pField - > GetCntnt ( bShowCommand ) ;
else
throw uno : : RuntimeException ( ) ;
return sRet ;
}
/* -----------------18.02.99 13:39-------------------
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
void SwXTextField : : attachToRange (
2007-06-05 16:32:51 +00:00
const uno : : Reference < text : : XTextRange > & xTextRange )
throw ( lang : : IllegalArgumentException , uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
if ( ! m_bIsDescriptor )
throw uno : : RuntimeException ( ) ;
2007-06-05 16:32:51 +00:00
uno : : Reference < lang : : XUnoTunnel > xRangeTunnel ( xTextRange , uno : : UNO_QUERY ) ;
2000-09-18 23:08:29 +00:00
SwXTextRange * pRange = 0 ;
2003-04-01 14:33:41 +00:00
OTextCursorHelper * pCursor = 0 ;
2000-09-18 23:08:29 +00:00
if ( xRangeTunnel . is ( ) )
{
2007-09-27 08:36:28 +00:00
pRange = reinterpret_cast < SwXTextRange * > (
sal : : static_int_cast < sal_IntPtr > ( xRangeTunnel - > getSomething ( SwXTextRange : : getUnoTunnelId ( ) ) ) ) ;
pCursor = reinterpret_cast < OTextCursorHelper * > (
sal : : static_int_cast < sal_IntPtr > ( xRangeTunnel - > getSomething ( OTextCursorHelper : : getUnoTunnelId ( ) ) ) ) ;
2000-09-18 23:08:29 +00:00
}
SwDoc * pDoc = pRange ? ( SwDoc * ) pRange - > GetDoc ( ) : pCursor ? ( SwDoc * ) pCursor - > GetDoc ( ) : 0 ;
//wurde ein FieldMaster attached, dann ist das Dokument schon festgelegt!
if ( pDoc & & ( ! m_pDoc | | m_pDoc = = pDoc ) )
{
SwUnoInternalPaM aPam ( * pDoc ) ;
//das muss jetzt sal_True liefern
SwXTextRange : : XTextRangeToSwPaM ( aPam , xTextRange ) ;
SwField * pFld = 0 ;
switch ( m_nServiceId )
{
case SW_SERVICE_FIELDTYPE_ANNOTATION :
{
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_POSTITFLD ) ;
pFld = new SwPostItField ( ( SwPostItFieldType * ) pFldType ,
m_pProps - > sPar1 , m_pProps - > sPar2 ,
m_pProps - > aDate ) ;
}
break ;
case SW_SERVICE_FIELDTYPE_SCRIPT :
{
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_SCRIPTFLD ) ;
pFld = new SwScriptField ( ( SwScriptFieldType * ) pFldType ,
m_pProps - > sPar1 , m_pProps - > sPar2 ,
m_pProps - > bBool1 ) ;
}
break ;
case SW_SERVICE_FIELDTYPE_DATETIME :
{
sal_uInt16 nSub = 0 ;
if ( m_pProps - > bBool1 )
nSub | = FIXEDFLD ;
if ( m_pProps - > bBool2 )
nSub | = DATEFLD ;
else
nSub | = TIMEFLD ;
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_DATETIMEFLD ) ;
pFld = new SwDateTimeField ( ( SwDateTimeFieldType * ) pFldType ,
nSub , m_pProps - > nFormat ) ;
if ( m_pProps - > fDouble > 0. )
( ( SwDateTimeField * ) pFld ) - > SetValue ( m_pProps - > fDouble ) ;
2000-11-17 15:24:47 +00:00
if ( m_pProps - > pDateTime )
{
2007-06-05 16:32:51 +00:00
uno : : Any aVal ; aVal < < = * m_pProps - > pDateTime ;
2001-10-24 17:56:14 +00:00
pFld - > PutValue ( aVal , FIELD_PROP_DATE_TIME ) ;
2000-11-17 15:24:47 +00:00
}
2000-09-18 23:08:29 +00:00
( ( SwDateTimeField * ) pFld ) - > SetOffset ( m_pProps - > nSubType ) ;
}
break ;
case SW_SERVICE_FIELDTYPE_FILE_NAME :
{
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_FILENAMEFLD ) ;
sal_Int32 nFormat = m_pProps - > nFormat ;
if ( m_pProps - > bBool2 )
nFormat | = FF_FIXED ;
pFld = new SwFileNameField ( ( SwFileNameFieldType * ) pFldType , nFormat ) ;
if ( m_pProps - > sPar3 . Len ( ) )
( ( SwFileNameField * ) pFld ) - > SetExpansion ( m_pProps - > sPar3 ) ;
2007-06-05 16:32:51 +00:00
uno : : Any aFormat ( & m_pProps - > nFormat , : : getCppuType ( & m_pProps - > nFormat ) ) ;
2001-10-24 17:56:14 +00:00
pFld - > PutValue ( aFormat , FIELD_PROP_FORMAT ) ;
2000-09-18 23:08:29 +00:00
}
break ;
case SW_SERVICE_FIELDTYPE_TEMPLATE_NAME :
{
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_TEMPLNAMEFLD ) ;
pFld = new SwTemplNameField ( ( SwTemplNameFieldType * ) pFldType ,
m_pProps - > nFormat ) ;
2007-06-05 16:32:51 +00:00
uno : : Any aFormat ( & m_pProps - > nFormat , : : getCppuType ( & m_pProps - > nFormat ) ) ;
2001-10-24 17:56:14 +00:00
pFld - > PutValue ( aFormat , FIELD_PROP_FORMAT ) ;
2000-09-18 23:08:29 +00:00
}
break ;
case SW_SERVICE_FIELDTYPE_CHAPTER :
{
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_CHAPTERFLD ) ;
pFld = new SwChapterField ( ( SwChapterFieldType * ) pFldType , m_pProps - > nUSHORT1 ) ;
( ( SwChapterField * ) pFld ) - > SetLevel ( m_pProps - > nByte1 ) ;
2007-06-05 16:32:51 +00:00
uno : : Any aVal ; aVal < < = ( sal_Int16 ) m_pProps - > nUSHORT1 ;
2001-10-24 17:56:14 +00:00
pFld - > PutValue ( aVal , FIELD_PROP_USHORT1 ) ;
2000-09-18 23:08:29 +00:00
}
break ;
case SW_SERVICE_FIELDTYPE_AUTHOR :
{
long nFormat = m_pProps - > bBool1 ? AF_NAME : AF_SHORTCUT ;
if ( m_pProps - > bBool2 )
nFormat | = AF_FIXED ;
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_AUTHORFLD ) ;
pFld = new SwAuthorField ( ( SwAuthorFieldType * ) pFldType , nFormat ) ;
( ( SwAuthorField * ) pFld ) - > SetExpansion ( m_pProps - > sPar1 ) ;
}
break ;
case SW_SERVICE_FIELDTYPE_CONDITIONED_TEXT :
case SW_SERVICE_FIELDTYPE_HIDDEN_TEXT :
{
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_HIDDENTXTFLD ) ;
pFld = new SwHiddenTxtField ( ( ( SwHiddenTxtFieldType * ) pFldType ) ,
m_pProps - > sPar1 ,
m_pProps - > sPar2 , m_pProps - > sPar3 ,
2007-09-27 08:36:28 +00:00
static_cast < USHORT > ( SW_SERVICE_FIELDTYPE_HIDDEN_TEXT = = m_nServiceId ?
TYP_HIDDENTXTFLD : TYP_CONDTXTFLD ) ) ;
2001-03-13 09:43:01 +00:00
( ( SwHiddenTxtField * ) pFld ) - > SetValue ( m_pProps - > bBool1 ) ;
2007-06-05 16:32:51 +00:00
uno : : Any aVal ; aVal < < = ( OUString ) m_pProps - > sPar4 ;
2003-08-19 10:57:15 +00:00
pFld - > PutValue ( aVal , FIELD_PROP_PAR4 ) ;
2000-09-18 23:08:29 +00:00
}
break ;
case SW_SERVICE_FIELDTYPE_HIDDEN_PARA :
{
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_HIDDENPARAFLD ) ;
pFld = new SwHiddenParaField ( ( SwHiddenParaFieldType * ) pFldType ,
m_pProps - > sPar1 ) ;
2001-03-13 09:43:01 +00:00
( ( SwHiddenParaField * ) pFld ) - > SetHidden ( m_pProps - > bBool1 ) ;
2000-09-18 23:08:29 +00:00
}
break ;
case SW_SERVICE_FIELDTYPE_GET_REFERENCE :
{
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_GETREFFLD ) ;
pFld = new SwGetRefField ( ( SwGetRefFieldType * ) pFldType ,
m_pProps - > sPar1 ,
0 ,
0 ,
0 ) ;
if ( m_pProps - > sPar3 . Len ( ) )
( ( SwGetRefField * ) pFld ) - > SetExpand ( m_pProps - > sPar3 ) ;
2007-06-05 16:32:51 +00:00
uno : : Any aVal ; aVal < < = ( sal_Int16 ) m_pProps - > nUSHORT1 ;
2001-10-24 17:56:14 +00:00
pFld - > PutValue ( aVal , FIELD_PROP_USHORT1 ) ;
2000-09-18 23:08:29 +00:00
aVal < < = ( sal_Int16 ) m_pProps - > nUSHORT2 ;
2001-10-24 17:56:14 +00:00
pFld - > PutValue ( aVal , FIELD_PROP_USHORT2 ) ;
2000-09-18 23:08:29 +00:00
aVal < < = ( sal_Int16 ) m_pProps - > nSHORT1 ;
2001-10-24 17:56:14 +00:00
pFld - > PutValue ( aVal , FIELD_PROP_SHORT1 ) ;
2000-09-18 23:08:29 +00:00
}
break ;
case SW_SERVICE_FIELDTYPE_JUMP_EDIT :
{
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_JUMPEDITFLD ) ;
pFld = new SwJumpEditField ( ( SwJumpEditFieldType * ) pFldType ,
2001-10-24 17:56:14 +00:00
m_pProps - > nUSHORT1 , m_pProps - > sPar2 , m_pProps - > sPar1 ) ;
2000-09-18 23:08:29 +00:00
}
break ;
case SW_SERVICE_FIELDTYPE_DOCINFO_CHANGE_AUTHOR :
case SW_SERVICE_FIELDTYPE_DOCINFO_CHANGE_DATE_TIME :
case SW_SERVICE_FIELDTYPE_DOCINFO_EDIT_TIME :
case SW_SERVICE_FIELDTYPE_DOCINFO_DESCRIPTION :
case SW_SERVICE_FIELDTYPE_DOCINFO_CREATE_AUTHOR :
case SW_SERVICE_FIELDTYPE_DOCINFO_CREATE_DATE_TIME :
case SW_SERVICE_FIELDTYPE_DOCINFO_INFO_0 :
case SW_SERVICE_FIELDTYPE_DOCINFO_INFO_1 :
case SW_SERVICE_FIELDTYPE_DOCINFO_INFO_2 :
case SW_SERVICE_FIELDTYPE_DOCINFO_INFO_3 :
case SW_SERVICE_FIELDTYPE_DOCINFO_PRINT_AUTHOR :
case SW_SERVICE_FIELDTYPE_DOCINFO_PRINT_DATE_TIME :
case SW_SERVICE_FIELDTYPE_DOCINFO_KEY_WORDS :
case SW_SERVICE_FIELDTYPE_DOCINFO_SUBJECT :
case SW_SERVICE_FIELDTYPE_DOCINFO_TITLE :
case SW_SERVICE_FIELDTYPE_DOCINFO_REVISION :
case SW_SERVICE_FIELDTYPE_DOC_INFO :
{
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_DOCINFOFLD ) ;
sal_uInt16 nSubType = aDocInfoSubTypeFromService [
m_nServiceId - SW_SERVICE_FIELDTYPE_DOCINFO_CHANGE_AUTHOR ] ;
2001-10-24 17:56:14 +00:00
if ( SW_SERVICE_FIELDTYPE_DOCINFO_CHANGE_DATE_TIME = = m_nServiceId | |
SW_SERVICE_FIELDTYPE_DOCINFO_CREATE_DATE_TIME = = m_nServiceId | |
SW_SERVICE_FIELDTYPE_DOCINFO_PRINT_DATE_TIME = = m_nServiceId | |
SW_SERVICE_FIELDTYPE_DOCINFO_EDIT_TIME = = m_nServiceId )
2000-09-18 23:08:29 +00:00
{
2000-12-07 11:06:41 +00:00
if ( m_pProps - > bBool2 ) //IsDate
{
nSubType & = 0xf0ff ;
nSubType | = DI_SUB_DATE ;
}
else
{
nSubType & = 0xf0ff ;
nSubType | = DI_SUB_TIME ;
}
2000-09-18 23:08:29 +00:00
}
if ( m_pProps - > bBool1 )
nSubType | = DI_SUB_FIXED ;
pFld = new SwDocInfoField ( ( SwDocInfoFieldType * ) pFldType , nSubType , m_pProps - > nFormat ) ;
if ( m_pProps - > sPar3 . Len ( ) )
( ( SwDocInfoField * ) pFld ) - > SetExpansion ( m_pProps - > sPar3 ) ;
}
break ;
case SW_SERVICE_FIELDTYPE_USER_EXT :
{
sal_Int32 nFormat = 0 ;
if ( m_pProps - > bBool1 )
nFormat = AF_FIXED ;
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_EXTUSERFLD ) ;
pFld = new SwExtUserField ( ( SwExtUserFieldType * ) pFldType , m_pProps - > nUSHORT1 , nFormat ) ;
( ( SwExtUserField * ) pFld ) - > SetExpansion ( m_pProps - > sPar1 ) ;
}
break ;
case SW_SERVICE_FIELDTYPE_USER :
{
2005-07-18 11:25:55 +00:00
SwFieldType * pFldType = pDoc - > GetFldType ( RES_USERFLD , m_sTypeName , sal_True ) ;
2000-09-18 23:08:29 +00:00
if ( ! pFldType )
throw uno : : RuntimeException ( ) ;
2007-09-27 08:36:28 +00:00
USHORT nUserSubType = m_pProps - > bBool1 ? nsSwExtendedSubType : : SUB_INVISIBLE : 0 ;
2000-09-18 23:08:29 +00:00
if ( m_pProps - > bBool2 )
2007-09-27 08:36:28 +00:00
nUserSubType | = nsSwExtendedSubType : : SUB_CMD ;
2001-10-25 12:23:13 +00:00
if ( m_pProps - > bFormatIsDefault & &
2007-09-27 08:36:28 +00:00
nsSwGetSetExpType : : GSE_STRING = = ( ( SwUserFieldType * ) pFldType ) - > GetType ( ) )
2001-10-25 12:23:13 +00:00
m_pProps - > nFormat = - 1 ;
2000-09-18 23:08:29 +00:00
pFld = new SwUserField ( ( SwUserFieldType * ) pFldType ,
nUserSubType ,
m_pProps - > nFormat ) ;
}
break ;
case SW_SERVICE_FIELDTYPE_REF_PAGE_SET :
{
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_REFPAGESETFLD ) ;
pFld = new SwRefPageSetField ( ( SwRefPageSetFieldType * ) pFldType ,
m_pProps - > nUSHORT1 ,
m_pProps - > bBool1 ) ;
}
break ;
case SW_SERVICE_FIELDTYPE_REF_PAGE_GET :
{
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_REFPAGEGETFLD ) ;
pFld = new SwRefPageGetField ( ( SwRefPageGetFieldType * ) pFldType ,
m_pProps - > nUSHORT1 ) ;
2002-01-18 08:45:31 +00:00
( ( SwRefPageGetField * ) pFld ) - > SetText ( m_pProps - > sPar1 ) ;
2000-09-18 23:08:29 +00:00
}
break ;
case SW_SERVICE_FIELDTYPE_PAGE_NUM :
{
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_PAGENUMBERFLD ) ;
pFld = new SwPageNumberField ( ( SwPageNumberFieldType * ) pFldType ,
PG_RANDOM ,
m_pProps - > nFormat ,
m_pProps - > nUSHORT1 ) ;
( ( SwPageNumberField * ) pFld ) - > SetUserString ( m_pProps - > sPar1 ) ;
2007-06-05 16:32:51 +00:00
uno : : Any aVal ; aVal < < = m_pProps - > nSubType ;
2001-10-24 17:56:14 +00:00
pFld - > PutValue ( aVal , FIELD_PROP_SUBTYPE ) ;
2000-09-18 23:08:29 +00:00
}
break ;
case SW_SERVICE_FIELDTYPE_DDE :
{
2005-07-18 11:25:55 +00:00
SwFieldType * pFldType = pDoc - > GetFldType ( RES_DDEFLD , m_sTypeName , sal_True ) ;
2000-09-18 23:08:29 +00:00
if ( ! pFldType )
throw uno : : RuntimeException ( ) ;
pFld = new SwDDEField ( ( SwDDEFieldType * ) pFldType ) ;
}
break ;
case SW_SERVICE_FIELDTYPE_DATABASE_NAME :
{
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_DBNAMEFLD ) ;
2001-02-21 11:45:25 +00:00
SwDBData aData ;
aData . sDataSource = m_pProps - > sPar1 ;
aData . sCommand = m_pProps - > sPar2 ;
aData . nCommandType = m_pProps - > nSHORT1 ;
pFld = new SwDBNameField ( ( SwDBNameFieldType * ) pFldType , aData ) ;
2003-04-17 13:43:00 +00:00
sal_uInt16 nSubType = pFld - > GetSubType ( ) ;
if ( m_pProps - > bBool2 )
2007-09-27 08:36:28 +00:00
nSubType & = ~ nsSwExtendedSubType : : SUB_INVISIBLE ;
2003-04-17 13:43:00 +00:00
else
2007-09-27 08:36:28 +00:00
nSubType | = nsSwExtendedSubType : : SUB_INVISIBLE ;
2003-04-17 13:43:00 +00:00
pFld - > SetSubType ( nSubType ) ;
2000-09-18 23:08:29 +00:00
}
break ;
case SW_SERVICE_FIELDTYPE_DATABASE_NEXT_SET :
{
2001-02-21 11:45:25 +00:00
SwDBData aData ;
aData . sDataSource = m_pProps - > sPar1 ;
aData . sCommand = m_pProps - > sPar2 ;
aData . nCommandType = m_pProps - > nSHORT1 ;
2000-09-18 23:08:29 +00:00
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_DBNEXTSETFLD ) ;
pFld = new SwDBNextSetField ( ( SwDBNextSetFieldType * ) pFldType ,
m_pProps - > sPar3 , aEmptyStr ,
2001-02-21 11:45:25 +00:00
aData ) ;
2000-09-18 23:08:29 +00:00
}
break ;
case SW_SERVICE_FIELDTYPE_DATABASE_NUM_SET :
{
2001-02-21 11:45:25 +00:00
SwDBData aData ;
aData . sDataSource = m_pProps - > sPar1 ;
aData . sCommand = m_pProps - > sPar2 ;
aData . nCommandType = m_pProps - > nSHORT1 ;
2001-10-31 19:53:42 +00:00
pFld = new SwDBNumSetField ( ( SwDBNumSetFieldType * )
pDoc - > GetSysFldType ( RES_DBNUMSETFLD ) ,
m_pProps - > sPar3 ,
String : : CreateFromInt32 ( m_pProps - > nFormat ) ,
aData ) ;
2000-09-18 23:08:29 +00:00
}
break ;
case SW_SERVICE_FIELDTYPE_DATABASE_SET_NUM :
{
2001-02-21 11:45:25 +00:00
SwDBData aData ;
aData . sDataSource = m_pProps - > sPar1 ;
aData . sCommand = m_pProps - > sPar2 ;
aData . nCommandType = m_pProps - > nSHORT1 ;
2001-10-31 19:53:42 +00:00
pFld = new SwDBSetNumberField ( ( SwDBSetNumberFieldType * )
pDoc - > GetSysFldType ( RES_DBSETNUMBERFLD ) ,
2001-02-21 11:45:25 +00:00
aData ,
2000-09-18 23:08:29 +00:00
m_pProps - > nUSHORT1 ) ;
( ( SwDBSetNumberField * ) pFld ) - > SetSetNumber ( m_pProps - > nFormat ) ;
2003-04-17 13:43:00 +00:00
sal_uInt16 nSubType = pFld - > GetSubType ( ) ;
if ( m_pProps - > bBool2 )
2007-09-27 08:36:28 +00:00
nSubType & = ~ nsSwExtendedSubType : : SUB_INVISIBLE ;
2003-04-17 13:43:00 +00:00
else
2007-09-27 08:36:28 +00:00
nSubType | = nsSwExtendedSubType : : SUB_INVISIBLE ;
2003-04-17 13:43:00 +00:00
pFld - > SetSubType ( nSubType ) ;
2000-09-18 23:08:29 +00:00
}
break ;
case SW_SERVICE_FIELDTYPE_DATABASE :
{
2005-07-18 11:25:55 +00:00
SwFieldType * pFldType = pDoc - > GetFldType ( RES_DBFLD , m_sTypeName , sal_False ) ;
2000-09-18 23:08:29 +00:00
if ( ! pFldType )
throw uno : : RuntimeException ( ) ;
pFld = new SwDBField ( ( SwDBFieldType * ) pFldType , m_pProps - > nFormat ) ;
( ( SwDBField * ) pFld ) - > InitContent ( m_pProps - > sPar1 ) ;
2003-04-17 13:43:00 +00:00
sal_uInt16 nSubType = pFld - > GetSubType ( ) ;
if ( m_pProps - > bBool2 )
2007-09-27 08:36:28 +00:00
nSubType & = ~ nsSwExtendedSubType : : SUB_INVISIBLE ;
2003-04-17 13:43:00 +00:00
else
2007-09-27 08:36:28 +00:00
nSubType | = nsSwExtendedSubType : : SUB_INVISIBLE ;
2003-04-17 13:43:00 +00:00
pFld - > SetSubType ( nSubType ) ;
2000-09-18 23:08:29 +00:00
}
break ;
case SW_SERVICE_FIELDTYPE_SET_EXP :
{
2005-07-18 11:25:55 +00:00
SwFieldType * pFldType = pDoc - > GetFldType ( RES_SETEXPFLD , m_sTypeName , sal_True ) ;
2000-09-18 23:08:29 +00:00
if ( ! pFldType )
throw uno : : RuntimeException ( ) ;
2001-10-17 07:54:43 +00:00
//#93192# detect the field type's sub type and set an appropriate number format
if ( m_pProps - > bFormatIsDefault & &
2007-09-27 08:36:28 +00:00
nsSwGetSetExpType : : GSE_STRING = = ( ( SwSetExpFieldType * ) pFldType ) - > GetType ( ) )
2001-10-17 07:54:43 +00:00
m_pProps - > nFormat = - 1 ;
2000-09-18 23:08:29 +00:00
pFld = new SwSetExpField ( ( SwSetExpFieldType * ) pFldType ,
m_pProps - > sPar2 ,
2007-07-18 11:56:44 +00:00
m_pProps - > nUSHORT2 ! = USHRT_MAX ? //#i79471# the field can have a number format or a number_ing_ format
m_pProps - > nUSHORT2 : m_pProps - > nFormat ) ;
2000-09-18 23:08:29 +00:00
sal_uInt16 nSubType = pFld - > GetSubType ( ) ;
if ( m_pProps - > bBool2 )
2007-09-27 08:36:28 +00:00
nSubType & = ~ nsSwExtendedSubType : : SUB_INVISIBLE ;
2000-09-18 23:08:29 +00:00
else
2007-09-27 08:36:28 +00:00
nSubType | = nsSwExtendedSubType : : SUB_INVISIBLE ;
2000-09-18 23:08:29 +00:00
if ( m_pProps - > bBool3 )
2007-09-27 08:36:28 +00:00
nSubType | = nsSwExtendedSubType : : SUB_CMD ;
2000-09-18 23:08:29 +00:00
else
2007-09-27 08:36:28 +00:00
nSubType & = ~ nsSwExtendedSubType : : SUB_CMD ;
2000-09-18 23:08:29 +00:00
pFld - > SetSubType ( nSubType ) ;
( ( SwSetExpField * ) pFld ) - > SetSeqNumber ( m_pProps - > nUSHORT1 ) ;
( ( SwSetExpField * ) pFld ) - > SetInputFlag ( m_pProps - > bBool1 ) ;
( ( SwSetExpField * ) pFld ) - > SetPromptText ( m_pProps - > sPar3 ) ;
if ( m_pProps - > sPar4 . Len ( ) )
( ( SwSetExpField * ) pFld ) - > ChgExpStr ( m_pProps - > sPar4 ) ;
}
break ;
case SW_SERVICE_FIELDTYPE_GET_EXP :
{
sal_uInt16 nSubType ;
switch ( m_pProps - > nSubType )
{
2007-09-27 08:36:28 +00:00
case text : : SetVariableType : : STRING : nSubType = nsSwGetSetExpType : : GSE_STRING ; break ;
case text : : SetVariableType : : VAR : nSubType = nsSwGetSetExpType : : GSE_EXPR ; break ;
case text : : SetVariableType : : SEQUENCE : nSubType = nsSwGetSetExpType : : GSE_SEQ ; break ;
case text : : SetVariableType : : FORMULA : nSubType = nsSwGetSetExpType : : GSE_FORMULA ; break ;
2000-09-18 23:08:29 +00:00
default :
DBG_ERROR ( " wrong value " ) ;
2007-09-27 08:36:28 +00:00
nSubType = nsSwGetSetExpType : : GSE_EXPR ;
2000-09-18 23:08:29 +00:00
}
2007-08-03 11:58:14 +00:00
//make sure the SubType matches the field type
SwFieldType * pSetExpFld = pDoc - > GetFldType ( RES_SETEXPFLD , m_pProps - > sPar1 , sal_False ) ;
2007-09-27 08:36:28 +00:00
if ( pSetExpFld & & nSubType ! = nsSwGetSetExpType : : GSE_STRING & &
static_cast < SwSetExpFieldType * > ( pSetExpFld ) - > GetType ( ) = = nsSwGetSetExpType : : GSE_STRING
2007-08-03 11:58:14 +00:00
)
2007-09-27 08:36:28 +00:00
nSubType = nsSwGetSetExpType : : GSE_STRING ;
2007-08-03 11:58:14 +00:00
2000-09-18 23:08:29 +00:00
if ( m_pProps - > bBool2 )
2007-09-27 08:36:28 +00:00
nSubType | = nsSwExtendedSubType : : SUB_CMD ;
2000-09-18 23:08:29 +00:00
else
2007-09-27 08:36:28 +00:00
nSubType & = ~ nsSwExtendedSubType : : SUB_CMD ;
2001-10-31 19:53:42 +00:00
pFld = new SwGetExpField ( ( SwGetExpFieldType * )
pDoc - > GetSysFldType ( RES_GETEXPFLD ) ,
2000-09-18 23:08:29 +00:00
m_pProps - > sPar1 , nSubType , m_pProps - > nFormat ) ;
//TODO: SubType auswerten!
if ( m_pProps - > sPar4 . Len ( ) )
( ( SwGetExpField * ) pFld ) - > ChgExpStr ( m_pProps - > sPar4 ) ;
}
break ;
case SW_SERVICE_FIELDTYPE_INPUT_USER :
case SW_SERVICE_FIELDTYPE_INPUT :
{
2005-07-18 11:25:55 +00:00
SwFieldType * pFldType = pDoc - > GetFldType ( RES_INPUTFLD , m_sTypeName , sal_True ) ;
2000-09-18 23:08:29 +00:00
if ( ! pFldType )
throw uno : : RuntimeException ( ) ;
2007-09-27 08:36:28 +00:00
USHORT nInpSubType = sal : : static_int_cast < USHORT > ( SW_SERVICE_FIELDTYPE_INPUT_USER = = m_nServiceId ? INP_USR : INP_TXT ) ;
2007-03-09 12:15:38 +00:00
SwInputField * pTxtField =
new SwInputField ( ( SwInputFieldType * ) pFldType ,
m_pProps - > sPar1 , m_pProps - > sPar2 ,
nInpSubType ) ;
pTxtField - > SetHelp ( m_pProps - > sPar3 ) ;
pTxtField - > SetToolTip ( m_pProps - > sPar4 ) ;
pFld = pTxtField ;
2000-09-18 23:08:29 +00:00
}
break ;
case SW_SERVICE_FIELDTYPE_MACRO :
{
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_MACROFLD ) ;
2001-08-02 17:37:24 +00:00
String aName ;
2004-05-19 07:51:18 +00:00
// support for Scripting Framework macros
if ( m_pProps - > sPar4 . Len ( ) ! = 0 )
{
aName = m_pProps - > sPar4 ;
}
else
{
SwMacroField : : CreateMacroString (
aName , m_pProps - > sPar1 , m_pProps - > sPar3 ) ;
}
2001-08-02 17:37:24 +00:00
pFld = new SwMacroField ( ( SwMacroFieldType * ) pFldType , aName ,
m_pProps - > sPar2 ) ;
2000-09-18 23:08:29 +00:00
}
break ;
case SW_SERVICE_FIELDTYPE_PAGE_COUNT :
case SW_SERVICE_FIELDTYPE_PARAGRAPH_COUNT :
case SW_SERVICE_FIELDTYPE_WORD_COUNT :
case SW_SERVICE_FIELDTYPE_CHARACTER_COUNT :
case SW_SERVICE_FIELDTYPE_TABLE_COUNT :
case SW_SERVICE_FIELDTYPE_GRAPHIC_OBJECT_COUNT :
case SW_SERVICE_FIELDTYPE_EMBEDDED_OBJECT_COUNT :
{
sal_uInt16 nSubType = DS_PAGE ;
switch ( m_nServiceId )
{
// case SW_SERVICE_FIELDTYPE_PAGE_COUNT : break;
case SW_SERVICE_FIELDTYPE_PARAGRAPH_COUNT : nSubType = DS_PARA ; break ;
case SW_SERVICE_FIELDTYPE_WORD_COUNT : nSubType = DS_WORD ; break ;
case SW_SERVICE_FIELDTYPE_CHARACTER_COUNT : nSubType = DS_CHAR ; break ;
case SW_SERVICE_FIELDTYPE_TABLE_COUNT : nSubType = DS_TBL ; break ;
case SW_SERVICE_FIELDTYPE_GRAPHIC_OBJECT_COUNT : nSubType = DS_GRF ; break ;
case SW_SERVICE_FIELDTYPE_EMBEDDED_OBJECT_COUNT : nSubType = DS_OLE ; break ;
}
SwFieldType * pFldType = pDoc - > GetSysFldType ( RES_DOCSTATFLD ) ;
pFld = new SwDocStatField ( ( SwDocStatFieldType * ) pFldType , nSubType , m_pProps - > nUSHORT2 ) ;
}
break ;
2000-11-22 14:23:00 +00:00
case SW_SERVICE_FIELDTYPE_BIBLIOGRAPHY :
2001-10-31 19:53:42 +00:00
pFld = new SwAuthorityField ( ( SwAuthorityFieldType * )
pDoc - > InsertFldType ( SwAuthorityFieldType ( pDoc ) ) ,
aEmptyStr ) ;
2000-11-22 14:23:00 +00:00
if ( m_pProps - > aPropSeq . getLength ( ) )
{
2007-06-05 16:32:51 +00:00
uno : : Any aVal ; aVal < < = m_pProps - > aPropSeq ;
2001-10-24 17:56:14 +00:00
pFld - > PutValue ( aVal , FIELD_PROP_PROP_SEQ ) ;
2000-11-22 14:23:00 +00:00
}
2001-10-31 19:53:42 +00:00
break ;
2001-01-29 14:29:30 +00:00
case SW_SERVICE_FIELDTYPE_COMBINED_CHARACTERS :
// create field
2001-10-31 19:53:42 +00:00
pFld = new SwCombinedCharField ( ( SwCombinedCharFieldType * )
pDoc - > GetSysFldType ( RES_COMBINED_CHARS ) ,
m_pProps - > sPar1 ) ;
break ;
2003-06-30 14:52:29 +00:00
case SW_SERVICE_FIELDTYPE_DROPDOWN :
pFld = new SwDropDownField
( ( SwDropDownFieldType * )
pDoc - > GetSysFldType ( RES_DROPDOWN ) ) ;
( ( SwDropDownField * ) pFld ) - > SetItems ( m_pProps - > aStrings ) ;
( ( SwDropDownField * ) pFld ) - > SetSelectedItem ( m_pProps - > sPar1 ) ;
( ( SwDropDownField * ) pFld ) - > SetName ( m_pProps - > sPar2 ) ;
2007-03-09 12:15:38 +00:00
( ( SwDropDownField * ) pFld ) - > SetHelp ( m_pProps - > sPar3 ) ;
( ( SwDropDownField * ) pFld ) - > SetToolTip ( m_pProps - > sPar4 ) ;
2003-06-30 14:52:29 +00:00
break ;
2001-10-17 12:38:26 +00:00
case SW_SERVICE_FIELDTYPE_TABLE_FORMULA :
{
// create field
2007-09-27 08:36:28 +00:00
USHORT nType = nsSwGetSetExpType : : GSE_FORMULA ;
2001-10-25 10:45:15 +00:00
if ( m_pProps - > bBool1 )
2001-10-17 12:38:26 +00:00
{
2007-09-27 08:36:28 +00:00
nType | = nsSwExtendedSubType : : SUB_CMD ;
2001-10-17 12:38:26 +00:00
if ( m_pProps - > bFormatIsDefault )
m_pProps - > nFormat = - 1 ;
}
2001-10-31 19:53:42 +00:00
pFld = new SwTblField ( ( SwTblFieldType * )
pDoc - > GetSysFldType ( RES_TABLEFLD ) ,
m_pProps - > sPar2 ,
2001-10-17 12:38:26 +00:00
nType ,
m_pProps - > nFormat ) ;
( ( SwTblField * ) pFld ) - > ChgExpStr ( m_pProps - > sPar1 ) ;
}
break ;
2000-09-18 23:08:29 +00:00
default : DBG_ERROR ( " was ist das fuer ein Typ? " ) ;
}
if ( pFld )
{
2002-11-21 14:31:59 +00:00
pFld - > SetAutomaticLanguage ( ! m_pProps - > bBool4 ) ;
2000-09-18 23:08:29 +00:00
SwFmtFld aFmt ( * pFld ) ;
UnoActionContext aCont ( pDoc ) ;
SwTxtAttr * pTxtAttr = 0 ;
if ( aPam . HasMark ( ) )
pDoc - > DeleteAndJoin ( aPam ) ;
2006-08-14 15:54:19 +00:00
pDoc - > Insert ( aPam , aFmt , 0 ) ;
2002-02-01 11:51:13 +00:00
pTxtAttr = aPam . GetNode ( ) - > GetTxtNode ( ) - > GetTxtAttr (
aPam . GetPoint ( ) - > nContent . GetIndex ( ) - 1 , RES_TXTATR_FIELD ) ;
2000-09-18 23:08:29 +00:00
// was passiert mit dem Update der Felder ? (siehe fldmgr.cxx)
if ( pTxtAttr )
{
const SwFmtFld & rFld = pTxtAttr - > GetFld ( ) ;
pFmtFld = & rFld ;
}
}
delete pFld ;
m_pDoc = pDoc ;
2001-04-03 14:07:00 +00:00
m_pDoc - > GetUnoCallBack ( ) - > Add ( this ) ;
2000-09-18 23:08:29 +00:00
m_bIsDescriptor = sal_False ;
2007-07-18 11:56:44 +00:00
if ( m_aFieldTypeClient . GetRegisteredIn ( ) )
const_cast < SwModify * > ( m_aFieldTypeClient . GetRegisteredIn ( ) ) - > Remove ( & m_aFieldTypeClient ) ;
2000-09-18 23:08:29 +00:00
DELETEZ ( m_pProps ) ;
2001-03-23 14:29:03 +00:00
if ( m_bCallUpdate )
update ( ) ;
2000-09-18 23:08:29 +00:00
}
else
2007-06-05 16:32:51 +00:00
throw lang : : IllegalArgumentException ( ) ;
2000-09-18 23:08:29 +00:00
}
/*-- 14.12.98 11:37:18---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
void SwXTextField : : attach ( const uno : : Reference < text : : XTextRange > & xTextRange )
throw ( lang : : IllegalArgumentException , uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
2002-09-12 12:12:13 +00:00
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
attachToRange ( xTextRange ) ;
2000-09-18 23:08:29 +00:00
}
/*-- 14.12.98 11:37:18---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
uno : : Reference < text : : XTextRange > SwXTextField : : getAnchor ( void ) throw ( uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
2007-06-05 16:32:51 +00:00
uno : : Reference < text : : XTextRange > aRef ;
2000-09-18 23:08:29 +00:00
SwField * pField = ( SwField * ) GetField ( ) ;
if ( pField )
{
const SwTxtFld * pTxtFld = pFmtFld - > GetTxtFld ( ) ;
2002-07-05 07:40:42 +00:00
if ( ! pTxtFld )
throw uno : : RuntimeException ( ) ;
2000-09-18 23:08:29 +00:00
const SwTxtNode & rTxtNode = pTxtFld - > GetTxtNode ( ) ;
SwPaM aPam ( rTxtNode , * pTxtFld - > GetStart ( ) + 1 , rTxtNode , * pTxtFld - > GetStart ( ) ) ;
2001-01-12 15:15:41 +00:00
aRef = SwXTextRange : : CreateTextRangeFromPosition ( m_pDoc ,
2000-09-18 23:08:29 +00:00
* aPam . GetPoint ( ) , aPam . GetMark ( ) ) ;
}
return aRef ;
}
/*-- 14.12.98 11:37:18---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
void SwXTextField : : dispose ( void ) throw ( uno : : RuntimeException )
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
SwField * pField = ( SwField * ) GetField ( ) ;
if ( pField )
{
UnoActionContext aContext ( GetDoc ( ) ) ;
const SwTxtFld * pTxtFld = pFmtFld - > GetTxtFld ( ) ;
SwTxtNode & rTxtNode = ( SwTxtNode & ) * pTxtFld - > GetpTxtNode ( ) ;
SwPaM aPam ( rTxtNode , * pTxtFld - > GetStart ( ) ) ;
aPam . SetMark ( ) ;
aPam . Move ( ) ;
GetDoc ( ) - > DeleteAndJoin ( aPam ) ;
}
}
/*-- 14.12.98 11:37:18---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
void SwXTextField : : addEventListener ( const uno : : Reference < lang : : XEventListener > & aListener ) throw ( uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
if ( ! GetRegisteredIn ( ) )
throw uno : : RuntimeException ( ) ;
aLstnrCntnr . AddListener ( aListener ) ;
}
/*-- 14.12.98 11:37:18---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
void SwXTextField : : removeEventListener ( const uno : : Reference < lang : : XEventListener > & aListener ) throw ( uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
if ( ! GetRegisteredIn ( ) | | ! aLstnrCntnr . RemoveListener ( aListener ) )
throw uno : : RuntimeException ( ) ;
}
/*-- 14.12.98 11:37:19---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
uno : : Reference < beans : : XPropertySetInfo > SwXTextField : : getPropertySetInfo ( void )
2000-09-18 23:08:29 +00:00
throw ( uno : : RuntimeException )
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
//kein static
2007-06-05 16:32:51 +00:00
uno : : Reference < beans : : XPropertySetInfo > aRef ;
2000-11-22 15:49:53 +00:00
if ( m_nServiceId ! = USHRT_MAX )
2000-09-18 23:08:29 +00:00
{
2001-10-24 17:56:14 +00:00
const SfxItemPropertyMap * pMap = aSwMapProvider . GetPropertyMap (
lcl_GetPropertyMapOfService ( m_nServiceId ) ) ;
2000-09-18 23:08:29 +00:00
uno : : Reference < beans : : XPropertySetInfo > xInfo = new SfxItemPropertySetInfo ( pMap ) ;
// extend PropertySetInfo!
const uno : : Sequence < beans : : Property > aPropSeq = xInfo - > getProperties ( ) ;
aRef = new SfxExtItemPropertySetInfo (
aSwMapProvider . GetPropertyMap ( PROPERTY_MAP_PARAGRAPH_EXTENSIONS ) ,
aPropSeq ) ;
}
else
throw uno : : RuntimeException ( ) ;
return aRef ;
}
/*-- 14.12.98 11:37:19---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2001-10-24 17:56:14 +00:00
void SwXTextField : : setPropertyValue ( const OUString & rPropertyName , const uno : : Any & rValue )
2007-06-05 16:32:51 +00:00
throw ( beans : : UnknownPropertyException , beans : : PropertyVetoException , lang : : IllegalArgumentException ,
lang : : WrappedTargetException , uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
SwField * pField = ( SwField * ) GetField ( ) ;
2001-10-24 17:56:14 +00:00
const SfxItemPropertyMap * _pMap = aSwMapProvider . GetPropertyMap (
lcl_GetPropertyMapOfService ( m_nServiceId ) ) ;
2000-09-18 23:08:29 +00:00
const SfxItemPropertyMap * pMap = SfxItemPropertyMap : : GetByName ( _pMap , rPropertyName ) ;
2001-11-28 19:12:55 +00:00
if ( ! pMap )
2007-06-05 16:32:51 +00:00
throw beans : : UnknownPropertyException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( " Unknown property: " ) ) + rPropertyName , static_cast < cppu : : OWeakObject * > ( this ) ) ;
if ( pMap - > nFlags & beans : : PropertyAttribute : : READONLY )
throw beans : : PropertyVetoException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( " Property is read-only: " ) ) + rPropertyName , static_cast < cppu : : OWeakObject * > ( this ) ) ;
2001-10-24 17:56:14 +00:00
2000-09-18 23:08:29 +00:00
if ( pField )
{
// Sonderbehandlung Serienbrieffeld
2001-10-24 17:56:14 +00:00
sal_uInt16 nWhich = pField - > Which ( ) ;
2000-09-18 23:08:29 +00:00
if ( RES_DBFLD = = nWhich & &
2001-06-13 10:54:27 +00:00
( rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_BASE_NAME ) ) | |
2004-08-02 13:19:37 +00:00
rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_BASE_URL ) ) | |
2001-10-24 17:56:14 +00:00
rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_TABLE_NAME ) ) | |
rPropertyName . equalsAsciiL ( SW_PROP_NAME ( UNO_NAME_DATA_COLUMN_NAME ) ) ) )
2000-09-18 23:08:29 +00:00
{
// hier muss ein neuer Feldtyp angelegt werden und
// das Feld an den neuen Typ umgehaengt werden
DBG_WARNING ( " not implemented " )
}
else
2004-05-18 13:09:14 +00:00
{
// -> #111840#
SwDoc * pDoc = GetDoc ( ) ;
if ( NULL ! = pDoc )
{
SwPosition * pPos = GetPosition ( ) ;
ASSERT ( pPos , " no position " ) ;
pDoc - > PutValueToField ( * pPos , rValue , pMap - > nWID ) ;
delete pPos ;
}
// <- #111840#
}
pField - > PutValue ( rValue , pMap - > nWID ) ;
//#114571# changes of the expanded string have to be notified
//#to the SwTxtFld
2004-03-17 11:16:48 +00:00
if ( RES_DBFLD = = nWhich & & pFmtFld - > GetTxtFld ( ) )
{
pFmtFld - > GetTxtFld ( ) - > Expand ( ) ;
}
2000-09-18 23:08:29 +00:00
}
else if ( m_pProps )
{
2001-10-24 17:56:14 +00:00
String * pStr = 0 ;
BOOL * pBool = 0 ;
2000-09-18 23:08:29 +00:00
switch ( pMap - > nWID )
{
2001-10-24 17:56:14 +00:00
case FIELD_PROP_PAR1 :
pStr = & m_pProps - > sPar1 ;
2000-09-18 23:08:29 +00:00
break ;
2001-10-24 17:56:14 +00:00
case FIELD_PROP_PAR2 :
pStr = & m_pProps - > sPar2 ;
2000-09-18 23:08:29 +00:00
break ;
2001-10-24 17:56:14 +00:00
case FIELD_PROP_PAR3 :
pStr = & m_pProps - > sPar3 ;
2000-11-10 12:49:21 +00:00
break ;
2001-10-24 17:56:14 +00:00
case FIELD_PROP_PAR4 :
pStr = & m_pProps - > sPar4 ;
2000-11-10 12:49:21 +00:00
break ;
2001-10-24 17:56:14 +00:00
case FIELD_PROP_FORMAT :
rValue > > = m_pProps - > nFormat ;
m_pProps - > bFormatIsDefault = sal_False ;
2000-09-18 23:08:29 +00:00
break ;
2001-10-24 17:56:14 +00:00
case FIELD_PROP_SUBTYPE :
m_pProps - > nSubType = SWUnoHelper : : GetEnumAsInt32 ( rValue ) ;
2000-09-18 23:08:29 +00:00
break ;
2001-10-24 17:56:14 +00:00
case FIELD_PROP_BYTE1 :
rValue > > = m_pProps - > nByte1 ;
2000-09-18 23:08:29 +00:00
break ;
2001-10-24 17:56:14 +00:00
case FIELD_PROP_BOOL1 :
pBool = & m_pProps - > bBool1 ;
2000-09-18 23:08:29 +00:00
break ;
2001-10-24 17:56:14 +00:00
case FIELD_PROP_BOOL2 :
pBool = & m_pProps - > bBool2 ;
2000-09-18 23:08:29 +00:00
break ;
2001-10-24 17:56:14 +00:00
case FIELD_PROP_BOOL3 :
pBool = & m_pProps - > bBool3 ;
2000-09-18 23:08:29 +00:00
break ;
2002-11-15 10:17:38 +00:00
case FIELD_PROP_BOOL4 :
2002-11-21 14:31:59 +00:00
pBool = & m_pProps - > bBool4 ;
2002-11-15 10:17:38 +00:00
break ;
2001-10-24 17:56:14 +00:00
case FIELD_PROP_DATE :
{
2007-06-05 16:32:51 +00:00
if ( rValue . getValueType ( ) ! = : : getCppuType ( static_cast < const util : : Date * > ( 0 ) ) )
throw lang : : IllegalArgumentException ( ) ;
2000-09-18 23:08:29 +00:00
2001-10-24 17:56:14 +00:00
util : : Date aTemp = * ( const util : : Date * ) rValue . getValue ( ) ;
m_pProps - > aDate = Date ( aTemp . Day , aTemp . Month , aTemp . Year ) ;
}
break ;
case FIELD_PROP_USHORT1 :
case FIELD_PROP_USHORT2 :
2000-09-18 23:08:29 +00:00
{
2007-11-12 15:27:00 +00:00
sal_Int16 nVal = 0 ;
2001-10-24 17:56:14 +00:00
rValue > > = nVal ;
if ( FIELD_PROP_USHORT1 = = pMap - > nWID )
m_pProps - > nUSHORT1 = nVal ;
else
m_pProps - > nUSHORT2 = nVal ;
2000-09-18 23:08:29 +00:00
}
break ;
2001-10-24 17:56:14 +00:00
case FIELD_PROP_SHORT1 :
rValue > > = m_pProps - > nSHORT1 ;
2000-09-18 23:08:29 +00:00
break ;
2001-10-24 17:56:14 +00:00
case FIELD_PROP_DOUBLE :
2007-06-05 16:32:51 +00:00
if ( rValue . getValueType ( ) ! = : : getCppuType ( static_cast < const double * > ( 0 ) ) )
throw lang : : IllegalArgumentException ( ) ;
2001-10-24 17:56:14 +00:00
m_pProps - > fDouble = * ( double * ) rValue . getValue ( ) ;
2000-09-18 23:08:29 +00:00
break ;
2001-10-24 17:56:14 +00:00
case FIELD_PROP_DATE_TIME :
if ( ! m_pProps - > pDateTime )
m_pProps - > pDateTime = new util : : DateTime ;
rValue > > = ( * m_pProps - > pDateTime ) ;
2000-11-17 15:24:47 +00:00
break ;
2001-10-24 17:56:14 +00:00
case FIELD_PROP_PROP_SEQ :
rValue > > = m_pProps - > aPropSeq ;
2000-11-22 14:23:00 +00:00
break ;
2003-06-30 14:52:29 +00:00
case FIELD_PROP_STRINGS :
rValue > > = m_pProps - > aStrings ;
break ;
2000-09-18 23:08:29 +00:00
}
2001-10-24 17:56:14 +00:00
if ( pStr )
: : GetString ( rValue , * pStr ) ;
else if ( pBool )
{
if ( rValue . getValueType ( ) = = getCppuBooleanType ( ) )
* pBool = * ( sal_Bool * ) rValue . getValue ( ) ;
else
2007-06-05 16:32:51 +00:00
throw lang : : IllegalArgumentException ( ) ;
2001-10-24 17:56:14 +00:00
}
2000-09-18 23:08:29 +00:00
}
else
throw uno : : RuntimeException ( ) ;
}
/*-- 14.12.98 11:37:19---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
uno : : Any SwXTextField : : getPropertyValue ( const OUString & rPropertyName )
2007-06-05 16:32:51 +00:00
throw ( beans : : UnknownPropertyException , lang : : WrappedTargetException , uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
uno : : Any aRet ;
const SwField * pField = GetField ( ) ;
2001-10-24 17:56:14 +00:00
const SfxItemPropertyMap * _pMap = aSwMapProvider . GetPropertyMap (
lcl_GetPropertyMapOfService ( m_nServiceId ) ) ;
2000-09-18 23:08:29 +00:00
const SfxItemPropertyMap * pMap = SfxItemPropertyMap : : GetByName ( _pMap , rPropertyName ) ;
if ( ! pMap )
{
_pMap = aSwMapProvider . GetPropertyMap ( PROPERTY_MAP_PARAGRAPH_EXTENSIONS ) ;
pMap = SfxItemPropertyMap : : GetByName ( _pMap , rPropertyName ) ;
}
2001-11-28 19:12:55 +00:00
if ( ! pMap )
2007-06-05 16:32:51 +00:00
throw beans : : UnknownPropertyException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( " Unknown property: " ) ) + rPropertyName , static_cast < cppu : : OWeakObject * > ( this ) ) ;
2001-10-24 17:56:14 +00:00
switch ( pMap - > nWID )
2000-09-18 23:08:29 +00:00
{
2001-10-24 17:56:14 +00:00
case FN_UNO_TEXT_WRAP :
2007-06-05 16:32:51 +00:00
aRet < < = text : : WrapTextMode_NONE ;
2001-10-24 17:56:14 +00:00
break ;
case FN_UNO_ANCHOR_TYPE :
2007-06-05 16:32:51 +00:00
aRet < < = text : : TextContentAnchorType_AS_CHARACTER ;
2001-10-24 17:56:14 +00:00
break ;
case FN_UNO_ANCHOR_TYPES :
{
2007-06-05 16:32:51 +00:00
uno : : Sequence < text : : TextContentAnchorType > aTypes ( 1 ) ;
text : : TextContentAnchorType * pArray = aTypes . getArray ( ) ;
pArray [ 0 ] = text : : TextContentAnchorType_AS_CHARACTER ;
aRet . setValue ( & aTypes , : : getCppuType ( static_cast < uno : : Sequence < text : : TextContentAnchorType > * > ( 0 ) ) ) ;
2001-10-24 17:56:14 +00:00
}
break ;
default :
if ( pField )
2005-10-05 12:22:06 +00:00
{
if ( FIELD_PROP_IS_FIELD_USED = = pMap - > nWID | |
FIELD_PROP_IS_FIELD_DISPLAYED = = pMap - > nWID )
{
sal_Bool bIsFieldUsed = sal_False ;
sal_Bool bIsFieldDisplayed = sal_False ;
// in order to have the information about fields
// correctly evaluated the document needs a layout
// (has to be already formatted)
SwDoc * pDoc = GetDoc ( ) ;
ViewShell * pViewShell = 0 ;
SwEditShell * pEditShell = pDoc ? pDoc - > GetEditShell ( & pViewShell ) : 0 ;
if ( pEditShell )
pEditShell - > CalcLayout ( ) ;
else if ( pViewShell ) // a page preview has no SwEditShell it should only have a view shell
pViewShell - > CalcLayout ( ) ;
else
throw uno : : RuntimeException ( ) ;
// get text node for the text field
const SwFmtFld * pFldFmt = GetFldFmt ( ) ;
const SwTxtFld * pTxtFld = pFldFmt ? pFmtFld - > GetTxtFld ( ) : 0 ;
if ( ! pTxtFld )
throw uno : : RuntimeException ( ) ;
const SwTxtNode & rTxtNode = pTxtFld - > GetTxtNode ( ) ;
// skip fields that are currently not in the document
// e.g. fields in undo or redo array
if ( rTxtNode . GetNodes ( ) . IsDocNodes ( ) )
{
sal_Bool bFrame = 0 ! = rTxtNode . FindLayoutRect ( ) . Width ( ) ; // oder so
sal_Bool bHidden = rTxtNode . IsHidden ( ) ;
if ( ! bHidden )
{
xub_StrLen nHiddenStart ;
xub_StrLen nHiddenEnd ;
SwPosition * pPos = pTxtFld - > GetPosition ( ) ;
if ( ! pPos )
2007-06-05 16:32:51 +00:00
throw uno : : RuntimeException ( ) ;
2005-10-05 12:22:06 +00:00
bHidden = SwScriptInfo : : GetBoundsOfHiddenRange ( rTxtNode ,
pPos - > nContent . GetIndex ( ) ,
nHiddenStart , nHiddenEnd ) ;
}
// !bFrame && !bHidden: aller Wahrscheinlichkeit handelt es
// sich um ein Feld in einem unbenutzten Seitenstyle
//
// bHidden: Feld ist versteckt
// FME: Problem: Verstecktes Feld in unbenutzter Seitenvorlage =>
// bIsFieldUsed = true
// bIsFieldDisplayed = false
bIsFieldUsed = bFrame | | bHidden ;
bIsFieldDisplayed = bIsFieldUsed & & ! bHidden ;
}
sal_Bool bRetVal = ( FIELD_PROP_IS_FIELD_USED = = pMap - > nWID ) ?
bIsFieldUsed : bIsFieldDisplayed ;
aRet . setValue ( & bRetVal , : : getCppuBooleanType ( ) ) ;
}
else
pField - > QueryValue ( aRet , pMap - > nWID ) ;
}
else if ( m_pProps ) // currently just a descriptor...
2000-09-18 23:08:29 +00:00
{
2001-10-24 17:56:14 +00:00
switch ( pMap - > nWID )
{
2000-09-18 23:08:29 +00:00
case FIELD_PROP_PAR1 :
aRet < < = OUString ( m_pProps - > sPar1 ) ;
2001-10-24 17:56:14 +00:00
break ;
2000-09-18 23:08:29 +00:00
case FIELD_PROP_PAR2 :
aRet < < = OUString ( m_pProps - > sPar2 ) ;
2001-10-24 17:56:14 +00:00
break ;
2000-11-10 12:49:21 +00:00
case FIELD_PROP_PAR3 :
aRet < < = OUString ( m_pProps - > sPar3 ) ;
2001-10-24 17:56:14 +00:00
break ;
2000-11-10 12:49:21 +00:00
case FIELD_PROP_PAR4 :
aRet < < = OUString ( m_pProps - > sPar4 ) ;
2001-10-24 17:56:14 +00:00
break ;
2000-09-18 23:08:29 +00:00
case FIELD_PROP_FORMAT :
aRet < < = m_pProps - > nFormat ;
2001-10-24 17:56:14 +00:00
break ;
2000-09-18 23:08:29 +00:00
case FIELD_PROP_SUBTYPE :
aRet < < = m_pProps - > nSubType ;
2001-10-24 17:56:14 +00:00
break ;
2000-09-18 23:08:29 +00:00
case FIELD_PROP_BYTE1 :
aRet < < = m_pProps - > nByte1 ;
2001-10-24 17:56:14 +00:00
break ;
2000-09-18 23:08:29 +00:00
case FIELD_PROP_BOOL1 :
aRet . setValue ( & m_pProps - > bBool1 , : : getCppuBooleanType ( ) ) ;
2001-10-24 17:56:14 +00:00
break ;
2000-09-18 23:08:29 +00:00
case FIELD_PROP_BOOL2 :
aRet . setValue ( & m_pProps - > bBool2 , : : getCppuBooleanType ( ) ) ;
2001-10-24 17:56:14 +00:00
break ;
2002-11-15 10:17:38 +00:00
case FIELD_PROP_BOOL3 :
aRet . setValue ( & m_pProps - > bBool3 , : : getCppuBooleanType ( ) ) ;
break ;
case FIELD_PROP_BOOL4 :
aRet . setValue ( & m_pProps - > bBool4 , : : getCppuBooleanType ( ) ) ;
break ;
2000-09-18 23:08:29 +00:00
case FIELD_PROP_DATE :
2007-06-05 16:32:51 +00:00
aRet . setValue ( & m_pProps - > aDate , : : getCppuType ( static_cast < const util : : Date * > ( 0 ) ) ) ;
2001-10-24 17:56:14 +00:00
break ;
2000-09-18 23:08:29 +00:00
case FIELD_PROP_USHORT1 :
aRet < < = ( sal_Int16 ) m_pProps - > nUSHORT1 ;
2001-10-24 17:56:14 +00:00
break ;
2000-09-18 23:08:29 +00:00
case FIELD_PROP_USHORT2 :
aRet < < = ( sal_Int16 ) m_pProps - > nUSHORT2 ;
2001-10-24 17:56:14 +00:00
break ;
2000-09-18 23:08:29 +00:00
case FIELD_PROP_SHORT1 :
aRet < < = m_pProps - > nSHORT1 ;
2001-10-24 17:56:14 +00:00
break ;
2000-09-18 23:08:29 +00:00
case FIELD_PROP_DOUBLE :
aRet < < = m_pProps - > fDouble ;
2001-10-24 17:56:14 +00:00
break ;
2000-11-17 15:24:47 +00:00
case FIELD_PROP_DATE_TIME :
if ( m_pProps - > pDateTime )
aRet < < = ( * m_pProps - > pDateTime ) ;
2001-10-24 17:56:14 +00:00
break ;
2000-11-22 14:23:00 +00:00
case FIELD_PROP_PROP_SEQ :
aRet < < = m_pProps - > aPropSeq ;
2001-10-24 17:56:14 +00:00
break ;
2003-06-30 14:52:29 +00:00
case FIELD_PROP_STRINGS :
aRet < < = m_pProps - > aStrings ;
break ;
2005-10-05 12:22:06 +00:00
case FIELD_PROP_IS_FIELD_USED :
case FIELD_PROP_IS_FIELD_DISPLAYED :
aRet . setValue ( sal_False , : : getCppuBooleanType ( ) ) ;
break ;
2001-10-24 17:56:14 +00:00
}
2000-09-18 23:08:29 +00:00
}
2001-10-24 17:56:14 +00:00
else
throw uno : : RuntimeException ( ) ;
2000-09-18 23:08:29 +00:00
}
return aRet ;
}
/*-- 14.12.98 11:37:20---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-09-27 08:36:28 +00:00
void SwXTextField : : addPropertyChangeListener ( const OUString & /*PropertyName*/ , const uno : : Reference < beans : : XPropertyChangeListener > & /*aListener*/ ) throw ( beans : : UnknownPropertyException , lang : : WrappedTargetException , uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
DBG_WARNING ( " not implemented " )
}
/*-- 14.12.98 11:37:20---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-09-27 08:36:28 +00:00
void SwXTextField : : removePropertyChangeListener ( const OUString & /*PropertyName*/ , const uno : : Reference < beans : : XPropertyChangeListener > & /*aListener*/ ) throw ( beans : : UnknownPropertyException , lang : : WrappedTargetException , uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
DBG_WARNING ( " not implemented " )
}
/*-- 14.12.98 11:37:20---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-09-27 08:36:28 +00:00
void SwXTextField : : addVetoableChangeListener ( const OUString & /*PropertyName*/ , const uno : : Reference < beans : : XVetoableChangeListener > & /*aListener*/ ) throw ( beans : : UnknownPropertyException , lang : : WrappedTargetException , uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
DBG_WARNING ( " not implemented " )
}
/*-- 14.12.98 11:37:20---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-09-27 08:36:28 +00:00
void SwXTextField : : removeVetoableChangeListener ( const OUString & /*PropertyName*/ , const uno : : Reference < beans : : XVetoableChangeListener > & /*aListener*/ ) throw ( beans : : UnknownPropertyException , lang : : WrappedTargetException , uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
DBG_WARNING ( " not implemented " )
}
2001-03-23 12:37:54 +00:00
/* -----------------------------23.03.01 13:15--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
void SwXTextField : : update ( ) throw ( uno : : RuntimeException )
2001-03-23 12:37:54 +00:00
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
const SwField * pFld = GetField ( ) ;
if ( pFld )
{
switch ( pFld - > Which ( ) )
{
case RES_DATETIMEFLD :
2003-04-01 14:21:47 +00:00
( ( SwDateTimeField * ) pFld ) - > SetDateTime ( : : DateTime ( ) ) ;
2001-03-23 12:37:54 +00:00
break ;
case RES_EXTUSERFLD :
{
SwExtUserField * pExtUserFld = ( SwExtUserField * ) pFld ;
pExtUserFld - > SetExpansion ( ( ( SwExtUserFieldType * ) pFld - > GetTyp ( ) ) - > Expand (
pExtUserFld - > GetSubType ( ) ,
pExtUserFld - > GetFormat ( ) ) ) ;
}
break ;
case RES_AUTHORFLD :
{
SwAuthorField * pAuthorFld = ( SwAuthorField * ) pFld ;
pAuthorFld - > SetExpansion ( ( ( SwAuthorFieldType * ) pFld - > GetTyp ( ) ) - > Expand (
pAuthorFld - > GetFormat ( ) ) ) ;
}
break ;
case RES_FILENAMEFLD :
{
SwFileNameField * pFileNameFld = ( SwFileNameField * ) pFld ;
pFileNameFld - > SetExpansion ( ( ( SwFileNameFieldType * ) pFld - > GetTyp ( ) ) - > Expand (
pFileNameFld - > GetFormat ( ) ) ) ;
}
break ;
case RES_DOCINFOFLD :
{
SwDocInfoField * pDocInfFld = ( SwDocInfoField * ) pFld ;
pDocInfFld - > SetExpansion ( ( ( SwDocInfoFieldType * ) pFld - > GetTyp ( ) ) - > Expand (
pDocInfFld - > GetSubType ( ) ,
pDocInfFld - > GetFormat ( ) ,
pDocInfFld - > GetLanguage ( ) ) ) ;
}
break ;
}
2004-11-27 08:01:50 +00:00
// --> FME 2004-10-06 #116480#
// Text formatting has to be triggered.
const_cast < SwFmtFld * > ( pFmtFld ) - > Modify ( 0 , 0 ) ;
// <--
2001-03-23 12:37:54 +00:00
}
2001-03-23 14:29:03 +00:00
else
m_bCallUpdate = sal_True ;
2001-03-23 12:37:54 +00:00
}
2000-09-18 23:08:29 +00:00
/* -----------------19.03.99 14:11-------------------
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
OUString SwXTextField : : getImplementationName ( void ) throw ( uno : : RuntimeException )
{
return C2U ( " SwXTextField " ) ;
}
/* -----------------19.03.99 14:11-------------------
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-01-30 14:22:46 +00:00
static OUString OldNameToNewName_Impl ( const OUString & rOld )
{
static OUString aOldNamePart1 ( OUString : : createFromAscii ( " .TextField.DocInfo. " ) ) ;
static OUString aOldNamePart2 ( OUString : : createFromAscii ( " .TextField. " ) ) ;
static OUString aNewNamePart1 ( OUString : : createFromAscii ( " .textfield.docinfo. " ) ) ;
static OUString aNewNamePart2 ( OUString : : createFromAscii ( " .textfield. " ) ) ;
OUString sServiceNameCC ( rOld ) ;
sal_Int32 nIdx = sServiceNameCC . indexOf ( aOldNamePart1 ) ;
if ( nIdx > = 0 )
sServiceNameCC = sServiceNameCC . replaceAt ( nIdx , aOldNamePart1 . getLength ( ) , aNewNamePart1 ) ;
nIdx = sServiceNameCC . indexOf ( aOldNamePart2 ) ;
if ( nIdx > = 0 )
sServiceNameCC = sServiceNameCC . replaceAt ( nIdx , aOldNamePart2 . getLength ( ) , aNewNamePart2 ) ;
return sServiceNameCC ;
}
2000-09-18 23:08:29 +00:00
sal_Bool SwXTextField : : supportsService ( const OUString & rServiceName ) throw ( uno : : RuntimeException )
{
OUString sServiceName = SwXServiceProvider : : GetProviderName ( m_nServiceId ) ;
2007-01-30 14:22:46 +00:00
// case-corected version of service-name (see #i67811)
// (need to supply both because of compatibility to older versions)
OUString sServiceNameCC ( OldNameToNewName_Impl ( sServiceName ) ) ;
return sServiceName = = rServiceName | | sServiceNameCC = = rServiceName | |
2001-11-06 07:37:32 +00:00
rServiceName . equalsAsciiL (
RTL_CONSTASCII_STRINGPARAM ( " com.sun.star.text.TextContent " ) ) ;
2000-09-18 23:08:29 +00:00
}
/* -----------------19.03.99 14:11-------------------
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
uno : : Sequence < OUString > SwXTextField : : getSupportedServiceNames ( void ) throw ( uno : : RuntimeException )
{
OUString sServiceName = SwXServiceProvider : : GetProviderName ( m_nServiceId ) ;
2007-01-30 14:22:46 +00:00
// case-corected version of service-name (see #i67811)
// (need to supply both because of compatibility to older versions)
OUString sServiceNameCC ( OldNameToNewName_Impl ( sServiceName ) ) ;
sal_Int32 nLen = sServiceName = = sServiceNameCC ? 2 : 3 ;
uno : : Sequence < OUString > aRet ( nLen ) ;
OUString * pArray = aRet . getArray ( ) ;
* pArray + + = sServiceName ;
if ( nLen = = 3 )
* pArray + + = sServiceNameCC ;
* pArray + + = C2U ( " com.sun.star.text.TextContent " ) ;
2000-09-18 23:08:29 +00:00
return aRet ;
}
2001-04-03 14:07:00 +00:00
void SwXTextField : : Invalidate ( )
{
if ( GetRegisteredIn ( ) )
{
( ( SwModify * ) GetRegisteredIn ( ) ) - > Remove ( this ) ;
aLstnrCntnr . Disposing ( ) ;
pFmtFld = 0 ;
m_pDoc = 0 ;
}
}
2000-09-18 23:08:29 +00:00
/* -----------------14.12.98 12:00-------------------
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
void SwXTextField : : Modify ( SfxPoolItem * pOld , SfxPoolItem * pNew )
{
2001-11-06 07:37:32 +00:00
switch ( pOld ? pOld - > Which ( ) : 0 )
2000-09-18 23:08:29 +00:00
{
2001-11-06 07:37:32 +00:00
case RES_REMOVE_UNO_OBJECT :
case RES_OBJECTDYING :
if ( ( void * ) GetRegisteredIn ( ) = = ( ( SwPtrMsgPoolItem * ) pOld ) - > pObject )
Invalidate ( ) ;
break ;
case RES_FMT_CHG :
// wurden wir an das neue umgehaengt und wird das alte geloscht?
if ( ( ( SwFmtChg * ) pNew ) - > pChangedFmt = = GetRegisteredIn ( ) & &
( ( SwFmtChg * ) pOld ) - > pChangedFmt - > IsFmtInDTOR ( ) )
Invalidate ( ) ;
break ;
case RES_FIELD_DELETED :
if ( ( void * ) pFmtFld = = ( ( SwPtrMsgPoolItem * ) pOld ) - > pObject )
Invalidate ( ) ;
break ;
2000-09-18 23:08:29 +00:00
}
}
/*-- 14.12.98 11:37:21---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
const SwField * SwXTextField : : GetField ( ) const
{
2001-04-03 14:07:00 +00:00
if ( GetRegisteredIn ( ) & & pFmtFld )
return pFmtFld - > GetFld ( ) ;
2000-09-18 23:08:29 +00:00
return 0 ;
}
2004-05-18 13:09:14 +00:00
// #111840#
SwPosition * SwXTextField : : GetPosition ( )
{
SwPosition * pResult = NULL ;
2007-09-27 08:36:28 +00:00
const SwFmtFld * pFmtFld2 = GetFldFmt ( ) ;
2004-05-18 13:09:14 +00:00
2007-09-27 08:36:28 +00:00
if ( pFmtFld2 )
2004-05-18 13:09:14 +00:00
{
2007-09-27 08:36:28 +00:00
const SwTxtFld * pTxtFld = pFmtFld2 - > GetTxtFld ( ) ;
2004-05-18 13:09:14 +00:00
if ( pTxtFld )
pResult = pTxtFld - > GetPosition ( ) ;
}
return pResult ;
}
2000-09-18 23:08:29 +00:00
/******************************************************************
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/******************************************************************
* SwXTextFieldMasters
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* -----------------------------06.04.00 13:22--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
OUString SwXTextFieldMasters : : getImplementationName ( void ) throw ( uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
return C2U ( " SwXTextFieldMasters " ) ;
}
/* -----------------------------06.04.00 13:22--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
BOOL SwXTextFieldMasters : : supportsService ( const OUString & rServiceName ) throw ( uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
2001-11-06 07:37:32 +00:00
return rServiceName . equalsAsciiL ( RTL_CONSTASCII_STRINGPARAM (
" com.sun.star.text.TextFieldMasters " ) ) ;
2000-09-18 23:08:29 +00:00
}
/* -----------------------------06.04.00 13:22--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
uno : : Sequence < OUString > SwXTextFieldMasters : : getSupportedServiceNames ( void ) throw ( uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
2007-06-05 16:32:51 +00:00
uno : : Sequence < OUString > aRet ( 1 ) ;
2000-09-18 23:08:29 +00:00
OUString * pArray = aRet . getArray ( ) ;
pArray [ 0 ] = C2U ( " com.sun.star.text.TextFieldMasters " ) ;
return aRet ;
}
/*-- 21.12.98 10:37:14---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-09-27 08:36:28 +00:00
SwXTextFieldMasters : : SwXTextFieldMasters ( SwDoc * _pDoc ) :
SwUnoCollection ( _pDoc )
2000-09-18 23:08:29 +00:00
{
}
/*-- 21.12.98 10:37:32---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
SwXTextFieldMasters : : ~ SwXTextFieldMasters ( )
{
}
/*-- 21.12.98 10:37:33---------------------------------------------------
Iteration ueber nicht - Standard Feldtypen
USER / SETEXP / DDE / DATABASE
Der Name ist demnach :
2007-01-30 14:22:46 +00:00
" com.sun.star.text.fieldmaster.User " + < Feltypname >
" com.sun.star.text.fieldmaster.DDE " + < Feltypname >
" com.sun.star.text.fieldmaster.SetExpression " + < Feltypname >
" com.sun.star.text.fieldmaster.DataBase " + < Feltypname >
2000-09-18 23:08:29 +00:00
Falls wir grosszuegig werden wollen , dann koennte man com . sun . star . text
auch optional weglassen
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2001-11-06 07:37:32 +00:00
sal_uInt16 lcl_GetIdByName ( String & rName , String & rTypeName )
2000-09-18 23:08:29 +00:00
{
2007-01-30 14:22:46 +00:00
if ( rName . EqualsAscii ( COM_TEXT_FLDMASTER , 0 , RTL_CONSTASCII_LENGTH ( COM_TEXT_FLDMASTER ) )
| | rName . EqualsAscii ( COM_TEXT_FLDMASTER_CC , 0 , RTL_CONSTASCII_LENGTH ( COM_TEXT_FLDMASTER_CC ) ) )
2001-11-06 07:37:32 +00:00
rName . Erase ( 0 , 30 ) ;
2000-09-18 23:08:29 +00:00
sal_uInt16 nResId = USHRT_MAX ;
xub_StrLen nFound = 0 ;
2001-11-06 07:37:32 +00:00
rTypeName = rName . GetToken ( 0 , ' . ' , nFound ) ;
if ( rTypeName . EqualsAscii ( " User " ) )
2000-09-18 23:08:29 +00:00
nResId = RES_USERFLD ;
2001-11-06 07:37:32 +00:00
else if ( rTypeName . EqualsAscii ( " DDE " ) )
2000-09-18 23:08:29 +00:00
nResId = RES_DDEFLD ;
2001-11-06 07:37:32 +00:00
else if ( rTypeName . EqualsAscii ( " SetExpression " ) )
2000-11-07 08:58:56 +00:00
{
2000-09-18 23:08:29 +00:00
nResId = RES_SETEXPFLD ;
2001-11-06 07:37:32 +00:00
2002-07-04 07:05:55 +00:00
String sFldTypName ( rName . GetToken ( 1 , ' . ' ) ) ;
2005-03-08 12:54:32 +00:00
String sUIName ( SwStyleNameMapper : : GetSpecialExtraUIName ( sFldTypName ) ) ;
2002-07-04 07:05:55 +00:00
2001-11-06 07:37:32 +00:00
if ( sUIName ! = sFldTypName )
rName . SetToken ( 1 , ' . ' , sUIName ) ;
2000-11-07 08:58:56 +00:00
}
2001-11-06 07:37:32 +00:00
else if ( rTypeName . EqualsAscii ( " DataBase " ) )
2000-09-18 23:08:29 +00:00
{
2001-11-06 07:37:32 +00:00
rName . Erase ( 0 , RTL_CONSTASCII_LENGTH ( " DataBase. " ) ) ;
USHORT nDotCount = rName . GetTokenCount ( ' . ' ) ;
2001-11-21 12:28:48 +00:00
if ( 2 < = nDotCount )
2001-11-06 07:37:32 +00:00
{
2005-07-18 11:25:55 +00:00
// #i51815#
//rName.SearchAndReplace('.', DB_DELIM);
//rName.SetChar( rName.SearchBackward( '.' ), DB_DELIM );
2001-11-06 07:37:32 +00:00
rName . InsertAscii ( " DataBase. " , 0 ) ;
nResId = RES_DBFLD ;
}
2000-09-18 23:08:29 +00:00
}
2001-11-06 07:37:32 +00:00
else if ( rTypeName . EqualsAscii ( " Bibliography " ) )
2000-12-06 10:15:25 +00:00
nResId = RES_AUTHORITY ;
2001-11-06 07:37:32 +00:00
return nResId ;
}
//-----------------------------------------------------------------------------
uno : : Any SwXTextFieldMasters : : getByName ( const OUString & rName )
2007-06-05 16:32:51 +00:00
throw ( container : : NoSuchElementException , lang : : WrappedTargetException , uno : : RuntimeException )
2001-11-06 07:37:32 +00:00
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
if ( ! GetDoc ( ) )
throw uno : : RuntimeException ( ) ;
String sName ( rName ) , sTypeName ;
sal_uInt16 nResId = lcl_GetIdByName ( sName , sTypeName ) ;
if ( USHRT_MAX = = nResId )
2007-06-05 16:32:51 +00:00
throw container : : NoSuchElementException ( ) ;
2000-09-18 23:08:29 +00:00
2001-11-06 07:37:32 +00:00
sName . Erase ( 0 , sTypeName . Len ( ) + 1 ) ;
2005-07-18 11:25:55 +00:00
SwFieldType * pType = GetDoc ( ) - > GetFldType ( nResId , sName , sal_True ) ;
2000-09-18 23:08:29 +00:00
if ( ! pType )
2007-06-05 16:32:51 +00:00
throw container : : NoSuchElementException ( ) ;
2000-09-18 23:08:29 +00:00
SwXFieldMaster * pMaster = ( SwXFieldMaster * )
SwClientIter ( * pType ) . First ( TYPE ( SwXFieldMaster ) ) ;
if ( ! pMaster )
pMaster = new SwXFieldMaster ( * pType , GetDoc ( ) ) ;
2007-06-05 16:32:51 +00:00
uno : : Reference < beans : : XPropertySet > aRef = pMaster ;
uno : : Any aRet ( & aRef , : : getCppuType ( static_cast < const uno : : Reference < beans : : XPropertySet > * > ( 0 ) ) ) ;
2000-09-18 23:08:29 +00:00
return aRet ;
}
2001-03-08 13:14:56 +00:00
/*-- 06.03.2001 11:29:34,5-------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
sal_Bool SwXTextFieldMasters : : getInstanceName (
const SwFieldType & rFldType , String & rName )
{
sal_Bool bRet = sal_True ;
2001-10-17 06:55:17 +00:00
switch ( rFldType . Which ( ) )
2001-03-08 13:14:56 +00:00
{
2001-10-17 06:55:17 +00:00
case RES_USERFLD :
2007-01-30 14:22:46 +00:00
rName . AppendAscii ( RTL_CONSTASCII_STRINGPARAM ( COM_TEXT_FLDMASTER_CC ) ) ;
2001-11-06 07:37:32 +00:00
rName . AppendAscii ( RTL_CONSTASCII_STRINGPARAM ( " User. " ) ) ;
2001-03-08 13:14:56 +00:00
rName + = rFldType . GetName ( ) ;
2001-10-17 06:55:17 +00:00
break ;
case RES_DDEFLD :
2007-01-30 14:22:46 +00:00
rName . AppendAscii ( RTL_CONSTASCII_STRINGPARAM ( COM_TEXT_FLDMASTER_CC ) ) ;
2001-11-06 07:37:32 +00:00
rName . AppendAscii ( RTL_CONSTASCII_STRINGPARAM ( " DDE. " ) ) ;
2001-03-08 13:14:56 +00:00
rName + = rFldType . GetName ( ) ;
2001-10-17 06:55:17 +00:00
break ;
case RES_SETEXPFLD :
2007-01-30 14:22:46 +00:00
rName . AppendAscii ( RTL_CONSTASCII_STRINGPARAM ( COM_TEXT_FLDMASTER_CC ) ) ;
2001-11-06 07:37:32 +00:00
rName . AppendAscii ( RTL_CONSTASCII_STRINGPARAM ( " SetExpression. " ) ) ;
2005-03-08 12:54:32 +00:00
rName + = String ( SwStyleNameMapper : : GetSpecialExtraProgName ( rFldType . GetName ( ) ) ) ;
2001-10-17 06:55:17 +00:00
break ;
case RES_DBFLD :
{
2007-01-30 14:22:46 +00:00
rName . AppendAscii ( RTL_CONSTASCII_STRINGPARAM ( COM_TEXT_FLDMASTER_CC ) ) ;
2001-11-06 07:37:32 +00:00
rName . AppendAscii ( RTL_CONSTASCII_STRINGPARAM ( " DataBase. " ) ) ;
2001-10-17 06:55:17 +00:00
String sDBName ( rFldType . GetName ( ) ) ;
sDBName . SearchAndReplaceAll ( DB_DELIM , ' . ' ) ;
rName + = sDBName ;
}
break ;
case RES_AUTHORITY :
2007-01-30 14:22:46 +00:00
rName . AppendAscii ( RTL_CONSTASCII_STRINGPARAM ( COM_TEXT_FLDMASTER_CC ) ) ;
2001-11-06 07:37:32 +00:00
rName . AppendAscii ( RTL_CONSTASCII_STRINGPARAM ( " Bibliography " ) ) ;
2001-10-17 06:55:17 +00:00
break ;
default :
2001-03-08 13:14:56 +00:00
bRet = sal_False ;
2001-10-17 06:55:17 +00:00
}
2001-03-08 13:14:56 +00:00
return bRet ;
}
2000-09-18 23:08:29 +00:00
/*-- 21.12.98 10:37:33---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
uno : : Sequence < OUString > SwXTextFieldMasters : : getElementNames ( void )
throw ( uno : : RuntimeException )
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
if ( ! GetDoc ( ) )
throw uno : : RuntimeException ( ) ;
const SwFldTypes * pFldTypes = GetDoc ( ) - > GetFldTypes ( ) ;
sal_uInt16 nCount = pFldTypes - > Count ( ) ;
SvStrings aFldNames ;
2001-03-08 13:14:56 +00:00
String * pString = new String ( ) ;
2003-12-01 16:24:08 +00:00
sal_uInt16 i ;
for ( i = 0 ; i < nCount ; i + + )
2000-09-18 23:08:29 +00:00
{
SwFieldType & rFldType = * ( ( * pFldTypes ) [ i ] ) ;
2001-03-08 13:14:56 +00:00
if ( SwXTextFieldMasters : : getInstanceName ( rFldType , * pString ) )
2000-12-06 10:15:25 +00:00
{
aFldNames . Insert ( pString , aFldNames . Count ( ) ) ;
2001-03-08 13:14:56 +00:00
pString = new String ( ) ;
2000-12-06 10:15:25 +00:00
}
2000-09-18 23:08:29 +00:00
}
2001-03-08 13:14:56 +00:00
delete pString ;
2000-09-18 23:08:29 +00:00
uno : : Sequence < OUString > aSeq ( aFldNames . Count ( ) ) ;
OUString * pArray = aSeq . getArray ( ) ;
for ( i = 0 ; i < aFldNames . Count ( ) ; i + + )
{
pArray [ i ] = * aFldNames . GetObject ( i ) ;
}
aFldNames . DeleteAndDestroy ( 0 , aFldNames . Count ( ) ) ;
return aSeq ;
}
/*-- 21.12.98 10:37:33---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
sal_Bool SwXTextFieldMasters : : hasByName ( const OUString & rName ) throw ( uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
if ( ! GetDoc ( ) )
throw uno : : RuntimeException ( ) ;
2001-11-06 07:37:32 +00:00
String sName ( rName ) , sTypeName ;
sal_uInt16 nResId = lcl_GetIdByName ( sName , sTypeName ) ;
2002-06-17 12:06:17 +00:00
sal_Bool bRet = sal_False ;
if ( USHRT_MAX ! = nResId )
{
sName . Erase ( 0 , sTypeName . Len ( ) + 1 ) ;
2005-07-18 11:25:55 +00:00
bRet = USHRT_MAX ! = nResId & & 0 ! = GetDoc ( ) - > GetFldType ( nResId , sName , sal_True ) ;
2002-06-17 12:06:17 +00:00
}
2000-09-18 23:08:29 +00:00
return bRet ;
}
/*-- 21.12.98 10:37:34---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
uno : : Type SwXTextFieldMasters : : getElementType ( void ) throw ( uno : : RuntimeException )
{
2007-06-05 16:32:51 +00:00
return : : getCppuType ( static_cast < const uno : : Reference < beans : : XPropertySet > * > ( 0 ) ) ;
2000-09-18 23:08:29 +00:00
}
/*-- 21.12.98 10:37:34---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
sal_Bool SwXTextFieldMasters : : hasElements ( void ) throw ( uno : : RuntimeException )
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
if ( ! IsValid ( ) )
throw uno : : RuntimeException ( ) ;
return sal_True ;
}
/******************************************************************
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* -----------------------------06.04.00 13:24--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
OUString SwXTextFieldTypes : : getImplementationName ( void ) throw ( uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
return C2U ( " SwXTextFieldTypes " ) ;
}
/* -----------------------------06.04.00 13:24--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
BOOL SwXTextFieldTypes : : supportsService ( const OUString & rServiceName ) throw ( uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
2001-11-06 07:37:32 +00:00
return rServiceName . equalsAsciiL ( RTL_CONSTASCII_STRINGPARAM (
" com.sun.star.text.TextFields " ) ) ;
2000-09-18 23:08:29 +00:00
}
/* -----------------------------06.04.00 13:24--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
uno : : Sequence < OUString > SwXTextFieldTypes : : getSupportedServiceNames ( void ) throw ( uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
2007-06-05 16:32:51 +00:00
uno : : Sequence < OUString > aRet ( 1 ) ;
2000-09-18 23:08:29 +00:00
OUString * pArray = aRet . getArray ( ) ;
2001-10-05 13:32:40 +00:00
pArray [ 0 ] = C2U ( " com.sun.star.text.TextFields " ) ;
2000-09-18 23:08:29 +00:00
return aRet ;
}
/*-- 21.12.98 10:35:15---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-09-27 08:36:28 +00:00
SwXTextFieldTypes : : SwXTextFieldTypes ( SwDoc * _pDoc ) :
SwUnoCollection ( _pDoc ) ,
2002-07-12 09:31:33 +00:00
aRefreshCont ( static_cast < XEnumerationAccess * > ( this ) )
2000-09-18 23:08:29 +00:00
{
}
/*-- 21.12.98 10:35:16---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
SwXTextFieldTypes : : ~ SwXTextFieldTypes ( )
{
}
2002-07-12 09:31:33 +00:00
/*-- 11.07.02 14:25:00---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
void SwXTextFieldTypes : : Invalidate ( )
{
SwUnoCollection : : Invalidate ( ) ;
aRefreshCont . Disposing ( ) ;
}
2000-09-18 23:08:29 +00:00
/*-- 21.12.98 10:35:17---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
uno : : Reference < container : : XEnumeration > SwXTextFieldTypes : : createEnumeration ( void )
2000-09-18 23:08:29 +00:00
throw ( uno : : RuntimeException )
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
if ( ! IsValid ( ) )
throw uno : : RuntimeException ( ) ;
return new SwXFieldEnumeration ( GetDoc ( ) ) ;
}
/*-- 21.12.98 10:35:17---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
uno : : Type SwXTextFieldTypes : : getElementType ( void ) throw ( uno : : RuntimeException )
{
2007-06-05 16:32:51 +00:00
return : : getCppuType ( static_cast < const uno : : Reference < text : : XDependentTextField > * > ( 0 ) ) ;
2000-09-18 23:08:29 +00:00
}
/*-- 21.12.98 10:35:17---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
sal_Bool SwXTextFieldTypes : : hasElements ( void ) throw ( uno : : RuntimeException )
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
if ( ! IsValid ( ) )
throw uno : : RuntimeException ( ) ;
//es gibt sie immer
return sal_True ;
}
/* -----------------24.02.99 16:19-------------------
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
void SwXTextFieldTypes : : refresh ( void ) throw ( uno : : RuntimeException )
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
if ( ! IsValid ( ) )
throw uno : : RuntimeException ( ) ;
UnoActionContext aContext ( GetDoc ( ) ) ;
SwDocStat aDocStat ;
2000-11-20 13:47:36 +00:00
GetDoc ( ) - > UpdateDocStat ( aDocStat ) ;
2000-09-18 23:08:29 +00:00
GetDoc ( ) - > UpdateFlds ( 0 , sal_False ) ;
2002-07-12 09:31:33 +00:00
// call refresh listeners
aRefreshCont . Refreshed ( ) ;
2000-09-18 23:08:29 +00:00
}
/* -----------------24.02.99 16:19-------------------
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
void SwXTextFieldTypes : : addRefreshListener ( const uno : : Reference < util : : XRefreshListener > & l )
throw ( uno : : RuntimeException )
{
2002-07-12 09:31:33 +00:00
: : vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
if ( ! IsValid ( ) )
2007-06-05 16:32:51 +00:00
throw uno : : RuntimeException ( ) ;
aRefreshCont . AddListener ( reinterpret_cast < const uno : : Reference < lang : : XEventListener > & > ( l ) ) ;
2000-09-18 23:08:29 +00:00
}
/* -----------------24.02.99 16:19-------------------
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
void SwXTextFieldTypes : : removeRefreshListener ( const uno : : Reference < util : : XRefreshListener > & l )
throw ( uno : : RuntimeException )
{
2002-07-12 09:31:33 +00:00
: : vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
2007-06-05 16:32:51 +00:00
if ( ! IsValid ( ) | | ! aRefreshCont . RemoveListener ( reinterpret_cast < const uno : : Reference < lang : : XEventListener > & > ( l ) ) )
throw uno : : RuntimeException ( ) ;
2000-09-18 23:08:29 +00:00
}
/******************************************************************
* SwXFieldEnumeration
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* -----------------------------06.04.00 13:25--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
OUString SwXFieldEnumeration : : getImplementationName ( void ) throw ( uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
return C2U ( " SwXFieldEnumeration " ) ;
}
/* -----------------------------06.04.00 13:25--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
BOOL SwXFieldEnumeration : : supportsService ( const OUString & rServiceName ) throw ( uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
2001-11-06 07:37:32 +00:00
return rServiceName . equalsAsciiL ( RTL_CONSTASCII_STRINGPARAM (
" com.sun.star.text.FieldEnumeration " ) ) ;
2000-09-18 23:08:29 +00:00
}
/* -----------------------------06.04.00 13:25--------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007-06-05 16:32:51 +00:00
uno : : Sequence < OUString > SwXFieldEnumeration : : getSupportedServiceNames ( void ) throw ( uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
2007-06-05 16:32:51 +00:00
uno : : Sequence < OUString > aRet ( 1 ) ;
2000-09-18 23:08:29 +00:00
OUString * pArray = aRet . getArray ( ) ;
pArray [ 0 ] = C2U ( " com.sun.star.text.FieldEnumeration " ) ;
return aRet ;
}
/* -----------------21.12.98 14:57-------------------
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
SwXFieldEnumeration : : SwXFieldEnumeration ( SwDoc * pDc ) :
2007-09-27 08:36:28 +00:00
nNextIndex ( 0 ) ,
pDoc ( pDc )
2000-09-18 23:08:29 +00:00
{
pDoc - > GetPageDescFromPool ( RES_POOLPAGE_STANDARD ) - > Add ( this ) ;
2002-07-05 07:40:42 +00:00
// build sequence
sal_Int32 nSize = 32 ;
aItems . realloc ( nSize ) ;
2007-06-05 16:32:51 +00:00
uno : : Reference < text : : XTextField > * pItems = aItems . getArray ( ) ;
2002-07-05 07:40:42 +00:00
sal_Int32 nFillPos = 0 ;
//
const SwFldTypes * pFldTypes = pDoc - > GetFldTypes ( ) ;
sal_uInt16 nCount = pFldTypes - > Count ( ) ;
for ( sal_uInt16 nType = 0 ; nType < nCount ; + + nType )
{
const SwFieldType * pCurType = pFldTypes - > GetObject ( nType ) ;
SwClientIter aIter ( * ( SwFieldType * ) pCurType ) ;
const SwFmtFld * pCurFldFmt = ( SwFmtFld * ) aIter . First ( TYPE ( SwFmtFld ) ) ;
while ( pCurFldFmt )
{
const SwTxtFld * pTxtFld = pCurFldFmt - > GetTxtFld ( ) ;
// skip fields that are currently not in the document
// e.g. fields in undo or redo array
BOOL bSkip = ! pTxtFld | |
! pTxtFld - > GetpTxtNode ( ) - > GetNodes ( ) . IsDocNodes ( ) ;
if ( ! bSkip )
pItems [ nFillPos + + ] = new SwXTextField ( * pCurFldFmt , pDoc ) ;
pCurFldFmt = ( SwFmtFld * ) aIter . Next ( ) ;
// enlarge sequence if necessary
if ( aItems . getLength ( ) = = nFillPos )
{
aItems . realloc ( 2 * aItems . getLength ( ) ) ;
pItems = aItems . getArray ( ) ;
}
}
}
// resize sequence to actual used size
aItems . realloc ( nFillPos ) ;
2000-09-18 23:08:29 +00:00
}
/*-- 21.12.98 14:57:23---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
SwXFieldEnumeration : : ~ SwXFieldEnumeration ( )
{
}
/*-- 21.12.98 14:57:42---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2002-07-05 07:40:42 +00:00
sal_Bool SwXFieldEnumeration : : hasMoreElements ( void )
throw ( uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
2002-07-05 07:40:42 +00:00
return nNextIndex < aItems . getLength ( ) ;
2000-09-18 23:08:29 +00:00
}
/*-- 21.12.98 14:57:42---------------------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
uno : : Any SwXFieldEnumeration : : nextElement ( void )
2007-06-05 16:32:51 +00:00
throw ( container : : NoSuchElementException , lang : : WrappedTargetException , uno : : RuntimeException )
2000-09-18 23:08:29 +00:00
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
2002-07-05 07:40:42 +00:00
if ( ! ( nNextIndex < aItems . getLength ( ) ) )
2007-06-05 16:32:51 +00:00
throw container : : NoSuchElementException ( ) ;
2002-07-05 07:40:42 +00:00
2003-04-15 15:58:08 +00:00
# if OSL_DEBUG_LEVEL > 1
2007-06-05 16:32:51 +00:00
uno : : Reference < text : : XTextField > * pItems = aItems . getArray ( ) ;
2007-09-27 08:36:28 +00:00
( void ) pItems ;
2002-07-05 07:40:42 +00:00
# endif
2007-06-05 16:32:51 +00:00
uno : : Reference < text : : XTextField > & rxFld = aItems . getArray ( ) [ nNextIndex + + ] ;
uno : : Any aRet ( & rxFld , : : getCppuType ( static_cast < const uno : : Reference < text : : XTextField > * > ( 0 ) ) ) ;
2002-07-05 07:40:42 +00:00
rxFld = 0 ; // free memory for item that is not longer used
return aRet ;
2000-09-18 23:08:29 +00:00
}
/* -----------------21.12.98 15:08-------------------
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
void SwXFieldEnumeration : : Modify ( SfxPoolItem * pOld , SfxPoolItem * pNew )
{
ClientModify ( this , pOld , pNew ) ;
if ( ! GetRegisteredIn ( ) )
pDoc = 0 ;
}
2001-06-13 10:54:27 +00:00
2007-06-05 16:32:51 +00:00
String & GetString ( const uno : : Any & rAny , String & rStr )
2001-10-24 17:56:14 +00:00
{
OUString aStr ;
rAny > > = aStr ;
rStr = String ( aStr ) ;
return rStr ;
}