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_editeng.hxx"
26*b1cdbd2cSJim Jagielski #include <com/sun/star/util/DateTime.hpp>
27*b1cdbd2cSJim Jagielski #include <com/sun/star/text/FilenameDisplayFormat.hpp>
28*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/NoSupportException.hpp>
29*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/PropertyAttribute.hpp>
30*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
31*b1cdbd2cSJim Jagielski #include <vos/mutex.hxx>
32*b1cdbd2cSJim Jagielski
33*b1cdbd2cSJim Jagielski #include <rtl/uuid.h>
34*b1cdbd2cSJim Jagielski #include <rtl/memory.h>
35*b1cdbd2cSJim Jagielski
36*b1cdbd2cSJim Jagielski #include <editeng/eeitem.hxx>
37*b1cdbd2cSJim Jagielski #include <editeng/flditem.hxx>
38*b1cdbd2cSJim Jagielski #include <editeng/measfld.hxx>
39*b1cdbd2cSJim Jagielski #include <editeng/unofield.hxx>
40*b1cdbd2cSJim Jagielski #include <editeng/unotext.hxx>
41*b1cdbd2cSJim Jagielski #include <comphelper/serviceinfohelper.hxx>
42*b1cdbd2cSJim Jagielski
43*b1cdbd2cSJim Jagielski using namespace ::rtl;
44*b1cdbd2cSJim Jagielski using namespace ::vos;
45*b1cdbd2cSJim Jagielski using namespace ::cppu;
46*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
47*b1cdbd2cSJim Jagielski
48*b1cdbd2cSJim Jagielski #define QUERYINT( xint ) \
49*b1cdbd2cSJim Jagielski if( rType == ::getCppuType((const uno::Reference< xint >*)0) ) \
50*b1cdbd2cSJim Jagielski aAny <<= uno::Reference< xint >(this)
51*b1cdbd2cSJim Jagielski
52*b1cdbd2cSJim Jagielski
53*b1cdbd2cSJim Jagielski #define WID_DATE 0
54*b1cdbd2cSJim Jagielski #define WID_BOOL1 1
55*b1cdbd2cSJim Jagielski #define WID_BOOL2 2
56*b1cdbd2cSJim Jagielski #define WID_INT32 3
57*b1cdbd2cSJim Jagielski #define WID_INT16 4
58*b1cdbd2cSJim Jagielski #define WID_STRING1 5
59*b1cdbd2cSJim Jagielski #define WID_STRING2 6
60*b1cdbd2cSJim Jagielski #define WID_STRING3 7
61*b1cdbd2cSJim Jagielski
62*b1cdbd2cSJim Jagielski class SvxUnoFieldData_Impl
63*b1cdbd2cSJim Jagielski {
64*b1cdbd2cSJim Jagielski public:
65*b1cdbd2cSJim Jagielski sal_Bool mbBoolean1;
66*b1cdbd2cSJim Jagielski sal_Bool mbBoolean2;
67*b1cdbd2cSJim Jagielski sal_Int32 mnInt32;
68*b1cdbd2cSJim Jagielski sal_Int16 mnInt16;
69*b1cdbd2cSJim Jagielski OUString msString1;
70*b1cdbd2cSJim Jagielski OUString msString2;
71*b1cdbd2cSJim Jagielski OUString msString3;
72*b1cdbd2cSJim Jagielski util::DateTime maDateTime;
73*b1cdbd2cSJim Jagielski
74*b1cdbd2cSJim Jagielski OUString msPresentation;
75*b1cdbd2cSJim Jagielski };
76*b1cdbd2cSJim Jagielski
ImplGetFieldItemPropertySet(sal_Int32 mnId)77*b1cdbd2cSJim Jagielski const SfxItemPropertySet* ImplGetFieldItemPropertySet( sal_Int32 mnId )
78*b1cdbd2cSJim Jagielski {
79*b1cdbd2cSJim Jagielski static SfxItemPropertyMapEntry aExDateTimeFieldPropertyMap_Impl[] =
80*b1cdbd2cSJim Jagielski {
81*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("DateTime"), WID_DATE, &::getCppuType((const util::DateTime*)0), 0, 0 },
82*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("IsFixed"), WID_BOOL1, &::getBooleanCppuType(), 0, 0 },
83*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("IsDate"), WID_BOOL2, &::getBooleanCppuType(), 0, 0 },
84*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("NumberFormat"), WID_INT32, &::getCppuType((const sal_Int16*)0), 0, 0 },
85*b1cdbd2cSJim Jagielski {0,0,0,0,0,0}
86*b1cdbd2cSJim Jagielski };
87*b1cdbd2cSJim Jagielski static SfxItemPropertySet aExDateTimeFieldPropertySet_Impl(aExDateTimeFieldPropertyMap_Impl);
88*b1cdbd2cSJim Jagielski
89*b1cdbd2cSJim Jagielski static SfxItemPropertyMapEntry aDateTimeFieldPropertyMap_Impl[] =
90*b1cdbd2cSJim Jagielski {
91*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("IsDate"), WID_BOOL2, &::getBooleanCppuType(), 0, 0 },
92*b1cdbd2cSJim Jagielski {0,0,0,0,0,0}
93*b1cdbd2cSJim Jagielski };
94*b1cdbd2cSJim Jagielski static SfxItemPropertySet aDateTimeFieldPropertySet_Impl(aDateTimeFieldPropertyMap_Impl);
95*b1cdbd2cSJim Jagielski
96*b1cdbd2cSJim Jagielski static SfxItemPropertyMapEntry aUrlFieldPropertyMap_Impl[] =
97*b1cdbd2cSJim Jagielski {
98*b1cdbd2cSJim Jagielski
99*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("Format"), WID_INT16, &::getCppuType((const sal_Int16*)0), 0, 0 },
100*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("Representation"), WID_STRING1, &::getCppuType((const OUString*)0), 0, 0 },
101*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("TargetFrame"), WID_STRING2, &::getCppuType((const OUString*)0), 0, 0 },
102*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("URL"), WID_STRING3, &::getCppuType((const OUString*)0), 0, 0 },
103*b1cdbd2cSJim Jagielski {0,0,0,0,0,0}
104*b1cdbd2cSJim Jagielski };
105*b1cdbd2cSJim Jagielski static SfxItemPropertySet aUrlFieldPropertySet_Impl(aUrlFieldPropertyMap_Impl);
106*b1cdbd2cSJim Jagielski
107*b1cdbd2cSJim Jagielski static SfxItemPropertyMapEntry aEmptyPropertyMap_Impl[] =
108*b1cdbd2cSJim Jagielski {
109*b1cdbd2cSJim Jagielski {0,0,0,0,0,0}
110*b1cdbd2cSJim Jagielski };
111*b1cdbd2cSJim Jagielski static SfxItemPropertySet aEmptyPropertySet_Impl(aEmptyPropertyMap_Impl);
112*b1cdbd2cSJim Jagielski
113*b1cdbd2cSJim Jagielski static SfxItemPropertyMapEntry aExtFileFieldPropertyMap_Impl[] =
114*b1cdbd2cSJim Jagielski {
115*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("IsFixed"), WID_BOOL1, &::getBooleanCppuType(), 0, 0 },
116*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("FileFormat"), WID_INT16, &::getCppuType((const sal_Int16*)0), 0, 0 },
117*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("CurrentPresentation"), WID_STRING1,&::getCppuType((const OUString*)0), 0, 0 },
118*b1cdbd2cSJim Jagielski {0,0,0,0,0,0}
119*b1cdbd2cSJim Jagielski };
120*b1cdbd2cSJim Jagielski static SfxItemPropertySet aExtFileFieldPropertySet_Impl(aExtFileFieldPropertyMap_Impl);
121*b1cdbd2cSJim Jagielski
122*b1cdbd2cSJim Jagielski static SfxItemPropertyMapEntry aAuthorFieldPropertyMap_Impl[] =
123*b1cdbd2cSJim Jagielski {
124*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("IsFixed"), WID_BOOL1, &::getBooleanCppuType(), 0, 0 },
125*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("CurrentPresentation"), WID_STRING1,&::getCppuType((const OUString*)0), 0, 0 },
126*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("Content"), WID_STRING2,&::getCppuType((const OUString*)0), 0, 0 },
127*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("AuthorFormat"), WID_INT16, &::getCppuType((const sal_Int16*)0), 0, 0 },
128*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("FullName"), WID_BOOL2, &::getBooleanCppuType(), 0, 0 },
129*b1cdbd2cSJim Jagielski {0,0,0,0,0,0}
130*b1cdbd2cSJim Jagielski };
131*b1cdbd2cSJim Jagielski static SfxItemPropertySet aAuthorFieldPropertySet_Impl(aAuthorFieldPropertyMap_Impl);
132*b1cdbd2cSJim Jagielski
133*b1cdbd2cSJim Jagielski static SfxItemPropertyMapEntry aMeasureFieldPropertyMap_Impl[] =
134*b1cdbd2cSJim Jagielski {
135*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("Kind"), WID_INT16, &::getCppuType((const sal_Int16*)0), 0, 0 },
136*b1cdbd2cSJim Jagielski {0,0,0,0,0,0}
137*b1cdbd2cSJim Jagielski };
138*b1cdbd2cSJim Jagielski static SfxItemPropertySet aMeasureFieldPropertySet_Impl(aMeasureFieldPropertyMap_Impl);
139*b1cdbd2cSJim Jagielski
140*b1cdbd2cSJim Jagielski switch( mnId )
141*b1cdbd2cSJim Jagielski {
142*b1cdbd2cSJim Jagielski case ID_EXT_DATEFIELD:
143*b1cdbd2cSJim Jagielski case ID_EXT_TIMEFIELD:
144*b1cdbd2cSJim Jagielski return &aExDateTimeFieldPropertySet_Impl;
145*b1cdbd2cSJim Jagielski case ID_URLFIELD:
146*b1cdbd2cSJim Jagielski return &aUrlFieldPropertySet_Impl;
147*b1cdbd2cSJim Jagielski case ID_DATEFIELD:
148*b1cdbd2cSJim Jagielski case ID_TIMEFIELD:
149*b1cdbd2cSJim Jagielski return &aDateTimeFieldPropertySet_Impl;
150*b1cdbd2cSJim Jagielski case ID_EXT_FILEFIELD:
151*b1cdbd2cSJim Jagielski return &aExtFileFieldPropertySet_Impl;
152*b1cdbd2cSJim Jagielski case ID_AUTHORFIELD:
153*b1cdbd2cSJim Jagielski return &aAuthorFieldPropertySet_Impl;
154*b1cdbd2cSJim Jagielski case ID_MEASUREFIELD:
155*b1cdbd2cSJim Jagielski return &aMeasureFieldPropertySet_Impl;
156*b1cdbd2cSJim Jagielski // case ID_PAGEFIELD:
157*b1cdbd2cSJim Jagielski // case ID_PAGESFIELD:
158*b1cdbd2cSJim Jagielski // case ID_FILEFIELD:
159*b1cdbd2cSJim Jagielski // case ID_TABLEFIELD:
160*b1cdbd2cSJim Jagielski // case ID_HEADERFIELD:
161*b1cdbd2cSJim Jagielski // case ID_FOOTERFIELD:
162*b1cdbd2cSJim Jagielski // case ID_DATETIMEFIELD::
163*b1cdbd2cSJim Jagielski default:
164*b1cdbd2cSJim Jagielski return &aEmptyPropertySet_Impl;
165*b1cdbd2cSJim Jagielski }
166*b1cdbd2cSJim Jagielski }
167*b1cdbd2cSJim Jagielski
168*b1cdbd2cSJim Jagielski static sal_Char const* aFieldItemNameMap_Impl[] =
169*b1cdbd2cSJim Jagielski {
170*b1cdbd2cSJim Jagielski "Date",
171*b1cdbd2cSJim Jagielski "URL",
172*b1cdbd2cSJim Jagielski "Page",
173*b1cdbd2cSJim Jagielski "Pages",
174*b1cdbd2cSJim Jagielski "Time",
175*b1cdbd2cSJim Jagielski "File",
176*b1cdbd2cSJim Jagielski "Table",
177*b1cdbd2cSJim Jagielski "ExtTime",
178*b1cdbd2cSJim Jagielski "ExtFile",
179*b1cdbd2cSJim Jagielski "Author",
180*b1cdbd2cSJim Jagielski "Measure",
181*b1cdbd2cSJim Jagielski "ExtDate",
182*b1cdbd2cSJim Jagielski "Header",
183*b1cdbd2cSJim Jagielski "Footer",
184*b1cdbd2cSJim Jagielski "DateTime",
185*b1cdbd2cSJim Jagielski "Unknown"
186*b1cdbd2cSJim Jagielski };
187*b1cdbd2cSJim Jagielski
188*b1cdbd2cSJim Jagielski /* conversion routines */
189*b1cdbd2cSJim Jagielski
getFileNameDisplayFormat(SvxFileFormat nFormat)190*b1cdbd2cSJim Jagielski static sal_Int16 getFileNameDisplayFormat( SvxFileFormat nFormat )
191*b1cdbd2cSJim Jagielski {
192*b1cdbd2cSJim Jagielski switch( nFormat )
193*b1cdbd2cSJim Jagielski {
194*b1cdbd2cSJim Jagielski case SVXFILEFORMAT_NAME_EXT: return text::FilenameDisplayFormat::NAME_AND_EXT;
195*b1cdbd2cSJim Jagielski case SVXFILEFORMAT_FULLPATH: return text::FilenameDisplayFormat::FULL;
196*b1cdbd2cSJim Jagielski case SVXFILEFORMAT_PATH: return text::FilenameDisplayFormat::PATH;
197*b1cdbd2cSJim Jagielski // case SVXFILEFORMAT_NAME:
198*b1cdbd2cSJim Jagielski default: return text::FilenameDisplayFormat::NAME;
199*b1cdbd2cSJim Jagielski }
200*b1cdbd2cSJim Jagielski }
201*b1cdbd2cSJim Jagielski
setFileNameDisplayFormat(sal_Int16 nFormat)202*b1cdbd2cSJim Jagielski static SvxFileFormat setFileNameDisplayFormat( sal_Int16 nFormat )
203*b1cdbd2cSJim Jagielski {
204*b1cdbd2cSJim Jagielski switch( nFormat )
205*b1cdbd2cSJim Jagielski {
206*b1cdbd2cSJim Jagielski case text::FilenameDisplayFormat::FULL: return SVXFILEFORMAT_FULLPATH;
207*b1cdbd2cSJim Jagielski case text::FilenameDisplayFormat::PATH: return SVXFILEFORMAT_PATH;
208*b1cdbd2cSJim Jagielski case text::FilenameDisplayFormat::NAME: return SVXFILEFORMAT_NAME;
209*b1cdbd2cSJim Jagielski // case text::FilenameDisplayFormat::NAME_AND_EXT:
210*b1cdbd2cSJim Jagielski default:
211*b1cdbd2cSJim Jagielski return SVXFILEFORMAT_NAME_EXT;
212*b1cdbd2cSJim Jagielski }
213*b1cdbd2cSJim Jagielski }
214*b1cdbd2cSJim Jagielski
getDate(sal_uLong nDate)215*b1cdbd2cSJim Jagielski static util::DateTime getDate( sal_uLong nDate )
216*b1cdbd2cSJim Jagielski {
217*b1cdbd2cSJim Jagielski util::DateTime aDate;
218*b1cdbd2cSJim Jagielski memset( &aDate, 0, sizeof( util::DateTime ) );
219*b1cdbd2cSJim Jagielski
220*b1cdbd2cSJim Jagielski Date aTempDate( nDate );
221*b1cdbd2cSJim Jagielski
222*b1cdbd2cSJim Jagielski aDate.Day = aTempDate.GetDay();
223*b1cdbd2cSJim Jagielski aDate.Month = aTempDate.GetMonth();
224*b1cdbd2cSJim Jagielski aDate.Year = aTempDate.GetYear();
225*b1cdbd2cSJim Jagielski
226*b1cdbd2cSJim Jagielski return aDate;
227*b1cdbd2cSJim Jagielski }
228*b1cdbd2cSJim Jagielski
setDate(util::DateTime & rDate)229*b1cdbd2cSJim Jagielski inline Date setDate( util::DateTime& rDate )
230*b1cdbd2cSJim Jagielski {
231*b1cdbd2cSJim Jagielski return Date( rDate.Day, rDate.Month, rDate.Year );
232*b1cdbd2cSJim Jagielski }
233*b1cdbd2cSJim Jagielski
getTime(long nTime)234*b1cdbd2cSJim Jagielski static util::DateTime getTime( long nTime )
235*b1cdbd2cSJim Jagielski {
236*b1cdbd2cSJim Jagielski util::DateTime aTime;
237*b1cdbd2cSJim Jagielski memset( &aTime, 0, sizeof( util::DateTime ) );
238*b1cdbd2cSJim Jagielski
239*b1cdbd2cSJim Jagielski Time aTempTime( nTime );
240*b1cdbd2cSJim Jagielski
241*b1cdbd2cSJim Jagielski aTime.HundredthSeconds = aTempTime.Get100Sec();
242*b1cdbd2cSJim Jagielski aTime.Seconds = aTempTime.GetSec();
243*b1cdbd2cSJim Jagielski aTime.Minutes = aTempTime.GetMin();
244*b1cdbd2cSJim Jagielski aTime.Hours = aTempTime.GetHour();
245*b1cdbd2cSJim Jagielski
246*b1cdbd2cSJim Jagielski return aTime;
247*b1cdbd2cSJim Jagielski }
248*b1cdbd2cSJim Jagielski
setTime(util::DateTime & rDate)249*b1cdbd2cSJim Jagielski inline Time setTime( util::DateTime& rDate )
250*b1cdbd2cSJim Jagielski {
251*b1cdbd2cSJim Jagielski return Time( rDate.Hours, rDate.Minutes, rDate.Seconds, rDate.HundredthSeconds );
252*b1cdbd2cSJim Jagielski }
253*b1cdbd2cSJim Jagielski
254*b1cdbd2cSJim Jagielski // ====================================================================
255*b1cdbd2cSJim Jagielski // class SvxUnoTextField
256*b1cdbd2cSJim Jagielski // ====================================================================
257*b1cdbd2cSJim Jagielski UNO3_GETIMPLEMENTATION_IMPL( SvxUnoTextField );
258*b1cdbd2cSJim Jagielski
SvxUnoTextField(sal_Int32 nServiceId)259*b1cdbd2cSJim Jagielski SvxUnoTextField::SvxUnoTextField( sal_Int32 nServiceId ) throw()
260*b1cdbd2cSJim Jagielski : OComponentHelper( getMutex() )
261*b1cdbd2cSJim Jagielski , mpPropSet(NULL)
262*b1cdbd2cSJim Jagielski , mnServiceId(nServiceId)
263*b1cdbd2cSJim Jagielski , mpImpl( new SvxUnoFieldData_Impl )
264*b1cdbd2cSJim Jagielski {
265*b1cdbd2cSJim Jagielski mpPropSet = ImplGetFieldItemPropertySet(mnServiceId);
266*b1cdbd2cSJim Jagielski
267*b1cdbd2cSJim Jagielski memset( &(mpImpl->maDateTime), 0, sizeof( util::DateTime ) );
268*b1cdbd2cSJim Jagielski
269*b1cdbd2cSJim Jagielski switch( nServiceId )
270*b1cdbd2cSJim Jagielski {
271*b1cdbd2cSJim Jagielski case ID_EXT_DATEFIELD:
272*b1cdbd2cSJim Jagielski case ID_DATEFIELD:
273*b1cdbd2cSJim Jagielski mpImpl->mbBoolean2 = sal_True;
274*b1cdbd2cSJim Jagielski mpImpl->mnInt32 = SVXDATEFORMAT_STDSMALL;
275*b1cdbd2cSJim Jagielski mpImpl->mbBoolean1 = sal_False;
276*b1cdbd2cSJim Jagielski break;
277*b1cdbd2cSJim Jagielski
278*b1cdbd2cSJim Jagielski case ID_EXT_TIMEFIELD:
279*b1cdbd2cSJim Jagielski case ID_TIMEFIELD:
280*b1cdbd2cSJim Jagielski mpImpl->mbBoolean2 = sal_False;
281*b1cdbd2cSJim Jagielski mpImpl->mbBoolean1 = sal_False;
282*b1cdbd2cSJim Jagielski mpImpl->mnInt32 = SVXTIMEFORMAT_STANDARD;
283*b1cdbd2cSJim Jagielski break;
284*b1cdbd2cSJim Jagielski
285*b1cdbd2cSJim Jagielski case ID_URLFIELD:
286*b1cdbd2cSJim Jagielski mpImpl->mnInt16 = SVXURLFORMAT_REPR;
287*b1cdbd2cSJim Jagielski break;
288*b1cdbd2cSJim Jagielski
289*b1cdbd2cSJim Jagielski case ID_EXT_FILEFIELD:
290*b1cdbd2cSJim Jagielski mpImpl->mbBoolean1 = sal_False;
291*b1cdbd2cSJim Jagielski mpImpl->mnInt16 = text::FilenameDisplayFormat::FULL;
292*b1cdbd2cSJim Jagielski break;
293*b1cdbd2cSJim Jagielski
294*b1cdbd2cSJim Jagielski case ID_AUTHORFIELD:
295*b1cdbd2cSJim Jagielski mpImpl->mnInt16 = SVXAUTHORFORMAT_FULLNAME;
296*b1cdbd2cSJim Jagielski mpImpl->mbBoolean1 = sal_False;
297*b1cdbd2cSJim Jagielski mpImpl->mbBoolean2 = sal_True;
298*b1cdbd2cSJim Jagielski break;
299*b1cdbd2cSJim Jagielski
300*b1cdbd2cSJim Jagielski case ID_MEASUREFIELD:
301*b1cdbd2cSJim Jagielski mpImpl->mnInt16 = SDRMEASUREFIELD_VALUE;
302*b1cdbd2cSJim Jagielski break;
303*b1cdbd2cSJim Jagielski
304*b1cdbd2cSJim Jagielski default:
305*b1cdbd2cSJim Jagielski mpImpl->mbBoolean1 = sal_False;
306*b1cdbd2cSJim Jagielski mpImpl->mbBoolean2 = sal_False;
307*b1cdbd2cSJim Jagielski mpImpl->mnInt32 = 0;
308*b1cdbd2cSJim Jagielski mpImpl->mnInt16 = 0;
309*b1cdbd2cSJim Jagielski
310*b1cdbd2cSJim Jagielski }
311*b1cdbd2cSJim Jagielski }
312*b1cdbd2cSJim Jagielski
SvxUnoTextField(uno::Reference<text::XTextRange> xAnchor,const OUString & rPresentation,const SvxFieldData * pData)313*b1cdbd2cSJim Jagielski SvxUnoTextField::SvxUnoTextField( uno::Reference< text::XTextRange > xAnchor, const OUString& rPresentation, const SvxFieldData* pData ) throw()
314*b1cdbd2cSJim Jagielski : OComponentHelper( getMutex() )
315*b1cdbd2cSJim Jagielski , mxAnchor( xAnchor )
316*b1cdbd2cSJim Jagielski , mpPropSet(NULL)
317*b1cdbd2cSJim Jagielski , mnServiceId(ID_UNKNOWN)
318*b1cdbd2cSJim Jagielski , mpImpl( new SvxUnoFieldData_Impl )
319*b1cdbd2cSJim Jagielski {
320*b1cdbd2cSJim Jagielski DBG_ASSERT(pData, "pFieldData == NULL! [CL]" );
321*b1cdbd2cSJim Jagielski
322*b1cdbd2cSJim Jagielski mpImpl->msPresentation = rPresentation;
323*b1cdbd2cSJim Jagielski
324*b1cdbd2cSJim Jagielski if(pData)
325*b1cdbd2cSJim Jagielski {
326*b1cdbd2cSJim Jagielski mnServiceId = GetFieldId(pData);
327*b1cdbd2cSJim Jagielski DBG_ASSERT(mnServiceId != ID_UNKNOWN, "unknown SvxFieldData! [CL]");
328*b1cdbd2cSJim Jagielski if(mnServiceId != ID_UNKNOWN)
329*b1cdbd2cSJim Jagielski {
330*b1cdbd2cSJim Jagielski // extract field properties from data class
331*b1cdbd2cSJim Jagielski switch( mnServiceId )
332*b1cdbd2cSJim Jagielski {
333*b1cdbd2cSJim Jagielski case ID_DATEFIELD:
334*b1cdbd2cSJim Jagielski case ID_EXT_DATEFIELD:
335*b1cdbd2cSJim Jagielski {
336*b1cdbd2cSJim Jagielski mpImpl->mbBoolean2 = sal_True;
337*b1cdbd2cSJim Jagielski // #i35416# for variable date field, don't use invalid "0000-00-00" date,
338*b1cdbd2cSJim Jagielski // use current date instead
339*b1cdbd2cSJim Jagielski sal_Bool bFixed = ((SvxDateField*)pData)->GetType() == SVXDATETYPE_FIX;
340*b1cdbd2cSJim Jagielski mpImpl->maDateTime = getDate( bFixed ?
341*b1cdbd2cSJim Jagielski ((SvxDateField*)pData)->GetFixDate() :
342*b1cdbd2cSJim Jagielski Date().GetDate() );
343*b1cdbd2cSJim Jagielski mpImpl->mnInt32 = ((SvxDateField*)pData)->GetFormat();
344*b1cdbd2cSJim Jagielski mpImpl->mbBoolean1 = bFixed;
345*b1cdbd2cSJim Jagielski }
346*b1cdbd2cSJim Jagielski break;
347*b1cdbd2cSJim Jagielski
348*b1cdbd2cSJim Jagielski case ID_TIMEFIELD:
349*b1cdbd2cSJim Jagielski mpImpl->mbBoolean2 = sal_False;
350*b1cdbd2cSJim Jagielski mpImpl->mbBoolean1 = sal_False;
351*b1cdbd2cSJim Jagielski mpImpl->mnInt32 = SVXTIMEFORMAT_STANDARD;
352*b1cdbd2cSJim Jagielski break;
353*b1cdbd2cSJim Jagielski
354*b1cdbd2cSJim Jagielski case ID_EXT_TIMEFIELD:
355*b1cdbd2cSJim Jagielski mpImpl->mbBoolean2 = sal_False;
356*b1cdbd2cSJim Jagielski mpImpl->maDateTime = getTime( ((SvxExtTimeField*)pData)->GetFixTime() );
357*b1cdbd2cSJim Jagielski mpImpl->mbBoolean1 = ((SvxExtTimeField*)pData)->GetType() == SVXTIMETYPE_FIX;
358*b1cdbd2cSJim Jagielski mpImpl->mnInt32 = ((SvxExtTimeField*)pData)->GetFormat();
359*b1cdbd2cSJim Jagielski break;
360*b1cdbd2cSJim Jagielski
361*b1cdbd2cSJim Jagielski case ID_URLFIELD:
362*b1cdbd2cSJim Jagielski mpImpl->msString1 = ((SvxURLField*)pData)->GetRepresentation();
363*b1cdbd2cSJim Jagielski mpImpl->msString2 = ((SvxURLField*)pData)->GetTargetFrame();
364*b1cdbd2cSJim Jagielski mpImpl->msString3 = ((SvxURLField*)pData)->GetURL();
365*b1cdbd2cSJim Jagielski mpImpl->mnInt16 = sal::static_int_cast< sal_Int16 >(
366*b1cdbd2cSJim Jagielski ((SvxURLField*)pData)->GetFormat());
367*b1cdbd2cSJim Jagielski break;
368*b1cdbd2cSJim Jagielski
369*b1cdbd2cSJim Jagielski case ID_EXT_FILEFIELD:
370*b1cdbd2cSJim Jagielski mpImpl->msString1 = ((SvxExtFileField*)pData)->GetFile();
371*b1cdbd2cSJim Jagielski mpImpl->mbBoolean1 = ((SvxExtFileField*)pData)->GetType() == SVXFILETYPE_FIX;
372*b1cdbd2cSJim Jagielski mpImpl->mnInt16 = getFileNameDisplayFormat(((SvxExtFileField*)pData)->GetFormat());
373*b1cdbd2cSJim Jagielski break;
374*b1cdbd2cSJim Jagielski
375*b1cdbd2cSJim Jagielski case ID_AUTHORFIELD:
376*b1cdbd2cSJim Jagielski mpImpl->msString1 = ((SvxAuthorField*)pData)->GetFormatted();
377*b1cdbd2cSJim Jagielski mpImpl->msString2 = ((SvxAuthorField*)pData)->GetFormatted();
378*b1cdbd2cSJim Jagielski mpImpl->mnInt16 = sal::static_int_cast< sal_Int16 >(
379*b1cdbd2cSJim Jagielski ((SvxAuthorField*)pData)->GetFormat());
380*b1cdbd2cSJim Jagielski mpImpl->mbBoolean1 = ((SvxAuthorField*)pData)->GetType() == SVXAUTHORTYPE_FIX;
381*b1cdbd2cSJim Jagielski mpImpl->mbBoolean2 = ((SvxAuthorField*)pData)->GetFormat() != SVXAUTHORFORMAT_SHORTNAME;
382*b1cdbd2cSJim Jagielski break;
383*b1cdbd2cSJim Jagielski
384*b1cdbd2cSJim Jagielski case ID_MEASUREFIELD:
385*b1cdbd2cSJim Jagielski mpImpl->mnInt16 = sal::static_int_cast< sal_Int16 >(((SdrMeasureField*)pData)->GetMeasureFieldKind());
386*b1cdbd2cSJim Jagielski break;
387*b1cdbd2cSJim Jagielski }
388*b1cdbd2cSJim Jagielski }
389*b1cdbd2cSJim Jagielski }
390*b1cdbd2cSJim Jagielski
391*b1cdbd2cSJim Jagielski mpPropSet = ImplGetFieldItemPropertySet(mnServiceId);
392*b1cdbd2cSJim Jagielski }
393*b1cdbd2cSJim Jagielski
~SvxUnoTextField()394*b1cdbd2cSJim Jagielski SvxUnoTextField::~SvxUnoTextField() throw()
395*b1cdbd2cSJim Jagielski {
396*b1cdbd2cSJim Jagielski delete mpImpl;
397*b1cdbd2cSJim Jagielski }
398*b1cdbd2cSJim Jagielski
CreateFieldData() const399*b1cdbd2cSJim Jagielski SvxFieldData* SvxUnoTextField::CreateFieldData() const throw()
400*b1cdbd2cSJim Jagielski {
401*b1cdbd2cSJim Jagielski SvxFieldData* pData = NULL;
402*b1cdbd2cSJim Jagielski
403*b1cdbd2cSJim Jagielski switch( mnServiceId )
404*b1cdbd2cSJim Jagielski {
405*b1cdbd2cSJim Jagielski case ID_TIMEFIELD:
406*b1cdbd2cSJim Jagielski case ID_EXT_TIMEFIELD:
407*b1cdbd2cSJim Jagielski case ID_DATEFIELD:
408*b1cdbd2cSJim Jagielski case ID_EXT_DATEFIELD:
409*b1cdbd2cSJim Jagielski {
410*b1cdbd2cSJim Jagielski if( mpImpl->mbBoolean2 ) // IsDate?
411*b1cdbd2cSJim Jagielski {
412*b1cdbd2cSJim Jagielski Date aDate( setDate( mpImpl->maDateTime ) );
413*b1cdbd2cSJim Jagielski pData = new SvxDateField( aDate, mpImpl->mbBoolean1?SVXDATETYPE_FIX:SVXDATETYPE_VAR );
414*b1cdbd2cSJim Jagielski if( mpImpl->mnInt32 >= SVXDATEFORMAT_APPDEFAULT && mpImpl->mnInt32 <= SVXDATEFORMAT_F )
415*b1cdbd2cSJim Jagielski ((SvxDateField*)pData)->SetFormat( (SvxDateFormat)mpImpl->mnInt32 );
416*b1cdbd2cSJim Jagielski }
417*b1cdbd2cSJim Jagielski else
418*b1cdbd2cSJim Jagielski {
419*b1cdbd2cSJim Jagielski if( mnServiceId != ID_TIMEFIELD && mnServiceId != ID_DATEFIELD )
420*b1cdbd2cSJim Jagielski {
421*b1cdbd2cSJim Jagielski Time aTime( setTime( mpImpl->maDateTime ) );
422*b1cdbd2cSJim Jagielski pData = new SvxExtTimeField( aTime, mpImpl->mbBoolean1?SVXTIMETYPE_FIX:SVXTIMETYPE_VAR );
423*b1cdbd2cSJim Jagielski
424*b1cdbd2cSJim Jagielski if( mpImpl->mnInt32 >= SVXTIMEFORMAT_APPDEFAULT && mpImpl->mnInt32 <= SVXTIMEFORMAT_AM_HMSH )
425*b1cdbd2cSJim Jagielski ((SvxExtTimeField*)pData)->SetFormat( (SvxTimeFormat)mpImpl->mnInt32 );
426*b1cdbd2cSJim Jagielski }
427*b1cdbd2cSJim Jagielski else
428*b1cdbd2cSJim Jagielski {
429*b1cdbd2cSJim Jagielski pData = new SvxTimeField();
430*b1cdbd2cSJim Jagielski }
431*b1cdbd2cSJim Jagielski }
432*b1cdbd2cSJim Jagielski
433*b1cdbd2cSJim Jagielski }
434*b1cdbd2cSJim Jagielski break;
435*b1cdbd2cSJim Jagielski
436*b1cdbd2cSJim Jagielski case ID_URLFIELD:
437*b1cdbd2cSJim Jagielski pData = new SvxURLField( mpImpl->msString3, mpImpl->msString1, mpImpl->msString1.getLength() ? SVXURLFORMAT_REPR : SVXURLFORMAT_URL );
438*b1cdbd2cSJim Jagielski ((SvxURLField*)pData)->SetTargetFrame( mpImpl->msString2 );
439*b1cdbd2cSJim Jagielski if( mpImpl->mnInt16 >= SVXURLFORMAT_APPDEFAULT && mpImpl->mnInt16 <= SVXURLFORMAT_REPR )
440*b1cdbd2cSJim Jagielski ((SvxURLField*)pData)->SetFormat( (SvxURLFormat)mpImpl->mnInt16 );
441*b1cdbd2cSJim Jagielski break;
442*b1cdbd2cSJim Jagielski
443*b1cdbd2cSJim Jagielski case ID_PAGEFIELD:
444*b1cdbd2cSJim Jagielski pData = new SvxPageField();
445*b1cdbd2cSJim Jagielski break;
446*b1cdbd2cSJim Jagielski
447*b1cdbd2cSJim Jagielski case ID_PAGESFIELD:
448*b1cdbd2cSJim Jagielski pData = new SvxPagesField();
449*b1cdbd2cSJim Jagielski break;
450*b1cdbd2cSJim Jagielski
451*b1cdbd2cSJim Jagielski case ID_FILEFIELD:
452*b1cdbd2cSJim Jagielski pData = new SvxFileField();
453*b1cdbd2cSJim Jagielski break;
454*b1cdbd2cSJim Jagielski
455*b1cdbd2cSJim Jagielski case ID_TABLEFIELD:
456*b1cdbd2cSJim Jagielski pData = new SvxTableField();
457*b1cdbd2cSJim Jagielski break;
458*b1cdbd2cSJim Jagielski
459*b1cdbd2cSJim Jagielski case ID_EXT_FILEFIELD:
460*b1cdbd2cSJim Jagielski {
461*b1cdbd2cSJim Jagielski // #92009# pass fixed attribute to constructor
462*b1cdbd2cSJim Jagielski pData = new SvxExtFileField( mpImpl->msString1,
463*b1cdbd2cSJim Jagielski mpImpl->mbBoolean1 ? SVXFILETYPE_FIX : SVXFILETYPE_VAR,
464*b1cdbd2cSJim Jagielski setFileNameDisplayFormat(mpImpl->mnInt16 ) );
465*b1cdbd2cSJim Jagielski break;
466*b1cdbd2cSJim Jagielski }
467*b1cdbd2cSJim Jagielski
468*b1cdbd2cSJim Jagielski case ID_AUTHORFIELD:
469*b1cdbd2cSJim Jagielski {
470*b1cdbd2cSJim Jagielski ::rtl::OUString aContent;
471*b1cdbd2cSJim Jagielski String aFirstName;
472*b1cdbd2cSJim Jagielski String aLastName;
473*b1cdbd2cSJim Jagielski String aEmpty;
474*b1cdbd2cSJim Jagielski
475*b1cdbd2cSJim Jagielski // do we have CurrentPresentation given?
476*b1cdbd2cSJim Jagielski // mimic behaviour of writer, which means:
477*b1cdbd2cSJim Jagielski // prefer CurrentPresentation over Content
478*b1cdbd2cSJim Jagielski // if both are given.
479*b1cdbd2cSJim Jagielski if( mpImpl->msString1.getLength() )
480*b1cdbd2cSJim Jagielski aContent = mpImpl->msString1;
481*b1cdbd2cSJim Jagielski else
482*b1cdbd2cSJim Jagielski aContent = mpImpl->msString2;
483*b1cdbd2cSJim Jagielski
484*b1cdbd2cSJim Jagielski sal_Int32 nPos = aContent.lastIndexOf( sal_Char(' '), 0 );
485*b1cdbd2cSJim Jagielski if( nPos > 0 )
486*b1cdbd2cSJim Jagielski {
487*b1cdbd2cSJim Jagielski aFirstName = aContent.copy( 0, nPos );
488*b1cdbd2cSJim Jagielski aLastName = aContent.copy( nPos + 1 );
489*b1cdbd2cSJim Jagielski }
490*b1cdbd2cSJim Jagielski else
491*b1cdbd2cSJim Jagielski {
492*b1cdbd2cSJim Jagielski aLastName = aContent;
493*b1cdbd2cSJim Jagielski }
494*b1cdbd2cSJim Jagielski
495*b1cdbd2cSJim Jagielski // #92009# pass fixed attribute to constructor
496*b1cdbd2cSJim Jagielski pData = new SvxAuthorField( aFirstName, aLastName, aEmpty,
497*b1cdbd2cSJim Jagielski mpImpl->mbBoolean1 ? SVXAUTHORTYPE_FIX : SVXAUTHORTYPE_VAR );
498*b1cdbd2cSJim Jagielski
499*b1cdbd2cSJim Jagielski if( !mpImpl->mbBoolean2 )
500*b1cdbd2cSJim Jagielski {
501*b1cdbd2cSJim Jagielski ((SvxAuthorField*)pData)->SetFormat( SVXAUTHORFORMAT_SHORTNAME );
502*b1cdbd2cSJim Jagielski }
503*b1cdbd2cSJim Jagielski else if( mpImpl->mnInt16 >= SVXAUTHORFORMAT_FULLNAME || mpImpl->mnInt16 <= SVXAUTHORFORMAT_SHORTNAME )
504*b1cdbd2cSJim Jagielski {
505*b1cdbd2cSJim Jagielski ((SvxAuthorField*)pData)->SetFormat( (SvxAuthorFormat) mpImpl->mnInt16 );
506*b1cdbd2cSJim Jagielski }
507*b1cdbd2cSJim Jagielski
508*b1cdbd2cSJim Jagielski break;
509*b1cdbd2cSJim Jagielski }
510*b1cdbd2cSJim Jagielski
511*b1cdbd2cSJim Jagielski case ID_MEASUREFIELD:
512*b1cdbd2cSJim Jagielski {
513*b1cdbd2cSJim Jagielski SdrMeasureFieldKind eKind = SDRMEASUREFIELD_VALUE;
514*b1cdbd2cSJim Jagielski if( mpImpl->mnInt16 == (sal_Int16)SDRMEASUREFIELD_UNIT || mpImpl->mnInt16 == (sal_Int16)SDRMEASUREFIELD_ROTA90BLANCS )
515*b1cdbd2cSJim Jagielski eKind = (SdrMeasureFieldKind) mpImpl->mnInt16;
516*b1cdbd2cSJim Jagielski pData = new SdrMeasureField( eKind);
517*b1cdbd2cSJim Jagielski break;
518*b1cdbd2cSJim Jagielski }
519*b1cdbd2cSJim Jagielski case ID_HEADERFIELD:
520*b1cdbd2cSJim Jagielski pData = new SvxHeaderField();
521*b1cdbd2cSJim Jagielski break;
522*b1cdbd2cSJim Jagielski case ID_FOOTERFIELD:
523*b1cdbd2cSJim Jagielski pData = new SvxFooterField();
524*b1cdbd2cSJim Jagielski break;
525*b1cdbd2cSJim Jagielski case ID_DATETIMEFIELD:
526*b1cdbd2cSJim Jagielski pData = new SvxDateTimeField();
527*b1cdbd2cSJim Jagielski break;
528*b1cdbd2cSJim Jagielski };
529*b1cdbd2cSJim Jagielski
530*b1cdbd2cSJim Jagielski return pData;
531*b1cdbd2cSJim Jagielski }
532*b1cdbd2cSJim Jagielski
533*b1cdbd2cSJim Jagielski // uno::XInterface
queryAggregation(const uno::Type & rType)534*b1cdbd2cSJim Jagielski uno::Any SAL_CALL SvxUnoTextField::queryAggregation( const uno::Type & rType )
535*b1cdbd2cSJim Jagielski throw(uno::RuntimeException)
536*b1cdbd2cSJim Jagielski {
537*b1cdbd2cSJim Jagielski uno::Any aAny;
538*b1cdbd2cSJim Jagielski
539*b1cdbd2cSJim Jagielski QUERYINT( beans::XPropertySet );
540*b1cdbd2cSJim Jagielski else QUERYINT( text::XTextContent );
541*b1cdbd2cSJim Jagielski else QUERYINT( text::XTextField );
542*b1cdbd2cSJim Jagielski else QUERYINT( lang::XServiceInfo );
543*b1cdbd2cSJim Jagielski else QUERYINT( lang::XUnoTunnel );
544*b1cdbd2cSJim Jagielski else
545*b1cdbd2cSJim Jagielski return OComponentHelper::queryAggregation( rType );
546*b1cdbd2cSJim Jagielski
547*b1cdbd2cSJim Jagielski return aAny;
548*b1cdbd2cSJim Jagielski }
549*b1cdbd2cSJim Jagielski
550*b1cdbd2cSJim Jagielski // XTypeProvider
551*b1cdbd2cSJim Jagielski
getTypes()552*b1cdbd2cSJim Jagielski uno::Sequence< uno::Type > SAL_CALL SvxUnoTextField::getTypes()
553*b1cdbd2cSJim Jagielski throw (uno::RuntimeException)
554*b1cdbd2cSJim Jagielski {
555*b1cdbd2cSJim Jagielski if( maTypeSequence.getLength() == 0 )
556*b1cdbd2cSJim Jagielski {
557*b1cdbd2cSJim Jagielski maTypeSequence = OComponentHelper::getTypes();
558*b1cdbd2cSJim Jagielski sal_Int32 nOldCount = maTypeSequence.getLength();
559*b1cdbd2cSJim Jagielski
560*b1cdbd2cSJim Jagielski maTypeSequence.realloc( nOldCount + 4 ); // !DANGER! keep this updated
561*b1cdbd2cSJim Jagielski uno::Type* pTypes = &maTypeSequence.getArray()[nOldCount];
562*b1cdbd2cSJim Jagielski
563*b1cdbd2cSJim Jagielski *pTypes++ = ::getCppuType(( const uno::Reference< text::XTextField >*)0);
564*b1cdbd2cSJim Jagielski *pTypes++ = ::getCppuType(( const uno::Reference< beans::XPropertySet >*)0);
565*b1cdbd2cSJim Jagielski *pTypes++ = ::getCppuType(( const uno::Reference< lang::XServiceInfo >*)0);
566*b1cdbd2cSJim Jagielski *pTypes++ = ::getCppuType(( const uno::Reference< lang::XUnoTunnel >*)0);
567*b1cdbd2cSJim Jagielski }
568*b1cdbd2cSJim Jagielski return maTypeSequence;
569*b1cdbd2cSJim Jagielski }
570*b1cdbd2cSJim Jagielski
getImplementationId()571*b1cdbd2cSJim Jagielski uno::Sequence< sal_Int8 > SAL_CALL SvxUnoTextField::getImplementationId()
572*b1cdbd2cSJim Jagielski throw (uno::RuntimeException)
573*b1cdbd2cSJim Jagielski {
574*b1cdbd2cSJim Jagielski static uno::Sequence< sal_Int8 > aId;
575*b1cdbd2cSJim Jagielski if( aId.getLength() == 0 )
576*b1cdbd2cSJim Jagielski {
577*b1cdbd2cSJim Jagielski aId.realloc( 16 );
578*b1cdbd2cSJim Jagielski rtl_createUuid( (sal_uInt8 *)aId.getArray(), 0, sal_True );
579*b1cdbd2cSJim Jagielski }
580*b1cdbd2cSJim Jagielski return aId;
581*b1cdbd2cSJim Jagielski }
582*b1cdbd2cSJim Jagielski
queryInterface(const uno::Type & rType)583*b1cdbd2cSJim Jagielski uno::Any SAL_CALL SvxUnoTextField::queryInterface( const uno::Type & rType )
584*b1cdbd2cSJim Jagielski throw(uno::RuntimeException)
585*b1cdbd2cSJim Jagielski {
586*b1cdbd2cSJim Jagielski return OComponentHelper::queryInterface(rType);
587*b1cdbd2cSJim Jagielski }
588*b1cdbd2cSJim Jagielski
acquire()589*b1cdbd2cSJim Jagielski void SAL_CALL SvxUnoTextField::acquire() throw( )
590*b1cdbd2cSJim Jagielski {
591*b1cdbd2cSJim Jagielski OComponentHelper::acquire();
592*b1cdbd2cSJim Jagielski }
593*b1cdbd2cSJim Jagielski
release()594*b1cdbd2cSJim Jagielski void SAL_CALL SvxUnoTextField::release() throw( )
595*b1cdbd2cSJim Jagielski {
596*b1cdbd2cSJim Jagielski OComponentHelper::release();
597*b1cdbd2cSJim Jagielski }
598*b1cdbd2cSJim Jagielski
599*b1cdbd2cSJim Jagielski // Interface text::XTextField
getPresentation(sal_Bool bShowCommand)600*b1cdbd2cSJim Jagielski OUString SAL_CALL SvxUnoTextField::getPresentation( sal_Bool bShowCommand )
601*b1cdbd2cSJim Jagielski throw(uno::RuntimeException)
602*b1cdbd2cSJim Jagielski {
603*b1cdbd2cSJim Jagielski OGuard aGuard( Application::GetSolarMutex() );
604*b1cdbd2cSJim Jagielski
605*b1cdbd2cSJim Jagielski if(bShowCommand)
606*b1cdbd2cSJim Jagielski {
607*b1cdbd2cSJim Jagielski DBG_ASSERT( ((sal_uInt32)mnServiceId) < ID_UNKNOWN, "Unknown field type" );
608*b1cdbd2cSJim Jagielski return OUString::createFromAscii( aFieldItemNameMap_Impl[(((sal_uInt32)mnServiceId) > ID_UNKNOWN)? ID_UNKNOWN : mnServiceId ] );
609*b1cdbd2cSJim Jagielski }
610*b1cdbd2cSJim Jagielski else
611*b1cdbd2cSJim Jagielski {
612*b1cdbd2cSJim Jagielski return mpImpl->msPresentation;
613*b1cdbd2cSJim Jagielski }
614*b1cdbd2cSJim Jagielski }
615*b1cdbd2cSJim Jagielski
616*b1cdbd2cSJim Jagielski // Interface text::XTextContent
attach(const uno::Reference<text::XTextRange> & xTextRange)617*b1cdbd2cSJim Jagielski void SAL_CALL SvxUnoTextField::attach( const uno::Reference< text::XTextRange >& xTextRange )
618*b1cdbd2cSJim Jagielski throw(lang::IllegalArgumentException, uno::RuntimeException)
619*b1cdbd2cSJim Jagielski {
620*b1cdbd2cSJim Jagielski SvxUnoTextRangeBase* pRange = SvxUnoTextRange::getImplementation( xTextRange );
621*b1cdbd2cSJim Jagielski if(pRange == NULL)
622*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException();
623*b1cdbd2cSJim Jagielski
624*b1cdbd2cSJim Jagielski SvxFieldData* pData = CreateFieldData();
625*b1cdbd2cSJim Jagielski if( pData )
626*b1cdbd2cSJim Jagielski pRange->attachField( pData );
627*b1cdbd2cSJim Jagielski
628*b1cdbd2cSJim Jagielski delete pData;
629*b1cdbd2cSJim Jagielski }
630*b1cdbd2cSJim Jagielski
getAnchor()631*b1cdbd2cSJim Jagielski uno::Reference< text::XTextRange > SAL_CALL SvxUnoTextField::getAnchor()
632*b1cdbd2cSJim Jagielski throw(uno::RuntimeException)
633*b1cdbd2cSJim Jagielski {
634*b1cdbd2cSJim Jagielski return mxAnchor;
635*b1cdbd2cSJim Jagielski }
636*b1cdbd2cSJim Jagielski
637*b1cdbd2cSJim Jagielski // lang::XComponent
dispose()638*b1cdbd2cSJim Jagielski void SAL_CALL SvxUnoTextField::dispose()
639*b1cdbd2cSJim Jagielski throw(uno::RuntimeException)
640*b1cdbd2cSJim Jagielski {
641*b1cdbd2cSJim Jagielski OComponentHelper::dispose();
642*b1cdbd2cSJim Jagielski }
643*b1cdbd2cSJim Jagielski
addEventListener(const uno::Reference<lang::XEventListener> & xListener)644*b1cdbd2cSJim Jagielski void SAL_CALL SvxUnoTextField::addEventListener( const uno::Reference< lang::XEventListener >& xListener )
645*b1cdbd2cSJim Jagielski throw(uno::RuntimeException)
646*b1cdbd2cSJim Jagielski {
647*b1cdbd2cSJim Jagielski OComponentHelper::addEventListener(xListener);
648*b1cdbd2cSJim Jagielski }
649*b1cdbd2cSJim Jagielski
removeEventListener(const uno::Reference<lang::XEventListener> & aListener)650*b1cdbd2cSJim Jagielski void SAL_CALL SvxUnoTextField::removeEventListener( const uno::Reference< lang::XEventListener >& aListener )
651*b1cdbd2cSJim Jagielski throw(uno::RuntimeException)
652*b1cdbd2cSJim Jagielski {
653*b1cdbd2cSJim Jagielski OComponentHelper::removeEventListener(aListener);
654*b1cdbd2cSJim Jagielski }
655*b1cdbd2cSJim Jagielski
656*b1cdbd2cSJim Jagielski
657*b1cdbd2cSJim Jagielski // Interface beans::XPropertySet
getPropertySetInfo()658*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySetInfo > SAL_CALL SvxUnoTextField::getPropertySetInfo( )
659*b1cdbd2cSJim Jagielski throw(uno::RuntimeException)
660*b1cdbd2cSJim Jagielski {
661*b1cdbd2cSJim Jagielski OGuard aGuard( Application::GetSolarMutex() );
662*b1cdbd2cSJim Jagielski return mpPropSet->getPropertySetInfo();
663*b1cdbd2cSJim Jagielski }
664*b1cdbd2cSJim Jagielski
setPropertyValue(const OUString & aPropertyName,const uno::Any & aValue)665*b1cdbd2cSJim Jagielski void SAL_CALL SvxUnoTextField::setPropertyValue( const OUString& aPropertyName, const uno::Any& aValue )
666*b1cdbd2cSJim Jagielski throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException)
667*b1cdbd2cSJim Jagielski {
668*b1cdbd2cSJim Jagielski OGuard aGuard( Application::GetSolarMutex() );
669*b1cdbd2cSJim Jagielski
670*b1cdbd2cSJim Jagielski if( mpImpl == NULL )
671*b1cdbd2cSJim Jagielski throw uno::RuntimeException();
672*b1cdbd2cSJim Jagielski
673*b1cdbd2cSJim Jagielski const SfxItemPropertySimpleEntry* pMap = mpPropSet->getPropertyMap()->getByName( aPropertyName );
674*b1cdbd2cSJim Jagielski if ( !pMap )
675*b1cdbd2cSJim Jagielski throw beans::UnknownPropertyException();
676*b1cdbd2cSJim Jagielski
677*b1cdbd2cSJim Jagielski switch( pMap->nWID )
678*b1cdbd2cSJim Jagielski {
679*b1cdbd2cSJim Jagielski case WID_DATE:
680*b1cdbd2cSJim Jagielski if(aValue >>= mpImpl->maDateTime)
681*b1cdbd2cSJim Jagielski return;
682*b1cdbd2cSJim Jagielski break;
683*b1cdbd2cSJim Jagielski case WID_BOOL1:
684*b1cdbd2cSJim Jagielski if(aValue >>= mpImpl->mbBoolean1)
685*b1cdbd2cSJim Jagielski return;
686*b1cdbd2cSJim Jagielski break;
687*b1cdbd2cSJim Jagielski case WID_BOOL2:
688*b1cdbd2cSJim Jagielski if(aValue >>= mpImpl->mbBoolean2)
689*b1cdbd2cSJim Jagielski return;
690*b1cdbd2cSJim Jagielski break;
691*b1cdbd2cSJim Jagielski case WID_INT16:
692*b1cdbd2cSJim Jagielski if(aValue >>= mpImpl->mnInt16)
693*b1cdbd2cSJim Jagielski return;
694*b1cdbd2cSJim Jagielski break;
695*b1cdbd2cSJim Jagielski case WID_INT32:
696*b1cdbd2cSJim Jagielski if(aValue >>= mpImpl->mnInt32)
697*b1cdbd2cSJim Jagielski return;
698*b1cdbd2cSJim Jagielski break;
699*b1cdbd2cSJim Jagielski case WID_STRING1:
700*b1cdbd2cSJim Jagielski if(aValue >>= mpImpl->msString1)
701*b1cdbd2cSJim Jagielski return;
702*b1cdbd2cSJim Jagielski break;
703*b1cdbd2cSJim Jagielski case WID_STRING2:
704*b1cdbd2cSJim Jagielski if(aValue >>= mpImpl->msString2)
705*b1cdbd2cSJim Jagielski return;
706*b1cdbd2cSJim Jagielski break;
707*b1cdbd2cSJim Jagielski case WID_STRING3:
708*b1cdbd2cSJim Jagielski if(aValue >>= mpImpl->msString3)
709*b1cdbd2cSJim Jagielski return;
710*b1cdbd2cSJim Jagielski break;
711*b1cdbd2cSJim Jagielski }
712*b1cdbd2cSJim Jagielski
713*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException();
714*b1cdbd2cSJim Jagielski
715*b1cdbd2cSJim Jagielski /*
716*b1cdbd2cSJim Jagielski case WID_FORMAT:
717*b1cdbd2cSJim Jagielski {
718*b1cdbd2cSJim Jagielski sal_Int32 nFormat;
719*b1cdbd2cSJim Jagielski
720*b1cdbd2cSJim Jagielski switch( mnId )
721*b1cdbd2cSJim Jagielski {
722*b1cdbd2cSJim Jagielski case ID_DATEFIELD:
723*b1cdbd2cSJim Jagielski {
724*b1cdbd2cSJim Jagielski SvxDateField* pDate = PTR_CAST( SvxDateField, aFieldItem.GetField() );
725*b1cdbd2cSJim Jagielski if(pDate)
726*b1cdbd2cSJim Jagielski pDate->SetFormat( (SvxDateFormat)nFormat );
727*b1cdbd2cSJim Jagielski break;
728*b1cdbd2cSJim Jagielski }
729*b1cdbd2cSJim Jagielski case ID_URLFIELD:
730*b1cdbd2cSJim Jagielski {
731*b1cdbd2cSJim Jagielski SvxURLField* pURL = PTR_CAST( SvxURLField, aFieldItem.GetField() );
732*b1cdbd2cSJim Jagielski if(pURL)
733*b1cdbd2cSJim Jagielski pURL->SetFormat( (SvxURLFormat)nFormat );
734*b1cdbd2cSJim Jagielski break;
735*b1cdbd2cSJim Jagielski }
736*b1cdbd2cSJim Jagielski case ID_EXT_TIMEFIELD:
737*b1cdbd2cSJim Jagielski {
738*b1cdbd2cSJim Jagielski SvxExtTimeField* pTime = PTR_CAST( SvxExtTimeField, aFieldItem.GetField() );
739*b1cdbd2cSJim Jagielski if(pTime)
740*b1cdbd2cSJim Jagielski pTime->SetFormat( (SvxTimeFormat)nFormat );
741*b1cdbd2cSJim Jagielski break;
742*b1cdbd2cSJim Jagielski }
743*b1cdbd2cSJim Jagielski case ID_EXT_FILEFIELD:
744*b1cdbd2cSJim Jagielski {
745*b1cdbd2cSJim Jagielski SvxExtFileField* pFile = PTR_CAST( SvxExtFileField, aFieldItem.GetField() );
746*b1cdbd2cSJim Jagielski if(pFile)
747*b1cdbd2cSJim Jagielski pFile->SetFormat( (SvxFileFormat)nFormat );
748*b1cdbd2cSJim Jagielski break;
749*b1cdbd2cSJim Jagielski }
750*b1cdbd2cSJim Jagielski case ID_AUTHORFIELD:
751*b1cdbd2cSJim Jagielski {
752*b1cdbd2cSJim Jagielski SvxAuthorField* pAuthor = PTR_CAST( SvxAuthorField, aFieldItem.GetField() );
753*b1cdbd2cSJim Jagielski if(pAuthor)
754*b1cdbd2cSJim Jagielski pAuthor->SetFormat( (SvxAuthorFormat)nFormat );
755*b1cdbd2cSJim Jagielski break;
756*b1cdbd2cSJim Jagielski }
757*b1cdbd2cSJim Jagielski default:
758*b1cdbd2cSJim Jagielski throw beans::UnknownPropertyException();
759*b1cdbd2cSJim Jagielski }
760*b1cdbd2cSJim Jagielski }
761*b1cdbd2cSJim Jagielski break;
762*b1cdbd2cSJim Jagielski case WID_FIX:
763*b1cdbd2cSJim Jagielski {
764*b1cdbd2cSJim Jagielski if( aValue.hasValue() || aValue.getValueType() != ::getCppuBooleanType() )
765*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException();
766*b1cdbd2cSJim Jagielski sal_Bool bFix( *(sal_Bool*)aValue.getValue() );
767*b1cdbd2cSJim Jagielski switch( mnId )
768*b1cdbd2cSJim Jagielski {
769*b1cdbd2cSJim Jagielski case ID_EXT_TIMEFIELD:
770*b1cdbd2cSJim Jagielski {
771*b1cdbd2cSJim Jagielski SvxExtTimeField* pTime = PTR_CAST( SvxExtTimeField, aFieldItem.GetField() );
772*b1cdbd2cSJim Jagielski if(pTime)
773*b1cdbd2cSJim Jagielski pTime->SetType( (SvxTimeType)bFix?SVXTIMETYPE_FIX:SVXTIMETYPE_VAR );
774*b1cdbd2cSJim Jagielski break;
775*b1cdbd2cSJim Jagielski }
776*b1cdbd2cSJim Jagielski case ID_DATEFIELD:
777*b1cdbd2cSJim Jagielski {
778*b1cdbd2cSJim Jagielski SvxDateField* pDate = PTR_CAST( SvxDateField, aFieldItem.GetField() );
779*b1cdbd2cSJim Jagielski if(pDate)
780*b1cdbd2cSJim Jagielski pDate->SetType( (SvxDateType)bFix?SVXDATETYPE_FIX:SVXDATETYPE_VAR );
781*b1cdbd2cSJim Jagielski break;
782*b1cdbd2cSJim Jagielski }
783*b1cdbd2cSJim Jagielski case ID_EXT_FILEFIELD:
784*b1cdbd2cSJim Jagielski {
785*b1cdbd2cSJim Jagielski SvxExtFileField* pFile = PTR_CAST( SvxExtFileField, aFieldItem.GetField() );
786*b1cdbd2cSJim Jagielski if(pFile)
787*b1cdbd2cSJim Jagielski pFile->SetType( (SvxFileType)bFix?SVXFILETYPE_FIX:SVXFILETYPE_VAR );
788*b1cdbd2cSJim Jagielski break;
789*b1cdbd2cSJim Jagielski }
790*b1cdbd2cSJim Jagielski case ID_AUTHORFIELD:
791*b1cdbd2cSJim Jagielski {
792*b1cdbd2cSJim Jagielski SvxAuthorField* pAuthor = PTR_CAST( SvxAuthorField, aFieldItem.GetField() );
793*b1cdbd2cSJim Jagielski if(pAuthor)
794*b1cdbd2cSJim Jagielski pAuthor->SetType( (SvxAuthorType)bFix?SVXAUTHORTYPE_FIX:SVXAUTHORTYPE_VAR );
795*b1cdbd2cSJim Jagielski break;
796*b1cdbd2cSJim Jagielski }
797*b1cdbd2cSJim Jagielski default:
798*b1cdbd2cSJim Jagielski throw beans::UnknownPropertyException();
799*b1cdbd2cSJim Jagielski }
800*b1cdbd2cSJim Jagielski }
801*b1cdbd2cSJim Jagielski break;
802*b1cdbd2cSJim Jagielski case WID_PRES:
803*b1cdbd2cSJim Jagielski case WID_URL:
804*b1cdbd2cSJim Jagielski case WID_TARGET:
805*b1cdbd2cSJim Jagielski {
806*b1cdbd2cSJim Jagielski SvxURLField* pURL = PTR_CAST( SvxURLField, aFieldItem.GetField() );
807*b1cdbd2cSJim Jagielski if(pURL)
808*b1cdbd2cSJim Jagielski {
809*b1cdbd2cSJim Jagielski OUString aUnoStr;
810*b1cdbd2cSJim Jagielski if(!(aValue >>= aUnoStr))
811*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException();
812*b1cdbd2cSJim Jagielski
813*b1cdbd2cSJim Jagielski switch( pMap->nWID )
814*b1cdbd2cSJim Jagielski {
815*b1cdbd2cSJim Jagielski case WID_PRES:
816*b1cdbd2cSJim Jagielski pURL->SetRepresentation( aUnoStr );
817*b1cdbd2cSJim Jagielski break;
818*b1cdbd2cSJim Jagielski case WID_URL:
819*b1cdbd2cSJim Jagielski pURL->SetURL( aUnoStr );
820*b1cdbd2cSJim Jagielski break;
821*b1cdbd2cSJim Jagielski case WID_TARGET:
822*b1cdbd2cSJim Jagielski pURL->SetTargetFrame( aUnoStr );
823*b1cdbd2cSJim Jagielski break;
824*b1cdbd2cSJim Jagielski }
825*b1cdbd2cSJim Jagielski }
826*b1cdbd2cSJim Jagielski break;
827*b1cdbd2cSJim Jagielski }
828*b1cdbd2cSJim Jagielski }
829*b1cdbd2cSJim Jagielski
830*b1cdbd2cSJim Jagielski SfxItemSet aSet = pForwarder->GetAttribs( GetSelection() );
831*b1cdbd2cSJim Jagielski aSet.Put( aFieldItem );
832*b1cdbd2cSJim Jagielski */
833*b1cdbd2cSJim Jagielski }
834*b1cdbd2cSJim Jagielski
getPropertyValue(const OUString & PropertyName)835*b1cdbd2cSJim Jagielski uno::Any SAL_CALL SvxUnoTextField::getPropertyValue( const OUString& PropertyName )
836*b1cdbd2cSJim Jagielski throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
837*b1cdbd2cSJim Jagielski {
838*b1cdbd2cSJim Jagielski OGuard aGuard( Application::GetSolarMutex() );
839*b1cdbd2cSJim Jagielski
840*b1cdbd2cSJim Jagielski uno::Any aValue;
841*b1cdbd2cSJim Jagielski
842*b1cdbd2cSJim Jagielski const SfxItemPropertySimpleEntry* pMap = mpPropSet->getPropertyMap()->getByName( PropertyName );
843*b1cdbd2cSJim Jagielski if ( !pMap )
844*b1cdbd2cSJim Jagielski throw beans::UnknownPropertyException();
845*b1cdbd2cSJim Jagielski
846*b1cdbd2cSJim Jagielski switch( pMap->nWID )
847*b1cdbd2cSJim Jagielski {
848*b1cdbd2cSJim Jagielski case WID_DATE:
849*b1cdbd2cSJim Jagielski aValue <<= mpImpl->maDateTime;
850*b1cdbd2cSJim Jagielski break;
851*b1cdbd2cSJim Jagielski case WID_BOOL1:
852*b1cdbd2cSJim Jagielski aValue <<= mpImpl->mbBoolean1;
853*b1cdbd2cSJim Jagielski break;
854*b1cdbd2cSJim Jagielski case WID_BOOL2:
855*b1cdbd2cSJim Jagielski aValue <<= mpImpl->mbBoolean2;
856*b1cdbd2cSJim Jagielski break;
857*b1cdbd2cSJim Jagielski case WID_INT16:
858*b1cdbd2cSJim Jagielski aValue <<= mpImpl->mnInt16;
859*b1cdbd2cSJim Jagielski break;
860*b1cdbd2cSJim Jagielski case WID_INT32:
861*b1cdbd2cSJim Jagielski aValue <<= mpImpl->mnInt32;
862*b1cdbd2cSJim Jagielski break;
863*b1cdbd2cSJim Jagielski case WID_STRING1:
864*b1cdbd2cSJim Jagielski aValue <<= mpImpl->msString1;
865*b1cdbd2cSJim Jagielski break;
866*b1cdbd2cSJim Jagielski case WID_STRING2:
867*b1cdbd2cSJim Jagielski aValue <<= mpImpl->msString2;
868*b1cdbd2cSJim Jagielski break;
869*b1cdbd2cSJim Jagielski case WID_STRING3:
870*b1cdbd2cSJim Jagielski aValue <<= mpImpl->msString3;
871*b1cdbd2cSJim Jagielski break;
872*b1cdbd2cSJim Jagielski }
873*b1cdbd2cSJim Jagielski
874*b1cdbd2cSJim Jagielski return aValue;
875*b1cdbd2cSJim Jagielski
876*b1cdbd2cSJim Jagielski /*
877*b1cdbd2cSJim Jagielski switch(pMap->nWID)
878*b1cdbd2cSJim Jagielski {
879*b1cdbd2cSJim Jagielski case WID_FORMAT:
880*b1cdbd2cSJim Jagielski switch( mnId )
881*b1cdbd2cSJim Jagielski {
882*b1cdbd2cSJim Jagielski case ID_DATEFIELD:
883*b1cdbd2cSJim Jagielski {
884*b1cdbd2cSJim Jagielski SvxDateField* pDate = PTR_CAST( SvxDateField, pFieldItem->GetField() );
885*b1cdbd2cSJim Jagielski if(pDate)
886*b1cdbd2cSJim Jagielski aValue <<= (sal_Int32)pDate->GetFormat();
887*b1cdbd2cSJim Jagielski break;
888*b1cdbd2cSJim Jagielski }
889*b1cdbd2cSJim Jagielski case ID_URLFIELD:
890*b1cdbd2cSJim Jagielski {
891*b1cdbd2cSJim Jagielski SvxURLField* pURL = PTR_CAST( SvxURLField, pFieldItem->GetField() );
892*b1cdbd2cSJim Jagielski if(pURL)
893*b1cdbd2cSJim Jagielski aValue <<= (sal_Int32)pURL->GetFormat();
894*b1cdbd2cSJim Jagielski break;
895*b1cdbd2cSJim Jagielski }
896*b1cdbd2cSJim Jagielski case ID_EXT_TIMEFIELD:
897*b1cdbd2cSJim Jagielski {
898*b1cdbd2cSJim Jagielski SvxExtTimeField* pTime = PTR_CAST( SvxExtTimeField, pFieldItem->GetField() );
899*b1cdbd2cSJim Jagielski if(pTime)
900*b1cdbd2cSJim Jagielski aValue <<= (sal_Int32)pTime->GetFormat();
901*b1cdbd2cSJim Jagielski break;
902*b1cdbd2cSJim Jagielski }
903*b1cdbd2cSJim Jagielski case ID_EXT_FILEFIELD:
904*b1cdbd2cSJim Jagielski {
905*b1cdbd2cSJim Jagielski SvxExtFileField* pFile = PTR_CAST( SvxExtFileField, pFieldItem->GetField() );
906*b1cdbd2cSJim Jagielski if(pFile)
907*b1cdbd2cSJim Jagielski aValue <<= (sal_Int32)pFile->GetFormat();
908*b1cdbd2cSJim Jagielski break;
909*b1cdbd2cSJim Jagielski }
910*b1cdbd2cSJim Jagielski case ID_AUTHORFIELD:
911*b1cdbd2cSJim Jagielski {
912*b1cdbd2cSJim Jagielski SvxAuthorField* pAuthor = PTR_CAST( SvxAuthorField, pFieldItem->GetField() );
913*b1cdbd2cSJim Jagielski if(pAuthor)
914*b1cdbd2cSJim Jagielski aValue <<= (sal_Int32)pAuthor->GetFormat();
915*b1cdbd2cSJim Jagielski break;
916*b1cdbd2cSJim Jagielski }
917*b1cdbd2cSJim Jagielski default:
918*b1cdbd2cSJim Jagielski throw beans::UnknownPropertyException();
919*b1cdbd2cSJim Jagielski }
920*b1cdbd2cSJim Jagielski break;
921*b1cdbd2cSJim Jagielski case WID_FIX:
922*b1cdbd2cSJim Jagielski {
923*b1cdbd2cSJim Jagielski sal_Bool bFix = sal_False;
924*b1cdbd2cSJim Jagielski switch( mnId )
925*b1cdbd2cSJim Jagielski {
926*b1cdbd2cSJim Jagielski case ID_EXT_TIMEFIELD:
927*b1cdbd2cSJim Jagielski {
928*b1cdbd2cSJim Jagielski SvxExtTimeField* pTime = PTR_CAST( SvxExtTimeField, pFieldItem->GetField() );
929*b1cdbd2cSJim Jagielski if(pTime)
930*b1cdbd2cSJim Jagielski bFix = pTime->GetType() == SVXTIMETYPE_FIX;
931*b1cdbd2cSJim Jagielski break;
932*b1cdbd2cSJim Jagielski }
933*b1cdbd2cSJim Jagielski case ID_DATEFIELD:
934*b1cdbd2cSJim Jagielski {
935*b1cdbd2cSJim Jagielski SvxDateField* pDate = PTR_CAST( SvxDateField, pFieldItem->GetField() );
936*b1cdbd2cSJim Jagielski if(pDate)
937*b1cdbd2cSJim Jagielski bFix = pDate->GetType() == SVXDATETYPE_FIX;
938*b1cdbd2cSJim Jagielski break;
939*b1cdbd2cSJim Jagielski }
940*b1cdbd2cSJim Jagielski case ID_EXT_FILEFIELD:
941*b1cdbd2cSJim Jagielski {
942*b1cdbd2cSJim Jagielski SvxExtFileField* pFile = PTR_CAST( SvxExtFileField, pFieldItem->GetField() );
943*b1cdbd2cSJim Jagielski if(pFile)
944*b1cdbd2cSJim Jagielski bFix = pFile->GetType() == SVXFILETYPE_FIX;
945*b1cdbd2cSJim Jagielski break;
946*b1cdbd2cSJim Jagielski }
947*b1cdbd2cSJim Jagielski case ID_AUTHORFIELD:
948*b1cdbd2cSJim Jagielski {
949*b1cdbd2cSJim Jagielski SvxAuthorField* pAuthor = PTR_CAST( SvxAuthorField, pFieldItem->GetField() );
950*b1cdbd2cSJim Jagielski if(pAuthor)
951*b1cdbd2cSJim Jagielski bFix = pAuthor->GetType() == SVXAUTHORTYPE_FIX;
952*b1cdbd2cSJim Jagielski break;
953*b1cdbd2cSJim Jagielski }
954*b1cdbd2cSJim Jagielski default:
955*b1cdbd2cSJim Jagielski throw beans::UnknownPropertyException();
956*b1cdbd2cSJim Jagielski }
957*b1cdbd2cSJim Jagielski aValue.setValue( &bFix, ::getCppuBooleanType() );
958*b1cdbd2cSJim Jagielski }
959*b1cdbd2cSJim Jagielski break;
960*b1cdbd2cSJim Jagielski case WID_PRES:
961*b1cdbd2cSJim Jagielski case WID_URL:
962*b1cdbd2cSJim Jagielski case WID_TARGET:
963*b1cdbd2cSJim Jagielski {
964*b1cdbd2cSJim Jagielski SvxURLField* pURL = PTR_CAST( SvxURLField, pFieldItem->GetField() );
965*b1cdbd2cSJim Jagielski if(pURL)
966*b1cdbd2cSJim Jagielski {
967*b1cdbd2cSJim Jagielski OUString aStr;
968*b1cdbd2cSJim Jagielski switch( pMap->nWID )
969*b1cdbd2cSJim Jagielski {
970*b1cdbd2cSJim Jagielski case WID_PRES:
971*b1cdbd2cSJim Jagielski aStr = pURL->GetRepresentation();
972*b1cdbd2cSJim Jagielski break;
973*b1cdbd2cSJim Jagielski case WID_URL:
974*b1cdbd2cSJim Jagielski aStr = pURL->GetURL();
975*b1cdbd2cSJim Jagielski break;
976*b1cdbd2cSJim Jagielski case WID_TARGET:
977*b1cdbd2cSJim Jagielski aStr = pURL->GetTargetFrame();
978*b1cdbd2cSJim Jagielski break;
979*b1cdbd2cSJim Jagielski }
980*b1cdbd2cSJim Jagielski aValue <<= aStr;
981*b1cdbd2cSJim Jagielski }
982*b1cdbd2cSJim Jagielski break;
983*b1cdbd2cSJim Jagielski }
984*b1cdbd2cSJim Jagielski case WID_FCOLOR:
985*b1cdbd2cSJim Jagielski case WID_TCOLOR:
986*b1cdbd2cSJim Jagielski {
987*b1cdbd2cSJim Jagielski Color* pFColor = NULL;
988*b1cdbd2cSJim Jagielski Color* pTColor = NULL;
989*b1cdbd2cSJim Jagielski const ESelection aSel = GetSelection();
990*b1cdbd2cSJim Jagielski
991*b1cdbd2cSJim Jagielski pForwarder->CalcFieldValue( *pFieldItem, aSel.nStartPara, aSel.nStartPos, pTColor, pFColor );
992*b1cdbd2cSJim Jagielski
993*b1cdbd2cSJim Jagielski if( pMap->nWID == WID_FCOLOR )
994*b1cdbd2cSJim Jagielski aValue <<= (sal_Int32)pFColor->GetColor();
995*b1cdbd2cSJim Jagielski else
996*b1cdbd2cSJim Jagielski aValue <<= (sal_Int32)pTColor->GetColor();
997*b1cdbd2cSJim Jagielski break;
998*b1cdbd2cSJim Jagielski
999*b1cdbd2cSJim Jagielski delete pTColor;
1000*b1cdbd2cSJim Jagielski delete pFColor;
1001*b1cdbd2cSJim Jagielski }
1002*b1cdbd2cSJim Jagielski }
1003*b1cdbd2cSJim Jagielski return aValue;
1004*b1cdbd2cSJim Jagielski */
1005*b1cdbd2cSJim Jagielski }
1006*b1cdbd2cSJim Jagielski
addPropertyChangeListener(const OUString &,const uno::Reference<beans::XPropertyChangeListener> &)1007*b1cdbd2cSJim Jagielski void SAL_CALL SvxUnoTextField::addPropertyChangeListener( const OUString&, const uno::Reference< beans::XPropertyChangeListener >& ) throw(::com::sun::star::beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {}
removePropertyChangeListener(const OUString &,const uno::Reference<beans::XPropertyChangeListener> &)1008*b1cdbd2cSJim Jagielski void SAL_CALL SvxUnoTextField::removePropertyChangeListener( const OUString&, const uno::Reference< beans::XPropertyChangeListener >& ) throw(::com::sun::star::beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {}
addVetoableChangeListener(const OUString &,const uno::Reference<beans::XVetoableChangeListener> &)1009*b1cdbd2cSJim Jagielski void SAL_CALL SvxUnoTextField::addVetoableChangeListener( const OUString&, const uno::Reference< beans::XVetoableChangeListener >& ) throw(::com::sun::star::beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {}
removeVetoableChangeListener(const OUString &,const uno::Reference<beans::XVetoableChangeListener> &)1010*b1cdbd2cSJim Jagielski void SAL_CALL SvxUnoTextField::removeVetoableChangeListener( const OUString&, const uno::Reference< beans::XVetoableChangeListener >& ) throw(::com::sun::star::beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {}
1011*b1cdbd2cSJim Jagielski
1012*b1cdbd2cSJim Jagielski // OComponentHelper
disposing()1013*b1cdbd2cSJim Jagielski void SvxUnoTextField::disposing()
1014*b1cdbd2cSJim Jagielski {
1015*b1cdbd2cSJim Jagielski // nothing to do
1016*b1cdbd2cSJim Jagielski }
1017*b1cdbd2cSJim Jagielski
GetFieldId(const SvxFieldData * pFieldData) const1018*b1cdbd2cSJim Jagielski sal_Int32 SvxUnoTextField::GetFieldId( const SvxFieldData* pFieldData ) const throw()
1019*b1cdbd2cSJim Jagielski {
1020*b1cdbd2cSJim Jagielski if( pFieldData->ISA( SvxURLField ) )
1021*b1cdbd2cSJim Jagielski return ID_URLFIELD;
1022*b1cdbd2cSJim Jagielski else if( pFieldData->ISA( SvxPageField ) )
1023*b1cdbd2cSJim Jagielski return ID_PAGEFIELD;
1024*b1cdbd2cSJim Jagielski else if( pFieldData->ISA( SvxPagesField ) )
1025*b1cdbd2cSJim Jagielski return ID_PAGESFIELD;
1026*b1cdbd2cSJim Jagielski else if( pFieldData->ISA( SvxTimeField ) )
1027*b1cdbd2cSJim Jagielski return ID_TIMEFIELD;
1028*b1cdbd2cSJim Jagielski else if( pFieldData->ISA( SvxFileField ) )
1029*b1cdbd2cSJim Jagielski return ID_FILEFIELD;
1030*b1cdbd2cSJim Jagielski else if( pFieldData->ISA( SvxTableField ) )
1031*b1cdbd2cSJim Jagielski return ID_TABLEFIELD;
1032*b1cdbd2cSJim Jagielski else if( pFieldData->ISA( SvxExtTimeField ) )
1033*b1cdbd2cSJim Jagielski return ID_EXT_TIMEFIELD;
1034*b1cdbd2cSJim Jagielski else if( pFieldData->ISA( SvxExtFileField ) )
1035*b1cdbd2cSJim Jagielski return ID_EXT_FILEFIELD;
1036*b1cdbd2cSJim Jagielski else if( pFieldData->ISA( SvxAuthorField ) )
1037*b1cdbd2cSJim Jagielski return ID_AUTHORFIELD;
1038*b1cdbd2cSJim Jagielski else if( pFieldData->ISA( SvxDateField ) )
1039*b1cdbd2cSJim Jagielski return ID_EXT_DATEFIELD;
1040*b1cdbd2cSJim Jagielski else if( pFieldData->ISA( SdrMeasureField ) )
1041*b1cdbd2cSJim Jagielski return ID_MEASUREFIELD;
1042*b1cdbd2cSJim Jagielski else if( pFieldData->ISA( SvxHeaderField ) )
1043*b1cdbd2cSJim Jagielski return ID_HEADERFIELD;
1044*b1cdbd2cSJim Jagielski else if( pFieldData->ISA( SvxFooterField ) )
1045*b1cdbd2cSJim Jagielski return ID_FOOTERFIELD;
1046*b1cdbd2cSJim Jagielski else if( pFieldData->ISA( SvxDateTimeField ) )
1047*b1cdbd2cSJim Jagielski return ID_DATETIMEFIELD;
1048*b1cdbd2cSJim Jagielski
1049*b1cdbd2cSJim Jagielski return ID_UNKNOWN;
1050*b1cdbd2cSJim Jagielski }
1051*b1cdbd2cSJim Jagielski
1052*b1cdbd2cSJim Jagielski // lang::XServiceInfo
getImplementationName()1053*b1cdbd2cSJim Jagielski OUString SAL_CALL SvxUnoTextField::getImplementationName() throw(uno::RuntimeException)
1054*b1cdbd2cSJim Jagielski {
1055*b1cdbd2cSJim Jagielski return OUString(RTL_CONSTASCII_USTRINGPARAM("SvxUnoTextField"));
1056*b1cdbd2cSJim Jagielski }
1057*b1cdbd2cSJim Jagielski
1058*b1cdbd2cSJim Jagielski static const sal_Char* pOldServiceNames[] =
1059*b1cdbd2cSJim Jagielski {
1060*b1cdbd2cSJim Jagielski "com.sun.star.text.TextField.DateTime",
1061*b1cdbd2cSJim Jagielski "com.sun.star.text.TextField.URL",
1062*b1cdbd2cSJim Jagielski "com.sun.star.text.TextField.PageNumber",
1063*b1cdbd2cSJim Jagielski "com.sun.star.text.TextField.PageCount",
1064*b1cdbd2cSJim Jagielski "com.sun.star.text.TextField.DateTime",
1065*b1cdbd2cSJim Jagielski "com.sun.star.text.TextField.DocInfo.Title", // SvxFileField is used for title
1066*b1cdbd2cSJim Jagielski "com.sun.star.text.TextField.SheetName",
1067*b1cdbd2cSJim Jagielski "com.sun.star.text.TextField.DateTime",
1068*b1cdbd2cSJim Jagielski "com.sun.star.text.TextField.FileName",
1069*b1cdbd2cSJim Jagielski "com.sun.star.text.TextField.Author",
1070*b1cdbd2cSJim Jagielski "com.sun.star.text.TextField.Measure",
1071*b1cdbd2cSJim Jagielski "com.sun.star.text.TextField.DateTime",
1072*b1cdbd2cSJim Jagielski "com.sun.star.presentation.TextField.Header",
1073*b1cdbd2cSJim Jagielski "com.sun.star.presentation.TextField.Footer",
1074*b1cdbd2cSJim Jagielski "com.sun.star.presentation.TextField.DateTime"
1075*b1cdbd2cSJim Jagielski };
1076*b1cdbd2cSJim Jagielski
1077*b1cdbd2cSJim Jagielski static const sal_Char* pNewServiceNames[] =
1078*b1cdbd2cSJim Jagielski {
1079*b1cdbd2cSJim Jagielski "com.sun.star.text.textfield.DateTime",
1080*b1cdbd2cSJim Jagielski "com.sun.star.text.textfield.URL",
1081*b1cdbd2cSJim Jagielski "com.sun.star.text.textfield.PageNumber",
1082*b1cdbd2cSJim Jagielski "com.sun.star.text.textfield.PageCount",
1083*b1cdbd2cSJim Jagielski "com.sun.star.text.textfield.DateTime",
1084*b1cdbd2cSJim Jagielski "com.sun.star.text.textfield.docinfo.Title", // SvxFileField is used for title
1085*b1cdbd2cSJim Jagielski "com.sun.star.text.textfield.SheetName",
1086*b1cdbd2cSJim Jagielski "com.sun.star.text.textfield.DateTime",
1087*b1cdbd2cSJim Jagielski "com.sun.star.text.textfield.FileName",
1088*b1cdbd2cSJim Jagielski "com.sun.star.text.textfield.Author",
1089*b1cdbd2cSJim Jagielski "com.sun.star.text.textfield.Measure",
1090*b1cdbd2cSJim Jagielski "com.sun.star.text.textfield.DateTime",
1091*b1cdbd2cSJim Jagielski "com.sun.star.presentation.textfield.Header",
1092*b1cdbd2cSJim Jagielski "com.sun.star.presentation.textfield.Footer",
1093*b1cdbd2cSJim Jagielski "com.sun.star.presentation.textfield.DateTime"
1094*b1cdbd2cSJim Jagielski };
1095*b1cdbd2cSJim Jagielski
getSupportedServiceNames()1096*b1cdbd2cSJim Jagielski uno::Sequence< OUString > SAL_CALL SvxUnoTextField::getSupportedServiceNames()
1097*b1cdbd2cSJim Jagielski throw(uno::RuntimeException)
1098*b1cdbd2cSJim Jagielski {
1099*b1cdbd2cSJim Jagielski uno::Sequence< OUString > aSeq( 4 );
1100*b1cdbd2cSJim Jagielski OUString* pServices = aSeq.getArray();
1101*b1cdbd2cSJim Jagielski pServices[0] = OUString::createFromAscii( pNewServiceNames[mnServiceId] );
1102*b1cdbd2cSJim Jagielski pServices[1] = OUString::createFromAscii( pOldServiceNames[mnServiceId] );
1103*b1cdbd2cSJim Jagielski pServices[2] = OUString::createFromAscii( "com.sun.star.text.TextContent" ),
1104*b1cdbd2cSJim Jagielski pServices[3] = OUString::createFromAscii( "com.sun.star.text.TextField" );
1105*b1cdbd2cSJim Jagielski
1106*b1cdbd2cSJim Jagielski return aSeq;
1107*b1cdbd2cSJim Jagielski }
1108*b1cdbd2cSJim Jagielski
supportsService(const OUString & ServiceName)1109*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL SvxUnoTextField::supportsService( const OUString& ServiceName ) throw( uno::RuntimeException )
1110*b1cdbd2cSJim Jagielski {
1111*b1cdbd2cSJim Jagielski return comphelper::ServiceInfoHelper::supportsService( ServiceName, getSupportedServiceNames() );
1112*b1cdbd2cSJim Jagielski }
1113*b1cdbd2cSJim Jagielski
SvxUnoTextCreateTextField(const::rtl::OUString & ServiceSpecifier)1114*b1cdbd2cSJim Jagielski uno::Reference< uno::XInterface > SAL_CALL SvxUnoTextCreateTextField( const ::rtl::OUString& ServiceSpecifier ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException)
1115*b1cdbd2cSJim Jagielski {
1116*b1cdbd2cSJim Jagielski uno::Reference< uno::XInterface > xRet;
1117*b1cdbd2cSJim Jagielski
1118*b1cdbd2cSJim Jagielski const OUString aTextFieldPrexit( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.textfield.") );
1119*b1cdbd2cSJim Jagielski
1120*b1cdbd2cSJim Jagielski // #i93308# up to OOo 3.2 we used this wrong namespace name with the capital T & F. This is
1121*b1cdbd2cSJim Jagielski // fixed since OOo 3.2 but for compatibility we will still provide support for the wrong notation.
1122*b1cdbd2cSJim Jagielski const OUString aTextFieldPrexit2( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.TextField.") );
1123*b1cdbd2cSJim Jagielski
1124*b1cdbd2cSJim Jagielski if( (ServiceSpecifier.compareTo( aTextFieldPrexit, aTextFieldPrexit.getLength() ) == 0) ||
1125*b1cdbd2cSJim Jagielski (ServiceSpecifier.compareTo( aTextFieldPrexit2, aTextFieldPrexit2.getLength() ) == 0) )
1126*b1cdbd2cSJim Jagielski {
1127*b1cdbd2cSJim Jagielski OUString aFieldType( ServiceSpecifier.copy( aTextFieldPrexit.getLength() ) );
1128*b1cdbd2cSJim Jagielski
1129*b1cdbd2cSJim Jagielski sal_Int32 nId = ID_UNKNOWN;
1130*b1cdbd2cSJim Jagielski
1131*b1cdbd2cSJim Jagielski if( aFieldType.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("DateTime") ) )
1132*b1cdbd2cSJim Jagielski {
1133*b1cdbd2cSJim Jagielski nId = ID_DATEFIELD;
1134*b1cdbd2cSJim Jagielski }
1135*b1cdbd2cSJim Jagielski else if( aFieldType.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("URL") ) )
1136*b1cdbd2cSJim Jagielski {
1137*b1cdbd2cSJim Jagielski nId = ID_URLFIELD;
1138*b1cdbd2cSJim Jagielski }
1139*b1cdbd2cSJim Jagielski else if( aFieldType.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("PageNumber") ) )
1140*b1cdbd2cSJim Jagielski {
1141*b1cdbd2cSJim Jagielski nId = ID_PAGEFIELD;
1142*b1cdbd2cSJim Jagielski }
1143*b1cdbd2cSJim Jagielski else if( aFieldType.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("PageCount") ) )
1144*b1cdbd2cSJim Jagielski {
1145*b1cdbd2cSJim Jagielski nId = ID_PAGESFIELD;
1146*b1cdbd2cSJim Jagielski }
1147*b1cdbd2cSJim Jagielski else if( aFieldType.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("SheetName") ) )
1148*b1cdbd2cSJim Jagielski {
1149*b1cdbd2cSJim Jagielski nId = ID_TABLEFIELD;
1150*b1cdbd2cSJim Jagielski }
1151*b1cdbd2cSJim Jagielski else if( aFieldType.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("FileName") ) )
1152*b1cdbd2cSJim Jagielski {
1153*b1cdbd2cSJim Jagielski nId = ID_EXT_FILEFIELD;
1154*b1cdbd2cSJim Jagielski }
1155*b1cdbd2cSJim Jagielski else if (aFieldType.equalsAsciiL(
1156*b1cdbd2cSJim Jagielski RTL_CONSTASCII_STRINGPARAM("docinfo.Title") ) ||
1157*b1cdbd2cSJim Jagielski aFieldType.equalsAsciiL(
1158*b1cdbd2cSJim Jagielski RTL_CONSTASCII_STRINGPARAM("DocInfo.Title") ) )
1159*b1cdbd2cSJim Jagielski {
1160*b1cdbd2cSJim Jagielski nId = ID_FILEFIELD;
1161*b1cdbd2cSJim Jagielski }
1162*b1cdbd2cSJim Jagielski else if( aFieldType.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("Author") ) )
1163*b1cdbd2cSJim Jagielski {
1164*b1cdbd2cSJim Jagielski nId = ID_AUTHORFIELD;
1165*b1cdbd2cSJim Jagielski }
1166*b1cdbd2cSJim Jagielski else if( aFieldType.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("Measure") ) )
1167*b1cdbd2cSJim Jagielski {
1168*b1cdbd2cSJim Jagielski nId = ID_MEASUREFIELD;
1169*b1cdbd2cSJim Jagielski }
1170*b1cdbd2cSJim Jagielski
1171*b1cdbd2cSJim Jagielski if( nId != ID_UNKNOWN )
1172*b1cdbd2cSJim Jagielski xRet = (::cppu::OWeakObject * )new SvxUnoTextField( nId );
1173*b1cdbd2cSJim Jagielski }
1174*b1cdbd2cSJim Jagielski
1175*b1cdbd2cSJim Jagielski return xRet;
1176*b1cdbd2cSJim Jagielski }
1177