LCOV - code coverage report
Current view: top level - extensions/source/propctrlr - formmetadata.hxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 1 1 100.0 %
Date: 2015-06-13 12:38:46 Functions: 3 3 100.0 %
Legend: Lines: hit not hit

          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             : #ifndef INCLUDED_EXTENSIONS_SOURCE_PROPCTRLR_FORMMETADATA_HXX
      21             : #define INCLUDED_EXTENSIONS_SOURCE_PROPCTRLR_FORMMETADATA_HXX
      22             : 
      23             : #include "propertyinfo.hxx"
      24             : #include "modulepcr.hxx"
      25             : #include "enumrepresentation.hxx"
      26             : 
      27             : 
      28             : namespace pcr
      29             : {
      30             : 
      31             : 
      32             :     struct OPropertyInfoImpl;
      33             : 
      34             : 
      35             :     //= OPropertyInfoService
      36             : 
      37          36 :     class OPropertyInfoService
      38             :                 :public IPropertyInfoService
      39             :                 ,public PcrClient
      40             :     {
      41             :     protected:
      42             :         static sal_uInt16               s_nCount;
      43             :         static OPropertyInfoImpl*       s_pPropertyInfos;
      44             :         // TODO: a real structure which allows quick access by name as well as by id
      45             : 
      46             :     public:
      47             :         // IPropertyInfoService
      48             :         virtual sal_Int32                      getPropertyId(const OUString& _rName) const SAL_OVERRIDE;
      49             :         virtual OUString                       getPropertyTranslation(sal_Int32 _nId) const SAL_OVERRIDE;
      50             :         virtual OString                        getPropertyHelpId(sal_Int32 _nId) const SAL_OVERRIDE;
      51             :         virtual sal_Int16                      getPropertyPos(sal_Int32 _nId) const SAL_OVERRIDE;
      52             :         virtual sal_uInt32                     getPropertyUIFlags(sal_Int32 _nId) const SAL_OVERRIDE;
      53             :         virtual ::std::vector< OUString >      getPropertyEnumRepresentations(sal_Int32 _nId) const SAL_OVERRIDE;
      54             :         virtual OUString                       getPropertyName( sal_Int32 _nPropId ) SAL_OVERRIDE;
      55             : 
      56             :         bool                                   isComposeable( const OUString& _rPropertyName ) const;
      57             : 
      58             :     protected:
      59             :         static const OPropertyInfoImpl* getPropertyInfo();
      60             : 
      61             :         static const OPropertyInfoImpl* getPropertyInfo(const OUString& _rName);
      62             :         static const OPropertyInfoImpl* getPropertyInfo(sal_Int32 _nId);
      63             :     };
      64             : 
      65             : 
      66             :     //= DefaultEnumRepresentation
      67             : 
      68             :     /** an implementation of the IPropertyEnumRepresentation
      69             : 
      70             :         To be used with properties which, in formmetadata.cxx, are declared as ENUM.
      71             :     */
      72             :     class DefaultEnumRepresentation : public IPropertyEnumRepresentation
      73             :     {
      74             :     private:
      75             :         const IPropertyInfoService& m_rMetaData;
      76             :         ::com::sun::star::uno::Type m_aType;
      77             :         const sal_Int32             m_nPropertyId;
      78             : 
      79             :     public:
      80             :         /** constructs an instance
      81             : 
      82             :             @param _rInfo
      83             :                 An instance implementing IPropertyInfoService. Must live at least as
      84             :                 long as the DefaultEnumRepresentation should live.
      85             :         */
      86             :         DefaultEnumRepresentation( const IPropertyInfoService& _rInfo, const ::com::sun::star::uno::Type& _rType, sal_Int32 _nPropertyId );
      87             : 
      88             :     protected:
      89             :         virtual ~DefaultEnumRepresentation();
      90             : 
      91             :     protected:
      92             :         // IPropertyEnumRepresentation implementqation
      93             :         virtual ::std::vector< OUString >
      94             :                                     SAL_CALL getDescriptions() const SAL_OVERRIDE;
      95             :         virtual void                SAL_CALL getValueFromDescription( const OUString& _rDescription, ::com::sun::star::uno::Any& _out_rValue ) const SAL_OVERRIDE;
      96             :         virtual OUString     SAL_CALL getDescriptionForValue( const ::com::sun::star::uno::Any& _rEnumValue ) const SAL_OVERRIDE;
      97             : 
      98             :     private:
      99             :         DefaultEnumRepresentation( const DefaultEnumRepresentation& ) SAL_DELETED_FUNCTION;
     100             :         DefaultEnumRepresentation& operator=( const DefaultEnumRepresentation& ) SAL_DELETED_FUNCTION;
     101             :     };
     102             : 
     103             : 
     104             :     //= UI flags (for all browseable properties)
     105             : 
     106             : 
     107             : #define PROP_FLAG_NONE              0x00000000  // no special flag
     108             : #define PROP_FLAG_FORM_VISIBLE      0x00000001  // the property is visible when inspecting a form object
     109             : #define PROP_FLAG_DIALOG_VISIBLE    0x00000002  // the property is visible when inspecting a dialog object
     110             : #define PROP_FLAG_DATA_PROPERTY     0x00000004  // the property is to appear on the "Data" page
     111             : #define PROP_FLAG_ENUM              0x00000020  // the property is some kind of enum property, i.e. its
     112             :                                                 // value is chosen from a fixed list of possible values
     113             : #define PROP_FLAG_ENUM_ONE          0x00000060  // the property is an enum property starting with 1
     114             :                                                 //  (note that this includes PROP_FLAG_ENUM)
     115             : #define PROP_FLAG_COMPOSEABLE       0x00000080  // the property is "composeable", i.e. an intersection of property
     116             :                                                 //  sets should expose it, if all elements do
     117             : #define PROP_FLAG_EXPERIMENTAL      0x00000100  // the property is experimental, i.e. should not appear in the
     118             :                                                 // UI, unless experimental properties are enabled by a configuraiton
     119             :                                                 // option
     120             : 
     121             : 
     122             :     //= property ids (for all browseable properties)
     123             : 
     124             : 
     125             :     #define PROPERTY_ID_NAME                  1
     126             :     #define PROPERTY_ID_LABEL                 2
     127             :     #define PROPERTY_ID_CONTROLLABEL          3
     128             :     #define PROPERTY_ID_MAXTEXTLEN            4
     129             :     #define PROPERTY_ID_EDITMASK              5
     130             :     #define PROPERTY_ID_LITERALMASK           6
     131             :     #define PROPERTY_ID_STRICTFORMAT          7
     132             :     #define PROPERTY_ID_ENABLED               8
     133             :     #define PROPERTY_ID_READONLY              9
     134             :     #define PROPERTY_ID_PRINTABLE            10
     135             :     #define PROPERTY_ID_CONTROLSOURCE        11
     136             :     #define PROPERTY_ID_TABSTOP              12
     137             :     #define PROPERTY_ID_TABINDEX             13
     138             :     #define PROPERTY_ID_DATASOURCE           14
     139             :     #define PROPERTY_ID_COMMAND              15
     140             :     #define PROPERTY_ID_COMMANDTYPE          16
     141             :     #define PROPERTY_ID_FILTER               17
     142             :     #define PROPERTY_ID_SORT                 18
     143             :     #define PROPERTY_ID_INSERTONLY           19
     144             :     #define PROPERTY_ID_ALLOWADDITIONS       20
     145             :     #define PROPERTY_ID_ALLOWEDITS           21
     146             :     #define PROPERTY_ID_ALLOWDELETIONS       22
     147             :     #define PROPERTY_ID_GROUP_NAME           23
     148             :     #define PROPERTY_ID_NAVIGATION           24
     149             :     #define PROPERTY_ID_CYCLE                25
     150             :     #define PROPERTY_ID_HIDDEN_VALUE         26
     151             :     #define PROPERTY_ID_VALUEMIN             27
     152             :     #define PROPERTY_ID_VALUEMAX             28
     153             :     #define PROPERTY_ID_VALUESTEP            29
     154             :     #define PROPERTY_ID_DEFAULT_VALUE        30
     155             :     #define PROPERTY_ID_DECIMAL_ACCURACY     31
     156             :     #define PROPERTY_ID_SHOWTHOUSANDSEP      32
     157             :     #define PROPERTY_ID_REFVALUE             33
     158             :     #define PROPERTY_ID_CURRENCYSYMBOL       34
     159             :     #define PROPERTY_ID_CURRSYM_POSITION     35
     160             :     #define PROPERTY_ID_DATEMIN              36
     161             :     #define PROPERTY_ID_DATEMAX              37
     162             :     #define PROPERTY_ID_DATEFORMAT           38
     163             :     #define PROPERTY_ID_SELECTEDITEMS        39
     164             :     #define PROPERTY_ID_DEFAULT_DATE         40
     165             :     #define PROPERTY_ID_TIMEMIN              41
     166             :     #define PROPERTY_ID_TIMEMAX              42
     167             :     #define PROPERTY_ID_TIMEFORMAT           43
     168             :     #define PROPERTY_ID_DEFAULT_TIME         44
     169             :     #define PROPERTY_ID_EFFECTIVE_MIN        45
     170             :     #define PROPERTY_ID_EFFECTIVE_MAX        46
     171             :     #define PROPERTY_ID_EFFECTIVE_DEFAULT    47
     172             :     #define PROPERTY_ID_FORMATKEY            48
     173             :     #define PROPERTY_ID_CLASSID              50
     174             :     #define PROPERTY_ID_HEIGHT               51
     175             :     #define PROPERTY_ID_WIDTH                52
     176             :     #define PROPERTY_ID_BOUNDCOLUMN          53
     177             :     #define PROPERTY_ID_LISTSOURCETYPE       54
     178             :     #define PROPERTY_ID_LISTSOURCE           55
     179             :     #define PROPERTY_ID_LISTINDEX            56
     180             :     #define PROPERTY_ID_STRINGITEMLIST       57
     181             :     #define PROPERTY_ID_DEFAULT_TEXT         58
     182             :     #define PROPERTY_ID_FONT                 59
     183             :     #define PROPERTY_ID_ALIGN                60
     184             :     #define PROPERTY_ID_ROWHEIGHT            61
     185             :     #define PROPERTY_ID_BACKGROUNDCOLOR      62
     186             :     #define PROPERTY_ID_FILLCOLOR            63
     187             :     #define PROPERTY_ID_ESCAPE_PROCESSING    64
     188             :     #define PROPERTY_ID_LINECOLOR            65
     189             :     #define PROPERTY_ID_BORDER               66
     190             :     #define PROPERTY_ID_DROPDOWN             67
     191             :     #define PROPERTY_ID_AUTOCOMPLETE         68
     192             :     #define PROPERTY_ID_LINECOUNT            69
     193             :     #define PROPERTY_ID_WORDBREAK            70
     194             :     #define PROPERTY_ID_MULTILINE            71
     195             :     #define PROPERTY_ID_MULTISELECTION       72
     196             :     #define PROPERTY_ID_AUTOLINEBREAK        73
     197             :     #define PROPERTY_ID_HSCROLL              74
     198             :     #define PROPERTY_ID_VSCROLL              75
     199             :     #define PROPERTY_ID_SPIN                 76
     200             :     #define PROPERTY_ID_BUTTONTYPE           77
     201             :     #define PROPERTY_ID_TARGET_URL           78
     202             :     #define PROPERTY_ID_TARGET_FRAME         79
     203             :     #define PROPERTY_ID_SUBMIT_ACTION        80
     204             :     #define PROPERTY_ID_SUBMIT_TARGET        81
     205             :     #define PROPERTY_ID_SUBMIT_METHOD        82
     206             :     #define PROPERTY_ID_SUBMIT_ENCODING      83
     207             :     #define PROPERTY_ID_DEFAULT_STATE        84
     208             :     #define PROPERTY_ID_DEFAULTBUTTON        85
     209             :     #define PROPERTY_ID_IMAGE_URL            86
     210             :     #define PROPERTY_ID_DEFAULT_SELECT_SEQ   87
     211             :     #define PROPERTY_ID_ECHO_CHAR            88
     212             :     #define PROPERTY_ID_EMPTY_IS_NULL        89
     213             :     #define PROPERTY_ID_TRISTATE             90
     214             :     #define PROPERTY_ID_MASTERFIELDS         91
     215             :     #define PROPERTY_ID_DETAILFIELDS         92
     216             :     #define PROPERTY_ID_RECORDMARKER         93
     217             :     #define PROPERTY_ID_FILTERPROPOSAL       94
     218             :     #define PROPERTY_ID_TAG                  95
     219             :     #define PROPERTY_ID_HELPTEXT             96
     220             :     #define PROPERTY_ID_HELPURL              97
     221             :     #define PROPERTY_ID_HASNAVIGATION        98
     222             :     #define PROPERTY_ID_POSITIONX            99
     223             :     #define PROPERTY_ID_POSITIONY            100
     224             :     #define PROPERTY_ID_TITLE                101
     225             :     #define PROPERTY_ID_STEP                 102
     226             :     #define PROPERTY_ID_PROGRESSVALUE        103
     227             :     #define PROPERTY_ID_PROGRESSVALUE_MIN    104
     228             :     #define PROPERTY_ID_PROGRESSVALUE_MAX    105
     229             :     #define PROPERTY_ID_SCROLLVALUE          106
     230             :     #define PROPERTY_ID_SCROLLVALUE_MAX      107
     231             :     #define PROPERTY_ID_LINEINCREMENT        108
     232             :     #define PROPERTY_ID_BLOCKINCREMENT       109
     233             :     #define PROPERTY_ID_VISIBLESIZE          110
     234             :     #define PROPERTY_ID_ORIENTATION          111
     235             :     #define PROPERTY_ID_IMAGEPOSITION        112
     236             :     #define PROPERTY_ID_DATE                 113
     237             :     #define PROPERTY_ID_STATE                114
     238             :     #define PROPERTY_ID_TIME                 115
     239             :     #define PROPERTY_ID_VALUE                116
     240             :     #define PROPERTY_ID_SCALEIMAGE           117
     241             :     #define PROPERTY_ID_PUSHBUTTONTYPE       118
     242             :     #define PROPERTY_ID_EFFECTIVE_VALUE      119
     243             :     #define PROPERTY_ID_TEXT                 120
     244             :     #define PROPERTY_ID_BOUND_CELL           121
     245             :     #define PROPERTY_ID_LIST_CELL_RANGE      122
     246             :     #define PROPERTY_ID_CELL_EXCHANGE_TYPE   123
     247             :     #define PROPERTY_ID_SCROLLVALUE_MIN      124
     248             :     #define PROPERTY_ID_DEFAULT_SCROLLVALUE  125
     249             :     #define PROPERTY_ID_REPEAT_DELAY         126
     250             :     #define PROPERTY_ID_SYMBOLCOLOR          127
     251             :     #define PROPERTY_ID_SPINVALUE            128
     252             :     #define PROPERTY_ID_SPINVALUE_MIN        129
     253             :     #define PROPERTY_ID_SPINVALUE_MAX        130
     254             :     #define PROPERTY_ID_DEFAULT_SPINVALUE    131
     255             :     #define PROPERTY_ID_SPININCREMENT        132
     256             :     #define PROPERTY_ID_REPEAT               133
     257             :     #define PROPERTY_ID_SHOW_SCROLLBARS      134
     258             :     #define PROPERTY_ID_ICONSIZE             135
     259             :     #define PROPERTY_ID_SHOW_POSITION        136
     260             :     #define PROPERTY_ID_SHOW_NAVIGATION      137
     261             :     #define PROPERTY_ID_SHOW_RECORDACTIONS   138
     262             :     #define PROPERTY_ID_SHOW_FILTERSORT      139
     263             :     #define PROPERTY_ID_TEXTTYPE             140
     264             :     #define PROPERTY_ID_LINEEND_FORMAT       141
     265             :     #define PROPERTY_ID_TOGGLE               142
     266             :     #define PROPERTY_ID_FOCUSONCLICK         143
     267             :     #define PROPERTY_ID_HIDEINACTIVESELECTION 144
     268             :     #define PROPERTY_ID_VISUALEFFECT         145
     269             :     #define PROPERTY_ID_BORDERCOLOR          146
     270             :     #define PROPERTY_ID_XML_DATA_MODEL       147
     271             :     #define PROPERTY_ID_BIND_EXPRESSION      148
     272             :     #define PROPERTY_ID_XSD_REQUIRED         149
     273             :     #define PROPERTY_ID_XSD_RELEVANT         150
     274             :     #define PROPERTY_ID_XSD_READONLY         151
     275             :     #define PROPERTY_ID_XSD_CONSTRAINT       152
     276             :     #define PROPERTY_ID_XSD_CALCULATION      153
     277             :     #define PROPERTY_ID_XSD_DATA_TYPE        154
     278             :     #define PROPERTY_ID_XSD_WHITESPACES      155
     279             :     #define PROPERTY_ID_XSD_PATTERN          156
     280             :     #define PROPERTY_ID_XSD_LENGTH           157
     281             :     #define PROPERTY_ID_XSD_MIN_LENGTH       158
     282             :     #define PROPERTY_ID_XSD_MAX_LENGTH       159
     283             :     #define PROPERTY_ID_XSD_TOTAL_DIGITS     160
     284             :     #define PROPERTY_ID_XSD_FRACTION_DIGITS  161
     285             :     #define PROPERTY_ID_XSD_MAX_INCLUSIVE_INT        162
     286             :     #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_INT        163
     287             :     #define PROPERTY_ID_XSD_MIN_INCLUSIVE_INT        164
     288             :     #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_INT        165
     289             :     #define PROPERTY_ID_XSD_MAX_INCLUSIVE_DOUBLE     166
     290             :     #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_DOUBLE     167
     291             :     #define PROPERTY_ID_XSD_MIN_INCLUSIVE_DOUBLE     168
     292             :     #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_DOUBLE     169
     293             :     #define PROPERTY_ID_XSD_MAX_INCLUSIVE_DATE       170
     294             :     #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_DATE       171
     295             :     #define PROPERTY_ID_XSD_MIN_INCLUSIVE_DATE       172
     296             :     #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_DATE       173
     297             :     #define PROPERTY_ID_XSD_MAX_INCLUSIVE_TIME       174
     298             :     #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_TIME       175
     299             :     #define PROPERTY_ID_XSD_MIN_INCLUSIVE_TIME       176
     300             :     #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_TIME       177
     301             :     #define PROPERTY_ID_XSD_MAX_INCLUSIVE_DATE_TIME  178
     302             :     #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_DATE_TIME  179
     303             :     #define PROPERTY_ID_XSD_MIN_INCLUSIVE_DATE_TIME  180
     304             :     #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_DATE_TIME  181
     305             :     #define PROPERTY_ID_UNCHECKEDREFVALUE           182
     306             :     #define PROPERTY_ID_SUBMISSION_ID               183
     307             :     #define PROPERTY_ID_XFORMS_BUTTONTYPE           184
     308             :     #define PROPERTY_ID_LIST_BINDING                185
     309             :     #define PROPERTY_ID_VERTICAL_ALIGN              186
     310             :     #define PROPERTY_ID_BINDING_NAME                187
     311             :     #define PROPERTY_ID_DECORATION                  188
     312             :     #define PROPERTY_ID_SELECTION_TYPE              189
     313             :     #define PROPERTY_ID_ROOT_DISPLAYED              190
     314             :     #define PROPERTY_ID_SHOWS_HANDLES               191
     315             :     #define PROPERTY_ID_SHOWS_ROOT_HANDLES          192
     316             :     #define PROPERTY_ID_EDITABLE                    193
     317             :     #define PROPERTY_ID_INVOKES_STOP_NOT_EDITING    194
     318             :     #define PROPERTY_ID_NOLABEL                     195
     319             :     #define PROPERTY_ID_SCALE_MODE                  196
     320             :     #define PROPERTY_ID_INPUT_REQUIRED              197
     321             :     #define PROPERTY_ID_WRITING_MODE                198
     322             :     #define PROPERTY_ID_ENABLE_VISIBLE              199
     323             :     #define PROPERTY_ID_WHEEL_BEHAVIOR              200
     324             :     #define PROPERTY_ID_TEXT_ANCHOR_TYPE            201
     325             :     #define PROPERTY_ID_SHEET_ANCHOR_TYPE           202
     326             :     #define PROPERTY_ID_SCROLL_WIDTH                203
     327             :     #define PROPERTY_ID_SCROLL_HEIGHT               204
     328             :     #define PROPERTY_ID_SCROLL_TOP                  205
     329             :     #define PROPERTY_ID_SCROLL_LEFT                 206
     330             : 
     331             : 
     332             : } // namespace pcr
     333             : 
     334             : 
     335             : #endif // INCLUDED_EXTENSIONS_SOURCE_PROPCTRLR_FORMMETADATA_HXX
     336             : 
     337             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11