summaryrefslogtreecommitdiff
path: root/binfilter/bf_sw/source/core/unocore/sw_unosett.cxx
diff options
context:
space:
mode:
authorBjoern Michaelsen <bjoern.michaelsen@canonical.com>2011-08-23 15:10:15 +0200
committerBjoern Michaelsen <bjoern.michaelsen@canonical.com>2011-08-23 15:10:15 +0200
commit5c22c7b613228daf8f46baf70928ae7da6485289 (patch)
tree75ae8ba4d004cdfbf539762aa8fd819d4760b56a /binfilter/bf_sw/source/core/unocore/sw_unosett.cxx
parent62479cc5aa788ddebf9fa23e0124a0dc2495426c (diff)
recreated tag libreoffice-3.3.1.1 which had these commits:
commit 1163151cf51a15a68700eda522ba7a789e378361 (tag: refs/tags/libreoffice-3.3.1.1) Author: Petr Mladek <pmladek@suse.cz> Date: Tue Feb 8 18:07:43 2011 +0100 Version 3.3.1.1, tag libreoffice-3.3.1.1 (3.3.1-rc1) commit 3d8f2d6ee7f86ec048ffca70a7dd59efb64ab90c Author: Jan Holesovsky <kendy@suse.cz> Date: Mon Feb 7 21:23:24 2011 +0100 Branch libreoffice-3-3-1 This is 'libreoffice-3-3-1' - the stable branch for the 3.3.1 release. Only very safe changes, reviewed by three people are allowed. If you want to commit more complicated fix for the next 3.3.x release, please use the 'libreoffice-3-3' branch. If you want to build something cool, unstable, and risky, use master. commit 4d86423be75125185f7e220877839c68934bfedc Author: Joseph Powers <jpowers27@cox.net> Date: Mon Feb 7 16:32:57 2011 +0000 cherry picked from 0679158ebb6c84863e6e0e2fe877ea06eba4a2d4 Move XServiceInfo.hpp from DEBUG to main. Now that XServiceInfo is always used, it would be nice to always include if defination. This fixes a compile error on mac. PS: Also some trailing white space. The changed code all appears at the top of the patch. Signed-off-by: Noel Power <noel.power@novell.com> writerfilter/source/dmapper/DomainMapper_Impl.cxx | 144 ++++++++++---------- 1 files changed, 72 insertions(+), 72 deletions(-) commit 8efa2697b2a2737ee5951358878a17203073ac49 Author: Noel Power <noel.power@novell.com> Date: Mon Feb 7 12:01:46 2011 +0000 fix for bnc#655763 cherry picked from ae5d018c49d3ab61416cde7fb09c37bcce7d9566 reviewed in bug https://bugzilla.novell.com/show_bug.cgi?id=655763#c6 Signed-off-by: Cedric Bosdonnat <cbosdonnat@novell.com> writerfilter/source/dmapper/DomainMapper_Impl.cxx | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) commit 780535edc21bc230a859d672b7408f10e2691a38 Author: Petr Mladek <pmladek@suse.cz> Date: Wed Feb 2 17:09:03 2011 +0100 RTF export crasher (bnc#656503) Signed off by Cedric filter/source/msfilter/escherex.cxx | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit ecda6f3b42d84e88d35d4d6bd4ea5cc32b9b8c89 Author: Takeshi Kurosawa <taken.spc@gmail.com> Date: Thu Jan 27 14:31:57 2011 +0900 Use product name for EPS Creator header (cherry picked from commit 2d07f1d678dc868687a9ae8c326b766e7def21c2) Signed-off-by: Thorsten Behrens <tbehrens@novell.com> filter/source/graphicfilter/eps/eps.cxx | 16 +++++++++++++++- filter/source/graphicfilter/eps/makefile.mk | 2 +- 2 files changed, 16 insertions(+), 2 deletions(-) commit dd73734f0440787d84ddbe5737e7f996803dacf2 Author: Takeshi Kurosawa <taken.spc@gmail.com> Date: Thu Jan 27 13:45:16 2011 +0900 Parse 'color' property (fdo#33551) Parse 'color' property and store the value as currentColor. (cherry picked from commit d4bac116d0c35d8811a048fdd991363a32df14ca) Signed-off-by: Thorsten Behrens <tbehrens@novell.com> filter/source/svg/svgreader.cxx | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) commit 9a7fcfcf49e393c02e8d115dfa4a40811582375f Author: Fridrich Štrba <fridrich.strba@bluewin.ch> Date: Sun Jan 30 10:22:38 2011 +0100 Use double instead of float (cherry picked from commit c90c5d503543a960a05b43752a5dff9ccf4bcd30) Signed-off-by: Caolán McNamara <caolanm@redhat.com> writerperfect/source/filter/DocumentCollector.cxx | 2 +- writerperfect/source/filter/DocumentCollector.hxx | 2 +- writerperfect/source/filter/FilterInternal.hxx | 6 +++--- writerperfect/source/filter/ListStyle.cxx | 12 ++++++------ writerperfect/source/filter/SectionStyle.cxx | 2 +- writerperfect/source/filter/TextRunStyle.cxx | 6 +++--- writerperfect/source/filter/WriterProperties.hxx | 4 ++-- 7 files changed, 17 insertions(+), 17 deletions(-) commit 9fd267985820db81454cce1b4a76752769b471b7 Author: Thomas Klausner <wiz@NetBSD.org> Date: Sat Nov 6 00:30:42 2010 +0100 Use PYTHON as passed through by set_soenv.in. filter/source/config/fragments/makefile.mk | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 82102abd307f911c400735eb6f9b43fa69d221d8 Author: Noel Power <noel.power@novell.com> Date: Tue Jan 18 12:58:17 2011 +0000 fdo#33237 remove debug line writerfilter/source/dmapper/DomainMapper_Impl.cxx | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit 9c976ba4f8e1fd2bcd40412873e22728ed83d5bd Author: Noel Power <noel.power@novell.com> Date: Tue Jan 18 12:43:50 2011 +0000 fdo#33237# fix ole object import for writer (docx) writerfilter/source/dmapper/DomainMapper_Impl.cxx | 41 +++++++++++++++++++++ 1 files changed, 41 insertions(+), 0 deletions(-) commit 8383f008c60c0615005f4bb22ae9ddaeca4540cf Author: Fridrich Štrba <fridrich.strba@bluewin.ch> Date: Tue Jan 18 11:12:52 2011 +0100 Fix a typo SolarMuexGuard -> SolarMutexGuard signoff: Jan Holesovsky <kendy@suse.cz> signoff: Thorsten Behrens <thb@documentfoundation.org> signoff: Tor Lillqvist <tlillqvist@novell.com> signoff: Petr Mladek <pmladek@suse.cz> binfilter/bf_so3/source/ole/socli.cxx | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 247a91f1df71614fc8d9b2264d10f0952055c611 Author: Petr Mladek <pmladek@suse.cz> Date: Tue Jan 11 23:05:56 2011 +0100 Please, ignore the previous message; it was for the libreoffice-3-3-0 branch This is 'libreoffice-3-3' - the stable branch for the 3.3.x releases. Only safe changes, reviewed by anoter person are allowed. If you want to build something cool, unstable, and risky, use master. commit 9628deac573830fdfbce2c402f8574379ac71a35 Author: Petr Mladek <pmladek@suse.cz> Date: Tue Jan 11 22:39:07 2011 +0100 Branch libreoffice-3-3-0 This is 'libreoffice-3-3-0' - the stable branch for the 3.3.0 release. Only very safe changes, reviewed by three people are allowed. If you want to commit more complicated fix for the next 3.3.x release, please use the 'libreoffice-3-3' branch. If you want to build something cool, unstable, and risky, use master.
Notes
split repo tag: filters_libreoffice-3.3.1.1 split repo tag: filters_libreoffice-3.3.1.2
Diffstat (limited to 'binfilter/bf_sw/source/core/unocore/sw_unosett.cxx')
-rw-r--r--binfilter/bf_sw/source/core/unocore/sw_unosett.cxx2414
1 files changed, 2414 insertions, 0 deletions
diff --git a/binfilter/bf_sw/source/core/unocore/sw_unosett.cxx b/binfilter/bf_sw/source/core/unocore/sw_unosett.cxx
new file mode 100644
index 000000000000..b8e06a97cc20
--- /dev/null
+++ b/binfilter/bf_sw/source/core/unocore/sw_unosett.cxx
@@ -0,0 +1,2414 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifdef _MSC_VER
+#pragma hdrstop
+#endif
+
+#include <swtypes.hxx>
+#include <cmdid.h>
+#include <hintids.hxx>
+#include "poolfmt.hrc"
+#include "poolfmt.hxx"
+
+#include <errhdl.hxx>
+
+#include <fmtcol.hxx>
+
+#include <unomap.hxx>
+
+#include <cppuhelper/implbase4.hxx>
+
+#include <unostyle.hxx>
+#include <unosett.hxx>
+#include <unoprnms.hxx>
+#include <bf_svtools/itemprop.hxx>
+#include <ftninfo.hxx>
+
+#include <horiornt.hxx>
+
+#include <doc.hxx>
+#include <pagedesc.hxx>
+#include <charfmt.hxx>
+#include <lineinfo.hxx>
+#include <docsh.hxx>
+#include <docary.hxx>
+#include <docstyle.hxx>
+#include <fmtclds.hxx>
+#include <bf_svx/brshitem.hxx>
+#include <com/sun/star/text/XFootnotesSettingsSupplier.hpp>
+#include <com/sun/star/text/XFootnote.hpp>
+#include <com/sun/star/text/XFootnotesSupplier.hpp>
+#include <com/sun/star/text/XEndnotesSupplier.hpp>
+#include <com/sun/star/text/XEndnotesSettingsSupplier.hpp>
+#include <com/sun/star/text/FootnoteNumbering.hpp>
+#include <com/sun/star/text/HoriOrientation.hpp>
+#include <com/sun/star/style/LineNumberPosition.hpp>
+#include <com/sun/star/awt/XBitmap.hpp>
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+#include <com/sun/star/style/VerticalAlignment.hpp>
+#include <unoobj.hxx>
+#include <vcl/font.hxx>
+#include <bf_svx/flstitem.hxx>
+#include <vcl/metric.hxx>
+#include <bf_svtools/ctrltool.hxx>
+#include <osl/mutex.hxx>
+#include <vcl/svapp.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+#include <bf_svx/unofdesc.hxx>
+#include <bf_svx/unomid.hxx>
+#include <vcl/graph.hxx>
+#include <rtl/string.hxx>
+#include <fmtornt.hxx>
+#include <unomid.h>
+#include <SwStyleNameMapper.hxx>
+namespace binfilter {
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::style;
+
+using rtl::OUString;
+
+struct PropValData
+{
+ uno::Any aVal;
+ OUString sPropName;
+ PropValData(void* pVal, const char* cPropName, uno::Type aType ) :
+ aVal(pVal, aType),
+ sPropName(OUString::createFromAscii(cPropName))
+ {}
+ PropValData(const uno::Any& rVal, const OUString& rPropName) :
+ aVal(rVal),
+ sPropName(rPropName)
+ {}
+};
+
+typedef PropValData* PropValDataPtr;
+SV_DECL_PTRARR(PropValDataArr, PropValDataPtr, 5, 5 )
+SV_IMPL_PTRARR(PropValDataArr, PropValDataPtr)
+
+
+#define WID_PREFIX 0
+#define WID_SUFFIX 1
+#define WID_NUMBERING_TYPE 2
+#define WID_START_AT 3
+#define WID_FOOTNOTE_COUNTING 4
+#define WID_PARAGRAPH_STYLE 5
+#define WID_PAGE_STYLE 6
+#define WID_CHARACTER_STYLE 7
+#define WID_POSITION_END_OF_DOC 8
+#define WID_END_NOTICE 9
+#define WID_BEGIN_NOTICE 10
+#define WID_ANCHOR_CHARACTER_STYLE 11
+
+const SfxItemPropertyMap* GetFootnoteMap()
+{
+ static SfxItemPropertyMap aFootnoteMap_Impl[] =
+ {
+ { SW_PROP_NAME(UNO_NAME_ANCHOR_CHAR_STYLE_NAME),WID_ANCHOR_CHARACTER_STYLE, &::getCppuType((const OUString*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_BEGIN_NOTICE), WID_BEGIN_NOTICE, &::getCppuType((const OUString*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_CHAR_STYLE_NAME), WID_CHARACTER_STYLE, &::getCppuType((const OUString*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_END_NOTICE), WID_END_NOTICE , &::getCppuType((const OUString*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_FOOTNOTE_COUNTING), WID_FOOTNOTE_COUNTING, &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_NUMBERING_TYPE), WID_NUMBERING_TYPE, &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_PAGE_STYLE_NAME), WID_PAGE_STYLE, &::getCppuType((const OUString*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_PARA_STYLE_NAME), WID_PARAGRAPH_STYLE, &::getCppuType((const OUString*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_POSITION_END_OF_DOC), WID_POSITION_END_OF_DOC,&::getBooleanCppuType(), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_PREFIX), WID_PREFIX, &::getCppuType((const OUString*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_START_AT), WID_START_AT , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_SUFFIX), WID_SUFFIX, &::getCppuType((const OUString*)0), PROPERTY_NONE, 0},
+ {0,0,0,0}
+ };
+ return aFootnoteMap_Impl;
+}
+const SfxItemPropertyMap* GetEndnoteMap()
+{
+ static SfxItemPropertyMap aEndnoteMap_Impl[] =
+ {
+ { SW_PROP_NAME(UNO_NAME_ANCHOR_CHAR_STYLE_NAME),WID_ANCHOR_CHARACTER_STYLE, &::getCppuType((const OUString*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_CHAR_STYLE_NAME), WID_CHARACTER_STYLE, &::getCppuType((const OUString*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_NUMBERING_TYPE), WID_NUMBERING_TYPE, &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_PAGE_STYLE_NAME), WID_PAGE_STYLE, &::getCppuType((const OUString*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_PARA_STYLE_NAME), WID_PARAGRAPH_STYLE, &::getCppuType((const OUString*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_PREFIX), WID_PREFIX, &::getCppuType((const OUString*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_START_AT), WID_START_AT , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_SUFFIX), WID_SUFFIX, &::getCppuType((const OUString*)0), PROPERTY_NONE, 0},
+ {0,0,0,0}
+ };
+ return aEndnoteMap_Impl;
+}
+const SfxItemPropertyMap* GetNumberingRulesMap()
+{
+ static SfxItemPropertyMap aNumberingRulesMap_Impl[] =
+ {
+ { SW_PROP_NAME(UNO_NAME_IS_ABSOLUTE_MARGINS), WID_IS_ABS_MARGINS, &::getBooleanCppuType(), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_IS_AUTOMATIC), WID_IS_AUTOMATIC, &::getBooleanCppuType(), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_IS_CONTINUOUS_NUMBERING), WID_CONTINUOUS, &::getBooleanCppuType(), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_NAME), WID_RULE_NAME , &::getCppuType((const OUString*)0), PropertyAttribute::READONLY, 0},
+ {0,0,0,0}
+ };
+ return aNumberingRulesMap_Impl;
+}
+#define WID_NUM_ON 0
+#define WID_SEPARATOR_INTERVAL 1
+#define WID_NUMBERING_TYPE 2
+#define WID_NUMBER_POSITION 3
+#define WID_DISTANCE 4
+#define WID_INTERVAL 5
+#define WID_SEPARATOR_TEXT 6
+//#define WID_CHARACTER_STYLE 7
+#define WID_COUNT_EMPTY_LINES 8
+#define WID_COUNT_LINES_IN_FRAMES 9
+#define WID_RESTART_AT_EACH_PAGE 10
+
+const SfxItemPropertyMap* GetLineNumberingMap()
+{
+ static SfxItemPropertyMap aLineNumberingMap_Impl[] =
+ {
+ { SW_PROP_NAME(UNO_NAME_CHAR_STYLE_NAME), WID_CHARACTER_STYLE, &::getCppuType((const OUString*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_COUNT_EMPTY_LINES), WID_COUNT_EMPTY_LINES , &::getBooleanCppuType(),PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_COUNT_LINES_IN_FRAMES), WID_COUNT_LINES_IN_FRAMES, &::getBooleanCppuType(),PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_DISTANCE ), WID_DISTANCE , &::getCppuType((const sal_Int32*)0),PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_IS_ON), WID_NUM_ON, &::getBooleanCppuType() , PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_INTERVAL ), WID_INTERVAL , &::getCppuType((const sal_Int16*)0),PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_SEPARATOR_TEXT ), WID_SEPARATOR_TEXT, &::getCppuType((const OUString*)0), PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_NUMBER_POSITION), WID_NUMBER_POSITION, &::getCppuType((const sal_Int16*)0),PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_NUMBERING_TYPE), WID_NUMBERING_TYPE , &::getCppuType((const sal_Int16*)0),PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_RESTART_AT_EACH_PAGE), WID_RESTART_AT_EACH_PAGE, &::getBooleanCppuType() , PROPERTY_NONE, 0},
+ { SW_PROP_NAME(UNO_NAME_SEPARATOR_INTERVAL), WID_SEPARATOR_INTERVAL, &::getCppuType((const sal_Int16*)0),PROPERTY_NONE, 0},
+ {0,0,0,0}
+ };
+ return aLineNumberingMap_Impl;
+}
+
+SwCharFmt* lcl_getCharFmt(SwDoc* pDoc, const uno::Any& aValue)
+{
+ SwCharFmt* pRet = 0;
+ String sStandard(SW_RES(STR_POOLCOLL_STANDARD));
+ OUString uTmp;
+ aValue >>= uTmp;
+ String sCharFmt;
+ SwStyleNameMapper::FillUIName(uTmp, sCharFmt, GET_POOLID_CHRFMT, sal_True);
+ if(sStandard != sCharFmt)
+ {
+ pRet = pDoc->FindCharFmtByName( sCharFmt );
+ }
+ if(!pRet)
+ {
+ sal_uInt16 nId = SwStyleNameMapper::GetPoolIdFromUIName(sCharFmt, GET_POOLID_CHRFMT);
+ if(USHRT_MAX != nId)
+ pRet = pDoc->GetCharFmtFromPool( nId );
+ }
+ return pRet;
+}
+
+SwTxtFmtColl* lcl_GetParaStyle(SwDoc* pDoc, const uno::Any& aValue)
+{
+ OUString uTmp;
+ aValue >>= uTmp;
+ String sParaStyle;
+ SwStyleNameMapper::FillUIName(uTmp, sParaStyle, GET_POOLID_TXTCOLL, sal_True );
+ SwTxtFmtColl* pRet = pDoc->FindTxtFmtCollByName( sParaStyle );
+ if( !pRet )
+ {
+ sal_uInt16 nId = SwStyleNameMapper::GetPoolIdFromUIName( sParaStyle, GET_POOLID_TXTCOLL );
+ if( USHRT_MAX != nId )
+ pRet = pDoc->GetTxtCollFromPool( nId );
+ }
+ return pRet;
+}
+
+SwPageDesc* lcl_GetPageDesc(SwDoc* pDoc, const uno::Any& aValue)
+{
+ SwPageDesc* pRet = 0;
+ sal_uInt16 nCount = pDoc->GetPageDescCnt();
+ OUString uTmp;
+ aValue >>= uTmp;
+ String sPageDesc;
+ SwStyleNameMapper::FillUIName(uTmp, sPageDesc, GET_POOLID_PAGEDESC, sal_True );
+ for( sal_uInt16 i = 0; i < nCount; i++)
+ {
+ const SwPageDesc& rDesc = pDoc->GetPageDesc( i );
+ if(rDesc.GetName() == sPageDesc)
+ {
+ pRet = (SwPageDesc*)&rDesc;
+ break;
+ }
+ }
+ if(!pRet)
+ {
+ sal_uInt16 nId = SwStyleNameMapper::GetPoolIdFromUIName(sPageDesc, GET_POOLID_PAGEDESC);
+ if(USHRT_MAX != nId)
+ pRet = pDoc->GetPageDescFromPool( nId );
+ }
+ return pRet;
+}
+
+// Numerierung
+const unsigned short aSvxToUnoAdjust[] =
+{
+ HoriOrientation::LEFT, //3
+ HoriOrientation::RIGHT, //1
+ USHRT_MAX,
+ HoriOrientation::CENTER, //2
+ USHRT_MAX,
+ USHRT_MAX
+};
+
+const unsigned short aUnoToSvxAdjust[] =
+{
+ USHRT_MAX,
+ SVX_ADJUST_RIGHT, // 1
+ SVX_ADJUST_CENTER, // 3
+ SVX_ADJUST_LEFT, // 0
+ USHRT_MAX,
+ USHRT_MAX
+};
+
+/******************************************************************
+ * SwXFootnoteProperties
+ ******************************************************************/
+OUString SwXFootnoteProperties::getImplementationName(void) throw( RuntimeException )
+{
+ return C2U("SwXFootnoteProperties");
+}
+
+BOOL SwXFootnoteProperties::supportsService(const OUString& rServiceName) throw( RuntimeException )
+{
+ return C2U("com.sun.star.text.FootnoteSettings") == rServiceName;
+}
+
+Sequence< OUString > SwXFootnoteProperties::getSupportedServiceNames(void) throw( RuntimeException )
+{
+ Sequence< OUString > aRet(1);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = C2U("com.sun.star.text.FootnoteSettings");
+ return aRet;
+}
+
+SwXFootnoteProperties::SwXFootnoteProperties(SwDoc* pDc) :
+ pDoc(pDc),
+ _pMap(GetFootnoteMap())
+{
+}
+
+SwXFootnoteProperties::~SwXFootnoteProperties()
+{
+}
+
+uno::Reference< beans::XPropertySetInfo > SwXFootnoteProperties::getPropertySetInfo(void)
+ throw( uno::RuntimeException )
+{
+ static uno::Reference< beans::XPropertySetInfo > aRef = new SfxItemPropertySetInfo( _pMap );
+ return aRef;
+}
+
+void SwXFootnoteProperties::setPropertyValue(const OUString& rPropertyName, const uno::Any& aValue)
+ throw( beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ SolarMutexGuard aGuard;
+ if(pDoc)
+ {
+ const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName(
+ _pMap, rPropertyName);
+ if(pMap)
+ {
+ if ( pMap->nFlags & PropertyAttribute::READONLY)
+ throw PropertyVetoException( OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Property is read-only: " ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
+ SwFtnInfo aFtnInfo(pDoc->GetFtnInfo());
+ switch(pMap->nWID)
+ {
+ case WID_PREFIX:
+ {
+ OUString uTmp;
+ aValue >>= uTmp;
+ aFtnInfo.SetPrefix(uTmp);
+ }
+ break;
+ case WID_SUFFIX:
+ {
+ OUString uTmp;
+ aValue >>= uTmp;
+ aFtnInfo.SetSuffix(uTmp);
+ }
+ break;
+ case WID_NUMBERING_TYPE :
+ {
+ INT16 nTmp;
+ aValue >>= nTmp;
+ if(nTmp >= 0 &&
+ (nTmp <= SVX_NUM_ARABIC ||
+ nTmp > SVX_NUM_BITMAP))
+ aFtnInfo.aFmt.SetNumberingType(nTmp);
+ else
+ throw lang::IllegalArgumentException();
+ }
+ break;
+ case WID_START_AT:
+ {
+ INT16 nTmp;
+ aValue >>= nTmp;
+ aFtnInfo.nFtnOffset = nTmp;
+ }
+ break;
+ case WID_FOOTNOTE_COUNTING :
+ {
+ sal_uInt16 nRet = 0;
+ INT16 nTmp;
+ aValue >>= nTmp;
+ switch(nTmp)
+ {
+ case FootnoteNumbering::PER_PAGE:
+ aFtnInfo.eNum = FTNNUM_PAGE;
+ break;
+ case FootnoteNumbering::PER_CHAPTER:
+ aFtnInfo.eNum = FTNNUM_CHAPTER;
+ break;
+ case FootnoteNumbering::PER_DOCUMENT:
+ aFtnInfo.eNum = FTNNUM_DOC;
+ break;
+ }
+ }
+ break;
+ case WID_PARAGRAPH_STYLE :
+ {
+ SwTxtFmtColl* pColl = lcl_GetParaStyle(pDoc, aValue);
+ if(pColl)
+ aFtnInfo.SetFtnTxtColl(*pColl);
+ }
+ break;
+ case WID_PAGE_STYLE :
+ {
+ SwPageDesc* pDesc = lcl_GetPageDesc(pDoc, aValue);
+ if(pDesc)
+ aFtnInfo.ChgPageDesc( pDesc );
+ }
+ break;
+ case WID_ANCHOR_CHARACTER_STYLE:
+ case WID_CHARACTER_STYLE :
+ {
+ SwCharFmt* pFmt = lcl_getCharFmt(pDoc, aValue);
+ if(pFmt)
+ {
+ if(pMap->nWID == WID_ANCHOR_CHARACTER_STYLE)
+ aFtnInfo.SetAnchorCharFmt(pFmt);
+ else
+ aFtnInfo.SetCharFmt(pFmt);
+ }
+ }
+ break;
+ case WID_POSITION_END_OF_DOC:
+ {
+ sal_Bool bVal = *(sal_Bool*)aValue.getValue();
+ aFtnInfo.ePos = bVal ? FTNPOS_CHAPTER : FTNPOS_PAGE;
+ }
+ break;
+ case WID_END_NOTICE :
+ {
+ OUString uTmp;
+ aValue >>= uTmp;
+ aFtnInfo.aQuoVadis = String(uTmp);
+ }
+ break;
+ case WID_BEGIN_NOTICE :
+ {
+ OUString uTmp;
+ aValue >>= uTmp;
+ aFtnInfo.aErgoSum = String(uTmp);
+ }
+ break;
+ }
+ pDoc->SetFtnInfo(aFtnInfo);
+ }
+ else
+ throw beans::UnknownPropertyException(OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Unknown property: " ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
+ }
+ else
+ throw uno::RuntimeException();
+}
+
+uno::Any SwXFootnoteProperties::getPropertyValue(const OUString& rPropertyName)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ SolarMutexGuard aGuard;
+ uno::Any aRet;
+ if(pDoc)
+ {
+ const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName(
+ _pMap, rPropertyName);
+ if(pMap)
+ {
+ const SwFtnInfo& rFtnInfo = pDoc->GetFtnInfo();
+ switch(pMap->nWID)
+ {
+ case WID_PREFIX:
+ {
+ aRet <<= OUString(rFtnInfo.GetPrefix());
+ }
+ break;
+ case WID_SUFFIX:
+ {
+ aRet <<= OUString(rFtnInfo.GetSuffix());
+ }
+ break;
+ case WID_NUMBERING_TYPE :
+ {
+ aRet <<= rFtnInfo.aFmt.GetNumberingType();
+ }
+ break;
+ case WID_START_AT:
+ aRet <<= (sal_Int16)rFtnInfo.nFtnOffset;
+ break;
+ case WID_FOOTNOTE_COUNTING :
+ {
+ sal_Int16 nRet = 0;
+ switch(rFtnInfo.eNum)
+ {
+ case FTNNUM_PAGE:
+ nRet = FootnoteNumbering::PER_PAGE;
+ break;
+ case FTNNUM_CHAPTER:
+ nRet = FootnoteNumbering::PER_CHAPTER;
+ break;
+ case FTNNUM_DOC:
+ nRet = FootnoteNumbering::PER_DOCUMENT;
+ break;
+ }
+ aRet <<= nRet;
+ }
+ break;
+ case WID_PARAGRAPH_STYLE :
+ {
+ SwTxtFmtColl* pColl = rFtnInfo.GetFtnTxtColl();
+ String aString;
+ if(pColl)
+ aString = String ( pColl->GetName() );
+ SwStyleNameMapper::FillProgName(aString, aString, GET_POOLID_TXTCOLL, sal_True);
+ aRet <<= OUString ( aString );
+ }
+ break;
+ case WID_PAGE_STYLE :
+ {
+ String aString;
+ if( rFtnInfo.GetPageDescDep()->GetRegisteredIn() )
+ {
+ SwStyleNameMapper::FillProgName(
+ rFtnInfo.GetPageDesc( *pDoc )->GetName(),
+ aString,
+ GET_POOLID_PAGEDESC,
+ sal_True);
+ }
+ aRet <<= OUString ( aString );
+ }
+ break;
+ case WID_ANCHOR_CHARACTER_STYLE:
+ case WID_CHARACTER_STYLE:
+ {
+ String aString;
+ const SwCharFmt* pCharFmt = 0;
+ if( pMap->nWID == WID_ANCHOR_CHARACTER_STYLE )
+ {
+ if( rFtnInfo.GetAnchorCharFmtDep()->GetRegisteredIn() )
+ pCharFmt = rFtnInfo.GetAnchorCharFmt(*pDoc);
+ }
+ else
+ {
+ if( rFtnInfo.GetCharFmtDep()->GetRegisteredIn() )
+ pCharFmt = rFtnInfo.GetCharFmt(*pDoc);
+ }
+ if( pCharFmt )
+ {
+ SwStyleNameMapper::FillProgName(
+ pCharFmt->GetName(),
+ aString,
+ GET_POOLID_CHRFMT,
+ sal_True);
+ }
+ aRet <<= OUString ( aString );
+ }
+ break;
+ case WID_POSITION_END_OF_DOC:
+ {
+ sal_Bool bTemp = FTNPOS_CHAPTER == rFtnInfo.ePos;
+ aRet.setValue(&bTemp, ::getCppuBooleanType());
+ }
+ break;
+ case WID_END_NOTICE :
+ aRet <<= OUString(rFtnInfo.aQuoVadis);
+ break;
+ case WID_BEGIN_NOTICE :
+ aRet <<= OUString(rFtnInfo.aErgoSum);
+ break;
+ }
+ }
+ else
+ throw UnknownPropertyException(OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Unknown property: " ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
+ }
+ else
+ throw uno::RuntimeException();
+ return aRet;
+}
+
+void SwXFootnoteProperties::addPropertyChangeListener(
+ const OUString& PropertyName, const uno::Reference< beans::XPropertyChangeListener > & aListener)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ DBG_WARNING("not implemented");
+}
+
+void SwXFootnoteProperties::removePropertyChangeListener(
+ const OUString& PropertyName, const uno::Reference< beans::XPropertyChangeListener > & aListener)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ DBG_WARNING("not implemented");
+}
+
+void SwXFootnoteProperties::addVetoableChangeListener(
+ const OUString& PropertyName, const uno::Reference< beans::XVetoableChangeListener > & aListener)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ DBG_WARNING("not implemented");
+}
+
+void SwXFootnoteProperties::removeVetoableChangeListener(
+ const OUString& PropertyName, const uno::Reference< beans::XVetoableChangeListener > & aListener)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ DBG_WARNING("not implemented");
+}
+
+/******************************************************************
+ * SwXEndnoteProperties
+ ******************************************************************/
+OUString SwXEndnoteProperties::getImplementationName(void) throw( RuntimeException )
+{
+ return C2U("SwXEndnoteProperties");
+}
+
+BOOL SwXEndnoteProperties::supportsService(const OUString& rServiceName) throw( RuntimeException )
+{
+ return C2U("com.sun.star.text.FootnoteSettings") == rServiceName;
+}
+
+Sequence< OUString > SwXEndnoteProperties::getSupportedServiceNames(void) throw( RuntimeException )
+{
+ Sequence< OUString > aRet(1);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = C2U("com.sun.star.text.FootnoteSettings");
+ return aRet;
+}
+
+SwXEndnoteProperties::SwXEndnoteProperties(SwDoc* pDc) :
+ pDoc(pDc),
+ _pMap(GetEndnoteMap())
+{
+}
+
+SwXEndnoteProperties::~SwXEndnoteProperties()
+{
+}
+
+uno::Reference< beans::XPropertySetInfo > SwXEndnoteProperties::getPropertySetInfo(void) throw( uno::RuntimeException )
+{
+ static uno::Reference< beans::XPropertySetInfo > aRef = new SfxItemPropertySetInfo( _pMap );
+ return aRef;
+}
+
+void SwXEndnoteProperties::setPropertyValue(const OUString& rPropertyName, const uno::Any& aValue)
+ throw( beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException,
+ lang::WrappedTargetException, uno::RuntimeException )
+{
+ SolarMutexGuard aGuard;
+ if(pDoc)
+ {
+ const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName(
+ _pMap, rPropertyName);
+ if(pMap)
+ {
+ if ( pMap->nFlags & PropertyAttribute::READONLY)
+ throw PropertyVetoException( OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Property is read-only: " ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
+ SwEndNoteInfo aEndInfo(pDoc->GetEndNoteInfo());
+ switch(pMap->nWID)
+ {
+ case WID_PREFIX:
+ {
+ OUString uTmp;
+ aValue >>= uTmp;
+ aEndInfo.SetPrefix(uTmp);
+ }
+ break;
+ case WID_SUFFIX:
+ {
+ OUString uTmp;
+ aValue >>= uTmp;
+ aEndInfo.SetSuffix(uTmp);
+ }
+ break;
+ case WID_NUMBERING_TYPE :
+ {
+ INT16 nTmp;
+ aValue >>= nTmp;
+ aEndInfo.aFmt.SetNumberingType(nTmp);
+ }
+ break;
+ case WID_START_AT:
+ {
+ INT16 nTmp;
+ aValue >>= nTmp;
+ aEndInfo.nFtnOffset = nTmp;
+ }
+ break;
+ case WID_PARAGRAPH_STYLE :
+ {
+ SwTxtFmtColl* pColl = lcl_GetParaStyle(pDoc, aValue);
+ if(pColl)
+ aEndInfo.SetFtnTxtColl(*pColl);
+ }
+ break;
+ case WID_PAGE_STYLE :
+ {
+ SwPageDesc* pDesc = lcl_GetPageDesc(pDoc, aValue);
+ if(pDesc)
+ aEndInfo.ChgPageDesc( pDesc );
+ }
+ break;
+ case WID_ANCHOR_CHARACTER_STYLE:
+ case WID_CHARACTER_STYLE :
+ {
+ SwCharFmt* pFmt = lcl_getCharFmt(pDoc, aValue);
+ if(pFmt)
+ {
+ if(pMap->nWID == WID_ANCHOR_CHARACTER_STYLE)
+ aEndInfo.SetAnchorCharFmt(pFmt);
+ else
+ aEndInfo.SetCharFmt(pFmt);
+ }
+ }
+ break;
+ }
+ pDoc->SetEndNoteInfo(aEndInfo);
+ }
+ else
+ throw UnknownPropertyException(OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Unknown property: " ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
+ }
+}
+
+uno::Any SwXEndnoteProperties::getPropertyValue(const OUString& rPropertyName)
+ throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
+{
+ SolarMutexGuard aGuard;
+ uno::Any aRet;
+ if(pDoc)
+ {
+ const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName(
+ _pMap, rPropertyName);
+ if(pMap)
+ {
+ const SwEndNoteInfo& rEndInfo = pDoc->GetEndNoteInfo();
+ switch(pMap->nWID)
+ {
+ case WID_PREFIX:
+ aRet <<= OUString(rEndInfo.GetPrefix());
+ break;
+ case WID_SUFFIX:
+ aRet <<= OUString(rEndInfo.GetSuffix());
+ break;
+ case WID_NUMBERING_TYPE :
+ aRet <<= rEndInfo.aFmt.GetNumberingType();
+ break;
+ case WID_START_AT:
+ aRet <<= (sal_Int16)rEndInfo.nFtnOffset;
+ break;
+ case WID_PARAGRAPH_STYLE :
+ {
+ SwTxtFmtColl* pColl = rEndInfo.GetFtnTxtColl();
+ String aString;
+ if(pColl)
+ aString = pColl->GetName();
+ SwStyleNameMapper::FillProgName(
+ aString,
+ aString,
+ GET_POOLID_TXTCOLL,
+ sal_True);
+ aRet <<= OUString ( aString );
+
+ }
+ break;
+ case WID_PAGE_STYLE :
+ {
+ String aString;
+ if( rEndInfo.GetPageDescDep()->GetRegisteredIn() )
+ {
+ SwStyleNameMapper::FillProgName(
+ rEndInfo.GetPageDesc( *pDoc )->GetName(),
+ aString,
+ GET_POOLID_PAGEDESC,
+ sal_True );
+ }
+ aRet <<= OUString ( aString );
+ }
+ break;
+ case WID_ANCHOR_CHARACTER_STYLE:
+ case WID_CHARACTER_STYLE:
+ {
+ String aString;
+ const SwCharFmt* pCharFmt = 0;
+ if( pMap->nWID == WID_ANCHOR_CHARACTER_STYLE )
+ {
+ if( rEndInfo.GetAnchorCharFmtDep()->GetRegisteredIn() )
+ pCharFmt = rEndInfo.GetAnchorCharFmt(*pDoc);
+ }
+ else
+ {
+ if( rEndInfo.GetCharFmtDep()->GetRegisteredIn() )
+ pCharFmt = rEndInfo.GetCharFmt(*pDoc);
+ }
+ if( pCharFmt )
+ {
+ SwStyleNameMapper::FillProgName(
+ pCharFmt->GetName(),
+ aString,
+ GET_POOLID_CHRFMT,
+ sal_True );
+ }
+ aRet <<= OUString ( aString );
+ }
+ break;
+ }
+ }
+ else
+ throw UnknownPropertyException(OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Unknown property: " ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
+ }
+ return aRet;
+}
+
+void SwXEndnoteProperties::addPropertyChangeListener(
+ const OUString& PropertyName, const uno::Reference< beans::XPropertyChangeListener > & aListener) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ DBG_WARNING("not implemented");
+}
+
+void SwXEndnoteProperties::removePropertyChangeListener(const OUString& PropertyName,
+ const uno:: Reference< beans::XPropertyChangeListener > & aListener)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ DBG_WARNING("not implemented");
+}
+
+void SwXEndnoteProperties::addVetoableChangeListener(const OUString& PropertyName,
+ const uno:: Reference< beans::XVetoableChangeListener > & aListener)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ DBG_WARNING("not implemented");
+}
+
+void SwXEndnoteProperties::removeVetoableChangeListener(const OUString& PropertyName, const uno:: Reference< beans::XVetoableChangeListener > & aListener)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ DBG_WARNING("not implemented");
+}
+
+/******************************************************************
+ * SwXLineNumberingProperties
+ ******************************************************************/
+OUString SwXLineNumberingProperties::getImplementationName(void) throw( RuntimeException )
+{
+ return C2U("SwXLineNumberingProperties");
+}
+
+BOOL SwXLineNumberingProperties::supportsService(const OUString& rServiceName) throw( RuntimeException )
+{
+ return C2U("com.sun.star.text.LineNumberingProperties") == rServiceName;
+}
+
+Sequence< OUString > SwXLineNumberingProperties::getSupportedServiceNames(void) throw( RuntimeException )
+{
+ Sequence< OUString > aRet(1);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = C2U("com.sun.star.text.LineNumberingProperties");
+ return aRet;
+}
+
+SwXLineNumberingProperties::SwXLineNumberingProperties(SwDoc* pDc) :
+ pDoc(pDc),
+ _pMap(GetLineNumberingMap())
+{
+}
+
+SwXLineNumberingProperties::~SwXLineNumberingProperties()
+{
+}
+
+uno::Reference< beans::XPropertySetInfo > SwXLineNumberingProperties::getPropertySetInfo(void) throw( uno::RuntimeException )
+{
+ static uno::Reference< beans::XPropertySetInfo > aRef = new SfxItemPropertySetInfo( _pMap );
+ return aRef;
+}
+
+void SwXLineNumberingProperties::setPropertyValue(
+ const OUString& rPropertyName, const Any& aValue)
+ throw( UnknownPropertyException, PropertyVetoException,
+ IllegalArgumentException, WrappedTargetException, RuntimeException )
+{
+ SolarMutexGuard aGuard;
+ if(pDoc)
+ {
+ const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName(
+ _pMap, rPropertyName);
+ if(pMap)
+ {
+ if ( pMap->nFlags & PropertyAttribute::READONLY)
+ throw PropertyVetoException( OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Property is read-only: " ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
+ SwLineNumberInfo aInfo(pDoc->GetLineNumberInfo());
+ switch(pMap->nWID)
+ {
+ case WID_NUM_ON:
+ {
+ sal_Bool bVal = *(sal_Bool*)aValue.getValue();
+ aInfo.SetPaintLineNumbers(bVal);
+ }
+ break;
+ case WID_CHARACTER_STYLE :
+ {
+ SwCharFmt* pFmt = lcl_getCharFmt(pDoc, aValue);
+ if(pFmt)
+ aInfo.SetCharFmt(pFmt);
+ }
+ break;
+ case WID_NUMBERING_TYPE :
+ {
+ SvxNumberType aNumType(aInfo.GetNumType());
+ INT16 nTmp;
+ aValue >>= nTmp;
+ aNumType.SetNumberingType(nTmp);
+ aInfo.SetNumType(aNumType);
+ }
+ break;
+ case WID_NUMBER_POSITION :
+ {
+ INT16 nTmp;
+ aValue >>= nTmp;
+ switch(nTmp)
+ {
+ case style::LineNumberPosition::LEFT:
+ aInfo.SetPos(LINENUMBER_POS_LEFT); ;
+ break;
+ case style::LineNumberPosition::RIGHT :
+ aInfo.SetPos(LINENUMBER_POS_RIGHT); ;
+ break;
+ case style::LineNumberPosition::INSIDE:
+ aInfo.SetPos(LINENUMBER_POS_INSIDE); ;
+ break;
+ case style::LineNumberPosition::OUTSIDE:
+ aInfo.SetPos(LINENUMBER_POS_OUTSIDE);
+ break;
+ }
+ }
+ break;
+ case WID_DISTANCE :
+ {
+ INT32 nVal;
+ aValue >>= nVal;
+ aInfo.SetPosFromLeft(Min(static_cast<sal_Int32>(MM100_TO_TWIP(nVal)), sal_Int32(0xffff)));
+ }
+ break;
+ case WID_INTERVAL :
+ {
+ INT16 nTmp;
+ aValue >>= nTmp;
+ aInfo.SetCountBy(nTmp);
+ }
+ break;
+ case WID_SEPARATOR_TEXT :
+ {
+ OUString uTmp;
+ aValue >>= uTmp;
+ aInfo.SetDivider(uTmp);
+ }
+ break;
+ case WID_SEPARATOR_INTERVAL:
+ {
+ INT16 nTmp;
+ aValue >>= nTmp;
+ aInfo.SetDividerCountBy(nTmp);
+ }
+ break;
+ case WID_COUNT_EMPTY_LINES :
+ {
+ sal_Bool bVal = *(sal_Bool*)aValue.getValue();
+ aInfo.SetCountBlankLines(bVal);
+ }
+ break;
+ case WID_COUNT_LINES_IN_FRAMES :
+ {
+ sal_Bool bVal = *(sal_Bool*)aValue.getValue();
+ aInfo.SetCountInFlys(bVal);
+ }
+ break;
+ case WID_RESTART_AT_EACH_PAGE :
+ {
+ sal_Bool bVal = *(sal_Bool*)aValue.getValue();
+ aInfo.SetRestartEachPage(bVal);
+ }
+ break;
+ }
+ pDoc->SetLineNumberInfo(aInfo);
+ }
+ else
+ throw UnknownPropertyException(OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Unknown property: " ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
+ }
+ else
+ throw uno::RuntimeException();
+}
+
+Any SwXLineNumberingProperties::getPropertyValue(const OUString& rPropertyName)
+ throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
+{
+ SolarMutexGuard aGuard;
+ Any aRet;
+ if(pDoc)
+ {
+ const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName(
+ _pMap, rPropertyName);
+ if(pMap)
+ {
+ const SwLineNumberInfo& rInfo = pDoc->GetLineNumberInfo();
+ switch(pMap->nWID)
+ {
+ case WID_NUM_ON:
+ {
+ sal_Bool bTemp = rInfo.IsPaintLineNumbers();
+ aRet.setValue(&bTemp, ::getCppuBooleanType());
+ }
+ break;
+ case WID_CHARACTER_STYLE :
+ {
+ String aString;
+ // return empty string if no char format is set
+ // otherwise it would be created here
+ if(rInfo.GetRegisteredIn())
+ {
+ SwStyleNameMapper::FillProgName(
+ rInfo.GetCharFmt(*pDoc)->GetName(),
+ aString,
+ GET_POOLID_CHRFMT,
+ sal_True);
+ }
+ aRet <<= OUString ( aString );
+ }
+ break;
+ case WID_NUMBERING_TYPE :
+ aRet <<= rInfo.GetNumType().GetNumberingType();
+ break;
+ case WID_NUMBER_POSITION :
+ {
+ sal_Int16 nRet = 0;
+ switch(rInfo.GetPos())
+ {
+ case LINENUMBER_POS_LEFT:
+ nRet = style::LineNumberPosition::LEFT;
+ break;
+ case LINENUMBER_POS_RIGHT :
+ nRet = style::LineNumberPosition::RIGHT ;
+ break;
+ case LINENUMBER_POS_INSIDE:
+ nRet = style::LineNumberPosition::INSIDE ;
+ break;
+ case LINENUMBER_POS_OUTSIDE :
+ nRet = style::LineNumberPosition::OUTSIDE ;
+ break;
+ }
+ aRet <<= nRet;
+ }
+ break;
+ case WID_DISTANCE :
+ {
+ sal_uInt32 nPos = rInfo.GetPosFromLeft();
+ if(USHRT_MAX == nPos)
+ nPos = 0;
+ aRet <<= static_cast < sal_Int32 >(TWIP_TO_MM100(nPos));
+ }
+ break;
+ case WID_INTERVAL :
+ aRet <<= (sal_Int16)rInfo.GetCountBy();
+ break;
+ case WID_SEPARATOR_TEXT :
+ aRet <<= OUString(rInfo.GetDivider());
+ break;
+ case WID_SEPARATOR_INTERVAL:
+ aRet <<= (sal_Int16)rInfo.GetDividerCountBy();
+ break;
+ case WID_COUNT_EMPTY_LINES :
+ {
+ sal_Bool bTemp = rInfo.IsCountBlankLines();
+ aRet.setValue(&bTemp, ::getCppuBooleanType());
+ }
+ break;
+ case WID_COUNT_LINES_IN_FRAMES :
+ {
+ sal_Bool bTemp = rInfo.IsCountInFlys();
+ aRet.setValue(&bTemp, ::getCppuBooleanType());
+ }
+ break;
+ case WID_RESTART_AT_EACH_PAGE :
+ {
+ sal_Bool bTemp = rInfo.IsRestartEachPage();
+ aRet.setValue(&bTemp, ::getCppuBooleanType());
+ }
+ break;
+ }
+ }
+ else
+ throw UnknownPropertyException(OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Unknown property: " ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
+ }
+ else
+ throw uno::RuntimeException();
+ return aRet;
+}
+
+void SwXLineNumberingProperties::addPropertyChangeListener(const OUString& PropertyName, const uno:: Reference< beans::XPropertyChangeListener > & aListener) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+DBG_WARNING("not implemented");
+}
+
+void SwXLineNumberingProperties::removePropertyChangeListener(const OUString& PropertyName, const uno:: Reference< beans::XPropertyChangeListener > & aListener) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+DBG_WARNING("not implemented");
+}
+
+void SwXLineNumberingProperties::addVetoableChangeListener(const OUString& PropertyName, const uno:: Reference< beans::XVetoableChangeListener > & aListener) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+DBG_WARNING("not implemented");
+}
+
+void SwXLineNumberingProperties::removeVetoableChangeListener(const OUString& PropertyName, const uno:: Reference< beans::XVetoableChangeListener > & aListener)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+DBG_WARNING("not implemented");
+}
+
+/******************************************************************
+ * SwXNumberingRules
+ ******************************************************************/
+String SwXNumberingRules::sInvalidStyle(String::CreateFromAscii("__XXX___invalid"));
+
+const String& SwXNumberingRules::GetInvalidStyle()
+{
+ return sInvalidStyle;
+}
+
+const uno::Sequence< sal_Int8 > & SwXNumberingRules::getUnoTunnelId()
+{
+ static uno::Sequence< sal_Int8 > aSeq = ::binfilter::CreateUnoTunnelId();
+ return aSeq;
+}
+
+// return implementation specific data
+sal_Int64 SwXNumberingRules::getSomething( const uno::Sequence< sal_Int8 > & rId ) throw(::com::sun::star::uno::RuntimeException)
+{
+ if( rId.getLength() == 16
+ && 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+ return 0;
+}
+
+OUString SwXNumberingRules::getImplementationName(void) throw( RuntimeException )
+{
+ return C2U("SwXNumberingRules");
+}
+
+BOOL SwXNumberingRules::supportsService(const OUString& rServiceName) throw( RuntimeException )
+{
+ return C2U("com.sun.star.text.NumberingRules") == rServiceName;
+}
+
+Sequence< OUString > SwXNumberingRules::getSupportedServiceNames(void) throw( RuntimeException )
+{
+ Sequence< OUString > aRet(1);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = C2U("com.sun.star.text.NumberingRules");
+ return aRet;
+}
+
+SwXNumberingRules::SwXNumberingRules(const SwNumRule& rRule) :
+ pNumRule(new SwNumRule(rRule)),
+ bOwnNumRuleCreated(TRUE),
+ pDoc(0),
+ pDocShell(0),
+ _pMap(GetNumberingRulesMap())
+{
+ //erstmal das Doc organisieren; es haengt an den gesetzten Zeichenvorlagen - wenn
+ // keine gesetzt sind, muss es auch ohne gehen
+ sal_uInt16 i=0;
+ for( i = 0; i < MAXLEVEL; i++)
+ {
+ SwNumFmt rFmt(pNumRule->Get(i));
+ SwCharFmt* pCharFmt = rFmt.GetCharFmt();
+ if(pCharFmt)
+ {
+ pDoc = pCharFmt->GetDoc();
+ break;
+ }
+ }
+ if(pDoc)
+ pDoc->GetPageDescFromPool(RES_POOLPAGE_STANDARD)->Add(this);
+ for(i = 0; i < MAXLEVEL; i++)
+ {
+ sNewCharStyleNames[i] = SwXNumberingRules::GetInvalidStyle();
+ sNewBulletFontNames[i] = SwXNumberingRules::GetInvalidStyle();
+ }
+}
+
+SwXNumberingRules::SwXNumberingRules(SwDocShell& rDocSh) :
+ pDoc(0),
+ pNumRule(0),
+ pDocShell(&rDocSh),
+ bOwnNumRuleCreated(FALSE),
+ _pMap(GetNumberingRulesMap())
+{
+ pDocShell->GetDoc()->GetPageDescFromPool(RES_POOLPAGE_STANDARD)->Add(this);
+}
+
+SwXNumberingRules::SwXNumberingRules(SwDoc& rDoc) :
+ pDoc(&rDoc),
+ pNumRule(0),
+ pDocShell(0),
+ bOwnNumRuleCreated(FALSE),
+ _pMap(GetNumberingRulesMap())
+{
+ rDoc.GetPageDescFromPool(RES_POOLPAGE_STANDARD)->Add(this);
+ sCreatedNumRuleName = rDoc.GetUniqueNumRuleName();
+ sal_uInt16 nIndex = rDoc.MakeNumRule( sCreatedNumRuleName, 0 );
+}
+
+SwXNumberingRules::~SwXNumberingRules()
+{
+ if(pDoc && sCreatedNumRuleName.Len())
+ pDoc->DelNumRule( sCreatedNumRuleName );
+ if( pNumRule && bOwnNumRuleCreated )
+ delete pNumRule;
+}
+
+void SwXNumberingRules::replaceByIndex(sal_Int32 nIndex, const uno::Any& rElement)
+ throw( lang::IllegalArgumentException, lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ SolarMutexGuard aGuard;
+ if(rElement.getValueType().getTypeClass() != uno::TypeClass_SEQUENCE)
+ throw lang::IllegalArgumentException();
+ const uno::Sequence<beans::PropertyValue>& rProperties =
+ *(const uno::Sequence<beans::PropertyValue>*)rElement.getValue();
+ SwNumRule* pRule = 0;
+ if(pNumRule)
+ SwXNumberingRules::setNumberingRuleByIndex( *pNumRule,
+ rProperties, nIndex);
+ else if(pDocShell)
+ {
+ const SwNumRule* pNumRule = pDocShell->GetDoc()->GetOutlineNumRule();
+ SwNumRule aNumRule(*pNumRule);
+ SwXNumberingRules::setNumberingRuleByIndex( aNumRule,
+ rProperties, nIndex);
+ //hier noch die Zeichenformate bei Bedarf setzen
+ const SwCharFmts* pFmts = pDocShell->GetDoc()->GetCharFmts();
+ sal_uInt16 nChCount = pFmts->Count();
+ for(sal_uInt16 i = 0; i < MAXLEVEL;i++)
+ {
+ SwNumFmt aFmt(aNumRule.Get( i ));
+ if(sNewCharStyleNames[i].Len() &&
+ !sNewCharStyleNames[i].EqualsAscii(SW_PROP_NAME_STR(UNO_NAME_CHARACTER_FORMAT_NONE)) &&
+ (!aFmt.GetCharFmt() ||
+ aFmt.GetCharFmt()->GetName()!= sNewCharStyleNames[i] ))
+ {
+ SwCharFmt* pCharFmt = 0;
+ for(sal_uInt16 j = 0; j< nChCount; j++)
+ {
+ SwCharFmt* pTmp = (*pFmts)[j];
+ if(pTmp->GetName() == sNewCharStyleNames[i])
+ {
+ pCharFmt = pTmp;
+ break;
+ }
+ }
+ if(!pCharFmt)
+ {
+ SfxStyleSheetBase* pBase;
+ pBase = pDocShell->GetStyleSheetPool()->Find(sNewCharStyleNames[i],
+ SFX_STYLE_FAMILY_CHAR);
+ if(!pBase)
+ pBase = &pDocShell->GetStyleSheetPool()->Make(sNewCharStyleNames[i], SFX_STYLE_FAMILY_CHAR);
+ pCharFmt = ((SwDocStyleSheet*)pBase)->GetCharFmt();
+
+ }
+ aFmt.SetCharFmt( pCharFmt );
+ aNumRule.Set( i, aFmt );
+ }
+ }
+ pDocShell->GetDoc()->SetOutlineNumRule( aNumRule );
+ }
+ else if(!pNumRule && pDoc && sCreatedNumRuleName.Len() &&
+ 0 != (pRule = pDoc->FindNumRulePtr( sCreatedNumRuleName )))
+ {
+ SwXNumberingRules::setNumberingRuleByIndex( *pRule,
+ rProperties, nIndex);
+ sal_uInt16 nPos = pDoc->FindNumRule( sCreatedNumRuleName );
+ pDoc->UpdateNumRule( sCreatedNumRuleName, nPos );
+ }
+ else
+ throw uno::RuntimeException();
+
+}
+
+sal_Int32 SwXNumberingRules::getCount(void) throw( uno::RuntimeException )
+{
+ return MAXLEVEL;
+}
+
+uno::Any SwXNumberingRules::getByIndex(sal_Int32 nIndex)
+ throw( lang::IndexOutOfBoundsException, lang::WrappedTargetException,
+ uno::RuntimeException )
+{
+ SolarMutexGuard aGuard;
+ uno::Any aVal;
+ if(MAXLEVEL <= nIndex)
+ throw lang::IndexOutOfBoundsException();
+ const SwNumRule* pRule = pNumRule;
+ if(!pRule && pDoc && sCreatedNumRuleName.Len())
+ pRule = pDoc->FindNumRulePtr( sCreatedNumRuleName );
+ if(pRule)
+ {
+ uno::Sequence<beans::PropertyValue> aRet = getNumberingRuleByIndex(
+ *pRule, nIndex);
+ aVal.setValue(&aRet, ::getCppuType((uno::Sequence<beans::PropertyValue>*)0));
+
+ }
+ else if(pDocShell)
+ {
+ uno::Sequence<beans::PropertyValue> aRet = getNumberingRuleByIndex(
+ *pDocShell->GetDoc()->GetOutlineNumRule(), nIndex);
+ aVal.setValue(&aRet, ::getCppuType((uno::Sequence<beans::PropertyValue>*)0));
+ }
+ else
+ throw uno::RuntimeException();
+ return aVal;
+}
+
+uno::Type SwXNumberingRules::getElementType(void)
+ throw( uno::RuntimeException )
+{
+ return ::getCppuType((uno::Sequence<beans::PropertyValue>*)0);
+}
+
+sal_Bool SwXNumberingRules::hasElements(void) throw( uno::RuntimeException )
+{
+ return sal_True;
+}
+
+uno::Sequence<beans::PropertyValue> SwXNumberingRules::getNumberingRuleByIndex(
+ const SwNumRule& rNumRule, sal_Int32 nIndex) const
+{
+ SolarMutexGuard aGuard;
+ const SwNumFmt& rFmt = rNumRule.Get( (sal_uInt16)nIndex );
+
+ sal_Bool bChapterNum = pDocShell != 0;
+
+ PropValDataArr aPropertyValues;
+ //fill all properties into the array
+
+ //adjust
+ SvxAdjust eAdj = rFmt.GetNumAdjust();
+ sal_Int16 nINT16 = aSvxToUnoAdjust[(sal_uInt16)eAdj];
+ PropValData* pData = new PropValData((void*)&nINT16, "Adjust", ::getCppuType((const sal_Int16*)0) );
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+
+ //parentnumbering
+ nINT16 = rFmt.GetIncludeUpperLevels();
+ pData = new PropValData((void*)&nINT16, "ParentNumbering", ::getCppuType((const sal_Int16*)0));
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+
+ //prefix
+ OUString aUString = rFmt.GetPrefix();
+ pData = new PropValData((void*)&aUString, "Prefix", ::getCppuType((const OUString*)0));
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+
+ //suffix
+ aUString = rFmt.GetSuffix();
+ pData = new PropValData((void*)&aUString, "Suffix", ::getCppuType((const OUString*)0));
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+
+ //char style name
+ SwCharFmt* pCharFmt = rFmt.GetCharFmt();
+ String CharStyleName;
+ if(pCharFmt)
+ CharStyleName = pCharFmt->GetName();
+ //egal ob ein Style vorhanden ist oder nicht ueberschreibt der Array-Eintrag diesen String
+ if(sNewCharStyleNames[(sal_uInt16)nIndex].Len() &&
+ SwXNumberingRules::sInvalidStyle != sNewCharStyleNames[(sal_uInt16)nIndex])
+ CharStyleName = sNewCharStyleNames[(sal_uInt16)nIndex];
+
+ String aString;
+ SwStyleNameMapper::FillProgName( CharStyleName, aString, GET_POOLID_CHRFMT, sal_True );
+ aUString = aString;
+ pData = new PropValData((void*)&aUString, "CharStyleName", ::getCppuType((const OUString*)0));
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+
+ //startvalue
+ nINT16 = rFmt.GetStart();
+ pData = new PropValData((void*)&nINT16, "StartWith", ::getCppuType((const sal_Int16*)0));
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+
+ //leftmargin
+ sal_Int32 nINT32 = TWIP_TO_MM100(rFmt.GetAbsLSpace());
+ pData = new PropValData((void*)&nINT32, SW_PROP_NAME_STR(UNO_NAME_LEFT_MARGIN), ::getCppuType((const sal_Int32*)0));
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+
+ //chartextoffset
+ nINT32 = TWIP_TO_MM100(rFmt.GetCharTextDistance());
+ pData = new PropValData((void*)&nINT32, SW_PROP_NAME_STR(UNO_NAME_SYMBOL_TEXT_DISTANCE), ::getCppuType((const sal_Int32*)0));
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+
+ //firstlineoffset
+ nINT32 = TWIP_TO_MM100(rFmt.GetFirstLineOffset());
+ pData = new PropValData((void*)&nINT32, SW_PROP_NAME_STR(UNO_NAME_FIRST_LINE_OFFSET), ::getCppuType((const sal_Int32*)0));
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+
+ nINT16 = rFmt.GetNumberingType();
+ pData = new PropValData((void*)&nINT16, "NumberingType", ::getCppuType((const sal_Int16*)0));
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+
+ if(!bChapterNum)
+ {
+ if(SVX_NUM_CHAR_SPECIAL == rFmt.GetNumberingType())
+ {
+ //BulletId
+ nINT16 = rFmt.GetBulletChar();
+ pData = new PropValData((void*)&nINT16, "BulletId", ::getCppuType((const sal_Int16*)0));
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+
+ const Font* pFont = rFmt.GetBulletFont();
+
+ //BulletChar
+ aUString = OUString(rFmt.GetBulletChar());
+ pData = new PropValData((void*)&aUString, "BulletChar", ::getCppuType((const OUString*)0));
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+
+ //BulletFontName
+ String sBulletFontName;
+ if(pFont)
+ sBulletFontName = pFont->GetStyleName();
+ aUString = sBulletFontName;
+ pData = new PropValData((void*)&aUString, "BulletFontName", ::getCppuType((const OUString*)0));
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+
+ //BulletFont
+ if(pFont)
+ {
+ awt::FontDescriptor aDesc;
+ SvxUnoFontDescriptor::ConvertFromFont( *pFont, aDesc );
+ pData = new PropValData((void*)&aDesc, SW_PROP_NAME_STR(UNO_NAME_BULLET_FONT), ::getCppuType((const awt::FontDescriptor*)0));
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+ }
+ }
+ if(SVX_NUM_BITMAP == rFmt.GetNumberingType())
+ {
+ //GraphicURL
+ const SvxBrushItem* pBrush = rFmt.GetBrush();
+ if(pBrush)
+ {
+ Any aAny;
+ pBrush->QueryValue( aAny, MID_GRAPHIC_URL );
+ aAny >>= aUString;
+ }
+ else
+ aUString = aEmptyStr;
+ pData = new PropValData((void*)&aUString, SW_PROP_NAME_STR(UNO_NAME_GRAPHIC_URL), ::getCppuType((const OUString*)0));
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+
+ //graphicbitmap
+ const Graphic* pGraphic = 0;
+ if(pBrush )
+ pGraphic = pBrush->GetGraphic();
+ if(pGraphic)
+ {
+ uno::Reference<awt::XBitmap> xBmp = VCLUnoHelper::CreateBitmap( pGraphic->GetBitmapEx() );
+ pData = new PropValData((void*)&xBmp, SW_PROP_NAME_STR(UNO_NAME_GRAPHIC_BITMAP),
+ ::getCppuType((const uno::Reference<awt::XBitmap>*)0));
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+ }
+ Size aSize = rFmt.GetGraphicSize();
+ aSize.Width() = TWIP_TO_MM100( aSize.Width() );
+ aSize.Height() = TWIP_TO_MM100( aSize.Height() );
+ pData = new PropValData((void*)&aSize, SW_PROP_NAME_STR(UNO_NAME_GRAPHIC_SIZE), ::getCppuType((const awt::Size*)0));
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+
+ const SwFmtVertOrient* pOrient = rFmt.GetGraphicOrientation();
+ if(pOrient)
+ {
+ pData = new PropValData((void*)0, SW_PROP_NAME_STR(UNO_NAME_VERT_ORIENT), ::getCppuType((const sal_Int16*)0));
+ ((const SfxPoolItem*)pOrient)->QueryValue(pData->aVal, MID_VERTORIENT_ORIENT);
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+ }
+ }
+
+ }
+ else
+ {
+ //Vorlagenname
+ String sValue(SW_RES(STR_POOLCOLL_HEADLINE1 + nIndex));
+ const SwTxtFmtColls* pColls = pDocShell->GetDoc()->GetTxtFmtColls();
+ const sal_uInt16 nCount = pColls->Count();
+ for(sal_uInt16 i = 0; i < nCount;++i)
+ {
+ SwTxtFmtColl &rTxtColl = *pColls->operator[](i);
+ if(rTxtColl.IsDefault())
+ continue;
+
+ sal_Int8 nOutLevel = rTxtColl.GetOutlineLevel();
+ if(nOutLevel == nIndex)
+ {
+ sValue = rTxtColl.GetName();
+ }
+ }
+ String aString;
+ SwStyleNameMapper::FillProgName(sValue, aString, GET_POOLID_TXTCOLL, sal_True);
+ aUString = aString;
+
+ pData = new PropValData((void*)&aUString, SW_PROP_NAME_STR(UNO_NAME_HEADING_STYLE_NAME), ::getCppuType((const OUString*)0));
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+ }
+
+ uno::Sequence<beans::PropertyValue> aSeq(aPropertyValues.Count());
+ beans::PropertyValue* pArray = aSeq.getArray();
+
+ for(sal_uInt16 i = 0; i < aPropertyValues.Count(); i++)
+ {
+ PropValDataPtr pData = aPropertyValues.GetObject(i);
+ pArray[i].Value = pData->aVal;
+ pArray[i].Name = pData->sPropName;
+ pArray[i].Handle = -1;
+ }
+ aPropertyValues.DeleteAndDestroy(0, aPropertyValues.Count());
+ return aSeq;
+}
+
+PropValData* lcl_FindProperty(const char* cName, PropValDataArr& rPropertyValues)
+{
+ OUString sCmp = C2U(cName);
+ for(sal_uInt16 i = 0; i < rPropertyValues.Count(); i++)
+ {
+ PropValData* pTemp = rPropertyValues.GetObject(i);
+ if(sCmp == pTemp->sPropName)
+ return pTemp;
+ }
+ return 0;
+}
+
+void SwXNumberingRules::setNumberingRuleByIndex(
+ SwNumRule& rNumRule,
+ const uno::Sequence<beans::PropertyValue>& rProperties, sal_Int32 nIndex)
+ throw( uno::RuntimeException, lang::IllegalArgumentException )
+{
+ SolarMutexGuard aGuard;
+ // the order of the names is important!
+ static const char* aNumPropertyNames[] =
+ {
+ "Adjust", //0
+ "ParentNumbering", //1
+ "Prefix", //2
+ "Suffix", //3
+ "CharStyleName", //4
+ "StartWith", //5
+ SW_PROP_NAME_STR(UNO_NAME_LEFT_MARGIN), //6
+ SW_PROP_NAME_STR(UNO_NAME_SYMBOL_TEXT_DISTANCE), //7
+ SW_PROP_NAME_STR(UNO_NAME_FIRST_LINE_OFFSET), //8
+ "NumberingType", //9
+ "BulletId", //10
+ SW_PROP_NAME_STR(UNO_NAME_BULLET_FONT), //11
+ "BulletFontName", //12
+ "BulletChar", //13
+ SW_PROP_NAME_STR(UNO_NAME_GRAPHIC_URL), //14
+ SW_PROP_NAME_STR(UNO_NAME_GRAPHIC_BITMAP), //15
+ SW_PROP_NAME_STR(UNO_NAME_GRAPHIC_SIZE), //16
+ SW_PROP_NAME_STR(UNO_NAME_VERT_ORIENT), //17
+ SW_PROP_NAME_STR(UNO_NAME_HEADING_STYLE_NAME) //18
+ };
+ const sal_uInt16 nPropNameCount = 19;
+ const sal_uInt16 nNotInChapter = 10;
+
+
+ SwNumFmt aFmt(rNumRule.Get( (sal_uInt16)nIndex ));
+ const beans::PropertyValue* pPropArray = rProperties.getConstArray();
+ PropValDataArr aPropertyValues;
+ sal_Bool bExcept = sal_False;
+ for(int i = 0; i < rProperties.getLength() && !bExcept; i++)
+ {
+ const beans::PropertyValue& rProp = pPropArray[i];
+ bExcept = sal_True;
+ for(sal_uInt16 j = 0; j < (pDocShell ? nPropNameCount : nPropNameCount - 1); j++)
+ {
+ //some values not in chapter numbering
+ if(pDocShell && j == nNotInChapter)
+ j = nPropNameCount - 1;
+ if(COMPARE_EQUAL == rProp.Name.compareToAscii(aNumPropertyNames[j]))
+ {
+ bExcept = sal_False;
+ break;
+ }
+ }
+ if(bExcept &&
+ (rProp.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("BulletRelSize")) ||
+ rProp.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("BulletColor")) ) )
+
+ bExcept = sal_False;
+ PropValData* pData = new PropValData(rProp.Value, rProp.Name );
+ aPropertyValues.Insert(pData, aPropertyValues.Count());
+ }
+ sal_Bool bWrongArg = sal_False;
+ if(!bExcept)
+ {
+ SvxBrushItem* pSetBrush = 0;
+ Size* pSetSize = 0;
+ SwFmtVertOrient* pSetVOrient = 0;
+ BOOL bCharStyleNameSet = FALSE;
+
+ for(sal_uInt16 i = 0; i < nPropNameCount && !bExcept && !bWrongArg; i++)
+ {
+ PropValData* pData = lcl_FindProperty(aNumPropertyNames[i], aPropertyValues);
+ if(!pData)
+ continue;
+ switch(i)
+ {
+ case 0: //"Adjust"
+ {
+ sal_Int16 nValue;
+ pData->aVal >>= nValue;
+ if(nValue > 0 &&
+ nValue <= HoriOrientation::LEFT &&
+ USHRT_MAX != aUnoToSvxAdjust[nValue])
+ {
+ aFmt.SetNumAdjust((SvxAdjust)aUnoToSvxAdjust[nValue]);
+ }
+ else
+ bWrongArg = sal_True;
+ }
+ break;
+ case 1: //"ParentNumbering",
+ {
+ sal_Int16 nSet;
+ pData->aVal >>= nSet;
+ if(nSet >= 0 && MAXLEVEL >= nSet)
+ aFmt.SetIncludeUpperLevels(nSet);
+ }
+ break;
+ case 2: //"Prefix",
+ {
+ OUString uTmp;
+ pData->aVal >>= uTmp;
+ aFmt.SetPrefix(uTmp);
+ }
+ break;
+ case 3: //"Suffix",
+ {
+ OUString uTmp;
+ pData->aVal >>= uTmp;
+ aFmt.SetSuffix(uTmp);
+ }
+ break;
+ case 4: //"CharStyleName",
+ {
+ bCharStyleNameSet = TRUE;
+ OUString uTmp;
+ pData->aVal >>= uTmp;
+ String sCharFmtName;
+ SwStyleNameMapper::FillUIName( uTmp, sCharFmtName, GET_POOLID_CHRFMT, sal_True );
+ SwCharFmt* pCharFmt = 0;
+ if(sCharFmtName.EqualsAscii(SW_PROP_NAME_STR(UNO_NAME_CHARACTER_FORMAT_NONE)))
+ {
+ sNewCharStyleNames[(sal_uInt16)nIndex] = SwXNumberingRules::GetInvalidStyle();
+ aFmt.SetCharFmt(0);
+ }
+ else if(pDocShell || pDoc)
+ {
+ SwDoc* pLocalDoc = pDoc ? pDoc : pDocShell->GetDoc();
+ const SwCharFmts* pFmts = pLocalDoc->GetCharFmts();
+ sal_uInt16 nChCount = pFmts->Count();
+
+ SwCharFmt* pCharFmt = 0;
+ if(sCharFmtName.Len())
+ {
+ for(sal_uInt16 j = 0; j< nChCount; j++)
+ {
+ SwCharFmt* pTmp = (*pFmts)[j];
+ if(pTmp->GetName() == sCharFmtName)
+ {
+ pCharFmt = pTmp;
+ break;
+ }
+ }
+ if(!pCharFmt)
+ {
+
+ SfxStyleSheetBase* pBase;
+ SfxStyleSheetBasePool* pPool = pLocalDoc->GetDocShell()->GetStyleSheetPool();
+ pBase = ((SfxStyleSheetBasePool*)pPool)->Find(sCharFmtName, SFX_STYLE_FAMILY_CHAR);
+ if(!pBase)
+ pBase = &pPool->Make(sCharFmtName, SFX_STYLE_FAMILY_CHAR);
+ pCharFmt = ((SwDocStyleSheet*)pBase)->GetCharFmt();
+ }
+ }
+ aFmt.SetCharFmt( pCharFmt );
+ sNewCharStyleNames[(sal_uInt16)nIndex] = sCharFmtName;
+ }
+ else
+ sNewCharStyleNames[(sal_uInt16)nIndex] = sCharFmtName;
+ }
+ break;
+ case 5: //"StartWith",
+ {
+ INT16 nVal;
+ pData->aVal >>= nVal;
+ aFmt.SetStart(nVal);
+ }
+ break;
+ case 6: //UNO_NAME_LEFT_MARGIN,
+ {
+ sal_Int32 nValue;
+ pData->aVal >>= nValue;
+ if(nValue >= 0)
+ aFmt.SetAbsLSpace((sal_uInt16) MM100_TO_TWIP(nValue));
+ else
+ bWrongArg = sal_True;
+ }
+ break;
+ case 7: //UNO_NAME_SYMBOL_TEXT_DISTANCE,
+ {
+ sal_Int32 nValue;
+ pData->aVal >>= nValue;
+ if(nValue >= 0)
+ aFmt.SetCharTextDistance((sal_uInt16) MM100_TO_TWIP(nValue));
+ else
+ bWrongArg = sal_True;
+ }
+ break;
+ case 8: //UNO_NAME_FIRST_LINE_OFFSET,
+ {
+ sal_Int32 nValue;
+ pData->aVal >>= nValue;
+ if(nValue <= 0)
+ {
+ nValue = MM100_TO_TWIP(nValue);
+ if(-nValue > aFmt.GetAbsLSpace())
+ aFmt.SetAbsLSpace(-nValue);
+ aFmt.SetFirstLineOffset((short)nValue);
+ }
+ else
+ bWrongArg = sal_True;
+ }
+ break;
+ case 9: //"NumberingType"
+ {
+ sal_Int16 nSet;
+ pData->aVal >>= nSet;
+ if(nSet >= 0)
+ aFmt.SetNumberingType(nSet);
+ else
+ bWrongArg = sal_True;
+ }
+ break;
+ case 10: //"BulletId",
+ {
+ sal_Int16 nSet;
+ pData->aVal >>= nSet;
+ if(nSet < 0xff)
+ aFmt.SetBulletChar(nSet);
+ else
+ bWrongArg = sal_True;
+ }
+ break;
+ case 11: //UNO_NAME_BULLET_FONT,
+ {
+ awt::FontDescriptor* pDesc = (awt::FontDescriptor*)pData->aVal.getValue();
+ if(pDesc)
+ {
+ Font aFont;
+ SvxUnoFontDescriptor::ConvertToFont( *pDesc, aFont );
+ aFmt.SetBulletFont(&aFont);
+ }
+ else
+ bWrongArg = sal_True;
+ }
+ break;
+ case 12: //"BulletFontName",
+ {
+ OUString uTmp;
+ pData->aVal >>= uTmp;
+ String sBulletFontName(uTmp);
+ sNewBulletFontNames[(sal_uInt16)nIndex] = sBulletFontName;
+ }
+ break;
+ case 13: //"BulletChar",
+ {
+ OUString aChar;
+ pData->aVal >>= aChar;
+ if(aChar.getLength() == 1)
+ {
+ aFmt.SetBulletChar(aChar.toChar());
+ }
+ else
+ bWrongArg = sal_True;
+ }
+ break;
+ case 14: //UNO_NAME_GRAPHIC_URL,
+ {
+ OUString sBrushURL;
+ pData->aVal >>= sBrushURL;
+ if(!pSetBrush)
+ {
+ const SvxBrushItem* pOrigBrush = aFmt.GetBrush();
+ if(pOrigBrush)
+ {
+ pSetBrush = new SvxBrushItem(*pOrigBrush);
+ }
+ else
+ pSetBrush = new SvxBrushItem(aEmptyStr, aEmptyStr, GPOS_AREA);
+ }
+ pSetBrush->PutValue( pData->aVal, MID_GRAPHIC_URL );
+ }
+ break;
+ case 15: //UNO_NAME_GRAPHIC_BITMAP,
+ {
+ uno::Reference< awt::XBitmap >* pBitmap = (uno::Reference< awt::XBitmap > *)pData->aVal.getValue();
+ if(pBitmap)
+ {
+ if(!pSetBrush)
+ {
+ const SvxBrushItem* pOrigBrush = aFmt.GetBrush();
+ if(pOrigBrush)
+ {
+ pSetBrush = new SvxBrushItem(*pOrigBrush);
+ }
+ else
+ pSetBrush = new SvxBrushItem(aEmptyStr, aEmptyStr, GPOS_AREA);
+ }
+
+ BitmapEx aBmp = VCLUnoHelper::GetBitmap( *pBitmap );
+ Graphic aNewGr(aBmp);
+ pSetBrush->SetGraphic( aNewGr );
+ }
+ else
+ bWrongArg = sal_True;
+ }
+ break;
+ case 16: //UNO_NAME_GRAPHIC_SIZE,
+ {
+ if(!pSetSize)
+ pSetSize = new Size;
+ if(pData->aVal.getValueType() == ::getCppuType((awt::Size*)0))
+ {
+ awt::Size* pSize = (awt::Size*)pData->aVal.getValue();
+ pSize->Width = MM100_TO_TWIP(pSize->Width);
+ pSize->Height = MM100_TO_TWIP(pSize->Height);
+ pSetSize->Width() = pSize->Width;
+ pSetSize->Height() = pSize->Height;
+ }
+ else
+ bWrongArg = sal_True;
+ }
+ break;
+ case 17: //VertOrient
+ {
+ if(!pSetVOrient)
+ {
+ if(aFmt.GetGraphicOrientation())
+ pSetVOrient = (SwFmtVertOrient*)aFmt.GetGraphicOrientation()->Clone();
+ else
+ pSetVOrient = new SwFmtVertOrient;
+ }
+ ((SfxPoolItem*)pSetVOrient)->PutValue(pData->aVal, MID_VERTORIENT_ORIENT);
+ }
+ break;
+ case 18: //"HeadingStyleName"
+ {
+ OUString uTmp;
+ pData->aVal >>= uTmp;
+ String sStyleName;
+ SwStyleNameMapper::FillUIName(uTmp, sStyleName, GET_POOLID_TXTCOLL, sal_True );
+ const SwTxtFmtColls* pColls = pDocShell->GetDoc()->GetTxtFmtColls();
+ const sal_uInt16 nCount = pColls->Count();
+ for(sal_uInt16 i = 0; i < nCount; ++i)
+ {
+ SwTxtFmtColl &rTxtColl = *pColls->operator[](i);
+ if(rTxtColl.IsDefault())
+ continue;
+ if(rTxtColl.GetOutlineLevel() == nIndex &&
+ rTxtColl.GetName() != sStyleName)
+ rTxtColl.SetOutlineLevel(NO_NUMBERING);
+ else if(rTxtColl.GetName() == sStyleName)
+ rTxtColl.SetOutlineLevel(sal_Int8(nIndex));
+ }
+ }
+ break;
+ case 19: // BulletRelSize - unsupported - only available in Impress
+ break;
+ }
+ }
+ if(!bExcept && !bWrongArg && (pSetBrush || pSetSize || pSetVOrient))
+ {
+ if(!pSetBrush && aFmt.GetBrush())
+ pSetBrush = new SvxBrushItem(*aFmt.GetBrush());
+
+ if(pSetBrush)
+ {
+ if(!pSetVOrient && aFmt.GetGraphicOrientation())
+ pSetVOrient = new SwFmtVertOrient(*aFmt.GetGraphicOrientation());
+
+ if(!pSetSize)
+ {
+ pSetSize = new Size(aFmt.GetGraphicSize());
+ if(!pSetSize->Width() || !pSetSize->Height())
+ {
+ const Graphic* pGraphic = pSetBrush->GetGraphic();
+ if(pGraphic)
+ *pSetSize = ::binfilter::GetGraphicSizeTwip(*pGraphic, 0);
+ }
+ }
+ SvxFrameVertOrient eOrient = pSetVOrient ?
+ (SvxFrameVertOrient)pSetVOrient->GetVertOrient() : SVX_VERT_NONE;
+ aFmt.SetGraphicBrush( pSetBrush, pSetSize, SVX_VERT_NONE == eOrient ? 0 : &eOrient );
+ }
+ }
+ if((!bCharStyleNameSet || !sNewCharStyleNames[(sal_uInt16)nIndex].Len()) &&
+ aFmt.GetNumberingType() == NumberingType::BITMAP && !aFmt.GetCharFmt()
+ && SwXNumberingRules::GetInvalidStyle() != sNewCharStyleNames[(sal_uInt16)nIndex])
+ {
+ SwStyleNameMapper::FillProgName ( RES_POOLCHR_BUL_LEVEL, sNewCharStyleNames[(sal_uInt16)nIndex] );
+ }
+ delete pSetBrush;
+ delete pSetSize;
+ delete pSetVOrient;
+ }
+ aPropertyValues.DeleteAndDestroy(0, aPropertyValues.Count());
+
+ if(bWrongArg)
+ throw lang::IllegalArgumentException();
+ else if(bExcept)
+ throw uno::RuntimeException();
+ rNumRule.Set( (sal_uInt16)nIndex, aFmt );
+
+}
+
+Reference< XPropertySetInfo > SwXNumberingRules::getPropertySetInfo()
+ throw(RuntimeException)
+{
+ static uno::Reference< beans::XPropertySetInfo > aRef = new SfxItemPropertySetInfo( _pMap );
+ return aRef;
+}
+
+void SwXNumberingRules::setPropertyValue( const OUString& rPropertyName, const Any& rValue )
+ throw(UnknownPropertyException, PropertyVetoException,
+ IllegalArgumentException, WrappedTargetException, RuntimeException)
+{
+ Any aRet;
+ SwNumRule* pDocRule = 0;
+ SwNumRule* pCreatedRule = 0;
+ if(!pNumRule)
+ {
+ if(!pNumRule && pDocShell)
+ {
+ pDocRule = new SwNumRule(*pDocShell->GetDoc()->GetOutlineNumRule());
+ }
+ else if(pDoc && sCreatedNumRuleName.Len())
+ {
+ pCreatedRule = pDoc->FindNumRulePtr( sCreatedNumRuleName);
+ }
+
+ }
+ if(!pNumRule && !pDocRule && !pCreatedRule)
+ throw RuntimeException();
+
+
+ if(rPropertyName.equalsAsciiL( SW_PROP_NAME(UNO_NAME_IS_AUTOMATIC)))
+ {
+ BOOL bVal = *(sal_Bool*)rValue.getValue();
+ if(!pCreatedRule)
+ pDocRule ? pDocRule->SetAutoRule(bVal) : pNumRule->SetAutoRule(bVal);
+ }
+ else if(rPropertyName.equalsAsciiL( SW_PROP_NAME(UNO_NAME_IS_CONTINUOUS_NUMBERING)))
+ {
+ BOOL bVal = *(sal_Bool*)rValue.getValue();
+ pDocRule ? pDocRule->SetContinusNum(bVal) :
+ pCreatedRule ? pCreatedRule->SetContinusNum(bVal) : pNumRule->SetContinusNum(bVal);
+ }
+ else if(rPropertyName.equalsAsciiL( SW_PROP_NAME(UNO_NAME_NAME)))
+ {
+ delete pDocRule;
+ throw IllegalArgumentException();
+ }
+ else if(rPropertyName.equalsAsciiL( SW_PROP_NAME(UNO_NAME_IS_ABSOLUTE_MARGINS)))
+ {
+ BOOL bVal = *(sal_Bool*)rValue.getValue();
+ pDocRule ? pDocRule->SetAbsSpaces(bVal) :
+ pCreatedRule ? pCreatedRule->SetAbsSpaces(bVal) : pNumRule->SetAbsSpaces(bVal);
+ }
+ else
+ throw UnknownPropertyException();
+ if(pDocRule)
+ {
+ pDocShell->GetDoc()->SetOutlineNumRule(*pDocRule);
+ delete pDocRule;
+ }
+ else if(pCreatedRule)
+ {
+ sal_uInt16 nPos = pDoc->FindNumRule( sCreatedNumRuleName );
+ pDoc->UpdateNumRule( sCreatedNumRuleName, nPos );
+ }
+}
+
+Any SwXNumberingRules::getPropertyValue( const OUString& rPropertyName )
+ throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
+{
+ Any aRet;
+ const SwNumRule* pRule = pNumRule;
+ SwNumRule* pCreatedRule = 0;
+ if(!pRule && pDocShell)
+ pRule = pDocShell->GetDoc()->GetOutlineNumRule();
+ else if(pDoc && sCreatedNumRuleName.Len())
+ pRule = pDoc->FindNumRulePtr( sCreatedNumRuleName );
+ if(!pRule)
+ throw RuntimeException();
+
+ if(rPropertyName.equalsAsciiL( SW_PROP_NAME(UNO_NAME_IS_AUTOMATIC)))
+ {
+ BOOL bVal = pRule->IsAutoRule();
+ aRet.setValue(&bVal, ::getBooleanCppuType());
+ }
+ else if(rPropertyName.equalsAsciiL( SW_PROP_NAME(UNO_NAME_IS_CONTINUOUS_NUMBERING)))
+ {
+ BOOL bVal = pRule->IsContinusNum();
+ aRet.setValue(&bVal, ::getBooleanCppuType());
+ }
+ else if(rPropertyName.equalsAsciiL( SW_PROP_NAME(UNO_NAME_NAME)))
+ aRet <<= OUString(pRule->GetName());
+ else if(rPropertyName.equalsAsciiL( SW_PROP_NAME(UNO_NAME_IS_ABSOLUTE_MARGINS)))
+ {
+ BOOL bVal = pRule->IsAbsSpaces();
+ aRet.setValue(&bVal, ::getBooleanCppuType());
+ }
+ else
+ throw UnknownPropertyException();
+ return aRet;
+}
+
+void SwXNumberingRules::addPropertyChangeListener(
+ const OUString& aPropertyName, const Reference< XPropertyChangeListener >& xListener )
+ throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
+{
+}
+
+void SwXNumberingRules::removePropertyChangeListener(
+ const OUString& aPropertyName, const Reference< XPropertyChangeListener >& aListener )
+ throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
+{
+}
+
+void SwXNumberingRules::addVetoableChangeListener(
+ const OUString& PropertyName, const Reference< XVetoableChangeListener >& aListener )
+ throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
+{
+}
+
+void SwXNumberingRules::removeVetoableChangeListener(
+ const OUString& PropertyName, const Reference< XVetoableChangeListener >& aListener )
+ throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
+{
+}
+
+OUString SwXNumberingRules::getName() throw( RuntimeException )
+{
+ String aString;
+ if(pNumRule)
+ {
+ SwStyleNameMapper::FillProgName(pNumRule->GetName(), aString, GET_POOLID_NUMRULE, sal_True );
+ return OUString ( aString );
+ }
+ else
+ return sCreatedNumRuleName;
+}
+
+void SwXNumberingRules::setName(const OUString& Name_) throw( RuntimeException )
+{
+ RuntimeException aExcept;
+ aExcept.Message = C2U("readonly");
+ throw aExcept;
+}
+
+void SwXNumberingRules::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew)
+{
+ ClientModify(this, pOld, pNew);
+ if(!GetRegisteredIn())
+ {
+ if(bOwnNumRuleCreated)
+ delete pNumRule;
+ pNumRule = 0;
+ pDoc = 0;
+ }
+}
+
+/******************************************************************
+ * SwXChapterNumbering
+ ******************************************************************/
+OUString SwXChapterNumbering::getImplementationName(void) throw( RuntimeException )
+{
+ return C2U("SwXChapterNumbering");
+}
+
+BOOL SwXChapterNumbering::supportsService(const OUString& rServiceName) throw( RuntimeException )
+{
+ String sServiceName(rServiceName);
+ return sServiceName.EqualsAscii("com.sun.star.text.ChapterNumbering") ||
+ sServiceName.EqualsAscii("com.sun.star.text.NumberingRules");
+}
+
+Sequence< OUString > SwXChapterNumbering::getSupportedServiceNames(void) throw( RuntimeException )
+{
+ Sequence< OUString > aRet(2);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = C2U("com.sun.star.text.ChapterNumbering");
+ pArray[1] = C2U("com.sun.star.text.NumberingRules");
+ return aRet;
+}
+
+SwXChapterNumbering::SwXChapterNumbering(SwDocShell& rDocSh) :
+ SwXNumberingRules(rDocSh)
+{
+}
+
+SwXChapterNumbering::~SwXChapterNumbering()
+{
+}
+
+/******************************************************************
+ * SwXTextColumns
+ ******************************************************************/
+OUString SwXTextColumns::getImplementationName(void) throw( RuntimeException )
+{
+ return C2U("SwXTextColumns");
+}
+
+BOOL SwXTextColumns::supportsService(const OUString& rServiceName) throw( RuntimeException )
+{
+ return C2U("com.sun.star.text.TextColumns") == rServiceName;
+}
+
+Sequence< OUString > SwXTextColumns::getSupportedServiceNames(void) throw( RuntimeException )
+{
+ Sequence< OUString > aRet(1);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = C2U("com.sun.star.text.TextColumns");
+ return aRet;
+}
+
+SwXTextColumns::SwXTextColumns(sal_uInt16 nColCount) :
+ nReference(0),
+ nSepLineWidth(0),
+ nSepLineColor(0), //black
+ nSepLineHeightRelative(100),//full height
+ nSepLineVertAlign(style::VerticalAlignment_MIDDLE),
+ bSepLineIsOn(sal_False),
+ _pMap(aSwMapProvider.GetPropertyMap(PROPERTY_MAP_TEXT_COLUMS)),
+ bIsAutomaticWidth(sal_True),
+ nAutoDistance(0)
+{
+ if(nColCount)
+ setColumnCount(nColCount);
+}
+
+SwXTextColumns::SwXTextColumns(const SwFmtCol& rFmtCol) :
+ aTextColumns(rFmtCol.GetNumCols()),
+ nReference(0),
+ _pMap(aSwMapProvider.GetPropertyMap(PROPERTY_MAP_TEXT_COLUMS)),
+ bIsAutomaticWidth(rFmtCol.IsOrtho())
+{
+ USHORT nItemGutterWidth = rFmtCol.GetGutterWidth();
+ nAutoDistance = bIsAutomaticWidth ?
+ USHRT_MAX == nItemGutterWidth ? DEF_GUTTER_WIDTH : (sal_Int32)nItemGutterWidth
+ : 0;
+ nAutoDistance = TWIP_TO_MM100(nAutoDistance);
+
+ TextColumn* pColumns = aTextColumns.getArray();
+ const SwColumns& rCols = rFmtCol.GetColumns();
+ for(sal_uInt16 i = 0; i < aTextColumns.getLength(); i++)
+ {
+ SwColumn* pCol = rCols[i];
+
+ pColumns[i].Width = pCol->GetWishWidth();
+ nReference += pColumns[i].Width;
+ pColumns[i].LeftMargin = TWIP_TO_MM100(pCol->GetLeft ());
+ pColumns[i].RightMargin = TWIP_TO_MM100(pCol->GetRight());
+ }
+ if(!aTextColumns.getLength())
+ nReference = USHRT_MAX;
+
+ nSepLineWidth = rFmtCol.GetLineWidth();
+ nSepLineColor = rFmtCol.GetLineColor().GetColor();
+ nSepLineHeightRelative = rFmtCol.GetLineHeight();
+ bSepLineIsOn = rFmtCol.GetLineAdj() != COLADJ_NONE;
+ switch(rFmtCol.GetLineAdj())
+ {
+ case COLADJ_TOP: nSepLineVertAlign = style::VerticalAlignment_TOP; break;
+ case COLADJ_BOTTOM: nSepLineVertAlign = style::VerticalAlignment_BOTTOM; break;
+ case COLADJ_CENTER:
+ case COLADJ_NONE: nSepLineVertAlign = style::VerticalAlignment_MIDDLE;
+ }
+}
+
+SwXTextColumns::~SwXTextColumns()
+{
+}
+
+sal_Int32 SwXTextColumns::getReferenceValue(void) throw( uno::RuntimeException )
+{
+ SolarMutexGuard aGuard;
+ return nReference;
+}
+
+sal_Int16 SwXTextColumns::getColumnCount(void) throw( uno::RuntimeException )
+{
+ SolarMutexGuard aGuard;
+ return aTextColumns.getLength();
+}
+
+void SwXTextColumns::setColumnCount(sal_Int16 nColumns) throw( uno::RuntimeException )
+{
+ SolarMutexGuard aGuard;
+ if(nColumns <= 0)
+ throw uno::RuntimeException();
+ bIsAutomaticWidth = sal_True;
+ aTextColumns.realloc(nColumns);
+ TextColumn* pCols = aTextColumns.getArray();
+ nReference = USHRT_MAX;
+ sal_uInt16 nWidth = nReference / nColumns;
+ sal_uInt16 nDiff = nReference - nWidth * nColumns;
+ sal_Int32 nDist = nAutoDistance / 2;
+ for(sal_Int16 i = 0; i < nColumns; i++)
+ {
+ pCols[i].Width = nWidth;
+ pCols[i].LeftMargin = i == 0 ? 0 : nDist;
+ pCols[i].RightMargin = i == nColumns - 1 ? 0 : nDist;
+ }
+ pCols[nColumns - 1].Width += nDiff;
+}
+
+uno::Sequence< TextColumn > SwXTextColumns::getColumns(void) throw( uno::RuntimeException )
+{
+ SolarMutexGuard aGuard;
+ return aTextColumns;
+}
+
+void SwXTextColumns::setColumns(const uno::Sequence< TextColumn >& rColumns)
+ throw( uno::RuntimeException )
+{
+ SolarMutexGuard aGuard;
+ sal_uInt16 nReferenceTemp = 0;
+ const TextColumn* prCols = rColumns.getConstArray();
+ for(long i = 0; i < rColumns.getLength(); i++)
+ {
+ //wenn die Breite Null ist, oder die Raender breiter als die Spalte werden -> exception
+ if(!prCols[i].Width ||
+ prCols[i].LeftMargin + prCols[i].RightMargin >= prCols[i].Width)
+ throw uno::RuntimeException();
+ nReferenceTemp += prCols[i].Width;
+ }
+ bIsAutomaticWidth = sal_False;
+ nReference = !nReferenceTemp ? USHRT_MAX : nReferenceTemp;
+ aTextColumns = rColumns;
+}
+
+Reference< XPropertySetInfo > SwXTextColumns::getPropertySetInfo( ) throw(RuntimeException)
+{
+ static uno::Reference< beans::XPropertySetInfo > aRef = new SfxItemPropertySetInfo( _pMap );
+ return aRef;
+}
+
+void SwXTextColumns::setPropertyValue( const OUString& rPropertyName, const Any& aValue )
+ throw(UnknownPropertyException, PropertyVetoException, IllegalArgumentException,
+ WrappedTargetException, RuntimeException)
+{
+ const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName(
+ _pMap, rPropertyName);
+ if (!pMap)
+ throw UnknownPropertyException(OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Unknown property: " ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
+ if ( pMap->nFlags & PropertyAttribute::READONLY)
+ throw PropertyVetoException( OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Property is read-only: " ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
+
+ switch(pMap->nWID)
+ {
+ case WID_TXTCOL_LINE_WIDTH:
+ {
+ sal_Int32 nTmp; aValue >>= nTmp;
+ if(nTmp < 0)
+ throw IllegalArgumentException();
+ nSepLineWidth = MM100_TO_TWIP(nTmp);
+ }
+ break;
+ case WID_TXTCOL_LINE_COLOR:
+ aValue >>= nSepLineColor;
+ break;
+ case WID_TXTCOL_LINE_REL_HGT:
+ {
+ sal_Int8 nTmp; aValue >>= nTmp;
+ if(nTmp < 0)
+ throw IllegalArgumentException();
+ nSepLineHeightRelative = nTmp;
+ }
+ break;
+ case WID_TXTCOL_LINE_ALIGN:
+ {
+ style::VerticalAlignment eAlign;
+ if(!(aValue >>= eAlign) )
+ {
+ sal_Int8 nTmp;
+ if (! ( aValue >>= nTmp ) )
+ throw IllegalArgumentException();
+ else
+ nSepLineVertAlign = static_cast < style::VerticalAlignment > ( nTmp );
+ }
+ else
+ nSepLineVertAlign = eAlign;
+ }
+ break;
+ case WID_TXTCOL_LINE_IS_ON:
+ bSepLineIsOn = *(sal_Bool*)aValue.getValue();
+ break;
+ case WID_TXTCOL_AUTO_DISTANCE:
+ {
+ sal_Int32 nTmp;
+ aValue >>= nTmp;
+ if(nTmp < 0 || nTmp >= nReference)
+ throw IllegalArgumentException();
+ nAutoDistance = nTmp;
+ sal_Int32 nColumns = aTextColumns.getLength();
+ TextColumn* pCols = aTextColumns.getArray();
+ sal_Int32 nDist = nAutoDistance / 2;
+ for(sal_Int32 i = 0; i < nColumns; i++)
+ {
+ pCols[i].LeftMargin = i == 0 ? 0 : nDist;
+ pCols[i].RightMargin = i == nColumns - 1 ? 0 : nDist;
+ }
+ }
+ break;
+ }
+}
+
+Any SwXTextColumns::getPropertyValue( const OUString& rPropertyName )
+ throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
+{
+ const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName(
+ _pMap, rPropertyName);
+ if (!pMap)
+ throw UnknownPropertyException(OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Unknown property: " ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
+
+ Any aRet;
+ switch(pMap->nWID)
+ {
+ case WID_TXTCOL_LINE_WIDTH:
+ aRet <<= static_cast < sal_Int32 >(TWIP_TO_MM100(nSepLineWidth));
+ break;
+ case WID_TXTCOL_LINE_COLOR:
+ aRet <<= nSepLineColor;
+ break;
+ case WID_TXTCOL_LINE_REL_HGT:
+ aRet <<= nSepLineHeightRelative;
+ break;
+ case WID_TXTCOL_LINE_ALIGN:
+ aRet <<= (style::VerticalAlignment)nSepLineVertAlign;
+ break;
+ case WID_TXTCOL_LINE_IS_ON:
+ aRet.setValue(&bSepLineIsOn, ::getBooleanCppuType());
+ break;
+ case WID_TXTCOL_IS_AUTOMATIC :
+ aRet.setValue(&bIsAutomaticWidth, ::getBooleanCppuType());
+ break;
+ case WID_TXTCOL_AUTO_DISTANCE:
+ aRet <<= nAutoDistance;
+ break;
+ }
+ return aRet;
+}
+
+void SwXTextColumns::addPropertyChangeListener(
+ const OUString& aPropertyName, const Reference< XPropertyChangeListener >& xListener )
+ throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
+{
+}
+
+void SwXTextColumns::removePropertyChangeListener(
+ const OUString& aPropertyName, const Reference< XPropertyChangeListener >& aListener )
+ throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
+{
+}
+
+void SwXTextColumns::addVetoableChangeListener(
+ const OUString& PropertyName, const Reference< XVetoableChangeListener >& aListener )
+ throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
+{
+}
+
+void SwXTextColumns::removeVetoableChangeListener(
+ const OUString& PropertyName, const Reference< XVetoableChangeListener >& aListener )
+ throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
+{
+}
+
+const uno::Sequence< sal_Int8 > & SwXTextColumns::getUnoTunnelId()
+{
+ static uno::Sequence< sal_Int8 > aSeq = ::binfilter::CreateUnoTunnelId();
+ return aSeq;
+}
+
+sal_Int64 SAL_CALL SwXTextColumns::getSomething( const uno::Sequence< sal_Int8 >& rId )
+ throw(uno::RuntimeException)
+{
+ if( rId.getLength() == 16
+ && 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+ return 0;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */