LCOV - code coverage report
Current view: top level - forms/source/solar/component - navbarcontrol.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 161 224 71.9 %
Date: 2014-11-03 Functions: 26 38 68.4 %
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             : 
      21             : #include "navbarcontrol.hxx"
      22             : #include "frm_strings.hxx"
      23             : #include "frm_module.hxx"
      24             : #include "FormComponent.hxx"
      25             : #include "componenttools.hxx"
      26             : #include "navtoolbar.hxx"
      27             : #include "commandimageprovider.hxx"
      28             : #include "commanddescriptionprovider.hxx"
      29             : 
      30             : #include <com/sun/star/awt/XView.hpp>
      31             : #include <com/sun/star/awt/PosSize.hpp>
      32             : #include <com/sun/star/form/runtime/FormFeature.hpp>
      33             : #include <com/sun/star/awt/XControlModel.hpp>
      34             : #include <com/sun/star/graphic/XGraphic.hpp>
      35             : 
      36             : #include <comphelper/processfactory.hxx>
      37             : #include <tools/debug.hxx>
      38             : #include <tools/diagnose_ex.h>
      39             : #include <vcl/svapp.hxx>
      40             : #include <vcl/settings.hxx>
      41             : 
      42             : 
      43          40 : extern "C" void SAL_CALL createRegistryInfo_ONavigationBarControl()
      44             : {
      45          40 :     static ::frm::OMultiInstanceAutoRegistration< ::frm::ONavigationBarControl > aAutoRegistration;
      46          40 : }
      47             : 
      48             : 
      49             : namespace frm
      50             : {
      51             : 
      52             : 
      53             :     using namespace ::com::sun::star::uno;
      54             :     using namespace ::com::sun::star::beans;
      55             :     using namespace ::com::sun::star::awt;
      56             :     using namespace ::com::sun::star::lang;
      57             :     using namespace ::com::sun::star::frame;
      58             :     using namespace ::com::sun::star::graphic;
      59             :     namespace FormFeature = ::com::sun::star::form::runtime::FormFeature;
      60             : 
      61             : #define FORWARD_TO_PEER_1( unoInterface, method, param1 )   \
      62             :     Reference< unoInterface > xTypedPeer( getPeer(), UNO_QUERY );   \
      63             :     if ( xTypedPeer.is() )  \
      64             :     {   \
      65             :         xTypedPeer->method( param1 );  \
      66             :     }
      67             : 
      68          18 :     ONavigationBarControl::ONavigationBarControl( const Reference< XComponentContext >& _rxORB)
      69          18 :         :UnoControl(), m_xContext(_rxORB)
      70             :     {
      71          18 :     }
      72             : 
      73             : 
      74          36 :     ONavigationBarControl::~ONavigationBarControl()
      75             :     {
      76          36 :     }
      77             : 
      78             : 
      79           0 :     IMPLEMENT_FORWARD_XTYPEPROVIDER2( ONavigationBarControl, UnoControl, ONavigationBarControl_Base )
      80             : 
      81             : 
      82        1070 :     Any SAL_CALL ONavigationBarControl::queryAggregation( const Type& _rType ) throw ( RuntimeException, std::exception )
      83             :     {
      84        1070 :         Any aReturn = UnoControl::queryAggregation( _rType );
      85             : 
      86        1070 :         if ( !aReturn.hasValue() )
      87          18 :             aReturn = ONavigationBarControl_Base::queryInterface( _rType );
      88             : 
      89        1070 :         return aReturn;
      90             :     }
      91             : 
      92             : 
      93             :     namespace
      94             :     {
      95             : 
      96          36 :         static WinBits lcl_getWinBits_nothrow( const Reference< XControlModel >& _rxModel )
      97             :         {
      98          36 :             WinBits nBits = 0;
      99             :             try
     100             :             {
     101          36 :                 Reference< XPropertySet > xProps( _rxModel, UNO_QUERY );
     102          36 :                 if ( xProps.is() )
     103             :                 {
     104          36 :                     sal_Int16 nBorder = 0;
     105          36 :                     xProps->getPropertyValue( PROPERTY_BORDER ) >>= nBorder;
     106          36 :                     if ( nBorder )
     107          18 :                         nBits |= WB_BORDER;
     108             : 
     109          36 :                     bool bTabStop = false;
     110          36 :                     if ( xProps->getPropertyValue( PROPERTY_TABSTOP ) >>= bTabStop )
     111           0 :                         nBits |= ( bTabStop ? WB_TABSTOP : WB_NOTABSTOP );
     112          36 :                 }
     113             :             }
     114           0 :             catch( const Exception& )
     115             :             {
     116             :                 DBG_UNHANDLED_EXCEPTION();
     117             :             }
     118          36 :             return nBits;
     119             :         }
     120             :     }
     121             : 
     122             : 
     123          38 :     void SAL_CALL ONavigationBarControl::createPeer( const Reference< XToolkit >& /*_rToolkit*/, const Reference< XWindowPeer >& _rParentPeer ) throw( RuntimeException, std::exception )
     124             :     {
     125          38 :         SolarMutexGuard aGuard;
     126             : 
     127          38 :         if (!getPeer().is())
     128             :         {
     129          36 :             mbCreatingPeer = true;
     130             : 
     131             :             // determine the VLC window for the parent
     132          36 :             vcl::Window* pParentWin = NULL;
     133          36 :             if ( _rParentPeer.is() )
     134             :             {
     135          36 :                 VCLXWindow* pParentXWin = VCLXWindow::GetImplementation( _rParentPeer );
     136          36 :                 if ( pParentXWin )
     137          36 :                     pParentWin = pParentXWin->GetWindow();
     138             :                 DBG_ASSERT( pParentWin, "ONavigationBarControl::createPeer: could not obtain the VCL-level parent window!" );
     139             :             }
     140             : 
     141             :             // create the peer
     142          36 :             ONavigationBarPeer* pPeer = ONavigationBarPeer::Create( m_xContext, pParentWin, getModel() );
     143             :             DBG_ASSERT( pPeer, "ONavigationBarControl::createPeer: invalid peer returned!" );
     144          36 :             if ( pPeer )
     145             :                 // by definition, the returned component is acquired once
     146          36 :                 pPeer->release();
     147             : 
     148             :             // announce the peer to the base class
     149          36 :             setPeer( pPeer );
     150             : 
     151             :             // initialize ourself (and thus the peer) with the model properties
     152          36 :             updateFromModel();
     153             : 
     154          36 :             Reference< XView >  xPeerView( getPeer(), UNO_QUERY );
     155          36 :             if ( xPeerView.is() )
     156             :             {
     157          36 :                 xPeerView->setZoom( maComponentInfos.nZoomX, maComponentInfos.nZoomY );
     158          36 :                 xPeerView->setGraphics( mxGraphics );
     159             :             }
     160             : 
     161             :             // a lot of initial settings from our component infos
     162          36 :             setPosSize( maComponentInfos.nX, maComponentInfos.nY, maComponentInfos.nWidth, maComponentInfos.nHeight, PosSize::POSSIZE );
     163             : 
     164          36 :             pPeer->setVisible   ( maComponentInfos.bVisible && !mbDesignMode );
     165          36 :             pPeer->setEnable    ( maComponentInfos.bEnable                   );
     166          36 :             pPeer->setDesignMode( mbDesignMode                               );
     167             : 
     168          36 :             peerCreated();
     169             : 
     170          36 :             mbCreatingPeer = false;
     171             : 
     172          36 :             OControl::initFormControlPeer( getPeer() );
     173          38 :         }
     174          38 :     }
     175             : 
     176             : 
     177           0 :     OUString SAL_CALL ONavigationBarControl::getImplementationName()  throw( RuntimeException, std::exception )
     178             :     {
     179           0 :         return getImplementationName_Static();
     180             :     }
     181             : 
     182             : 
     183           0 :     Sequence< OUString > SAL_CALL ONavigationBarControl::getSupportedServiceNames()  throw( RuntimeException, std::exception )
     184             :     {
     185           0 :         return getSupportedServiceNames_Static();
     186             :     }
     187             : 
     188             : 
     189          80 :     OUString SAL_CALL ONavigationBarControl::getImplementationName_Static()
     190             :     {
     191          80 :         return OUString( "com.sun.star.comp.form.ONavigationBarControl" );
     192             :     }
     193             : 
     194             : 
     195          40 :     Sequence< OUString > SAL_CALL ONavigationBarControl::getSupportedServiceNames_Static()
     196             :     {
     197          40 :         Sequence< OUString > aServices( 2 );
     198          40 :         aServices[ 0 ] = "com.sun.star.awt.UnoControl";
     199          40 :         aServices[ 1 ] = "com.sun.star.form.control.NavigationToolBar";
     200          40 :         return aServices;
     201             :     }
     202             : 
     203             : 
     204          18 :     Reference< XInterface > SAL_CALL ONavigationBarControl::Create( const Reference< XMultiServiceFactory >& _rxFactory )
     205             :     {
     206          18 :         return *( new ONavigationBarControl( comphelper::getComponentContext(_rxFactory) ) );
     207             :     }
     208             : 
     209             : 
     210           0 :     void SAL_CALL ONavigationBarControl::registerDispatchProviderInterceptor( const Reference< XDispatchProviderInterceptor >& _rxInterceptor ) throw (RuntimeException, std::exception)
     211             :     {
     212           0 :         FORWARD_TO_PEER_1( XDispatchProviderInterception, registerDispatchProviderInterceptor, _rxInterceptor );
     213           0 :     }
     214             : 
     215             : 
     216           0 :     void SAL_CALL ONavigationBarControl::releaseDispatchProviderInterceptor( const Reference< XDispatchProviderInterceptor >& _rxInterceptor ) throw (RuntimeException, std::exception)
     217             :     {
     218           0 :         FORWARD_TO_PEER_1( XDispatchProviderInterception, releaseDispatchProviderInterceptor, _rxInterceptor );
     219           0 :     }
     220             : 
     221             : 
     222          22 :     void SAL_CALL ONavigationBarControl::setDesignMode( sal_Bool _bOn ) throw( RuntimeException, std::exception )
     223             :     {
     224          22 :         UnoControl::setDesignMode( _bOn );
     225          22 :         FORWARD_TO_PEER_1( XVclWindowPeer, setDesignMode, _bOn );
     226          22 :     }
     227             : 
     228             : 
     229             :     // ONavigationBarPeer
     230             : 
     231             : 
     232          36 :     ONavigationBarPeer* ONavigationBarPeer::Create( const Reference< XComponentContext >& _rxORB,
     233             :         vcl::Window* _pParentWindow, const Reference< XControlModel >& _rxModel )
     234             :     {
     235             :         DBG_TESTSOLARMUTEX();
     236             : 
     237             :         // the peer itself
     238          36 :         ONavigationBarPeer* pPeer = new ONavigationBarPeer( _rxORB );
     239          36 :         pPeer->acquire();   // by definition, the returned object is acquired once
     240             : 
     241             :         // the VCL control for the peer
     242          36 :         Reference< XModel > xContextDocument( getXModel( _rxModel ) );
     243             :         NavigationToolBar* pNavBar = new NavigationToolBar(
     244             :             _pParentWindow,
     245             :             lcl_getWinBits_nothrow( _rxModel ),
     246             :             createDocumentCommandImageProvider( _rxORB, xContextDocument ),
     247             :             createDocumentCommandDescriptionProvider( _rxORB, xContextDocument )
     248          36 :         );
     249             : 
     250             :         // some knittings
     251          36 :         pNavBar->setDispatcher( pPeer );
     252          36 :         pNavBar->SetComponentInterface( pPeer );
     253             : 
     254             :         // we want a faster repeating rate for the slots in this
     255             :         // toolbox
     256          72 :         AllSettings aSettings = pNavBar->GetSettings();
     257          72 :         MouseSettings aMouseSettings = aSettings.GetMouseSettings();
     258          36 :         aMouseSettings.SetButtonRepeat( 10 );
     259          36 :         aSettings.SetMouseSettings( aMouseSettings );
     260          36 :         pNavBar->SetSettings( aSettings, true );
     261             : 
     262             :         // outta here
     263          72 :         return pPeer;
     264             :     }
     265             : 
     266             : 
     267          36 :     ONavigationBarPeer::ONavigationBarPeer( const Reference< XComponentContext >& _rxORB )
     268          36 :         :OFormNavigationHelper( _rxORB )
     269             :     {
     270          36 :     }
     271             : 
     272             : 
     273          72 :     ONavigationBarPeer::~ONavigationBarPeer()
     274             :     {
     275          72 :     }
     276             : 
     277             : 
     278       31568 :     IMPLEMENT_FORWARD_XINTERFACE2( ONavigationBarPeer, VCLXWindow, OFormNavigationHelper )
     279             : 
     280             : 
     281           0 :     IMPLEMENT_FORWARD_XTYPEPROVIDER2( ONavigationBarPeer, VCLXWindow, OFormNavigationHelper )
     282             : 
     283             : 
     284          72 :     void SAL_CALL ONavigationBarPeer::dispose(  ) throw( RuntimeException, std::exception )
     285             :     {
     286          72 :         VCLXWindow::dispose();
     287          72 :         OFormNavigationHelper::dispose();
     288          72 :     }
     289             : 
     290             : 
     291        2002 :     void SAL_CALL ONavigationBarPeer::setProperty( const OUString& _rPropertyName, const Any& _rValue ) throw( RuntimeException, std::exception )
     292             :     {
     293        2002 :         SolarMutexGuard aGuard;
     294             : 
     295        2002 :         NavigationToolBar* pNavBar = static_cast< NavigationToolBar* >( GetWindow() );
     296        2002 :         if ( !pNavBar )
     297             :         {
     298           0 :             VCLXWindow::setProperty( _rPropertyName, _rValue );
     299        2002 :             return;
     300             :         }
     301             : 
     302        2002 :         bool bVoid = !_rValue.hasValue();
     303             : 
     304        2002 :         bool  bBoolValue = false;
     305        2002 :         sal_Int32 nColor = COL_TRANSPARENT;
     306             : 
     307             :         // TODO: more generic mechanisms for this (the grid control implementation,
     308             :         // when used herein, will do the same stuff for lot of these)
     309             : 
     310        2002 :         if ( _rPropertyName.equals( PROPERTY_BACKGROUNDCOLOR ) )
     311             :         {
     312          36 :             Wallpaper aTest = pNavBar->GetBackground();
     313          36 :             if ( bVoid )
     314             :             {
     315          36 :                 pNavBar->SetBackground( pNavBar->GetSettings().GetStyleSettings().GetFaceColor() );
     316          36 :                 pNavBar->SetControlBackground();
     317             :             }
     318             :             else
     319             :             {
     320           0 :                 OSL_VERIFY( _rValue >>= nColor );
     321           0 :                 Color aColor( nColor );
     322           0 :                 pNavBar->SetBackground( aColor );
     323           0 :                 pNavBar->SetControlBackground( aColor );
     324          36 :             }
     325             :         }
     326        1966 :         else if ( _rPropertyName.equals( PROPERTY_TEXTLINECOLOR ) )
     327             :         {
     328          36 :             if ( bVoid )
     329             :             {
     330          36 :                 pNavBar->SetTextLineColor();
     331             :             }
     332             :             else
     333             :             {
     334           0 :                 OSL_VERIFY( _rValue >>= nColor );
     335           0 :                 pNavBar->SetTextLineColor( nColor );
     336             :             }
     337             :         }
     338        1930 :         else if ( _rPropertyName.equals( PROPERTY_ICONSIZE ) )
     339             :         {
     340          52 :             sal_Int16 nInt16Value = 0;
     341          52 :             OSL_VERIFY( _rValue >>= nInt16Value );
     342          52 :             pNavBar->SetImageSize( nInt16Value ? NavigationToolBar::eLarge : NavigationToolBar::eSmall );
     343             :         }
     344        1878 :         else if ( _rPropertyName.equals( PROPERTY_SHOW_POSITION ) )
     345             :         {
     346          52 :             OSL_VERIFY( _rValue >>= bBoolValue );
     347          52 :             pNavBar->ShowFunctionGroup( NavigationToolBar::ePosition, bBoolValue );
     348             :         }
     349        1826 :         else if ( _rPropertyName.equals( PROPERTY_SHOW_NAVIGATION ) )
     350             :         {
     351          52 :             OSL_VERIFY( _rValue >>= bBoolValue );
     352          52 :             pNavBar->ShowFunctionGroup( NavigationToolBar::eNavigation, bBoolValue );
     353             :         }
     354        1774 :         else if ( _rPropertyName.equals( PROPERTY_SHOW_RECORDACTIONS ) )
     355             :         {
     356          52 :             OSL_VERIFY( _rValue >>= bBoolValue );
     357          52 :             pNavBar->ShowFunctionGroup( NavigationToolBar::eRecordActions, bBoolValue );
     358             :         }
     359        1722 :         else if ( _rPropertyName.equals( PROPERTY_SHOW_FILTERSORT ) )
     360             :         {
     361          52 :             OSL_VERIFY( _rValue >>= bBoolValue );
     362          52 :             pNavBar->ShowFunctionGroup( NavigationToolBar::eFilterSort, bBoolValue );
     363             :         }
     364             :         else
     365             :         {
     366        1670 :             VCLXWindow::setProperty( _rPropertyName, _rValue );
     367        2002 :         }
     368             :     }
     369             : 
     370             : 
     371           0 :     Any SAL_CALL ONavigationBarPeer::getProperty( const OUString& _rPropertyName ) throw( RuntimeException, std::exception )
     372             :     {
     373           0 :         SolarMutexGuard aGuard;
     374             : 
     375           0 :         Any aReturn;
     376           0 :         NavigationToolBar* pNavBar = static_cast< NavigationToolBar* >( GetWindow() );
     377             : 
     378           0 :         if ( _rPropertyName.equals( PROPERTY_BACKGROUNDCOLOR ) )
     379             :         {
     380           0 :             aReturn <<= (sal_Int32)pNavBar->GetControlBackground().GetColor();
     381             :         }
     382           0 :         else if ( _rPropertyName.equals( PROPERTY_TEXTLINECOLOR ) )
     383             :         {
     384           0 :             aReturn <<= (sal_Int32)pNavBar->GetTextLineColor().GetColor();
     385             :         }
     386           0 :         else if ( _rPropertyName.equals( PROPERTY_ICONSIZE ) )
     387             :         {
     388           0 :             sal_Int16 nIconType = ( NavigationToolBar::eLarge == pNavBar->GetImageSize() )
     389           0 :                                 ? 1 : 0;
     390           0 :             aReturn <<= nIconType;
     391             :         }
     392           0 :         else if ( _rPropertyName.equals( PROPERTY_SHOW_POSITION ) )
     393             :         {
     394           0 :             aReturn <<= pNavBar->IsFunctionGroupVisible( NavigationToolBar::ePosition );
     395             :         }
     396           0 :         else if ( _rPropertyName.equals( PROPERTY_SHOW_NAVIGATION ) )
     397             :         {
     398           0 :             aReturn <<= pNavBar->IsFunctionGroupVisible( NavigationToolBar::eNavigation );
     399             :         }
     400           0 :         else if ( _rPropertyName.equals( PROPERTY_SHOW_RECORDACTIONS ) )
     401             :         {
     402           0 :             aReturn <<= pNavBar->IsFunctionGroupVisible( NavigationToolBar::eRecordActions );
     403             :         }
     404           0 :         else if ( _rPropertyName.equals( PROPERTY_SHOW_FILTERSORT ) )
     405             :         {
     406           0 :             aReturn <<= pNavBar->IsFunctionGroupVisible( NavigationToolBar::eFilterSort );
     407             :         }
     408             :         else
     409           0 :             aReturn = VCLXWindow::getProperty( _rPropertyName );
     410             : 
     411           0 :         return aReturn;
     412             :     }
     413             : 
     414             : 
     415           0 :     void ONavigationBarPeer::interceptorsChanged( )
     416             :     {
     417           0 :         if ( isDesignMode() )
     418             :             // not interested in if we're in design mode
     419           0 :             return;
     420             : 
     421           0 :         OFormNavigationHelper::interceptorsChanged();
     422             :     }
     423             : 
     424             : 
     425           0 :     void ONavigationBarPeer::featureStateChanged( sal_Int16 _nFeatureId, bool _bEnabled )
     426             :     {
     427             :         // enable this button on the toolbox
     428           0 :         NavigationToolBar* pNavBar = static_cast< NavigationToolBar* >( GetWindow() );
     429           0 :         if ( pNavBar )
     430             :         {
     431           0 :             pNavBar->enableFeature( _nFeatureId, _bEnabled );
     432             : 
     433             :             // is it a feature with additional state information?
     434           0 :             if ( _nFeatureId == FormFeature::ToggleApplyFilter )
     435             :             {   // additional boolean state
     436           0 :                 pNavBar->checkFeature( _nFeatureId, getBooleanState( _nFeatureId ) );
     437             :             }
     438           0 :             else if ( _nFeatureId == FormFeature::TotalRecords )
     439             :             {
     440           0 :                 pNavBar->setFeatureText( _nFeatureId, getStringState( _nFeatureId ) );
     441             :             }
     442           0 :             else if ( _nFeatureId == FormFeature::MoveAbsolute )
     443             :             {
     444           0 :                 pNavBar->setFeatureText( _nFeatureId, OUString::number(getIntegerState(_nFeatureId)) );
     445             :             }
     446             :         }
     447             : 
     448             :         // base class
     449           0 :         OFormNavigationHelper::featureStateChanged( _nFeatureId, _bEnabled );
     450           0 :     }
     451             : 
     452             : 
     453         306 :     void ONavigationBarPeer::allFeatureStatesChanged( )
     454             :     {
     455             :         // force the control to update it's states
     456         306 :         NavigationToolBar* pNavBar = static_cast< NavigationToolBar* >( GetWindow() );
     457         306 :         if ( pNavBar )
     458         234 :             pNavBar->setDispatcher( this );
     459             : 
     460             :         // base class
     461         306 :         OFormNavigationHelper::allFeatureStatesChanged( );
     462         306 :     }
     463             : 
     464             : 
     465        5670 :     bool ONavigationBarPeer::isEnabled( sal_Int16 _nFeatureId ) const
     466             :     {
     467        5670 :         if ( const_cast< ONavigationBarPeer* >( this )->isDesignMode() )
     468        4872 :            return false;
     469             : 
     470         798 :         return OFormNavigationHelper::isEnabled( _nFeatureId );
     471             :     }
     472             : 
     473             : 
     474         234 :     void SAL_CALL ONavigationBarPeer::setDesignMode( sal_Bool _bOn ) throw( RuntimeException, std::exception )
     475             :     {
     476         234 :         VCLXWindow::setDesignMode( _bOn  );
     477             : 
     478         234 :         if ( _bOn )
     479         232 :             disconnectDispatchers();
     480             :         else
     481           2 :             connectDispatchers();
     482             :             // this will connect if not already connected and just update else
     483         234 :     }
     484             : 
     485             : 
     486           0 :     void SAL_CALL ONavigationBarPeer::disposing( const EventObject& _rSource ) throw (RuntimeException, std::exception)
     487             :     {
     488           0 :         VCLXWindow::disposing( _rSource );
     489           0 :         OFormNavigationHelper::disposing( _rSource );
     490           0 :     }
     491             : 
     492             : 
     493           2 :     void ONavigationBarPeer::getSupportedFeatures( ::std::vector< sal_Int16 >& _rFeatureIds )
     494             :     {
     495           2 :         _rFeatureIds.push_back( FormFeature::MoveAbsolute );
     496           2 :         _rFeatureIds.push_back( FormFeature::TotalRecords );
     497           2 :         _rFeatureIds.push_back( FormFeature::MoveToFirst );
     498           2 :         _rFeatureIds.push_back( FormFeature::MoveToPrevious );
     499           2 :         _rFeatureIds.push_back( FormFeature::MoveToNext );
     500           2 :         _rFeatureIds.push_back( FormFeature::MoveToLast );
     501           2 :         _rFeatureIds.push_back( FormFeature::SaveRecordChanges );
     502           2 :         _rFeatureIds.push_back( FormFeature::UndoRecordChanges );
     503           2 :         _rFeatureIds.push_back( FormFeature::MoveToInsertRow );
     504           2 :         _rFeatureIds.push_back( FormFeature::DeleteRecord );
     505           2 :         _rFeatureIds.push_back( FormFeature::ReloadForm );
     506           2 :         _rFeatureIds.push_back( FormFeature::RefreshCurrentControl );
     507           2 :         _rFeatureIds.push_back( FormFeature::SortAscending );
     508           2 :         _rFeatureIds.push_back( FormFeature::SortDescending );
     509           2 :         _rFeatureIds.push_back( FormFeature::InteractiveSort );
     510           2 :         _rFeatureIds.push_back( FormFeature::AutoFilter );
     511           2 :         _rFeatureIds.push_back( FormFeature::InteractiveFilter );
     512           2 :         _rFeatureIds.push_back( FormFeature::ToggleApplyFilter );
     513           2 :         _rFeatureIds.push_back( FormFeature::RemoveFilterAndSort );
     514           2 :     }
     515             : 
     516             : 
     517         192 : }   // namespace frm
     518             : 
     519             : 
     520             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10