xref: /aoo4110/main/sc/source/ui/unoobj/styleuno.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_sc.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski 
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski #include "scitems.hxx"
30*b1cdbd2cSJim Jagielski #include <editeng/memberids.hrc>
31*b1cdbd2cSJim Jagielski #include <svx/algitem.hxx>
32*b1cdbd2cSJim Jagielski #include <editeng/boxitem.hxx>
33*b1cdbd2cSJim Jagielski #include <editeng/langitem.hxx>
34*b1cdbd2cSJim Jagielski #include <editeng/numitem.hxx>
35*b1cdbd2cSJim Jagielski #include <svx/pageitem.hxx>
36*b1cdbd2cSJim Jagielski #include <editeng/pbinitem.hxx>
37*b1cdbd2cSJim Jagielski #include <svx/unomid.hxx>
38*b1cdbd2cSJim Jagielski #include <editeng/unonrule.hxx>
39*b1cdbd2cSJim Jagielski #include <sfx2/bindings.hxx>
40*b1cdbd2cSJim Jagielski #include <sfx2/printer.hxx>
41*b1cdbd2cSJim Jagielski #include <vcl/virdev.hxx>
42*b1cdbd2cSJim Jagielski #include <svl/itempool.hxx>
43*b1cdbd2cSJim Jagielski #include <svl/itemset.hxx>
44*b1cdbd2cSJim Jagielski #include <svl/intitem.hxx>
45*b1cdbd2cSJim Jagielski #include <svl/zformat.hxx>
46*b1cdbd2cSJim Jagielski #include <rtl/uuid.h>
47*b1cdbd2cSJim Jagielski 
48*b1cdbd2cSJim Jagielski #include <com/sun/star/table/BorderLine.hpp>
49*b1cdbd2cSJim Jagielski #include <com/sun/star/table/CellVertJustify.hpp>
50*b1cdbd2cSJim Jagielski #include <com/sun/star/table/TableBorder.hpp>
51*b1cdbd2cSJim Jagielski #include <com/sun/star/table/ShadowFormat.hpp>
52*b1cdbd2cSJim Jagielski #include <com/sun/star/table/CellHoriJustify.hpp>
53*b1cdbd2cSJim Jagielski #include <com/sun/star/table/CellOrientation.hpp>
54*b1cdbd2cSJim Jagielski #include <com/sun/star/style/PageStyleLayout.hpp>
55*b1cdbd2cSJim Jagielski #include <com/sun/star/style/GraphicLocation.hpp>
56*b1cdbd2cSJim Jagielski #include <com/sun/star/sheet/XHeaderFooterContent.hpp>
57*b1cdbd2cSJim Jagielski #include <com/sun/star/util/CellProtection.hpp>
58*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/FontSlant.hpp>
59*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/Size.hpp>
60*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/Locale.hpp>
61*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/PropertyAttribute.hpp>
62*b1cdbd2cSJim Jagielski 
63*b1cdbd2cSJim Jagielski #include "styleuno.hxx"
64*b1cdbd2cSJim Jagielski #include "docsh.hxx"
65*b1cdbd2cSJim Jagielski #include "attrib.hxx"
66*b1cdbd2cSJim Jagielski #include "stlpool.hxx"
67*b1cdbd2cSJim Jagielski #include "docpool.hxx"
68*b1cdbd2cSJim Jagielski #include "unoguard.hxx"
69*b1cdbd2cSJim Jagielski #include "miscuno.hxx"
70*b1cdbd2cSJim Jagielski #include "convuno.hxx"
71*b1cdbd2cSJim Jagielski #include "tablink.hxx"
72*b1cdbd2cSJim Jagielski #include "unonames.hxx"
73*b1cdbd2cSJim Jagielski #include "unowids.hxx"
74*b1cdbd2cSJim Jagielski #include "globstr.hrc"
75*b1cdbd2cSJim Jagielski #include "cellsuno.hxx"
76*b1cdbd2cSJim Jagielski 
77*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
78*b1cdbd2cSJim Jagielski 
79*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
80*b1cdbd2cSJim Jagielski 
lcl_GetCellStyleSet()81*b1cdbd2cSJim Jagielski const SfxItemPropertySet* lcl_GetCellStyleSet()
82*b1cdbd2cSJim Jagielski {
83*b1cdbd2cSJim Jagielski     static SfxItemPropertyMapEntry aCellStyleMap_Impl[] =
84*b1cdbd2cSJim Jagielski 	{
85*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_ASIANVERT),ATTR_VERTICAL_ASIAN,&getBooleanCppuType(),					0, 0 },
86*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_BOTTBORDER),ATTR_BORDER,		&::getCppuType((const table::BorderLine*)0),		0, BOTTOM_BORDER | CONVERT_TWIPS },
87*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CELLBACK),	ATTR_BACKGROUND,	&::getCppuType((const sal_Int32*)0),			0, MID_BACK_COLOR },
88*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CELLPRO),	ATTR_PROTECTION,	&::getCppuType((const util::CellProtection*)0),	0, 0 },
89*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CCOLOR),	ATTR_FONT_COLOR,	&::getCppuType((const sal_Int32*)0),			0, 0 },
90*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_COUTL),	ATTR_FONT_CONTOUR,	&::getBooleanCppuType(),			0, 0 },
91*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CCROSS),	ATTR_FONT_CROSSEDOUT,&::getBooleanCppuType(),			0, MID_CROSSED_OUT },
92*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CEMPHAS),	ATTR_FONT_EMPHASISMARK,&getCppuType((sal_Int16*)0),			0, MID_EMPHASIS },
93*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CFONT),	ATTR_FONT,			&::getCppuType((const sal_Int16*)0),			0, MID_FONT_FAMILY },
94*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CFCHARS),	ATTR_FONT,			&getCppuType((sal_Int16*)0),			0, MID_FONT_CHAR_SET },
95*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_CJK_CFCHARS),	ATTR_CJK_FONT,		&getCppuType((sal_Int16*)0),			0, MID_FONT_CHAR_SET },
96*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_CTL_CFCHARS),	ATTR_CTL_FONT,		&getCppuType((sal_Int16*)0),			0, MID_FONT_CHAR_SET },
97*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CFFAMIL),	ATTR_FONT,			&getCppuType((sal_Int16*)0),			0, MID_FONT_FAMILY },
98*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_CJK_CFFAMIL),	ATTR_CJK_FONT,		&getCppuType((sal_Int16*)0),			0, MID_FONT_FAMILY },
99*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_CTL_CFFAMIL),	ATTR_CTL_FONT,		&getCppuType((sal_Int16*)0),			0, MID_FONT_FAMILY },
100*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CFNAME),	ATTR_FONT,			&getCppuType((rtl::OUString*)0),		0, MID_FONT_FAMILY_NAME },
101*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_CJK_CFNAME),	ATTR_CJK_FONT,		&getCppuType((rtl::OUString*)0),		0, MID_FONT_FAMILY_NAME },
102*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_CTL_CFNAME),	ATTR_CTL_FONT,		&getCppuType((rtl::OUString*)0),		0, MID_FONT_FAMILY_NAME },
103*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CFPITCH),	ATTR_FONT,			&getCppuType((sal_Int16*)0),			0, MID_FONT_PITCH },
104*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_CJK_CFPITCH),	ATTR_CJK_FONT,		&getCppuType((sal_Int16*)0),			0, MID_FONT_PITCH },
105*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_CTL_CFPITCH),	ATTR_CTL_FONT,		&getCppuType((sal_Int16*)0),			0, MID_FONT_PITCH },
106*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CFSTYLE),	ATTR_FONT,			&getCppuType((rtl::OUString*)0),		0, MID_FONT_STYLE_NAME },
107*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_CJK_CFSTYLE),	ATTR_CJK_FONT,		&getCppuType((rtl::OUString*)0),		0, MID_FONT_STYLE_NAME },
108*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_CTL_CFSTYLE),	ATTR_CTL_FONT,		&getCppuType((rtl::OUString*)0),		0, MID_FONT_STYLE_NAME },
109*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CHEIGHT),	ATTR_FONT_HEIGHT,	&::getCppuType((const float*)0),			0, MID_FONTHEIGHT | CONVERT_TWIPS },
110*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_CJK_CHEIGHT),	ATTR_CJK_FONT_HEIGHT,&::getCppuType((const float*)0),			0, MID_FONTHEIGHT | CONVERT_TWIPS },
111*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_CTL_CHEIGHT),	ATTR_CTL_FONT_HEIGHT,&::getCppuType((const float*)0),			0, MID_FONTHEIGHT | CONVERT_TWIPS },
112*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CLOCAL),	ATTR_FONT_LANGUAGE,	&::getCppuType((const lang::Locale*)0),			0, MID_LANG_LOCALE },
113*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_CJK_CLOCAL),	ATTR_CJK_FONT_LANGUAGE,&::getCppuType((const lang::Locale*)0),			0, MID_LANG_LOCALE },
114*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_CTL_CLOCAL),	ATTR_CTL_FONT_LANGUAGE,&::getCppuType((const lang::Locale*)0),			0, MID_LANG_LOCALE },
115*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_COVER),	ATTR_FONT_OVERLINE, &::getCppuType((const sal_Int16*)0),	0, MID_TL_STYLE },
116*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_COVRLCOL),	ATTR_FONT_OVERLINE, &getCppuType((sal_Int32*)0),			0, MID_TL_COLOR },
117*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_COVRLHAS),	ATTR_FONT_OVERLINE, &getBooleanCppuType(),					0, MID_TL_HASCOLOR },
118*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CPOST),	ATTR_FONT_POSTURE,	&::getCppuType((const awt::FontSlant*)0),		0, MID_POSTURE },
119*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_CJK_CPOST),	ATTR_CJK_FONT_POSTURE,&::getCppuType((const awt::FontSlant*)0),		0, MID_POSTURE },
120*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_CTL_CPOST),	ATTR_CTL_FONT_POSTURE,&::getCppuType((const awt::FontSlant*)0),		0, MID_POSTURE },
121*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CRELIEF),	ATTR_FONT_RELIEF,	&getCppuType((sal_Int16*)0),			0, MID_RELIEF },
122*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CSHADD),	ATTR_FONT_SHADOWED,	&::getBooleanCppuType(),			0, 0 },
123*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CSTRIKE),	ATTR_FONT_CROSSEDOUT,&getCppuType((sal_Int16*)0),			0, MID_CROSS_OUT },
124*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CUNDER),	ATTR_FONT_UNDERLINE,&::getCppuType((const sal_Int16*)0),	0, MID_TL_STYLE },
125*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CUNDLCOL),	ATTR_FONT_UNDERLINE,&getCppuType((sal_Int32*)0),			0, MID_TL_COLOR },
126*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CUNDLHAS),	ATTR_FONT_UNDERLINE,&getBooleanCppuType(),					0, MID_TL_HASCOLOR },
127*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CWEIGHT),	ATTR_FONT_WEIGHT,	&::getCppuType((const float*)0),			0, MID_WEIGHT },
128*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_CJK_CWEIGHT),	ATTR_CJK_FONT_WEIGHT,&::getCppuType((const float*)0),			0, MID_WEIGHT },
129*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_CTL_CWEIGHT),	ATTR_CTL_FONT_WEIGHT,&::getCppuType((const float*)0),			0, MID_WEIGHT },
130*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CWORDMOD),	ATTR_FONT_WORDLINE,	&getBooleanCppuType(),					0, 0 },
131*b1cdbd2cSJim Jagielski         {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_BLTR), ATTR_BORDER_BLTR, &::getCppuType((const table::BorderLine*)0), 0, 0 | CONVERT_TWIPS },
132*b1cdbd2cSJim Jagielski         {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_TLBR), ATTR_BORDER_TLBR, &::getCppuType((const table::BorderLine*)0), 0, 0 | CONVERT_TWIPS },
133*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_DISPNAME),	SC_WID_UNO_DISPNAME,&::getCppuType((rtl::OUString*)0),	beans::PropertyAttribute::READONLY, 0 },
134*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CELLHJUS),	ATTR_HOR_JUSTIFY,	&::getCppuType((const table::CellHoriJustify*)0),	0, MID_HORJUST_HORJUST },
135*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CELLTRAN),	ATTR_BACKGROUND,	&::getBooleanCppuType(),			0, MID_GRAPHIC_TRANSPARENT },
136*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_WRAP),		ATTR_LINEBREAK,		&::getBooleanCppuType(),			0, 0 },
137*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_LEFTBORDER),ATTR_BORDER,		&::getCppuType((const table::BorderLine*)0),		0, LEFT_BORDER | CONVERT_TWIPS },
138*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_NUMFMT),	ATTR_VALUE_FORMAT,	&::getCppuType((const sal_Int32*)0),			0, 0 },
139*b1cdbd2cSJim Jagielski //		{MAP_CHAR_LEN(SC_UNONAME_NUMRULES),	SC_WID_UNO_NUMRULES,&getCppuType((const uno::Reference<container::XIndexReplace>*)0), 0, 0 },
140*b1cdbd2cSJim Jagielski         {MAP_CHAR_LEN(SC_UNONAME_CELLORI),  ATTR_STACKED,       &::getCppuType((const table::CellOrientation*)0),   0, 0 },
141*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_PADJUST),	ATTR_HOR_JUSTIFY,	&::getCppuType((const sal_Int16*)0),	0, MID_HORJUST_ADJUST },
142*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_PBMARGIN),	ATTR_MARGIN,		&::getCppuType((const sal_Int32*)0),			0, MID_MARGIN_LO_MARGIN | CONVERT_TWIPS },
143*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_PINDENT),	ATTR_INDENT,		&::getCppuType((const sal_Int16*)0),			0, 0 }, //! CONVERT_TWIPS
144*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_PISCHDIST),ATTR_SCRIPTSPACE,	&::getBooleanCppuType(),					0, 0 },
145*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_PISFORBID),ATTR_FORBIDDEN_RULES,&::getBooleanCppuType(),					0, 0 },
146*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_PISHANG),	ATTR_HANGPUNCTUATION,&::getBooleanCppuType(),					0, 0 },
147*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_PISHYPHEN),ATTR_HYPHENATE,		&getBooleanCppuType(),					0, 0 },
148*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_PLASTADJ),	ATTR_HOR_JUSTIFY,	&::getCppuType((const sal_Int16*)0),	0, MID_HORJUST_ADJUST },
149*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_PLMARGIN),	ATTR_MARGIN,		&::getCppuType((const sal_Int32*)0),			0, MID_MARGIN_L_MARGIN  | CONVERT_TWIPS },
150*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_PRMARGIN),	ATTR_MARGIN,		&::getCppuType((const sal_Int32*)0),			0, MID_MARGIN_R_MARGIN  | CONVERT_TWIPS },
151*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_PTMARGIN),	ATTR_MARGIN,		&::getCppuType((const sal_Int32*)0),			0, MID_MARGIN_UP_MARGIN | CONVERT_TWIPS },
152*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_RIGHTBORDER),ATTR_BORDER,		&::getCppuType((const table::BorderLine*)0),		0, RIGHT_BORDER | CONVERT_TWIPS },
153*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_ROTANG),	ATTR_ROTATE_VALUE,	&::getCppuType((const sal_Int32*)0),			0, 0 },
154*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_ROTREF),	ATTR_ROTATE_MODE,	&::getCppuType((const table::CellVertJustify*)0),	0, 0 },
155*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_SHADOW),	ATTR_SHADOW,		&::getCppuType((const table::ShadowFormat*)0),	0, 0 | CONVERT_TWIPS },
156*b1cdbd2cSJim Jagielski         {MAP_CHAR_LEN(SC_UNONAME_SHRINK_TO_FIT), ATTR_SHRINKTOFIT, &getBooleanCppuType(),               0, 0 },
157*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_TBLBORD),	SC_WID_UNO_TBLBORD,	&::getCppuType((const table::TableBorder*)0),		0, 0 | CONVERT_TWIPS },
158*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_TOPBORDER),ATTR_BORDER,		&::getCppuType((const table::BorderLine*)0),		0, TOP_BORDER | CONVERT_TWIPS },
159*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_USERDEF),	ATTR_USERDEF,		&getCppuType((uno::Reference<container::XNameContainer>*)0), 0, 0 },
160*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_CELLVJUS),	ATTR_VER_JUSTIFY,	&::getCppuType((const table::CellVertJustify*)0),	0, 0 },
161*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_WRITING),	ATTR_WRITINGDIR,	&getCppuType((sal_Int16*)0),			0, 0 },
162*b1cdbd2cSJim Jagielski         {0,0,0,0,0,0}
163*b1cdbd2cSJim Jagielski 	};
164*b1cdbd2cSJim Jagielski 	static SfxItemPropertySet aCellStyleSet_Impl( aCellStyleMap_Impl );
165*b1cdbd2cSJim Jagielski 	return &aCellStyleSet_Impl;
166*b1cdbd2cSJim Jagielski }
167*b1cdbd2cSJim Jagielski 
168*b1cdbd2cSJim Jagielski //	Map mit allen Seitenattributen, incl. Kopf-/Fusszeilenattribute
169*b1cdbd2cSJim Jagielski 
lcl_GetPageStyleSet()170*b1cdbd2cSJim Jagielski const SfxItemPropertySet * lcl_GetPageStyleSet()
171*b1cdbd2cSJim Jagielski {
172*b1cdbd2cSJim Jagielski     static SfxItemPropertyMapEntry aPageStyleMap_Impl[] =
173*b1cdbd2cSJim Jagielski 	{
174*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_BACKCOLOR),	ATTR_BACKGROUND,	&::getCppuType((const sal_Int32*)0),			0, MID_BACK_COLOR },
175*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_GRAPHICFILT),	ATTR_BACKGROUND,	&::getCppuType((const ::rtl::OUString*)0),			0, MID_GRAPHIC_FILTER },
176*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_GRAPHICLOC),	ATTR_BACKGROUND,	&::getCppuType((const style::GraphicLocation*)0),	0, MID_GRAPHIC_POSITION },
177*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_GRAPHICURL),	ATTR_BACKGROUND,	&::getCppuType((const ::rtl::OUString*)0),			0, MID_GRAPHIC_URL },
178*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_BACKTRANS),	ATTR_BACKGROUND,	&::getBooleanCppuType(),			0, MID_GRAPHIC_TRANSPARENT },
179*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_BACKCOLOR),	ATTR_BACKGROUND,	&::getCppuType((const sal_Int32*)0),			0, MID_BACK_COLOR },
180*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_BORDERDIST),	ATTR_BORDER,		&::getCppuType((const sal_Int32*)0),	0, BORDER_DISTANCE | CONVERT_TWIPS },
181*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_BOTTBORDER),	ATTR_BORDER,		&::getCppuType((const table::BorderLine*)0),		0, BOTTOM_BORDER | CONVERT_TWIPS },
182*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_BOTTBRDDIST),	ATTR_BORDER,		&::getCppuType((const sal_Int32*)0),	0, BOTTOM_BORDER_DISTANCE | CONVERT_TWIPS },
183*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_BOTTMARGIN),	ATTR_ULSPACE,		&::getCppuType((const sal_Int32*)0),			0, MID_LO_MARGIN | CONVERT_TWIPS },
184*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_CENTERHOR),	ATTR_PAGE_HORCENTER,&::getBooleanCppuType(),			0, 0 },
185*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_CENTERVER),	ATTR_PAGE_VERCENTER,&::getBooleanCppuType(),			0, 0 },
186*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_DISPNAME),		SC_WID_UNO_DISPNAME,&::getCppuType((rtl::OUString*)0),	beans::PropertyAttribute::READONLY, 0 },
187*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FIRSTPAGE),	ATTR_PAGE_FIRSTPAGENO,&::getCppuType((const sal_Int16*)0),		0, 0 },
188*b1cdbd2cSJim Jagielski //
189*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRBACKCOL),	SC_WID_UNO_FOOTERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
190*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRGRFFILT),	SC_WID_UNO_FOOTERSET,&::getCppuType((const ::rtl::OUString*)0),		0, 0 },
191*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRGRFLOC),	SC_WID_UNO_FOOTERSET,&::getCppuType((const style::GraphicLocation*)0), 0, 0 },
192*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRGRFURL),	SC_WID_UNO_FOOTERSET,&::getCppuType((const ::rtl::OUString*)0),		0, 0 },
193*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRBACKTRAN),	SC_WID_UNO_FOOTERSET,&::getBooleanCppuType(),						0, 0 },
194*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_FTRBACKCOL),	SC_WID_UNO_FOOTERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
195*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRBODYDIST),	SC_WID_UNO_FOOTERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
196*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRBRDDIST),	SC_WID_UNO_FOOTERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
197*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRBOTTBOR),	SC_WID_UNO_FOOTERSET,&::getCppuType((const table::BorderLine*)0),	0, 0 },
198*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRBOTTBDIS),	SC_WID_UNO_FOOTERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
199*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_FTRDYNAMIC),	SC_WID_UNO_FOOTERSET,&::getBooleanCppuType(),						0, 0 },
200*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRHEIGHT),	SC_WID_UNO_FOOTERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
201*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRDYNAMIC),	SC_WID_UNO_FOOTERSET,&::getBooleanCppuType(),						0, 0 },
202*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRON),		SC_WID_UNO_FOOTERSET,&::getBooleanCppuType(),						0, 0 },
203*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRSHARED),	SC_WID_UNO_FOOTERSET,&::getBooleanCppuType(),						0, 0 },
204*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRLEFTBOR),	SC_WID_UNO_FOOTERSET,&::getCppuType((const table::BorderLine*)0),	0, 0 },
205*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRLEFTBDIS),	SC_WID_UNO_FOOTERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
206*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRLEFTMAR),	SC_WID_UNO_FOOTERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
207*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_FTRON),		SC_WID_UNO_FOOTERSET,&::getBooleanCppuType(),						0, 0 },
208*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRRIGHTBOR),	SC_WID_UNO_FOOTERSET,&::getCppuType((const table::BorderLine*)0),	0, 0 },
209*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRRIGHTBDIS),SC_WID_UNO_FOOTERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
210*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRRIGHTMAR),	SC_WID_UNO_FOOTERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
211*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRSHADOW),	SC_WID_UNO_FOOTERSET,&::getCppuType((const table::ShadowFormat*)0),	0, 0 },
212*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_FTRSHARED),	SC_WID_UNO_FOOTERSET,&::getBooleanCppuType(),						0, 0 },
213*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRTOPBOR),	SC_WID_UNO_FOOTERSET,&::getCppuType((const table::BorderLine*)0),	0, 0 },
214*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRTOPBDIS),	SC_WID_UNO_FOOTERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
215*b1cdbd2cSJim Jagielski //
216*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRBACKCOL),	SC_WID_UNO_HEADERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
217*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRGRFFILT),	SC_WID_UNO_HEADERSET,&::getCppuType((const ::rtl::OUString*)0),		0, 0 },
218*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRGRFLOC),	SC_WID_UNO_HEADERSET,&::getCppuType((const style::GraphicLocation*)0), 0, 0 },
219*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRGRFURL),	SC_WID_UNO_HEADERSET,&::getCppuType((const ::rtl::OUString*)0),		0, 0 },
220*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRBACKTRAN),	SC_WID_UNO_HEADERSET,&::getBooleanCppuType(),						0, 0 },
221*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_HDRBACKCOL),	SC_WID_UNO_HEADERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
222*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRBODYDIST),	SC_WID_UNO_HEADERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
223*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRBRDDIST),	SC_WID_UNO_HEADERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
224*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRBOTTBOR),	SC_WID_UNO_HEADERSET,&::getCppuType((const table::BorderLine*)0),	0, 0 },
225*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRBOTTBDIS),	SC_WID_UNO_HEADERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
226*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_HDRDYNAMIC),	SC_WID_UNO_HEADERSET,&::getBooleanCppuType(),						0, 0 },
227*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRHEIGHT),	SC_WID_UNO_HEADERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
228*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRDYNAMIC),	SC_WID_UNO_HEADERSET,&::getBooleanCppuType(),						0, 0 },
229*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRON),		SC_WID_UNO_HEADERSET,&::getBooleanCppuType(),						0, 0 },
230*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRSHARED),	SC_WID_UNO_HEADERSET,&::getBooleanCppuType(),						0, 0 },
231*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRLEFTBOR),	SC_WID_UNO_HEADERSET,&::getCppuType((const table::BorderLine*)0),	0, 0 },
232*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRLEFTBDIS),	SC_WID_UNO_HEADERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
233*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRLEFTMAR),	SC_WID_UNO_HEADERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
234*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_HDRON),		SC_WID_UNO_HEADERSET,&::getBooleanCppuType(),						0, 0 },
235*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRRIGHTBOR),	SC_WID_UNO_HEADERSET,&::getCppuType((const table::BorderLine*)0),	0, 0 },
236*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRRIGHTBDIS),SC_WID_UNO_HEADERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
237*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRRIGHTMAR),	SC_WID_UNO_HEADERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
238*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRSHADOW),	SC_WID_UNO_HEADERSET,&::getCppuType((const table::ShadowFormat*)0),	0, 0 },
239*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_HDRSHARED),	SC_WID_UNO_HEADERSET,&::getBooleanCppuType(),						0, 0 },
240*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRTOPBOR),	SC_WID_UNO_HEADERSET,&::getCppuType((const table::BorderLine*)0),	0, 0 },
241*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRTOPBDIS),	SC_WID_UNO_HEADERSET,&::getCppuType((const sal_Int32*)0),			0, 0 },
242*b1cdbd2cSJim Jagielski //
243*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HEIGHT),		ATTR_PAGE_SIZE,		&::getCppuType((const sal_Int32*)0),			0, MID_SIZE_HEIGHT | CONVERT_TWIPS },
244*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_BACKTRANS),	ATTR_BACKGROUND,	&::getBooleanCppuType(),			0, MID_GRAPHIC_TRANSPARENT },
245*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_LANDSCAPE),	ATTR_PAGE,			&::getBooleanCppuType(),			0, MID_PAGE_ORIENTATION },
246*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_LEFTBORDER),	ATTR_BORDER,		&::getCppuType((const table::BorderLine*)0),		0, LEFT_BORDER | CONVERT_TWIPS },
247*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_LEFTBRDDIST),	ATTR_BORDER,		&::getCppuType((const sal_Int32*)0),	0, LEFT_BORDER_DISTANCE | CONVERT_TWIPS },
248*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_LEFTMARGIN),	ATTR_LRSPACE,		&::getCppuType((const sal_Int32*)0),			0, MID_L_MARGIN | CONVERT_TWIPS },
249*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_LEFTFTRCONT),	ATTR_PAGE_FOOTERLEFT,&::getCppuType((const uno::Reference< sheet::XHeaderFooterContent >*)0), 0, 0 },
250*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_LEFTHDRCONT),	ATTR_PAGE_HEADERLEFT,&::getCppuType((const uno::Reference< sheet::XHeaderFooterContent >*)0), 0, 0 },
251*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_NUMBERTYPE),	ATTR_PAGE,			&::getCppuType((const sal_Int16*)0),			0, MID_PAGE_NUMTYPE },
252*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_SCALEVAL),	ATTR_PAGE_SCALE,	&::getCppuType((const sal_Int16*)0),			0, 0 },
253*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_SYTLELAYOUT),	ATTR_PAGE,			&::getCppuType((const style::PageStyleLayout*)0),	0, MID_PAGE_LAYOUT },
254*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_PRINTANNOT),	ATTR_PAGE_NOTES,	&::getBooleanCppuType(),			0, 0 },
255*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_PRINTCHARTS),	ATTR_PAGE_CHARTS,	&::getBooleanCppuType(),			0, 0 },
256*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_PRINTDOWN),	ATTR_PAGE_TOPDOWN,	&::getBooleanCppuType(),			0, 0 },
257*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_PRINTDRAW),	ATTR_PAGE_DRAWINGS,	&::getBooleanCppuType(),			0, 0 },
258*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_PRINTFORMUL),	ATTR_PAGE_FORMULAS,	&::getBooleanCppuType(),			0, 0 },
259*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_PRINTGRID),	ATTR_PAGE_GRID,		&::getBooleanCppuType(),			0, 0 },
260*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_PRINTHEADER),	ATTR_PAGE_HEADERS,	&::getBooleanCppuType(),			0, 0 },
261*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_PRINTOBJS),	ATTR_PAGE_OBJECTS,	&::getBooleanCppuType(),			0, 0 },
262*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_PRINTZERO),	ATTR_PAGE_NULLVALS,	&::getBooleanCppuType(),			0, 0 },
263*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_PAPERTRAY),	ATTR_PAGE_PAPERBIN,	&::getCppuType((const ::rtl::OUString*)0),		0, 0 },
264*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_RIGHTBORDER),	ATTR_BORDER,		&::getCppuType((const table::BorderLine*)0),		0, RIGHT_BORDER | CONVERT_TWIPS },
265*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_RIGHTBRDDIST),ATTR_BORDER,		&::getCppuType((const sal_Int32*)0),	0, RIGHT_BORDER_DISTANCE | CONVERT_TWIPS },
266*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_RIGHTMARGIN),	ATTR_LRSPACE,		&::getCppuType((const sal_Int32*)0),			0, MID_R_MARGIN | CONVERT_TWIPS },
267*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_RIGHTFTRCON),	ATTR_PAGE_FOOTERRIGHT,&::getCppuType((const uno::Reference< sheet::XHeaderFooterContent >*)0), 0, 0 },
268*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_RIGHTHDRCON),	ATTR_PAGE_HEADERRIGHT,&::getCppuType((const uno::Reference< sheet::XHeaderFooterContent >*)0), 0, 0 },
269*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_SCALETOPAG),	ATTR_PAGE_SCALETOPAGES,&::getCppuType((const sal_Int16*)0),		0, 0 },
270*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_SCALETOX),	ATTR_PAGE_SCALETO,  &::getCppuType((const sal_Int16*)0),		0, 0 },
271*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_SCALETOY),	ATTR_PAGE_SCALETO,  &::getCppuType((const sal_Int16*)0),		0, 0 },
272*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_SHADOWFORM),	ATTR_SHADOW,		&::getCppuType((const table::ShadowFormat*)0),	0, 0 | CONVERT_TWIPS },
273*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_SIZE),		ATTR_PAGE_SIZE,		&::getCppuType((const awt::Size*)0),			0, MID_SIZE_SIZE | CONVERT_TWIPS },
274*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_TOPBORDER),	ATTR_BORDER,		&::getCppuType((const table::BorderLine*)0),		0, TOP_BORDER | CONVERT_TWIPS },
275*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_TOPBRDDIST),	ATTR_BORDER,		&::getCppuType((const sal_Int32*)0),	0, TOP_BORDER_DISTANCE | CONVERT_TWIPS },
276*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_TOPMARGIN),	ATTR_ULSPACE,		&::getCppuType((const sal_Int32*)0),			0, MID_UP_MARGIN | CONVERT_TWIPS },
277*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_FTRBACKTRAN),SC_WID_UNO_FOOTERSET,&::getBooleanCppuType(),						0, 0 },
278*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_HDRBACKTRAN),SC_WID_UNO_HEADERSET,&::getBooleanCppuType(),						0, 0 },
279*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_USERDEF),		ATTR_USERDEF,		&getCppuType((uno::Reference<container::XNameContainer>*)0), 0, 0 },
280*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_WIDTH),		ATTR_PAGE_SIZE,		&::getCppuType((const sal_Int32*)0),			0, MID_SIZE_WIDTH | CONVERT_TWIPS },
281*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNONAME_WRITING),		ATTR_WRITINGDIR,	&getCppuType((sal_Int16*)0),			0, 0 },
282*b1cdbd2cSJim Jagielski         {0,0,0,0,0,0}
283*b1cdbd2cSJim Jagielski 	};
284*b1cdbd2cSJim Jagielski 	static SfxItemPropertySet aPageStyleSet_Impl( aPageStyleMap_Impl );
285*b1cdbd2cSJim Jagielski 	return &aPageStyleSet_Impl;
286*b1cdbd2cSJim Jagielski }
287*b1cdbd2cSJim Jagielski 
288*b1cdbd2cSJim Jagielski //	Map mit Inhalten des Header-Item-Sets
289*b1cdbd2cSJim Jagielski 
lcl_GetHeaderStyleMap()290*b1cdbd2cSJim Jagielski const SfxItemPropertyMap* lcl_GetHeaderStyleMap()
291*b1cdbd2cSJim Jagielski {
292*b1cdbd2cSJim Jagielski     static SfxItemPropertyMapEntry aHeaderStyleMap_Impl[] =
293*b1cdbd2cSJim Jagielski 	{
294*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRBACKCOL),	ATTR_BACKGROUND,	&::getCppuType((const sal_Int32*)0),			0, MID_BACK_COLOR },
295*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRGRFFILT),	ATTR_BACKGROUND,	&::getCppuType((const ::rtl::OUString*)0),			0, MID_GRAPHIC_FILTER },
296*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRGRFLOC),	ATTR_BACKGROUND,	&::getCppuType((const style::GraphicLocation*)0),	0, MID_GRAPHIC_POSITION },
297*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRGRFURL),	ATTR_BACKGROUND,	&::getCppuType((const ::rtl::OUString*)0),			0, MID_GRAPHIC_URL },
298*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRBACKTRAN),	ATTR_BACKGROUND,	&::getBooleanCppuType(),			0, MID_GRAPHIC_TRANSPARENT },
299*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_HDRBACKCOL),	ATTR_BACKGROUND,	&::getCppuType((const sal_Int32*)0),			0, MID_BACK_COLOR },
300*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRBODYDIST),	ATTR_ULSPACE,		&::getCppuType((const sal_Int32*)0),			0, MID_LO_MARGIN | CONVERT_TWIPS },
301*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRBRDDIST),	ATTR_BORDER,		&::getCppuType((const sal_Int32*)0),	0, BORDER_DISTANCE | CONVERT_TWIPS },
302*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRBOTTBOR),	ATTR_BORDER,		&::getCppuType((const table::BorderLine*)0),		0, BOTTOM_BORDER | CONVERT_TWIPS },
303*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRBOTTBDIS),	ATTR_BORDER,		&::getCppuType((const sal_Int32*)0),	0, BOTTOM_BORDER_DISTANCE | CONVERT_TWIPS },
304*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_HDRDYNAMIC),	ATTR_PAGE_DYNAMIC,	&::getBooleanCppuType(),			0, 0 },
305*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRHEIGHT),	ATTR_PAGE_SIZE,		&::getCppuType((const sal_Int32*)0),			0, MID_SIZE_HEIGHT | CONVERT_TWIPS },
306*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRDYNAMIC),	ATTR_PAGE_DYNAMIC,	&::getBooleanCppuType(),			0, 0 },
307*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRON),		ATTR_PAGE_ON,		&::getBooleanCppuType(),			0, 0 },
308*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRSHARED),	ATTR_PAGE_SHARED,	&::getBooleanCppuType(),			0, 0 },
309*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRLEFTBOR),	ATTR_BORDER,		&::getCppuType((const table::BorderLine*)0),		0, LEFT_BORDER | CONVERT_TWIPS },
310*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRLEFTBDIS),	ATTR_BORDER,		&::getCppuType((const sal_Int32*)0),	0, LEFT_BORDER_DISTANCE | CONVERT_TWIPS },
311*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRLEFTMAR),	ATTR_LRSPACE,		&::getCppuType((const sal_Int32*)0),			0, MID_L_MARGIN | CONVERT_TWIPS },
312*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_HDRON),		ATTR_PAGE_ON,		&::getBooleanCppuType(),			0, 0 },
313*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRRIGHTBOR),	ATTR_BORDER,		&::getCppuType((const table::BorderLine*)0),		0, RIGHT_BORDER | CONVERT_TWIPS },
314*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRRIGHTBDIS),ATTR_BORDER,		&::getCppuType((const sal_Int32*)0),	0, RIGHT_BORDER_DISTANCE | CONVERT_TWIPS },
315*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRRIGHTMAR),	ATTR_LRSPACE,		&::getCppuType((const sal_Int32*)0),			0, MID_R_MARGIN | CONVERT_TWIPS },
316*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRSHADOW),	ATTR_SHADOW,		&::getCppuType((const table::ShadowFormat*)0),	0, 0 | CONVERT_TWIPS },
317*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_HDRSHARED),	ATTR_PAGE_SHARED,	&::getBooleanCppuType(),			0, 0 },
318*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRTOPBOR),	ATTR_BORDER,		&::getCppuType((const table::BorderLine*)0),		0, TOP_BORDER | CONVERT_TWIPS },
319*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_HDRTOPBDIS),	ATTR_BORDER,		&::getCppuType((const sal_Int32*)0),	0, TOP_BORDER_DISTANCE | CONVERT_TWIPS },
320*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_HDRBACKTRAN),ATTR_BACKGROUND,	&::getBooleanCppuType(),			0, MID_GRAPHIC_TRANSPARENT },
321*b1cdbd2cSJim Jagielski         {0,0,0,0,0,0}
322*b1cdbd2cSJim Jagielski 	};
323*b1cdbd2cSJim Jagielski     static SfxItemPropertyMap aHeaderStyleMap( aHeaderStyleMap_Impl );
324*b1cdbd2cSJim Jagielski     return &aHeaderStyleMap;
325*b1cdbd2cSJim Jagielski }
326*b1cdbd2cSJim Jagielski 
327*b1cdbd2cSJim Jagielski //	Map mit Inhalten des Footer-Item-Sets
328*b1cdbd2cSJim Jagielski 
lcl_GetFooterStyleMap()329*b1cdbd2cSJim Jagielski const SfxItemPropertyMap* lcl_GetFooterStyleMap()
330*b1cdbd2cSJim Jagielski {
331*b1cdbd2cSJim Jagielski     static SfxItemPropertyMapEntry aFooterStyleMap_Impl[] =
332*b1cdbd2cSJim Jagielski 	{
333*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRBACKCOL),	ATTR_BACKGROUND,	&::getCppuType((const sal_Int32*)0),			0, MID_BACK_COLOR },
334*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRGRFFILT),	ATTR_BACKGROUND,	&::getCppuType((const ::rtl::OUString*)0),			0, MID_GRAPHIC_FILTER },
335*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRGRFLOC),	ATTR_BACKGROUND,	&::getCppuType((const style::GraphicLocation*)0),	0, MID_GRAPHIC_POSITION },
336*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRGRFURL),	ATTR_BACKGROUND,	&::getCppuType((const ::rtl::OUString*)0),			0, MID_GRAPHIC_URL },
337*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRBACKTRAN),	ATTR_BACKGROUND,	&::getBooleanCppuType(),			0, MID_GRAPHIC_TRANSPARENT },
338*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_FTRBACKCOL),	ATTR_BACKGROUND,	&::getCppuType((const sal_Int32*)0),			0, MID_BACK_COLOR },
339*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRBODYDIST),	ATTR_ULSPACE,		&::getCppuType((const sal_Int32*)0),			0, MID_UP_MARGIN | CONVERT_TWIPS },
340*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRBRDDIST),	ATTR_BORDER,		&::getCppuType((const sal_Int32*)0),	0, BORDER_DISTANCE | CONVERT_TWIPS },
341*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRBOTTBOR),	ATTR_BORDER,		&::getCppuType((const table::BorderLine*)0),		0, BOTTOM_BORDER | CONVERT_TWIPS },
342*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRBOTTBDIS),	ATTR_BORDER,		&::getCppuType((const sal_Int32*)0),	0, BOTTOM_BORDER_DISTANCE | CONVERT_TWIPS },
343*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_FTRDYNAMIC),	ATTR_PAGE_DYNAMIC,	&::getBooleanCppuType(),			0, 0 },
344*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRHEIGHT),	ATTR_PAGE_SIZE,		&::getCppuType((const sal_Int32*)0),			0, MID_SIZE_HEIGHT | CONVERT_TWIPS },
345*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRDYNAMIC),	ATTR_PAGE_DYNAMIC,	&::getBooleanCppuType(),			0, 0 },
346*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRON),		ATTR_PAGE_ON,		&::getBooleanCppuType(),			0, 0 },
347*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRSHARED),	ATTR_PAGE_SHARED,	&::getBooleanCppuType(),			0, 0 },
348*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRLEFTBOR),	ATTR_BORDER,		&::getCppuType((const table::BorderLine*)0),		0, LEFT_BORDER | CONVERT_TWIPS },
349*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRLEFTBDIS),	ATTR_BORDER,		&::getCppuType((const sal_Int32*)0),	0, LEFT_BORDER_DISTANCE | CONVERT_TWIPS },
350*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRLEFTMAR),	ATTR_LRSPACE,		&::getCppuType((const sal_Int32*)0),			0, MID_L_MARGIN | CONVERT_TWIPS },
351*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_FTRON),		ATTR_PAGE_ON,		&::getBooleanCppuType(),			0, 0 },
352*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRRIGHTBOR),	ATTR_BORDER,		&::getCppuType((const table::BorderLine*)0),		0, RIGHT_BORDER | CONVERT_TWIPS },
353*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRRIGHTBDIS),ATTR_BORDER,		&::getCppuType((const sal_Int32*)0),	0, RIGHT_BORDER_DISTANCE | CONVERT_TWIPS },
354*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRRIGHTMAR),	ATTR_LRSPACE,		&::getCppuType((const sal_Int32*)0),			0, MID_R_MARGIN | CONVERT_TWIPS },
355*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRSHADOW),	ATTR_SHADOW,		&::getCppuType((const table::ShadowFormat*)0),	0, 0 | CONVERT_TWIPS },
356*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_FTRSHARED),	ATTR_PAGE_SHARED,	&::getBooleanCppuType(),			0, 0 },
357*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRTOPBOR),	ATTR_BORDER,		&::getCppuType((const table::BorderLine*)0),		0, TOP_BORDER | CONVERT_TWIPS },
358*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(SC_UNO_PAGE_FTRTOPBDIS),	ATTR_BORDER,		&::getCppuType((const sal_Int32*)0),	0, TOP_BORDER_DISTANCE | CONVERT_TWIPS },
359*b1cdbd2cSJim Jagielski 		{MAP_CHAR_LEN(OLD_UNO_PAGE_FTRBACKTRAN),ATTR_BACKGROUND,	&::getBooleanCppuType(),			0, MID_GRAPHIC_TRANSPARENT },
360*b1cdbd2cSJim Jagielski         {0,0,0,0,0,0}
361*b1cdbd2cSJim Jagielski 	};
362*b1cdbd2cSJim Jagielski     static SfxItemPropertyMap aFooterStyleMap( aFooterStyleMap_Impl );
363*b1cdbd2cSJim Jagielski     return &aFooterStyleMap;
364*b1cdbd2cSJim Jagielski }
365*b1cdbd2cSJim Jagielski 
366*b1cdbd2cSJim Jagielski 
367*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
368*b1cdbd2cSJim Jagielski 
369*b1cdbd2cSJim Jagielski //	Index-Access auf die Style-Typen: 0 = Cell, 1 = Page
370*b1cdbd2cSJim Jagielski 
371*b1cdbd2cSJim Jagielski #define SC_STYLE_FAMILY_COUNT 2
372*b1cdbd2cSJim Jagielski 
373*b1cdbd2cSJim Jagielski #define SC_FAMILYNAME_CELL	"CellStyles"
374*b1cdbd2cSJim Jagielski #define SC_FAMILYNAME_PAGE	"PageStyles"
375*b1cdbd2cSJim Jagielski 
376*b1cdbd2cSJim Jagielski static sal_uInt16 aStyleFamilyTypes[SC_STYLE_FAMILY_COUNT] = { SFX_STYLE_FAMILY_PARA, SFX_STYLE_FAMILY_PAGE };
377*b1cdbd2cSJim Jagielski 
378*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
379*b1cdbd2cSJim Jagielski 
380*b1cdbd2cSJim Jagielski //!	diese Funktionen in einen allgemeinen Header verschieben
TwipsToHMM(long nTwips)381*b1cdbd2cSJim Jagielski inline long TwipsToHMM(long nTwips)	{ return (nTwips * 127 + 36) / 72; }
HMMToTwips(long nHMM)382*b1cdbd2cSJim Jagielski inline long HMMToTwips(long nHMM)	{ return (nHMM * 72 + 63) / 127; }
383*b1cdbd2cSJim Jagielski 
384*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
385*b1cdbd2cSJim Jagielski 
386*b1cdbd2cSJim Jagielski #define SCSTYLE_SERVICE			"com.sun.star.style.Style"
387*b1cdbd2cSJim Jagielski #define SCCELLSTYLE_SERVICE		"com.sun.star.style.CellStyle"
388*b1cdbd2cSJim Jagielski #define SCPAGESTYLE_SERVICE		"com.sun.star.style.PageStyle"
389*b1cdbd2cSJim Jagielski 
390*b1cdbd2cSJim Jagielski SC_SIMPLE_SERVICE_INFO( ScStyleFamiliesObj, "ScStyleFamiliesObj", "com.sun.star.style.StyleFamilies" )
391*b1cdbd2cSJim Jagielski SC_SIMPLE_SERVICE_INFO( ScStyleFamilyObj, "ScStyleFamilyObj", "com.sun.star.style.StyleFamily" )
392*b1cdbd2cSJim Jagielski 
393*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
394*b1cdbd2cSJim Jagielski 
395*b1cdbd2cSJim Jagielski #define SC_PAPERBIN_DEFAULTNAME		"[From printer settings]"
396*b1cdbd2cSJim Jagielski 
397*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
398*b1cdbd2cSJim Jagielski 
399*b1cdbd2cSJim Jagielski //	conversion programmatic <-> display (visible) name
400*b1cdbd2cSJim Jagielski //	currently, the core always has the visible names
401*b1cdbd2cSJim Jagielski //	the api is required to use programmatic names for default styles
402*b1cdbd2cSJim Jagielski //	these programmatic names must never change!
403*b1cdbd2cSJim Jagielski 
404*b1cdbd2cSJim Jagielski #define SC_STYLE_PROG_STANDARD		"Default"
405*b1cdbd2cSJim Jagielski #define SC_STYLE_PROG_RESULT		"Result"
406*b1cdbd2cSJim Jagielski #define SC_STYLE_PROG_RESULT1		"Result2"
407*b1cdbd2cSJim Jagielski #define SC_STYLE_PROG_HEADLINE		"Heading"
408*b1cdbd2cSJim Jagielski #define SC_STYLE_PROG_HEADLINE1		"Heading1"
409*b1cdbd2cSJim Jagielski #define SC_STYLE_PROG_REPORT		"Report"
410*b1cdbd2cSJim Jagielski 
411*b1cdbd2cSJim Jagielski struct ScDisplayNameMap
412*b1cdbd2cSJim Jagielski {
413*b1cdbd2cSJim Jagielski 	String	aDispName;
414*b1cdbd2cSJim Jagielski 	String	aProgName;
415*b1cdbd2cSJim Jagielski };
416*b1cdbd2cSJim Jagielski 
lcl_GetStyleNameMap(sal_uInt16 nType)417*b1cdbd2cSJim Jagielski const ScDisplayNameMap* lcl_GetStyleNameMap( sal_uInt16 nType )
418*b1cdbd2cSJim Jagielski {
419*b1cdbd2cSJim Jagielski 	if ( nType == SFX_STYLE_FAMILY_PARA )
420*b1cdbd2cSJim Jagielski 	{
421*b1cdbd2cSJim Jagielski 		static sal_Bool bCellMapFilled = sal_False;
422*b1cdbd2cSJim Jagielski 		static ScDisplayNameMap aCellMap[6];
423*b1cdbd2cSJim Jagielski 		if ( !bCellMapFilled )
424*b1cdbd2cSJim Jagielski 		{
425*b1cdbd2cSJim Jagielski 			aCellMap[0].aDispName = ScGlobal::GetRscString( STR_STYLENAME_STANDARD );
426*b1cdbd2cSJim Jagielski 			aCellMap[0].aProgName = String::CreateFromAscii( SC_STYLE_PROG_STANDARD );
427*b1cdbd2cSJim Jagielski 
428*b1cdbd2cSJim Jagielski 			aCellMap[1].aDispName = ScGlobal::GetRscString( STR_STYLENAME_RESULT );
429*b1cdbd2cSJim Jagielski 			aCellMap[1].aProgName = String::CreateFromAscii( SC_STYLE_PROG_RESULT );
430*b1cdbd2cSJim Jagielski 
431*b1cdbd2cSJim Jagielski 			aCellMap[2].aDispName = ScGlobal::GetRscString( STR_STYLENAME_RESULT1 );
432*b1cdbd2cSJim Jagielski 			aCellMap[2].aProgName = String::CreateFromAscii( SC_STYLE_PROG_RESULT1 );
433*b1cdbd2cSJim Jagielski 
434*b1cdbd2cSJim Jagielski 			aCellMap[3].aDispName = ScGlobal::GetRscString( STR_STYLENAME_HEADLINE );
435*b1cdbd2cSJim Jagielski 			aCellMap[3].aProgName = String::CreateFromAscii( SC_STYLE_PROG_HEADLINE );
436*b1cdbd2cSJim Jagielski 
437*b1cdbd2cSJim Jagielski 			aCellMap[4].aDispName = ScGlobal::GetRscString( STR_STYLENAME_HEADLINE1 );
438*b1cdbd2cSJim Jagielski 			aCellMap[4].aProgName = String::CreateFromAscii( SC_STYLE_PROG_HEADLINE1 );
439*b1cdbd2cSJim Jagielski 
440*b1cdbd2cSJim Jagielski 			//	last entry remains empty
441*b1cdbd2cSJim Jagielski 
442*b1cdbd2cSJim Jagielski 			bCellMapFilled = sal_True;
443*b1cdbd2cSJim Jagielski 		}
444*b1cdbd2cSJim Jagielski 		return aCellMap;
445*b1cdbd2cSJim Jagielski 	}
446*b1cdbd2cSJim Jagielski 	else if ( nType == SFX_STYLE_FAMILY_PAGE )
447*b1cdbd2cSJim Jagielski 	{
448*b1cdbd2cSJim Jagielski 		static sal_Bool bPageMapFilled = sal_False;
449*b1cdbd2cSJim Jagielski 		static ScDisplayNameMap aPageMap[3];
450*b1cdbd2cSJim Jagielski 		if ( !bPageMapFilled )
451*b1cdbd2cSJim Jagielski 		{
452*b1cdbd2cSJim Jagielski 			aPageMap[0].aDispName = ScGlobal::GetRscString( STR_STYLENAME_STANDARD );
453*b1cdbd2cSJim Jagielski 			aPageMap[0].aProgName = String::CreateFromAscii( SC_STYLE_PROG_STANDARD );
454*b1cdbd2cSJim Jagielski 
455*b1cdbd2cSJim Jagielski 			aPageMap[1].aDispName = ScGlobal::GetRscString( STR_STYLENAME_REPORT );
456*b1cdbd2cSJim Jagielski 			aPageMap[1].aProgName = String::CreateFromAscii( SC_STYLE_PROG_REPORT );
457*b1cdbd2cSJim Jagielski 
458*b1cdbd2cSJim Jagielski 			//	last entry remains empty
459*b1cdbd2cSJim Jagielski 
460*b1cdbd2cSJim Jagielski 			bPageMapFilled = sal_True;
461*b1cdbd2cSJim Jagielski 		}
462*b1cdbd2cSJim Jagielski 		return aPageMap;
463*b1cdbd2cSJim Jagielski 	}
464*b1cdbd2cSJim Jagielski 	DBG_ERROR("invalid family");
465*b1cdbd2cSJim Jagielski 	return NULL;
466*b1cdbd2cSJim Jagielski }
467*b1cdbd2cSJim Jagielski 
468*b1cdbd2cSJim Jagielski //	programmatic name suffix for display names that match other programmatic names
469*b1cdbd2cSJim Jagielski //	is " (user)" including a space
470*b1cdbd2cSJim Jagielski 
471*b1cdbd2cSJim Jagielski #define SC_SUFFIX_USER		" (user)"
472*b1cdbd2cSJim Jagielski #define SC_SUFFIX_USER_LEN	7
473*b1cdbd2cSJim Jagielski 
lcl_EndsWithUser(const String & rString)474*b1cdbd2cSJim Jagielski sal_Bool lcl_EndsWithUser( const String& rString )
475*b1cdbd2cSJim Jagielski {
476*b1cdbd2cSJim Jagielski 	const sal_Unicode *pChar = rString.GetBuffer();
477*b1cdbd2cSJim Jagielski 	xub_StrLen nLen = rString.Len();
478*b1cdbd2cSJim Jagielski 	return nLen >= SC_SUFFIX_USER_LEN &&
479*b1cdbd2cSJim Jagielski 		   pChar[nLen-7] == ' ' &&
480*b1cdbd2cSJim Jagielski 		   pChar[nLen-6] == '(' &&
481*b1cdbd2cSJim Jagielski 		   pChar[nLen-5] == 'u' &&
482*b1cdbd2cSJim Jagielski 		   pChar[nLen-4] == 's' &&
483*b1cdbd2cSJim Jagielski 		   pChar[nLen-3] == 'e' &&
484*b1cdbd2cSJim Jagielski 		   pChar[nLen-2] == 'r' &&
485*b1cdbd2cSJim Jagielski 		   pChar[nLen-1] == ')';
486*b1cdbd2cSJim Jagielski }
487*b1cdbd2cSJim Jagielski 
488*b1cdbd2cSJim Jagielski // static
DisplayToProgrammaticName(const String & rDispName,sal_uInt16 nType)489*b1cdbd2cSJim Jagielski String ScStyleNameConversion::DisplayToProgrammaticName( const String& rDispName, sal_uInt16 nType )
490*b1cdbd2cSJim Jagielski {
491*b1cdbd2cSJim Jagielski 	sal_Bool bDisplayIsProgrammatic = sal_False;
492*b1cdbd2cSJim Jagielski 
493*b1cdbd2cSJim Jagielski 	const ScDisplayNameMap* pNames = lcl_GetStyleNameMap( nType );
494*b1cdbd2cSJim Jagielski 	if (pNames)
495*b1cdbd2cSJim Jagielski 	{
496*b1cdbd2cSJim Jagielski 		do
497*b1cdbd2cSJim Jagielski 		{
498*b1cdbd2cSJim Jagielski 			if (pNames->aDispName == rDispName)
499*b1cdbd2cSJim Jagielski 				return pNames->aProgName;
500*b1cdbd2cSJim Jagielski 			else if (pNames->aProgName == rDispName)
501*b1cdbd2cSJim Jagielski 				bDisplayIsProgrammatic = sal_True;			// display name matches any programmatic name
502*b1cdbd2cSJim Jagielski 		}
503*b1cdbd2cSJim Jagielski 		while( (++pNames)->aDispName.Len() );
504*b1cdbd2cSJim Jagielski 	}
505*b1cdbd2cSJim Jagielski 
506*b1cdbd2cSJim Jagielski 	if ( bDisplayIsProgrammatic || lcl_EndsWithUser( rDispName ) )
507*b1cdbd2cSJim Jagielski 	{
508*b1cdbd2cSJim Jagielski 		//	add the (user) suffix if the display name matches any style's programmatic name
509*b1cdbd2cSJim Jagielski 		//	or if it already contains the suffix
510*b1cdbd2cSJim Jagielski 
511*b1cdbd2cSJim Jagielski 		String aRet(rDispName);
512*b1cdbd2cSJim Jagielski 		aRet.AppendAscii( RTL_CONSTASCII_STRINGPARAM( SC_SUFFIX_USER ) );
513*b1cdbd2cSJim Jagielski 		return aRet;
514*b1cdbd2cSJim Jagielski 	}
515*b1cdbd2cSJim Jagielski 
516*b1cdbd2cSJim Jagielski 	return rDispName;
517*b1cdbd2cSJim Jagielski }
518*b1cdbd2cSJim Jagielski 
519*b1cdbd2cSJim Jagielski // static
ProgrammaticToDisplayName(const String & rProgName,sal_uInt16 nType)520*b1cdbd2cSJim Jagielski String ScStyleNameConversion::ProgrammaticToDisplayName( const String& rProgName, sal_uInt16 nType )
521*b1cdbd2cSJim Jagielski {
522*b1cdbd2cSJim Jagielski 	if ( lcl_EndsWithUser( rProgName ) )
523*b1cdbd2cSJim Jagielski 	{
524*b1cdbd2cSJim Jagielski 		//	remove the (user) suffix, don't compare to map entries
525*b1cdbd2cSJim Jagielski 		return rProgName.Copy( 0, rProgName.Len() - SC_SUFFIX_USER_LEN );
526*b1cdbd2cSJim Jagielski 	}
527*b1cdbd2cSJim Jagielski 
528*b1cdbd2cSJim Jagielski 	const ScDisplayNameMap* pNames = lcl_GetStyleNameMap( nType );
529*b1cdbd2cSJim Jagielski 	if (pNames)
530*b1cdbd2cSJim Jagielski 	{
531*b1cdbd2cSJim Jagielski 		do
532*b1cdbd2cSJim Jagielski 		{
533*b1cdbd2cSJim Jagielski 			if (pNames->aProgName == rProgName)
534*b1cdbd2cSJim Jagielski 				return pNames->aDispName;
535*b1cdbd2cSJim Jagielski 		}
536*b1cdbd2cSJim Jagielski 		while( (++pNames)->aDispName.Len() );
537*b1cdbd2cSJim Jagielski 	}
538*b1cdbd2cSJim Jagielski 	return rProgName;
539*b1cdbd2cSJim Jagielski }
540*b1cdbd2cSJim Jagielski 
541*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
542*b1cdbd2cSJim Jagielski 
lcl_AnyTabProtected(ScDocument & rDoc)543*b1cdbd2cSJim Jagielski sal_Bool lcl_AnyTabProtected( ScDocument& rDoc )
544*b1cdbd2cSJim Jagielski {
545*b1cdbd2cSJim Jagielski 	SCTAB nTabCount = rDoc.GetTableCount();
546*b1cdbd2cSJim Jagielski 	for (SCTAB i=0; i<nTabCount; i++)
547*b1cdbd2cSJim Jagielski 		if (rDoc.IsTabProtected(i))
548*b1cdbd2cSJim Jagielski 			return sal_True;
549*b1cdbd2cSJim Jagielski 	return sal_False;
550*b1cdbd2cSJim Jagielski }
551*b1cdbd2cSJim Jagielski 
552*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
553*b1cdbd2cSJim Jagielski 
ScStyleFamiliesObj(ScDocShell * pDocSh)554*b1cdbd2cSJim Jagielski ScStyleFamiliesObj::ScStyleFamiliesObj(ScDocShell* pDocSh) :
555*b1cdbd2cSJim Jagielski 	pDocShell( pDocSh )
556*b1cdbd2cSJim Jagielski {
557*b1cdbd2cSJim Jagielski 	pDocShell->GetDocument()->AddUnoObject(*this);
558*b1cdbd2cSJim Jagielski }
559*b1cdbd2cSJim Jagielski 
~ScStyleFamiliesObj()560*b1cdbd2cSJim Jagielski ScStyleFamiliesObj::~ScStyleFamiliesObj()
561*b1cdbd2cSJim Jagielski {
562*b1cdbd2cSJim Jagielski 	if (pDocShell)
563*b1cdbd2cSJim Jagielski 		pDocShell->GetDocument()->RemoveUnoObject(*this);
564*b1cdbd2cSJim Jagielski }
565*b1cdbd2cSJim Jagielski 
Notify(SfxBroadcaster &,const SfxHint & rHint)566*b1cdbd2cSJim Jagielski void ScStyleFamiliesObj::Notify( SfxBroadcaster&, const SfxHint& rHint )
567*b1cdbd2cSJim Jagielski {
568*b1cdbd2cSJim Jagielski 	//	Referenz-Update interessiert hier nicht
569*b1cdbd2cSJim Jagielski 
570*b1cdbd2cSJim Jagielski 	if ( rHint.ISA( SfxSimpleHint ) &&
571*b1cdbd2cSJim Jagielski 			((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
572*b1cdbd2cSJim Jagielski 	{
573*b1cdbd2cSJim Jagielski 		pDocShell = NULL;		// ungueltig geworden
574*b1cdbd2cSJim Jagielski 	}
575*b1cdbd2cSJim Jagielski }
576*b1cdbd2cSJim Jagielski 
577*b1cdbd2cSJim Jagielski // XStyleFamilies
578*b1cdbd2cSJim Jagielski 
GetObjectByType_Impl(sal_uInt16 nType) const579*b1cdbd2cSJim Jagielski ScStyleFamilyObj*ScStyleFamiliesObj::GetObjectByType_Impl(sal_uInt16 nType) const
580*b1cdbd2cSJim Jagielski {
581*b1cdbd2cSJim Jagielski 	if ( pDocShell )
582*b1cdbd2cSJim Jagielski 	{
583*b1cdbd2cSJim Jagielski 		if ( nType == SFX_STYLE_FAMILY_PARA )
584*b1cdbd2cSJim Jagielski 			return new ScStyleFamilyObj( pDocShell, SFX_STYLE_FAMILY_PARA );
585*b1cdbd2cSJim Jagielski 		else if ( nType == SFX_STYLE_FAMILY_PAGE )
586*b1cdbd2cSJim Jagielski 			return new ScStyleFamilyObj( pDocShell, SFX_STYLE_FAMILY_PAGE );
587*b1cdbd2cSJim Jagielski 	}
588*b1cdbd2cSJim Jagielski 	DBG_ERROR("getStyleFamilyByType: keine DocShell oder falscher Typ");
589*b1cdbd2cSJim Jagielski 	return NULL;
590*b1cdbd2cSJim Jagielski }
591*b1cdbd2cSJim Jagielski 
GetObjectByIndex_Impl(sal_uInt32 nIndex) const592*b1cdbd2cSJim Jagielski ScStyleFamilyObj* ScStyleFamiliesObj::GetObjectByIndex_Impl(sal_uInt32 nIndex) const
593*b1cdbd2cSJim Jagielski {
594*b1cdbd2cSJim Jagielski 	if ( nIndex < SC_STYLE_FAMILY_COUNT )
595*b1cdbd2cSJim Jagielski 		return GetObjectByType_Impl(aStyleFamilyTypes[nIndex]);
596*b1cdbd2cSJim Jagielski 
597*b1cdbd2cSJim Jagielski 	return NULL;	// ungueltiger Index
598*b1cdbd2cSJim Jagielski }
599*b1cdbd2cSJim Jagielski 
GetObjectByName_Impl(const rtl::OUString & aName) const600*b1cdbd2cSJim Jagielski ScStyleFamilyObj* ScStyleFamiliesObj::GetObjectByName_Impl(const rtl::OUString& aName) const
601*b1cdbd2cSJim Jagielski {
602*b1cdbd2cSJim Jagielski 	if ( pDocShell )
603*b1cdbd2cSJim Jagielski 	{
604*b1cdbd2cSJim Jagielski 		String aNameStr( aName );
605*b1cdbd2cSJim Jagielski 		if ( aNameStr.EqualsAscii( SC_FAMILYNAME_CELL ) )
606*b1cdbd2cSJim Jagielski 			return new ScStyleFamilyObj( pDocShell, SFX_STYLE_FAMILY_PARA );
607*b1cdbd2cSJim Jagielski 		else if ( aNameStr.EqualsAscii( SC_FAMILYNAME_PAGE ) )
608*b1cdbd2cSJim Jagielski 			return new ScStyleFamilyObj( pDocShell, SFX_STYLE_FAMILY_PAGE );
609*b1cdbd2cSJim Jagielski 	}
610*b1cdbd2cSJim Jagielski 	// no assertion - called directly from getByName
611*b1cdbd2cSJim Jagielski 	return NULL;
612*b1cdbd2cSJim Jagielski }
613*b1cdbd2cSJim Jagielski 
614*b1cdbd2cSJim Jagielski // container::XIndexAccess
615*b1cdbd2cSJim Jagielski 
getCount()616*b1cdbd2cSJim Jagielski sal_Int32 SAL_CALL ScStyleFamiliesObj::getCount() throw(uno::RuntimeException)
617*b1cdbd2cSJim Jagielski {
618*b1cdbd2cSJim Jagielski 	return SC_STYLE_FAMILY_COUNT;
619*b1cdbd2cSJim Jagielski }
620*b1cdbd2cSJim Jagielski 
getByIndex(sal_Int32 nIndex)621*b1cdbd2cSJim Jagielski uno::Any SAL_CALL ScStyleFamiliesObj::getByIndex( sal_Int32 nIndex )
622*b1cdbd2cSJim Jagielski 							throw(lang::IndexOutOfBoundsException,
623*b1cdbd2cSJim Jagielski 									lang::WrappedTargetException, uno::RuntimeException)
624*b1cdbd2cSJim Jagielski {
625*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
626*b1cdbd2cSJim Jagielski 	uno::Reference< container::XNameContainer >  xFamily(GetObjectByIndex_Impl(nIndex));
627*b1cdbd2cSJim Jagielski 	if (xFamily.is())
628*b1cdbd2cSJim Jagielski         return uno::makeAny(xFamily);
629*b1cdbd2cSJim Jagielski 	else
630*b1cdbd2cSJim Jagielski 		throw lang::IndexOutOfBoundsException();
631*b1cdbd2cSJim Jagielski //    return uno::Any();
632*b1cdbd2cSJim Jagielski }
633*b1cdbd2cSJim Jagielski 
getElementType()634*b1cdbd2cSJim Jagielski uno::Type SAL_CALL ScStyleFamiliesObj::getElementType() throw(uno::RuntimeException)
635*b1cdbd2cSJim Jagielski {
636*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
637*b1cdbd2cSJim Jagielski 	return ::getCppuType((const uno::Reference< container::XNameContainer >*)0);	// muss zu getByIndex passen
638*b1cdbd2cSJim Jagielski }
639*b1cdbd2cSJim Jagielski 
hasElements()640*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL ScStyleFamiliesObj::hasElements() throw(uno::RuntimeException)
641*b1cdbd2cSJim Jagielski {
642*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
643*b1cdbd2cSJim Jagielski 	return ( getCount() != 0 );
644*b1cdbd2cSJim Jagielski }
645*b1cdbd2cSJim Jagielski 
646*b1cdbd2cSJim Jagielski // container::XNameAccess
647*b1cdbd2cSJim Jagielski 
getByName(const rtl::OUString & aName)648*b1cdbd2cSJim Jagielski uno::Any SAL_CALL ScStyleFamiliesObj::getByName( const rtl::OUString& aName )
649*b1cdbd2cSJim Jagielski 					throw(container::NoSuchElementException,
650*b1cdbd2cSJim Jagielski 						lang::WrappedTargetException, uno::RuntimeException)
651*b1cdbd2cSJim Jagielski {
652*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
653*b1cdbd2cSJim Jagielski 	uno::Reference< container::XNameContainer >  xFamily(GetObjectByName_Impl(aName));
654*b1cdbd2cSJim Jagielski 	if (xFamily.is())
655*b1cdbd2cSJim Jagielski         return uno::makeAny(xFamily);
656*b1cdbd2cSJim Jagielski 	else
657*b1cdbd2cSJim Jagielski 		throw container::NoSuchElementException();
658*b1cdbd2cSJim Jagielski //    return uno::Any();
659*b1cdbd2cSJim Jagielski }
660*b1cdbd2cSJim Jagielski 
getElementNames()661*b1cdbd2cSJim Jagielski uno::Sequence<rtl::OUString> SAL_CALL ScStyleFamiliesObj::getElementNames()
662*b1cdbd2cSJim Jagielski 												throw(uno::RuntimeException)
663*b1cdbd2cSJim Jagielski {
664*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
665*b1cdbd2cSJim Jagielski 	uno::Sequence<rtl::OUString> aNames(SC_STYLE_FAMILY_COUNT);
666*b1cdbd2cSJim Jagielski 	rtl::OUString* pNames = aNames.getArray();
667*b1cdbd2cSJim Jagielski 	pNames[0] = rtl::OUString::createFromAscii( SC_FAMILYNAME_CELL );
668*b1cdbd2cSJim Jagielski 	pNames[1] = rtl::OUString::createFromAscii( SC_FAMILYNAME_PAGE );
669*b1cdbd2cSJim Jagielski 	return aNames;
670*b1cdbd2cSJim Jagielski }
671*b1cdbd2cSJim Jagielski 
hasByName(const rtl::OUString & aName)672*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL ScStyleFamiliesObj::hasByName( const rtl::OUString& aName )
673*b1cdbd2cSJim Jagielski 										throw(uno::RuntimeException)
674*b1cdbd2cSJim Jagielski {
675*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
676*b1cdbd2cSJim Jagielski 	String aNameStr( aName );
677*b1cdbd2cSJim Jagielski 	return ( aNameStr.EqualsAscii( SC_FAMILYNAME_CELL ) || aNameStr.EqualsAscii( SC_FAMILYNAME_PAGE ) );
678*b1cdbd2cSJim Jagielski }
679*b1cdbd2cSJim Jagielski 
680*b1cdbd2cSJim Jagielski // style::XStyleLoader
681*b1cdbd2cSJim Jagielski 
loadStylesFromURL(const rtl::OUString & aURL,const uno::Sequence<beans::PropertyValue> & aOptions)682*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleFamiliesObj::loadStylesFromURL( const rtl::OUString& aURL,
683*b1cdbd2cSJim Jagielski 						const uno::Sequence<beans::PropertyValue>& aOptions )
684*b1cdbd2cSJim Jagielski 								throw(io::IOException, uno::RuntimeException)
685*b1cdbd2cSJim Jagielski {
686*b1cdbd2cSJim Jagielski 	//!	use aOptions (like Writer)
687*b1cdbd2cSJim Jagielski 	//!	set flag to disable filter option dialogs when importing
688*b1cdbd2cSJim Jagielski 
689*b1cdbd2cSJim Jagielski 	String aFilter;		// empty - detect
690*b1cdbd2cSJim Jagielski 	String aFiltOpt;
691*b1cdbd2cSJim Jagielski 	ScDocumentLoader aLoader( aURL, aFilter, aFiltOpt );
692*b1cdbd2cSJim Jagielski 
693*b1cdbd2cSJim Jagielski 	ScDocShell* pSource = aLoader.GetDocShell();
694*b1cdbd2cSJim Jagielski 	if ( pSource && pDocShell )
695*b1cdbd2cSJim Jagielski 	{
696*b1cdbd2cSJim Jagielski 		//	collect options
697*b1cdbd2cSJim Jagielski 
698*b1cdbd2cSJim Jagielski 		sal_Bool bLoadReplace = sal_True;			// defaults
699*b1cdbd2cSJim Jagielski 		sal_Bool bLoadCellStyles = sal_True;
700*b1cdbd2cSJim Jagielski 		sal_Bool bLoadPageStyles = sal_True;
701*b1cdbd2cSJim Jagielski 
702*b1cdbd2cSJim Jagielski 		const beans::PropertyValue* pPropArray = aOptions.getConstArray();
703*b1cdbd2cSJim Jagielski 		long nPropCount = aOptions.getLength();
704*b1cdbd2cSJim Jagielski 		for (long i = 0; i < nPropCount; i++)
705*b1cdbd2cSJim Jagielski 		{
706*b1cdbd2cSJim Jagielski 			const beans::PropertyValue& rProp = pPropArray[i];
707*b1cdbd2cSJim Jagielski 			String aPropName(rProp.Name);
708*b1cdbd2cSJim Jagielski 
709*b1cdbd2cSJim Jagielski 			if (aPropName.EqualsAscii( SC_UNONAME_OVERWSTL ))
710*b1cdbd2cSJim Jagielski 				bLoadReplace = ScUnoHelpFunctions::GetBoolFromAny( rProp.Value );
711*b1cdbd2cSJim Jagielski 			else if (aPropName.EqualsAscii( SC_UNONAME_LOADCELL ))
712*b1cdbd2cSJim Jagielski 				bLoadCellStyles = ScUnoHelpFunctions::GetBoolFromAny( rProp.Value );
713*b1cdbd2cSJim Jagielski 			else if (aPropName.EqualsAscii( SC_UNONAME_LOADPAGE ))
714*b1cdbd2cSJim Jagielski 				bLoadPageStyles = ScUnoHelpFunctions::GetBoolFromAny( rProp.Value );
715*b1cdbd2cSJim Jagielski 		}
716*b1cdbd2cSJim Jagielski 
717*b1cdbd2cSJim Jagielski 		pDocShell->LoadStylesArgs( *pSource, bLoadReplace, bLoadCellStyles, bLoadPageStyles );
718*b1cdbd2cSJim Jagielski 		pDocShell->SetDocumentModified();	// paint is inside LoadStyles
719*b1cdbd2cSJim Jagielski 	}
720*b1cdbd2cSJim Jagielski }
721*b1cdbd2cSJim Jagielski 
getStyleLoaderOptions()722*b1cdbd2cSJim Jagielski uno::Sequence<beans::PropertyValue> SAL_CALL ScStyleFamiliesObj::getStyleLoaderOptions()
723*b1cdbd2cSJim Jagielski 												throw(uno::RuntimeException)
724*b1cdbd2cSJim Jagielski {
725*b1cdbd2cSJim Jagielski 	//	return defaults for options (?)
726*b1cdbd2cSJim Jagielski 
727*b1cdbd2cSJim Jagielski 	uno::Sequence<beans::PropertyValue> aSequence(3);
728*b1cdbd2cSJim Jagielski 	beans::PropertyValue* pArray = aSequence.getArray();
729*b1cdbd2cSJim Jagielski 
730*b1cdbd2cSJim Jagielski 	pArray[0].Name = rtl::OUString::createFromAscii( SC_UNONAME_OVERWSTL );
731*b1cdbd2cSJim Jagielski 	ScUnoHelpFunctions::SetBoolInAny( pArray[0].Value, sal_True );
732*b1cdbd2cSJim Jagielski 
733*b1cdbd2cSJim Jagielski 	pArray[1].Name = rtl::OUString::createFromAscii( SC_UNONAME_LOADCELL );
734*b1cdbd2cSJim Jagielski 	ScUnoHelpFunctions::SetBoolInAny( pArray[1].Value, sal_True );
735*b1cdbd2cSJim Jagielski 
736*b1cdbd2cSJim Jagielski 	pArray[2].Name = rtl::OUString::createFromAscii( SC_UNONAME_LOADPAGE );
737*b1cdbd2cSJim Jagielski 	ScUnoHelpFunctions::SetBoolInAny( pArray[2].Value, sal_True );
738*b1cdbd2cSJim Jagielski 
739*b1cdbd2cSJim Jagielski 	return aSequence;
740*b1cdbd2cSJim Jagielski }
741*b1cdbd2cSJim Jagielski 
742*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
743*b1cdbd2cSJim Jagielski 
ScStyleFamilyObj(ScDocShell * pDocSh,SfxStyleFamily eFam)744*b1cdbd2cSJim Jagielski ScStyleFamilyObj::ScStyleFamilyObj(ScDocShell* pDocSh, SfxStyleFamily eFam) :
745*b1cdbd2cSJim Jagielski 	pDocShell( pDocSh ),
746*b1cdbd2cSJim Jagielski 	eFamily( eFam )
747*b1cdbd2cSJim Jagielski {
748*b1cdbd2cSJim Jagielski 	pDocShell->GetDocument()->AddUnoObject(*this);
749*b1cdbd2cSJim Jagielski }
750*b1cdbd2cSJim Jagielski 
~ScStyleFamilyObj()751*b1cdbd2cSJim Jagielski ScStyleFamilyObj::~ScStyleFamilyObj()
752*b1cdbd2cSJim Jagielski {
753*b1cdbd2cSJim Jagielski 	if (pDocShell)
754*b1cdbd2cSJim Jagielski 		pDocShell->GetDocument()->RemoveUnoObject(*this);
755*b1cdbd2cSJim Jagielski }
756*b1cdbd2cSJim Jagielski 
Notify(SfxBroadcaster &,const SfxHint & rHint)757*b1cdbd2cSJim Jagielski void ScStyleFamilyObj::Notify( SfxBroadcaster&, const SfxHint& rHint )
758*b1cdbd2cSJim Jagielski {
759*b1cdbd2cSJim Jagielski 	//	Referenz-Update interessiert hier nicht
760*b1cdbd2cSJim Jagielski 
761*b1cdbd2cSJim Jagielski 	if ( rHint.ISA( SfxSimpleHint ) &&
762*b1cdbd2cSJim Jagielski 			((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
763*b1cdbd2cSJim Jagielski 	{
764*b1cdbd2cSJim Jagielski 		pDocShell = NULL;		// ungueltig geworden
765*b1cdbd2cSJim Jagielski 	}
766*b1cdbd2cSJim Jagielski }
767*b1cdbd2cSJim Jagielski 
768*b1cdbd2cSJim Jagielski // XStyleFamily
769*b1cdbd2cSJim Jagielski 
GetObjectByIndex_Impl(sal_uInt32 nIndex)770*b1cdbd2cSJim Jagielski ScStyleObj* ScStyleFamilyObj::GetObjectByIndex_Impl(sal_uInt32 nIndex)
771*b1cdbd2cSJim Jagielski {
772*b1cdbd2cSJim Jagielski 	if ( pDocShell )
773*b1cdbd2cSJim Jagielski 	{
774*b1cdbd2cSJim Jagielski 		ScDocument* pDoc = pDocShell->GetDocument();
775*b1cdbd2cSJim Jagielski 		ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
776*b1cdbd2cSJim Jagielski 
777*b1cdbd2cSJim Jagielski 		SfxStyleSheetIterator aIter( pStylePool, eFamily );
778*b1cdbd2cSJim Jagielski 		if ( nIndex < aIter.Count() )
779*b1cdbd2cSJim Jagielski 		{
780*b1cdbd2cSJim Jagielski 			SfxStyleSheetBase* pStyle = aIter[(sal_uInt16)nIndex];
781*b1cdbd2cSJim Jagielski 			if ( pStyle )
782*b1cdbd2cSJim Jagielski 			{
783*b1cdbd2cSJim Jagielski 				return new ScStyleObj( pDocShell, eFamily, String (pStyle->GetName()) );
784*b1cdbd2cSJim Jagielski 			}
785*b1cdbd2cSJim Jagielski 		}
786*b1cdbd2cSJim Jagielski 	}
787*b1cdbd2cSJim Jagielski 	return NULL;
788*b1cdbd2cSJim Jagielski }
789*b1cdbd2cSJim Jagielski 
GetObjectByName_Impl(const rtl::OUString & aName)790*b1cdbd2cSJim Jagielski ScStyleObj* ScStyleFamilyObj::GetObjectByName_Impl(const rtl::OUString& aName)
791*b1cdbd2cSJim Jagielski {
792*b1cdbd2cSJim Jagielski 	if ( pDocShell )
793*b1cdbd2cSJim Jagielski 	{
794*b1cdbd2cSJim Jagielski 		String aString(aName);
795*b1cdbd2cSJim Jagielski 
796*b1cdbd2cSJim Jagielski 		ScDocument* pDoc = pDocShell->GetDocument();
797*b1cdbd2cSJim Jagielski 		ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
798*b1cdbd2cSJim Jagielski 		if ( pStylePool->Find( aString, eFamily ) )
799*b1cdbd2cSJim Jagielski 			return new ScStyleObj( pDocShell, eFamily, aString );
800*b1cdbd2cSJim Jagielski 	}
801*b1cdbd2cSJim Jagielski 	return NULL;
802*b1cdbd2cSJim Jagielski }
803*b1cdbd2cSJim Jagielski 
insertByName(const rtl::OUString & aName,const uno::Any & aElement)804*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleFamilyObj::insertByName( const rtl::OUString& aName, const uno::Any& aElement )
805*b1cdbd2cSJim Jagielski 							throw(lang::IllegalArgumentException, container::ElementExistException,
806*b1cdbd2cSJim Jagielski 									lang::WrappedTargetException, uno::RuntimeException)
807*b1cdbd2cSJim Jagielski {
808*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
809*b1cdbd2cSJim Jagielski 	sal_Bool bDone = sal_False;
810*b1cdbd2cSJim Jagielski 	//	Reflection muss nicht uno::XInterface sein, kann auch irgendein Interface sein...
811*b1cdbd2cSJim Jagielski     uno::Reference< uno::XInterface > xInterface(aElement, uno::UNO_QUERY);
812*b1cdbd2cSJim Jagielski 	if ( xInterface.is() )
813*b1cdbd2cSJim Jagielski 	{
814*b1cdbd2cSJim Jagielski 		ScStyleObj* pStyleObj = ScStyleObj::getImplementation( xInterface );
815*b1cdbd2cSJim Jagielski 		if ( pStyleObj && pStyleObj->GetFamily() == eFamily &&
816*b1cdbd2cSJim Jagielski 				!pStyleObj->IsInserted() )	// noch nicht eingefuegt?
817*b1cdbd2cSJim Jagielski 		{
818*b1cdbd2cSJim Jagielski             String aNameStr(ScStyleNameConversion::ProgrammaticToDisplayName( aName, sal::static_int_cast<sal_uInt16>(eFamily) ));
819*b1cdbd2cSJim Jagielski 
820*b1cdbd2cSJim Jagielski 			ScDocument* pDoc = pDocShell->GetDocument();
821*b1cdbd2cSJim Jagielski 			ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
822*b1cdbd2cSJim Jagielski 
823*b1cdbd2cSJim Jagielski 			//!	DocFunc-Funktion??
824*b1cdbd2cSJim Jagielski 			//!	Undo ?????????????
825*b1cdbd2cSJim Jagielski 
826*b1cdbd2cSJim Jagielski 			if ( !pStylePool->Find( aNameStr, eFamily ) )	// noch nicht vorhanden
827*b1cdbd2cSJim Jagielski 			{
828*b1cdbd2cSJim Jagielski                 (void)pStylePool->Make( aNameStr, eFamily, SFXSTYLEBIT_USERDEF );
829*b1cdbd2cSJim Jagielski 
830*b1cdbd2cSJim Jagielski                 if ( eFamily == SFX_STYLE_FAMILY_PARA && !pDoc->IsImportingXML() )
831*b1cdbd2cSJim Jagielski                     pDoc->GetPool()->CellStyleCreated( aNameStr );
832*b1cdbd2cSJim Jagielski 
833*b1cdbd2cSJim Jagielski 				pStyleObj->InitDoc( pDocShell, aNameStr );	// Objekt kann benutzt werden
834*b1cdbd2cSJim Jagielski 
835*b1cdbd2cSJim Jagielski 				pDocShell->SetDocumentModified();	// verwendet wird der neue Style noch nicht
836*b1cdbd2cSJim Jagielski 				bDone = sal_True;
837*b1cdbd2cSJim Jagielski 			}
838*b1cdbd2cSJim Jagielski 			else
839*b1cdbd2cSJim Jagielski 				throw container::ElementExistException();
840*b1cdbd2cSJim Jagielski 		}
841*b1cdbd2cSJim Jagielski 	}
842*b1cdbd2cSJim Jagielski 
843*b1cdbd2cSJim Jagielski 	if (!bDone)
844*b1cdbd2cSJim Jagielski 	{
845*b1cdbd2cSJim Jagielski 		//	other errors are handled above
846*b1cdbd2cSJim Jagielski 		throw lang::IllegalArgumentException();
847*b1cdbd2cSJim Jagielski 	}
848*b1cdbd2cSJim Jagielski }
849*b1cdbd2cSJim Jagielski 
replaceByName(const rtl::OUString & aName,const uno::Any & aElement)850*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleFamilyObj::replaceByName( const rtl::OUString& aName, const uno::Any& aElement )
851*b1cdbd2cSJim Jagielski 							throw(lang::IllegalArgumentException, container::NoSuchElementException,
852*b1cdbd2cSJim Jagielski 									lang::WrappedTargetException, uno::RuntimeException)
853*b1cdbd2cSJim Jagielski {
854*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
855*b1cdbd2cSJim Jagielski 	//!	zusammenfassen?
856*b1cdbd2cSJim Jagielski 	removeByName( aName );
857*b1cdbd2cSJim Jagielski 	insertByName( aName, aElement );
858*b1cdbd2cSJim Jagielski }
859*b1cdbd2cSJim Jagielski 
removeByName(const rtl::OUString & aName)860*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleFamilyObj::removeByName( const rtl::OUString& aName )
861*b1cdbd2cSJim Jagielski 								throw(container::NoSuchElementException,
862*b1cdbd2cSJim Jagielski 									lang::WrappedTargetException, uno::RuntimeException)
863*b1cdbd2cSJim Jagielski {
864*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
865*b1cdbd2cSJim Jagielski 	sal_Bool bFound = sal_False;
866*b1cdbd2cSJim Jagielski 	if ( pDocShell )
867*b1cdbd2cSJim Jagielski 	{
868*b1cdbd2cSJim Jagielski         String aString(ScStyleNameConversion::ProgrammaticToDisplayName( aName, sal::static_int_cast<sal_uInt16>(eFamily) ));
869*b1cdbd2cSJim Jagielski 
870*b1cdbd2cSJim Jagielski 		ScDocument* pDoc = pDocShell->GetDocument();
871*b1cdbd2cSJim Jagielski 		ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
872*b1cdbd2cSJim Jagielski 
873*b1cdbd2cSJim Jagielski 		//!	DocFunc-Funktion??
874*b1cdbd2cSJim Jagielski 		//!	Undo ?????????????
875*b1cdbd2cSJim Jagielski 
876*b1cdbd2cSJim Jagielski 		SfxStyleSheetBase* pStyle = pStylePool->Find( aString, eFamily );
877*b1cdbd2cSJim Jagielski 		if (pStyle)
878*b1cdbd2cSJim Jagielski 		{
879*b1cdbd2cSJim Jagielski 			bFound = sal_True;
880*b1cdbd2cSJim Jagielski 			if ( eFamily == SFX_STYLE_FAMILY_PARA )
881*b1cdbd2cSJim Jagielski 			{
882*b1cdbd2cSJim Jagielski 				// wie ScViewFunc::RemoveStyleSheetInUse
883*b1cdbd2cSJim Jagielski 				VirtualDevice aVDev;
884*b1cdbd2cSJim Jagielski 				Point aLogic = aVDev.LogicToPixel( Point(1000,1000), MAP_TWIP );
885*b1cdbd2cSJim Jagielski 				double nPPTX = aLogic.X() / 1000.0;
886*b1cdbd2cSJim Jagielski 				double nPPTY = aLogic.Y() / 1000.0;
887*b1cdbd2cSJim Jagielski 				Fraction aZoom(1,1);
888*b1cdbd2cSJim Jagielski 				pDoc->StyleSheetChanged( pStyle, sal_False, &aVDev, nPPTX, nPPTY, aZoom, aZoom );
889*b1cdbd2cSJim Jagielski 				pDocShell->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID|PAINT_LEFT );
890*b1cdbd2cSJim Jagielski 				pDocShell->SetDocumentModified();
891*b1cdbd2cSJim Jagielski 
892*b1cdbd2cSJim Jagielski 				pStylePool->Remove( pStyle );
893*b1cdbd2cSJim Jagielski 
894*b1cdbd2cSJim Jagielski 				//!	InvalidateAttribs();		// Bindings-Invalidate
895*b1cdbd2cSJim Jagielski 			}
896*b1cdbd2cSJim Jagielski 			else
897*b1cdbd2cSJim Jagielski 			{
898*b1cdbd2cSJim Jagielski 				if ( pDoc->RemovePageStyleInUse( aString ) )
899*b1cdbd2cSJim Jagielski 					pDocShell->PageStyleModified( ScGlobal::GetRscString(STR_STYLENAME_STANDARD), sal_True );
900*b1cdbd2cSJim Jagielski 
901*b1cdbd2cSJim Jagielski 				pStylePool->Remove( pStyle );
902*b1cdbd2cSJim Jagielski 
903*b1cdbd2cSJim Jagielski 				SfxBindings* pBindings = pDocShell->GetViewBindings();
904*b1cdbd2cSJim Jagielski 				if (pBindings)
905*b1cdbd2cSJim Jagielski 					pBindings->Invalidate( SID_STYLE_FAMILY4 );
906*b1cdbd2cSJim Jagielski 				pDocShell->SetDocumentModified();
907*b1cdbd2cSJim Jagielski 			}
908*b1cdbd2cSJim Jagielski 		}
909*b1cdbd2cSJim Jagielski 	}
910*b1cdbd2cSJim Jagielski 
911*b1cdbd2cSJim Jagielski 	if (!bFound)
912*b1cdbd2cSJim Jagielski 		throw container::NoSuchElementException();
913*b1cdbd2cSJim Jagielski }
914*b1cdbd2cSJim Jagielski 
915*b1cdbd2cSJim Jagielski // container::XIndexAccess
916*b1cdbd2cSJim Jagielski 
getCount()917*b1cdbd2cSJim Jagielski sal_Int32 SAL_CALL ScStyleFamilyObj::getCount() throw(uno::RuntimeException)
918*b1cdbd2cSJim Jagielski {
919*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
920*b1cdbd2cSJim Jagielski 	if ( pDocShell )
921*b1cdbd2cSJim Jagielski 	{
922*b1cdbd2cSJim Jagielski 		ScDocument* pDoc = pDocShell->GetDocument();
923*b1cdbd2cSJim Jagielski 		ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
924*b1cdbd2cSJim Jagielski 
925*b1cdbd2cSJim Jagielski 		SfxStyleSheetIterator aIter( pStylePool, eFamily );
926*b1cdbd2cSJim Jagielski 		return aIter.Count();
927*b1cdbd2cSJim Jagielski 	}
928*b1cdbd2cSJim Jagielski 	return 0;
929*b1cdbd2cSJim Jagielski }
930*b1cdbd2cSJim Jagielski 
getByIndex(sal_Int32 nIndex)931*b1cdbd2cSJim Jagielski uno::Any SAL_CALL ScStyleFamilyObj::getByIndex( sal_Int32 nIndex )
932*b1cdbd2cSJim Jagielski 							throw(lang::IndexOutOfBoundsException,
933*b1cdbd2cSJim Jagielski 									lang::WrappedTargetException, uno::RuntimeException)
934*b1cdbd2cSJim Jagielski {
935*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
936*b1cdbd2cSJim Jagielski 	uno::Reference< style::XStyle >  xObj(GetObjectByIndex_Impl(nIndex));
937*b1cdbd2cSJim Jagielski 	if (xObj.is())
938*b1cdbd2cSJim Jagielski         return uno::makeAny(xObj);
939*b1cdbd2cSJim Jagielski 	else
940*b1cdbd2cSJim Jagielski 		throw lang::IndexOutOfBoundsException();
941*b1cdbd2cSJim Jagielski //    return uno::Any();
942*b1cdbd2cSJim Jagielski }
943*b1cdbd2cSJim Jagielski 
getElementType()944*b1cdbd2cSJim Jagielski uno::Type SAL_CALL ScStyleFamilyObj::getElementType() throw(uno::RuntimeException)
945*b1cdbd2cSJim Jagielski {
946*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
947*b1cdbd2cSJim Jagielski 	return ::getCppuType((const uno::Reference< style::XStyle >*)0);	// muss zu getByIndex passen
948*b1cdbd2cSJim Jagielski }
949*b1cdbd2cSJim Jagielski 
hasElements()950*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL ScStyleFamilyObj::hasElements() throw(uno::RuntimeException)
951*b1cdbd2cSJim Jagielski {
952*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
953*b1cdbd2cSJim Jagielski 	return ( getCount() != 0 );
954*b1cdbd2cSJim Jagielski }
955*b1cdbd2cSJim Jagielski 
956*b1cdbd2cSJim Jagielski // container::XNameAccess
957*b1cdbd2cSJim Jagielski 
getByName(const rtl::OUString & aName)958*b1cdbd2cSJim Jagielski uno::Any SAL_CALL ScStyleFamilyObj::getByName( const rtl::OUString& aName )
959*b1cdbd2cSJim Jagielski 			throw(container::NoSuchElementException,
960*b1cdbd2cSJim Jagielski 					lang::WrappedTargetException, uno::RuntimeException)
961*b1cdbd2cSJim Jagielski {
962*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
963*b1cdbd2cSJim Jagielski 	uno::Reference< style::XStyle > xObj(
964*b1cdbd2cSJim Jagielski         GetObjectByName_Impl( ScStyleNameConversion::ProgrammaticToDisplayName( aName, sal::static_int_cast<sal_uInt16>(eFamily) ) ));
965*b1cdbd2cSJim Jagielski 	if (xObj.is())
966*b1cdbd2cSJim Jagielski         return uno::makeAny(xObj);
967*b1cdbd2cSJim Jagielski 	else
968*b1cdbd2cSJim Jagielski 		throw container::NoSuchElementException();
969*b1cdbd2cSJim Jagielski //    return uno::Any();
970*b1cdbd2cSJim Jagielski }
971*b1cdbd2cSJim Jagielski 
getElementNames()972*b1cdbd2cSJim Jagielski uno::Sequence<rtl::OUString> SAL_CALL ScStyleFamilyObj::getElementNames()
973*b1cdbd2cSJim Jagielski 												throw(uno::RuntimeException)
974*b1cdbd2cSJim Jagielski {
975*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
976*b1cdbd2cSJim Jagielski 	if ( pDocShell )
977*b1cdbd2cSJim Jagielski 	{
978*b1cdbd2cSJim Jagielski 		ScDocument* pDoc = pDocShell->GetDocument();
979*b1cdbd2cSJim Jagielski 		ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
980*b1cdbd2cSJim Jagielski 
981*b1cdbd2cSJim Jagielski 		SfxStyleSheetIterator aIter( pStylePool, eFamily );
982*b1cdbd2cSJim Jagielski 		sal_uInt16 nCount = aIter.Count();
983*b1cdbd2cSJim Jagielski 
984*b1cdbd2cSJim Jagielski 		String aName;
985*b1cdbd2cSJim Jagielski 		uno::Sequence<rtl::OUString> aSeq(nCount);
986*b1cdbd2cSJim Jagielski 		rtl::OUString* pAry = aSeq.getArray();
987*b1cdbd2cSJim Jagielski 		SfxStyleSheetBase* pStyle = aIter.First();
988*b1cdbd2cSJim Jagielski 		sal_uInt16 nPos = 0;
989*b1cdbd2cSJim Jagielski 		while (pStyle)
990*b1cdbd2cSJim Jagielski 		{
991*b1cdbd2cSJim Jagielski 			DBG_ASSERT( nPos<nCount, "Anzahl durcheinandergekommen" );
992*b1cdbd2cSJim Jagielski 			if (nPos<nCount)
993*b1cdbd2cSJim Jagielski 				pAry[nPos++] = ScStyleNameConversion::DisplayToProgrammaticName(
994*b1cdbd2cSJim Jagielski                                     pStyle->GetName(), sal::static_int_cast<sal_uInt16>(eFamily) );
995*b1cdbd2cSJim Jagielski 			pStyle = aIter.Next();
996*b1cdbd2cSJim Jagielski 		}
997*b1cdbd2cSJim Jagielski 		return aSeq;
998*b1cdbd2cSJim Jagielski 	}
999*b1cdbd2cSJim Jagielski 	return uno::Sequence<rtl::OUString>();
1000*b1cdbd2cSJim Jagielski }
1001*b1cdbd2cSJim Jagielski 
hasByName(const rtl::OUString & aName)1002*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL ScStyleFamilyObj::hasByName( const rtl::OUString& aName )
1003*b1cdbd2cSJim Jagielski 										throw(uno::RuntimeException)
1004*b1cdbd2cSJim Jagielski {
1005*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
1006*b1cdbd2cSJim Jagielski 	if ( pDocShell )
1007*b1cdbd2cSJim Jagielski 	{
1008*b1cdbd2cSJim Jagielski         String aString(ScStyleNameConversion::ProgrammaticToDisplayName( aName, sal::static_int_cast<sal_uInt16>(eFamily) ));
1009*b1cdbd2cSJim Jagielski 
1010*b1cdbd2cSJim Jagielski 		ScDocument* pDoc = pDocShell->GetDocument();
1011*b1cdbd2cSJim Jagielski 		ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
1012*b1cdbd2cSJim Jagielski 		if ( pStylePool->Find( aString, eFamily ) )
1013*b1cdbd2cSJim Jagielski 			return sal_True;
1014*b1cdbd2cSJim Jagielski 	}
1015*b1cdbd2cSJim Jagielski 	return sal_False;
1016*b1cdbd2cSJim Jagielski }
1017*b1cdbd2cSJim Jagielski 
1018*b1cdbd2cSJim Jagielski // XPropertySet
1019*b1cdbd2cSJim Jagielski 
getPropertySetInfo()1020*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySetInfo > SAL_CALL ScStyleFamilyObj::getPropertySetInfo(  ) throw (uno::RuntimeException)
1021*b1cdbd2cSJim Jagielski {
1022*b1cdbd2cSJim Jagielski     OSL_ENSURE( 0, "###unexpected!" );
1023*b1cdbd2cSJim Jagielski     return uno::Reference< beans::XPropertySetInfo >();
1024*b1cdbd2cSJim Jagielski }
1025*b1cdbd2cSJim Jagielski 
setPropertyValue(const::rtl::OUString &,const uno::Any &)1026*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleFamilyObj::setPropertyValue( const ::rtl::OUString&, const uno::Any& ) throw (beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException)
1027*b1cdbd2cSJim Jagielski {
1028*b1cdbd2cSJim Jagielski     OSL_ENSURE( 0, "###unexpected!" );
1029*b1cdbd2cSJim Jagielski }
1030*b1cdbd2cSJim Jagielski 
getPropertyValue(const::rtl::OUString & sPropertyName)1031*b1cdbd2cSJim Jagielski uno::Any SAL_CALL ScStyleFamilyObj::getPropertyValue( const ::rtl::OUString& sPropertyName ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
1032*b1cdbd2cSJim Jagielski {
1033*b1cdbd2cSJim Jagielski     uno::Any aRet;
1034*b1cdbd2cSJim Jagielski 
1035*b1cdbd2cSJim Jagielski     if ( sPropertyName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("DisplayName") ) )
1036*b1cdbd2cSJim Jagielski     {
1037*b1cdbd2cSJim Jagielski         ScUnoGuard aGuard;
1038*b1cdbd2cSJim Jagielski         sal_uInt32 nResId = 0;
1039*b1cdbd2cSJim Jagielski         switch ( eFamily )
1040*b1cdbd2cSJim Jagielski         {
1041*b1cdbd2cSJim Jagielski             case SFX_STYLE_FAMILY_PARA:
1042*b1cdbd2cSJim Jagielski                 nResId = STR_STYLE_FAMILY_CELL; break;
1043*b1cdbd2cSJim Jagielski             case SFX_STYLE_FAMILY_PAGE:
1044*b1cdbd2cSJim Jagielski                 nResId = STR_STYLE_FAMILY_PAGE; break;
1045*b1cdbd2cSJim Jagielski             default:
1046*b1cdbd2cSJim Jagielski                 OSL_ENSURE( 0, "ScStyleFamilyObj::getPropertyValue(): invalid family" );
1047*b1cdbd2cSJim Jagielski         }
1048*b1cdbd2cSJim Jagielski         if ( nResId > 0 )
1049*b1cdbd2cSJim Jagielski         {
1050*b1cdbd2cSJim Jagielski             ::rtl::OUString sDisplayName( ScGlobal::GetRscString( static_cast< sal_uInt16 >( nResId ) ) );
1051*b1cdbd2cSJim Jagielski             aRet = uno::makeAny( sDisplayName );
1052*b1cdbd2cSJim Jagielski         }
1053*b1cdbd2cSJim Jagielski     }
1054*b1cdbd2cSJim Jagielski     else
1055*b1cdbd2cSJim Jagielski     {
1056*b1cdbd2cSJim Jagielski         throw beans::UnknownPropertyException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("unknown property: ") ) + sPropertyName, static_cast<OWeakObject *>(this) );
1057*b1cdbd2cSJim Jagielski     }
1058*b1cdbd2cSJim Jagielski 
1059*b1cdbd2cSJim Jagielski     return aRet;
1060*b1cdbd2cSJim Jagielski }
1061*b1cdbd2cSJim Jagielski 
addPropertyChangeListener(const::rtl::OUString &,const uno::Reference<beans::XPropertyChangeListener> &)1062*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleFamilyObj::addPropertyChangeListener( const ::rtl::OUString&, const uno::Reference< beans::XPropertyChangeListener >& ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
1063*b1cdbd2cSJim Jagielski {
1064*b1cdbd2cSJim Jagielski     OSL_ENSURE( 0, "###unexpected!" );
1065*b1cdbd2cSJim Jagielski }
1066*b1cdbd2cSJim Jagielski 
removePropertyChangeListener(const::rtl::OUString &,const uno::Reference<beans::XPropertyChangeListener> &)1067*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleFamilyObj::removePropertyChangeListener( const ::rtl::OUString&, const uno::Reference< beans::XPropertyChangeListener >& ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
1068*b1cdbd2cSJim Jagielski {
1069*b1cdbd2cSJim Jagielski     OSL_ENSURE( 0, "###unexpected!" );
1070*b1cdbd2cSJim Jagielski }
1071*b1cdbd2cSJim Jagielski 
addVetoableChangeListener(const::rtl::OUString &,const uno::Reference<beans::XVetoableChangeListener> &)1072*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleFamilyObj::addVetoableChangeListener( const ::rtl::OUString&, const uno::Reference< beans::XVetoableChangeListener >& ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
1073*b1cdbd2cSJim Jagielski {
1074*b1cdbd2cSJim Jagielski     OSL_ENSURE( 0, "###unexpected!" );
1075*b1cdbd2cSJim Jagielski }
1076*b1cdbd2cSJim Jagielski 
removeVetoableChangeListener(const::rtl::OUString &,const uno::Reference<beans::XVetoableChangeListener> &)1077*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleFamilyObj::removeVetoableChangeListener( const ::rtl::OUString&, const uno::Reference< beans::XVetoableChangeListener >& ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
1078*b1cdbd2cSJim Jagielski {
1079*b1cdbd2cSJim Jagielski     OSL_ENSURE( 0, "###unexpected!" );
1080*b1cdbd2cSJim Jagielski }
1081*b1cdbd2cSJim Jagielski 
1082*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
1083*b1cdbd2cSJim Jagielski 
1084*b1cdbd2cSJim Jagielski //	Default-ctor wird fuer die Reflection gebraucht
1085*b1cdbd2cSJim Jagielski 
1086*b1cdbd2cSJim Jagielski //UNUSED2008-05  ScStyleObj::ScStyleObj() :
1087*b1cdbd2cSJim Jagielski //UNUSED2008-05  aPropSet( lcl_GetCellStyleMap() ),
1088*b1cdbd2cSJim Jagielski //UNUSED2008-05  pDocShell( NULL ),
1089*b1cdbd2cSJim Jagielski //UNUSED2008-05  eFamily( SFX_STYLE_FAMILY_PARA )
1090*b1cdbd2cSJim Jagielski //UNUSED2008-05  {
1091*b1cdbd2cSJim Jagielski //UNUSED2008-05  }
1092*b1cdbd2cSJim Jagielski 
ScStyleObj(ScDocShell * pDocSh,SfxStyleFamily eFam,const String & rName)1093*b1cdbd2cSJim Jagielski ScStyleObj::ScStyleObj(ScDocShell* pDocSh, SfxStyleFamily eFam, const String& rName) :
1094*b1cdbd2cSJim Jagielski 	pPropSet( (eFam == SFX_STYLE_FAMILY_PARA) ? lcl_GetCellStyleSet() : lcl_GetPageStyleSet() ),
1095*b1cdbd2cSJim Jagielski 	pDocShell( pDocSh ),
1096*b1cdbd2cSJim Jagielski 	eFamily( eFam ),
1097*b1cdbd2cSJim Jagielski 	aStyleName( rName )
1098*b1cdbd2cSJim Jagielski {
1099*b1cdbd2cSJim Jagielski 	//	pDocShell ist Null, wenn per ServiceProvider erzeugt
1100*b1cdbd2cSJim Jagielski 
1101*b1cdbd2cSJim Jagielski 	if (pDocShell)
1102*b1cdbd2cSJim Jagielski 		pDocShell->GetDocument()->AddUnoObject(*this);
1103*b1cdbd2cSJim Jagielski }
1104*b1cdbd2cSJim Jagielski 
InitDoc(ScDocShell * pNewDocSh,const String & rNewName)1105*b1cdbd2cSJim Jagielski void ScStyleObj::InitDoc( ScDocShell* pNewDocSh, const String& rNewName )
1106*b1cdbd2cSJim Jagielski {
1107*b1cdbd2cSJim Jagielski 	if ( pNewDocSh && !pDocShell )
1108*b1cdbd2cSJim Jagielski 	{
1109*b1cdbd2cSJim Jagielski 		aStyleName = rNewName;
1110*b1cdbd2cSJim Jagielski 		pDocShell = pNewDocSh;
1111*b1cdbd2cSJim Jagielski 		pDocShell->GetDocument()->AddUnoObject(*this);
1112*b1cdbd2cSJim Jagielski 	}
1113*b1cdbd2cSJim Jagielski }
1114*b1cdbd2cSJim Jagielski 
~ScStyleObj()1115*b1cdbd2cSJim Jagielski ScStyleObj::~ScStyleObj()
1116*b1cdbd2cSJim Jagielski {
1117*b1cdbd2cSJim Jagielski 	if (pDocShell)
1118*b1cdbd2cSJim Jagielski 		pDocShell->GetDocument()->RemoveUnoObject(*this);
1119*b1cdbd2cSJim Jagielski }
1120*b1cdbd2cSJim Jagielski 
1121*b1cdbd2cSJim Jagielski // XUnoTunnel
1122*b1cdbd2cSJim Jagielski 
getSomething(const uno::Sequence<sal_Int8> & rId)1123*b1cdbd2cSJim Jagielski sal_Int64 SAL_CALL ScStyleObj::getSomething(
1124*b1cdbd2cSJim Jagielski 				const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
1125*b1cdbd2cSJim Jagielski {
1126*b1cdbd2cSJim Jagielski 	if ( rId.getLength() == 16 &&
1127*b1cdbd2cSJim Jagielski           0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
1128*b1cdbd2cSJim Jagielski 									rId.getConstArray(), 16 ) )
1129*b1cdbd2cSJim Jagielski 	{
1130*b1cdbd2cSJim Jagielski         return sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_IntPtr>(this));
1131*b1cdbd2cSJim Jagielski 	}
1132*b1cdbd2cSJim Jagielski 	return 0;
1133*b1cdbd2cSJim Jagielski }
1134*b1cdbd2cSJim Jagielski 
1135*b1cdbd2cSJim Jagielski // static
getUnoTunnelId()1136*b1cdbd2cSJim Jagielski const uno::Sequence<sal_Int8>& ScStyleObj::getUnoTunnelId()
1137*b1cdbd2cSJim Jagielski {
1138*b1cdbd2cSJim Jagielski 	static uno::Sequence<sal_Int8> * pSeq = 0;
1139*b1cdbd2cSJim Jagielski 	if( !pSeq )
1140*b1cdbd2cSJim Jagielski 	{
1141*b1cdbd2cSJim Jagielski 		osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
1142*b1cdbd2cSJim Jagielski 		if( !pSeq )
1143*b1cdbd2cSJim Jagielski 		{
1144*b1cdbd2cSJim Jagielski 			static uno::Sequence< sal_Int8 > aSeq( 16 );
1145*b1cdbd2cSJim Jagielski 			rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
1146*b1cdbd2cSJim Jagielski 			pSeq = &aSeq;
1147*b1cdbd2cSJim Jagielski 		}
1148*b1cdbd2cSJim Jagielski 	}
1149*b1cdbd2cSJim Jagielski 	return *pSeq;
1150*b1cdbd2cSJim Jagielski }
1151*b1cdbd2cSJim Jagielski 
1152*b1cdbd2cSJim Jagielski // static
getImplementation(const uno::Reference<uno::XInterface> xObj)1153*b1cdbd2cSJim Jagielski ScStyleObj* ScStyleObj::getImplementation(
1154*b1cdbd2cSJim Jagielski 						const uno::Reference<uno::XInterface> xObj )
1155*b1cdbd2cSJim Jagielski {
1156*b1cdbd2cSJim Jagielski 	ScStyleObj* pRet = NULL;
1157*b1cdbd2cSJim Jagielski 	uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
1158*b1cdbd2cSJim Jagielski 	if (xUT.is())
1159*b1cdbd2cSJim Jagielski         pRet = reinterpret_cast<ScStyleObj*>(sal::static_int_cast<sal_IntPtr>(xUT->getSomething(getUnoTunnelId())));
1160*b1cdbd2cSJim Jagielski 	return pRet;
1161*b1cdbd2cSJim Jagielski }
1162*b1cdbd2cSJim Jagielski 
Notify(SfxBroadcaster &,const SfxHint & rHint)1163*b1cdbd2cSJim Jagielski void ScStyleObj::Notify( SfxBroadcaster&, const SfxHint& rHint )
1164*b1cdbd2cSJim Jagielski {
1165*b1cdbd2cSJim Jagielski 	//	Referenz-Update interessiert hier nicht
1166*b1cdbd2cSJim Jagielski 
1167*b1cdbd2cSJim Jagielski 	if ( rHint.ISA( SfxSimpleHint ) &&
1168*b1cdbd2cSJim Jagielski 			((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
1169*b1cdbd2cSJim Jagielski 	{
1170*b1cdbd2cSJim Jagielski 		pDocShell = NULL;		// ungueltig geworden
1171*b1cdbd2cSJim Jagielski 	}
1172*b1cdbd2cSJim Jagielski }
1173*b1cdbd2cSJim Jagielski 
GetStyle_Impl()1174*b1cdbd2cSJim Jagielski SfxStyleSheetBase* ScStyleObj::GetStyle_Impl()
1175*b1cdbd2cSJim Jagielski {
1176*b1cdbd2cSJim Jagielski 	if ( pDocShell )
1177*b1cdbd2cSJim Jagielski 	{
1178*b1cdbd2cSJim Jagielski 		ScDocument* pDoc = pDocShell->GetDocument();
1179*b1cdbd2cSJim Jagielski 		ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
1180*b1cdbd2cSJim Jagielski 		return pStylePool->Find( aStyleName, eFamily );
1181*b1cdbd2cSJim Jagielski 	}
1182*b1cdbd2cSJim Jagielski 	return NULL;
1183*b1cdbd2cSJim Jagielski }
1184*b1cdbd2cSJim Jagielski 
1185*b1cdbd2cSJim Jagielski // style::XStyle
1186*b1cdbd2cSJim Jagielski 
isUserDefined()1187*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL ScStyleObj::isUserDefined() throw(uno::RuntimeException)
1188*b1cdbd2cSJim Jagielski {
1189*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
1190*b1cdbd2cSJim Jagielski 	SfxStyleSheetBase* pStyle = GetStyle_Impl();
1191*b1cdbd2cSJim Jagielski 	if (pStyle)
1192*b1cdbd2cSJim Jagielski 		return pStyle->IsUserDefined();
1193*b1cdbd2cSJim Jagielski 	return sal_False;
1194*b1cdbd2cSJim Jagielski }
1195*b1cdbd2cSJim Jagielski 
isInUse()1196*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL ScStyleObj::isInUse() throw(uno::RuntimeException)
1197*b1cdbd2cSJim Jagielski {
1198*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
1199*b1cdbd2cSJim Jagielski 	SfxStyleSheetBase* pStyle = GetStyle_Impl();
1200*b1cdbd2cSJim Jagielski 	if (pStyle)
1201*b1cdbd2cSJim Jagielski 		return pStyle->IsUsed();
1202*b1cdbd2cSJim Jagielski 	return sal_False;
1203*b1cdbd2cSJim Jagielski }
1204*b1cdbd2cSJim Jagielski 
getParentStyle()1205*b1cdbd2cSJim Jagielski rtl::OUString SAL_CALL ScStyleObj::getParentStyle() throw(uno::RuntimeException)
1206*b1cdbd2cSJim Jagielski {
1207*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
1208*b1cdbd2cSJim Jagielski 	SfxStyleSheetBase* pStyle = GetStyle_Impl();
1209*b1cdbd2cSJim Jagielski 	if (pStyle)
1210*b1cdbd2cSJim Jagielski         return ScStyleNameConversion::DisplayToProgrammaticName( pStyle->GetParent(), sal::static_int_cast<sal_uInt16>(eFamily) );
1211*b1cdbd2cSJim Jagielski 	return rtl::OUString();
1212*b1cdbd2cSJim Jagielski }
1213*b1cdbd2cSJim Jagielski 
setParentStyle(const rtl::OUString & rParentStyle)1214*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleObj::setParentStyle( const rtl::OUString& rParentStyle )
1215*b1cdbd2cSJim Jagielski 				throw(container::NoSuchElementException, uno::RuntimeException)
1216*b1cdbd2cSJim Jagielski {
1217*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
1218*b1cdbd2cSJim Jagielski 	SfxStyleSheetBase* pStyle = GetStyle_Impl();
1219*b1cdbd2cSJim Jagielski 	if (pStyle)
1220*b1cdbd2cSJim Jagielski 	{
1221*b1cdbd2cSJim Jagielski 		//	#70909# cell styles cannot be modified if any sheet is protected
1222*b1cdbd2cSJim Jagielski 		if ( eFamily == SFX_STYLE_FAMILY_PARA && lcl_AnyTabProtected( *pDocShell->GetDocument() ) )
1223*b1cdbd2cSJim Jagielski 			return;			//! exception?
1224*b1cdbd2cSJim Jagielski 
1225*b1cdbd2cSJim Jagielski 		//!	DocFunc-Funktion??
1226*b1cdbd2cSJim Jagielski 		//!	Undo ?????????????
1227*b1cdbd2cSJim Jagielski 
1228*b1cdbd2cSJim Jagielski         String aString(ScStyleNameConversion::ProgrammaticToDisplayName( rParentStyle, sal::static_int_cast<sal_uInt16>(eFamily) ));
1229*b1cdbd2cSJim Jagielski 		sal_Bool bOk = pStyle->SetParent( aString );
1230*b1cdbd2cSJim Jagielski 		if (bOk)
1231*b1cdbd2cSJim Jagielski 		{
1232*b1cdbd2cSJim Jagielski 			//	wie bei setPropertyValue
1233*b1cdbd2cSJim Jagielski 
1234*b1cdbd2cSJim Jagielski 			ScDocument* pDoc = pDocShell->GetDocument();
1235*b1cdbd2cSJim Jagielski 			if ( eFamily == SFX_STYLE_FAMILY_PARA )
1236*b1cdbd2cSJim Jagielski 			{
1237*b1cdbd2cSJim Jagielski 				//	Zeilenhoehen anpassen...
1238*b1cdbd2cSJim Jagielski 
1239*b1cdbd2cSJim Jagielski 				VirtualDevice aVDev;
1240*b1cdbd2cSJim Jagielski 				Point aLogic = aVDev.LogicToPixel( Point(1000,1000), MAP_TWIP );
1241*b1cdbd2cSJim Jagielski 				double nPPTX = aLogic.X() / 1000.0;
1242*b1cdbd2cSJim Jagielski 				double nPPTY = aLogic.Y() / 1000.0;
1243*b1cdbd2cSJim Jagielski 				Fraction aZoom(1,1);
1244*b1cdbd2cSJim Jagielski 				pDoc->StyleSheetChanged( pStyle, sal_False, &aVDev, nPPTX, nPPTY, aZoom, aZoom );
1245*b1cdbd2cSJim Jagielski 
1246*b1cdbd2cSJim Jagielski 				pDocShell->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID|PAINT_LEFT );
1247*b1cdbd2cSJim Jagielski 				pDocShell->SetDocumentModified();
1248*b1cdbd2cSJim Jagielski 			}
1249*b1cdbd2cSJim Jagielski 			else
1250*b1cdbd2cSJim Jagielski 			{
1251*b1cdbd2cSJim Jagielski 				//!	ModifyStyleSheet am Dokument (alte Werte merken)
1252*b1cdbd2cSJim Jagielski 
1253*b1cdbd2cSJim Jagielski 				pDocShell->PageStyleModified( aStyleName, sal_True );
1254*b1cdbd2cSJim Jagielski 			}
1255*b1cdbd2cSJim Jagielski 		}
1256*b1cdbd2cSJim Jagielski 	}
1257*b1cdbd2cSJim Jagielski }
1258*b1cdbd2cSJim Jagielski 
1259*b1cdbd2cSJim Jagielski // container::XNamed
1260*b1cdbd2cSJim Jagielski 
getName()1261*b1cdbd2cSJim Jagielski rtl::OUString SAL_CALL ScStyleObj::getName() throw(uno::RuntimeException)
1262*b1cdbd2cSJim Jagielski {
1263*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
1264*b1cdbd2cSJim Jagielski 	SfxStyleSheetBase* pStyle = GetStyle_Impl();
1265*b1cdbd2cSJim Jagielski 	if (pStyle)
1266*b1cdbd2cSJim Jagielski         return ScStyleNameConversion::DisplayToProgrammaticName( pStyle->GetName(), sal::static_int_cast<sal_uInt16>(eFamily) );
1267*b1cdbd2cSJim Jagielski 	return rtl::OUString();
1268*b1cdbd2cSJim Jagielski }
1269*b1cdbd2cSJim Jagielski 
setName(const rtl::OUString & aNewName)1270*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleObj::setName( const rtl::OUString& aNewName )
1271*b1cdbd2cSJim Jagielski 												throw(uno::RuntimeException)
1272*b1cdbd2cSJim Jagielski {
1273*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
1274*b1cdbd2cSJim Jagielski 	SfxStyleSheetBase* pStyle = GetStyle_Impl();
1275*b1cdbd2cSJim Jagielski 	if (pStyle)
1276*b1cdbd2cSJim Jagielski 	{
1277*b1cdbd2cSJim Jagielski 		//	#71225# cell styles cannot be renamed if any sheet is protected
1278*b1cdbd2cSJim Jagielski 		if ( eFamily == SFX_STYLE_FAMILY_PARA && lcl_AnyTabProtected( *pDocShell->GetDocument() ) )
1279*b1cdbd2cSJim Jagielski 			return;			//! exception?
1280*b1cdbd2cSJim Jagielski 
1281*b1cdbd2cSJim Jagielski 		//!	DocFunc-Funktion??
1282*b1cdbd2cSJim Jagielski 		//!	Undo ?????????????
1283*b1cdbd2cSJim Jagielski 
1284*b1cdbd2cSJim Jagielski 		String aString(aNewName);
1285*b1cdbd2cSJim Jagielski 		sal_Bool bOk = pStyle->SetName( aString );
1286*b1cdbd2cSJim Jagielski 		if (bOk)
1287*b1cdbd2cSJim Jagielski 		{
1288*b1cdbd2cSJim Jagielski 			aStyleName = aString;		//!	notify other objects for this style?
1289*b1cdbd2cSJim Jagielski 
1290*b1cdbd2cSJim Jagielski             ScDocument* pDoc = pDocShell->GetDocument();
1291*b1cdbd2cSJim Jagielski             if ( eFamily == SFX_STYLE_FAMILY_PARA && !pDoc->IsImportingXML() )
1292*b1cdbd2cSJim Jagielski                 pDoc->GetPool()->CellStyleCreated( aString );
1293*b1cdbd2cSJim Jagielski 
1294*b1cdbd2cSJim Jagielski 			//	Zellvorlagen = 2, Seitenvorlagen = 4
1295*b1cdbd2cSJim Jagielski 			sal_uInt16 nId = ( eFamily == SFX_STYLE_FAMILY_PARA ) ?
1296*b1cdbd2cSJim Jagielski 							SID_STYLE_FAMILY2 : SID_STYLE_FAMILY4;
1297*b1cdbd2cSJim Jagielski 			SfxBindings* pBindings = pDocShell->GetViewBindings();
1298*b1cdbd2cSJim Jagielski 			if (pBindings)
1299*b1cdbd2cSJim Jagielski 			{
1300*b1cdbd2cSJim Jagielski 				pBindings->Invalidate( nId );
1301*b1cdbd2cSJim Jagielski 				pBindings->Invalidate( SID_STYLE_APPLY );
1302*b1cdbd2cSJim Jagielski 			}
1303*b1cdbd2cSJim Jagielski 		}
1304*b1cdbd2cSJim Jagielski 	}
1305*b1cdbd2cSJim Jagielski }
1306*b1cdbd2cSJim Jagielski 
1307*b1cdbd2cSJim Jagielski // static
CreateEmptyNumberingRules()1308*b1cdbd2cSJim Jagielski uno::Reference<container::XIndexReplace> ScStyleObj::CreateEmptyNumberingRules()
1309*b1cdbd2cSJim Jagielski {
1310*b1cdbd2cSJim Jagielski 	SvxNumRule aRule( 0, 0, sal_True );			// nothing supported
1311*b1cdbd2cSJim Jagielski 	return SvxCreateNumRule( &aRule );
1312*b1cdbd2cSJim Jagielski }
1313*b1cdbd2cSJim Jagielski 
1314*b1cdbd2cSJim Jagielski // beans::XPropertyState
1315*b1cdbd2cSJim Jagielski 
GetStyleItemSet_Impl(const::rtl::OUString & rPropName,const SfxItemPropertySimpleEntry * & rpResultEntry)1316*b1cdbd2cSJim Jagielski const SfxItemSet* ScStyleObj::GetStyleItemSet_Impl( const ::rtl::OUString& rPropName,
1317*b1cdbd2cSJim Jagielski                                         const SfxItemPropertySimpleEntry*& rpResultEntry )
1318*b1cdbd2cSJim Jagielski {
1319*b1cdbd2cSJim Jagielski 	//!	OUString as argument?
1320*b1cdbd2cSJim Jagielski 
1321*b1cdbd2cSJim Jagielski 	SfxStyleSheetBase* pStyle = GetStyle_Impl();
1322*b1cdbd2cSJim Jagielski 	if (pStyle)
1323*b1cdbd2cSJim Jagielski 	{
1324*b1cdbd2cSJim Jagielski         const SfxItemPropertySimpleEntry* pEntry = NULL;
1325*b1cdbd2cSJim Jagielski 		if ( eFamily == SFX_STYLE_FAMILY_PAGE )
1326*b1cdbd2cSJim Jagielski 		{
1327*b1cdbd2cSJim Jagielski             pEntry = lcl_GetHeaderStyleMap()->getByName( rPropName );
1328*b1cdbd2cSJim Jagielski             if ( pEntry )     // only item-wids in header/footer map
1329*b1cdbd2cSJim Jagielski             {
1330*b1cdbd2cSJim Jagielski                 rpResultEntry = pEntry;
1331*b1cdbd2cSJim Jagielski                 return &((const SvxSetItem&)pStyle->GetItemSet().Get(ATTR_PAGE_HEADERSET)).GetItemSet();
1332*b1cdbd2cSJim Jagielski             }
1333*b1cdbd2cSJim Jagielski             pEntry = lcl_GetFooterStyleMap()->getByName( rPropName );
1334*b1cdbd2cSJim Jagielski             if ( pEntry )      // only item-wids in header/footer map
1335*b1cdbd2cSJim Jagielski             {
1336*b1cdbd2cSJim Jagielski                 rpResultEntry = pEntry;
1337*b1cdbd2cSJim Jagielski                 return &((const SvxSetItem&)pStyle->GetItemSet().Get(ATTR_PAGE_FOOTERSET)).GetItemSet();
1338*b1cdbd2cSJim Jagielski             }
1339*b1cdbd2cSJim Jagielski 		}
1340*b1cdbd2cSJim Jagielski         pEntry = pPropSet->getPropertyMap()->getByName( rPropName );
1341*b1cdbd2cSJim Jagielski         if ( pEntry )
1342*b1cdbd2cSJim Jagielski 		{
1343*b1cdbd2cSJim Jagielski             rpResultEntry = pEntry;
1344*b1cdbd2cSJim Jagielski 			return &pStyle->GetItemSet();
1345*b1cdbd2cSJim Jagielski 		}
1346*b1cdbd2cSJim Jagielski 	}
1347*b1cdbd2cSJim Jagielski 
1348*b1cdbd2cSJim Jagielski 	rpResultEntry = NULL;
1349*b1cdbd2cSJim Jagielski 	return NULL;
1350*b1cdbd2cSJim Jagielski }
1351*b1cdbd2cSJim Jagielski 
getPropertyState(const rtl::OUString & aPropertyName)1352*b1cdbd2cSJim Jagielski beans::PropertyState SAL_CALL ScStyleObj::getPropertyState( const rtl::OUString& aPropertyName )
1353*b1cdbd2cSJim Jagielski 								throw(beans::UnknownPropertyException, uno::RuntimeException)
1354*b1cdbd2cSJim Jagielski {
1355*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
1356*b1cdbd2cSJim Jagielski 	beans::PropertyState eRet = beans::PropertyState_DIRECT_VALUE;
1357*b1cdbd2cSJim Jagielski 
1358*b1cdbd2cSJim Jagielski     const SfxItemPropertySimpleEntry* pResultEntry = NULL;
1359*b1cdbd2cSJim Jagielski     const SfxItemSet* pItemSet = GetStyleItemSet_Impl( aPropertyName, pResultEntry );
1360*b1cdbd2cSJim Jagielski 
1361*b1cdbd2cSJim Jagielski 	if ( pItemSet && pResultEntry )
1362*b1cdbd2cSJim Jagielski 	{
1363*b1cdbd2cSJim Jagielski 		sal_uInt16 nWhich = pResultEntry->nWID;
1364*b1cdbd2cSJim Jagielski         if ( nWhich == SC_WID_UNO_TBLBORD )
1365*b1cdbd2cSJim Jagielski         {
1366*b1cdbd2cSJim Jagielski             nWhich = ATTR_BORDER;
1367*b1cdbd2cSJim Jagielski         }
1368*b1cdbd2cSJim Jagielski         if ( IsScItemWid( nWhich ) )
1369*b1cdbd2cSJim Jagielski         {
1370*b1cdbd2cSJim Jagielski 		    SfxItemState eState = pItemSet->GetItemState( nWhich, sal_False );
1371*b1cdbd2cSJim Jagielski 
1372*b1cdbd2cSJim Jagielski //           //  if no rotate value is set, look at orientation
1373*b1cdbd2cSJim Jagielski //           //! also for a fixed value of 0 (in case orientation is ambiguous)?
1374*b1cdbd2cSJim Jagielski //           if ( nWhich == ATTR_ROTATE_VALUE && eState == SFX_ITEM_DEFAULT )
1375*b1cdbd2cSJim Jagielski //               eState = pItemSet->GetItemState( ATTR_ORIENTATION, sal_False );
1376*b1cdbd2cSJim Jagielski 
1377*b1cdbd2cSJim Jagielski 		    if ( eState == SFX_ITEM_SET )
1378*b1cdbd2cSJim Jagielski 			    eRet = beans::PropertyState_DIRECT_VALUE;
1379*b1cdbd2cSJim Jagielski 		    else if ( eState == SFX_ITEM_DEFAULT )
1380*b1cdbd2cSJim Jagielski 			    eRet = beans::PropertyState_DEFAULT_VALUE;
1381*b1cdbd2cSJim Jagielski 		    else if ( eState == SFX_ITEM_DONTCARE )
1382*b1cdbd2cSJim Jagielski 			    eRet = beans::PropertyState_AMBIGUOUS_VALUE;	// kann eigentlich nicht sein...
1383*b1cdbd2cSJim Jagielski 		    else
1384*b1cdbd2cSJim Jagielski 		    {
1385*b1cdbd2cSJim Jagielski 			    DBG_ERROR("unbekannter ItemState");
1386*b1cdbd2cSJim Jagielski 		    }
1387*b1cdbd2cSJim Jagielski         }
1388*b1cdbd2cSJim Jagielski 	}
1389*b1cdbd2cSJim Jagielski 	return eRet;
1390*b1cdbd2cSJim Jagielski }
1391*b1cdbd2cSJim Jagielski 
getPropertyStates(const uno::Sequence<rtl::OUString> & aPropertyNames)1392*b1cdbd2cSJim Jagielski uno::Sequence<beans::PropertyState> SAL_CALL ScStyleObj::getPropertyStates(
1393*b1cdbd2cSJim Jagielski 							const uno::Sequence<rtl::OUString>& aPropertyNames )
1394*b1cdbd2cSJim Jagielski 					throw(beans::UnknownPropertyException, uno::RuntimeException)
1395*b1cdbd2cSJim Jagielski {
1396*b1cdbd2cSJim Jagielski 	//	duemmliche Default-Implementierung: alles einzeln per getPropertyState holen
1397*b1cdbd2cSJim Jagielski 	//!	sollte optimiert werden!
1398*b1cdbd2cSJim Jagielski 
1399*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
1400*b1cdbd2cSJim Jagielski 	const rtl::OUString* pNames = aPropertyNames.getConstArray();
1401*b1cdbd2cSJim Jagielski 	uno::Sequence<beans::PropertyState> aRet(aPropertyNames.getLength());
1402*b1cdbd2cSJim Jagielski 	beans::PropertyState* pStates = aRet.getArray();
1403*b1cdbd2cSJim Jagielski 	for(sal_Int32 i = 0; i < aPropertyNames.getLength(); i++)
1404*b1cdbd2cSJim Jagielski 		pStates[i] = getPropertyState(pNames[i]);
1405*b1cdbd2cSJim Jagielski 	return aRet;
1406*b1cdbd2cSJim Jagielski }
1407*b1cdbd2cSJim Jagielski 
setPropertyToDefault(const rtl::OUString & aPropertyName)1408*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleObj::setPropertyToDefault( const rtl::OUString& aPropertyName )
1409*b1cdbd2cSJim Jagielski 							throw(beans::UnknownPropertyException, uno::RuntimeException)
1410*b1cdbd2cSJim Jagielski {
1411*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
1412*b1cdbd2cSJim Jagielski 
1413*b1cdbd2cSJim Jagielski     const SfxItemPropertyMap* pMap = pPropSet->getPropertyMap();
1414*b1cdbd2cSJim Jagielski     const SfxItemPropertySimpleEntry* pEntry = pMap->getByName( aPropertyName );
1415*b1cdbd2cSJim Jagielski     if ( !pEntry )
1416*b1cdbd2cSJim Jagielski 		throw beans::UnknownPropertyException();
1417*b1cdbd2cSJim Jagielski 
1418*b1cdbd2cSJim Jagielski     SetOnePropertyValue( aPropertyName, pEntry, NULL );
1419*b1cdbd2cSJim Jagielski }
1420*b1cdbd2cSJim Jagielski 
getPropertyDefault(const rtl::OUString & aPropertyName)1421*b1cdbd2cSJim Jagielski uno::Any SAL_CALL ScStyleObj::getPropertyDefault( const rtl::OUString& aPropertyName )
1422*b1cdbd2cSJim Jagielski 							throw(beans::UnknownPropertyException, lang::WrappedTargetException,
1423*b1cdbd2cSJim Jagielski 									uno::RuntimeException)
1424*b1cdbd2cSJim Jagielski {
1425*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
1426*b1cdbd2cSJim Jagielski 	uno::Any aAny;
1427*b1cdbd2cSJim Jagielski 
1428*b1cdbd2cSJim Jagielski     const SfxItemPropertySimpleEntry* pResultEntry = NULL;
1429*b1cdbd2cSJim Jagielski     const SfxItemSet* pStyleSet = GetStyleItemSet_Impl( aPropertyName, pResultEntry );
1430*b1cdbd2cSJim Jagielski 
1431*b1cdbd2cSJim Jagielski 	if ( pStyleSet && pResultEntry )
1432*b1cdbd2cSJim Jagielski 	{
1433*b1cdbd2cSJim Jagielski 		sal_uInt16 nWhich = pResultEntry->nWID;
1434*b1cdbd2cSJim Jagielski 
1435*b1cdbd2cSJim Jagielski         if ( IsScItemWid( nWhich ) )
1436*b1cdbd2cSJim Jagielski         {
1437*b1cdbd2cSJim Jagielski 		    //	Default ist Default vom ItemPool, nicht vom Standard-Style,
1438*b1cdbd2cSJim Jagielski 		    //	damit es zu setPropertyToDefault passt
1439*b1cdbd2cSJim Jagielski 		    SfxItemSet aEmptySet( *pStyleSet->GetPool(), pStyleSet->GetRanges() );
1440*b1cdbd2cSJim Jagielski 		    //	#65253# Default-Items mit falscher Slot-ID funktionieren im SfxItemPropertySet3 nicht
1441*b1cdbd2cSJim Jagielski 		    //!	Slot-IDs aendern...
1442*b1cdbd2cSJim Jagielski 		    if ( aEmptySet.GetPool()->GetSlotId(nWhich) == nWhich &&
1443*b1cdbd2cSJim Jagielski 			     aEmptySet.GetItemState(nWhich, sal_False) == SFX_ITEM_DEFAULT )
1444*b1cdbd2cSJim Jagielski 		    {
1445*b1cdbd2cSJim Jagielski 			    aEmptySet.Put( aEmptySet.Get( nWhich ) );
1446*b1cdbd2cSJim Jagielski 		    }
1447*b1cdbd2cSJim Jagielski 		    const SfxItemSet* pItemSet = &aEmptySet;
1448*b1cdbd2cSJim Jagielski 
1449*b1cdbd2cSJim Jagielski 		    switch ( nWhich )		// fuer Item-Spezial-Behandlungen
1450*b1cdbd2cSJim Jagielski 		    {
1451*b1cdbd2cSJim Jagielski 			    case ATTR_VALUE_FORMAT:
1452*b1cdbd2cSJim Jagielski 				    //	default has no language set
1453*b1cdbd2cSJim Jagielski 				    aAny <<= sal_Int32( ((const SfxUInt32Item&)pItemSet->Get(nWhich)).GetValue() );
1454*b1cdbd2cSJim Jagielski 				    break;
1455*b1cdbd2cSJim Jagielski 			    case ATTR_INDENT:
1456*b1cdbd2cSJim Jagielski 				    aAny <<= sal_Int16( TwipsToHMM(((const SfxUInt16Item&)
1457*b1cdbd2cSJim Jagielski 								    pItemSet->Get(nWhich)).GetValue()) );
1458*b1cdbd2cSJim Jagielski 				    break;
1459*b1cdbd2cSJim Jagielski 			    case ATTR_PAGE_SCALE:
1460*b1cdbd2cSJim Jagielski 			    case ATTR_PAGE_SCALETOPAGES:
1461*b1cdbd2cSJim Jagielski 			    case ATTR_PAGE_FIRSTPAGENO:
1462*b1cdbd2cSJim Jagielski 				    aAny <<= sal_Int16( ((const SfxUInt16Item&)pItemSet->Get(nWhich)).GetValue() );
1463*b1cdbd2cSJim Jagielski 				    break;
1464*b1cdbd2cSJim Jagielski 			    case ATTR_PAGE_CHARTS:
1465*b1cdbd2cSJim Jagielski 			    case ATTR_PAGE_OBJECTS:
1466*b1cdbd2cSJim Jagielski 			    case ATTR_PAGE_DRAWINGS:
1467*b1cdbd2cSJim Jagielski 				    //!	sal_Bool-MID fuer ScViewObjectModeItem definieren?
1468*b1cdbd2cSJim Jagielski 				    aAny <<= sal_Bool( ((const ScViewObjectModeItem&)pItemSet->Get(nWhich)).
1469*b1cdbd2cSJim Jagielski 								    GetValue() == VOBJ_MODE_SHOW );
1470*b1cdbd2cSJim Jagielski 				    break;
1471*b1cdbd2cSJim Jagielski                 case ATTR_PAGE_SCALETO:
1472*b1cdbd2cSJim Jagielski                     {
1473*b1cdbd2cSJim Jagielski                         const ScPageScaleToItem aItem((const ScPageScaleToItem&)pItemSet->Get(nWhich));
1474*b1cdbd2cSJim Jagielski                         if (aPropertyName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( SC_UNO_PAGE_SCALETOX )))
1475*b1cdbd2cSJim Jagielski                             aAny = uno::makeAny(static_cast<sal_Int16>(aItem.GetWidth()));
1476*b1cdbd2cSJim Jagielski                         else
1477*b1cdbd2cSJim Jagielski                             aAny = uno::makeAny(static_cast<sal_Int16>(aItem.GetHeight()));
1478*b1cdbd2cSJim Jagielski                     }
1479*b1cdbd2cSJim Jagielski                     break;
1480*b1cdbd2cSJim Jagielski 			    default:
1481*b1cdbd2cSJim Jagielski                     pPropSet->getPropertyValue( *pResultEntry, *pItemSet, aAny );
1482*b1cdbd2cSJim Jagielski 		    }
1483*b1cdbd2cSJim Jagielski         }
1484*b1cdbd2cSJim Jagielski         else if ( IsScUnoWid( nWhich ) )
1485*b1cdbd2cSJim Jagielski         {
1486*b1cdbd2cSJim Jagielski             SfxItemSet aEmptySet( *pStyleSet->GetPool(), pStyleSet->GetRanges() );
1487*b1cdbd2cSJim Jagielski             const SfxItemSet* pItemSet = &aEmptySet;
1488*b1cdbd2cSJim Jagielski             switch ( nWhich )
1489*b1cdbd2cSJim Jagielski             {
1490*b1cdbd2cSJim Jagielski                 case SC_WID_UNO_TBLBORD:
1491*b1cdbd2cSJim Jagielski                     {
1492*b1cdbd2cSJim Jagielski                         const SfxPoolItem* pItem = &pItemSet->Get( ATTR_BORDER );
1493*b1cdbd2cSJim Jagielski                         if ( pItem )
1494*b1cdbd2cSJim Jagielski                         {
1495*b1cdbd2cSJim Jagielski                             SvxBoxItem aOuter( *( static_cast<const SvxBoxItem*>( pItem ) ) );
1496*b1cdbd2cSJim Jagielski                             SvxBoxInfoItem aInner( ATTR_BORDER_INNER );
1497*b1cdbd2cSJim Jagielski                             table::TableBorder aBorder;
1498*b1cdbd2cSJim Jagielski                             ScHelperFunctions::FillTableBorder( aBorder, aOuter, aInner );
1499*b1cdbd2cSJim Jagielski                             aBorder.IsHorizontalLineValid = sal_False;
1500*b1cdbd2cSJim Jagielski                             aBorder.IsVerticalLineValid = sal_False;
1501*b1cdbd2cSJim Jagielski                             aBorder.IsDistanceValid = sal_False;
1502*b1cdbd2cSJim Jagielski                             aAny <<= aBorder;
1503*b1cdbd2cSJim Jagielski                         }
1504*b1cdbd2cSJim Jagielski                     }
1505*b1cdbd2cSJim Jagielski                     break;
1506*b1cdbd2cSJim Jagielski             }
1507*b1cdbd2cSJim Jagielski         }
1508*b1cdbd2cSJim Jagielski 	}
1509*b1cdbd2cSJim Jagielski 	return aAny;
1510*b1cdbd2cSJim Jagielski }
1511*b1cdbd2cSJim Jagielski 
1512*b1cdbd2cSJim Jagielski // XMultiPropertySet
1513*b1cdbd2cSJim Jagielski 
setPropertyValues(const uno::Sequence<rtl::OUString> & aPropertyNames,const uno::Sequence<uno::Any> & aValues)1514*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleObj::setPropertyValues( const uno::Sequence< rtl::OUString >& aPropertyNames,
1515*b1cdbd2cSJim Jagielski 												const uno::Sequence< uno::Any >& aValues )
1516*b1cdbd2cSJim Jagielski 								throw (beans::PropertyVetoException, lang::IllegalArgumentException,
1517*b1cdbd2cSJim Jagielski 										lang::WrappedTargetException, uno::RuntimeException)
1518*b1cdbd2cSJim Jagielski {
1519*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
1520*b1cdbd2cSJim Jagielski 
1521*b1cdbd2cSJim Jagielski 	sal_Int32 nCount = aPropertyNames.getLength();
1522*b1cdbd2cSJim Jagielski 	if ( aValues.getLength() != nCount )
1523*b1cdbd2cSJim Jagielski 		throw lang::IllegalArgumentException();
1524*b1cdbd2cSJim Jagielski 
1525*b1cdbd2cSJim Jagielski 	if ( nCount )
1526*b1cdbd2cSJim Jagielski 	{
1527*b1cdbd2cSJim Jagielski 		const rtl::OUString* pNames = aPropertyNames.getConstArray();
1528*b1cdbd2cSJim Jagielski 		const uno::Any* pValues = aValues.getConstArray();
1529*b1cdbd2cSJim Jagielski 
1530*b1cdbd2cSJim Jagielski         const SfxItemPropertyMap* pPropertyMap = pPropSet->getPropertyMap();
1531*b1cdbd2cSJim Jagielski 		for (sal_Int32 i = 0; i < nCount; i++)
1532*b1cdbd2cSJim Jagielski 		{
1533*b1cdbd2cSJim Jagielski             const SfxItemPropertySimpleEntry*  pEntry = pPropertyMap->getByName( pNames[i] );
1534*b1cdbd2cSJim Jagielski 
1535*b1cdbd2cSJim Jagielski             // enhance ODS load performance
1536*b1cdbd2cSJim Jagielski             SetOnePropertyValueWithoutUpdate( pNames[i], pEntry, &pValues[i] );
1537*b1cdbd2cSJim Jagielski 		}
1538*b1cdbd2cSJim Jagielski 
1539*b1cdbd2cSJim Jagielski         // enhance ODS load performance
1540*b1cdbd2cSJim Jagielski         StyleSheetChangedUpdate();
1541*b1cdbd2cSJim Jagielski 	}
1542*b1cdbd2cSJim Jagielski }
1543*b1cdbd2cSJim Jagielski 
getPropertyValues(const uno::Sequence<rtl::OUString> & aPropertyNames)1544*b1cdbd2cSJim Jagielski uno::Sequence<uno::Any> SAL_CALL ScStyleObj::getPropertyValues(
1545*b1cdbd2cSJim Jagielski 									const uno::Sequence< rtl::OUString >& aPropertyNames )
1546*b1cdbd2cSJim Jagielski 								throw (uno::RuntimeException)
1547*b1cdbd2cSJim Jagielski {
1548*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
1549*b1cdbd2cSJim Jagielski 
1550*b1cdbd2cSJim Jagielski 	//!	optimize
1551*b1cdbd2cSJim Jagielski 
1552*b1cdbd2cSJim Jagielski 	sal_Int32 nCount = aPropertyNames.getLength();
1553*b1cdbd2cSJim Jagielski 	uno::Sequence<uno::Any> aSequence( nCount );
1554*b1cdbd2cSJim Jagielski 	if ( nCount )
1555*b1cdbd2cSJim Jagielski 	{
1556*b1cdbd2cSJim Jagielski 		uno::Any* pValues = aSequence.getArray();
1557*b1cdbd2cSJim Jagielski 		for (sal_Int32 i=0; i<nCount; i++)
1558*b1cdbd2cSJim Jagielski 			pValues[i] = getPropertyValue( aPropertyNames[i] );
1559*b1cdbd2cSJim Jagielski 	}
1560*b1cdbd2cSJim Jagielski 	return aSequence;
1561*b1cdbd2cSJim Jagielski }
1562*b1cdbd2cSJim Jagielski 
addPropertiesChangeListener(const uno::Sequence<rtl::OUString> &,const uno::Reference<beans::XPropertiesChangeListener> &)1563*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleObj::addPropertiesChangeListener( const uno::Sequence<rtl::OUString>& /* aPropertyNames */,
1564*b1cdbd2cSJim Jagielski                                     const uno::Reference<beans::XPropertiesChangeListener>& /* xListener */ )
1565*b1cdbd2cSJim Jagielski 								throw (uno::RuntimeException)
1566*b1cdbd2cSJim Jagielski {
1567*b1cdbd2cSJim Jagielski 	// no bound properties
1568*b1cdbd2cSJim Jagielski }
1569*b1cdbd2cSJim Jagielski 
removePropertiesChangeListener(const uno::Reference<beans::XPropertiesChangeListener> &)1570*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleObj::removePropertiesChangeListener(
1571*b1cdbd2cSJim Jagielski                                     const uno::Reference<beans::XPropertiesChangeListener>& /* xListener */ )
1572*b1cdbd2cSJim Jagielski 								throw (uno::RuntimeException)
1573*b1cdbd2cSJim Jagielski {
1574*b1cdbd2cSJim Jagielski 	// no bound properties
1575*b1cdbd2cSJim Jagielski }
1576*b1cdbd2cSJim Jagielski 
firePropertiesChangeEvent(const uno::Sequence<rtl::OUString> &,const uno::Reference<beans::XPropertiesChangeListener> &)1577*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleObj::firePropertiesChangeEvent( const uno::Sequence<rtl::OUString>& /* aPropertyNames */,
1578*b1cdbd2cSJim Jagielski                                     const uno::Reference<beans::XPropertiesChangeListener>& /* xListener */ )
1579*b1cdbd2cSJim Jagielski 								throw (uno::RuntimeException)
1580*b1cdbd2cSJim Jagielski {
1581*b1cdbd2cSJim Jagielski 	// no bound properties
1582*b1cdbd2cSJim Jagielski }
1583*b1cdbd2cSJim Jagielski 
1584*b1cdbd2cSJim Jagielski // XMultiPropertyStates
1585*b1cdbd2cSJim Jagielski // getPropertyStates already defined for XPropertyState
1586*b1cdbd2cSJim Jagielski 
setAllPropertiesToDefault()1587*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleObj::setAllPropertiesToDefault() throw (uno::RuntimeException)
1588*b1cdbd2cSJim Jagielski {
1589*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
1590*b1cdbd2cSJim Jagielski 
1591*b1cdbd2cSJim Jagielski 	SfxStyleSheetBase* pStyle = GetStyle_Impl();
1592*b1cdbd2cSJim Jagielski 	if ( pStyle )
1593*b1cdbd2cSJim Jagielski 	{
1594*b1cdbd2cSJim Jagielski 		//	#70909# cell styles cannot be modified if any sheet is protected
1595*b1cdbd2cSJim Jagielski 		if ( eFamily == SFX_STYLE_FAMILY_PARA && lcl_AnyTabProtected( *pDocShell->GetDocument() ) )
1596*b1cdbd2cSJim Jagielski 			throw uno::RuntimeException();
1597*b1cdbd2cSJim Jagielski 
1598*b1cdbd2cSJim Jagielski 		SfxItemSet& rSet = pStyle->GetItemSet();
1599*b1cdbd2cSJim Jagielski 		rSet.ClearItem();								// set all items to default
1600*b1cdbd2cSJim Jagielski 
1601*b1cdbd2cSJim Jagielski 		//!	merge with SetOneProperty
1602*b1cdbd2cSJim Jagielski 
1603*b1cdbd2cSJim Jagielski 		ScDocument* pDoc = pDocShell->GetDocument();
1604*b1cdbd2cSJim Jagielski 		if ( eFamily == SFX_STYLE_FAMILY_PARA )
1605*b1cdbd2cSJim Jagielski 		{
1606*b1cdbd2cSJim Jagielski 			//	row heights
1607*b1cdbd2cSJim Jagielski 
1608*b1cdbd2cSJim Jagielski 			VirtualDevice aVDev;
1609*b1cdbd2cSJim Jagielski 			Point aLogic = aVDev.LogicToPixel( Point(1000,1000), MAP_TWIP );
1610*b1cdbd2cSJim Jagielski 			double nPPTX = aLogic.X() / 1000.0;
1611*b1cdbd2cSJim Jagielski 			double nPPTY = aLogic.Y() / 1000.0;
1612*b1cdbd2cSJim Jagielski 			Fraction aZoom(1,1);
1613*b1cdbd2cSJim Jagielski 			pDoc->StyleSheetChanged( pStyle, sal_False, &aVDev, nPPTX, nPPTY, aZoom, aZoom );
1614*b1cdbd2cSJim Jagielski 
1615*b1cdbd2cSJim Jagielski 			pDocShell->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID|PAINT_LEFT );
1616*b1cdbd2cSJim Jagielski 			pDocShell->SetDocumentModified();
1617*b1cdbd2cSJim Jagielski 		}
1618*b1cdbd2cSJim Jagielski 		else
1619*b1cdbd2cSJim Jagielski 		{
1620*b1cdbd2cSJim Jagielski             // #i22448# apply the default BoxInfoItem for page styles again
1621*b1cdbd2cSJim Jagielski             // (same content as in ScStyleSheet::GetItemSet, to control the dialog)
1622*b1cdbd2cSJim Jagielski             SvxBoxInfoItem aBoxInfoItem( ATTR_BORDER_INNER );
1623*b1cdbd2cSJim Jagielski             aBoxInfoItem.SetTable( sal_False );
1624*b1cdbd2cSJim Jagielski             aBoxInfoItem.SetDist( sal_True );
1625*b1cdbd2cSJim Jagielski             aBoxInfoItem.SetValid( VALID_DISTANCE, sal_True );
1626*b1cdbd2cSJim Jagielski             rSet.Put( aBoxInfoItem );
1627*b1cdbd2cSJim Jagielski 
1628*b1cdbd2cSJim Jagielski 			pDocShell->PageStyleModified( aStyleName, sal_True );
1629*b1cdbd2cSJim Jagielski 		}
1630*b1cdbd2cSJim Jagielski 	}
1631*b1cdbd2cSJim Jagielski }
1632*b1cdbd2cSJim Jagielski 
setPropertiesToDefault(const uno::Sequence<rtl::OUString> & aPropertyNames)1633*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleObj::setPropertiesToDefault( const uno::Sequence<rtl::OUString>& aPropertyNames )
1634*b1cdbd2cSJim Jagielski 								throw (beans::UnknownPropertyException, uno::RuntimeException)
1635*b1cdbd2cSJim Jagielski {
1636*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
1637*b1cdbd2cSJim Jagielski 
1638*b1cdbd2cSJim Jagielski 	sal_Int32 nCount = aPropertyNames.getLength();
1639*b1cdbd2cSJim Jagielski 	if ( nCount )
1640*b1cdbd2cSJim Jagielski 	{
1641*b1cdbd2cSJim Jagielski 		const rtl::OUString* pNames = aPropertyNames.getConstArray();
1642*b1cdbd2cSJim Jagielski 
1643*b1cdbd2cSJim Jagielski         const SfxItemPropertyMap* pPropertyMap = pPropSet->getPropertyMap();
1644*b1cdbd2cSJim Jagielski 		for (sal_Int32 i = 0; i < nCount; i++)
1645*b1cdbd2cSJim Jagielski 		{
1646*b1cdbd2cSJim Jagielski             const SfxItemPropertySimpleEntry*  pEntry = pPropertyMap->getByName( pNames[i] );
1647*b1cdbd2cSJim Jagielski             SetOnePropertyValue( pNames[i], pEntry, NULL );
1648*b1cdbd2cSJim Jagielski 		}
1649*b1cdbd2cSJim Jagielski 	}
1650*b1cdbd2cSJim Jagielski }
1651*b1cdbd2cSJim Jagielski 
getPropertyDefaults(const uno::Sequence<rtl::OUString> & aPropertyNames)1652*b1cdbd2cSJim Jagielski uno::Sequence<uno::Any> SAL_CALL ScStyleObj::getPropertyDefaults(
1653*b1cdbd2cSJim Jagielski 								const uno::Sequence<rtl::OUString>& aPropertyNames )
1654*b1cdbd2cSJim Jagielski 						throw (beans::UnknownPropertyException, lang::WrappedTargetException,
1655*b1cdbd2cSJim Jagielski 								uno::RuntimeException)
1656*b1cdbd2cSJim Jagielski {
1657*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
1658*b1cdbd2cSJim Jagielski 
1659*b1cdbd2cSJim Jagielski 	//!	optimize
1660*b1cdbd2cSJim Jagielski 
1661*b1cdbd2cSJim Jagielski 	sal_Int32 nCount = aPropertyNames.getLength();
1662*b1cdbd2cSJim Jagielski 	uno::Sequence<uno::Any> aSequence( nCount );
1663*b1cdbd2cSJim Jagielski 	if ( nCount )
1664*b1cdbd2cSJim Jagielski 	{
1665*b1cdbd2cSJim Jagielski 		uno::Any* pValues = aSequence.getArray();
1666*b1cdbd2cSJim Jagielski 		for (sal_Int32 i=0; i<nCount; i++)
1667*b1cdbd2cSJim Jagielski 			pValues[i] = getPropertyDefault( aPropertyNames[i] );
1668*b1cdbd2cSJim Jagielski 	}
1669*b1cdbd2cSJim Jagielski 	return aSequence;
1670*b1cdbd2cSJim Jagielski }
1671*b1cdbd2cSJim Jagielski 
1672*b1cdbd2cSJim Jagielski // beans::XPropertySet
1673*b1cdbd2cSJim Jagielski 
getPropertySetInfo()1674*b1cdbd2cSJim Jagielski uno::Reference<beans::XPropertySetInfo> SAL_CALL ScStyleObj::getPropertySetInfo()
1675*b1cdbd2cSJim Jagielski 														throw(uno::RuntimeException)
1676*b1cdbd2cSJim Jagielski {
1677*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
1678*b1cdbd2cSJim Jagielski 	return pPropSet->getPropertySetInfo();
1679*b1cdbd2cSJim Jagielski }
1680*b1cdbd2cSJim Jagielski 
setPropertyValue(const rtl::OUString & aPropertyName,const uno::Any & aValue)1681*b1cdbd2cSJim Jagielski void SAL_CALL ScStyleObj::setPropertyValue(
1682*b1cdbd2cSJim Jagielski 						const rtl::OUString& aPropertyName, const uno::Any& aValue )
1683*b1cdbd2cSJim Jagielski 				throw(beans::UnknownPropertyException, beans::PropertyVetoException,
1684*b1cdbd2cSJim Jagielski 						lang::IllegalArgumentException, lang::WrappedTargetException,
1685*b1cdbd2cSJim Jagielski 						uno::RuntimeException)
1686*b1cdbd2cSJim Jagielski {
1687*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
1688*b1cdbd2cSJim Jagielski 
1689*b1cdbd2cSJim Jagielski     const SfxItemPropertySimpleEntry*  pEntry = pPropSet->getPropertyMap()->getByName( aPropertyName );
1690*b1cdbd2cSJim Jagielski     if ( !pEntry )
1691*b1cdbd2cSJim Jagielski 		throw beans::UnknownPropertyException();
1692*b1cdbd2cSJim Jagielski 
1693*b1cdbd2cSJim Jagielski     SetOnePropertyValue( aPropertyName, pEntry, &aValue );
1694*b1cdbd2cSJim Jagielski }
1695*b1cdbd2cSJim Jagielski 
SetOnePropertyValue(const::rtl::OUString & rPropertyName,const SfxItemPropertySimpleEntry * pEntry,const uno::Any * pValue)1696*b1cdbd2cSJim Jagielski void ScStyleObj::SetOnePropertyValue( const ::rtl::OUString& rPropertyName, const SfxItemPropertySimpleEntry* pEntry, const uno::Any* pValue )
1697*b1cdbd2cSJim Jagielski 								throw(lang::IllegalArgumentException, uno::RuntimeException)
1698*b1cdbd2cSJim Jagielski {
1699*b1cdbd2cSJim Jagielski     SetOnePropertyValueWithoutUpdate(rPropertyName, pEntry, pValue);
1700*b1cdbd2cSJim Jagielski     StyleSheetChangedUpdate();
1701*b1cdbd2cSJim Jagielski }
1702*b1cdbd2cSJim Jagielski 
SetOnePropertyValueWithoutUpdate(const::rtl::OUString & rPropertyName,const SfxItemPropertySimpleEntry * pEntry,const uno::Any * pValue)1703*b1cdbd2cSJim Jagielski void ScStyleObj::SetOnePropertyValueWithoutUpdate( const ::rtl::OUString& rPropertyName, const SfxItemPropertySimpleEntry* pEntry, const uno::Any* pValue )
1704*b1cdbd2cSJim Jagielski 								throw(lang::IllegalArgumentException, uno::RuntimeException)
1705*b1cdbd2cSJim Jagielski {
1706*b1cdbd2cSJim Jagielski 	SfxStyleSheetBase* pStyle = GetStyle_Impl();
1707*b1cdbd2cSJim Jagielski     if ( pStyle && pEntry )
1708*b1cdbd2cSJim Jagielski 	{
1709*b1cdbd2cSJim Jagielski 		//	#70909# cell styles cannot be modified if any sheet is protected
1710*b1cdbd2cSJim Jagielski 		if ( eFamily == SFX_STYLE_FAMILY_PARA && lcl_AnyTabProtected( *pDocShell->GetDocument() ) )
1711*b1cdbd2cSJim Jagielski 			throw uno::RuntimeException();
1712*b1cdbd2cSJim Jagielski 
1713*b1cdbd2cSJim Jagielski 		SfxItemSet& rSet = pStyle->GetItemSet();	// direkt im lebenden Style aendern...
1714*b1cdbd2cSJim Jagielski 		sal_Bool bDone = sal_False;
1715*b1cdbd2cSJim Jagielski 		if ( eFamily == SFX_STYLE_FAMILY_PAGE )
1716*b1cdbd2cSJim Jagielski 		{
1717*b1cdbd2cSJim Jagielski             if(pEntry->nWID == SC_WID_UNO_HEADERSET)
1718*b1cdbd2cSJim Jagielski             {
1719*b1cdbd2cSJim Jagielski                 const SfxItemPropertySimpleEntry* pHeaderEntry = lcl_GetHeaderStyleMap()->getByName( rPropertyName );
1720*b1cdbd2cSJim Jagielski                 if ( pHeaderEntry ) // only item-wids in header/footer map
1721*b1cdbd2cSJim Jagielski                 {
1722*b1cdbd2cSJim Jagielski                     SvxSetItem aNewHeader( (const SvxSetItem&)rSet.Get(ATTR_PAGE_HEADERSET) );
1723*b1cdbd2cSJim Jagielski                     if (pValue)
1724*b1cdbd2cSJim Jagielski                         pPropSet->setPropertyValue( *pHeaderEntry, *pValue, aNewHeader.GetItemSet() );
1725*b1cdbd2cSJim Jagielski                     else
1726*b1cdbd2cSJim Jagielski                         aNewHeader.GetItemSet().ClearItem( pHeaderEntry->nWID );
1727*b1cdbd2cSJim Jagielski                     rSet.Put( aNewHeader );
1728*b1cdbd2cSJim Jagielski                     bDone = sal_True;
1729*b1cdbd2cSJim Jagielski                 }
1730*b1cdbd2cSJim Jagielski             }
1731*b1cdbd2cSJim Jagielski             else if(pEntry->nWID == SC_WID_UNO_FOOTERSET)
1732*b1cdbd2cSJim Jagielski             {
1733*b1cdbd2cSJim Jagielski                 const SfxItemPropertySimpleEntry* pFooterEntry = lcl_GetFooterStyleMap()->getByName( rPropertyName );
1734*b1cdbd2cSJim Jagielski                 if ( pFooterEntry ) // only item-wids in header/footer map
1735*b1cdbd2cSJim Jagielski 				{
1736*b1cdbd2cSJim Jagielski 					SvxSetItem aNewFooter( (const SvxSetItem&)rSet.Get(ATTR_PAGE_FOOTERSET) );
1737*b1cdbd2cSJim Jagielski 					if (pValue)
1738*b1cdbd2cSJim Jagielski                         pPropSet->setPropertyValue( *pFooterEntry, *pValue, aNewFooter.GetItemSet() );
1739*b1cdbd2cSJim Jagielski 					else
1740*b1cdbd2cSJim Jagielski                         aNewFooter.GetItemSet().ClearItem( pFooterEntry->nWID );
1741*b1cdbd2cSJim Jagielski 					rSet.Put( aNewFooter );
1742*b1cdbd2cSJim Jagielski 					bDone = sal_True;
1743*b1cdbd2cSJim Jagielski 				}
1744*b1cdbd2cSJim Jagielski 			}
1745*b1cdbd2cSJim Jagielski 		}
1746*b1cdbd2cSJim Jagielski 		if (!bDone)
1747*b1cdbd2cSJim Jagielski 		{
1748*b1cdbd2cSJim Jagielski             if ( pEntry )
1749*b1cdbd2cSJim Jagielski             {
1750*b1cdbd2cSJim Jagielski                 if ( IsScItemWid( pEntry->nWID ) )
1751*b1cdbd2cSJim Jagielski 			    {
1752*b1cdbd2cSJim Jagielski 				    if (pValue)
1753*b1cdbd2cSJim Jagielski 				    {
1754*b1cdbd2cSJim Jagielski                         switch ( pEntry->nWID )     // fuer Item-Spezial-Behandlungen
1755*b1cdbd2cSJim Jagielski 					    {
1756*b1cdbd2cSJim Jagielski 						    case ATTR_VALUE_FORMAT:
1757*b1cdbd2cSJim Jagielski 							    {
1758*b1cdbd2cSJim Jagielski 								    // #67847# language for number formats
1759*b1cdbd2cSJim Jagielski 								    SvNumberFormatter* pFormatter =
1760*b1cdbd2cSJim Jagielski 										    pDocShell->GetDocument()->GetFormatTable();
1761*b1cdbd2cSJim Jagielski 								    sal_uInt32 nOldFormat = ((const SfxUInt32Item&)
1762*b1cdbd2cSJim Jagielski 										    rSet.Get( ATTR_VALUE_FORMAT )).GetValue();
1763*b1cdbd2cSJim Jagielski 								    LanguageType eOldLang = ((const SvxLanguageItem&)
1764*b1cdbd2cSJim Jagielski 										    rSet.Get( ATTR_LANGUAGE_FORMAT )).GetLanguage();
1765*b1cdbd2cSJim Jagielski 								    nOldFormat = pFormatter->
1766*b1cdbd2cSJim Jagielski 										    GetFormatForLanguageIfBuiltIn( nOldFormat, eOldLang );
1767*b1cdbd2cSJim Jagielski 
1768*b1cdbd2cSJim Jagielski                                     sal_uInt32 nNewFormat = 0;
1769*b1cdbd2cSJim Jagielski 								    *pValue >>= nNewFormat;
1770*b1cdbd2cSJim Jagielski 								    rSet.Put( SfxUInt32Item( ATTR_VALUE_FORMAT, nNewFormat ) );
1771*b1cdbd2cSJim Jagielski 
1772*b1cdbd2cSJim Jagielski 								    const SvNumberformat* pNewEntry = pFormatter->GetEntry( nNewFormat );
1773*b1cdbd2cSJim Jagielski 								    LanguageType eNewLang =
1774*b1cdbd2cSJim Jagielski 									    pNewEntry ? pNewEntry->GetLanguage() : LANGUAGE_DONTKNOW;
1775*b1cdbd2cSJim Jagielski 								    if ( eNewLang != eOldLang && eNewLang != LANGUAGE_DONTKNOW )
1776*b1cdbd2cSJim Jagielski 									    rSet.Put( SvxLanguageItem( eNewLang, ATTR_LANGUAGE_FORMAT ) );
1777*b1cdbd2cSJim Jagielski 
1778*b1cdbd2cSJim Jagielski 								    //!	keep default state of number format if only language changed?
1779*b1cdbd2cSJim Jagielski 							    }
1780*b1cdbd2cSJim Jagielski 							    break;
1781*b1cdbd2cSJim Jagielski 						    case ATTR_INDENT:
1782*b1cdbd2cSJim Jagielski 							    {
1783*b1cdbd2cSJim Jagielski                                     sal_Int16 nVal = 0;
1784*b1cdbd2cSJim Jagielski 								    *pValue >>= nVal;
1785*b1cdbd2cSJim Jagielski                                     rSet.Put( SfxUInt16Item( pEntry->nWID, (sal_uInt16)HMMToTwips(nVal) ) );
1786*b1cdbd2cSJim Jagielski 							    }
1787*b1cdbd2cSJim Jagielski 							    break;
1788*b1cdbd2cSJim Jagielski 						    case ATTR_ROTATE_VALUE:
1789*b1cdbd2cSJim Jagielski 							    {
1790*b1cdbd2cSJim Jagielski                                     sal_Int32 nRotVal = 0;
1791*b1cdbd2cSJim Jagielski 								    if ( *pValue >>= nRotVal )
1792*b1cdbd2cSJim Jagielski 								    {
1793*b1cdbd2cSJim Jagielski 									    //	stored value is always between 0 and 360 deg.
1794*b1cdbd2cSJim Jagielski 									    nRotVal %= 36000;
1795*b1cdbd2cSJim Jagielski 									    if ( nRotVal < 0 )
1796*b1cdbd2cSJim Jagielski 										    nRotVal += 36000;
1797*b1cdbd2cSJim Jagielski 									    rSet.Put( SfxInt32Item( ATTR_ROTATE_VALUE, nRotVal ) );
1798*b1cdbd2cSJim Jagielski 								    }
1799*b1cdbd2cSJim Jagielski 							    }
1800*b1cdbd2cSJim Jagielski 							    break;
1801*b1cdbd2cSJim Jagielski                             case ATTR_STACKED:
1802*b1cdbd2cSJim Jagielski                                 {
1803*b1cdbd2cSJim Jagielski                                     table::CellOrientation eOrient;
1804*b1cdbd2cSJim Jagielski                                     if( *pValue >>= eOrient )
1805*b1cdbd2cSJim Jagielski                                     {
1806*b1cdbd2cSJim Jagielski                                         switch( eOrient )
1807*b1cdbd2cSJim Jagielski                                         {
1808*b1cdbd2cSJim Jagielski                                             case table::CellOrientation_STANDARD:
1809*b1cdbd2cSJim Jagielski                                                 rSet.Put( SfxBoolItem( ATTR_STACKED, sal_False ) );
1810*b1cdbd2cSJim Jagielski                                             break;
1811*b1cdbd2cSJim Jagielski                                             case table::CellOrientation_TOPBOTTOM:
1812*b1cdbd2cSJim Jagielski                                                 rSet.Put( SfxBoolItem( ATTR_STACKED, sal_False ) );
1813*b1cdbd2cSJim Jagielski                                                 rSet.Put( SfxInt32Item( ATTR_ROTATE_VALUE, 27000 ) );
1814*b1cdbd2cSJim Jagielski                                             break;
1815*b1cdbd2cSJim Jagielski                                             case table::CellOrientation_BOTTOMTOP:
1816*b1cdbd2cSJim Jagielski                                                 rSet.Put( SfxBoolItem( ATTR_STACKED, sal_False ) );
1817*b1cdbd2cSJim Jagielski                                                 rSet.Put( SfxInt32Item( ATTR_ROTATE_VALUE, 9000 ) );
1818*b1cdbd2cSJim Jagielski                                             break;
1819*b1cdbd2cSJim Jagielski                                             case table::CellOrientation_STACKED:
1820*b1cdbd2cSJim Jagielski                                                 rSet.Put( SfxBoolItem( ATTR_STACKED, sal_True ) );
1821*b1cdbd2cSJim Jagielski                                             break;
1822*b1cdbd2cSJim Jagielski                                             default:
1823*b1cdbd2cSJim Jagielski                                             {
1824*b1cdbd2cSJim Jagielski                                                 // added to avoid warnings
1825*b1cdbd2cSJim Jagielski                                             }
1826*b1cdbd2cSJim Jagielski                                         }
1827*b1cdbd2cSJim Jagielski                                     }
1828*b1cdbd2cSJim Jagielski                                 }
1829*b1cdbd2cSJim Jagielski                                 break;
1830*b1cdbd2cSJim Jagielski 						    case ATTR_PAGE_SCALE:
1831*b1cdbd2cSJim Jagielski 						    case ATTR_PAGE_SCALETOPAGES:
1832*b1cdbd2cSJim Jagielski                                 {
1833*b1cdbd2cSJim Jagielski                                     rSet.ClearItem(ATTR_PAGE_SCALETOPAGES);
1834*b1cdbd2cSJim Jagielski                                     rSet.ClearItem(ATTR_PAGE_SCALE);
1835*b1cdbd2cSJim Jagielski                                     rSet.ClearItem(ATTR_PAGE_SCALETO);
1836*b1cdbd2cSJim Jagielski                                     sal_Int16 nVal = 0;
1837*b1cdbd2cSJim Jagielski                                     *pValue >>= nVal;
1838*b1cdbd2cSJim Jagielski                                     rSet.Put( SfxUInt16Item( pEntry->nWID, nVal ) );
1839*b1cdbd2cSJim Jagielski                                 }
1840*b1cdbd2cSJim Jagielski                                 break;
1841*b1cdbd2cSJim Jagielski 						    case ATTR_PAGE_FIRSTPAGENO:
1842*b1cdbd2cSJim Jagielski 							    {
1843*b1cdbd2cSJim Jagielski                                     sal_Int16 nVal = 0;
1844*b1cdbd2cSJim Jagielski 								    *pValue >>= nVal;
1845*b1cdbd2cSJim Jagielski                                     rSet.Put( SfxUInt16Item( ATTR_PAGE_FIRSTPAGENO, nVal ) );
1846*b1cdbd2cSJim Jagielski 							    }
1847*b1cdbd2cSJim Jagielski 							    break;
1848*b1cdbd2cSJim Jagielski 						    case ATTR_PAGE_CHARTS:
1849*b1cdbd2cSJim Jagielski 						    case ATTR_PAGE_OBJECTS:
1850*b1cdbd2cSJim Jagielski 						    case ATTR_PAGE_DRAWINGS:
1851*b1cdbd2cSJim Jagielski 							    {
1852*b1cdbd2cSJim Jagielski                                     sal_Bool bBool = sal_False;
1853*b1cdbd2cSJim Jagielski 								    *pValue >>= bBool;
1854*b1cdbd2cSJim Jagielski 								    //!	sal_Bool-MID fuer ScViewObjectModeItem definieren?
1855*b1cdbd2cSJim Jagielski                                     rSet.Put( ScViewObjectModeItem( pEntry->nWID,
1856*b1cdbd2cSJim Jagielski 									    bBool ? VOBJ_MODE_SHOW : VOBJ_MODE_HIDE ) );
1857*b1cdbd2cSJim Jagielski 							    }
1858*b1cdbd2cSJim Jagielski 							    break;
1859*b1cdbd2cSJim Jagielski 						    case ATTR_PAGE_PAPERBIN:
1860*b1cdbd2cSJim Jagielski 							    {
1861*b1cdbd2cSJim Jagielski 								    sal_uInt8 nTray = PAPERBIN_PRINTER_SETTINGS;
1862*b1cdbd2cSJim Jagielski 								    sal_Bool bFound = sal_False;
1863*b1cdbd2cSJim Jagielski 
1864*b1cdbd2cSJim Jagielski 								    rtl::OUString aName;
1865*b1cdbd2cSJim Jagielski 								    if ( *pValue >>= aName )
1866*b1cdbd2cSJim Jagielski 								    {
1867*b1cdbd2cSJim Jagielski 									    if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( SC_PAPERBIN_DEFAULTNAME ) ) )
1868*b1cdbd2cSJim Jagielski 										    bFound = sal_True;
1869*b1cdbd2cSJim Jagielski 									    else
1870*b1cdbd2cSJim Jagielski 									    {
1871*b1cdbd2cSJim Jagielski 										    Printer* pPrinter = pDocShell->GetPrinter();
1872*b1cdbd2cSJim Jagielski 										    if (pPrinter)
1873*b1cdbd2cSJim Jagielski 										    {
1874*b1cdbd2cSJim Jagielski 											    String aNameStr = aName;
1875*b1cdbd2cSJim Jagielski 											    sal_uInt16 nCount = pPrinter->GetPaperBinCount();
1876*b1cdbd2cSJim Jagielski 											    for (sal_uInt16 i=0; i<nCount; i++)
1877*b1cdbd2cSJim Jagielski 												    if ( aNameStr == pPrinter->GetPaperBinName(i) )
1878*b1cdbd2cSJim Jagielski 												    {
1879*b1cdbd2cSJim Jagielski 													    nTray = (sal_uInt8) i;
1880*b1cdbd2cSJim Jagielski 													    bFound = sal_True;
1881*b1cdbd2cSJim Jagielski 													    break;
1882*b1cdbd2cSJim Jagielski 												    }
1883*b1cdbd2cSJim Jagielski 										    }
1884*b1cdbd2cSJim Jagielski 									    }
1885*b1cdbd2cSJim Jagielski 								    }
1886*b1cdbd2cSJim Jagielski 								    if ( bFound )
1887*b1cdbd2cSJim Jagielski 									    rSet.Put( SvxPaperBinItem( ATTR_PAGE_PAPERBIN, nTray ) );
1888*b1cdbd2cSJim Jagielski 								    else
1889*b1cdbd2cSJim Jagielski 									    throw lang::IllegalArgumentException();
1890*b1cdbd2cSJim Jagielski 							    }
1891*b1cdbd2cSJim Jagielski 							    break;
1892*b1cdbd2cSJim Jagielski                             case ATTR_PAGE_SCALETO:
1893*b1cdbd2cSJim Jagielski                                 {
1894*b1cdbd2cSJim Jagielski                                     sal_Int16 nPages = 0;
1895*b1cdbd2cSJim Jagielski                                     if (*pValue >>= nPages)
1896*b1cdbd2cSJim Jagielski                                     {
1897*b1cdbd2cSJim Jagielski                                         ScPageScaleToItem aItem = ((const ScPageScaleToItem&)rSet.Get(ATTR_PAGE_SCALETO));
1898*b1cdbd2cSJim Jagielski                                         if ( rPropertyName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( SC_UNO_PAGE_SCALETOX)))
1899*b1cdbd2cSJim Jagielski                                             aItem.SetWidth(static_cast<sal_uInt16>(nPages));
1900*b1cdbd2cSJim Jagielski                                         else
1901*b1cdbd2cSJim Jagielski                                             aItem.SetHeight(static_cast<sal_uInt16>(nPages));
1902*b1cdbd2cSJim Jagielski                                         rSet.Put( aItem );
1903*b1cdbd2cSJim Jagielski                                         rSet.ClearItem(ATTR_PAGE_SCALETOPAGES);
1904*b1cdbd2cSJim Jagielski                                         rSet.ClearItem(ATTR_PAGE_SCALE);
1905*b1cdbd2cSJim Jagielski                                     }
1906*b1cdbd2cSJim Jagielski                                 }
1907*b1cdbd2cSJim Jagielski                                 break;
1908*b1cdbd2cSJim Jagielski 						    default:
1909*b1cdbd2cSJim Jagielski 							    //	#65253# Default-Items mit falscher Slot-ID
1910*b1cdbd2cSJim Jagielski 							    //	funktionieren im SfxItemPropertySet3 nicht
1911*b1cdbd2cSJim Jagielski 							    //!	Slot-IDs aendern...
1912*b1cdbd2cSJim Jagielski                                 if ( rSet.GetPool()->GetSlotId(pEntry->nWID) == pEntry->nWID &&
1913*b1cdbd2cSJim Jagielski                                      rSet.GetItemState(pEntry->nWID, sal_False) == SFX_ITEM_DEFAULT )
1914*b1cdbd2cSJim Jagielski 							    {
1915*b1cdbd2cSJim Jagielski                                     rSet.Put( rSet.Get(pEntry->nWID) );
1916*b1cdbd2cSJim Jagielski 							    }
1917*b1cdbd2cSJim Jagielski                                 pPropSet->setPropertyValue( *pEntry, *pValue, rSet );
1918*b1cdbd2cSJim Jagielski 					    }
1919*b1cdbd2cSJim Jagielski 				    }
1920*b1cdbd2cSJim Jagielski 				    else
1921*b1cdbd2cSJim Jagielski 				    {
1922*b1cdbd2cSJim Jagielski                         rSet.ClearItem( pEntry->nWID );
1923*b1cdbd2cSJim Jagielski 					    // #67847# language for number formats
1924*b1cdbd2cSJim Jagielski                         if ( pEntry->nWID == ATTR_VALUE_FORMAT )
1925*b1cdbd2cSJim Jagielski 						    rSet.ClearItem( ATTR_LANGUAGE_FORMAT );
1926*b1cdbd2cSJim Jagielski 
1927*b1cdbd2cSJim Jagielski 					    //!	for ATTR_ROTATE_VALUE, also reset ATTR_ORIENTATION?
1928*b1cdbd2cSJim Jagielski 				    }
1929*b1cdbd2cSJim Jagielski 			    }
1930*b1cdbd2cSJim Jagielski                 else if ( IsScUnoWid( pEntry->nWID ) )
1931*b1cdbd2cSJim Jagielski                 {
1932*b1cdbd2cSJim Jagielski                     switch ( pEntry->nWID )
1933*b1cdbd2cSJim Jagielski                     {
1934*b1cdbd2cSJim Jagielski                         case SC_WID_UNO_TBLBORD:
1935*b1cdbd2cSJim Jagielski                             {
1936*b1cdbd2cSJim Jagielski                                 if (pValue)
1937*b1cdbd2cSJim Jagielski                                 {
1938*b1cdbd2cSJim Jagielski                                     table::TableBorder aBorder;
1939*b1cdbd2cSJim Jagielski                                     if ( *pValue >>= aBorder )
1940*b1cdbd2cSJim Jagielski                                     {
1941*b1cdbd2cSJim Jagielski                                         SvxBoxItem aOuter( ATTR_BORDER );
1942*b1cdbd2cSJim Jagielski                                         SvxBoxInfoItem aInner( ATTR_BORDER_INNER );
1943*b1cdbd2cSJim Jagielski                                         ScHelperFunctions::FillBoxItems( aOuter, aInner, aBorder );
1944*b1cdbd2cSJim Jagielski                                         rSet.Put( aOuter );
1945*b1cdbd2cSJim Jagielski                                     }
1946*b1cdbd2cSJim Jagielski                                 }
1947*b1cdbd2cSJim Jagielski                                 else
1948*b1cdbd2cSJim Jagielski                                 {
1949*b1cdbd2cSJim Jagielski                                     rSet.ClearItem( ATTR_BORDER );
1950*b1cdbd2cSJim Jagielski                                 }
1951*b1cdbd2cSJim Jagielski                             }
1952*b1cdbd2cSJim Jagielski                             break;
1953*b1cdbd2cSJim Jagielski                     }
1954*b1cdbd2cSJim Jagielski                 }
1955*b1cdbd2cSJim Jagielski             }
1956*b1cdbd2cSJim Jagielski 		}
1957*b1cdbd2cSJim Jagielski 
1958*b1cdbd2cSJim Jagielski         if(SFX_STYLE_FAMILY_PARA != eFamily)
1959*b1cdbd2cSJim Jagielski         {
1960*b1cdbd2cSJim Jagielski             //!	ModifyStyleSheet am Dokument (alte Werte merken)
1961*b1cdbd2cSJim Jagielski 
1962*b1cdbd2cSJim Jagielski             pDocShell->PageStyleModified( aStyleName, sal_True );
1963*b1cdbd2cSJim Jagielski 		}
1964*b1cdbd2cSJim Jagielski 	}
1965*b1cdbd2cSJim Jagielski }
1966*b1cdbd2cSJim Jagielski 
StyleSheetChangedUpdate()1967*b1cdbd2cSJim Jagielski bool ScStyleObj::StyleSheetChangedUpdate()
1968*b1cdbd2cSJim Jagielski {
1969*b1cdbd2cSJim Jagielski     SfxStyleSheetBase* pStyle = GetStyle_Impl();
1970*b1cdbd2cSJim Jagielski 
1971*b1cdbd2cSJim Jagielski     if(pStyle)
1972*b1cdbd2cSJim Jagielski     {
1973*b1cdbd2cSJim Jagielski         //!	DocFunc-Funktion??
1974*b1cdbd2cSJim Jagielski         //!	Undo ?????????????
1975*b1cdbd2cSJim Jagielski 
1976*b1cdbd2cSJim Jagielski         if(SFX_STYLE_FAMILY_PARA == eFamily)
1977*b1cdbd2cSJim Jagielski         {
1978*b1cdbd2cSJim Jagielski             // adapt line heights
1979*b1cdbd2cSJim Jagielski             VirtualDevice aVDev;
1980*b1cdbd2cSJim Jagielski             const Point aLogic(aVDev.LogicToPixel(Point(1000,1000), MAP_TWIP));
1981*b1cdbd2cSJim Jagielski             const double nPPTX(aLogic.X() / 1000.0);
1982*b1cdbd2cSJim Jagielski             const double nPPTY(aLogic.Y() / 1000.0);
1983*b1cdbd2cSJim Jagielski             const Fraction aZoom(1,1);
1984*b1cdbd2cSJim Jagielski             ScDocument* pDoc = pDocShell->GetDocument();
1985*b1cdbd2cSJim Jagielski 
1986*b1cdbd2cSJim Jagielski             pDoc->StyleSheetChanged(pStyle, sal_False, &aVDev, nPPTX, nPPTY, aZoom, aZoom);
1987*b1cdbd2cSJim Jagielski             pDocShell->PostPaint(0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID|PAINT_LEFT);
1988*b1cdbd2cSJim Jagielski             pDocShell->SetDocumentModified();
1989*b1cdbd2cSJim Jagielski         }
1990*b1cdbd2cSJim Jagielski 
1991*b1cdbd2cSJim Jagielski         return true;
1992*b1cdbd2cSJim Jagielski     }
1993*b1cdbd2cSJim Jagielski 
1994*b1cdbd2cSJim Jagielski     return false;
1995*b1cdbd2cSJim Jagielski }
1996*b1cdbd2cSJim Jagielski 
getPropertyValue(const rtl::OUString & aPropertyName)1997*b1cdbd2cSJim Jagielski uno::Any SAL_CALL ScStyleObj::getPropertyValue( const rtl::OUString& aPropertyName )
1998*b1cdbd2cSJim Jagielski 				throw(beans::UnknownPropertyException, lang::WrappedTargetException,
1999*b1cdbd2cSJim Jagielski 						uno::RuntimeException)
2000*b1cdbd2cSJim Jagielski {
2001*b1cdbd2cSJim Jagielski 	ScUnoGuard aGuard;
2002*b1cdbd2cSJim Jagielski 	uno::Any aAny;
2003*b1cdbd2cSJim Jagielski 
2004*b1cdbd2cSJim Jagielski     if ( aPropertyName.equalsAscii( SC_UNONAME_DISPNAME ) )      // read-only
2005*b1cdbd2cSJim Jagielski     {
2006*b1cdbd2cSJim Jagielski         //  core always has the display name
2007*b1cdbd2cSJim Jagielski         SfxStyleSheetBase* pStyle = GetStyle_Impl();
2008*b1cdbd2cSJim Jagielski         if (pStyle)
2009*b1cdbd2cSJim Jagielski             aAny <<= rtl::OUString( pStyle->GetName() );
2010*b1cdbd2cSJim Jagielski     }
2011*b1cdbd2cSJim Jagielski     else
2012*b1cdbd2cSJim Jagielski     {
2013*b1cdbd2cSJim Jagielski         const SfxItemPropertySimpleEntry* pResultEntry = NULL;
2014*b1cdbd2cSJim Jagielski         const SfxItemSet* pItemSet = GetStyleItemSet_Impl( aPropertyName, pResultEntry );
2015*b1cdbd2cSJim Jagielski 
2016*b1cdbd2cSJim Jagielski         if ( pItemSet && pResultEntry )
2017*b1cdbd2cSJim Jagielski         {
2018*b1cdbd2cSJim Jagielski             sal_uInt16 nWhich = pResultEntry->nWID;
2019*b1cdbd2cSJim Jagielski 
2020*b1cdbd2cSJim Jagielski             if ( IsScItemWid( nWhich ) )
2021*b1cdbd2cSJim Jagielski             {
2022*b1cdbd2cSJim Jagielski                 switch ( nWhich )       // fuer Item-Spezial-Behandlungen
2023*b1cdbd2cSJim Jagielski                 {
2024*b1cdbd2cSJim Jagielski                     case ATTR_VALUE_FORMAT:
2025*b1cdbd2cSJim Jagielski                         if ( pDocShell )
2026*b1cdbd2cSJim Jagielski                         {
2027*b1cdbd2cSJim Jagielski                             sal_uInt32 nOldFormat = ((const SfxUInt32Item&)
2028*b1cdbd2cSJim Jagielski                                     pItemSet->Get( ATTR_VALUE_FORMAT )).GetValue();
2029*b1cdbd2cSJim Jagielski                             LanguageType eOldLang = ((const SvxLanguageItem&)
2030*b1cdbd2cSJim Jagielski                                     pItemSet->Get( ATTR_LANGUAGE_FORMAT )).GetLanguage();
2031*b1cdbd2cSJim Jagielski                             nOldFormat = pDocShell->GetDocument()->GetFormatTable()->
2032*b1cdbd2cSJim Jagielski                                     GetFormatForLanguageIfBuiltIn( nOldFormat, eOldLang );
2033*b1cdbd2cSJim Jagielski                             aAny <<= nOldFormat;
2034*b1cdbd2cSJim Jagielski                         }
2035*b1cdbd2cSJim Jagielski                         break;
2036*b1cdbd2cSJim Jagielski                     case ATTR_INDENT:
2037*b1cdbd2cSJim Jagielski                         aAny <<= sal_Int16( TwipsToHMM(((const SfxUInt16Item&)
2038*b1cdbd2cSJim Jagielski                                         pItemSet->Get(nWhich)).GetValue()) );
2039*b1cdbd2cSJim Jagielski                         break;
2040*b1cdbd2cSJim Jagielski                     case ATTR_STACKED:
2041*b1cdbd2cSJim Jagielski                         {
2042*b1cdbd2cSJim Jagielski                             sal_Int32 nRot = ((const SfxInt32Item&)pItemSet->Get(ATTR_ROTATE_VALUE)).GetValue();
2043*b1cdbd2cSJim Jagielski                             sal_Bool bStacked = ((const SfxBoolItem&)pItemSet->Get(nWhich)).GetValue();
2044*b1cdbd2cSJim Jagielski                             SvxOrientationItem( nRot, bStacked, 0 ).QueryValue( aAny );
2045*b1cdbd2cSJim Jagielski                         }
2046*b1cdbd2cSJim Jagielski                         break;
2047*b1cdbd2cSJim Jagielski                     case ATTR_PAGE_SCALE:
2048*b1cdbd2cSJim Jagielski                     case ATTR_PAGE_SCALETOPAGES:
2049*b1cdbd2cSJim Jagielski                     case ATTR_PAGE_FIRSTPAGENO:
2050*b1cdbd2cSJim Jagielski                         aAny <<= sal_Int16( ((const SfxUInt16Item&)pItemSet->Get(nWhich)).GetValue() );
2051*b1cdbd2cSJim Jagielski                         break;
2052*b1cdbd2cSJim Jagielski                     case ATTR_PAGE_CHARTS:
2053*b1cdbd2cSJim Jagielski                     case ATTR_PAGE_OBJECTS:
2054*b1cdbd2cSJim Jagielski                     case ATTR_PAGE_DRAWINGS:
2055*b1cdbd2cSJim Jagielski                         //! sal_Bool-MID fuer ScViewObjectModeItem definieren?
2056*b1cdbd2cSJim Jagielski                         aAny <<= sal_Bool( ((const ScViewObjectModeItem&)pItemSet->
2057*b1cdbd2cSJim Jagielski                                         Get(nWhich)).GetValue() == VOBJ_MODE_SHOW );
2058*b1cdbd2cSJim Jagielski                         break;
2059*b1cdbd2cSJim Jagielski                     case ATTR_PAGE_PAPERBIN:
2060*b1cdbd2cSJim Jagielski                         {
2061*b1cdbd2cSJim Jagielski                             // property PrinterPaperTray is the name of the tray
2062*b1cdbd2cSJim Jagielski 
2063*b1cdbd2cSJim Jagielski                             sal_uInt8 nValue = ((const SvxPaperBinItem&)pItemSet->Get(nWhich)).GetValue();
2064*b1cdbd2cSJim Jagielski                             rtl::OUString aName;
2065*b1cdbd2cSJim Jagielski                             if ( nValue == PAPERBIN_PRINTER_SETTINGS )
2066*b1cdbd2cSJim Jagielski                                 aName = rtl::OUString::createFromAscii( SC_PAPERBIN_DEFAULTNAME );
2067*b1cdbd2cSJim Jagielski                             else
2068*b1cdbd2cSJim Jagielski                             {
2069*b1cdbd2cSJim Jagielski                                 Printer* pPrinter = pDocShell->GetPrinter();
2070*b1cdbd2cSJim Jagielski                                 if (pPrinter)
2071*b1cdbd2cSJim Jagielski                                     aName = pPrinter->GetPaperBinName( nValue );
2072*b1cdbd2cSJim Jagielski                             }
2073*b1cdbd2cSJim Jagielski                             aAny <<= aName;
2074*b1cdbd2cSJim Jagielski                         }
2075*b1cdbd2cSJim Jagielski                         break;
2076*b1cdbd2cSJim Jagielski                     case ATTR_PAGE_SCALETO:
2077*b1cdbd2cSJim Jagielski                         {
2078*b1cdbd2cSJim Jagielski                             ScPageScaleToItem aItem((const ScPageScaleToItem&)pItemSet->Get(ATTR_PAGE_SCALETO));
2079*b1cdbd2cSJim Jagielski                             if (aPropertyName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( SC_UNO_PAGE_SCALETOX)))
2080*b1cdbd2cSJim Jagielski                                 aAny = uno::makeAny(static_cast<sal_Int16>(aItem.GetWidth()));
2081*b1cdbd2cSJim Jagielski                             else
2082*b1cdbd2cSJim Jagielski                                 aAny = uno::makeAny(static_cast<sal_Int16>(aItem.GetHeight()));
2083*b1cdbd2cSJim Jagielski                         }
2084*b1cdbd2cSJim Jagielski                         break;
2085*b1cdbd2cSJim Jagielski                     default:
2086*b1cdbd2cSJim Jagielski                         //  #65253# Default-Items mit falscher Slot-ID
2087*b1cdbd2cSJim Jagielski                         //  funktionieren im SfxItemPropertySet3 nicht
2088*b1cdbd2cSJim Jagielski                         //! Slot-IDs aendern...
2089*b1cdbd2cSJim Jagielski                         if ( pItemSet->GetPool()->GetSlotId(nWhich) == nWhich &&
2090*b1cdbd2cSJim Jagielski                              pItemSet->GetItemState(nWhich, sal_False) == SFX_ITEM_DEFAULT )
2091*b1cdbd2cSJim Jagielski                         {
2092*b1cdbd2cSJim Jagielski                             SfxItemSet aNoEmptySet( *pItemSet );
2093*b1cdbd2cSJim Jagielski                             aNoEmptySet.Put( aNoEmptySet.Get( nWhich ) );
2094*b1cdbd2cSJim Jagielski                             pPropSet->getPropertyValue( *pResultEntry, aNoEmptySet, aAny );
2095*b1cdbd2cSJim Jagielski                         }
2096*b1cdbd2cSJim Jagielski                         else
2097*b1cdbd2cSJim Jagielski                             pPropSet->getPropertyValue( *pResultEntry, *pItemSet, aAny );
2098*b1cdbd2cSJim Jagielski                 }
2099*b1cdbd2cSJim Jagielski             }
2100*b1cdbd2cSJim Jagielski             else if ( IsScUnoWid( nWhich ) )
2101*b1cdbd2cSJim Jagielski             {
2102*b1cdbd2cSJim Jagielski                 switch ( nWhich )
2103*b1cdbd2cSJim Jagielski                 {
2104*b1cdbd2cSJim Jagielski                     case SC_WID_UNO_TBLBORD:
2105*b1cdbd2cSJim Jagielski                         {
2106*b1cdbd2cSJim Jagielski                             const SfxPoolItem* pItem = &pItemSet->Get( ATTR_BORDER );
2107*b1cdbd2cSJim Jagielski                             if ( pItem )
2108*b1cdbd2cSJim Jagielski                             {
2109*b1cdbd2cSJim Jagielski                                 SvxBoxItem aOuter( *( static_cast<const SvxBoxItem*>( pItem ) ) );
2110*b1cdbd2cSJim Jagielski                                 SvxBoxInfoItem aInner( ATTR_BORDER_INNER );
2111*b1cdbd2cSJim Jagielski                                 table::TableBorder aBorder;
2112*b1cdbd2cSJim Jagielski                                 ScHelperFunctions::FillTableBorder( aBorder, aOuter, aInner );
2113*b1cdbd2cSJim Jagielski                                 aBorder.IsHorizontalLineValid = sal_False;
2114*b1cdbd2cSJim Jagielski                                 aBorder.IsVerticalLineValid = sal_False;
2115*b1cdbd2cSJim Jagielski                                 aBorder.IsDistanceValid = sal_False;
2116*b1cdbd2cSJim Jagielski                                 aAny <<= aBorder;
2117*b1cdbd2cSJim Jagielski                             }
2118*b1cdbd2cSJim Jagielski                         }
2119*b1cdbd2cSJim Jagielski                         break;
2120*b1cdbd2cSJim Jagielski                 }
2121*b1cdbd2cSJim Jagielski             }
2122*b1cdbd2cSJim Jagielski         }
2123*b1cdbd2cSJim Jagielski     }
2124*b1cdbd2cSJim Jagielski 
2125*b1cdbd2cSJim Jagielski 	return aAny;
2126*b1cdbd2cSJim Jagielski }
2127*b1cdbd2cSJim Jagielski 
SC_IMPL_DUMMY_PROPERTY_LISTENER(ScStyleObj)2128*b1cdbd2cSJim Jagielski SC_IMPL_DUMMY_PROPERTY_LISTENER( ScStyleObj )
2129*b1cdbd2cSJim Jagielski 
2130*b1cdbd2cSJim Jagielski // lang::XServiceInfo
2131*b1cdbd2cSJim Jagielski 
2132*b1cdbd2cSJim Jagielski rtl::OUString SAL_CALL ScStyleObj::getImplementationName() throw(uno::RuntimeException)
2133*b1cdbd2cSJim Jagielski {
2134*b1cdbd2cSJim Jagielski 	return rtl::OUString::createFromAscii( "ScStyleObj" );
2135*b1cdbd2cSJim Jagielski }
2136*b1cdbd2cSJim Jagielski 
supportsService(const rtl::OUString & rServiceName)2137*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL ScStyleObj::supportsService( const rtl::OUString& rServiceName )
2138*b1cdbd2cSJim Jagielski 													throw(uno::RuntimeException)
2139*b1cdbd2cSJim Jagielski {
2140*b1cdbd2cSJim Jagielski 	sal_Bool bPage = ( eFamily == SFX_STYLE_FAMILY_PAGE );
2141*b1cdbd2cSJim Jagielski     return rServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( SCSTYLE_SERVICE ) )||
2142*b1cdbd2cSJim Jagielski            rServiceName.equalsAsciiL(
2143*b1cdbd2cSJim Jagielski             RTL_CONSTASCII_STRINGPARAM ( bPage ? SCPAGESTYLE_SERVICE : SCCELLSTYLE_SERVICE ));
2144*b1cdbd2cSJim Jagielski }
2145*b1cdbd2cSJim Jagielski 
getSupportedServiceNames()2146*b1cdbd2cSJim Jagielski uno::Sequence<rtl::OUString> SAL_CALL ScStyleObj::getSupportedServiceNames()
2147*b1cdbd2cSJim Jagielski 													throw(uno::RuntimeException)
2148*b1cdbd2cSJim Jagielski {
2149*b1cdbd2cSJim Jagielski 	sal_Bool bPage = ( eFamily == SFX_STYLE_FAMILY_PAGE );
2150*b1cdbd2cSJim Jagielski 	uno::Sequence<rtl::OUString> aRet(2);
2151*b1cdbd2cSJim Jagielski 	rtl::OUString* pArray = aRet.getArray();
2152*b1cdbd2cSJim Jagielski 	pArray[0] = rtl::OUString::createFromAscii( SCSTYLE_SERVICE );
2153*b1cdbd2cSJim Jagielski 	pArray[1] = rtl::OUString::createFromAscii( bPage ? SCPAGESTYLE_SERVICE
2154*b1cdbd2cSJim Jagielski 													  : SCCELLSTYLE_SERVICE );
2155*b1cdbd2cSJim Jagielski 	return aRet;
2156*b1cdbd2cSJim Jagielski }
2157*b1cdbd2cSJim Jagielski 
2158*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
2159*b1cdbd2cSJim Jagielski 
2160*b1cdbd2cSJim Jagielski 
2161