xref: /aoo4110/main/editeng/source/uno/unofield.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_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