xref: /AOO41X/main/xmloff/source/forms/formenums.cxx (revision 47148b3bc50811ceb41802e4cc50a5db21535900)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_xmloff.hxx"
26 #include "formenums.hxx"
27 #include <osl/diagnose.h>
28 #include <com/sun/star/form/FormSubmitEncoding.hpp>
29 #include <com/sun/star/form/FormSubmitMethod.hpp>
30 #include <com/sun/star/sdb/CommandType.hpp>
31 #include <com/sun/star/form/NavigationBarMode.hpp>
32 #include <com/sun/star/form/TabulatorCycle.hpp>
33 #include <com/sun/star/form/FormButtonType.hpp>
34 #include <com/sun/star/form/ListSourceType.hpp>
35 #include <com/sun/star/awt/TextAlign.hpp>
36 #include <com/sun/star/awt/FontWidth.hpp>
37 #include <com/sun/star/awt/FontEmphasisMark.hpp>
38 #include <com/sun/star/awt/FontRelief.hpp>
39 #include <com/sun/star/awt/ScrollBarOrientation.hpp>
40 #include <com/sun/star/awt/VisualEffect.hpp>
41 #include <com/sun/star/awt/ImageScaleMode.hpp>
42 #include <tools/wintypes.hxx>       // for check states
43 #include <xmloff/xmltoken.hxx>
44 
45 //.........................................................................
46 namespace xmloff
47 {
48 //.........................................................................
49 
50     using namespace ::com::sun::star::form;
51     using namespace ::com::sun::star::sdb;
52     using namespace ::com::sun::star::awt;
53     using namespace ::xmloff::token;
54 
55     const SvXMLEnumMapEntry*    OEnumMapper::s_pEnumMap[OEnumMapper::KNOWN_ENUM_PROPERTIES] =
56     {
57         NULL,
58         NULL,
59         NULL,
60         NULL,
61         NULL,
62         NULL,
63         NULL,
64         NULL,
65         NULL,
66         NULL,
67         NULL,
68         NULL,
69         NULL,
70         NULL,
71         NULL
72     };
73 
74     //---------------------------------------------------------------------
getEnumMap(EnumProperties _eProperty)75     const SvXMLEnumMapEntry*    OEnumMapper::getEnumMap(EnumProperties _eProperty)
76     {
77         OSL_ENSURE(_eProperty < KNOWN_ENUM_PROPERTIES, "OEnumMapper::getEnumMap: invalid index (this will crash)!");
78 
79         const SvXMLEnumMapEntry*& rReturn = s_pEnumMap[_eProperty];
80         if (!rReturn)
81         {
82             // the map for this property is not initialized yet
83             switch (_eProperty)
84             {
85                 // FormSubmitEncoding
86                 case epSubmitEncoding:
87                 {
88                     static SvXMLEnumMapEntry aSubmitEncodingMap[] =
89                     {
90                         { XML_APPLICATION_X_WWW_FORM_URLENCODED, FormSubmitEncoding_URL },
91                         { XML_MULTIPART_FORMDATA, FormSubmitEncoding_MULTIPART },
92                         { XML_APPLICATION_TEXT, FormSubmitEncoding_TEXT },
93                         { XML_TOKEN_INVALID, 0 }
94                     };
95                     rReturn = aSubmitEncodingMap;
96                 }
97                 break;
98                 // FormSubmitMethod
99                 case epSubmitMethod:
100                 {
101                     static SvXMLEnumMapEntry aSubmitMethodMap[] =
102                     {
103                         { XML_GET, FormSubmitMethod_GET },
104                         { XML_POST, FormSubmitMethod_POST },
105                         { XML_TOKEN_INVALID, 0 }
106                     };
107                     rReturn = aSubmitMethodMap;
108                 }
109                 break;
110                 // CommandType
111                 case epCommandType:
112                 {
113                     static SvXMLEnumMapEntry aCommandTypeMap[] =
114                     {
115                         { XML_TABLE, CommandType::TABLE },
116                         { XML_QUERY, CommandType::QUERY },
117                         { XML_COMMAND, CommandType::COMMAND },
118                         { XML_TOKEN_INVALID, 0 }
119                     };
120                     rReturn = aCommandTypeMap;
121                 }
122                 break;
123                 // NavigationBarMode
124                 case epNavigationType:
125                 {
126                     static SvXMLEnumMapEntry aNavigationTypeMap[] =
127                     {
128                         { XML_NONE, NavigationBarMode_NONE },
129                         { XML_CURRENT, NavigationBarMode_CURRENT },
130                         { XML_PARENT, NavigationBarMode_PARENT },
131                         { XML_TOKEN_INVALID, 0 }
132                     };
133                     rReturn = aNavigationTypeMap;
134                 };
135                 break;
136                 // TabulatorCycle
137                 case epTabCyle:
138                 {
139                     static SvXMLEnumMapEntry aTabulytorCycleMap[] =
140                     {
141                         { XML_RECORDS, TabulatorCycle_RECORDS },
142                         { XML_CURRENT, TabulatorCycle_CURRENT },
143                         { XML_PAGE, TabulatorCycle_PAGE },
144                         { XML_TOKEN_INVALID, 0 }
145                     };
146                     rReturn = aTabulytorCycleMap;
147                 };
148                 break;
149                 // FormButtonType
150                 case epButtonType:
151                 {
152                     static SvXMLEnumMapEntry aFormButtonTypeMap[] =
153                     {
154                         { XML_PUSH, FormButtonType_PUSH },
155                         { XML_SUBMIT, FormButtonType_SUBMIT },
156                         { XML_RESET, FormButtonType_RESET },
157                         { XML_URL, FormButtonType_URL },
158                         { XML_TOKEN_INVALID, 0 }
159                     };
160                     rReturn = aFormButtonTypeMap;
161                 };
162                 break;
163                 // ListSourceType
164                 case epListSourceType:
165                 {
166                     static SvXMLEnumMapEntry aListSourceTypeMap[] =
167                     {
168                         { XML_VALUE_LIST, ListSourceType_VALUELIST },
169                         { XML_TABLE, ListSourceType_TABLE },
170                         { XML_QUERY, ListSourceType_QUERY },
171                         { XML_SQL, ListSourceType_SQL },
172                         { XML_SQL_PASS_THROUGH, ListSourceType_SQLPASSTHROUGH },
173                         { XML_TABLE_FIELDS, ListSourceType_TABLEFIELDS },
174                         { XML_TOKEN_INVALID, 0 }
175                     };
176                     rReturn = aListSourceTypeMap;
177                 };
178                 break;
179                 // check state of a checkbox
180                 case epCheckState:
181                 {
182                     static SvXMLEnumMapEntry aCheckStateMap[] =
183                     {
184                         { XML_UNCHECKED, STATE_NOCHECK },
185                         { XML_CHECKED, STATE_CHECK },
186                         { XML_UNKNOWN, STATE_DONTKNOW },
187                         { XML_TOKEN_INVALID, 0 }
188                     };
189                     rReturn = aCheckStateMap;
190                 };
191                 break;
192                 case epTextAlign:
193                 {
194                     static SvXMLEnumMapEntry aTextAlignMap[] =
195                     {
196                         { XML_START,        TextAlign::LEFT },
197                         { XML_CENTER,       TextAlign::CENTER },
198                         { XML_END,          TextAlign::RIGHT },
199                         { XML_JUSTIFY,      (sal_uInt16)-1 },
200                         { XML_JUSTIFIED,    (sal_uInt16)-1 },
201                         { XML_TOKEN_INVALID, 0 }
202                     };
203                     rReturn = aTextAlignMap;
204                 };
205                 break;
206                 case epBorderWidth:
207                 {
208                     static SvXMLEnumMapEntry aBorderTypeMap[] =
209                     {
210                         { XML_NONE,     0 },
211                         { XML_HIDDEN,   0 },
212                         { XML_SOLID,    2 },
213                         { XML_DOUBLE,   2 },
214                         { XML_DOTTED,   2 },
215                         { XML_DASHED,   2 },
216                         { XML_GROOVE,   1 },
217                         { XML_RIDGE,    1 },
218                         { XML_INSET,    1 },
219                         { XML_OUTSET,   1 },
220                         { XML_TOKEN_INVALID, 0 }
221                     };
222                     rReturn = aBorderTypeMap;
223                 };
224                 break;
225 
226                 case epFontEmphasis:
227                 {
228                     static SvXMLEnumMapEntry aFontEmphasisMap[] =
229                     {
230                         { XML_NONE,     FontEmphasisMark::NONE },
231                         { XML_DOT,      FontEmphasisMark::DOT },
232                         { XML_CIRCLE,   FontEmphasisMark::CIRCLE },
233                         { XML_DISC,     FontEmphasisMark::DISC },
234                         { XML_ACCENT,   FontEmphasisMark::ACCENT },
235                         { XML_TOKEN_INVALID, 0 }
236                     };
237                     rReturn = aFontEmphasisMap;
238                 }
239                 break;
240 
241                 case epFontRelief:
242                 {
243                     static SvXMLEnumMapEntry aFontReliefMap[] =
244                     {
245                         { XML_NONE,     FontRelief::NONE },
246                         { XML_ENGRAVED, FontRelief::ENGRAVED },
247                         { XML_EMBOSSED, FontRelief::EMBOSSED },
248                         { XML_TOKEN_INVALID, 0 }
249                     };
250                     rReturn = aFontReliefMap;
251                 }
252                 break;
253 
254                 case epListLinkageType:
255                 {
256                     static SvXMLEnumMapEntry aListLinkageMap[] =
257                     {
258                         { XML_SELECTION,            0 },
259                         { XML_SELECTION_INDEXES,    1 },
260                         { XML_TOKEN_INVALID, 0 }
261                     };
262                     rReturn = aListLinkageMap;
263                 }
264                 break;
265 
266                 case epOrientation:
267                 {
268                     static SvXMLEnumMapEntry aOrientationMap[] =
269                     {
270                         { XML_HORIZONTAL,   ScrollBarOrientation::HORIZONTAL },
271                         { XML_VERTICAL,     ScrollBarOrientation::VERTICAL },
272                         { XML_TOKEN_INVALID, 0 }
273                     };
274                     rReturn = aOrientationMap;
275                 }
276                 break;
277 
278                 case epVisualEffect:
279                 {
280                     static SvXMLEnumMapEntry aVisualEffectMap[] =
281                     {
282                         { XML_NONE, VisualEffect::NONE },
283                         { XML_3D,   VisualEffect::LOOK3D },
284                         { XML_FLAT, VisualEffect::FLAT },
285                         { XML_TOKEN_INVALID, 0 }
286                     };
287                     rReturn = aVisualEffectMap;
288                 }
289                 break;
290 
291                 case epImagePosition:
292                 {
293                     static SvXMLEnumMapEntry aImagePositionMap[] =
294                     {
295                         { XML_START,  0 },
296                         { XML_END,    1 },
297                         { XML_TOP,    2 },
298                         { XML_BOTTOM, 3 },
299                         { XML_CENTER, (sal_uInt16)-1 },
300                         { XML_TOKEN_INVALID, 0 }
301                     };
302                     rReturn = aImagePositionMap;
303                 }
304                 break;
305 
306                 case epImageAlign:
307                 {
308                     static SvXMLEnumMapEntry aImageAlignMap[] =
309                     {
310                         { XML_START,  0 },
311                         { XML_CENTER, 1 },
312                         { XML_END, 2 },
313                         { XML_TOKEN_INVALID, 0 }
314                     };
315                     rReturn = aImageAlignMap;
316                 }
317                 break;
318 
319                 case epImageScaleMode:
320                 {
321                     static const SvXMLEnumMapEntry aScaleModeMap[] =
322                     {
323                         { XML_BACKGROUND_NO_REPEAT, ImageScaleMode::NONE },
324                         { XML_REPEAT,               ImageScaleMode::NONE },  // repeating the image is not supported
325                         { XML_STRETCH,              ImageScaleMode::ANISOTROPIC },
326                         { XML_SCALE,                ImageScaleMode::ISOTROPIC },
327                         { XML_TOKEN_INVALID,        ImageScaleMode::NONE }
328                     };
329                     rReturn = aScaleModeMap;
330                 }
331                 break;
332 
333                 case KNOWN_ENUM_PROPERTIES:
334                     break;
335             }
336         }
337 
338         return rReturn;
339     }
340 
341 //.........................................................................
342 }   // namespace xmloff
343 //.........................................................................
344 
345