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 <tools/debug.hxx>
32*b1cdbd2cSJim Jagielski #include <tools/shl.hxx>
33*b1cdbd2cSJim Jagielski #include <svl/poolitem.hxx>
34*b1cdbd2cSJim Jagielski #include <svx/unomid.hxx>
35*b1cdbd2cSJim Jagielski #include "unowids.hxx"
36*b1cdbd2cSJim Jagielski #include <rtl/uuid.h>
37*b1cdbd2cSJim Jagielski #include <com/sun/star/table/BorderLine.hpp>
38*b1cdbd2cSJim Jagielski #include <com/sun/star/table/CellVertJustify.hpp>
39*b1cdbd2cSJim Jagielski #include <com/sun/star/table/ShadowLocation.hpp>
40*b1cdbd2cSJim Jagielski #include <com/sun/star/table/TableBorder.hpp>
41*b1cdbd2cSJim Jagielski #include <com/sun/star/table/ShadowFormat.hpp>
42*b1cdbd2cSJim Jagielski #include <com/sun/star/table/CellRangeAddress.hpp>
43*b1cdbd2cSJim Jagielski #include <com/sun/star/table/CellContentType.hpp>
44*b1cdbd2cSJim Jagielski #include <com/sun/star/table/TableOrientation.hpp>
45*b1cdbd2cSJim Jagielski #include <com/sun/star/table/CellHoriJustify.hpp>
46*b1cdbd2cSJim Jagielski #include <com/sun/star/util/SortField.hpp>
47*b1cdbd2cSJim Jagielski #include <com/sun/star/util/SortFieldType.hpp>
48*b1cdbd2cSJim Jagielski #include <com/sun/star/table/CellOrientation.hpp>
49*b1cdbd2cSJim Jagielski #include <com/sun/star/table/CellAddress.hpp>
50*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/SimpleFontMetric.hpp>
51*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/FontWeight.hpp>
52*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/FontSlant.hpp>
53*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/CharSet.hpp>
54*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/FontDescriptor.hpp>
55*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/FontWidth.hpp>
56*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/XFont.hpp>
57*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/FontType.hpp>
58*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/FontUnderline.hpp>
59*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/FontStrikeout.hpp>
60*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/FontFamily.hpp>
61*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/FontPitch.hpp>
62*b1cdbd2cSJim Jagielski
63*b1cdbd2cSJim Jagielski #include "afmtuno.hxx"
64*b1cdbd2cSJim Jagielski #include "miscuno.hxx"
65*b1cdbd2cSJim Jagielski #include "autoform.hxx"
66*b1cdbd2cSJim Jagielski #include "unoguard.hxx"
67*b1cdbd2cSJim Jagielski #include "scdll.hxx"
68*b1cdbd2cSJim Jagielski #include "unonames.hxx"
69*b1cdbd2cSJim Jagielski #include "cellsuno.hxx"
70*b1cdbd2cSJim Jagielski
71*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
72*b1cdbd2cSJim Jagielski
73*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
74*b1cdbd2cSJim Jagielski
75*b1cdbd2cSJim Jagielski // ein AutoFormat hat immer 16 Eintraege
76*b1cdbd2cSJim Jagielski #define SC_AF_FIELD_COUNT 16
77*b1cdbd2cSJim Jagielski
78*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
79*b1cdbd2cSJim Jagielski
80*b1cdbd2cSJim Jagielski // AutoFormat-Map nur fuer PropertySetInfo, ohne Which-IDs
81*b1cdbd2cSJim Jagielski
lcl_GetAutoFormatMap()82*b1cdbd2cSJim Jagielski const SfxItemPropertyMapEntry* lcl_GetAutoFormatMap()
83*b1cdbd2cSJim Jagielski {
84*b1cdbd2cSJim Jagielski static SfxItemPropertyMapEntry aAutoFormatMap_Impl[] =
85*b1cdbd2cSJim Jagielski {
86*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_INCBACK), 0, &::getBooleanCppuType(), 0, 0 },
87*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_INCBORD), 0, &::getBooleanCppuType(), 0, 0 },
88*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_INCFONT), 0, &::getBooleanCppuType(), 0, 0 },
89*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_INCJUST), 0, &::getBooleanCppuType(), 0, 0 },
90*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_INCNUM), 0, &::getBooleanCppuType(), 0, 0 },
91*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_INCWIDTH), 0, &::getBooleanCppuType(), 0, 0 },
92*b1cdbd2cSJim Jagielski {0,0,0,0,0,0}
93*b1cdbd2cSJim Jagielski };
94*b1cdbd2cSJim Jagielski return aAutoFormatMap_Impl;
95*b1cdbd2cSJim Jagielski }
96*b1cdbd2cSJim Jagielski
97*b1cdbd2cSJim Jagielski //! Zahlformat (String/Language) ??? (in XNumberFormat nur ReadOnly)
98*b1cdbd2cSJim Jagielski //! table::TableBorder ??!?
99*b1cdbd2cSJim Jagielski
lcl_GetAutoFieldMap()100*b1cdbd2cSJim Jagielski const SfxItemPropertyMapEntry* lcl_GetAutoFieldMap()
101*b1cdbd2cSJim Jagielski {
102*b1cdbd2cSJim Jagielski static SfxItemPropertyMapEntry aAutoFieldMap_Impl[] =
103*b1cdbd2cSJim Jagielski {
104*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_CELLBACK), ATTR_BACKGROUND, &::getCppuType((const sal_Int32*)0), 0, MID_BACK_COLOR },
105*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_CCOLOR), ATTR_FONT_COLOR, &::getCppuType((const sal_Int32*)0), 0, 0 },
106*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_COUTL), ATTR_FONT_CONTOUR, &::getBooleanCppuType(), 0, 0 },
107*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_CCROSS), ATTR_FONT_CROSSEDOUT, &::getBooleanCppuType(), 0, MID_CROSSED_OUT },
108*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_CFONT), ATTR_FONT, &::getCppuType((const sal_Int16*)0), 0, MID_FONT_FAMILY },
109*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_CFCHARS), ATTR_FONT, &::getCppuType((sal_Int16*)0), 0, MID_FONT_CHAR_SET },
110*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNO_CJK_CFCHARS), ATTR_CJK_FONT, &::getCppuType((sal_Int16*)0), 0, MID_FONT_CHAR_SET },
111*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNO_CTL_CFCHARS), ATTR_CTL_FONT, &::getCppuType((sal_Int16*)0), 0, MID_FONT_CHAR_SET },
112*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_CFFAMIL), ATTR_FONT, &::getCppuType((sal_Int16*)0), 0, MID_FONT_FAMILY },
113*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNO_CJK_CFFAMIL), ATTR_CJK_FONT, &::getCppuType((sal_Int16*)0), 0, MID_FONT_FAMILY },
114*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNO_CTL_CFFAMIL), ATTR_CTL_FONT, &::getCppuType((sal_Int16*)0), 0, MID_FONT_FAMILY },
115*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_CFNAME), ATTR_FONT, &::getCppuType((rtl::OUString*)0), 0, MID_FONT_FAMILY_NAME },
116*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNO_CJK_CFNAME), ATTR_CJK_FONT, &::getCppuType((rtl::OUString*)0), 0, MID_FONT_FAMILY_NAME },
117*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNO_CTL_CFNAME), ATTR_CTL_FONT, &::getCppuType((rtl::OUString*)0), 0, MID_FONT_FAMILY_NAME },
118*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_CFPITCH), ATTR_FONT, &::getCppuType((sal_Int16*)0), 0, MID_FONT_PITCH },
119*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNO_CJK_CFPITCH), ATTR_CJK_FONT, &::getCppuType((sal_Int16*)0), 0, MID_FONT_PITCH },
120*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNO_CTL_CFPITCH), ATTR_CTL_FONT, &::getCppuType((sal_Int16*)0), 0, MID_FONT_PITCH },
121*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_CFSTYLE), ATTR_FONT, &::getCppuType((rtl::OUString*)0), 0, MID_FONT_STYLE_NAME },
122*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNO_CJK_CFSTYLE), ATTR_CJK_FONT, &::getCppuType((rtl::OUString*)0), 0, MID_FONT_STYLE_NAME },
123*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNO_CTL_CFSTYLE), ATTR_CTL_FONT, &::getCppuType((rtl::OUString*)0), 0, MID_FONT_STYLE_NAME },
124*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_CHEIGHT), ATTR_FONT_HEIGHT, &::getCppuType((float*)0), 0, MID_FONTHEIGHT | CONVERT_TWIPS },
125*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNO_CJK_CHEIGHT), ATTR_CJK_FONT_HEIGHT, &::getCppuType((float*)0), 0, MID_FONTHEIGHT | CONVERT_TWIPS },
126*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNO_CTL_CHEIGHT), ATTR_CTL_FONT_HEIGHT, &::getCppuType((float*)0), 0, MID_FONTHEIGHT | CONVERT_TWIPS },
127*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_COVER), ATTR_FONT_OVERLINE, &::getCppuType((const sal_Int16*)0), 0, MID_TL_STYLE },
128*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_CPOST), ATTR_FONT_POSTURE, &::getCppuType((awt::FontSlant*)0), 0, MID_POSTURE },
129*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNO_CJK_CPOST), ATTR_CJK_FONT_POSTURE, &::getCppuType((awt::FontSlant*)0), 0, MID_POSTURE },
130*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNO_CTL_CPOST), ATTR_CTL_FONT_POSTURE, &::getCppuType((awt::FontSlant*)0), 0, MID_POSTURE },
131*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_CSHADD), ATTR_FONT_SHADOWED, &::getBooleanCppuType(), 0, 0 },
132*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_TBLBORD), SC_WID_UNO_TBLBORD, &::getCppuType((table::TableBorder*)0), 0, 0 | CONVERT_TWIPS },
133*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_CUNDER), ATTR_FONT_UNDERLINE, &::getCppuType((const sal_Int16*)0), 0, MID_TL_STYLE },
134*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_CWEIGHT), ATTR_FONT_WEIGHT, &::getCppuType((float*)0), 0, MID_WEIGHT },
135*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNO_CJK_CWEIGHT), ATTR_CJK_FONT_WEIGHT, &::getCppuType((float*)0), 0, MID_WEIGHT },
136*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNO_CTL_CWEIGHT), ATTR_CTL_FONT_WEIGHT, &::getCppuType((float*)0), 0, MID_WEIGHT },
137*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS), ATTR_HOR_JUSTIFY, &::getCppuType((const table::CellHoriJustify*)0), 0, 0 },
138*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_CELLTRAN), ATTR_BACKGROUND, &::getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
139*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_WRAP), ATTR_LINEBREAK, &::getBooleanCppuType(), 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_PBMARGIN), ATTR_MARGIN, &::getCppuType((const sal_Int32*)0), 0, MID_MARGIN_LO_MARGIN | CONVERT_TWIPS },
142*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_PLMARGIN), ATTR_MARGIN, &::getCppuType((const sal_Int32*)0), 0, MID_MARGIN_L_MARGIN | CONVERT_TWIPS },
143*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_PRMARGIN), ATTR_MARGIN, &::getCppuType((const sal_Int32*)0), 0, MID_MARGIN_R_MARGIN | CONVERT_TWIPS },
144*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_PTMARGIN), ATTR_MARGIN, &::getCppuType((const sal_Int32*)0), 0, MID_MARGIN_UP_MARGIN | CONVERT_TWIPS },
145*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_ROTANG), ATTR_ROTATE_VALUE, &::getCppuType((const sal_Int32*)0), 0, 0 },
146*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_ROTREF), ATTR_ROTATE_MODE, &::getCppuType((const table::CellVertJustify*)0), 0, 0 },
147*b1cdbd2cSJim Jagielski {MAP_CHAR_LEN(SC_UNONAME_CELLVJUS), ATTR_VER_JUSTIFY, &::getCppuType((const table::CellVertJustify*)0), 0, 0 },
148*b1cdbd2cSJim Jagielski {0,0,0,0,0,0}
149*b1cdbd2cSJim Jagielski };
150*b1cdbd2cSJim Jagielski return aAutoFieldMap_Impl;
151*b1cdbd2cSJim Jagielski }
152*b1cdbd2cSJim Jagielski
153*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
154*b1cdbd2cSJim Jagielski
155*b1cdbd2cSJim Jagielski #define SCAUTOFORMATSOBJ_SERVICE "com.sun.star.sheet.TableAutoFormats"
156*b1cdbd2cSJim Jagielski
157*b1cdbd2cSJim Jagielski SC_SIMPLE_SERVICE_INFO( ScAutoFormatFieldObj, "ScAutoFormatFieldObj", "com.sun.star.sheet.TableAutoFormatField" )
158*b1cdbd2cSJim Jagielski SC_SIMPLE_SERVICE_INFO( ScAutoFormatObj, "ScAutoFormatObj", "com.sun.star.sheet.TableAutoFormat" )
159*b1cdbd2cSJim Jagielski SC_SIMPLE_SERVICE_INFO( ScAutoFormatsObj, "ScAutoFormatsObj", SCAUTOFORMATSOBJ_SERVICE )
160*b1cdbd2cSJim Jagielski
161*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
162*b1cdbd2cSJim Jagielski
lcl_FindAutoFormatIndex(const ScAutoFormat & rFormats,const String & rName,sal_uInt16 & rOutIndex)163*b1cdbd2cSJim Jagielski sal_Bool lcl_FindAutoFormatIndex( const ScAutoFormat& rFormats, const String& rName, sal_uInt16& rOutIndex )
164*b1cdbd2cSJim Jagielski {
165*b1cdbd2cSJim Jagielski String aEntryName;
166*b1cdbd2cSJim Jagielski sal_uInt16 nCount = rFormats.GetCount();
167*b1cdbd2cSJim Jagielski for( sal_uInt16 nPos=0; nPos<nCount; nPos++ )
168*b1cdbd2cSJim Jagielski {
169*b1cdbd2cSJim Jagielski ScAutoFormatData* pEntry = rFormats[nPos];
170*b1cdbd2cSJim Jagielski pEntry->GetName( aEntryName );
171*b1cdbd2cSJim Jagielski if ( aEntryName == rName )
172*b1cdbd2cSJim Jagielski {
173*b1cdbd2cSJim Jagielski rOutIndex = nPos;
174*b1cdbd2cSJim Jagielski return sal_True;
175*b1cdbd2cSJim Jagielski }
176*b1cdbd2cSJim Jagielski }
177*b1cdbd2cSJim Jagielski return sal_False; // is nich
178*b1cdbd2cSJim Jagielski }
179*b1cdbd2cSJim Jagielski
180*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
181*b1cdbd2cSJim Jagielski
ScAutoFormatsObj()182*b1cdbd2cSJim Jagielski ScAutoFormatsObj::ScAutoFormatsObj()
183*b1cdbd2cSJim Jagielski {
184*b1cdbd2cSJim Jagielski //! Dieses Objekt darf es nur einmal geben, und es muss an den Auto-Format-Daten
185*b1cdbd2cSJim Jagielski //! bekannt sein, damit Aenderungen gebroadcasted werden koennen
186*b1cdbd2cSJim Jagielski }
187*b1cdbd2cSJim Jagielski
~ScAutoFormatsObj()188*b1cdbd2cSJim Jagielski ScAutoFormatsObj::~ScAutoFormatsObj()
189*b1cdbd2cSJim Jagielski {
190*b1cdbd2cSJim Jagielski }
191*b1cdbd2cSJim Jagielski
192*b1cdbd2cSJim Jagielski // stuff for exService_...
193*b1cdbd2cSJim Jagielski
ScAutoFormatsObj_CreateInstance(const uno::Reference<lang::XMultiServiceFactory> &)194*b1cdbd2cSJim Jagielski uno::Reference<uno::XInterface> SAL_CALL ScAutoFormatsObj_CreateInstance(
195*b1cdbd2cSJim Jagielski const uno::Reference<lang::XMultiServiceFactory>& )
196*b1cdbd2cSJim Jagielski {
197*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
198*b1cdbd2cSJim Jagielski ScDLL::Init();
199*b1cdbd2cSJim Jagielski static uno::Reference< uno::XInterface > xInst((::cppu::OWeakObject*) new ScAutoFormatsObj);
200*b1cdbd2cSJim Jagielski return xInst;
201*b1cdbd2cSJim Jagielski }
202*b1cdbd2cSJim Jagielski
getImplementationName_Static()203*b1cdbd2cSJim Jagielski rtl::OUString ScAutoFormatsObj::getImplementationName_Static()
204*b1cdbd2cSJim Jagielski {
205*b1cdbd2cSJim Jagielski return rtl::OUString::createFromAscii( "stardiv.StarCalc.ScAutoFormatsObj" );
206*b1cdbd2cSJim Jagielski }
207*b1cdbd2cSJim Jagielski
getSupportedServiceNames_Static()208*b1cdbd2cSJim Jagielski uno::Sequence<rtl::OUString> ScAutoFormatsObj::getSupportedServiceNames_Static()
209*b1cdbd2cSJim Jagielski {
210*b1cdbd2cSJim Jagielski uno::Sequence<rtl::OUString> aRet(1);
211*b1cdbd2cSJim Jagielski rtl::OUString* pArray = aRet.getArray();
212*b1cdbd2cSJim Jagielski pArray[0] = rtl::OUString::createFromAscii( SCAUTOFORMATSOBJ_SERVICE );
213*b1cdbd2cSJim Jagielski return aRet;
214*b1cdbd2cSJim Jagielski }
215*b1cdbd2cSJim Jagielski
216*b1cdbd2cSJim Jagielski // XTableAutoFormats
217*b1cdbd2cSJim Jagielski
GetObjectByIndex_Impl(sal_uInt16 nIndex)218*b1cdbd2cSJim Jagielski ScAutoFormatObj* ScAutoFormatsObj::GetObjectByIndex_Impl(sal_uInt16 nIndex)
219*b1cdbd2cSJim Jagielski {
220*b1cdbd2cSJim Jagielski ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
221*b1cdbd2cSJim Jagielski if (pFormats && nIndex < pFormats->GetCount())
222*b1cdbd2cSJim Jagielski return new ScAutoFormatObj(nIndex);
223*b1cdbd2cSJim Jagielski
224*b1cdbd2cSJim Jagielski return NULL; // falscher Index
225*b1cdbd2cSJim Jagielski }
226*b1cdbd2cSJim Jagielski
GetObjectByName_Impl(const rtl::OUString & aName)227*b1cdbd2cSJim Jagielski ScAutoFormatObj* ScAutoFormatsObj::GetObjectByName_Impl(const rtl::OUString& aName)
228*b1cdbd2cSJim Jagielski {
229*b1cdbd2cSJim Jagielski ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
230*b1cdbd2cSJim Jagielski if (pFormats)
231*b1cdbd2cSJim Jagielski {
232*b1cdbd2cSJim Jagielski String aString(aName);
233*b1cdbd2cSJim Jagielski sal_uInt16 nIndex;
234*b1cdbd2cSJim Jagielski if (lcl_FindAutoFormatIndex( *pFormats, aString, nIndex ))
235*b1cdbd2cSJim Jagielski return GetObjectByIndex_Impl(nIndex);
236*b1cdbd2cSJim Jagielski }
237*b1cdbd2cSJim Jagielski return NULL;
238*b1cdbd2cSJim Jagielski }
239*b1cdbd2cSJim Jagielski
240*b1cdbd2cSJim Jagielski // container::XNameContainer
241*b1cdbd2cSJim Jagielski
insertByName(const rtl::OUString & aName,const uno::Any & aElement)242*b1cdbd2cSJim Jagielski void SAL_CALL ScAutoFormatsObj::insertByName( const rtl::OUString& aName, const uno::Any& aElement )
243*b1cdbd2cSJim Jagielski throw(lang::IllegalArgumentException, container::ElementExistException,
244*b1cdbd2cSJim Jagielski lang::WrappedTargetException, uno::RuntimeException)
245*b1cdbd2cSJim Jagielski {
246*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
247*b1cdbd2cSJim Jagielski sal_Bool bDone = sal_False;
248*b1cdbd2cSJim Jagielski // Reflection muss nicht uno::XInterface sein, kann auch irgendein Interface sein...
249*b1cdbd2cSJim Jagielski uno::Reference< uno::XInterface > xInterface(aElement, uno::UNO_QUERY);
250*b1cdbd2cSJim Jagielski if ( xInterface.is() )
251*b1cdbd2cSJim Jagielski {
252*b1cdbd2cSJim Jagielski ScAutoFormatObj* pFormatObj = ScAutoFormatObj::getImplementation( xInterface );
253*b1cdbd2cSJim Jagielski if ( pFormatObj && !pFormatObj->IsInserted() ) // noch nicht eingefuegt?
254*b1cdbd2cSJim Jagielski {
255*b1cdbd2cSJim Jagielski String aNameStr(aName);
256*b1cdbd2cSJim Jagielski ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
257*b1cdbd2cSJim Jagielski
258*b1cdbd2cSJim Jagielski sal_uInt16 nDummy;
259*b1cdbd2cSJim Jagielski if (pFormats && !lcl_FindAutoFormatIndex( *pFormats, aNameStr, nDummy ))
260*b1cdbd2cSJim Jagielski {
261*b1cdbd2cSJim Jagielski ScAutoFormatData* pNew = new ScAutoFormatData();
262*b1cdbd2cSJim Jagielski pNew->SetName( aNameStr );
263*b1cdbd2cSJim Jagielski
264*b1cdbd2cSJim Jagielski if (pFormats->Insert( pNew ))
265*b1cdbd2cSJim Jagielski {
266*b1cdbd2cSJim Jagielski //! Notify fuer andere Objekte
267*b1cdbd2cSJim Jagielski pFormats->Save(); // sofort speichern
268*b1cdbd2cSJim Jagielski
269*b1cdbd2cSJim Jagielski sal_uInt16 nNewIndex;
270*b1cdbd2cSJim Jagielski if (lcl_FindAutoFormatIndex( *pFormats, aNameStr, nNewIndex ))
271*b1cdbd2cSJim Jagielski {
272*b1cdbd2cSJim Jagielski pFormatObj->InitFormat( nNewIndex ); // kann jetzt benutzt werden
273*b1cdbd2cSJim Jagielski bDone = sal_True;
274*b1cdbd2cSJim Jagielski }
275*b1cdbd2cSJim Jagielski }
276*b1cdbd2cSJim Jagielski else
277*b1cdbd2cSJim Jagielski {
278*b1cdbd2cSJim Jagielski delete pNew;
279*b1cdbd2cSJim Jagielski DBG_ERROR("AutoFormat konnte nicht eingefuegt werden");
280*b1cdbd2cSJim Jagielski throw uno::RuntimeException();
281*b1cdbd2cSJim Jagielski }
282*b1cdbd2cSJim Jagielski }
283*b1cdbd2cSJim Jagielski else
284*b1cdbd2cSJim Jagielski {
285*b1cdbd2cSJim Jagielski throw container::ElementExistException();
286*b1cdbd2cSJim Jagielski }
287*b1cdbd2cSJim Jagielski }
288*b1cdbd2cSJim Jagielski }
289*b1cdbd2cSJim Jagielski
290*b1cdbd2cSJim Jagielski if (!bDone)
291*b1cdbd2cSJim Jagielski {
292*b1cdbd2cSJim Jagielski // other errors are handled above
293*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException();
294*b1cdbd2cSJim Jagielski }
295*b1cdbd2cSJim Jagielski }
296*b1cdbd2cSJim Jagielski
replaceByName(const rtl::OUString & aName,const uno::Any & aElement)297*b1cdbd2cSJim Jagielski void SAL_CALL ScAutoFormatsObj::replaceByName( const rtl::OUString& aName, const uno::Any& aElement )
298*b1cdbd2cSJim Jagielski throw(lang::IllegalArgumentException, container::NoSuchElementException,
299*b1cdbd2cSJim Jagielski lang::WrappedTargetException, uno::RuntimeException)
300*b1cdbd2cSJim Jagielski {
301*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
302*b1cdbd2cSJim Jagielski //! zusammenfassen?
303*b1cdbd2cSJim Jagielski removeByName( aName );
304*b1cdbd2cSJim Jagielski insertByName( aName, aElement );
305*b1cdbd2cSJim Jagielski }
306*b1cdbd2cSJim Jagielski
removeByName(const rtl::OUString & aName)307*b1cdbd2cSJim Jagielski void SAL_CALL ScAutoFormatsObj::removeByName( const rtl::OUString& aName )
308*b1cdbd2cSJim Jagielski throw(container::NoSuchElementException,
309*b1cdbd2cSJim Jagielski lang::WrappedTargetException, uno::RuntimeException)
310*b1cdbd2cSJim Jagielski {
311*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
312*b1cdbd2cSJim Jagielski String aNameStr(aName);
313*b1cdbd2cSJim Jagielski ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
314*b1cdbd2cSJim Jagielski
315*b1cdbd2cSJim Jagielski sal_uInt16 nIndex;
316*b1cdbd2cSJim Jagielski if (pFormats && lcl_FindAutoFormatIndex( *pFormats, aNameStr, nIndex ))
317*b1cdbd2cSJim Jagielski {
318*b1cdbd2cSJim Jagielski pFormats->AtFree( nIndex );
319*b1cdbd2cSJim Jagielski
320*b1cdbd2cSJim Jagielski //! Notify fuer andere Objekte
321*b1cdbd2cSJim Jagielski pFormats->Save(); // sofort speichern
322*b1cdbd2cSJim Jagielski }
323*b1cdbd2cSJim Jagielski else
324*b1cdbd2cSJim Jagielski {
325*b1cdbd2cSJim Jagielski throw container::NoSuchElementException();
326*b1cdbd2cSJim Jagielski }
327*b1cdbd2cSJim Jagielski }
328*b1cdbd2cSJim Jagielski
329*b1cdbd2cSJim Jagielski // container::XEnumerationAccess
330*b1cdbd2cSJim Jagielski
createEnumeration()331*b1cdbd2cSJim Jagielski uno::Reference<container::XEnumeration> SAL_CALL ScAutoFormatsObj::createEnumeration()
332*b1cdbd2cSJim Jagielski throw(uno::RuntimeException)
333*b1cdbd2cSJim Jagielski {
334*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
335*b1cdbd2cSJim Jagielski return new ScIndexEnumeration(this, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sheet.TableAutoFormatEnumeration")));
336*b1cdbd2cSJim Jagielski }
337*b1cdbd2cSJim Jagielski
338*b1cdbd2cSJim Jagielski // container::XIndexAccess
339*b1cdbd2cSJim Jagielski
getCount()340*b1cdbd2cSJim Jagielski sal_Int32 SAL_CALL ScAutoFormatsObj::getCount() throw(uno::RuntimeException)
341*b1cdbd2cSJim Jagielski {
342*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
343*b1cdbd2cSJim Jagielski ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
344*b1cdbd2cSJim Jagielski if (pFormats)
345*b1cdbd2cSJim Jagielski return pFormats->GetCount();
346*b1cdbd2cSJim Jagielski
347*b1cdbd2cSJim Jagielski return 0;
348*b1cdbd2cSJim Jagielski }
349*b1cdbd2cSJim Jagielski
getByIndex(sal_Int32 nIndex)350*b1cdbd2cSJim Jagielski uno::Any SAL_CALL ScAutoFormatsObj::getByIndex( sal_Int32 nIndex )
351*b1cdbd2cSJim Jagielski throw(lang::IndexOutOfBoundsException,
352*b1cdbd2cSJim Jagielski lang::WrappedTargetException, uno::RuntimeException)
353*b1cdbd2cSJim Jagielski {
354*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
355*b1cdbd2cSJim Jagielski uno::Reference< container::XNamed > xFormat(GetObjectByIndex_Impl((sal_uInt16)nIndex));
356*b1cdbd2cSJim Jagielski if (!xFormat.is())
357*b1cdbd2cSJim Jagielski throw lang::IndexOutOfBoundsException();
358*b1cdbd2cSJim Jagielski return uno::makeAny(xFormat);
359*b1cdbd2cSJim Jagielski }
360*b1cdbd2cSJim Jagielski
getElementType()361*b1cdbd2cSJim Jagielski uno::Type SAL_CALL ScAutoFormatsObj::getElementType() throw(uno::RuntimeException)
362*b1cdbd2cSJim Jagielski {
363*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
364*b1cdbd2cSJim Jagielski return ::getCppuType((const uno::Reference< container::XNamed >*)0); // muss zu getByIndex passen
365*b1cdbd2cSJim Jagielski }
366*b1cdbd2cSJim Jagielski
hasElements()367*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL ScAutoFormatsObj::hasElements() throw(uno::RuntimeException)
368*b1cdbd2cSJim Jagielski {
369*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
370*b1cdbd2cSJim Jagielski return ( getCount() != 0 );
371*b1cdbd2cSJim Jagielski }
372*b1cdbd2cSJim Jagielski
373*b1cdbd2cSJim Jagielski // container::XNameAccess
374*b1cdbd2cSJim Jagielski
getByName(const rtl::OUString & aName)375*b1cdbd2cSJim Jagielski uno::Any SAL_CALL ScAutoFormatsObj::getByName( const rtl::OUString& aName )
376*b1cdbd2cSJim Jagielski throw(container::NoSuchElementException,
377*b1cdbd2cSJim Jagielski lang::WrappedTargetException, uno::RuntimeException)
378*b1cdbd2cSJim Jagielski {
379*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
380*b1cdbd2cSJim Jagielski uno::Reference< container::XNamed > xFormat(GetObjectByName_Impl(aName));
381*b1cdbd2cSJim Jagielski if (!xFormat.is())
382*b1cdbd2cSJim Jagielski throw container::NoSuchElementException();
383*b1cdbd2cSJim Jagielski return uno::makeAny(xFormat);
384*b1cdbd2cSJim Jagielski }
385*b1cdbd2cSJim Jagielski
getElementNames()386*b1cdbd2cSJim Jagielski uno::Sequence<rtl::OUString> SAL_CALL ScAutoFormatsObj::getElementNames()
387*b1cdbd2cSJim Jagielski throw(uno::RuntimeException)
388*b1cdbd2cSJim Jagielski {
389*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
390*b1cdbd2cSJim Jagielski ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
391*b1cdbd2cSJim Jagielski if (pFormats)
392*b1cdbd2cSJim Jagielski {
393*b1cdbd2cSJim Jagielski String aName;
394*b1cdbd2cSJim Jagielski sal_uInt16 nCount = pFormats->GetCount();
395*b1cdbd2cSJim Jagielski uno::Sequence<rtl::OUString> aSeq(nCount);
396*b1cdbd2cSJim Jagielski rtl::OUString* pAry = aSeq.getArray();
397*b1cdbd2cSJim Jagielski for (sal_uInt16 i=0; i<nCount; i++)
398*b1cdbd2cSJim Jagielski {
399*b1cdbd2cSJim Jagielski (*pFormats)[i]->GetName(aName);
400*b1cdbd2cSJim Jagielski pAry[i] = aName;
401*b1cdbd2cSJim Jagielski }
402*b1cdbd2cSJim Jagielski return aSeq;
403*b1cdbd2cSJim Jagielski }
404*b1cdbd2cSJim Jagielski return uno::Sequence<rtl::OUString>(0);
405*b1cdbd2cSJim Jagielski }
406*b1cdbd2cSJim Jagielski
hasByName(const rtl::OUString & aName)407*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL ScAutoFormatsObj::hasByName( const rtl::OUString& aName )
408*b1cdbd2cSJim Jagielski throw(uno::RuntimeException)
409*b1cdbd2cSJim Jagielski {
410*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
411*b1cdbd2cSJim Jagielski ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
412*b1cdbd2cSJim Jagielski if (pFormats)
413*b1cdbd2cSJim Jagielski {
414*b1cdbd2cSJim Jagielski String aString(aName);
415*b1cdbd2cSJim Jagielski sal_uInt16 nDummy;
416*b1cdbd2cSJim Jagielski return lcl_FindAutoFormatIndex( *pFormats, aString, nDummy );
417*b1cdbd2cSJim Jagielski }
418*b1cdbd2cSJim Jagielski return sal_False;
419*b1cdbd2cSJim Jagielski }
420*b1cdbd2cSJim Jagielski
421*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
422*b1cdbd2cSJim Jagielski
ScAutoFormatObj(sal_uInt16 nIndex)423*b1cdbd2cSJim Jagielski ScAutoFormatObj::ScAutoFormatObj(sal_uInt16 nIndex) :
424*b1cdbd2cSJim Jagielski aPropSet( lcl_GetAutoFormatMap() ),
425*b1cdbd2cSJim Jagielski nFormatIndex( nIndex )
426*b1cdbd2cSJim Jagielski {
427*b1cdbd2cSJim Jagielski //! Listening !!!
428*b1cdbd2cSJim Jagielski }
429*b1cdbd2cSJim Jagielski
~ScAutoFormatObj()430*b1cdbd2cSJim Jagielski ScAutoFormatObj::~ScAutoFormatObj()
431*b1cdbd2cSJim Jagielski {
432*b1cdbd2cSJim Jagielski // Wenn ein AutoFormat-Objekt losgelassen wird, werden eventuelle Aenderungen
433*b1cdbd2cSJim Jagielski // gespeichert, damit sie z.B. im Writer sichtbar sind
434*b1cdbd2cSJim Jagielski
435*b1cdbd2cSJim Jagielski if (IsInserted())
436*b1cdbd2cSJim Jagielski {
437*b1cdbd2cSJim Jagielski ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
438*b1cdbd2cSJim Jagielski if ( pFormats && pFormats->IsSaveLater() )
439*b1cdbd2cSJim Jagielski pFormats->Save();
440*b1cdbd2cSJim Jagielski
441*b1cdbd2cSJim Jagielski // Save() setzt SaveLater Flag zurueck
442*b1cdbd2cSJim Jagielski }
443*b1cdbd2cSJim Jagielski }
444*b1cdbd2cSJim Jagielski
InitFormat(sal_uInt16 nNewIndex)445*b1cdbd2cSJim Jagielski void ScAutoFormatObj::InitFormat( sal_uInt16 nNewIndex )
446*b1cdbd2cSJim Jagielski {
447*b1cdbd2cSJim Jagielski DBG_ASSERT( nFormatIndex == SC_AFMTOBJ_INVALID, "ScAutoFormatObj::InitFormat mehrfach" );
448*b1cdbd2cSJim Jagielski nFormatIndex = nNewIndex;
449*b1cdbd2cSJim Jagielski //! Listening !!!
450*b1cdbd2cSJim Jagielski }
451*b1cdbd2cSJim Jagielski
452*b1cdbd2cSJim Jagielski // XUnoTunnel
453*b1cdbd2cSJim Jagielski
getSomething(const uno::Sequence<sal_Int8> & rId)454*b1cdbd2cSJim Jagielski sal_Int64 SAL_CALL ScAutoFormatObj::getSomething(
455*b1cdbd2cSJim Jagielski const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
456*b1cdbd2cSJim Jagielski {
457*b1cdbd2cSJim Jagielski if ( rId.getLength() == 16 &&
458*b1cdbd2cSJim Jagielski 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
459*b1cdbd2cSJim Jagielski rId.getConstArray(), 16 ) )
460*b1cdbd2cSJim Jagielski {
461*b1cdbd2cSJim Jagielski return sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_IntPtr>(this));
462*b1cdbd2cSJim Jagielski }
463*b1cdbd2cSJim Jagielski return 0;
464*b1cdbd2cSJim Jagielski }
465*b1cdbd2cSJim Jagielski
466*b1cdbd2cSJim Jagielski // static
getUnoTunnelId()467*b1cdbd2cSJim Jagielski const uno::Sequence<sal_Int8>& ScAutoFormatObj::getUnoTunnelId()
468*b1cdbd2cSJim Jagielski {
469*b1cdbd2cSJim Jagielski static uno::Sequence<sal_Int8> * pSeq = 0;
470*b1cdbd2cSJim Jagielski if( !pSeq )
471*b1cdbd2cSJim Jagielski {
472*b1cdbd2cSJim Jagielski osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
473*b1cdbd2cSJim Jagielski if( !pSeq )
474*b1cdbd2cSJim Jagielski {
475*b1cdbd2cSJim Jagielski static uno::Sequence< sal_Int8 > aSeq( 16 );
476*b1cdbd2cSJim Jagielski rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
477*b1cdbd2cSJim Jagielski pSeq = &aSeq;
478*b1cdbd2cSJim Jagielski }
479*b1cdbd2cSJim Jagielski }
480*b1cdbd2cSJim Jagielski return *pSeq;
481*b1cdbd2cSJim Jagielski }
482*b1cdbd2cSJim Jagielski
483*b1cdbd2cSJim Jagielski // static
getImplementation(const uno::Reference<uno::XInterface> xObj)484*b1cdbd2cSJim Jagielski ScAutoFormatObj* ScAutoFormatObj::getImplementation(
485*b1cdbd2cSJim Jagielski const uno::Reference<uno::XInterface> xObj )
486*b1cdbd2cSJim Jagielski {
487*b1cdbd2cSJim Jagielski ScAutoFormatObj* pRet = NULL;
488*b1cdbd2cSJim Jagielski uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
489*b1cdbd2cSJim Jagielski if (xUT.is())
490*b1cdbd2cSJim Jagielski pRet = reinterpret_cast<ScAutoFormatObj*>(sal::static_int_cast<sal_IntPtr>(xUT->getSomething(getUnoTunnelId())));
491*b1cdbd2cSJim Jagielski return pRet;
492*b1cdbd2cSJim Jagielski }
493*b1cdbd2cSJim Jagielski
Notify(SfxBroadcaster &,const SfxHint &)494*b1cdbd2cSJim Jagielski void ScAutoFormatObj::Notify( SfxBroadcaster& /* rBC */, const SfxHint& /* rHint */ )
495*b1cdbd2cSJim Jagielski {
496*b1cdbd2cSJim Jagielski // spaeter...
497*b1cdbd2cSJim Jagielski }
498*b1cdbd2cSJim Jagielski
499*b1cdbd2cSJim Jagielski // XTableAutoFormat
500*b1cdbd2cSJim Jagielski
GetObjectByIndex_Impl(sal_uInt16 nIndex)501*b1cdbd2cSJim Jagielski ScAutoFormatFieldObj* ScAutoFormatObj::GetObjectByIndex_Impl(sal_uInt16 nIndex)
502*b1cdbd2cSJim Jagielski {
503*b1cdbd2cSJim Jagielski if ( IsInserted() && nIndex < SC_AF_FIELD_COUNT )
504*b1cdbd2cSJim Jagielski return new ScAutoFormatFieldObj( nFormatIndex, nIndex );
505*b1cdbd2cSJim Jagielski
506*b1cdbd2cSJim Jagielski return NULL;
507*b1cdbd2cSJim Jagielski }
508*b1cdbd2cSJim Jagielski
509*b1cdbd2cSJim Jagielski // container::XEnumerationAccess
510*b1cdbd2cSJim Jagielski
createEnumeration()511*b1cdbd2cSJim Jagielski uno::Reference<container::XEnumeration> SAL_CALL ScAutoFormatObj::createEnumeration()
512*b1cdbd2cSJim Jagielski throw(uno::RuntimeException)
513*b1cdbd2cSJim Jagielski {
514*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
515*b1cdbd2cSJim Jagielski return new ScIndexEnumeration(this, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sheet.TableAutoFormatEnumeration")));
516*b1cdbd2cSJim Jagielski }
517*b1cdbd2cSJim Jagielski
518*b1cdbd2cSJim Jagielski // container::XIndexAccess
519*b1cdbd2cSJim Jagielski
getCount()520*b1cdbd2cSJim Jagielski sal_Int32 SAL_CALL ScAutoFormatObj::getCount() throw(uno::RuntimeException)
521*b1cdbd2cSJim Jagielski {
522*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
523*b1cdbd2cSJim Jagielski if (IsInserted())
524*b1cdbd2cSJim Jagielski return SC_AF_FIELD_COUNT; // immer 16 Elemente
525*b1cdbd2cSJim Jagielski else
526*b1cdbd2cSJim Jagielski return 0;
527*b1cdbd2cSJim Jagielski }
528*b1cdbd2cSJim Jagielski
getByIndex(sal_Int32 nIndex)529*b1cdbd2cSJim Jagielski uno::Any SAL_CALL ScAutoFormatObj::getByIndex( sal_Int32 nIndex )
530*b1cdbd2cSJim Jagielski throw(lang::IndexOutOfBoundsException,
531*b1cdbd2cSJim Jagielski lang::WrappedTargetException, uno::RuntimeException)
532*b1cdbd2cSJim Jagielski {
533*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
534*b1cdbd2cSJim Jagielski
535*b1cdbd2cSJim Jagielski if ( nIndex < 0 || nIndex >= getCount() )
536*b1cdbd2cSJim Jagielski throw lang::IndexOutOfBoundsException();
537*b1cdbd2cSJim Jagielski
538*b1cdbd2cSJim Jagielski if (IsInserted())
539*b1cdbd2cSJim Jagielski return uno::makeAny(uno::Reference< beans::XPropertySet >(GetObjectByIndex_Impl((sal_uInt16)nIndex)));
540*b1cdbd2cSJim Jagielski return uno::Any();
541*b1cdbd2cSJim Jagielski }
542*b1cdbd2cSJim Jagielski
getElementType()543*b1cdbd2cSJim Jagielski uno::Type SAL_CALL ScAutoFormatObj::getElementType() throw(uno::RuntimeException)
544*b1cdbd2cSJim Jagielski {
545*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
546*b1cdbd2cSJim Jagielski return ::getCppuType((const uno::Reference< beans::XPropertySet >*)0); // muss zu getByIndex passen
547*b1cdbd2cSJim Jagielski }
548*b1cdbd2cSJim Jagielski
hasElements()549*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL ScAutoFormatObj::hasElements() throw(uno::RuntimeException)
550*b1cdbd2cSJim Jagielski {
551*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
552*b1cdbd2cSJim Jagielski return ( getCount() != 0 );
553*b1cdbd2cSJim Jagielski }
554*b1cdbd2cSJim Jagielski
555*b1cdbd2cSJim Jagielski // container::XNamed
556*b1cdbd2cSJim Jagielski
getName()557*b1cdbd2cSJim Jagielski rtl::OUString SAL_CALL ScAutoFormatObj::getName() throw(uno::RuntimeException)
558*b1cdbd2cSJim Jagielski {
559*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
560*b1cdbd2cSJim Jagielski ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
561*b1cdbd2cSJim Jagielski if (pFormats && IsInserted() && nFormatIndex < pFormats->GetCount())
562*b1cdbd2cSJim Jagielski {
563*b1cdbd2cSJim Jagielski String aName;
564*b1cdbd2cSJim Jagielski (*pFormats)[nFormatIndex]->GetName(aName);
565*b1cdbd2cSJim Jagielski return aName;
566*b1cdbd2cSJim Jagielski }
567*b1cdbd2cSJim Jagielski return rtl::OUString();
568*b1cdbd2cSJim Jagielski }
569*b1cdbd2cSJim Jagielski
setName(const rtl::OUString & aNewName)570*b1cdbd2cSJim Jagielski void SAL_CALL ScAutoFormatObj::setName( const rtl::OUString& aNewName )
571*b1cdbd2cSJim Jagielski throw(uno::RuntimeException)
572*b1cdbd2cSJim Jagielski {
573*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
574*b1cdbd2cSJim Jagielski String aNewString(aNewName);
575*b1cdbd2cSJim Jagielski ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
576*b1cdbd2cSJim Jagielski
577*b1cdbd2cSJim Jagielski sal_uInt16 nDummy;
578*b1cdbd2cSJim Jagielski if (pFormats && IsInserted() && nFormatIndex < pFormats->GetCount() &&
579*b1cdbd2cSJim Jagielski !lcl_FindAutoFormatIndex( *pFormats, aNewString, nDummy ))
580*b1cdbd2cSJim Jagielski {
581*b1cdbd2cSJim Jagielski ScAutoFormatData* pData = (*pFormats)[nFormatIndex];
582*b1cdbd2cSJim Jagielski DBG_ASSERT(pData,"AutoFormat Daten nicht da");
583*b1cdbd2cSJim Jagielski
584*b1cdbd2cSJim Jagielski ScAutoFormatData* pNew = new ScAutoFormatData(*pData);
585*b1cdbd2cSJim Jagielski pNew->SetName( aNewString );
586*b1cdbd2cSJim Jagielski
587*b1cdbd2cSJim Jagielski pFormats->AtFree( nFormatIndex );
588*b1cdbd2cSJim Jagielski if (pFormats->Insert( pNew ))
589*b1cdbd2cSJim Jagielski {
590*b1cdbd2cSJim Jagielski nFormatIndex = pFormats->IndexOf( pNew ); // ist evtl. anders einsortiert...
591*b1cdbd2cSJim Jagielski
592*b1cdbd2cSJim Jagielski //! Notify fuer andere Objekte
593*b1cdbd2cSJim Jagielski pFormats->SetSaveLater(sal_True);
594*b1cdbd2cSJim Jagielski }
595*b1cdbd2cSJim Jagielski else
596*b1cdbd2cSJim Jagielski {
597*b1cdbd2cSJim Jagielski delete pNew;
598*b1cdbd2cSJim Jagielski DBG_ERROR("AutoFormat konnte nicht eingefuegt werden");
599*b1cdbd2cSJim Jagielski nFormatIndex = 0; //! alter Index ist ungueltig
600*b1cdbd2cSJim Jagielski }
601*b1cdbd2cSJim Jagielski }
602*b1cdbd2cSJim Jagielski else
603*b1cdbd2cSJim Jagielski {
604*b1cdbd2cSJim Jagielski // not inserted or name exists
605*b1cdbd2cSJim Jagielski throw uno::RuntimeException();
606*b1cdbd2cSJim Jagielski }
607*b1cdbd2cSJim Jagielski }
608*b1cdbd2cSJim Jagielski
609*b1cdbd2cSJim Jagielski // beans::XPropertySet
610*b1cdbd2cSJim Jagielski
getPropertySetInfo()611*b1cdbd2cSJim Jagielski uno::Reference<beans::XPropertySetInfo> SAL_CALL ScAutoFormatObj::getPropertySetInfo()
612*b1cdbd2cSJim Jagielski throw(uno::RuntimeException)
613*b1cdbd2cSJim Jagielski {
614*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
615*b1cdbd2cSJim Jagielski static uno::Reference< beans::XPropertySetInfo > aRef(new SfxItemPropertySetInfo( aPropSet.getPropertyMap() ));
616*b1cdbd2cSJim Jagielski return aRef;
617*b1cdbd2cSJim Jagielski }
618*b1cdbd2cSJim Jagielski
setPropertyValue(const rtl::OUString & aPropertyName,const uno::Any & aValue)619*b1cdbd2cSJim Jagielski void SAL_CALL ScAutoFormatObj::setPropertyValue(
620*b1cdbd2cSJim Jagielski const rtl::OUString& aPropertyName, const uno::Any& aValue )
621*b1cdbd2cSJim Jagielski throw(beans::UnknownPropertyException, beans::PropertyVetoException,
622*b1cdbd2cSJim Jagielski lang::IllegalArgumentException, lang::WrappedTargetException,
623*b1cdbd2cSJim Jagielski uno::RuntimeException)
624*b1cdbd2cSJim Jagielski {
625*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
626*b1cdbd2cSJim Jagielski ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
627*b1cdbd2cSJim Jagielski if (pFormats && IsInserted() && nFormatIndex < pFormats->GetCount())
628*b1cdbd2cSJim Jagielski {
629*b1cdbd2cSJim Jagielski ScAutoFormatData* pData = (*pFormats)[nFormatIndex];
630*b1cdbd2cSJim Jagielski DBG_ASSERT(pData,"AutoFormat Daten nicht da");
631*b1cdbd2cSJim Jagielski
632*b1cdbd2cSJim Jagielski String aPropString(aPropertyName);
633*b1cdbd2cSJim Jagielski sal_Bool bBool = sal_Bool();
634*b1cdbd2cSJim Jagielski if (aPropString.EqualsAscii( SC_UNONAME_INCBACK ) && (aValue >>= bBool))
635*b1cdbd2cSJim Jagielski pData->SetIncludeBackground( bBool );
636*b1cdbd2cSJim Jagielski else if (aPropString.EqualsAscii( SC_UNONAME_INCBORD ) && (aValue >>= bBool))
637*b1cdbd2cSJim Jagielski pData->SetIncludeFrame( bBool );
638*b1cdbd2cSJim Jagielski else if (aPropString.EqualsAscii( SC_UNONAME_INCFONT ) && (aValue >>= bBool))
639*b1cdbd2cSJim Jagielski pData->SetIncludeFont( bBool );
640*b1cdbd2cSJim Jagielski else if (aPropString.EqualsAscii( SC_UNONAME_INCJUST ) && (aValue >>= bBool))
641*b1cdbd2cSJim Jagielski pData->SetIncludeJustify( bBool );
642*b1cdbd2cSJim Jagielski else if (aPropString.EqualsAscii( SC_UNONAME_INCNUM ) && (aValue >>= bBool))
643*b1cdbd2cSJim Jagielski pData->SetIncludeValueFormat( bBool );
644*b1cdbd2cSJim Jagielski else if (aPropString.EqualsAscii( SC_UNONAME_INCWIDTH ) && (aValue >>= bBool))
645*b1cdbd2cSJim Jagielski pData->SetIncludeWidthHeight( bBool );
646*b1cdbd2cSJim Jagielski
647*b1cdbd2cSJim Jagielski // else Fehler
648*b1cdbd2cSJim Jagielski
649*b1cdbd2cSJim Jagielski //! Notify fuer andere Objekte
650*b1cdbd2cSJim Jagielski pFormats->SetSaveLater(sal_True);
651*b1cdbd2cSJim Jagielski }
652*b1cdbd2cSJim Jagielski }
653*b1cdbd2cSJim Jagielski
getPropertyValue(const rtl::OUString & aPropertyName)654*b1cdbd2cSJim Jagielski uno::Any SAL_CALL ScAutoFormatObj::getPropertyValue( const rtl::OUString& aPropertyName )
655*b1cdbd2cSJim Jagielski throw(beans::UnknownPropertyException, lang::WrappedTargetException,
656*b1cdbd2cSJim Jagielski uno::RuntimeException)
657*b1cdbd2cSJim Jagielski {
658*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
659*b1cdbd2cSJim Jagielski uno::Any aAny;
660*b1cdbd2cSJim Jagielski
661*b1cdbd2cSJim Jagielski ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
662*b1cdbd2cSJim Jagielski if (pFormats && IsInserted() && nFormatIndex < pFormats->GetCount())
663*b1cdbd2cSJim Jagielski {
664*b1cdbd2cSJim Jagielski ScAutoFormatData* pData = (*pFormats)[nFormatIndex];
665*b1cdbd2cSJim Jagielski DBG_ASSERT(pData,"AutoFormat Daten nicht da");
666*b1cdbd2cSJim Jagielski
667*b1cdbd2cSJim Jagielski sal_Bool bValue;
668*b1cdbd2cSJim Jagielski sal_Bool bError = sal_False;
669*b1cdbd2cSJim Jagielski
670*b1cdbd2cSJim Jagielski String aPropString(aPropertyName);
671*b1cdbd2cSJim Jagielski if (aPropString.EqualsAscii( SC_UNONAME_INCBACK ))
672*b1cdbd2cSJim Jagielski bValue = pData->GetIncludeBackground();
673*b1cdbd2cSJim Jagielski else if (aPropString.EqualsAscii( SC_UNONAME_INCBORD ))
674*b1cdbd2cSJim Jagielski bValue = pData->GetIncludeFrame();
675*b1cdbd2cSJim Jagielski else if (aPropString.EqualsAscii( SC_UNONAME_INCFONT ))
676*b1cdbd2cSJim Jagielski bValue = pData->GetIncludeFont();
677*b1cdbd2cSJim Jagielski else if (aPropString.EqualsAscii( SC_UNONAME_INCJUST ))
678*b1cdbd2cSJim Jagielski bValue = pData->GetIncludeJustify();
679*b1cdbd2cSJim Jagielski else if (aPropString.EqualsAscii( SC_UNONAME_INCNUM ))
680*b1cdbd2cSJim Jagielski bValue = pData->GetIncludeValueFormat();
681*b1cdbd2cSJim Jagielski else if (aPropString.EqualsAscii( SC_UNONAME_INCWIDTH ))
682*b1cdbd2cSJim Jagielski bValue = pData->GetIncludeWidthHeight();
683*b1cdbd2cSJim Jagielski else
684*b1cdbd2cSJim Jagielski bError = sal_True; // unbekannte Property
685*b1cdbd2cSJim Jagielski
686*b1cdbd2cSJim Jagielski if (!bError)
687*b1cdbd2cSJim Jagielski aAny <<= bValue;
688*b1cdbd2cSJim Jagielski }
689*b1cdbd2cSJim Jagielski
690*b1cdbd2cSJim Jagielski return aAny;
691*b1cdbd2cSJim Jagielski }
692*b1cdbd2cSJim Jagielski
SC_IMPL_DUMMY_PROPERTY_LISTENER(ScAutoFormatObj)693*b1cdbd2cSJim Jagielski SC_IMPL_DUMMY_PROPERTY_LISTENER( ScAutoFormatObj )
694*b1cdbd2cSJim Jagielski
695*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
696*b1cdbd2cSJim Jagielski
697*b1cdbd2cSJim Jagielski ScAutoFormatFieldObj::ScAutoFormatFieldObj(sal_uInt16 nFormat, sal_uInt16 nField) :
698*b1cdbd2cSJim Jagielski aPropSet( lcl_GetAutoFieldMap() ),
699*b1cdbd2cSJim Jagielski nFormatIndex( nFormat ),
700*b1cdbd2cSJim Jagielski nFieldIndex( nField )
701*b1cdbd2cSJim Jagielski {
702*b1cdbd2cSJim Jagielski //! Listening !!!
703*b1cdbd2cSJim Jagielski }
704*b1cdbd2cSJim Jagielski
~ScAutoFormatFieldObj()705*b1cdbd2cSJim Jagielski ScAutoFormatFieldObj::~ScAutoFormatFieldObj()
706*b1cdbd2cSJim Jagielski {
707*b1cdbd2cSJim Jagielski }
708*b1cdbd2cSJim Jagielski
Notify(SfxBroadcaster &,const SfxHint &)709*b1cdbd2cSJim Jagielski void ScAutoFormatFieldObj::Notify( SfxBroadcaster& /* rBC */, const SfxHint& /* rHint */ )
710*b1cdbd2cSJim Jagielski {
711*b1cdbd2cSJim Jagielski // spaeter...
712*b1cdbd2cSJim Jagielski }
713*b1cdbd2cSJim Jagielski
714*b1cdbd2cSJim Jagielski // beans::XPropertySet
715*b1cdbd2cSJim Jagielski
getPropertySetInfo()716*b1cdbd2cSJim Jagielski uno::Reference<beans::XPropertySetInfo> SAL_CALL ScAutoFormatFieldObj::getPropertySetInfo()
717*b1cdbd2cSJim Jagielski throw(uno::RuntimeException)
718*b1cdbd2cSJim Jagielski {
719*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
720*b1cdbd2cSJim Jagielski static uno::Reference< beans::XPropertySetInfo > aRef(new SfxItemPropertySetInfo( aPropSet.getPropertyMap() ));
721*b1cdbd2cSJim Jagielski return aRef;
722*b1cdbd2cSJim Jagielski }
723*b1cdbd2cSJim Jagielski
setPropertyValue(const rtl::OUString & aPropertyName,const uno::Any & aValue)724*b1cdbd2cSJim Jagielski void SAL_CALL ScAutoFormatFieldObj::setPropertyValue(
725*b1cdbd2cSJim Jagielski const rtl::OUString& aPropertyName, const uno::Any& aValue )
726*b1cdbd2cSJim Jagielski throw(beans::UnknownPropertyException, beans::PropertyVetoException,
727*b1cdbd2cSJim Jagielski lang::IllegalArgumentException, lang::WrappedTargetException,
728*b1cdbd2cSJim Jagielski uno::RuntimeException)
729*b1cdbd2cSJim Jagielski {
730*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
731*b1cdbd2cSJim Jagielski ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
732*b1cdbd2cSJim Jagielski const SfxItemPropertySimpleEntry* pEntry =
733*b1cdbd2cSJim Jagielski aPropSet.getPropertyMap()->getByName( aPropertyName );
734*b1cdbd2cSJim Jagielski
735*b1cdbd2cSJim Jagielski if ( pEntry && pEntry->nWID && pFormats && nFormatIndex < pFormats->GetCount() )
736*b1cdbd2cSJim Jagielski {
737*b1cdbd2cSJim Jagielski ScAutoFormatData* pData = (*pFormats)[nFormatIndex];
738*b1cdbd2cSJim Jagielski
739*b1cdbd2cSJim Jagielski if ( IsScItemWid( pEntry->nWID ) )
740*b1cdbd2cSJim Jagielski {
741*b1cdbd2cSJim Jagielski if( const SfxPoolItem* pItem = pData->GetItem( nFieldIndex, pEntry->nWID ) )
742*b1cdbd2cSJim Jagielski {
743*b1cdbd2cSJim Jagielski sal_Bool bDone = sal_False;
744*b1cdbd2cSJim Jagielski
745*b1cdbd2cSJim Jagielski switch( pEntry->nWID )
746*b1cdbd2cSJim Jagielski {
747*b1cdbd2cSJim Jagielski case ATTR_STACKED:
748*b1cdbd2cSJim Jagielski {
749*b1cdbd2cSJim Jagielski table::CellOrientation eOrient;
750*b1cdbd2cSJim Jagielski if( aValue >>= eOrient )
751*b1cdbd2cSJim Jagielski {
752*b1cdbd2cSJim Jagielski switch( eOrient )
753*b1cdbd2cSJim Jagielski {
754*b1cdbd2cSJim Jagielski case table::CellOrientation_STANDARD:
755*b1cdbd2cSJim Jagielski pData->PutItem( nFieldIndex, SfxBoolItem( ATTR_STACKED, sal_False ) );
756*b1cdbd2cSJim Jagielski break;
757*b1cdbd2cSJim Jagielski case table::CellOrientation_TOPBOTTOM:
758*b1cdbd2cSJim Jagielski pData->PutItem( nFieldIndex, SfxBoolItem( ATTR_STACKED, sal_False ) );
759*b1cdbd2cSJim Jagielski pData->PutItem( nFieldIndex, SfxInt32Item( ATTR_ROTATE_VALUE, 27000 ) );
760*b1cdbd2cSJim Jagielski break;
761*b1cdbd2cSJim Jagielski case table::CellOrientation_BOTTOMTOP:
762*b1cdbd2cSJim Jagielski pData->PutItem( nFieldIndex, SfxBoolItem( ATTR_STACKED, sal_False ) );
763*b1cdbd2cSJim Jagielski pData->PutItem( nFieldIndex, SfxInt32Item( ATTR_ROTATE_VALUE, 9000 ) );
764*b1cdbd2cSJim Jagielski break;
765*b1cdbd2cSJim Jagielski case table::CellOrientation_STACKED:
766*b1cdbd2cSJim Jagielski pData->PutItem( nFieldIndex, SfxBoolItem( ATTR_STACKED, sal_True ) );
767*b1cdbd2cSJim Jagielski break;
768*b1cdbd2cSJim Jagielski default:
769*b1cdbd2cSJim Jagielski {
770*b1cdbd2cSJim Jagielski // added to avoid warnings
771*b1cdbd2cSJim Jagielski }
772*b1cdbd2cSJim Jagielski }
773*b1cdbd2cSJim Jagielski bDone = sal_True;
774*b1cdbd2cSJim Jagielski }
775*b1cdbd2cSJim Jagielski }
776*b1cdbd2cSJim Jagielski break;
777*b1cdbd2cSJim Jagielski default:
778*b1cdbd2cSJim Jagielski SfxPoolItem* pNewItem = pItem->Clone();
779*b1cdbd2cSJim Jagielski bDone = pNewItem->PutValue( aValue, pEntry->nMemberId );
780*b1cdbd2cSJim Jagielski if (bDone)
781*b1cdbd2cSJim Jagielski pData->PutItem( nFieldIndex, *pNewItem );
782*b1cdbd2cSJim Jagielski delete pNewItem;
783*b1cdbd2cSJim Jagielski }
784*b1cdbd2cSJim Jagielski
785*b1cdbd2cSJim Jagielski if (bDone)
786*b1cdbd2cSJim Jagielski //! Notify fuer andere Objekte?
787*b1cdbd2cSJim Jagielski pFormats->SetSaveLater(sal_True);
788*b1cdbd2cSJim Jagielski }
789*b1cdbd2cSJim Jagielski }
790*b1cdbd2cSJim Jagielski else
791*b1cdbd2cSJim Jagielski {
792*b1cdbd2cSJim Jagielski switch (pEntry->nWID)
793*b1cdbd2cSJim Jagielski {
794*b1cdbd2cSJim Jagielski case SC_WID_UNO_TBLBORD:
795*b1cdbd2cSJim Jagielski {
796*b1cdbd2cSJim Jagielski table::TableBorder aBorder;
797*b1cdbd2cSJim Jagielski if ( aValue >>= aBorder ) // empty = nothing to do
798*b1cdbd2cSJim Jagielski {
799*b1cdbd2cSJim Jagielski SvxBoxItem aOuter(ATTR_BORDER);
800*b1cdbd2cSJim Jagielski SvxBoxInfoItem aInner(ATTR_BORDER_INNER);
801*b1cdbd2cSJim Jagielski ScHelperFunctions::FillBoxItems( aOuter, aInner, aBorder );
802*b1cdbd2cSJim Jagielski pData->PutItem( nFieldIndex, aOuter );
803*b1cdbd2cSJim Jagielski
804*b1cdbd2cSJim Jagielski //! Notify fuer andere Objekte?
805*b1cdbd2cSJim Jagielski pFormats->SetSaveLater(sal_True);
806*b1cdbd2cSJim Jagielski }
807*b1cdbd2cSJim Jagielski }
808*b1cdbd2cSJim Jagielski break;
809*b1cdbd2cSJim Jagielski }
810*b1cdbd2cSJim Jagielski }
811*b1cdbd2cSJim Jagielski }
812*b1cdbd2cSJim Jagielski }
813*b1cdbd2cSJim Jagielski
getPropertyValue(const rtl::OUString & aPropertyName)814*b1cdbd2cSJim Jagielski uno::Any SAL_CALL ScAutoFormatFieldObj::getPropertyValue( const rtl::OUString& aPropertyName )
815*b1cdbd2cSJim Jagielski throw(beans::UnknownPropertyException, lang::WrappedTargetException,
816*b1cdbd2cSJim Jagielski uno::RuntimeException)
817*b1cdbd2cSJim Jagielski {
818*b1cdbd2cSJim Jagielski ScUnoGuard aGuard;
819*b1cdbd2cSJim Jagielski uno::Any aVal;
820*b1cdbd2cSJim Jagielski
821*b1cdbd2cSJim Jagielski ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
822*b1cdbd2cSJim Jagielski const SfxItemPropertySimpleEntry* pEntry =
823*b1cdbd2cSJim Jagielski aPropSet.getPropertyMap()->getByName( aPropertyName );
824*b1cdbd2cSJim Jagielski
825*b1cdbd2cSJim Jagielski if ( pEntry && pEntry->nWID && pFormats && nFormatIndex < pFormats->GetCount() )
826*b1cdbd2cSJim Jagielski {
827*b1cdbd2cSJim Jagielski const ScAutoFormatData* pData = (*pFormats)[nFormatIndex];
828*b1cdbd2cSJim Jagielski
829*b1cdbd2cSJim Jagielski if ( IsScItemWid( pEntry->nWID ) )
830*b1cdbd2cSJim Jagielski {
831*b1cdbd2cSJim Jagielski if( const SfxPoolItem* pItem = pData->GetItem( nFieldIndex, pEntry->nWID ) )
832*b1cdbd2cSJim Jagielski {
833*b1cdbd2cSJim Jagielski switch( pEntry->nWID )
834*b1cdbd2cSJim Jagielski {
835*b1cdbd2cSJim Jagielski case ATTR_STACKED:
836*b1cdbd2cSJim Jagielski {
837*b1cdbd2cSJim Jagielski const SfxInt32Item* pRotItem = (const SfxInt32Item*)pData->GetItem( nFieldIndex, ATTR_ROTATE_VALUE );
838*b1cdbd2cSJim Jagielski sal_Int32 nRot = pRotItem ? pRotItem->GetValue() : 0;
839*b1cdbd2cSJim Jagielski sal_Bool bStacked = ((const SfxBoolItem*)pItem)->GetValue();
840*b1cdbd2cSJim Jagielski SvxOrientationItem( nRot, bStacked, 0 ).QueryValue( aVal );
841*b1cdbd2cSJim Jagielski }
842*b1cdbd2cSJim Jagielski break;
843*b1cdbd2cSJim Jagielski default:
844*b1cdbd2cSJim Jagielski pItem->QueryValue( aVal, pEntry->nMemberId );
845*b1cdbd2cSJim Jagielski }
846*b1cdbd2cSJim Jagielski }
847*b1cdbd2cSJim Jagielski }
848*b1cdbd2cSJim Jagielski else
849*b1cdbd2cSJim Jagielski {
850*b1cdbd2cSJim Jagielski switch (pEntry->nWID)
851*b1cdbd2cSJim Jagielski {
852*b1cdbd2cSJim Jagielski case SC_WID_UNO_TBLBORD:
853*b1cdbd2cSJim Jagielski {
854*b1cdbd2cSJim Jagielski const SfxPoolItem* pItem = pData->GetItem(nFieldIndex, ATTR_BORDER);
855*b1cdbd2cSJim Jagielski if (pItem)
856*b1cdbd2cSJim Jagielski {
857*b1cdbd2cSJim Jagielski SvxBoxItem aOuter(*(static_cast<const SvxBoxItem*>(pItem)));
858*b1cdbd2cSJim Jagielski SvxBoxInfoItem aInner(ATTR_BORDER_INNER);
859*b1cdbd2cSJim Jagielski
860*b1cdbd2cSJim Jagielski table::TableBorder aBorder;
861*b1cdbd2cSJim Jagielski ScHelperFunctions::FillTableBorder( aBorder, aOuter, aInner );
862*b1cdbd2cSJim Jagielski aVal <<= aBorder;
863*b1cdbd2cSJim Jagielski }
864*b1cdbd2cSJim Jagielski }
865*b1cdbd2cSJim Jagielski break;
866*b1cdbd2cSJim Jagielski }
867*b1cdbd2cSJim Jagielski }
868*b1cdbd2cSJim Jagielski }
869*b1cdbd2cSJim Jagielski
870*b1cdbd2cSJim Jagielski return aVal;
871*b1cdbd2cSJim Jagielski }
872*b1cdbd2cSJim Jagielski
873*b1cdbd2cSJim Jagielski SC_IMPL_DUMMY_PROPERTY_LISTENER( ScAutoFormatFieldObj )
874*b1cdbd2cSJim Jagielski
875*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
876*b1cdbd2cSJim Jagielski
877*b1cdbd2cSJim Jagielski
878*b1cdbd2cSJim Jagielski
879