LCOV - code coverage report
Current view: top level - reportdesign/source/ui/inspection - metadata.cxx (source / functions) Hit Total Coverage
Test: commit e02a6cb2c3e2b23b203b422e4e0680877f232636 Lines: 0 60 0.0 %
Date: 2014-04-14 Functions: 0 16 0.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             : #include "metadata.hxx"
      20             : #include <svtools/localresaccess.hxx>
      21             : #include "com/sun/star/inspection/XPropertyHandler.hpp"
      22             : #include <comphelper/extract.hxx>
      23             : #include "helpids.hrc"
      24             : #include "RptResId.hrc"
      25             : #include "uistrings.hrc"
      26             : 
      27             : #include <functional>
      28             : #include <algorithm>
      29             : 
      30             : 
      31             : namespace rptui
      32             : {
      33             : 
      34             : 
      35             :     using namespace ::com::sun::star::uno;
      36             :     using namespace ::com::sun::star;
      37             : 
      38             : 
      39             :     //= OPropertyInfoImpl
      40             : 
      41           0 :     struct OPropertyInfoImpl
      42             :     {
      43             :         OUString        sName;
      44             :         OUString        sTranslation;
      45             :         OString         sHelpId;
      46             :         sal_Int32       nId;
      47             :         sal_uInt32      nUIFlags;
      48             : 
      49             :         OPropertyInfoImpl(
      50             :                         const OUString&        rName,
      51             :                         sal_Int32              _nId,
      52             :                         const OUString&        aTranslation,
      53             :                         const OString&         _sHelpId,
      54             :                         sal_uInt32             _nUIFlags);
      55             :     };
      56             : 
      57             : 
      58           0 :     OPropertyInfoImpl::OPropertyInfoImpl(const OUString& _rName, sal_Int32 _nId,
      59             :                                    const OUString& aString, const OString& sHid, sal_uInt32 _nUIFlags)
      60             :        :sName(_rName)
      61             :        ,sTranslation(aString)
      62             :        ,sHelpId(sHid)
      63             :        ,nId(_nId)
      64           0 :        ,nUIFlags(_nUIFlags)
      65             :     {
      66           0 :     }
      67             : 
      68             : 
      69             :     // Vergleichen von PropertyInfo
      70             :     struct PropertyInfoLessByName : public ::std::binary_function< OPropertyInfoImpl, OPropertyInfoImpl, bool >
      71             :     {
      72           0 :         bool operator()( const OPropertyInfoImpl& _lhs, const OPropertyInfoImpl& _rhs )
      73             :         {
      74           0 :             return _lhs.sName < _rhs.sName;
      75             :         }
      76             :     };
      77             : 
      78             : 
      79             :     //= OPropertyInfoService
      80             : 
      81             : #define DEF_INFO( ident, uinameres, helpid, flags )   \
      82             :     OPropertyInfoImpl( PROPERTY_##ident, PROPERTY_ID_##ident, \
      83             :             OUString( ModuleRes( RID_STR_##uinameres ) ), HID_RPT_PROP_##helpid, flags )
      84             : 
      85             : #define DEF_INFO_1( ident, uinameres, helpid, flag1 ) \
      86             :     DEF_INFO( ident, uinameres, helpid, PROP_FLAG_##flag1 )
      87             : 
      88             : #define DEF_INFO_2( ident, uinameres, helpid, flag1, flag2 ) \
      89             :     DEF_INFO( ident, uinameres, helpid, PROP_FLAG_##flag1 | PROP_FLAG_##flag2 )
      90             : 
      91             :     sal_uInt16              OPropertyInfoService::s_nCount = 0;
      92             :     OPropertyInfoImpl*      OPropertyInfoService::s_pPropertyInfos = NULL;
      93             : 
      94           0 :     const OPropertyInfoImpl* OPropertyInfoService::getPropertyInfo()
      95             :     {
      96           0 :         if ( s_pPropertyInfos )
      97           0 :             return s_pPropertyInfos;
      98             : 
      99           0 :         OModuleClient aResourceAccess;
     100             :         // this ensures that we have our resource file loaded
     101             : 
     102             :         static OPropertyInfoImpl aPropertyInfos[] =
     103             :         {
     104             :         /*
     105             :         DEF_INFO_?( propname and id,   resoure id,         help id,           flags ),
     106             :         */
     107             :              DEF_INFO_1( FORCENEWPAGE,                  FORCENEWPAGE,               FORCENEWPAGE,               COMPOSEABLE )
     108             :             ,DEF_INFO_1( NEWROWORCOL,                   NEWROWORCOL,                NEWROWORCOL,                COMPOSEABLE )
     109             :             ,DEF_INFO_1( KEEPTOGETHER,                  KEEPTOGETHER,               KEEPTOGETHER,               COMPOSEABLE )
     110             :             ,DEF_INFO_1( CANGROW,                       CANGROW,                    CANGROW,                    COMPOSEABLE )
     111             :             ,DEF_INFO_1( CANSHRINK,                     CANSHRINK,                  CANSHRINK,                  COMPOSEABLE )
     112             :             ,DEF_INFO_1( REPEATSECTION,                 REPEATSECTION,              REPEATSECTION,              COMPOSEABLE )
     113             :             ,DEF_INFO_1( PRINTREPEATEDVALUES,           PRINTREPEATEDVALUES,        PRINTREPEATEDVALUES,        COMPOSEABLE )
     114             :             ,DEF_INFO_1( CONDITIONALPRINTEXPRESSION,    CONDITIONALPRINTEXPRESSION, CONDITIONALPRINTEXPRESSION, COMPOSEABLE )
     115             :             ,DEF_INFO_1( STARTNEWCOLUMN,                STARTNEWCOLUMN,             STARTNEWCOLUMN,             COMPOSEABLE )
     116             :             ,DEF_INFO_1( RESETPAGENUMBER,               RESETPAGENUMBER,            RESETPAGENUMBER,            COMPOSEABLE )
     117             :             ,DEF_INFO_1( PRINTWHENGROUPCHANGE,          PRINTWHENGROUPCHANGE,       PRINTWHENGROUPCHANGE,       COMPOSEABLE )
     118             :             ,DEF_INFO_1( VISIBLE,                       VISIBLE,                    VISIBLE,                    COMPOSEABLE )
     119             :             ,DEF_INFO_1( GROUPKEEPTOGETHER,             GROUPKEEPTOGETHER,          GROUPKEEPTOGETHER,          COMPOSEABLE )
     120             :             ,DEF_INFO_1( PAGEHEADEROPTION,              PAGEHEADEROPTION,           PAGEHEADEROPTION,           COMPOSEABLE )
     121             :             ,DEF_INFO_1( PAGEFOOTEROPTION,              PAGEFOOTEROPTION,           PAGEFOOTEROPTION,           COMPOSEABLE )
     122             :             ,DEF_INFO_1( POSITIONX,                     POSITIONX,                  RPT_POSITIONX,              COMPOSEABLE )
     123             :             ,DEF_INFO_1( POSITIONY,                     POSITIONY,                  RPT_POSITIONY,              COMPOSEABLE )
     124             :             ,DEF_INFO_1( WIDTH,                         WIDTH,                      RPT_WIDTH,                  COMPOSEABLE )
     125             :             ,DEF_INFO_1( HEIGHT,                        HEIGHT,                     RPT_HEIGHT,                 COMPOSEABLE )
     126             :             ,DEF_INFO_1( FONT,                          FONT,                       RPT_FONT,                   COMPOSEABLE )
     127             :             ,DEF_INFO_1( PREEVALUATED,                  PREEVALUATED,               PREEVALUATED,               COMPOSEABLE )
     128             :             ,DEF_INFO_1( DEEPTRAVERSING,                DEEPTRAVERSING,             DEEPTRAVERSING,             COMPOSEABLE )
     129             :             ,DEF_INFO_1( FORMULA,                       FORMULA,                    FORMULA,                    COMPOSEABLE )
     130             :             ,DEF_INFO_1( INITIALFORMULA,                INITIALFORMULA,             INITIALFORMULA,             COMPOSEABLE )
     131             :             ,DEF_INFO_2( TYPE,                          TYPE,                       TYPE,                       COMPOSEABLE,DATA_PROPERTY )
     132             :             ,DEF_INFO_2( DATAFIELD,                     DATAFIELD,                  DATAFIELD,                  COMPOSEABLE,DATA_PROPERTY )
     133             :             ,DEF_INFO_2( FORMULALIST,                   FORMULALIST,                FORMULALIST,                COMPOSEABLE,DATA_PROPERTY )
     134             :             ,DEF_INFO_2( SCOPE,                         SCOPE,                      SCOPE,                      COMPOSEABLE,DATA_PROPERTY )
     135             :             ,DEF_INFO_1( PRESERVEIRI,                   PRESERVEIRI,                PRESERVEIRI,                COMPOSEABLE )
     136             :             ,DEF_INFO_1( BACKCOLOR,                     BACKCOLOR,                  BACKCOLOR,                  COMPOSEABLE )
     137             :             ,DEF_INFO_1( CONTROLBACKGROUND,             BACKCOLOR,                  BACKCOLOR,                  COMPOSEABLE )
     138             :             ,DEF_INFO_1( BACKTRANSPARENT,               BACKTRANSPARENT,            BACKTRANSPARENT,            COMPOSEABLE )
     139             :             ,DEF_INFO_1( CONTROLBACKGROUNDTRANSPARENT,  CONTROLBACKGROUNDTRANSPARENT
     140             :                                                                     ,CONTROLBACKGROUNDTRANSPARENT, COMPOSEABLE )
     141             :             ,DEF_INFO_1( CHARTTYPE,                     CHARTTYPE,                  CHARTTYPE,                  COMPOSEABLE )
     142             :             ,DEF_INFO_1( PREVIEW_COUNT,                 PREVIEW_COUNT,              PREVIEW_COUNT,              COMPOSEABLE )
     143             :             ,DEF_INFO_2( MASTERFIELDS,                  MASTERFIELDS,               MASTERFIELDS,               COMPOSEABLE,DATA_PROPERTY )
     144             :             ,DEF_INFO_2( DETAILFIELDS,                  DETAILFIELDS,               DETAILFIELDS,               COMPOSEABLE,DATA_PROPERTY)
     145             :             ,DEF_INFO_1( AREA,                          AREA,                       AREA,                       COMPOSEABLE )
     146             :             ,DEF_INFO_2( MIMETYPE,                      MIMETYPE,                   MIMETYPE,                   COMPOSEABLE,DATA_PROPERTY )
     147             :             ,DEF_INFO_1( PARAADJUST,                    PARAADJUST,                 PARAADJUST,                 COMPOSEABLE )
     148             :             ,DEF_INFO_1( VERTICALALIGN,                 VERTICALALIGN,              VERTICALALIGN,              COMPOSEABLE )
     149           0 :         };
     150             : 
     151           0 :         s_pPropertyInfos = aPropertyInfos;
     152           0 :         s_nCount = SAL_N_ELEMENTS(aPropertyInfos);
     153           0 :         ::std::sort( aPropertyInfos, aPropertyInfos + SAL_N_ELEMENTS(aPropertyInfos), PropertyInfoLessByName() );
     154             : 
     155           0 :         return s_pPropertyInfos;
     156             :     }
     157             : 
     158             : 
     159           0 :     sal_Int32 OPropertyInfoService::getPropertyId(const OUString& _rName) const
     160             :     {
     161           0 :         const OPropertyInfoImpl* pInfo = getPropertyInfo(_rName);
     162           0 :         return pInfo ? pInfo->nId : -1;
     163             :     }
     164             : 
     165             : 
     166           0 :     OUString OPropertyInfoService::getPropertyTranslation(sal_Int32 _nId) const
     167             :     {
     168           0 :         const OPropertyInfoImpl* pInfo = getPropertyInfo(_nId);
     169           0 :         return (pInfo) ? pInfo->sTranslation : OUString();
     170             :     }
     171             : 
     172             : 
     173           0 :     OString OPropertyInfoService::getPropertyHelpId(sal_Int32 _nId) const
     174             :     {
     175           0 :         const OPropertyInfoImpl* pInfo = getPropertyInfo(_nId);
     176           0 :         return (pInfo) ? pInfo->sHelpId : OString();
     177             :     }
     178             : 
     179             : 
     180           0 :     sal_uInt32 OPropertyInfoService::getPropertyUIFlags(sal_Int32 _nId) const
     181             :     {
     182           0 :         const OPropertyInfoImpl* pInfo = getPropertyInfo(_nId);
     183           0 :         return (pInfo) ? pInfo->nUIFlags : 0;
     184             :     }
     185             : 
     186             : 
     187           0 :     const OPropertyInfoImpl* OPropertyInfoService::getPropertyInfo(const OUString& _rName)
     188             :     {
     189             :         // intialisierung
     190           0 :         if(!s_pPropertyInfos)
     191           0 :             getPropertyInfo();
     192           0 :         OPropertyInfoImpl  aSearch(_rName, 0L, OUString(), "", 0);
     193             : 
     194             :         const OPropertyInfoImpl* pPropInfo = ::std::lower_bound(
     195           0 :             s_pPropertyInfos, s_pPropertyInfos + s_nCount, aSearch, PropertyInfoLessByName() );
     196             : 
     197           0 :         if ( ( pPropInfo < s_pPropertyInfos + s_nCount ) && pPropInfo->sName == _rName )
     198           0 :             return pPropInfo;
     199             : 
     200           0 :         return NULL;
     201             :     }
     202             : 
     203             : 
     204             : 
     205           0 :     const OPropertyInfoImpl* OPropertyInfoService::getPropertyInfo(sal_Int32 _nId)
     206             :     {
     207             :         // intialisierung
     208           0 :         if(!s_pPropertyInfos)
     209           0 :             getPropertyInfo();
     210             : 
     211             :         // TODO: a real structure which allows quick access by name as well as by id
     212           0 :         for (sal_uInt16 i = 0; i < s_nCount; i++)
     213           0 :             if (s_pPropertyInfos[i].nId == _nId)
     214           0 :                 return &s_pPropertyInfos[i];
     215             : 
     216           0 :         return NULL;
     217             :     }
     218             : 
     219             : 
     220           0 :     bool OPropertyInfoService::isComposable( const OUString& _rPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::inspection::XPropertyHandler >& _rxFormComponentHandler )
     221             :     {
     222           0 :         sal_Int32 nId = getPropertyId( _rPropertyName );
     223           0 :         if ( nId != -1 )
     224             :         {
     225           0 :             sal_uInt32 nFlags = getPropertyUIFlags( nId );
     226           0 :             return ( nFlags & PROP_FLAG_COMPOSEABLE ) != 0;
     227             :         }
     228             : 
     229           0 :         return _rxFormComponentHandler->isComposable( _rPropertyName );
     230             :     }
     231             : 
     232             : 
     233           0 :     void OPropertyInfoService::getExcludeProperties(::std::vector< beans::Property >& _rExcludeProperties,const ::com::sun::star::uno::Reference< ::com::sun::star::inspection::XPropertyHandler >& _xFormComponentHandler)
     234             :     {
     235           0 :         uno::Sequence< beans::Property > aProps = _xFormComponentHandler->getSupportedProperties();
     236             :         static const OUString pExcludeProperties[] =
     237             :         {
     238             :                 OUString("Enabled"),
     239             :                 OUString("Printable"),
     240             :                 OUString("WordBreak"),
     241             :                 OUString("MultiLine"),
     242             :                 OUString("Tag"),
     243             :                 OUString("HelpText"),
     244             :                 OUString("HelpURL"),
     245             :                 OUString("MaxTextLen"),
     246             :                 OUString("ReadOnly"),
     247             :                 OUString("Tabstop"),
     248             :                 OUString("TabIndex"),
     249             :                 OUString("ValueMin"),
     250             :                 OUString("ValueMax"),
     251             :                 OUString("Spin"),
     252             :                 OUString("SpinValue"),
     253             :                 OUString("SpinValueMin"),
     254             :                 OUString("SpinValueMax"),
     255             :                 OUString("DefaultSpinValue"),
     256             :                 OUString("SpinIncrement"),
     257             :                 OUString("Repeat"),
     258             :                 OUString("RepeatDelay"),
     259             :                 OUString("ControlLabel"), /// TODO: has to be checked
     260             :                 OUString("LabelControl"),
     261             :                 OUString("Title"), // comment this out if you want to have title feature for charts
     262             :                 OUString(PROPERTY_MAXTEXTLEN),
     263             :                 OUString(PROPERTY_EFFECTIVEDEFAULT),
     264             :                 OUString(PROPERTY_EFFECTIVEMAX),
     265             :                 OUString(PROPERTY_EFFECTIVEMIN),
     266             :                 OUString("HideInactiveSelection"),
     267             :                 OUString("SubmitAction"),
     268             :                 OUString("InputRequired"),
     269             :                 OUString("VerticalAlign"),
     270             :                 OUString(PROPERTY_ALIGN),
     271             :                 OUString(PROPERTY_EMPTY_IS_NULL),
     272             :                 OUString(PROPERTY_FILTERPROPOSAL)
     273             :                 ,OUString(PROPERTY_POSITIONX)
     274             :                 ,OUString(PROPERTY_POSITIONY)
     275             :                 ,OUString(PROPERTY_WIDTH)
     276             :                 ,OUString(PROPERTY_HEIGHT)
     277             :                 ,OUString(PROPERTY_FONT)
     278             :                 ,OUString(PROPERTY_LABEL)
     279             :                 ,OUString(PROPERTY_LINECOLOR)
     280             :                 ,OUString(PROPERTY_BORDER)
     281             :                 ,OUString(PROPERTY_BORDERCOLOR)
     282             :                 ,OUString(PROPERTY_BACKTRANSPARENT)
     283             :                 ,OUString(PROPERTY_CONTROLBACKGROUND)
     284             :                 ,OUString(PROPERTY_BACKGROUNDCOLOR)
     285             :                 ,OUString(PROPERTY_CONTROLBACKGROUNDTRANSPARENT)
     286             :                 ,OUString(PROPERTY_FORMULALIST)
     287             :                 ,OUString(PROPERTY_SCOPE)
     288             :                 ,OUString(PROPERTY_TYPE)
     289             :                 ,OUString(PROPERTY_DATASOURCENAME)
     290             :                 ,OUString(PROPERTY_VERTICALALIGN)
     291           0 :         };
     292             : 
     293           0 :         beans::Property* pPropsIter = aProps.getArray();
     294           0 :         beans::Property* pPropsEnd = pPropsIter + aProps.getLength();
     295           0 :         for (; pPropsIter != pPropsEnd; ++pPropsIter)
     296             :         {
     297           0 :             size_t nPos = 0;
     298           0 :             for (; nPos < sizeof(pExcludeProperties)/sizeof(pExcludeProperties[0]) && pExcludeProperties[nPos] != pPropsIter->Name;++nPos )
     299             :                 ;
     300           0 :             if ( nPos == sizeof(pExcludeProperties)/sizeof(pExcludeProperties[0]) )
     301           0 :                 _rExcludeProperties.push_back(*pPropsIter);
     302           0 :         }
     303           0 :     }
     304             : 
     305             : 
     306             : 
     307             : } // namespace pcr
     308             : 
     309             : 
     310             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10