xref: /aoo4110/main/xmloff/inc/txtvfldi.hxx (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 /** @#file
25*b1cdbd2cSJim Jagielski  *
26*b1cdbd2cSJim Jagielski  *  XML import of all variable related text fields plus database display field
27*b1cdbd2cSJim Jagielski  */
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski #ifndef _XMLOFF_TXTVFLDI_HXX
30*b1cdbd2cSJim Jagielski #define _XMLOFF_TXTVFLDI_HXX
31*b1cdbd2cSJim Jagielski 
32*b1cdbd2cSJim Jagielski #include "txtvfldi.hxx"
33*b1cdbd2cSJim Jagielski #include "txtfldi.hxx"
34*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySet.hpp>
35*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySetInfo.hpp>
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski 
39*b1cdbd2cSJim Jagielski /// variable type (for XMLSetVarFieldImportContext)
40*b1cdbd2cSJim Jagielski enum VarType
41*b1cdbd2cSJim Jagielski {
42*b1cdbd2cSJim Jagielski 	VarTypeSimple,
43*b1cdbd2cSJim Jagielski 	VarTypeUserField,
44*b1cdbd2cSJim Jagielski 	VarTypeSequence
45*b1cdbd2cSJim Jagielski };
46*b1cdbd2cSJim Jagielski 
47*b1cdbd2cSJim Jagielski 
48*b1cdbd2cSJim Jagielski 
49*b1cdbd2cSJim Jagielski /** helper class: parses value-type and associated value attributes */
50*b1cdbd2cSJim Jagielski class XMLValueImportHelper
51*b1cdbd2cSJim Jagielski {
52*b1cdbd2cSJim Jagielski 
53*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyContent;
54*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyValue;
55*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyFormula;
56*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyNumberFormat;
57*b1cdbd2cSJim Jagielski     const ::rtl::OUString sPropertyIsFixedLanguage;
58*b1cdbd2cSJim Jagielski 
59*b1cdbd2cSJim Jagielski 	SvXMLImport& rImport;
60*b1cdbd2cSJim Jagielski 	XMLTextImportHelper& rHelper;
61*b1cdbd2cSJim Jagielski 
62*b1cdbd2cSJim Jagielski 	::rtl::OUString sValue;		/// string value (only valid if bStringValueOK)
63*b1cdbd2cSJim Jagielski 	double fValue;				/// double value (only valid if bFloatValueOK)
64*b1cdbd2cSJim Jagielski 	sal_Int32 nFormatKey;		/// format key (only valid of bFormatOK)
65*b1cdbd2cSJim Jagielski 	::rtl::OUString sFormula;	/// formula string
66*b1cdbd2cSJim Jagielski 	::rtl::OUString sDefault;	/// default (see bStringDefault/bFormulaDef.)
67*b1cdbd2cSJim Jagielski     sal_Bool bIsDefaultLanguage;/// format (of nFormatKey) has system language?
68*b1cdbd2cSJim Jagielski 
69*b1cdbd2cSJim Jagielski 	sal_Bool bStringType; 		/// is this a string (or a float) type?
70*b1cdbd2cSJim Jagielski 	sal_Bool bFormatOK;			/// have we read a style:data-style-name attr.?
71*b1cdbd2cSJim Jagielski 	sal_Bool bTypeOK;			/// have we read a value-type attribute?
72*b1cdbd2cSJim Jagielski 	sal_Bool bStringValueOK;	/// have we read a string-value attr.?
73*b1cdbd2cSJim Jagielski 	sal_Bool bFloatValueOK;		/// have we read any of the float attr.s?
74*b1cdbd2cSJim Jagielski 	sal_Bool bFormulaOK;		/// have we read the formula attribute?
75*b1cdbd2cSJim Jagielski 
76*b1cdbd2cSJim Jagielski 	const sal_Bool bSetType;	/// should PrepareField set the SetExp subtype?
77*b1cdbd2cSJim Jagielski 	const sal_Bool bSetValue;	/// should PrepareField set content/value?
78*b1cdbd2cSJim Jagielski 	const sal_Bool bSetStyle;	/// should PrepareField set NumberFormat?
79*b1cdbd2cSJim Jagielski 	const sal_Bool bSetFormula;	/// should PrepareField set Formula?
80*b1cdbd2cSJim Jagielski 
81*b1cdbd2cSJim Jagielski 	const sal_Bool bStringDefault;	/// default: string-value = content
82*b1cdbd2cSJim Jagielski 	const sal_Bool bFormulaDefault;	/// default: formula = content
83*b1cdbd2cSJim Jagielski 
84*b1cdbd2cSJim Jagielski public:
85*b1cdbd2cSJim Jagielski 	XMLValueImportHelper(
86*b1cdbd2cSJim Jagielski 		SvXMLImport& rImprt,					/// XML Import
87*b1cdbd2cSJim Jagielski 		XMLTextImportHelper& rHlp,				/// text import helper
88*b1cdbd2cSJim Jagielski 		sal_Bool bType, 						/// process type (PrepareField)
89*b1cdbd2cSJim Jagielski 		sal_Bool bStyle,						/// process data style (P.F.)
90*b1cdbd2cSJim Jagielski 		sal_Bool bValue, 						/// process value (Prep.Field)
91*b1cdbd2cSJim Jagielski 		sal_Bool bFormula);						/// process formula (Prep.F.)
92*b1cdbd2cSJim Jagielski 
93*b1cdbd2cSJim Jagielski 	virtual ~XMLValueImportHelper();
94*b1cdbd2cSJim Jagielski 
95*b1cdbd2cSJim Jagielski 	/// process attribute values
96*b1cdbd2cSJim Jagielski 	virtual void ProcessAttribute( sal_uInt16 nAttrToken,
97*b1cdbd2cSJim Jagielski 								   const ::rtl::OUString& sAttrValue );
98*b1cdbd2cSJim Jagielski 
99*b1cdbd2cSJim Jagielski 	/// prepare XTextField for insertion into document
100*b1cdbd2cSJim Jagielski 	virtual void PrepareField(
101*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference<
102*b1cdbd2cSJim Jagielski 		::com::sun::star::beans::XPropertySet> & xPropertySet);
103*b1cdbd2cSJim Jagielski 
104*b1cdbd2cSJim Jagielski 	/// is value a string (rather than double)?
IsStringValue()105*b1cdbd2cSJim Jagielski 	inline sal_Bool IsStringValue() { return bStringType; }
106*b1cdbd2cSJim Jagielski 
107*b1cdbd2cSJim Jagielski 	/// has format been read?
IsFormatOK()108*b1cdbd2cSJim Jagielski 	inline sal_Bool IsFormatOK() { return bFormatOK; }
109*b1cdbd2cSJim Jagielski 
SetDefault(const::rtl::OUString & sStr)110*b1cdbd2cSJim Jagielski 	inline void SetDefault(const ::rtl::OUString& sStr) { sDefault = sStr; }
111*b1cdbd2cSJim Jagielski };
112*b1cdbd2cSJim Jagielski 
113*b1cdbd2cSJim Jagielski 
114*b1cdbd2cSJim Jagielski 
115*b1cdbd2cSJim Jagielski /**
116*b1cdbd2cSJim Jagielski  * abstract parent class for all variable related fields
117*b1cdbd2cSJim Jagielski  * - variable-set/get/decl		(not -decls),
118*b1cdbd2cSJim Jagielski  * - user-field-get/decl		(not -decls),
119*b1cdbd2cSJim Jagielski  * - sequence/-decl				(not -decls),
120*b1cdbd2cSJim Jagielski  * - expression,
121*b1cdbd2cSJim Jagielski  * - text-input
122*b1cdbd2cSJim Jagielski  *
123*b1cdbd2cSJim Jagielski  * Processes the following attributes:
124*b1cdbd2cSJim Jagielski  * - name
125*b1cdbd2cSJim Jagielski  * - formula
126*b1cdbd2cSJim Jagielski  * - display
127*b1cdbd2cSJim Jagielski  * - value, value-type, data-style-name (via XMLValueImportHelper)
128*b1cdbd2cSJim Jagielski  * - description.
129*b1cdbd2cSJim Jagielski  *
130*b1cdbd2cSJim Jagielski  * Each attribute has a corresponding member, a bool variable to indicate
131*b1cdbd2cSJim Jagielski  * whether it was set or not, and a bool variable whether it should be set
132*b1cdbd2cSJim Jagielski  * using the standard property name.
133*b1cdbd2cSJim Jagielski  *
134*b1cdbd2cSJim Jagielski  * bValid is set true, when name is found!
135*b1cdbd2cSJim Jagielski  * (Most variable related fields are valid, if a name is
136*b1cdbd2cSJim Jagielski  * found. However, some are always valid. In this case, setting bValid
137*b1cdbd2cSJim Jagielski  * does not matter.)
138*b1cdbd2cSJim Jagielski  */
139*b1cdbd2cSJim Jagielski class XMLVarFieldImportContext : public XMLTextFieldImportContext
140*b1cdbd2cSJim Jagielski {
141*b1cdbd2cSJim Jagielski protected:
142*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyContent;
143*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyHint;
144*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyHelp;
145*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyTooltip;
146*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyIsVisible;
147*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyIsDisplayFormula;
148*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyCurrentPresentation;
149*b1cdbd2cSJim Jagielski 
150*b1cdbd2cSJim Jagielski private:
151*b1cdbd2cSJim Jagielski 	::rtl::OUString sName;				/// name attribute
152*b1cdbd2cSJim Jagielski 	::rtl::OUString sFormula;			/// formula attribute
153*b1cdbd2cSJim Jagielski 	::rtl::OUString sDescription;		/// description
154*b1cdbd2cSJim Jagielski     ::rtl::OUString sHelp;              /// help text
155*b1cdbd2cSJim Jagielski     ::rtl::OUString sHint;              /// hint
156*b1cdbd2cSJim Jagielski 	XMLValueImportHelper aValueHelper;	/// value, value-type, and style
157*b1cdbd2cSJim Jagielski 	sal_Bool bDisplayFormula;			/// display formula?(rather than value)
158*b1cdbd2cSJim Jagielski 	sal_Bool bDisplayNone;				/// hide field?
159*b1cdbd2cSJim Jagielski 
160*b1cdbd2cSJim Jagielski 	sal_Bool bNameOK;					/// sName was set
161*b1cdbd2cSJim Jagielski 	sal_Bool bFormulaOK;				/// sFormula was set
162*b1cdbd2cSJim Jagielski 	sal_Bool bDescriptionOK;			/// sDescription was set
163*b1cdbd2cSJim Jagielski     sal_Bool bHelpOK;                   /// sHelp was set
164*b1cdbd2cSJim Jagielski     sal_Bool bHintOK;                   /// sHint was set
165*b1cdbd2cSJim Jagielski 	sal_Bool bDisplayOK;				/// sDisplayFormula/-None were set
166*b1cdbd2cSJim Jagielski 
167*b1cdbd2cSJim Jagielski 	sal_Bool bSetName;					/// set sName with ???-property
168*b1cdbd2cSJim Jagielski 	sal_Bool bSetFormula;				/// set Formula property
169*b1cdbd2cSJim Jagielski 	sal_Bool bSetFormulaDefault;		/// use content as default for formula
170*b1cdbd2cSJim Jagielski 	sal_Bool bSetDescription;			/// set sDescription with Hint-property
171*b1cdbd2cSJim Jagielski     sal_Bool bSetHelp;
172*b1cdbd2cSJim Jagielski     sal_Bool bSetHint;
173*b1cdbd2cSJim Jagielski 	sal_Bool bSetVisible;				/// set IsVisible
174*b1cdbd2cSJim Jagielski 	sal_Bool bSetDisplayFormula;		/// set DisplayFormula (sub type???)
175*b1cdbd2cSJim Jagielski 	sal_Bool bSetPresentation;			/// set presentation frm elem. content?
176*b1cdbd2cSJim Jagielski 
177*b1cdbd2cSJim Jagielski public:
178*b1cdbd2cSJim Jagielski 
179*b1cdbd2cSJim Jagielski 	TYPEINFO();
180*b1cdbd2cSJim Jagielski 
181*b1cdbd2cSJim Jagielski 	XMLVarFieldImportContext(
182*b1cdbd2cSJim Jagielski 		// for XMLTextFieldImportContext:
183*b1cdbd2cSJim Jagielski 		SvXMLImport& rImport,			/// XML Import
184*b1cdbd2cSJim Jagielski 		XMLTextImportHelper& rHlp,		/// text import helper
185*b1cdbd2cSJim Jagielski 		const sal_Char* pServiceName,	/// name of SO API service
186*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrfx,				/// namespace prefix
187*b1cdbd2cSJim Jagielski 		const ::rtl::OUString& rLocalName,	/// element name w/o prefix
188*b1cdbd2cSJim Jagielski 		// config variables for PrepareField behavior:
189*b1cdbd2cSJim Jagielski 		sal_Bool bName,					/// set sName with ???-property
190*b1cdbd2cSJim Jagielski 		sal_Bool bFormula,				/// set Formula property
191*b1cdbd2cSJim Jagielski 		sal_Bool bFormulaDefault,		/// use content as default for formula
192*b1cdbd2cSJim Jagielski 		sal_Bool bDescription,			/// set sDescription with Hint-property
193*b1cdbd2cSJim Jagielski         sal_Bool bHelp,
194*b1cdbd2cSJim Jagielski         sal_Bool bHint,
195*b1cdbd2cSJim Jagielski 		sal_Bool bVisible,				/// set IsVisible (display attr)
196*b1cdbd2cSJim Jagielski 		sal_Bool bDisplayFormula,		/// set ??? (display attr.)
197*b1cdbd2cSJim Jagielski 		sal_Bool bType,					/// set value type with ???-property
198*b1cdbd2cSJim Jagielski 		sal_Bool bStyle,				/// set data style (NumberFormat-Prop.)
199*b1cdbd2cSJim Jagielski 		sal_Bool bValue,				/// set value with Content/Value-Prop.
200*b1cdbd2cSJim Jagielski 		sal_Bool bPresentation);		/// set presentation from elem. content
201*b1cdbd2cSJim Jagielski 
202*b1cdbd2cSJim Jagielski protected:
203*b1cdbd2cSJim Jagielski 	/// process attribute values
204*b1cdbd2cSJim Jagielski 	virtual void ProcessAttribute( sal_uInt16 nAttrToken,
205*b1cdbd2cSJim Jagielski 								   const ::rtl::OUString& sAttrValue );
206*b1cdbd2cSJim Jagielski 
207*b1cdbd2cSJim Jagielski 	/// prepare XTextField for insertion into document
208*b1cdbd2cSJim Jagielski 	virtual void PrepareField(
209*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference<
210*b1cdbd2cSJim Jagielski 		::com::sun::star::beans::XPropertySet> & xPropertySet);
211*b1cdbd2cSJim Jagielski 
212*b1cdbd2cSJim Jagielski 	// various accessor methods:
GetName()213*b1cdbd2cSJim Jagielski 	inline ::rtl::OUString GetName()	{ return sName; }
IsStringValue()214*b1cdbd2cSJim Jagielski 	inline sal_Bool IsStringValue()		{ return aValueHelper.IsStringValue();}
IsNameOK()215*b1cdbd2cSJim Jagielski 	inline sal_Bool IsNameOK()			{ return bNameOK; }
IsFormulaOK()216*b1cdbd2cSJim Jagielski 	inline sal_Bool IsFormulaOK()		{ return bFormulaOK; }
IsDescriptionOK()217*b1cdbd2cSJim Jagielski 	inline sal_Bool IsDescriptionOK()	{ return bDescriptionOK; }
IsDisplayOK()218*b1cdbd2cSJim Jagielski 	inline sal_Bool IsDisplayOK()		{ return bDisplayOK; }
219*b1cdbd2cSJim Jagielski };
220*b1cdbd2cSJim Jagielski 
221*b1cdbd2cSJim Jagielski 
222*b1cdbd2cSJim Jagielski 
223*b1cdbd2cSJim Jagielski /** import variable get fields (<text:variable-get>) */
224*b1cdbd2cSJim Jagielski class XMLVariableGetFieldImportContext : public XMLVarFieldImportContext
225*b1cdbd2cSJim Jagielski {
226*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertySubType;
227*b1cdbd2cSJim Jagielski 
228*b1cdbd2cSJim Jagielski public:
229*b1cdbd2cSJim Jagielski 
230*b1cdbd2cSJim Jagielski 	TYPEINFO();
231*b1cdbd2cSJim Jagielski 
232*b1cdbd2cSJim Jagielski 	XMLVariableGetFieldImportContext(
233*b1cdbd2cSJim Jagielski 		SvXMLImport& rImport,					/// XML Import
234*b1cdbd2cSJim Jagielski 		XMLTextImportHelper& rHlp,				/// Text import helper
235*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrfx,						/// namespace prefix
236*b1cdbd2cSJim Jagielski 		const ::rtl::OUString& rLocalName);		/// element name w/o prefix
237*b1cdbd2cSJim Jagielski 
238*b1cdbd2cSJim Jagielski 
239*b1cdbd2cSJim Jagielski protected:
240*b1cdbd2cSJim Jagielski 	/// prepare XTextField for insertion into document
241*b1cdbd2cSJim Jagielski 	virtual void PrepareField(
242*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference<
243*b1cdbd2cSJim Jagielski 		::com::sun::star::beans::XPropertySet> & xPropertySet);
244*b1cdbd2cSJim Jagielski };
245*b1cdbd2cSJim Jagielski 
246*b1cdbd2cSJim Jagielski 
247*b1cdbd2cSJim Jagielski 
248*b1cdbd2cSJim Jagielski /** import expression fields (<text:expression>) */
249*b1cdbd2cSJim Jagielski class XMLExpressionFieldImportContext : public XMLVarFieldImportContext
250*b1cdbd2cSJim Jagielski {
251*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertySubType;
252*b1cdbd2cSJim Jagielski 
253*b1cdbd2cSJim Jagielski public:
254*b1cdbd2cSJim Jagielski 
255*b1cdbd2cSJim Jagielski 	TYPEINFO();
256*b1cdbd2cSJim Jagielski 
257*b1cdbd2cSJim Jagielski 	XMLExpressionFieldImportContext(
258*b1cdbd2cSJim Jagielski 		SvXMLImport& rImport,					/// XML Import
259*b1cdbd2cSJim Jagielski 		XMLTextImportHelper& rHlp,				/// Text import helper
260*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrfx,						/// namespace prefix
261*b1cdbd2cSJim Jagielski 		const ::rtl::OUString& sLocalName);		/// element name w/o prefix
262*b1cdbd2cSJim Jagielski 
263*b1cdbd2cSJim Jagielski protected:
264*b1cdbd2cSJim Jagielski 	virtual void PrepareField(
265*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference<
266*b1cdbd2cSJim Jagielski 		::com::sun::star::beans::XPropertySet> & xPropertySet);
267*b1cdbd2cSJim Jagielski };
268*b1cdbd2cSJim Jagielski 
269*b1cdbd2cSJim Jagielski /*** import text input fields (<text:text-input>) */
270*b1cdbd2cSJim Jagielski class XMLTextInputFieldImportContext : public XMLVarFieldImportContext
271*b1cdbd2cSJim Jagielski {
272*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyContent;
273*b1cdbd2cSJim Jagielski 
274*b1cdbd2cSJim Jagielski public:
275*b1cdbd2cSJim Jagielski 
276*b1cdbd2cSJim Jagielski 	TYPEINFO();
277*b1cdbd2cSJim Jagielski 
278*b1cdbd2cSJim Jagielski 	XMLTextInputFieldImportContext(
279*b1cdbd2cSJim Jagielski 		SvXMLImport& rImport,					/// XML Import
280*b1cdbd2cSJim Jagielski 		XMLTextImportHelper& rHlp,				/// Text import helper
281*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrfx,						/// namespace prefix
282*b1cdbd2cSJim Jagielski 		const ::rtl::OUString& sLocalName);		/// element name w/o prefix
283*b1cdbd2cSJim Jagielski 
284*b1cdbd2cSJim Jagielski protected:
285*b1cdbd2cSJim Jagielski 	virtual void PrepareField(
286*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference<
287*b1cdbd2cSJim Jagielski 		::com::sun::star::beans::XPropertySet> & xPropertySet);
288*b1cdbd2cSJim Jagielski };
289*b1cdbd2cSJim Jagielski 
290*b1cdbd2cSJim Jagielski 
291*b1cdbd2cSJim Jagielski 
292*b1cdbd2cSJim Jagielski 
293*b1cdbd2cSJim Jagielski 
294*b1cdbd2cSJim Jagielski 
295*b1cdbd2cSJim Jagielski /**
296*b1cdbd2cSJim Jagielski  * uperclass for variable/user-set, var/user-input, and sequence fields
297*b1cdbd2cSJim Jagielski  * inds field master of appropriate type and attaches field to it.
298*b1cdbd2cSJim Jagielski  */
299*b1cdbd2cSJim Jagielski class XMLSetVarFieldImportContext : public XMLVarFieldImportContext
300*b1cdbd2cSJim Jagielski {
301*b1cdbd2cSJim Jagielski 	const VarType eFieldType;
302*b1cdbd2cSJim Jagielski 
303*b1cdbd2cSJim Jagielski public:
304*b1cdbd2cSJim Jagielski 
305*b1cdbd2cSJim Jagielski 	TYPEINFO();
306*b1cdbd2cSJim Jagielski 
307*b1cdbd2cSJim Jagielski 	XMLSetVarFieldImportContext(
308*b1cdbd2cSJim Jagielski 		// for XMLTextFieldImportContext:
309*b1cdbd2cSJim Jagielski 		SvXMLImport& rImport,			/// see XMLTextFieldImportContext
310*b1cdbd2cSJim Jagielski 		XMLTextImportHelper& rHlp,		/// see XMLTextFieldImportContext
311*b1cdbd2cSJim Jagielski 		const sal_Char* pServiceName,	/// see XMLTextFieldImportContext
312*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrfx,				/// see XMLTextFieldImportContext
313*b1cdbd2cSJim Jagielski 		const ::rtl::OUString& rLocalName, /// see XMLTextFieldImportContext
314*b1cdbd2cSJim Jagielski 		// for finding appropriate field master (see EndElement())
315*b1cdbd2cSJim Jagielski 		VarType eVarType,				/// variable type
316*b1cdbd2cSJim Jagielski 		// config variables:
317*b1cdbd2cSJim Jagielski 		sal_Bool bName,					/// see XMLTextFieldImportContext
318*b1cdbd2cSJim Jagielski 		sal_Bool bFormula,				/// see XMLTextFieldImportContext
319*b1cdbd2cSJim Jagielski 		sal_Bool bFormulaDefault,		/// see XMLTextFieldImportContext
320*b1cdbd2cSJim Jagielski 		sal_Bool bDescription,			/// see XMLTextFieldImportContext
321*b1cdbd2cSJim Jagielski 		sal_Bool bHelp,     			/// see XMLTextFieldImportContext
322*b1cdbd2cSJim Jagielski 		sal_Bool bHint,	        		/// see XMLTextFieldImportContext
323*b1cdbd2cSJim Jagielski 		sal_Bool bVisible,				/// see XMLTextFieldImportContext
324*b1cdbd2cSJim Jagielski 		sal_Bool bDisplayFormula,		/// see XMLTextFieldImportContext
325*b1cdbd2cSJim Jagielski 		sal_Bool bType,					/// see XMLTextFieldImportContext
326*b1cdbd2cSJim Jagielski 		sal_Bool bStyle,				/// see XMLTextFieldImportContext
327*b1cdbd2cSJim Jagielski 		sal_Bool bValue,				/// see XMLTextFieldImportContext
328*b1cdbd2cSJim Jagielski 		sal_Bool bPresentation);		/// see XMLTextFieldImportContext
329*b1cdbd2cSJim Jagielski 
330*b1cdbd2cSJim Jagielski protected:
331*b1cdbd2cSJim Jagielski 
332*b1cdbd2cSJim Jagielski 	/// create XTextField, attach master and insert into document;
333*b1cdbd2cSJim Jagielski 	/// also calls PrepareTextField
334*b1cdbd2cSJim Jagielski 	virtual void EndElement();
335*b1cdbd2cSJim Jagielski 
336*b1cdbd2cSJim Jagielski 	/// find appropriate field master
337*b1cdbd2cSJim Jagielski 	sal_Bool FindFieldMaster(
338*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Reference<
339*b1cdbd2cSJim Jagielski 		::com::sun::star::beans::XPropertySet> & xMaster);
340*b1cdbd2cSJim Jagielski };
341*b1cdbd2cSJim Jagielski 
342*b1cdbd2cSJim Jagielski 
343*b1cdbd2cSJim Jagielski 
344*b1cdbd2cSJim Jagielski /** import variable set fields (<text:variable-set>) */
345*b1cdbd2cSJim Jagielski class XMLVariableSetFieldImportContext : public XMLSetVarFieldImportContext
346*b1cdbd2cSJim Jagielski {
347*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertySubType;
348*b1cdbd2cSJim Jagielski 
349*b1cdbd2cSJim Jagielski public:
350*b1cdbd2cSJim Jagielski 
351*b1cdbd2cSJim Jagielski 	TYPEINFO();
352*b1cdbd2cSJim Jagielski 
353*b1cdbd2cSJim Jagielski 	XMLVariableSetFieldImportContext(
354*b1cdbd2cSJim Jagielski 		SvXMLImport& rImport,					/// XML Import
355*b1cdbd2cSJim Jagielski 		XMLTextImportHelper& rHlp,				/// Text import helper
356*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrfx,						/// namespace prefix
357*b1cdbd2cSJim Jagielski 		const ::rtl::OUString& rLocalName);		/// element name w/o prefix
358*b1cdbd2cSJim Jagielski 
359*b1cdbd2cSJim Jagielski protected:
360*b1cdbd2cSJim Jagielski 	/// prepare XTextField for insertion into document
361*b1cdbd2cSJim Jagielski 	virtual void PrepareField(
362*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference<
363*b1cdbd2cSJim Jagielski 		::com::sun::star::beans::XPropertySet> & xPropertySet);
364*b1cdbd2cSJim Jagielski };
365*b1cdbd2cSJim Jagielski 
366*b1cdbd2cSJim Jagielski 
367*b1cdbd2cSJim Jagielski 
368*b1cdbd2cSJim Jagielski /** variable input fields (<text:variable-input>) */
369*b1cdbd2cSJim Jagielski class XMLVariableInputFieldImportContext : public XMLSetVarFieldImportContext
370*b1cdbd2cSJim Jagielski {
371*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertySubType;
372*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyIsInput;
373*b1cdbd2cSJim Jagielski 
374*b1cdbd2cSJim Jagielski public:
375*b1cdbd2cSJim Jagielski 
376*b1cdbd2cSJim Jagielski 	TYPEINFO();
377*b1cdbd2cSJim Jagielski 
378*b1cdbd2cSJim Jagielski 	XMLVariableInputFieldImportContext(
379*b1cdbd2cSJim Jagielski 		SvXMLImport& rImport,					/// XML Import
380*b1cdbd2cSJim Jagielski 		XMLTextImportHelper& rHlp,				/// Text import helper
381*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrfx, 						/// namespace prefix
382*b1cdbd2cSJim Jagielski 		const ::rtl::OUString& rLocalName);		/// element name w/o prefix
383*b1cdbd2cSJim Jagielski 
384*b1cdbd2cSJim Jagielski protected:
385*b1cdbd2cSJim Jagielski 
386*b1cdbd2cSJim Jagielski 	/// prepare XTextField for insertion into document
387*b1cdbd2cSJim Jagielski 	virtual void PrepareField(
388*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference<
389*b1cdbd2cSJim Jagielski 		::com::sun::star::beans::XPropertySet> & xPropertySet);
390*b1cdbd2cSJim Jagielski };
391*b1cdbd2cSJim Jagielski 
392*b1cdbd2cSJim Jagielski 
393*b1cdbd2cSJim Jagielski 
394*b1cdbd2cSJim Jagielski /** user fields (<text:user-field-get>) */
395*b1cdbd2cSJim Jagielski class XMLUserFieldImportContext : public XMLSetVarFieldImportContext
396*b1cdbd2cSJim Jagielski {
397*b1cdbd2cSJim Jagielski 
398*b1cdbd2cSJim Jagielski public:
399*b1cdbd2cSJim Jagielski 
400*b1cdbd2cSJim Jagielski 	TYPEINFO();
401*b1cdbd2cSJim Jagielski 
402*b1cdbd2cSJim Jagielski 	XMLUserFieldImportContext(
403*b1cdbd2cSJim Jagielski 		SvXMLImport& rImport,					/// XML Import
404*b1cdbd2cSJim Jagielski 		XMLTextImportHelper& rHlp,				/// Text import helper
405*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrfx,						/// namespace prefix
406*b1cdbd2cSJim Jagielski 		const ::rtl::OUString& rLocalName);		/// element name w/o prefix
407*b1cdbd2cSJim Jagielski };
408*b1cdbd2cSJim Jagielski 
409*b1cdbd2cSJim Jagielski /** user input fields (<text:user-field-input>) */
410*b1cdbd2cSJim Jagielski class XMLUserFieldInputImportContext : public XMLVarFieldImportContext
411*b1cdbd2cSJim Jagielski {
412*b1cdbd2cSJim Jagielski 
413*b1cdbd2cSJim Jagielski public:
414*b1cdbd2cSJim Jagielski 
415*b1cdbd2cSJim Jagielski 	TYPEINFO();
416*b1cdbd2cSJim Jagielski 
417*b1cdbd2cSJim Jagielski 	XMLUserFieldInputImportContext(
418*b1cdbd2cSJim Jagielski 		SvXMLImport& rImport,					/// XML Import
419*b1cdbd2cSJim Jagielski 		XMLTextImportHelper& rHlp,				/// Text import helper
420*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrfx,						/// namespace prefix
421*b1cdbd2cSJim Jagielski 		const ::rtl::OUString& rLocalName);		/// element name w/o prefix
422*b1cdbd2cSJim Jagielski 
423*b1cdbd2cSJim Jagielski 	virtual void PrepareField(
424*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference<
425*b1cdbd2cSJim Jagielski 		::com::sun::star::beans::XPropertySet> & xPropertySet);
426*b1cdbd2cSJim Jagielski };
427*b1cdbd2cSJim Jagielski 
428*b1cdbd2cSJim Jagielski 
429*b1cdbd2cSJim Jagielski 
430*b1cdbd2cSJim Jagielski /** sequence fields (<text:sequence>) */
431*b1cdbd2cSJim Jagielski class XMLSequenceFieldImportContext : public XMLSetVarFieldImportContext
432*b1cdbd2cSJim Jagielski {
433*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyFormula;
434*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyNumberFormat;
435*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertySequenceValue;
436*b1cdbd2cSJim Jagielski 	::rtl::OUString sFormula;
437*b1cdbd2cSJim Jagielski 	::rtl::OUString sNumFormat;
438*b1cdbd2cSJim Jagielski 	::rtl::OUString sNumFormatSync;
439*b1cdbd2cSJim Jagielski 	::rtl::OUString sRefName;
440*b1cdbd2cSJim Jagielski 
441*b1cdbd2cSJim Jagielski 	sal_Bool bRefNameOK;
442*b1cdbd2cSJim Jagielski 
443*b1cdbd2cSJim Jagielski public:
444*b1cdbd2cSJim Jagielski 
445*b1cdbd2cSJim Jagielski 	TYPEINFO();
446*b1cdbd2cSJim Jagielski 
447*b1cdbd2cSJim Jagielski 	XMLSequenceFieldImportContext(
448*b1cdbd2cSJim Jagielski 		SvXMLImport& rImport,					/// XML Import
449*b1cdbd2cSJim Jagielski 		XMLTextImportHelper& rHlp,				/// Text import helper
450*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrfx,						/// namespace prefix
451*b1cdbd2cSJim Jagielski 		const ::rtl::OUString& rLocalName);		/// element name w/o prefix
452*b1cdbd2cSJim Jagielski 
453*b1cdbd2cSJim Jagielski protected:
454*b1cdbd2cSJim Jagielski 
455*b1cdbd2cSJim Jagielski 	/// process attribute values
456*b1cdbd2cSJim Jagielski 	virtual void ProcessAttribute( sal_uInt16 nAttrToken,
457*b1cdbd2cSJim Jagielski 								   const ::rtl::OUString& sAttrValue );
458*b1cdbd2cSJim Jagielski 
459*b1cdbd2cSJim Jagielski 	/// prepare XTextField for insertion into document
460*b1cdbd2cSJim Jagielski 	virtual void PrepareField(
461*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference<
462*b1cdbd2cSJim Jagielski 		::com::sun::star::beans::XPropertySet> & xPropertySet);
463*b1cdbd2cSJim Jagielski };
464*b1cdbd2cSJim Jagielski 
465*b1cdbd2cSJim Jagielski 
466*b1cdbd2cSJim Jagielski 
467*b1cdbd2cSJim Jagielski 
468*b1cdbd2cSJim Jagielski 
469*b1cdbd2cSJim Jagielski 
470*b1cdbd2cSJim Jagielski /**
471*b1cdbd2cSJim Jagielski  * variable declaration container for all variable fields
472*b1cdbd2cSJim Jagielski  * 		(variable-decls, user-field-decls, sequence-decls)
473*b1cdbd2cSJim Jagielski  */
474*b1cdbd2cSJim Jagielski class XMLVariableDeclsImportContext : public SvXMLImportContext
475*b1cdbd2cSJim Jagielski {
476*b1cdbd2cSJim Jagielski 	enum VarType eVarDeclsContextType;
477*b1cdbd2cSJim Jagielski 	XMLTextImportHelper& rImportHelper;
478*b1cdbd2cSJim Jagielski 
479*b1cdbd2cSJim Jagielski public:
480*b1cdbd2cSJim Jagielski 
481*b1cdbd2cSJim Jagielski 	TYPEINFO();
482*b1cdbd2cSJim Jagielski 
483*b1cdbd2cSJim Jagielski 	XMLVariableDeclsImportContext(
484*b1cdbd2cSJim Jagielski 		SvXMLImport& rImport,					/// XML Import
485*b1cdbd2cSJim Jagielski 		XMLTextImportHelper& rHlp,				/// text import helper
486*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrfx,						/// namespace prefix
487*b1cdbd2cSJim Jagielski 		const ::rtl::OUString& rLocalName,		/// element name w/o prefix
488*b1cdbd2cSJim Jagielski 		enum VarType eVarType);					/// variable type
489*b1cdbd2cSJim Jagielski 
490*b1cdbd2cSJim Jagielski 	virtual SvXMLImportContext *CreateChildContext(
491*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrefix,
492*b1cdbd2cSJim Jagielski 		const ::rtl::OUString& rLocalName,
493*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference<
494*b1cdbd2cSJim Jagielski 		::com::sun::star::xml::sax::XAttributeList> & xAttrList );
495*b1cdbd2cSJim Jagielski };
496*b1cdbd2cSJim Jagielski 
497*b1cdbd2cSJim Jagielski /**
498*b1cdbd2cSJim Jagielski  * variable field declarations
499*b1cdbd2cSJim Jagielski  * 		(variable-decl, user-field-decl, sequence-decl)
500*b1cdbd2cSJim Jagielski  */
501*b1cdbd2cSJim Jagielski class XMLVariableDeclImportContext : public SvXMLImportContext
502*b1cdbd2cSJim Jagielski {
503*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyName;
504*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertySubType;
505*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyNumberingLevel;
506*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyNumberingSeparator;
507*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyIsExpression;
508*b1cdbd2cSJim Jagielski 
509*b1cdbd2cSJim Jagielski 	::rtl::OUString sName;
510*b1cdbd2cSJim Jagielski 	XMLValueImportHelper aValueHelper;
511*b1cdbd2cSJim Jagielski 	sal_Int8 nNumLevel;
512*b1cdbd2cSJim Jagielski 	sal_Unicode cSeparationChar;
513*b1cdbd2cSJim Jagielski 
514*b1cdbd2cSJim Jagielski public:
515*b1cdbd2cSJim Jagielski 
516*b1cdbd2cSJim Jagielski 	TYPEINFO();
517*b1cdbd2cSJim Jagielski 
518*b1cdbd2cSJim Jagielski 	XMLVariableDeclImportContext(
519*b1cdbd2cSJim Jagielski 		SvXMLImport& rImport,					/// XML Import
520*b1cdbd2cSJim Jagielski 		XMLTextImportHelper& rHlp,				/// text import helper
521*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrfx,						/// namespace prefix
522*b1cdbd2cSJim Jagielski 		const ::rtl::OUString& rLocalName,		/// element name w/o prefix
523*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference< /// list of element attributes
524*b1cdbd2cSJim Jagielski 		::com::sun::star::xml::sax::XAttributeList> & xAttrList,
525*b1cdbd2cSJim Jagielski 		enum VarType eVarType);					/// variable type
526*b1cdbd2cSJim Jagielski 
527*b1cdbd2cSJim Jagielski 	/// get field master for name and rename if appropriate
528*b1cdbd2cSJim Jagielski 	static sal_Bool FindFieldMaster(::com::sun::star::uno::Reference<
529*b1cdbd2cSJim Jagielski 									::com::sun::star::beans::XPropertySet> & xMaster,
530*b1cdbd2cSJim Jagielski 									SvXMLImport& rImport,
531*b1cdbd2cSJim Jagielski 									XMLTextImportHelper& rHelper,
532*b1cdbd2cSJim Jagielski 									const ::rtl::OUString& sVarName,
533*b1cdbd2cSJim Jagielski 									enum VarType eVarType);
534*b1cdbd2cSJim Jagielski };
535*b1cdbd2cSJim Jagielski 
536*b1cdbd2cSJim Jagielski 
537*b1cdbd2cSJim Jagielski 
538*b1cdbd2cSJim Jagielski /** import table formula fields (deprecated; for Writer 2.0 compatibility) */
539*b1cdbd2cSJim Jagielski class XMLTableFormulaImportContext : public XMLTextFieldImportContext
540*b1cdbd2cSJim Jagielski {
541*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyNumberFormat;
542*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyContent;
543*b1cdbd2cSJim Jagielski     const ::rtl::OUString sPropertyIsShowFormula;
544*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyCurrentPresentation;
545*b1cdbd2cSJim Jagielski 
546*b1cdbd2cSJim Jagielski 	XMLValueImportHelper aValueHelper;
547*b1cdbd2cSJim Jagielski 
548*b1cdbd2cSJim Jagielski 	::rtl::OUString sFormula;
549*b1cdbd2cSJim Jagielski 	sal_Bool bFormulaOK;
550*b1cdbd2cSJim Jagielski 
551*b1cdbd2cSJim Jagielski     sal_Bool bIsShowFormula;
552*b1cdbd2cSJim Jagielski 
553*b1cdbd2cSJim Jagielski public:
554*b1cdbd2cSJim Jagielski 
555*b1cdbd2cSJim Jagielski 	TYPEINFO();
556*b1cdbd2cSJim Jagielski 
557*b1cdbd2cSJim Jagielski 	XMLTableFormulaImportContext(
558*b1cdbd2cSJim Jagielski 		SvXMLImport& rImport,					/// XML Import
559*b1cdbd2cSJim Jagielski 		XMLTextImportHelper& rHlp,				/// text import helper
560*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrfx,						/// namespace prefix
561*b1cdbd2cSJim Jagielski 		const ::rtl::OUString& rLocalName);		/// element name w/o prefix
562*b1cdbd2cSJim Jagielski     virtual ~XMLTableFormulaImportContext();
563*b1cdbd2cSJim Jagielski 
564*b1cdbd2cSJim Jagielski protected:
565*b1cdbd2cSJim Jagielski 
566*b1cdbd2cSJim Jagielski 	/// process attribute values
567*b1cdbd2cSJim Jagielski 	virtual void ProcessAttribute( sal_uInt16 nAttrToken,
568*b1cdbd2cSJim Jagielski 								   const ::rtl::OUString& sAttrValue );
569*b1cdbd2cSJim Jagielski 
570*b1cdbd2cSJim Jagielski 	/// prepare XTextField for insertion into document
571*b1cdbd2cSJim Jagielski 	virtual void PrepareField(
572*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference<
573*b1cdbd2cSJim Jagielski 		::com::sun::star::beans::XPropertySet> & xPropertySet);
574*b1cdbd2cSJim Jagielski };
575*b1cdbd2cSJim Jagielski 
576*b1cdbd2cSJim Jagielski 
577*b1cdbd2cSJim Jagielski 
578*b1cdbd2cSJim Jagielski /** import database display fields (<text:database-display>) */
579*b1cdbd2cSJim Jagielski class XMLDatabaseDisplayImportContext : public XMLDatabaseFieldImportContext
580*b1cdbd2cSJim Jagielski {
581*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyColumnName;
582*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyDatabaseFormat;
583*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sPropertyCurrentPresentation;
584*b1cdbd2cSJim Jagielski     const ::rtl::OUString sPropertyIsVisible;
585*b1cdbd2cSJim Jagielski 
586*b1cdbd2cSJim Jagielski 	XMLValueImportHelper aValueHelper;
587*b1cdbd2cSJim Jagielski 
588*b1cdbd2cSJim Jagielski 	::rtl::OUString sColumnName;
589*b1cdbd2cSJim Jagielski 	sal_Bool bColumnOK;
590*b1cdbd2cSJim Jagielski 
591*b1cdbd2cSJim Jagielski     sal_Bool bDisplay;
592*b1cdbd2cSJim Jagielski     sal_Bool bDisplayOK;
593*b1cdbd2cSJim Jagielski 
594*b1cdbd2cSJim Jagielski public:
595*b1cdbd2cSJim Jagielski 
596*b1cdbd2cSJim Jagielski 	TYPEINFO();
597*b1cdbd2cSJim Jagielski 
598*b1cdbd2cSJim Jagielski 	XMLDatabaseDisplayImportContext(
599*b1cdbd2cSJim Jagielski 		SvXMLImport& rImport,					/// XML Import
600*b1cdbd2cSJim Jagielski 		XMLTextImportHelper& rHlp,				/// text import helper
601*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrfx,						/// namespace prefix
602*b1cdbd2cSJim Jagielski 		const ::rtl::OUString& rLocalName);		/// element name w/o prefix
603*b1cdbd2cSJim Jagielski 
604*b1cdbd2cSJim Jagielski protected:
605*b1cdbd2cSJim Jagielski 
606*b1cdbd2cSJim Jagielski 	/// process attribute values
607*b1cdbd2cSJim Jagielski 	virtual void ProcessAttribute( sal_uInt16 nAttrToken,
608*b1cdbd2cSJim Jagielski 								   const ::rtl::OUString& sAttrValue );
609*b1cdbd2cSJim Jagielski 
610*b1cdbd2cSJim Jagielski 	/// create, prepare and insert database field master and database field
611*b1cdbd2cSJim Jagielski 	virtual void EndElement();
612*b1cdbd2cSJim Jagielski };
613*b1cdbd2cSJim Jagielski 
614*b1cdbd2cSJim Jagielski #endif
615