diff options
Diffstat (limited to 'accessibility/source/helper/acc_factory.cxx')
-rw-r--r-- | accessibility/source/helper/acc_factory.cxx | 91 |
1 files changed, 78 insertions, 13 deletions
diff --git a/accessibility/source/helper/acc_factory.cxx b/accessibility/source/helper/acc_factory.cxx index a4648485c2dc..25622d1c7c22 100644 --- a/accessibility/source/helper/acc_factory.cxx +++ b/accessibility/source/helper/acc_factory.cxx @@ -17,11 +17,14 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <config_features.h> #include <config_feature_desktop.h> +#include <cppuhelper/supportsservice.hxx> #include <toolkit/awt/vclxwindows.hxx> #include <toolkit/helper/accessiblefactory.hxx> #include <vcl/accessiblefactory.hxx> +#include <standard/svtaccessiblenumericfield.hxx> #include <standard/vclxaccessiblebutton.hxx> #include <standard/vclxaccessiblecheckbox.hxx> #include <standard/vclxaccessibledropdowncombobox.hxx> @@ -44,6 +47,7 @@ #include <extended/accessibletablistbox.hxx> #include <extended/AccessibleBrowseBox.hxx> #include <extended/accessibleiconchoicectrl.hxx> +#include <extended/AccessibleIconView.hxx> #include <extended/accessibletabbar.hxx> #include <extended/accessiblelistbox.hxx> #include <extended/AccessibleBrowseBoxHeaderBar.hxx> @@ -100,12 +104,16 @@ public: virtual css::uno::Reference< css::accessibility::XAccessibleContext > createAccessibleContext( VCLXEdit* _pXWindow ) override; virtual css::uno::Reference< css::accessibility::XAccessibleContext > + createAccessibleContext( VCLXMultiLineEdit* _pXWindow ) override; + virtual css::uno::Reference< css::accessibility::XAccessibleContext > createAccessibleContext( VCLXComboBox* _pXWindow ) override; virtual css::uno::Reference< css::accessibility::XAccessibleContext > createAccessibleContext( VCLXToolBox* _pXWindow ) override; virtual css::uno::Reference< css::accessibility::XAccessibleContext > createAccessibleContext( VCLXHeaderBar* _pXWindow ) override; virtual css::uno::Reference< css::accessibility::XAccessibleContext > + createAccessibleContext( SVTXNumericField* _pXWindow ) override; + virtual css::uno::Reference< css::accessibility::XAccessibleContext > createAccessibleContext( VCLXWindow* _pXWindow ) override; virtual css::uno::Reference< css::accessibility::XAccessible > createAccessible( Menu* _pMenu, bool _bIsMenuBar ) override; @@ -117,13 +125,13 @@ public: SvHeaderTabListBox& rBox ) const override; - virtual vcl::IAccessibleBrowseBox* + virtual rtl::Reference<vcl::IAccessibleBrowseBox> createAccessibleBrowseBox( const css::uno::Reference< css::accessibility::XAccessible >& _rxParent, vcl::IAccessibleTableProvider& _rBrowseBox ) const override; - virtual IAccessibleTableControl* + virtual rtl::Reference<IAccessibleTableControl> createAccessibleTableControl( const css::uno::Reference< css::accessibility::XAccessible >& _rxParent, IAccessibleTable& _rTable @@ -152,10 +160,16 @@ public: ) const override; virtual css::uno::Reference< css::accessibility::XAccessible > + createAccessibleIconView( + SvTreeListBox& _rListBox, + const css::uno::Reference< css::accessibility::XAccessible >& _xParent + ) const override; + + virtual css::uno::Reference< css::accessibility::XAccessible > createAccessibleBrowseBoxHeaderBar( const css::uno::Reference< css::accessibility::XAccessible >& rxParent, vcl::IAccessibleTableProvider& _rOwningTable, - vcl::AccessibleBrowseBoxObjType _eObjType + AccessibleBrowseBoxObjType _eObjType ) const override; virtual css::uno::Reference< css::accessibility::XAccessible > @@ -174,7 +188,7 @@ public: const css::uno::Reference< css::accessibility::XAccessible >& rxParent, vcl::IAccessibleTableProvider& _rBrowseBox, const css::uno::Reference< css::awt::XWindow >& _xFocusWindow, - vcl::AccessibleBrowseBoxObjType _eObjType + AccessibleBrowseBoxObjType _eObjType ) const override; virtual css::uno::Reference< css::accessibility::XAccessible > @@ -212,7 +226,7 @@ AccessibleFactory::~AccessibleFactory() Reference< XAccessible > AccessibleFactory::createAccessible( Menu* _pMenu, bool _bIsMenuBar ) { - OAccessibleMenuBaseComponent* pAccessible; + rtl::Reference<OAccessibleMenuBaseComponent> pAccessible; if ( _bIsMenuBar ) pAccessible = new VCLXAccessibleMenuBar( _pMenu ); else @@ -269,6 +283,11 @@ Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLX return new VCLXAccessibleEdit( _pXWindow ); } +Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXMultiLineEdit* _pXWindow ) +{ + return new VCLXAccessibleEdit( _pXWindow ); +} + Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXComboBox* _pXWindow ) { bool bIsDropDownBox = false; @@ -352,19 +371,24 @@ Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLX return new VCLXAccessibleHeaderBar(_pXWindow); } +Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( SVTXNumericField* _pXWindow ) +{ + return new SVTXAccessibleNumericField( _pXWindow ); +} + vcl::IAccessibleTabListBox* AccessibleFactory::createAccessibleTabListBox( const Reference< XAccessible >& rxParent, SvHeaderTabListBox& rBox ) const { return new AccessibleTabListBox( rxParent, rBox ); } -vcl::IAccessibleBrowseBox* AccessibleFactory::createAccessibleBrowseBox( +rtl::Reference<vcl::IAccessibleBrowseBox> AccessibleFactory::createAccessibleBrowseBox( const Reference< XAccessible >& _rxParent, vcl::IAccessibleTableProvider& _rBrowseBox ) const { return new AccessibleBrowseBoxAccess( _rxParent, _rBrowseBox ); } -IAccessibleTableControl* AccessibleFactory::createAccessibleTableControl( +rtl::Reference<IAccessibleTableControl> AccessibleFactory::createAccessibleTableControl( const Reference< XAccessible >& _rxParent, IAccessibleTable& _rTable ) const { return new AccessibleGridControlAccess( _rxParent, _rTable ); @@ -378,7 +402,12 @@ Reference< XAccessible > AccessibleFactory::createAccessibleIconChoiceCtrl( Reference< XAccessible > AccessibleFactory::createAccessibleTabBar( TabBar& _rTabBar ) const { +#if HAVE_FEATURE_SCRIPTING return new AccessibleTabBar( &_rTabBar ); +#else + (void)_rTabBar; + return nullptr; +#endif } Reference< XAccessibleContext > AccessibleFactory::createAccessibleTextWindowContext( @@ -393,9 +422,15 @@ Reference< XAccessible > AccessibleFactory::createAccessibleTreeListBox( return new AccessibleListBox( _rListBox, _xParent ); } +Reference< XAccessible > AccessibleFactory::createAccessibleIconView( + SvTreeListBox& _rListBox, const Reference< XAccessible >& _xParent ) const +{ + return new AccessibleIconView( _rListBox, _xParent ); +} + Reference< XAccessible > AccessibleFactory::createAccessibleBrowseBoxHeaderBar( const Reference< XAccessible >& rxParent, vcl::IAccessibleTableProvider& _rOwningTable, - vcl::AccessibleBrowseBoxObjType _eObjType ) const + AccessibleBrowseBoxObjType _eObjType ) const { return new AccessibleBrowseBoxHeaderBar( rxParent, _rOwningTable, _eObjType ); } @@ -410,7 +445,7 @@ Reference< XAccessible > AccessibleFactory::createAccessibleBrowseBoxTableCell( Reference< XAccessible > AccessibleFactory::createAccessibleBrowseBoxHeaderCell( sal_Int32 _nColumnRowId, const Reference< XAccessible >& rxParent, vcl::IAccessibleTableProvider& _rBrowseBox, - const Reference< XWindow >& _xFocusWindow, vcl::AccessibleBrowseBoxObjType _eObjType ) const + const Reference< XWindow >& _xFocusWindow, AccessibleBrowseBoxObjType _eObjType ) const { return new AccessibleBrowseBoxHeaderCell( _nColumnRowId, rxParent, _rBrowseBox, _xFocusWindow, _eObjType ); @@ -437,6 +472,35 @@ Reference< XAccessible > AccessibleFactory::createEditBrowseBoxTableCellAccess( } // anonymous namespace #if HAVE_FEATURE_DESKTOP + +/// anonymous implementation namespace +namespace { + +class GetStandardAccessibleFactoryService: + public ::cppu::WeakImplHelper< + css::lang::XServiceInfo, + css::lang::XUnoTunnel> +{ +public: + // css::lang::XServiceInfo: + virtual OUString SAL_CALL getImplementationName() override + { return "com.sun.star.accessibility.comp.GetStandardAccessibleFactoryService"; } + virtual sal_Bool SAL_CALL supportsService(const OUString & serviceName) override + { return cppu::supportsService(this, serviceName); } + virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override + { return { "com.sun.star.accessibility.GetStandardAccessibleFactoryService" }; } + + // XUnoTunnel + virtual sal_Int64 SAL_CALL getSomething( const ::css::uno::Sequence< ::sal_Int8 >& /*aIdentifier*/ ) override + { + ::toolkit::IAccessibleFactory* pFactory = new AccessibleFactory; + pFactory->acquire(); + return reinterpret_cast<sal_Int64>(pFactory); + } +}; + +} // closing anonymous implementation namespace + /* this is the entry point to retrieve a factory for the toolkit-level Accessible/Contexts supplied by this library @@ -445,11 +509,12 @@ Reference< XAccessible > AccessibleFactory::createEditBrowseBoxTableCellAccess( */ extern "C" { - SAL_DLLPUBLIC_EXPORT void* getStandardAccessibleFactory() + SAL_DLLPUBLIC_EXPORT css::uno::XInterface * + com_sun_star_accessibility_GetStandardAccessibleFactoryService_get_implementation( + css::uno::XComponentContext *, + css::uno::Sequence<css::uno::Any> const &) { - ::toolkit::IAccessibleFactory* pFactory = new AccessibleFactory; - pFactory->acquire(); - return pFactory; + return cppu::acquire(new GetStandardAccessibleFactoryService); } } |