LibreOffice Module extensions (master) 1
formmetadata.cxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#include "formmetadata.hxx"
21#include "formstrings.hxx"
22#include "modulepcr.hxx"
23#include <command.hrc>
24#include <helpids.h>
25#include <strings.hrc>
26#include <stringarrays.hrc>
28#include <o3tl/safeint.hxx>
29#include <osl/diagnose.h>
30#include <algorithm>
31#include <utility>
32
33namespace pcr
34{
35 using namespace ::com::sun::star::uno;
36
37
38 //= OPropertyInfoImpl
39
41 {
42 OUString sName;
43 OUString sTranslation;
44 OUString sHelpId;
45 sal_Int32 nId;
46 sal_uInt16 nPos;
47 sal_uInt32 nUIFlags;
48
50 OUString aName,
51 sal_Int32 _nId,
52 OUString aTranslation,
53 sal_uInt16 nPosId,
54 OUString ,
55 sal_uInt32 _nUIFlags);
56 };
57
58
59 OPropertyInfoImpl::OPropertyInfoImpl(OUString _aName, sal_Int32 _nId,
60 OUString aString, sal_uInt16 nP, OUString sHid, sal_uInt32 _nUIFlags)
61 :sName(std::move(_aName))
62 ,sTranslation(std::move(aString))
63 ,sHelpId(std::move(sHid))
64 ,nId(_nId)
65 ,nPos(nP)
66 ,nUIFlags(_nUIFlags)
67 {
68 }
69
70 namespace {
71
72 // Compare PropertyInfo
73 struct PropertyInfoLessByName
74 {
75 bool operator()( const OPropertyInfoImpl& _rLHS, const OPropertyInfoImpl& _rRHS )
76 {
77 return _rLHS.sName.compareTo( _rRHS.sName ) < 0;
78 }
79 };
80
81 }
82
83 //= OPropertyInfoService
84
85#define DEF_INFO( ident, uinameres, pos, helpid, flags ) \
86 OPropertyInfoImpl( PROPERTY_##ident, PROPERTY_ID_##ident, \
87 PcrRes( RID_STR_##uinameres ), pos, HID_PROP_##helpid, flags )
88
89#define DEF_INFO_1( ident, uinameres, pos, helpid, flag1 ) \
90 DEF_INFO( ident, uinameres, pos, helpid, PROP_FLAG_##flag1 )
91
92#define DEF_INFO_2( ident, uinameres, pos, helpid, flag1, flag2 ) \
93 DEF_INFO( ident, uinameres, pos, helpid, PROP_FLAG_##flag1 | PROP_FLAG_##flag2 )
94
95#define DEF_INFO_3( ident, uinameres, pos, helpid, flag1, flag2, flag3 ) \
96 DEF_INFO( ident, uinameres, pos, helpid, PROP_FLAG_##flag1 | PROP_FLAG_##flag2 | PROP_FLAG_##flag3 )
97
98#define DEF_INFO_4( ident, uinameres, pos, helpid, flag1, flag2, flag3, flag4 ) \
99 DEF_INFO( ident, uinameres, pos, helpid, PROP_FLAG_##flag1 | PROP_FLAG_##flag2 | PROP_FLAG_##flag3 | PROP_FLAG_##flag4 )
100
101 std::size_t OPropertyInfoService::s_nCount = 0;
102 OPropertyInfoImpl* OPropertyInfoService::s_pPropertyInfos = nullptr;
103
105 {
106 if ( s_pPropertyInfos )
107 return s_pPropertyInfos;
108
109 static OPropertyInfoImpl aPropertyInfos[] =
110 {
111 /*
112 DEF_INFO_?( propname and id, resource id, pos, help id, flags ),
113 */
114 DEF_INFO_3( NAME, NAME, 0, NAME, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
115 DEF_INFO_2( TITLE, TITLE, 1, TITLE, FORM_VISIBLE, DIALOG_VISIBLE ),
116 DEF_INFO_3( LABEL, LABEL, 2, LABEL, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
117 DEF_INFO_2( CONTROLLABEL, LABELCONTROL, 3, CONTROLLABEL, FORM_VISIBLE, COMPOSEABLE ),
118 DEF_INFO_3( WRITING_MODE, WRITING_MODE, 4, WRITING_MODE, FORM_VISIBLE, ENUM, COMPOSEABLE ),
119 DEF_INFO_3( GROUP_NAME, GROUP_NAME, 5, GROUP_NAME, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
120 DEF_INFO_2( TEXT, TEXT, 6, TEXT, DIALOG_VISIBLE, COMPOSEABLE ),
121 DEF_INFO_3( MAXTEXTLEN, MAXTEXTLEN, 7, MAXTEXTLEN, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
122 DEF_INFO_3( EDITMASK, EDITMASK, 8, EDITMASK, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
123 DEF_INFO_3( LITERALMASK, LITERALMASK, 9, LITERALMASK, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
124 DEF_INFO_3( STRICTFORMAT, STRICTFORMAT, 10, STRICTFORMAT, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
125 DEF_INFO_3( ENABLED, ENABLED, 11, ENABLED, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
126 DEF_INFO_3( ENABLE_VISIBLE, ENABLE_VISIBLE, 12, ENABLE_VISIBLE, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
127 DEF_INFO_3( READONLY, READONLY, 13, READONLY, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
128 DEF_INFO_3( PRINTABLE, PRINTABLE, 14, PRINTABLE, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
129 DEF_INFO_3( STEP, STEP, 15, STEP, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
130 DEF_INFO_3( WHEEL_BEHAVIOR, WHEEL_BEHAVIOR, 16, WHEEL_BEHAVIOR, FORM_VISIBLE | PROP_FLAG_REPORT_INVISIBLE, ENUM, COMPOSEABLE ),
131 DEF_INFO_3( TABSTOP, TABSTOP, 17, TABSTOP, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
132 DEF_INFO_2( TABINDEX, TABINDEX, 18, TABINDEX, FORM_VISIBLE, DIALOG_VISIBLE ),
133
134 DEF_INFO_2( BOUND_CELL, BOUND_CELL, 19, BOUND_CELL, FORM_VISIBLE, DATA_PROPERTY ),
135 DEF_INFO_3( CELL_EXCHANGE_TYPE,CELL_EXCHANGE_TYPE, 20, CELL_EXCHANGE_TYPE,FORM_VISIBLE, DATA_PROPERTY, ENUM ),
136 DEF_INFO_2( LIST_CELL_RANGE, LIST_CELL_RANGE, 21, LIST_CELL_RANGE, FORM_VISIBLE, DATA_PROPERTY ),
137 DEF_INFO_3( CONTROLSOURCE, CONTROLSOURCE, 22, CONTROLSOURCE, FORM_VISIBLE, DATA_PROPERTY, COMPOSEABLE ),
138 DEF_INFO_3( EMPTY_IS_NULL, EMPTY_IS_NULL, 23, EMPTY_IS_NULL, FORM_VISIBLE, DATA_PROPERTY, COMPOSEABLE ),
139 DEF_INFO_3( INPUT_REQUIRED, INPUT_REQUIRED, 24, INPUT_REQUIRED, FORM_VISIBLE, DATA_PROPERTY, COMPOSEABLE ),
140 DEF_INFO_3( REFVALUE, REFVALUE, 25, REFVALUE, FORM_VISIBLE, DATA_PROPERTY, COMPOSEABLE ),
141 DEF_INFO_3( UNCHECKEDREFVALUE, UNCHECKEDREFVALUE, 26, UNCHECKEDREFVALUE, FORM_VISIBLE, DATA_PROPERTY, COMPOSEABLE ),
142 DEF_INFO_3( DATASOURCE, DATASOURCE, 27, DATASOURCE, FORM_VISIBLE, DATA_PROPERTY, COMPOSEABLE ),
143 DEF_INFO_4( COMMANDTYPE, CURSORSOURCETYPE, 28, CURSORSOURCETYPE, FORM_VISIBLE, DATA_PROPERTY, ENUM, COMPOSEABLE ),
144 DEF_INFO_3( COMMAND, CURSORSOURCE, 29, CURSORSOURCE, FORM_VISIBLE, DATA_PROPERTY, COMPOSEABLE ),
145 DEF_INFO_3( ESCAPE_PROCESSING, ESCAPE_PROCESSING, 30, ESCAPE_PROCESSING, FORM_VISIBLE, DATA_PROPERTY, COMPOSEABLE ),
146 DEF_INFO_3( FILTER, FILTER, 31, FILTER, FORM_VISIBLE, DATA_PROPERTY, COMPOSEABLE ),
147 DEF_INFO_3( SORT, SORT_CRITERIA, 32, SORT_CRITERIA, FORM_VISIBLE, DATA_PROPERTY, COMPOSEABLE ),
148 DEF_INFO_2( MASTERFIELDS, MASTERFIELDS, 33, MASTERFIELDS, FORM_VISIBLE, DATA_PROPERTY ),
149 DEF_INFO_2( DETAILFIELDS, SLAVEFIELDS, 34, SLAVEFIELDS, FORM_VISIBLE, DATA_PROPERTY ),
150 DEF_INFO_3( ALLOWADDITIONS, ALLOW_ADDITIONS, 35, ALLOW_ADDITIONS, FORM_VISIBLE, DATA_PROPERTY, COMPOSEABLE ),
151 DEF_INFO_3( ALLOWEDITS, ALLOW_EDITS, 36, ALLOW_EDITS, FORM_VISIBLE, DATA_PROPERTY, COMPOSEABLE ),
152 DEF_INFO_3( ALLOWDELETIONS, ALLOW_DELETIONS, 37, ALLOW_DELETIONS, FORM_VISIBLE, DATA_PROPERTY, COMPOSEABLE ),
153 DEF_INFO_3( INSERTONLY, DATAENTRY, 38, DATAENTRY, FORM_VISIBLE, DATA_PROPERTY, COMPOSEABLE ),
154 DEF_INFO_4( NAVIGATION, NAVIGATION, 39, NAVIGATION, FORM_VISIBLE, DATA_PROPERTY, ENUM, COMPOSEABLE ),
155 DEF_INFO_4( CYCLE, CYCLE, 40, CYCLE, FORM_VISIBLE, DATA_PROPERTY, ENUM, COMPOSEABLE ),
156 DEF_INFO_3( FILTERPROPOSAL, FILTERPROPOSAL, 41, FILTERPROPOSAL, FORM_VISIBLE, DATA_PROPERTY, COMPOSEABLE ),
157 DEF_INFO_4( LISTSOURCETYPE, LISTSOURCETYPE, 42, LISTSOURCETYPE, FORM_VISIBLE, DATA_PROPERTY, ENUM, COMPOSEABLE ),
158 DEF_INFO_3( LISTSOURCE, LISTSOURCE, 43, LISTSOURCE, FORM_VISIBLE, DATA_PROPERTY, COMPOSEABLE ),
159 DEF_INFO_3( BOUNDCOLUMN, BOUNDCOLUMN, 44, BOUNDCOLUMN, FORM_VISIBLE, DATA_PROPERTY, COMPOSEABLE ),
160
161 // <!----------------->
162 // XML node binding
163 DEF_INFO_2( LIST_BINDING, LIST_BINDING, 45, LIST_BINDING, FORM_VISIBLE, DATA_PROPERTY ),
164 DEF_INFO_2( XML_DATA_MODEL, XML_DATA_MODEL, 46, XML_DATA_MODEL, FORM_VISIBLE, DATA_PROPERTY ),
165 DEF_INFO_2( BINDING_NAME, BINDING_NAME, 47, BINDING_NAME, FORM_VISIBLE, DATA_PROPERTY ),
166 DEF_INFO_2( BIND_EXPRESSION, BIND_EXPRESSION, 48, BIND_EXPRESSION, FORM_VISIBLE, DATA_PROPERTY ),
167 DEF_INFO_2( XSD_REQUIRED, XSD_REQUIRED, 49, XSD_REQUIRED, FORM_VISIBLE, DATA_PROPERTY ),
168 DEF_INFO_2( XSD_RELEVANT, XSD_RELEVANT, 50, XSD_RELEVANT, FORM_VISIBLE, DATA_PROPERTY ),
169 DEF_INFO_2( XSD_READONLY, XSD_READONLY, 51, XSD_READONLY, FORM_VISIBLE, DATA_PROPERTY ),
170 DEF_INFO_2( XSD_CONSTRAINT, XSD_CONSTRAINT, 52, XSD_CONSTRAINT, FORM_VISIBLE, DATA_PROPERTY ),
171 DEF_INFO_2( XSD_CALCULATION, XSD_CALCULATION, 53, XSD_CALCULATION, FORM_VISIBLE, DATA_PROPERTY ),
172
173 // data type
174 DEF_INFO_2( XSD_DATA_TYPE, XSD_DATA_TYPE, 54, XSD_DATA_TYPE, FORM_VISIBLE, DATA_PROPERTY ),
175 // data types facets
176 // common
177 DEF_INFO_3( XSD_WHITESPACES, XSD_WHITESPACES, 55, XSD_WHITESPACES, FORM_VISIBLE, DATA_PROPERTY, ENUM ),
178 DEF_INFO_2( XSD_PATTERN, XSD_PATTERN, 56, XSD_PATTERN, FORM_VISIBLE, DATA_PROPERTY ),
179 // string
180 DEF_INFO_2( XSD_LENGTH, XSD_LENGTH, 57, XSD_LENGTH, FORM_VISIBLE, DATA_PROPERTY ),
181 DEF_INFO_2( XSD_MIN_LENGTH, XSD_MIN_LENGTH, 58, XSD_MIN_LENGTH, FORM_VISIBLE, DATA_PROPERTY ),
182 DEF_INFO_2( XSD_MAX_LENGTH, XSD_MAX_LENGTH, 59, XSD_MAX_LENGTH, FORM_VISIBLE, DATA_PROPERTY ),
183 // decimal
184 DEF_INFO_2( XSD_TOTAL_DIGITS, XSD_TOTAL_DIGITS, 60, XSD_TOTAL_DIGITS, FORM_VISIBLE, DATA_PROPERTY ),
185 DEF_INFO_2( XSD_FRACTION_DIGITS,XSD_FRACTION_DIGITS,61,XSD_FRACTION_DIGITS,FORM_VISIBLE, DATA_PROPERTY ),
186 // int value types (year, month, day)
187 DEF_INFO_2( XSD_MAX_INCLUSIVE_INT, XSD_MAX_INCLUSIVE, 62, XSD_MAX_INCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
188 DEF_INFO_2( XSD_MAX_EXCLUSIVE_INT, XSD_MAX_EXCLUSIVE, 63, XSD_MAX_EXCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
189 DEF_INFO_2( XSD_MIN_INCLUSIVE_INT, XSD_MIN_INCLUSIVE, 64, XSD_MIN_INCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
190 DEF_INFO_2( XSD_MIN_EXCLUSIVE_INT, XSD_MIN_EXCLUSIVE, 65, XSD_MIN_EXCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
191 // double value types (double, float, decimal)
192 DEF_INFO_2( XSD_MAX_INCLUSIVE_DOUBLE, XSD_MAX_INCLUSIVE, 66, XSD_MAX_INCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
193 DEF_INFO_2( XSD_MAX_EXCLUSIVE_DOUBLE, XSD_MAX_EXCLUSIVE, 67, XSD_MAX_EXCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
194 DEF_INFO_2( XSD_MIN_INCLUSIVE_DOUBLE, XSD_MIN_INCLUSIVE, 68, XSD_MIN_INCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
195 DEF_INFO_2( XSD_MIN_EXCLUSIVE_DOUBLE, XSD_MIN_EXCLUSIVE, 69, XSD_MIN_EXCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
196 // date value type
197 DEF_INFO_2( XSD_MAX_INCLUSIVE_DATE, XSD_MAX_INCLUSIVE, 70, XSD_MAX_INCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
198 DEF_INFO_2( XSD_MAX_EXCLUSIVE_DATE, XSD_MAX_EXCLUSIVE, 71, XSD_MAX_EXCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
199 DEF_INFO_2( XSD_MIN_INCLUSIVE_DATE, XSD_MIN_INCLUSIVE, 72, XSD_MIN_INCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
200 DEF_INFO_2( XSD_MIN_EXCLUSIVE_DATE, XSD_MIN_EXCLUSIVE, 73, XSD_MIN_EXCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
201 // time value type
202 DEF_INFO_2( XSD_MAX_INCLUSIVE_TIME, XSD_MAX_INCLUSIVE, 74, XSD_MAX_INCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
203 DEF_INFO_2( XSD_MAX_EXCLUSIVE_TIME, XSD_MAX_EXCLUSIVE, 75, XSD_MAX_EXCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
204 DEF_INFO_2( XSD_MIN_INCLUSIVE_TIME, XSD_MIN_INCLUSIVE, 76, XSD_MIN_INCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
205 DEF_INFO_2( XSD_MIN_EXCLUSIVE_TIME, XSD_MIN_EXCLUSIVE, 77, XSD_MIN_EXCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
206 // dateTime value type
207 DEF_INFO_2( XSD_MAX_INCLUSIVE_DATE_TIME, XSD_MAX_INCLUSIVE, 78, XSD_MAX_INCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
208 DEF_INFO_2( XSD_MAX_EXCLUSIVE_DATE_TIME, XSD_MAX_EXCLUSIVE, 79, XSD_MAX_EXCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
209 DEF_INFO_2( XSD_MIN_INCLUSIVE_DATE_TIME, XSD_MIN_INCLUSIVE, 80, XSD_MIN_INCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
210 DEF_INFO_2( XSD_MIN_EXCLUSIVE_DATE_TIME, XSD_MIN_EXCLUSIVE, 81, XSD_MIN_EXCLUSIVE, FORM_VISIBLE, DATA_PROPERTY ),
211 // <!----------------->
212
213 DEF_INFO_2( HIDDEN_VALUE, VALUE, 82, HIDDEN_VALUE, FORM_VISIBLE, COMPOSEABLE ),
214 DEF_INFO_2( VALUE, VALUE, 83, VALUE, DIALOG_VISIBLE, COMPOSEABLE ),
215 DEF_INFO_3( VALUEMIN, VALUEMIN, 84, VALUEMIN, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
216 DEF_INFO_3( VALUEMAX, VALUEMAX, 85, VALUEMAX, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
217 DEF_INFO_3( VALUESTEP, VALUESTEP, 86, VALUESTEP, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
218 DEF_INFO_2( DEFAULT_VALUE, DEFAULTVALUE, 87, DEFAULT_LONG_VALUE,FORM_VISIBLE, COMPOSEABLE ),
219 DEF_INFO_3( DECIMAL_ACCURACY, DECIMAL_ACCURACY, 88, DECIMAL_ACCURACY, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
220 DEF_INFO_3( SHOWTHOUSANDSEP, SHOWTHOUSANDSEP, 89, SHOWTHOUSANDSEP, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
221
222 DEF_INFO_3( CURRENCYSYMBOL, CURRENCYSYMBOL, 90, CURRENCYSYMBOL, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
223 DEF_INFO_3( CURRSYM_POSITION, CURRSYM_POSITION, 91, CURRSYM_POSITION, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
224
225 DEF_INFO_2( DATE, DATE, 92, DATE, DIALOG_VISIBLE, COMPOSEABLE ),
226 DEF_INFO_3( DATEMIN, DATEMIN, 93, DATEMIN, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
227 DEF_INFO_3( DATEMAX, DATEMAX, 94, DATEMAX, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
228 DEF_INFO_4( DATEFORMAT, DATEFORMAT, 95, DATEFORMAT, FORM_VISIBLE, DIALOG_VISIBLE, ENUM, COMPOSEABLE ),
229 DEF_INFO_2( DEFAULT_DATE, DEFAULTDATE, 96, DEFAULT_DATE, FORM_VISIBLE, COMPOSEABLE ),
230
231 DEF_INFO_2( TIME, TIME, 97, TIME, DIALOG_VISIBLE, COMPOSEABLE ),
232 DEF_INFO_3( TIMEMIN, TIMEMIN, 98, TIMEMIN, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
233 DEF_INFO_3( TIMEMAX, TIMEMAX, 99, TIMEMAX, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
234 DEF_INFO_4( TIMEFORMAT, TIMEFORMAT, 100, TIMEFORMAT, FORM_VISIBLE, DIALOG_VISIBLE, ENUM, COMPOSEABLE ),
235 DEF_INFO_2( DEFAULT_TIME, DEFAULTTIME, 101, DEFAULT_TIME, FORM_VISIBLE, COMPOSEABLE ),
236
237 DEF_INFO_1( EFFECTIVE_VALUE, VALUE, 102, VALUE, DIALOG_VISIBLE ),
238 DEF_INFO_3( EFFECTIVE_MIN, VALUEMIN, 103, EFFECTIVEMIN, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
239 DEF_INFO_3( EFFECTIVE_MAX, VALUEMAX, 104, EFFECTIVEMAX, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
240 DEF_INFO_2( EFFECTIVE_DEFAULT, DEFAULTVALUE, 105, EFFECTIVEDEFAULT, FORM_VISIBLE, COMPOSEABLE ),
241 DEF_INFO_3( FORMATKEY, FORMATKEY, 106, FORMATKEY, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
242
243 DEF_INFO_3( PROGRESSVALUE, PROGRESSVALUE, 107, PROGRESSVALUE, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
244 DEF_INFO_3( PROGRESSVALUE_MIN, PROGRESSVALUE_MIN, 108, PROGRESSVALUE_MIN, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
245 DEF_INFO_3( PROGRESSVALUE_MAX, PROGRESSVALUE_MAX, 109, PROGRESSVALUE_MAX, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
246
247 DEF_INFO_2( SCROLLVALUE, SCROLLVALUE, 110, SCROLLVALUE, DIALOG_VISIBLE, COMPOSEABLE ),
248 DEF_INFO_3( SCROLLVALUE_MIN, SCROLLVALUE_MIN, 111, SCROLLVALUE_MIN, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
249 DEF_INFO_3( SCROLLVALUE_MAX, SCROLLVALUE_MAX, 112, SCROLLVALUE_MAX, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
250 DEF_INFO_3( SCROLL_WIDTH, SCROLL_WIDTH, 113, SCROLL_WIDTH, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
251 DEF_INFO_2( SCROLL_HEIGHT, SCROLL_HEIGHT, 114, SCROLL_HEIGHT, DIALOG_VISIBLE, COMPOSEABLE ),
252 DEF_INFO_2( SCROLL_TOP, SCROLL_TOP, 115, SCROLL_TOP, DIALOG_VISIBLE, COMPOSEABLE ),
253 DEF_INFO_2( SCROLL_LEFT, SCROLL_LEFT, 116, SCROLL_LEFT, DIALOG_VISIBLE, COMPOSEABLE ),
254 DEF_INFO_2( DEFAULT_SCROLLVALUE,DEFAULT_SCROLLVALUE,117,DEFAULT_SCROLLVALUE,FORM_VISIBLE, COMPOSEABLE ),
255 DEF_INFO_3( LINEINCREMENT, LINEINCREMENT, 118, LINEINCREMENT, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
256 DEF_INFO_3( BLOCKINCREMENT, BLOCKINCREMENT, 119, BLOCKINCREMENT, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
257
258 DEF_INFO_2( SPINVALUE, VALUE, 120, SPINVALUE, DIALOG_VISIBLE, COMPOSEABLE ),
259 DEF_INFO_3( SPINVALUE_MIN, VALUEMIN, 121, SPINVALUE_MIN, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
260 DEF_INFO_3( SPINVALUE_MAX, VALUEMAX, 122, SPINVALUE_MAX, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
261 DEF_INFO_2( DEFAULT_SPINVALUE,DEFAULTVALUE, 123, DEFAULT_SPINVALUE, FORM_VISIBLE, COMPOSEABLE ),
262 DEF_INFO_3( SPININCREMENT, VALUESTEP, 124, SPININCREMENT, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
263
264 DEF_INFO_3( SPIN, SPIN, 125, SPIN, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
265 DEF_INFO_3( REPEAT, REPEAT, 126, REPEAT, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
266 DEF_INFO_3( REPEAT_DELAY, REPEAT_DELAY, 127, REPEAT_DELAY, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
267 DEF_INFO_3( VISIBLESIZE, VISIBLESIZE, 128, VISIBLESIZE, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
268 DEF_INFO_4( ORIENTATION, ORIENTATION, 129, ORIENTATION, FORM_VISIBLE, DIALOG_VISIBLE, ENUM, COMPOSEABLE ),
269 DEF_INFO_3( FOCUSONCLICK, FOCUSONCLICK, 130, FOCUSONCLICK, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
270 DEF_INFO_3( TOGGLE, TOGGLE, 131, TOGGLE, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
271 DEF_INFO_3( DEFAULT_STATE, DEFAULT_STATE, 132, DEFAULT_STATE, FORM_VISIBLE, ENUM, COMPOSEABLE ),
272
273 DEF_INFO_3( TEXT_ANCHOR_TYPE, ANCHOR_TYPE, 133, ANCHOR_TYPE, FORM_VISIBLE, ENUM, COMPOSEABLE ),
274 DEF_INFO_3( SHEET_ANCHOR_TYPE, ANCHOR_TYPE, 134, ANCHOR_TYPE, FORM_VISIBLE, ENUM, COMPOSEABLE ),
275 DEF_INFO_3( POSITIONX, POSITIONX, 135, POSITIONX, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
276 DEF_INFO_3( POSITIONY, POSITIONY, 136, POSITIONY, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
277 DEF_INFO_3( WIDTH, WIDTH, 137, WIDTH, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
278 DEF_INFO_3( HEIGHT, HEIGHT, 138, HEIGHT, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
279
280 DEF_INFO_1( LISTINDEX, LISTINDEX, 139, LISTINDEX, FORM_VISIBLE ),
281 DEF_INFO_3( STRINGITEMLIST, STRINGITEMLIST, 140, STRINGITEMLIST, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
282 DEF_INFO_2( DEFAULT_TEXT, DEFAULTTEXT, 141, DEFAULTVALUE, FORM_VISIBLE, COMPOSEABLE ),
283 DEF_INFO_3( FONT, FONT, 142, FONT, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
284 DEF_INFO_4( VISUALEFFECT, VISUALEFFECT, 143, VISUALEFFECT, FORM_VISIBLE, DIALOG_VISIBLE, ENUM_ONE, COMPOSEABLE ),
285 DEF_INFO_4( ALIGN, ALIGN, 144, ALIGN, FORM_VISIBLE, DIALOG_VISIBLE, ENUM, COMPOSEABLE ),
286 DEF_INFO_4( VERTICAL_ALIGN, VERTICAL_ALIGN, 145, VERTICAL_ALIGN, FORM_VISIBLE, DIALOG_VISIBLE, ENUM, COMPOSEABLE ),
287 DEF_INFO_3( ROWHEIGHT, ROWHEIGHT, 146, ROWHEIGHT, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
288 DEF_INFO_3( BACKGROUNDCOLOR, BACKGROUNDCOLOR, 147, BACKGROUNDCOLOR, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
289 DEF_INFO_3( SYMBOLCOLOR, SYMBOLCOLOR, 148, SYMBOLCOLOR, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
290 DEF_INFO_3( FILLCOLOR, FILLCOLOR, 149, FILLCOLOR, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
291 DEF_INFO_3( LINECOLOR, LINECOLOR, 150, LINECOLOR, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
292 DEF_INFO_4( BORDER, BORDER, 151, BORDER, FORM_VISIBLE, DIALOG_VISIBLE, ENUM, COMPOSEABLE ),
293 DEF_INFO_3( BORDERCOLOR, BORDERCOLOR, 152, BORDERCOLOR, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
294 DEF_INFO_3( ICONSIZE, ICONSIZE, 153, ICONSIZE, FORM_VISIBLE, ENUM, COMPOSEABLE ),
295 DEF_INFO_2( SHOW_POSITION, SHOW_POSITION, 154, SHOW_POSITION, FORM_VISIBLE, COMPOSEABLE ),
296 DEF_INFO_2( SHOW_NAVIGATION, SHOW_NAVIGATION, 155, SHOW_NAVIGATION, FORM_VISIBLE, COMPOSEABLE ),
297 DEF_INFO_2( SHOW_RECORDACTIONS,SHOW_RECORDACTIONS, 156, SHOW_RECORDACTIONS,FORM_VISIBLE, COMPOSEABLE ),
298 DEF_INFO_2( SHOW_FILTERSORT, SHOW_FILTERSORT, 157, SHOW_FILTERSORT, FORM_VISIBLE, COMPOSEABLE ),
299
300 DEF_INFO_3( DROPDOWN, DROPDOWN, 158, DROPDOWN, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
301 DEF_INFO_3( LINECOUNT, LINECOUNT, 159, LINECOUNT, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
302 DEF_INFO_3( AUTOCOMPLETE, AUTOCOMPLETE, 160, AUTOCOMPLETE, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
303 DEF_INFO_3( MULTILINE, MULTILINE, 161, MULTILINE, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
304 DEF_INFO_3( WORDBREAK, WORDBREAK, 162, WORDBREAK, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
305 DEF_INFO_3( TEXTTYPE, TEXTTYPE, 163, TEXTTYPE, FORM_VISIBLE, ENUM, COMPOSEABLE ),
306 DEF_INFO_3( LINEEND_FORMAT, LINEEND_FORMAT, 164, LINEEND_FORMAT, FORM_VISIBLE, ENUM_ONE, COMPOSEABLE ),
307 DEF_INFO_3( MULTISELECTION, MULTISELECTION, 165, MULTISELECTION, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
308 DEF_INFO_4( SHOW_SCROLLBARS, SHOW_SCROLLBARS, 166, SHOW_SCROLLBARS, FORM_VISIBLE, DIALOG_VISIBLE, ENUM, COMPOSEABLE ),
309 DEF_INFO_3( HSCROLL, HSCROLL, 167, HSCROLL, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
310 DEF_INFO_3( VSCROLL, VSCROLL, 168, VSCROLL, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
311 DEF_INFO_3( BUTTONTYPE, BUTTONTYPE, 169, BUTTONTYPE, FORM_VISIBLE, ENUM, COMPOSEABLE ),
312 DEF_INFO_2( XFORMS_BUTTONTYPE, BUTTONTYPE, 170, BUTTONTYPE, FORM_VISIBLE, ENUM ),
313 DEF_INFO_1( SUBMISSION_ID, SUBMISSION_ID, 171, SUBMISSION_ID, FORM_VISIBLE ),
314 DEF_INFO_2( PUSHBUTTONTYPE, PUSHBUTTONTYPE, 172, PUSHBUTTONTYPE, DIALOG_VISIBLE, ENUM ),
315 DEF_INFO_2( TARGET_URL, TARGET_URL, 173, TARGET_URL, FORM_VISIBLE, COMPOSEABLE ),
316 DEF_INFO_1( TARGET_FRAME, TARGET_FRAME, 174, TARGET_FRAME, FORM_VISIBLE ),
317 DEF_INFO_2( SUBMIT_ACTION, SUBMIT_ACTION, 175, SUBMIT_ACTION, FORM_VISIBLE, COMPOSEABLE ),
318 DEF_INFO_2( SUBMIT_TARGET, SUBMIT_TARGET, 176, SUBMIT_TARGET, FORM_VISIBLE, COMPOSEABLE ),
319 DEF_INFO_3( SUBMIT_ENCODING, SUBMIT_ENCODING, 177, SUBMIT_ENCODING, FORM_VISIBLE, ENUM, COMPOSEABLE ),
320 DEF_INFO_3( SUBMIT_METHOD, SUBMIT_METHOD, 178, SUBMIT_METHOD, FORM_VISIBLE, ENUM, COMPOSEABLE ),
321 DEF_INFO_3( STATE, STATE, 179, STATE, DIALOG_VISIBLE, ENUM, COMPOSEABLE ),
322 DEF_INFO_3( DEFAULTBUTTON, DEFAULT_BUTTON, 180, DEFAULT_BUTTON, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
323 DEF_INFO_3( IMAGE_URL, IMAGE_URL, 181, IMAGE_URL, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
324 DEF_INFO_4( IMAGEPOSITION, IMAGEPOSITION, 182, IMAGEPOSITION, FORM_VISIBLE, DIALOG_VISIBLE, ENUM, COMPOSEABLE ),
325 DEF_INFO_3( SCALEIMAGE, SCALEIMAGE, 183, SCALEIMAGE, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
326 DEF_INFO_4( SCALE_MODE, SCALEIMAGE, 184, SCALEIMAGE, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE, ENUM ),
327 DEF_INFO_2( DEFAULT_SELECT_SEQ,DEFAULT_SELECT_SEQ, 185, DEFAULT_SELECT_SEQ,FORM_VISIBLE, COMPOSEABLE ),
328 DEF_INFO_2( SELECTEDITEMS, SELECTEDITEMS, 186, SELECTEDITEMS, DIALOG_VISIBLE, COMPOSEABLE ),
329 DEF_INFO_3( ECHO_CHAR, ECHO_CHAR, 187, ECHO_CHAR, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
330 DEF_INFO_3( HIDEINACTIVESELECTION, HIDEINACTIVESELECTION, 188, HIDEINACTIVESELECTION, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
331 DEF_INFO_3( TRISTATE, TRISTATE, 189, TRISTATE, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
332 DEF_INFO_2( HASNAVIGATION, NAVIGATION, 190, NAVIGATIONBAR, FORM_VISIBLE, COMPOSEABLE ),
333 DEF_INFO_2( RECORDMARKER, RECORDMARKER, 191, RECORDMARKER, FORM_VISIBLE, COMPOSEABLE ),
334 DEF_INFO_3( TAG, TAG, 192, TAG, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
335 DEF_INFO_3( HELPTEXT, HELPTEXT, 193, HELPTEXT, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
336 DEF_INFO_3( HELPURL, HELPURL, 194, HELPURL, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE ),
337 DEF_INFO_3( SELECTION_TYPE, SELECTION_TYPE, 195, SELECTION_TYPE, DIALOG_VISIBLE, ENUM, COMPOSEABLE ),
338 DEF_INFO_2( ROOT_DISPLAYED, ROOT_DISPLAYED, 196, ROOT_DISPLAYED, DIALOG_VISIBLE, COMPOSEABLE ),
339 DEF_INFO_2( SHOWS_HANDLES, SHOWS_HANDLES, 197, SHOWS_HANDLES, DIALOG_VISIBLE, COMPOSEABLE ),
340 DEF_INFO_2( SHOWS_ROOT_HANDLES, SHOWS_ROOT_HANDLES, 198, SHOWS_ROOT_HANDLES, DIALOG_VISIBLE, COMPOSEABLE ),
341 DEF_INFO_2( EDITABLE, EDITABLE, 199, EDITABLE, DIALOG_VISIBLE, COMPOSEABLE ),
342 DEF_INFO_2( INVOKES_STOP_NOT_EDITING, INVOKES_STOP_NOT_EDITING, 200, INVOKES_STOP_NOT_EDITING, DIALOG_VISIBLE, COMPOSEABLE ),
343 DEF_INFO_2( DECORATION, DECORATION, 201, DECORATION, DIALOG_VISIBLE, COMPOSEABLE ),
344 DEF_INFO_2( NOLABEL, NOLABEL, 202, NOLABEL, DIALOG_VISIBLE, COMPOSEABLE ),
345 DEF_INFO_3( SELECTIONMODEL, SELECTIONMODEL, 203, SELECTIONMODEL, DIALOG_VISIBLE, ENUM, COMPOSEABLE ),
346 DEF_INFO_2( USEGRIDLINE, USEGRIDLINE, 204, USEGRIDLINE, DIALOG_VISIBLE, COMPOSEABLE ),
347 DEF_INFO_2( GRIDLINECOLOR, GRIDLINECOLOR, 205, GRIDLINECOLOR, DIALOG_VISIBLE, COMPOSEABLE ),
348 DEF_INFO_2( SHOWCOLUMNHEADER, SHOWCOLUMNHEADER, 206, SHOWCOLUMNHEADER, DIALOG_VISIBLE, COMPOSEABLE ),
349 DEF_INFO_2( SHOWROWHEADER, SHOWROWHEADER, 207, SHOWROWHEADER, DIALOG_VISIBLE, COMPOSEABLE ),
350 DEF_INFO_2( HEADERBACKGROUNDCOLOR, HEADERBACKGROUNDCOLOR, 208, HEADERBACKGROUNDCOLOR, DIALOG_VISIBLE, COMPOSEABLE ),
351 DEF_INFO_2( HEADERTEXTCOLOR, HEADERTEXTCOLOR, 209, HEADERTEXTCOLOR, DIALOG_VISIBLE, COMPOSEABLE ),
352 DEF_INFO_2( ACTIVESELECTIONBACKGROUNDCOLOR, ACTIVESELECTIONBACKGROUNDCOLOR, 210, ACTIVESELECTIONBACKGROUNDCOLOR, DIALOG_VISIBLE, COMPOSEABLE ),
353 DEF_INFO_2( ACTIVESELECTIONTEXTCOLOR, ACTIVESELECTIONTEXTCOLOR, 211, ACTIVESELECTIONTEXTCOLOR, DIALOG_VISIBLE, COMPOSEABLE ),
354 DEF_INFO_2( INACTIVESELECTIONBACKGROUNDCOLOR, INACTIVESELECTIONBACKGROUNDCOLOR, 212, INACTIVESELECTIONBACKGROUNDCOLOR, DIALOG_VISIBLE, COMPOSEABLE ),
355 DEF_INFO_2( INACTIVESELECTIONTEXTCOLOR, INACTIVESELECTIONTEXTCOLOR, 213, INACTIVESELECTIONTEXTCOLOR, DIALOG_VISIBLE, COMPOSEABLE ),
356 DEF_INFO_2( URL, URL, 214, URL, DIALOG_VISIBLE, COMPOSEABLE ),
357
358 DEF_INFO_3( AUTOGROW, AUTOGROW, 215, AUTOGROW, FORM_VISIBLE, DIALOG_VISIBLE, COMPOSEABLE)
359 };
360
361 s_pPropertyInfos = aPropertyInfos;
362 s_nCount = std::size(aPropertyInfos);
363
364 // sort
365 std::sort( s_pPropertyInfos, s_pPropertyInfos + s_nCount, PropertyInfoLessByName() );
366
367#if OSL_DEBUG_LEVEL > 0
368 for ( const OPropertyInfoImpl* pCheck = s_pPropertyInfos; pCheck != s_pPropertyInfos + s_nCount - 1; ++pCheck )
369 {
370 OSL_ENSURE( pCheck->sName != ( pCheck + 1 )->sName, "OPropertyInfoService::getPropertyInfo: duplicate entry in the table!" );
371 }
372#endif
373
374 return s_pPropertyInfos;
375 }
376
377
378 sal_Int32 OPropertyInfoService::getPropertyId(const OUString& _rName) const
379 {
380 const OPropertyInfoImpl* pInfo = getPropertyInfo(_rName);
381 return pInfo ? pInfo->nId : -1;
382 }
383
384
385 OUString OPropertyInfoService::getPropertyTranslation(sal_Int32 _nId) const
386 {
387 const OPropertyInfoImpl* pInfo = getPropertyInfo(_nId);
388 return pInfo ? pInfo->sTranslation : OUString();
389 }
390
391 OUString OPropertyInfoService::getPropertyHelpId(sal_Int32 _nId) const
392 {
393 const OPropertyInfoImpl* pInfo = getPropertyInfo(_nId);
394 return pInfo ? pInfo->sHelpId : OUString();
395 }
396
397 sal_Int16 OPropertyInfoService::getPropertyPos(sal_Int32 _nId) const
398 {
399 const OPropertyInfoImpl* pInfo = getPropertyInfo(_nId);
400 return pInfo ? pInfo->nPos : 0xFFFF;
401 }
402
403 sal_uInt32 OPropertyInfoService::getPropertyUIFlags(sal_Int32 _nId) const
404 {
405 const OPropertyInfoImpl* pInfo = getPropertyInfo(_nId);
406 return pInfo ? pInfo->nUIFlags : 0;
407 }
408
409 std::vector< OUString > OPropertyInfoService::getPropertyEnumRepresentations(sal_Int32 _nId) const
410 {
411 OSL_ENSURE( ( ( getPropertyUIFlags( _nId ) & PROP_FLAG_ENUM ) != 0 ) || ( _nId == PROPERTY_ID_TARGET_FRAME ),
412 "OPropertyInfoService::getPropertyEnumRepresentations: this is no enum property!" );
413
414 if (_nId == PROPERTY_ID_SUBMIT_METHOD)
415 {
416 return { "Get", "Post" };
417 }
418 const TranslateId* pStringItemsResId = nullptr;
419 std::size_t nElements = 0;
420 switch ( _nId )
421 {
423 pStringItemsResId = RID_RSC_ENUM_IMAGE_POSITION;
424 nElements = std::size(RID_RSC_ENUM_IMAGE_POSITION);
425 break;
427 pStringItemsResId = RID_RSC_ENUM_BORDER_TYPE;
428 nElements = std::size(RID_RSC_ENUM_BORDER_TYPE);
429 break;
431 pStringItemsResId = RID_RSC_ENUM_ICONSIZE_TYPE;
432 nElements = std::size(RID_RSC_ENUM_ICONSIZE_TYPE);
433 break;
435 pStringItemsResId = RID_RSC_ENUM_COMMAND_TYPE;
436 nElements = std::size(RID_RSC_ENUM_COMMAND_TYPE);
437 break;
439 pStringItemsResId = RID_RSC_ENUM_LISTSOURCE_TYPE;
440 nElements = std::size(RID_RSC_ENUM_LISTSOURCE_TYPE);
441 break;
443 pStringItemsResId = RID_RSC_ENUM_ALIGNMENT;
444 nElements = std::size(RID_RSC_ENUM_ALIGNMENT);
445 break;
447 pStringItemsResId = RID_RSC_ENUM_VERTICAL_ALIGN;
448 nElements = std::size(RID_RSC_ENUM_VERTICAL_ALIGN);
449 break;
451 pStringItemsResId = RID_RSC_ENUM_BUTTONTYPE;
452 nElements = std::size(RID_RSC_ENUM_BUTTONTYPE);
453 break;
455 pStringItemsResId = RID_RSC_ENUM_PUSHBUTTONTYPE;
456 nElements = std::size(RID_RSC_ENUM_PUSHBUTTONTYPE);
457 break;
459 pStringItemsResId = RID_RSC_ENUM_SUBMIT_ENCODING;
460 nElements = std::size(RID_RSC_ENUM_SUBMIT_ENCODING);
461 break;
463 pStringItemsResId = RID_RSC_ENUM_DATEFORMAT_LIST;
464 nElements = std::size(RID_RSC_ENUM_DATEFORMAT_LIST);
465 break;
467 pStringItemsResId = RID_RSC_ENUM_TIMEFORMAT_LIST;
468 nElements = std::size(RID_RSC_ENUM_TIMEFORMAT_LIST);
469 break;
472 pStringItemsResId = RID_RSC_ENUM_CHECKED;
473 nElements = std::size(RID_RSC_ENUM_CHECKED);
474 break;
476 pStringItemsResId = RID_RSC_ENUM_CYCLE;
477 nElements = std::size(RID_RSC_ENUM_CYCLE);
478 break;
480 pStringItemsResId = RID_RSC_ENUM_NAVIGATION;
481 nElements = std::size(RID_RSC_ENUM_NAVIGATION);
482 break;
484 pStringItemsResId = RID_RSC_ENUM_SUBMIT_TARGET;
485 nElements = std::size(RID_RSC_ENUM_SUBMIT_TARGET);
486 break;
488 pStringItemsResId = RID_RSC_ENUM_ORIENTATION;
489 nElements = std::size(RID_RSC_ENUM_ORIENTATION);
490 break;
492 pStringItemsResId = RID_RSC_ENUM_CELL_EXCHANGE_TYPE;
493 nElements = std::size(RID_RSC_ENUM_CELL_EXCHANGE_TYPE);
494 break;
496 pStringItemsResId = RID_RSC_ENUM_SCROLLBARS;
497 nElements = std::size(RID_RSC_ENUM_SCROLLBARS);
498 break;
500 pStringItemsResId = RID_RSC_ENUM_VISUALEFFECT;
501 nElements = std::size(RID_RSC_ENUM_VISUALEFFECT);
502 break;
504 pStringItemsResId = RID_RSC_ENUM_TEXTTYPE;
505 nElements = std::size(RID_RSC_ENUM_TEXTTYPE);
506 break;
508 pStringItemsResId = RID_RSC_ENUM_LINEEND_FORMAT;
509 nElements = std::size(RID_RSC_ENUM_LINEEND_FORMAT);
510 break;
512 pStringItemsResId = RID_RSC_ENUM_WHITESPACE_HANDLING;
513 nElements = std::size(RID_RSC_ENUM_WHITESPACE_HANDLING);
514 break;
517 pStringItemsResId = RID_RSC_ENUM_SELECTION_TYPE;
518 nElements = std::size(RID_RSC_ENUM_SELECTION_TYPE);
519 break;
521 pStringItemsResId = RID_RSC_ENUM_SCALE_MODE;
522 nElements = std::size(RID_RSC_ENUM_SCALE_MODE);
523 break;
525 pStringItemsResId = RID_RSC_ENUM_WRITING_MODE;
526 nElements = std::size(RID_RSC_ENUM_WRITING_MODE);
527 break;
529 pStringItemsResId = RID_RSC_ENUM_WHEEL_BEHAVIOR;
530 nElements = std::size(RID_RSC_ENUM_WHEEL_BEHAVIOR);
531 break;
533 pStringItemsResId = RID_RSC_ENUM_TEXT_ANCHOR_TYPE;
534 nElements = std::size(RID_RSC_ENUM_TEXT_ANCHOR_TYPE);
535 break;
537 pStringItemsResId = RID_RSC_ENUM_SHEET_ANCHOR_TYPE;
538 nElements = std::size(RID_RSC_ENUM_SHEET_ANCHOR_TYPE);
539 break;
540 default:
541 OSL_FAIL( "OPropertyInfoService::getPropertyEnumRepresentations: unknown enum property!" );
542 break;
543 }
544
545 std::vector< OUString > aReturn;
546
547 aReturn.reserve(nElements);
548 for (std::size_t i = 0; i < nElements; ++i)
549 {
550 aReturn.push_back(PcrRes(pStringItemsResId[i]));
551 }
552
553 return aReturn;
554 }
555
556 bool OPropertyInfoService::isComposeable( const OUString& _rPropertyName ) const
557 {
558 sal_Int32 nId = getPropertyId( _rPropertyName );
559 if ( nId == -1 )
560 return false;
561
562 sal_uInt32 nFlags = getPropertyUIFlags( nId );
563 return ( nFlags & PROP_FLAG_COMPOSEABLE ) != 0;
564 }
565
566
568 {
569 // Initialization
572 OPropertyInfoImpl aSearch(_rName, 0, OUString(), 0, "", 0);
573
574 const OPropertyInfoImpl* pInfo = std::lower_bound(
575 s_pPropertyInfos, s_pPropertyInfos + s_nCount, aSearch, PropertyInfoLessByName() );
576
577 if ( pInfo == s_pPropertyInfos + s_nCount )
578 return nullptr;
579
580 if ( pInfo->sName != _rName )
581 return nullptr;
582
583 return pInfo;
584 }
585
586
588 {
589 // Initialization
592
593 // TODO: a real structure which allows quick access by name as well as by id
594 for (std::size_t i = 0; i < s_nCount; ++i)
595 if (s_pPropertyInfos[i].nId == _nId)
596 return &s_pPropertyInfos[i];
597
598 return nullptr;
599 }
600
601
602 //= DefaultEnumRepresentation
603
604
605 DefaultEnumRepresentation::DefaultEnumRepresentation( const IPropertyInfoService& _rInfo, const Type& _rType, sal_Int32 _nPropertyId )
606 :m_rMetaData( _rInfo )
607 ,m_aType( _rType )
608 ,m_nPropertyId( _nPropertyId )
609 {
610 }
611
612
614 {
615 }
616
617
618 std::vector< OUString > DefaultEnumRepresentation::getDescriptions() const
619 {
621 }
622
623
624 void DefaultEnumRepresentation::getValueFromDescription( const OUString& _rDescription, Any& _out_rValue ) const
625 {
626 sal_uInt32 nPropertyUIFlags = m_rMetaData.getPropertyUIFlags( m_nPropertyId );
627 std::vector< OUString > aEnumStrings = m_rMetaData.getPropertyEnumRepresentations( m_nPropertyId );
628 std::vector< OUString >::const_iterator pos = std::find( aEnumStrings.begin(), aEnumStrings.end(), _rDescription );
629 if ( pos != aEnumStrings.end() )
630 {
631 sal_Int32 nPos = pos - aEnumStrings.begin();
632 if ( ( nPropertyUIFlags & PROP_FLAG_ENUM_ONE ) == PROP_FLAG_ENUM_ONE )
633 // enum value starting with 1
634 ++nPos;
635
636 switch ( m_aType.getTypeClass() )
637 {
638 case TypeClass_ENUM:
639 _out_rValue = ::cppu::int2enum( nPos, m_aType );
640 break;
641
642 case TypeClass_SHORT:
643 _out_rValue <<= static_cast<sal_Int16>(nPos);
644 break;
645
646 case TypeClass_UNSIGNED_SHORT:
647 _out_rValue <<= static_cast<sal_uInt16>(nPos);
648 break;
649
650 case TypeClass_UNSIGNED_LONG:
651 _out_rValue <<= static_cast<sal_uInt32>(nPos);
652 break;
653
654 default:
655 _out_rValue <<= nPos;
656 break;
657 }
658 }
659 else
660 {
661 OSL_FAIL( "DefaultEnumRepresentation::getValueFromDescription: could not translate the enum string!" );
662 _out_rValue.clear();
663 }
664 }
665
666
667 OUString DefaultEnumRepresentation::getDescriptionForValue( const Any& _rEnumValue ) const
668 {
669 OUString sReturn;
670 sal_Int32 nIntValue = -1;
671 OSL_VERIFY( ::cppu::enum2int( nIntValue, _rEnumValue ) );
672
673 sal_uInt32 nUIFlags = m_rMetaData.getPropertyUIFlags( m_nPropertyId );
674 if ( ( nUIFlags & PROP_FLAG_ENUM_ONE ) == PROP_FLAG_ENUM_ONE )
675 // enum value starting with 1
676 --nIntValue;
677
678 std::vector< OUString > aEnumStrings = m_rMetaData.getPropertyEnumRepresentations( m_nPropertyId );
679 if ( ( nIntValue >= 0 ) && ( o3tl::make_unsigned(nIntValue) < aEnumStrings.size() ) )
680 {
681 sReturn = aEnumStrings[ nIntValue ];
682 }
683 else
684 {
685 OSL_FAIL( "DefaultEnumRepresentation::getDescriptionForValue: could not translate an enum value" );
686 }
687 return sReturn;
688 }
689
690
691} // namespace pcr
692
693
694/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
const short REPEAT
ORIENTATION
uno::Type m_aType
NAME
DefaultEnumRepresentation(const IPropertyInfoService &_rInfo, const css::uno::Type &_rType, sal_Int32 _nPropertyId)
constructs an instance
virtual OUString getDescriptionForValue(const css::uno::Any &_rEnumValue) const override
converts a given property value into a description
virtual void getValueFromDescription(const OUString &_rDescription, css::uno::Any &_out_rValue) const override
converts a given description into a property value
const IPropertyInfoService & m_rMetaData
virtual std::vector< OUString > getDescriptions() const override
retrieves all descriptions of all possible values of the enumeration property
virtual ~DefaultEnumRepresentation() override
virtual std::vector< OUString > getPropertyEnumRepresentations(sal_Int32 _nId) const =0
virtual sal_uInt32 getPropertyUIFlags(sal_Int32 _nId) const =0
virtual sal_Int16 getPropertyPos(sal_Int32 _nId) const override
virtual sal_Int32 getPropertyId(const OUString &_rName) const override
virtual OUString getPropertyHelpId(sal_Int32 _nId) const override
static OPropertyInfoImpl * s_pPropertyInfos
virtual std::vector< OUString > getPropertyEnumRepresentations(sal_Int32 _nId) const override
static std::size_t s_nCount
virtual sal_uInt32 getPropertyUIFlags(sal_Int32 _nId) const override
bool isComposeable(const OUString &_rPropertyName) const
virtual OUString getPropertyTranslation(sal_Int32 _nId) const override
static const OPropertyInfoImpl * getPropertyInfo()
sal_Int32 nElements
constexpr OUStringLiteral TITLE
constexpr OUStringLiteral TARGET_URL
const bool READONLY
OUString sName
#define DEF_INFO_3(ident, uinameres, pos, helpid, flag1, flag2, flag3)
#define DEF_INFO_2(ident, uinameres, pos, helpid, flag1, flag2)
#define DEF_INFO_4(ident, uinameres, pos, helpid, flag1, flag2, flag3, flag4)
#define DEF_INFO_1(ident, uinameres, pos, helpid, flag1)
#define PROPERTY_ID_ORIENTATION
#define PROPERTY_ID_LINEEND_FORMAT
#define PROPERTY_ID_SHOW_SCROLLBARS
#define PROP_FLAG_COMPOSEABLE
#define PROPERTY_ID_DEFAULT_STATE
#define PROPERTY_ID_WRITING_MODE
#define PROPERTY_ID_TEXTTYPE
#define PROPERTY_ID_IMAGEPOSITION
#define PROPERTY_ID_CELL_EXCHANGE_TYPE
#define PROP_FLAG_ENUM_ONE
#define PROPERTY_ID_LISTSOURCETYPE
#define PROPERTY_ID_TIMEFORMAT
#define PROPERTY_ID_ICONSIZE
#define PROPERTY_ID_TEXT_ANCHOR_TYPE
#define PROPERTY_ID_SUBMIT_METHOD
#define PROPERTY_ID_STATE
#define PROPERTY_ID_SELECTIONMODEL
#define PROP_FLAG_REPORT_INVISIBLE
#define PROPERTY_ID_NAVIGATION
#define PROPERTY_ID_PUSHBUTTONTYPE
#define PROPERTY_ID_CYCLE
#define PROPERTY_ID_ALIGN
#define PROPERTY_ID_DATEFORMAT
#define PROPERTY_ID_TARGET_FRAME
#define PROPERTY_ID_VERTICAL_ALIGN
#define PROPERTY_ID_COMMANDTYPE
#define PROPERTY_ID_VISUALEFFECT
#define PROPERTY_ID_XSD_WHITESPACES
#define PROPERTY_ID_SUBMIT_ENCODING
#define PROPERTY_ID_SCALE_MODE
#define PROPERTY_ID_BUTTONTYPE
#define PROPERTY_ID_SELECTION_TYPE
#define PROP_FLAG_ENUM
#define PROPERTY_ID_SHEET_ANCHOR_TYPE
#define PROPERTY_ID_WHEEL_BEHAVIOR
#define PROPERTY_ID_BORDER
DECORATION
sal_uInt16 nPos
STATE
DATE
Type
DEFAULT_STATE
const sal_uInt16 BACKGROUNDCOLOR
const sal_uInt16 BOUNDCOLUMN
const sal_uInt16 CYCLE
const sal_uInt16 RECORDMARKER
const sal_uInt16 ROWHEIGHT
const sal_uInt16 TABSTOP
const sal_uInt16 WIDTH
const sal_uInt16 ALIGN
int i
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
a property handler for any virtual string properties
Definition: browserline.cxx:39
OUString PcrRes(TranslateId aId)
Definition: modulepcr.cxx:26
constexpr tools::Long BORDER
constexpr sal_Int32 DEFAULT_VALUE
constexpr OUStringLiteral IMAGE_URL
sal_Int16 nId
#define HEIGHT
OPropertyInfoImpl(OUString aName, sal_Int32 _nId, OUString aTranslation, sal_uInt16 nPosId, OUString, sal_uInt32 _nUIFlags)
@ TRISTATE
ENUM
TEXT
STEP
PRINTABLE
size_t pos