summaryrefslogtreecommitdiffstats
path: root/extensions/source/propctrlr/formmetadata.hxx
blob: c2c297740b01a228b12478ce9d758ca40136a325 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 */

#pragma once

#include "propertyinfo.hxx"
#include "enumrepresentation.hxx"


namespace pcr
{


    struct OPropertyInfoImpl;


    //= OPropertyInfoService

    class OPropertyInfoService final
                :public IPropertyInfoService
    {
        static std::size_t              s_nCount;
        static OPropertyInfoImpl*       s_pPropertyInfos;
        // TODO: a real structure which allows quick access by name as well as by id

    public:
        // IPropertyInfoService
        virtual sal_Int32                      getPropertyId(const OUString& _rName) const override;
        virtual OUString                       getPropertyTranslation(sal_Int32 _nId) const override;
        virtual OUString                       getPropertyHelpId(sal_Int32 _nId) const override;
        virtual sal_Int16                      getPropertyPos(sal_Int32 _nId) const override;
        virtual sal_uInt32                     getPropertyUIFlags(sal_Int32 _nId) const override;
        virtual std::vector< OUString >      getPropertyEnumRepresentations(sal_Int32 _nId) const override;

        bool                                   isComposeable( const OUString& _rPropertyName ) const;

    private:
        static const OPropertyInfoImpl* getPropertyInfo();

        static const OPropertyInfoImpl* getPropertyInfo(const OUString& _rName);
        static const OPropertyInfoImpl* getPropertyInfo(sal_Int32 _nId);
    };


    //= DefaultEnumRepresentation

    /** an implementation of the IPropertyEnumRepresentation

        To be used with properties which, in formmetadata.cxx, are declared as ENUM.
    */
    class DefaultEnumRepresentation : public IPropertyEnumRepresentation
    {
    private:
        const IPropertyInfoService& m_rMetaData;
        css::uno::Type              m_aType;
        const sal_Int32             m_nPropertyId;

    public:
        /** constructs an instance

            @param _rInfo
                An instance implementing IPropertyInfoService. Must live at least as
                long as the DefaultEnumRepresentation should live.
        */
        DefaultEnumRepresentation( const IPropertyInfoService& _rInfo, const css::uno::Type& _rType, sal_Int32 _nPropertyId );

    protected:
        virtual ~DefaultEnumRepresentation() override;

    protected:
        // IPropertyEnumRepresentation implementqation
        virtual std::vector< OUString >
                                    getDescriptions() const override;
        virtual void                getValueFromDescription( const OUString& _rDescription, css::uno::Any& _out_rValue ) const override;
        virtual OUString            getDescriptionForValue( const css::uno::Any& _rEnumValue ) const override;

    private:
        DefaultEnumRepresentation( const DefaultEnumRepresentation& ) = delete;
        DefaultEnumRepresentation& operator=( const DefaultEnumRepresentation& ) = delete;
    };


    //= UI flags (for all browsable properties)


#define PROP_FLAG_NONE              0x00000000  // no special flag
#define PROP_FLAG_FORM_VISIBLE      0x00000001  // the property is visible when inspecting a form object
#define PROP_FLAG_DIALOG_VISIBLE    0x00000002  // the property is visible when inspecting a dialog object
#define PROP_FLAG_DATA_PROPERTY     0x00000004  // the property is to appear on the "Data" page
#define PROP_FLAG_ENUM              0x00000020  // the property is some kind of enum property, i.e. its
                                                // value is chosen from a fixed list of possible values
#define PROP_FLAG_ENUM_ONE          0x00000060  // the property is an enum property starting with 1
                                                //  (note that this includes PROP_FLAG_ENUM)
#define PROP_FLAG_COMPOSEABLE       0x00000080  // the property is "composeable", i.e. an intersection of property
                                                //  sets should expose it, if all elements do
#define PROP_FLAG_EXPERIMENTAL      0x00000100  // the property is experimental, i.e. should not appear in the
                                                // UI, unless experimental properties are enabled by a configuration
                                                // option
#define PROP_FLAG_REPORT_INVISIBLE  0x00000200  // the property should not appear in the Report Designer UI


    //= property ids (for all browsable properties)


    #define PROPERTY_ID_NAME                  1
    #define PROPERTY_ID_LABEL                 2
    #define PROPERTY_ID_CONTROLLABEL          3
    #define PROPERTY_ID_MAXTEXTLEN            4
    #define PROPERTY_ID_EDITMASK              5
    #define PROPERTY_ID_LITERALMASK           6
    #define PROPERTY_ID_STRICTFORMAT          7
    #define PROPERTY_ID_ENABLED               8
    #define PROPERTY_ID_READONLY              9
    #define PROPERTY_ID_PRINTABLE            10
    #define PROPERTY_ID_CONTROLSOURCE        11
    #define PROPERTY_ID_TABSTOP              12
    #define PROPERTY_ID_TABINDEX             13
    #define PROPERTY_ID_DATASOURCE           14
    #define PROPERTY_ID_COMMAND              15
    #define PROPERTY_ID_COMMANDTYPE          16
    #define PROPERTY_ID_FILTER               17
    #define PROPERTY_ID_SORT                 18
    #define PROPERTY_ID_INSERTONLY           19
    #define PROPERTY_ID_ALLOWADDITIONS       20
    #define PROPERTY_ID_ALLOWEDITS           21
    #define PROPERTY_ID_ALLOWDELETIONS       22
    #define PROPERTY_ID_GROUP_NAME           23
    #define PROPERTY_ID_NAVIGATION           24
    #define PROPERTY_ID_CYCLE                25
    #define PROPERTY_ID_HIDDEN_VALUE         26
    #define PROPERTY_ID_VALUEMIN             27
    #define PROPERTY_ID_VALUEMAX             28
    #define PROPERTY_ID_VALUESTEP            29
    #define PROPERTY_ID_DEFAULT_VALUE        30
    #define PROPERTY_ID_DECIMAL_ACCURACY     31
    #define PROPERTY_ID_SHOWTHOUSANDSEP      32
    #define PROPERTY_ID_REFVALUE             33
    #define PROPERTY_ID_CURRENCYSYMBOL       34
    #define PROPERTY_ID_CURRSYM_POSITION     35
    #define PROPERTY_ID_DATEMIN              36
    #define PROPERTY_ID_DATEMAX              37
    #define PROPERTY_ID_DATEFORMAT           38
    #define PROPERTY_ID_SELECTEDITEMS        39
    #define PROPERTY_ID_DEFAULT_DATE         40
    #define PROPERTY_ID_TIMEMIN              41
    #define PROPERTY_ID_TIMEMAX              42
    #define PROPERTY_ID_TIMEFORMAT           43
    #define PROPERTY_ID_DEFAULT_TIME         44
    #define PROPERTY_ID_EFFECTIVE_MIN        45
    #define PROPERTY_ID_EFFECTIVE_MAX        46
    #define PROPERTY_ID_EFFECTIVE_DEFAULT    47
    #define PROPERTY_ID_FORMATKEY            48
    #define PROPERTY_ID_CLASSID              50
    #define PROPERTY_ID_HEIGHT               51
    #define PROPERTY_ID_WIDTH                52
    #define PROPERTY_ID_BOUNDCOLUMN          53
    #define PROPERTY_ID_LISTSOURCETYPE       54
    #define PROPERTY_ID_LISTSOURCE           55
    #define PROPERTY_ID_LISTINDEX            56
    #define PROPERTY_ID_STRINGITEMLIST       57
    #define PROPERTY_ID_DEFAULT_TEXT         58
    #define PROPERTY_ID_FONT                 59
    #define PROPERTY_ID_ALIGN                60
    #define PROPERTY_ID_ROWHEIGHT            61
    #define PROPERTY_ID_BACKGROUNDCOLOR      62
    #define PROPERTY_ID_FILLCOLOR            63
    #define PROPERTY_ID_ESCAPE_PROCESSING    64
    #define PROPERTY_ID_LINECOLOR            65
    #define PROPERTY_ID_BORDER               66
    #define PROPERTY_ID_DROPDOWN             67
    #define PROPERTY_ID_AUTOCOMPLETE         68
    #define PROPERTY_ID_LINECOUNT            69
    #define PROPERTY_ID_WORDBREAK            70
    #define PROPERTY_ID_MULTILINE            71
    #define PROPERTY_ID_MULTISELECTION       72
    #define PROPERTY_ID_AUTOLINEBREAK        73
    #define PROPERTY_ID_HSCROLL              74
    #define PROPERTY_ID_VSCROLL              75
    #define PROPERTY_ID_SPIN                 76
    #define PROPERTY_ID_BUTTONTYPE           77
    #define PROPERTY_ID_TARGET_URL           78
    #define PROPERTY_ID_TARGET_FRAME         79
    #define PROPERTY_ID_SUBMIT_ACTION        80
    #define PROPERTY_ID_SUBMIT_TARGET        81
    #define PROPERTY_ID_SUBMIT_METHOD        82
    #define PROPERTY_ID_SUBMIT_ENCODING      83
    #define PROPERTY_ID_DEFAULT_STATE        84
    #define PROPERTY_ID_DEFAULTBUTTON        85
    #define PROPERTY_ID_IMAGE_URL            86
    #define PROPERTY_ID_DEFAULT_SELECT_SEQ   87
    #define PROPERTY_ID_ECHO_CHAR            88
    #define PROPERTY_ID_EMPTY_IS_NULL        89
    #define PROPERTY_ID_TRISTATE             90
    #define PROPERTY_ID_MASTERFIELDS         91
    #define PROPERTY_ID_DETAILFIELDS         92
    #define PROPERTY_ID_RECORDMARKER         93
    #define PROPERTY_ID_FILTERPROPOSAL       94
    #define PROPERTY_ID_TAG                  95
    #define PROPERTY_ID_HELPTEXT             96
    #define PROPERTY_ID_HELPURL              97
    #define PROPERTY_ID_HASNAVIGATION        98
    #define PROPERTY_ID_POSITIONX            99
    #define PROPERTY_ID_POSITIONY            100
    #define PROPERTY_ID_TITLE                101
    #define PROPERTY_ID_STEP                 102
    #define PROPERTY_ID_PROGRESSVALUE        103
    #define PROPERTY_ID_PROGRESSVALUE_MIN    104
    #define PROPERTY_ID_PROGRESSVALUE_MAX    105
    #define PROPERTY_ID_SCROLLVALUE          106
    #define PROPERTY_ID_SCROLLVALUE_MAX      107
    #define PROPERTY_ID_LINEINCREMENT        108
    #define PROPERTY_ID_BLOCKINCREMENT       109
    #define PROPERTY_ID_VISIBLESIZE          110
    #define PROPERTY_ID_ORIENTATION          111
    #define PROPERTY_ID_IMAGEPOSITION        112
    #define PROPERTY_ID_DATE                 113
    #define PROPERTY_ID_STATE                114
    #define PROPERTY_ID_TIME                 115
    #define PROPERTY_ID_VALUE                116
    #define PROPERTY_ID_SCALEIMAGE           117
    #define PROPERTY_ID_PUSHBUTTONTYPE       118
    #define PROPERTY_ID_EFFECTIVE_VALUE      119
    #define PROPERTY_ID_TEXT                 120
    #define PROPERTY_ID_BOUND_CELL           121
    #define PROPERTY_ID_LIST_CELL_RANGE      122
    #define PROPERTY_ID_CELL_EXCHANGE_TYPE   123
    #define PROPERTY_ID_SCROLLVALUE_MIN      124
    #define PROPERTY_ID_DEFAULT_SCROLLVALUE  125
    #define PROPERTY_ID_REPEAT_DELAY         126
    #define PROPERTY_ID_SYMBOLCOLOR          127
    #define PROPERTY_ID_SPINVALUE            128
    #define PROPERTY_ID_SPINVALUE_MIN        129
    #define PROPERTY_ID_SPINVALUE_MAX        130
    #define PROPERTY_ID_DEFAULT_SPINVALUE    131
    #define PROPERTY_ID_SPININCREMENT        132
    #define PROPERTY_ID_REPEAT               133
    #define PROPERTY_ID_SHOW_SCROLLBARS      134
    #define PROPERTY_ID_ICONSIZE             135
    #define PROPERTY_ID_SHOW_POSITION        136
    #define PROPERTY_ID_SHOW_NAVIGATION      137
    #define PROPERTY_ID_SHOW_RECORDACTIONS   138
    #define PROPERTY_ID_SHOW_FILTERSORT      139
    #define PROPERTY_ID_TEXTTYPE             140
    #define PROPERTY_ID_LINEEND_FORMAT       141
    #define PROPERTY_ID_TOGGLE               142
    #define PROPERTY_ID_FOCUSONCLICK         143
    #define PROPERTY_ID_HIDEINACTIVESELECTION 144
    #define PROPERTY_ID_VISUALEFFECT         145
    #define PROPERTY_ID_BORDERCOLOR          146
    #define PROPERTY_ID_XML_DATA_MODEL       147
    #define PROPERTY_ID_BIND_EXPRESSION      148
    #define PROPERTY_ID_XSD_REQUIRED         149
    #define PROPERTY_ID_XSD_RELEVANT         150
    #define PROPERTY_ID_XSD_READONLY         151
    #define PROPERTY_ID_XSD_CONSTRAINT       152
    #define PROPERTY_ID_XSD_CALCULATION      153
    #define PROPERTY_ID_XSD_DATA_TYPE        154
    #define PROPERTY_ID_XSD_WHITESPACES      155
    #define PROPERTY_ID_XSD_PATTERN          156
    #define PROPERTY_ID_XSD_LENGTH           157
    #define PROPERTY_ID_XSD_MIN_LENGTH       158
    #define PROPERTY_ID_XSD_MAX_LENGTH       159
    #define PROPERTY_ID_XSD_TOTAL_DIGITS     160
    #define PROPERTY_ID_XSD_FRACTION_DIGITS  161
    #define PROPERTY_ID_XSD_MAX_INCLUSIVE_INT        162
    #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_INT        163
    #define PROPERTY_ID_XSD_MIN_INCLUSIVE_INT        164
    #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_INT        165
    #define PROPERTY_ID_XSD_MAX_INCLUSIVE_DOUBLE     166
    #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_DOUBLE     167
    #define PROPERTY_ID_XSD_MIN_INCLUSIVE_DOUBLE     168
    #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_DOUBLE     169
    #define PROPERTY_ID_XSD_MAX_INCLUSIVE_DATE       170
    #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_DATE       171
    #define PROPERTY_ID_XSD_MIN_INCLUSIVE_DATE       172
    #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_DATE       173
    #define PROPERTY_ID_XSD_MAX_INCLUSIVE_TIME       174
    #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_TIME       175
    #define PROPERTY_ID_XSD_MIN_INCLUSIVE_TIME       176
    #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_TIME       177
    #define PROPERTY_ID_XSD_MAX_INCLUSIVE_DATE_TIME  178
    #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_DATE_TIME  179
    #define PROPERTY_ID_XSD_MIN_INCLUSIVE_DATE_TIME  180
    #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_DATE_TIME  181
    #define PROPERTY_ID_UNCHECKEDREFVALUE           182
    #define PROPERTY_ID_SUBMISSION_ID               183
    #define PROPERTY_ID_XFORMS_BUTTONTYPE           184
    #define PROPERTY_ID_LIST_BINDING                185
    #define PROPERTY_ID_VERTICAL_ALIGN              186
    #define PROPERTY_ID_BINDING_NAME                187
    #define PROPERTY_ID_DECORATION                  188
    #define PROPERTY_ID_SELECTION_TYPE              189
    #define PROPERTY_ID_ROOT_DISPLAYED              190
    #define PROPERTY_ID_SHOWS_HANDLES               191
    #define PROPERTY_ID_SHOWS_ROOT_HANDLES          192
    #define PROPERTY_ID_EDITABLE                    193
    #define PROPERTY_ID_INVOKES_STOP_NOT_EDITING    194
    #define PROPERTY_ID_NOLABEL                     195
    #define PROPERTY_ID_SCALE_MODE                  196
    #define PROPERTY_ID_INPUT_REQUIRED              197
    #define PROPERTY_ID_WRITING_MODE                198
    #define PROPERTY_ID_ENABLE_VISIBLE              199
    #define PROPERTY_ID_WHEEL_BEHAVIOR              200
    #define PROPERTY_ID_TEXT_ANCHOR_TYPE            201
    #define PROPERTY_ID_SHEET_ANCHOR_TYPE           202
    #define PROPERTY_ID_SCROLL_WIDTH                203
    #define PROPERTY_ID_SCROLL_HEIGHT               204
    #define PROPERTY_ID_SCROLL_TOP                  205
    #define PROPERTY_ID_SCROLL_LEFT                 206
    #define PROPERTY_ID_TYPEDITEMLIST               207
    #define PROPERTY_ID_SELECTIONMODEL              208
    #define PROPERTY_ID_USEGRIDLINE                 209
    #define PROPERTY_ID_GRIDLINECOLOR               210
    #define PROPERTY_ID_SHOWCOLUMNHEADER            211
    #define PROPERTY_ID_SHOWROWHEADER               212
    #define PROPERTY_ID_HEADERBACKGROUNDCOLOR       213
    #define PROPERTY_ID_HEADERTEXTCOLOR             214
    #define PROPERTY_ID_ACTIVESELECTIONBACKGROUNDCOLOR 215
    #define PROPERTY_ID_ACTIVESELECTIONTEXTCOLOR    216
    #define PROPERTY_ID_INACTIVESELECTIONBACKGROUNDCOLOR 217
    #define PROPERTY_ID_INACTIVESELECTIONTEXTCOLOR  218
    #define PROPERTY_ID_URL                         219
    #define PROPERTY_ID_AUTOGROW                    220


} // namespace pcr


/* vim:set shiftwidth=4 softtabstop=4 expandtab: */