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