2001-03-21 13:51:13 +00:00
/*************************************************************************
*
2005-09-09 04:23:27 +00:00
* OpenOffice . org - a multi - platform office productivity suite
2001-03-21 13:51:13 +00:00
*
2005-09-09 04:23:27 +00:00
* $ RCSfile : SwXTextDefaults . cxx , v $
2001-03-21 13:51:13 +00:00
*
2006-08-14 15:52:45 +00:00
* $ Revision : 1.18 $
2001-03-21 13:51:13 +00:00
*
2006-08-14 15:52:45 +00:00
* last change : $ Author : hr $ $ Date : 2006 - 08 - 14 16 : 52 : 45 $
2001-03-21 13:51:13 +00:00
*
2005-09-09 04:23:27 +00:00
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1 .
2001-03-21 13:51:13 +00:00
*
*
2005-09-09 04:23:27 +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
2001-03-21 13:51:13 +00:00
*
2005-09-09 04:23:27 +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 .
2001-03-21 13:51:13 +00:00
*
2005-09-09 04:23:27 +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 .
2001-03-21 13:51:13 +00:00
*
2005-09-09 04:23:27 +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
2001-03-21 13:51:13 +00:00
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2002-10-16 07:56:04 +00:00
# ifndef _VOS_MUTEX_HXX_
# include <vos/mutex.hxx>
# endif
# ifndef _SV_SVAPP_HXX
# include <vcl/svapp.hxx>
# endif
# ifndef _COM_SUN_STAR_BEANS_PROPERTYATTRIBUTE_HPP_
# include <com/sun/star/beans/PropertyAttribute.hpp>
# endif
2001-04-04 11:31:33 +00:00
# pragma hdrstop
2001-03-21 13:51:13 +00:00
# ifndef _SW_XTEXT_DEFAULTS_HXX
# include <SwXTextDefaults.hxx>
# endif
2002-10-16 07:56:04 +00:00
# ifndef _SWSTYLENAMEMAPPER_HXX
# include <SwStyleNameMapper.hxx>
# endif
2002-10-16 10:21:25 +00:00
# ifndef _FCHRFMT_HXX
# include <fchrfmt.hxx>
# endif
# ifndef _CHARFMT_HXX
# include <charfmt.hxx>
# endif
2002-10-16 07:56:04 +00:00
# ifndef _DOCSTYLE_HXX
# include <docstyle.hxx>
# endif
2006-08-14 15:52:45 +00:00
# ifndef _DOC_HXX
# include <doc.hxx>
# endif
2002-10-16 07:56:04 +00:00
# ifndef _SWDOCSH_HXX
# include <docsh.hxx>
# endif
2001-03-21 13:51:13 +00:00
# ifndef _UNOMAP_HXX
# include <unomap.hxx>
# endif
2002-10-16 05:55:14 +00:00
# ifndef SW_UNOMID_HXX
# include <unomid.h>
# endif
2002-10-16 07:56:04 +00:00
# ifndef _PARATR_HXX
# include <paratr.hxx>
2001-03-21 13:51:13 +00:00
# endif
# ifndef _UNOPRNMS_HXX
# include <unoprnms.hxx>
# endif
# ifndef _HINTIDS_HXX
# include <hintids.hxx>
# endif
using namespace rtl ;
using namespace com : : sun : : star ;
using namespace com : : sun : : star : : uno ;
using namespace com : : sun : : star : : beans ;
using namespace com : : sun : : star : : lang ;
2002-10-16 05:55:14 +00:00
// declarations
void lcl_setPageDesc ( SwDoc * , const uno : : Any & , SfxItemSet & ) ; // from unoobj.cxx
2002-08-15 13:54:39 +00:00
# define C2U(cChar) OUString::createFromAscii(cChar)
2001-03-21 13:51:13 +00:00
SwXTextDefaults : : SwXTextDefaults ( SwDoc * pNewDoc )
: pDoc ( pNewDoc )
, aPropSet ( aSwMapProvider . GetPropertyMap ( PROPERTY_MAP_TEXT_DEFAULT ) )
{
}
2002-08-15 13:54:39 +00:00
2001-03-21 13:51:13 +00:00
SwXTextDefaults : : ~ SwXTextDefaults ( )
{
}
2002-08-15 13:54:39 +00:00
2001-03-21 13:51:13 +00:00
Reference < XPropertySetInfo > SAL_CALL SwXTextDefaults : : getPropertySetInfo ( )
throw ( RuntimeException )
{
static uno : : Reference < XPropertySetInfo > xRef = aPropSet . getPropertySetInfo ( ) ;
return xRef ;
}
2002-08-15 13:54:39 +00:00
2001-03-21 13:51:13 +00:00
void SAL_CALL SwXTextDefaults : : setPropertyValue ( const OUString & rPropertyName , const Any & aValue )
throw ( UnknownPropertyException , PropertyVetoException , IllegalArgumentException , WrappedTargetException , RuntimeException )
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
if ( ! pDoc )
throw RuntimeException ( ) ;
const SfxItemPropertyMap * pMap = SfxItemPropertyMap : : GetByName ( aPropSet . getPropertyMap ( ) , rPropertyName ) ;
if ( ! pMap )
2001-11-28 19:01:17 +00:00
throw UnknownPropertyException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( " Unknown property: " ) ) + rPropertyName , static_cast < cppu : : OWeakObject * > ( this ) ) ;
2001-03-21 13:51:13 +00:00
if ( pMap - > nFlags & PropertyAttribute : : READONLY )
2002-08-14 09:10:46 +00:00
throw PropertyVetoException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( " Property is read-only: " ) ) + rPropertyName , static_cast < cppu : : OWeakObject * > ( this ) ) ;
2002-10-16 05:55:14 +00:00
2001-06-07 13:54:02 +00:00
const SfxPoolItem & rItem = pDoc - > GetDefault ( pMap - > nWID ) ;
2002-10-16 05:55:14 +00:00
if ( RES_PAGEDESC = = pMap - > nWID & & MID_PAGEDESC_PAGEDESCNAME = = pMap - > nMemberId )
{
SfxItemSet aSet ( pDoc - > GetAttrPool ( ) , RES_PAGEDESC , RES_PAGEDESC ) ;
aSet . Put ( rItem ) ;
lcl_setPageDesc ( pDoc , aValue , aSet ) ;
pDoc - > SetDefault ( aSet . Get ( RES_PAGEDESC ) ) ;
}
2002-10-16 10:21:25 +00:00
else if ( ( RES_PARATR_DROP = = pMap - > nWID & & MID_DROPCAP_CHAR_STYLE_NAME = = pMap - > nMemberId ) | |
( RES_TXTATR_CHARFMT = = pMap - > nWID ) )
2002-10-16 07:56:04 +00:00
{
OUString uStyle ;
if ( aValue > > = uStyle )
{
String sStyle ;
SwStyleNameMapper : : FillUIName ( uStyle , sStyle , GET_POOLID_CHRFMT , sal_True ) ;
SwDocStyleSheet * pStyle =
( SwDocStyleSheet * ) pDoc - > GetDocShell ( ) - > GetStyleSheetPool ( ) - > Find ( sStyle , SFX_STYLE_FAMILY_CHAR ) ;
SwFmtDrop * pDrop = 0 ;
2002-10-16 10:21:25 +00:00
SwFmtCharFmt * pCharFmt = 0 ;
2002-10-16 07:56:04 +00:00
if ( pStyle )
{
SwDocStyleSheet aStyle ( * ( SwDocStyleSheet * ) pStyle ) ;
2002-10-16 10:21:25 +00:00
if ( RES_PARATR_DROP = = pMap - > nWID )
{
pDrop = ( SwFmtDrop * ) rItem . Clone ( ) ; // because rItem ist const...
pDrop - > SetCharFmt ( aStyle . GetCharFmt ( ) ) ;
pDoc - > SetDefault ( * pDrop ) ;
}
else // RES_TXTATR_CHARFMT == pMap->nWID
{
pCharFmt = ( SwFmtCharFmt * ) rItem . Clone ( ) ; // because rItem ist const...
pCharFmt - > SetCharFmt ( aStyle . GetCharFmt ( ) ) ;
pDoc - > SetDefault ( * pCharFmt ) ;
}
2002-10-16 07:56:04 +00:00
}
else
throw lang : : IllegalArgumentException ( ) ;
delete pDrop ;
2002-10-16 10:21:25 +00:00
delete pCharFmt ;
2002-10-16 07:56:04 +00:00
}
else
throw lang : : IllegalArgumentException ( ) ;
}
2002-10-16 05:55:14 +00:00
else
{
SfxPoolItem * pNewItem = rItem . Clone ( ) ;
pNewItem - > PutValue ( aValue , pMap - > nMemberId ) ;
pDoc - > SetDefault ( * pNewItem ) ;
delete pNewItem ;
}
2001-03-21 13:51:13 +00:00
}
2002-08-15 13:54:39 +00:00
2001-03-21 13:51:13 +00:00
Any SAL_CALL SwXTextDefaults : : getPropertyValue ( const OUString & rPropertyName )
throw ( UnknownPropertyException , WrappedTargetException , RuntimeException )
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
if ( ! pDoc )
throw RuntimeException ( ) ;
const SfxItemPropertyMap * pMap = SfxItemPropertyMap : : GetByName ( aPropSet . getPropertyMap ( ) , rPropertyName ) ;
if ( ! pMap )
2001-11-28 19:01:17 +00:00
throw UnknownPropertyException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( " Unknown property: " ) ) + rPropertyName , static_cast < cppu : : OWeakObject * > ( this ) ) ;
2001-03-21 13:51:13 +00:00
Any aRet ;
2001-06-07 13:54:02 +00:00
const SfxPoolItem & rItem = pDoc - > GetDefault ( pMap - > nWID ) ;
rItem . QueryValue ( aRet , pMap - > nMemberId ) ;
2001-03-21 13:51:13 +00:00
return aRet ;
}
2002-08-15 13:54:39 +00:00
2001-03-21 13:51:13 +00:00
void SAL_CALL SwXTextDefaults : : addPropertyChangeListener ( const OUString & rPropertyName , const Reference < XPropertyChangeListener > & xListener )
throw ( UnknownPropertyException , WrappedTargetException , RuntimeException )
{
DBG_WARNING ( " not implemented " ) ;
}
2002-08-15 13:54:39 +00:00
2001-03-21 13:51:13 +00:00
void SAL_CALL SwXTextDefaults : : removePropertyChangeListener ( const OUString & rPropertyName , const Reference < XPropertyChangeListener > & aListener )
throw ( UnknownPropertyException , WrappedTargetException , RuntimeException )
{
DBG_WARNING ( " not implemented " ) ;
}
2002-08-15 13:54:39 +00:00
2001-03-21 13:51:13 +00:00
void SAL_CALL SwXTextDefaults : : addVetoableChangeListener ( const OUString & rPropertyName , const Reference < XVetoableChangeListener > & aListener )
throw ( UnknownPropertyException , WrappedTargetException , RuntimeException )
{
DBG_WARNING ( " not implemented " ) ;
}
2002-08-15 13:54:39 +00:00
2001-03-21 13:51:13 +00:00
void SAL_CALL SwXTextDefaults : : removeVetoableChangeListener ( const OUString & rPropertyName , const Reference < XVetoableChangeListener > & aListener )
throw ( UnknownPropertyException , WrappedTargetException , RuntimeException )
{
DBG_WARNING ( " not implemented " ) ;
}
2002-08-15 13:54:39 +00:00
// XPropertyState
2001-03-21 13:51:13 +00:00
PropertyState SAL_CALL SwXTextDefaults : : getPropertyState ( const OUString & rPropertyName )
throw ( UnknownPropertyException , RuntimeException )
{
vos : : OGuard aGuard ( Application : : GetSolarMutex ( ) ) ;
PropertyState eRet = PropertyState_DIRECT_VALUE ;
if ( ! pDoc )
throw RuntimeException ( ) ;
const SfxItemPropertyMap * pMap = SfxItemPropertyMap : : GetByName ( aPropSet . getPropertyMap ( ) , rPropertyName ) ;
if ( ! pMap )
2001-11-28 19:01:17 +00:00
throw UnknownPropertyException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( " Unknown property: " ) ) + rPropertyName , static_cast < cppu : : OWeakObject * > ( this ) ) ;
2001-06-07 13:54:02 +00:00
const SfxPoolItem & rItem = pDoc - > GetDefault ( pMap - > nWID ) ;
if ( IsStaticDefaultItem ( & rItem ) )
eRet = PropertyState_DEFAULT_VALUE ;
2001-03-21 13:51:13 +00:00
return eRet ;
}
2002-08-15 13:54:39 +00:00
2001-03-21 13:51:13 +00:00
Sequence < PropertyState > SAL_CALL SwXTextDefaults : : getPropertyStates ( const Sequence < OUString > & rPropertyNames )
throw ( UnknownPropertyException , RuntimeException )
{
const sal_Int32 nCount = rPropertyNames . getLength ( ) ;
const OUString * pNames = rPropertyNames . getConstArray ( ) ;
Sequence < PropertyState > aRet ( nCount ) ;
PropertyState * pState = aRet . getArray ( ) ;
for ( sal_Int32 nIndex = 0 ; nIndex < nCount ; nIndex + + )
pState [ nIndex ] = getPropertyState ( pNames [ nIndex ] ) ;
return aRet ;
}
2002-08-15 13:54:39 +00:00
2001-03-21 13:51:13 +00:00
void SAL_CALL SwXTextDefaults : : setPropertyToDefault ( const OUString & rPropertyName )
throw ( UnknownPropertyException , RuntimeException )
{
if ( ! pDoc )
throw RuntimeException ( ) ;
const SfxItemPropertyMap * pMap = SfxItemPropertyMap : : GetByName ( aPropSet . getPropertyMap ( ) , rPropertyName ) ;
if ( ! pMap )
2001-11-28 19:01:17 +00:00
throw UnknownPropertyException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( " Unknown property: " ) ) + rPropertyName , static_cast < cppu : : OWeakObject * > ( this ) ) ;
2001-03-21 13:51:13 +00:00
if ( pMap - > nFlags & PropertyAttribute : : READONLY )
2004-08-11 14:41:27 +00:00
throw RuntimeException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( " setPropertyToDefault: property is read-only: " ) ) + rPropertyName , static_cast < cppu : : OWeakObject * > ( this ) ) ;
SfxItemPool rSet ( pDoc - > GetAttrPool ( ) ) ;
rSet . ResetPoolDefaultItem ( pMap - > nWID ) ;
2001-03-21 13:51:13 +00:00
}
2002-08-15 13:54:39 +00:00
2001-03-21 13:51:13 +00:00
Any SAL_CALL SwXTextDefaults : : getPropertyDefault ( const OUString & rPropertyName )
throw ( UnknownPropertyException , WrappedTargetException , RuntimeException )
{
if ( ! pDoc )
throw RuntimeException ( ) ;
const SfxItemPropertyMap * pMap = SfxItemPropertyMap : : GetByName ( aPropSet . getPropertyMap ( ) , rPropertyName ) ;
if ( ! pMap )
2001-11-28 19:01:17 +00:00
throw UnknownPropertyException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( " Unknown property: " ) ) + rPropertyName , static_cast < cppu : : OWeakObject * > ( this ) ) ;
2001-03-21 13:51:13 +00:00
Any aRet ;
SfxItemPool rSet ( pDoc - > GetAttrPool ( ) ) ;
const SfxPoolItem * pItem = rSet . GetPoolDefaultItem ( pMap - > nWID ) ;
pItem - > QueryValue ( aRet , pMap - > nMemberId ) ;
return aRet ;
}
2002-08-15 13:54:39 +00:00
rtl : : OUString SAL_CALL SwXTextDefaults : : getImplementationName ( )
throw ( RuntimeException )
{
return C2U ( " SwXTextDefaults " ) ;
}
sal_Bool SAL_CALL SwXTextDefaults : : supportsService ( const : : rtl : : OUString & rServiceName )
throw ( RuntimeException )
{
return rServiceName = = C2U ( " com.sun.star.text.Defaults " ) | |
rServiceName = = C2U ( " com.sun.star.style.CharacterProperties " ) | |
rServiceName = = C2U ( " com.sun.star.style.CharacterPropertiesAsian " ) | |
rServiceName = = C2U ( " com.sun.star.style.CharacterPropertiesComplex " ) | |
rServiceName = = C2U ( " com.sun.star.style.ParagraphProperties " ) | |
2002-09-26 06:18:30 +00:00
rServiceName = = C2U ( " com.sun.star.style.ParagraphPropertiesAsian " ) | |
2002-08-15 13:54:39 +00:00
rServiceName = = C2U ( " com.sun.star.style.ParagraphPropertiesComplex " ) ;
}
uno : : Sequence < : : rtl : : OUString > SAL_CALL SwXTextDefaults : : getSupportedServiceNames ( )
throw ( RuntimeException )
{
2002-09-26 06:18:30 +00:00
uno : : Sequence < OUString > aRet ( 7 ) ;
2002-08-15 13:54:39 +00:00
OUString * pArr = aRet . getArray ( ) ;
* pArr + + = C2U ( " com.sun.star.text.Defaults " ) ;
* pArr + + = C2U ( " com.sun.star.style.CharacterProperties " ) ;
* pArr + + = C2U ( " com.sun.star.style.CharacterPropertiesAsian " ) ;
* pArr + + = C2U ( " com.sun.star.style.CharacterPropertiesComplex " ) ;
* pArr + + = C2U ( " com.sun.star.style.ParagraphProperties " ) ;
2002-09-26 06:18:30 +00:00
* pArr + + = C2U ( " com.sun.star.style.ParagraphPropertiesAsian " ) ;
* pArr + + = C2U ( " com.sun.star.style.ParagraphPropertiesComplex " ) ;
2002-08-15 13:54:39 +00:00
return aRet ;
}