office-gobmx/extensions/source/propctrlr/formmetadata.hxx
jsala 2c68c419c1 tdf#147021 Use std::size() instead of SAL_N_ELEMENTS() macro
Also change some integer by std::size_t

Change-Id: I999b4dddba6ef1feb0a65aad24e97f507b577b59
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136104
Tested-by: Jenkins
Reviewed-by: Hossein <hossein@libreoffice.org>
2022-06-20 12:25:56 +02:00

345 lines
16 KiB
C++

/* -*- 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: */