LCOV - code coverage report
Current view: top level - svx/source/accessibility - charmapacc.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 0 405 0.0 %
Date: 2015-06-13 12:38:46 Functions: 0 90 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             : 
      20             : #include <unotools/accessiblestatesethelper.hxx>
      21             : #include <vcl/svapp.hxx>
      22             : #include <stdio.h>
      23             : #include <svx/charmap.hxx>
      24             : #include "charmapacc.hxx"
      25             : #include <com/sun/star/accessibility/AccessibleRole.hpp>
      26             : #include <com/sun/star/accessibility/AccessibleStateType.hpp>
      27             : #include <toolkit/helper/externallock.hxx>
      28             : #include <toolkit/helper/convert.hxx>
      29             : #include <osl/interlck.h>
      30             : #include <svx/dialmgr.hxx>
      31             : #include "accessibility.hrc"
      32             : #include <comphelper/types.hxx>
      33             : 
      34             : namespace svx
      35             : {
      36             :     using namespace comphelper;
      37             :     using namespace ::com::sun::star;
      38             :     using namespace ::com::sun::star::uno;
      39             :     using namespace ::com::sun::star::lang;
      40             :     using namespace ::com::sun::star::accessibility;
      41             : 
      42             : 
      43             : // - SvxShowCharSetVirtualAcc -
      44             : 
      45           0 : SvxShowCharSetVirtualAcc::SvxShowCharSetVirtualAcc( SvxShowCharSet* pParent ) : OAccessibleComponentHelper(new VCLExternalSolarLock())
      46             : ,mpParent( pParent )
      47           0 : ,m_pTable(NULL)
      48             : {
      49           0 :     osl_atomic_increment(&m_refCount);
      50             :     {
      51           0 :         lateInit(this);
      52             :     }
      53           0 :     osl_atomic_decrement(&m_refCount);
      54           0 : }
      55             : 
      56             : 
      57             : 
      58           0 : SvxShowCharSetVirtualAcc::~SvxShowCharSetVirtualAcc()
      59             : {
      60           0 :     ensureDisposed();
      61           0 :     delete getExternalLock();
      62           0 : }
      63             : 
      64           0 : IMPLEMENT_FORWARD_XINTERFACE2( SvxShowCharSetVirtualAcc, OAccessibleComponentHelper, OAccessibleHelper_Base_2 )
      65           0 : IMPLEMENT_FORWARD_XTYPEPROVIDER2( SvxShowCharSetVirtualAcc, OAccessibleComponentHelper, OAccessibleHelper_Base_2 )
      66             : 
      67           0 : void SAL_CALL SvxShowCharSetVirtualAcc::fireEvent(
      68             :                     const sal_Int16 _nEventId,
      69             :                     const ::com::sun::star::uno::Any& _rOldValue,
      70             :                     const ::com::sun::star::uno::Any& _rNewValue
      71             :                 )
      72             : {
      73           0 :     if ( m_pTable )
      74           0 :         m_pTable->fireEvent(_nEventId,_rOldValue,_rNewValue);
      75           0 : }
      76             : 
      77           0 : sal_Int32 SAL_CALL SvxShowCharSetVirtualAcc::getAccessibleChildCount(  ) throw (RuntimeException, std::exception)
      78             : {
      79           0 :     OExternalLockGuard aGuard( this );
      80           0 :     ensureAlive();
      81           0 :     return ( mpParent->getScrollBar().IsVisible() ) ? 2 : 1;
      82             : }
      83             : 
      84           0 : uno::Reference< css::accessibility::XAccessible > SAL_CALL SvxShowCharSetVirtualAcc::getAccessibleAtPoint( const awt::Point& aPoint )
      85             :     throw (uno::RuntimeException, std::exception)
      86             : {
      87           0 :     OExternalLockGuard aGuard( this );
      88           0 :     ensureAlive();
      89             : 
      90           0 :     uno::Reference< css::accessibility::XAccessible >    xRet;
      91           0 :     const sal_uInt16 nItemId = sal::static_int_cast<sal_uInt16>(mpParent->PixelToMapIndex( Point( aPoint.X, aPoint.Y ) ));
      92             : 
      93           0 :     if( sal_uInt16(-1) != nItemId )
      94             :     {
      95           0 :         if ( !m_pTable )
      96           0 :             m_pTable = new SvxShowCharSetAcc(this);
      97           0 :         xRet = m_pTable;
      98             :     }
      99           0 :     else if ( mpParent->getScrollBar().IsVisible() )
     100             :     {
     101           0 :         const Point aOutPos( mpParent->getScrollBar().GetPosPixel() );
     102           0 :         const Size  aScrollBar = mpParent->getScrollBar().GetOutputSizePixel();
     103           0 :         Rectangle aRect(aOutPos,aScrollBar);
     104             : 
     105           0 :         if ( aRect.IsInside(VCLPoint(aPoint)) )
     106           0 :             xRet = mpParent->getScrollBar().GetAccessible();
     107             :     }
     108           0 :     return xRet;
     109             : }
     110             : 
     111           0 : void SAL_CALL SvxShowCharSetVirtualAcc::grabFocus()
     112             :     throw (uno::RuntimeException, std::exception)
     113             : {
     114           0 :     OExternalLockGuard aGuard( this );
     115           0 :     ensureAlive();
     116           0 :     mpParent->GrabFocus();
     117           0 : }
     118             : 
     119           0 : Reference< XAccessible > SAL_CALL SvxShowCharSetVirtualAcc::getAccessibleChild( sal_Int32 i ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
     120             : {
     121           0 :     OExternalLockGuard aGuard( this );
     122           0 :     ensureAlive();
     123           0 :     if ( mpParent->getScrollBar().IsVisible() && i == 0 )
     124           0 :         return mpParent->getScrollBar().GetAccessible();
     125           0 :     else if ( i == 1 )
     126             :     {
     127           0 :         if ( !m_xAcc.is() )
     128             :         {
     129           0 :             m_pTable = new SvxShowCharSetAcc(this);
     130           0 :             m_xAcc = m_pTable;
     131             :         }
     132             :     }
     133             :     else
     134           0 :         throw IndexOutOfBoundsException();
     135           0 :     return m_xAcc;
     136             : }
     137             : 
     138           0 : Reference< XAccessible > SAL_CALL SvxShowCharSetVirtualAcc::getAccessibleParent(  ) throw (RuntimeException, std::exception)
     139             : {
     140           0 :     OExternalLockGuard aGuard( this );
     141           0 :     ensureAlive();
     142           0 :     vcl::Window*                                         pParent = mpParent->GetParent();
     143           0 :     uno::Reference< css::accessibility::XAccessible >    xRet;
     144             : 
     145           0 :     if ( pParent )
     146           0 :         xRet = pParent->GetAccessible();
     147             : 
     148           0 :     return xRet;
     149             : }
     150             : 
     151           0 : ::com::sun::star::awt::Rectangle SvxShowCharSetVirtualAcc::implGetBounds(  ) throw (RuntimeException)
     152             : {
     153           0 :     ::com::sun::star::awt::Rectangle aBounds ( 0, 0, 0, 0 );
     154           0 :     vcl::Window* pWindow = mpParent;
     155           0 :     if ( pWindow )
     156             :     {
     157           0 :         Rectangle aRect = pWindow->GetWindowExtentsRelative( NULL );
     158           0 :         aBounds = AWTRectangle( aRect );
     159           0 :         vcl::Window* pParent = pWindow->GetAccessibleParentWindow();
     160           0 :         if ( pParent )
     161             :         {
     162           0 :             Rectangle aParentRect = pParent->GetWindowExtentsRelative( NULL );
     163           0 :             ::com::sun::star::awt::Point aParentScreenLoc = AWTPoint( aParentRect.TopLeft() );
     164           0 :             aBounds.X -= aParentScreenLoc.X;
     165           0 :             aBounds.Y -= aParentScreenLoc.Y;
     166             :         }
     167             :     }
     168           0 :     return aBounds;
     169             : }
     170             : 
     171           0 : sal_Int16 SAL_CALL SvxShowCharSetVirtualAcc::getAccessibleRole(  ) throw (RuntimeException, std::exception)
     172             : {
     173           0 :     return css::accessibility::AccessibleRole::SCROLL_PANE;
     174             : }
     175             : 
     176           0 : OUString SAL_CALL SvxShowCharSetVirtualAcc::getAccessibleDescription(  ) throw (RuntimeException, std::exception)
     177             : {
     178           0 :     OExternalLockGuard aGuard( this );
     179           0 :     return SVX_RESSTR( RID_SVXSTR_CHARACTER_SELECTION);
     180             : }
     181             : 
     182           0 : OUString SAL_CALL SvxShowCharSetVirtualAcc::getAccessibleName(  ) throw (RuntimeException, std::exception)
     183             : {
     184           0 :     OExternalLockGuard aGuard( this );
     185           0 :     return SVX_RESSTR( RID_SVXSTR_CHAR_SEL_DESC);
     186             : }
     187             : 
     188           0 : Reference< XAccessibleRelationSet > SAL_CALL SvxShowCharSetVirtualAcc::getAccessibleRelationSet(  ) throw (RuntimeException, std::exception)
     189             : {
     190           0 :     return Reference< XAccessibleRelationSet >();
     191             : }
     192             : 
     193           0 : Reference< XAccessibleStateSet > SAL_CALL SvxShowCharSetVirtualAcc::getAccessibleStateSet(  ) throw (RuntimeException, std::exception)
     194             : {
     195           0 :     OExternalLockGuard aGuard( this );
     196             : 
     197           0 :     ::utl::AccessibleStateSetHelper*    pStateSet = new ::utl::AccessibleStateSetHelper;
     198             : 
     199           0 :     if( mpParent )
     200             :     {
     201             :         // SELECTABLE
     202           0 :         pStateSet->AddState( AccessibleStateType::FOCUSABLE );
     203           0 :         if ( mpParent->HasFocus() )
     204           0 :             pStateSet->AddState( AccessibleStateType::FOCUSED );
     205           0 :         if ( mpParent->IsActive() )
     206           0 :             pStateSet->AddState( AccessibleStateType::ACTIVE );
     207           0 :         if ( mpParent->IsEnabled() )
     208             :         {
     209           0 :             pStateSet->AddState( AccessibleStateType::ENABLED );
     210           0 :             pStateSet->AddState( AccessibleStateType::SENSITIVE );
     211             :         }
     212           0 :         if ( mpParent->IsReallyVisible() )
     213           0 :             pStateSet->AddState( AccessibleStateType::VISIBLE );
     214             :     }
     215             : 
     216           0 :     return pStateSet;
     217             : }
     218             : 
     219           0 : void SAL_CALL SvxShowCharSetVirtualAcc::disposing()
     220             : {
     221           0 :     OAccessibleContextHelper::disposing();
     222           0 :     if ( m_pTable )
     223           0 :         m_pTable->dispose();
     224           0 :     m_pTable = NULL;
     225           0 : }
     226             : 
     227             : 
     228             : // - SvxShowCharSetItem -
     229             : 
     230             : 
     231           0 : SvxShowCharSetItem::SvxShowCharSetItem( SvxShowCharSet& rParent,SvxShowCharSetAcc*  _pParent,sal_uInt16 _nPos ) :
     232             :     mrParent( rParent )
     233             :     ,mnId( _nPos )
     234             :     ,m_pItem(NULL)
     235           0 :     ,m_pParent(_pParent)
     236             : {
     237           0 : }
     238             : 
     239             : 
     240           0 : SvxShowCharSetItem::~SvxShowCharSetItem()
     241             : {
     242           0 :     if ( m_xAcc.is() )
     243             :     {
     244           0 :         m_pItem->ParentDestroyed();
     245           0 :         ClearAccessible();
     246             :     }
     247           0 : }
     248             : 
     249             : 
     250             : 
     251           0 : uno::Reference< css::accessibility::XAccessible > SvxShowCharSetItem::GetAccessible()
     252             : {
     253           0 :     if( !m_xAcc.is() )
     254             :     {
     255           0 :         m_pItem = new SvxShowCharSetItemAcc( this );
     256           0 :         m_xAcc = m_pItem;
     257             :     }
     258             : 
     259           0 :     return m_xAcc;
     260             : }
     261             : 
     262             : 
     263             : 
     264           0 : void SvxShowCharSetItem::ClearAccessible()
     265             : {
     266           0 :     if ( m_xAcc.is() )
     267             :     {
     268           0 :         m_pItem = NULL;
     269           0 :         m_xAcc  = NULL;
     270             :     }
     271           0 : }
     272             : 
     273             : 
     274             : 
     275             : // - SvxShowCharSetAcc -
     276             : 
     277             : 
     278           0 : SvxShowCharSetAcc::SvxShowCharSetAcc( SvxShowCharSetVirtualAcc* _pParent ) : OAccessibleSelectionHelper(new VCLExternalSolarLock())
     279           0 :   ,m_pParent( _pParent )
     280             : {
     281           0 :     osl_atomic_increment(&m_refCount);
     282             :     {
     283           0 :         lateInit(this);
     284             :     }
     285           0 :     osl_atomic_decrement(&m_refCount);
     286           0 : }
     287             : 
     288             : 
     289             : 
     290           0 : SvxShowCharSetAcc::~SvxShowCharSetAcc()
     291             : {
     292           0 :     ensureDisposed();
     293           0 :     delete getExternalLock();
     294           0 : }
     295             : 
     296           0 : void SAL_CALL SvxShowCharSetAcc::disposing()
     297             : {
     298           0 :     OAccessibleSelectionHelper::disposing();
     299           0 :     ::std::vector< Reference< XAccessible > >::iterator aIter = m_aChildren.begin();
     300           0 :     ::std::vector< Reference< XAccessible > >::iterator aEnd  = m_aChildren.end();
     301           0 :     for (;aIter != aEnd ; ++aIter)
     302           0 :         ::comphelper::disposeComponent(*aIter);
     303             : 
     304           0 :     m_aChildren.clear();
     305           0 :     m_pParent = NULL;
     306           0 : }
     307             : 
     308             : 
     309           0 : IMPLEMENT_FORWARD_XINTERFACE2( SvxShowCharSetAcc, OAccessibleSelectionHelper, OAccessibleHelper_Base )
     310           0 : IMPLEMENT_FORWARD_XTYPEPROVIDER2( SvxShowCharSetAcc, OAccessibleSelectionHelper, OAccessibleHelper_Base )
     311             : 
     312           0 : bool SvxShowCharSetAcc::implIsSelected( sal_Int32 nAccessibleChildIndex ) throw (RuntimeException)
     313             : {
     314           0 :     return m_pParent && m_pParent->getCharSetControl()->IsSelected(
     315           0 :         sal::static_int_cast<sal_uInt16>(nAccessibleChildIndex));
     316             : }
     317             : 
     318             :         // select the specified child => watch for special ChildIndexes (ACCESSIBLE_SELECTION_CHILD_xxx)
     319           0 : void SvxShowCharSetAcc::implSelect(sal_Int32 nAccessibleChildIndex, bool bSelect)
     320             :     throw (IndexOutOfBoundsException, RuntimeException, std::exception)
     321             : {
     322           0 :     if ( m_pParent )
     323             :     {
     324           0 :         if ( bSelect )
     325           0 :             m_pParent->getCharSetControl()->SelectIndex(nAccessibleChildIndex, true);
     326             :         else
     327           0 :             m_pParent->getCharSetControl()->DeSelect();
     328             :     }
     329           0 : }
     330             : 
     331           0 : ::com::sun::star::awt::Rectangle SvxShowCharSetAcc::implGetBounds(  ) throw (RuntimeException)
     332             : {
     333           0 :     const Point   aOutPos;//( m_pParent->getCharSetControl()->GetPosPixel() );
     334           0 :     Size          aOutSize( m_pParent->getCharSetControl()->GetOutputSizePixel());
     335           0 :     if ( m_pParent->getCharSetControl()->getScrollBar().IsVisible() )
     336             :     {
     337           0 :         const Size aScrollBar = m_pParent->getCharSetControl()->getScrollBar().GetOutputSizePixel();
     338           0 :         aOutSize.Width() -= aScrollBar.Width();
     339             :     }
     340             : 
     341           0 :     awt::Rectangle aRet;
     342             : 
     343           0 :     aRet.X = aOutPos.X();
     344           0 :     aRet.Y = aOutPos.Y();
     345           0 :     aRet.Width = aOutSize.Width();
     346           0 :     aRet.Height = aOutSize.Height();
     347             : 
     348           0 :     return aRet;
     349             : }
     350             : 
     351           0 : sal_Int32 SAL_CALL SvxShowCharSetAcc::getAccessibleChildCount()
     352             :     throw (uno::RuntimeException, std::exception)
     353             : {
     354           0 :     OExternalLockGuard aGuard( this );
     355           0 :     ensureAlive();
     356           0 :     return m_pParent->getCharSetControl()->getMaxCharCount();
     357             : }
     358             : 
     359             : 
     360             : 
     361           0 : uno::Reference< css::accessibility::XAccessible > SAL_CALL SvxShowCharSetAcc::getAccessibleChild( sal_Int32 i )
     362             :     throw (lang::IndexOutOfBoundsException, uno::RuntimeException, std::exception)
     363             : {
     364           0 :     OExternalLockGuard aGuard( this );
     365           0 :     ensureAlive();
     366           0 :     uno::Reference< css::accessibility::XAccessible >    xRet;
     367           0 :     SvxShowCharSetItem* pItem = m_pParent->getCharSetControl()->ImplGetItem( static_cast< sal_uInt16 >( i ) );
     368             : 
     369           0 :     if( pItem )
     370             :     {
     371           0 :         pItem->m_pParent = this;
     372           0 :         xRet = pItem->GetAccessible();
     373           0 :         m_aChildren.push_back(xRet);
     374             :     }
     375             :     else
     376           0 :         throw lang::IndexOutOfBoundsException();
     377             : 
     378           0 :     return xRet;
     379             : }
     380             : 
     381             : 
     382             : 
     383           0 : uno::Reference< css::accessibility::XAccessible > SAL_CALL SvxShowCharSetAcc::getAccessibleParent()
     384             :     throw (uno::RuntimeException, std::exception)
     385             : {
     386           0 :     OExternalLockGuard aGuard( this );
     387           0 :     ensureAlive();
     388           0 :     return m_pParent;
     389             : }
     390             : 
     391             : 
     392             : 
     393           0 : sal_Int16 SAL_CALL SvxShowCharSetAcc::getAccessibleRole()
     394             :     throw (uno::RuntimeException, std::exception)
     395             : {
     396           0 :     return css::accessibility::AccessibleRole::TABLE;
     397             : }
     398             : 
     399             : 
     400             : 
     401           0 : OUString SAL_CALL SvxShowCharSetAcc::getAccessibleDescription()
     402             :     throw (uno::RuntimeException, std::exception)
     403             : {
     404           0 :     OExternalLockGuard aGuard( this );
     405           0 :     return SVX_RESSTR( RID_SVXSTR_CHARACTER_SELECTION );
     406             : }
     407             : 
     408             : 
     409             : 
     410           0 : OUString SAL_CALL SvxShowCharSetAcc::getAccessibleName()
     411             :     throw (uno::RuntimeException, std::exception)
     412             : {
     413           0 :     OExternalLockGuard aGuard( this );
     414           0 :     ensureAlive();
     415           0 :     return SVX_RESSTR( RID_SVXSTR_CHAR_SEL_DESC );
     416             : }
     417             : 
     418             : 
     419             : 
     420           0 : uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL SvxShowCharSetAcc::getAccessibleRelationSet()
     421             :     throw (uno::RuntimeException, std::exception)
     422             : {
     423           0 :     return uno::Reference< css::accessibility::XAccessibleRelationSet >();
     424             : }
     425             : 
     426             : 
     427             : 
     428           0 : uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL SvxShowCharSetAcc::getAccessibleStateSet()
     429             :     throw (uno::RuntimeException, std::exception)
     430             : {
     431           0 :     OExternalLockGuard aGuard( this );
     432             : 
     433           0 :     ::utl::AccessibleStateSetHelper*    pStateSet = new ::utl::AccessibleStateSetHelper;
     434             : 
     435           0 :     if( m_pParent->getCharSetControl() )
     436             :     {
     437             :         // SELECTABLE
     438           0 :         pStateSet->AddState( AccessibleStateType::FOCUSABLE );
     439           0 :         if ( m_pParent->getCharSetControl()->HasFocus() )
     440           0 :             pStateSet->AddState( AccessibleStateType::FOCUSED );
     441           0 :         if ( m_pParent->getCharSetControl()->IsActive() )
     442           0 :             pStateSet->AddState( AccessibleStateType::ACTIVE );
     443           0 :         if ( m_pParent->getCharSetControl()->IsEnabled() )
     444             :         {
     445           0 :             pStateSet->AddState( AccessibleStateType::ENABLED );
     446           0 :             pStateSet->AddState( AccessibleStateType::SENSITIVE );
     447             :         }
     448           0 :         if ( m_pParent->getCharSetControl()->IsReallyVisible() )
     449           0 :             pStateSet->AddState( AccessibleStateType::VISIBLE );
     450             : 
     451           0 :         pStateSet->AddState( AccessibleStateType::MANAGES_DESCENDANTS );
     452             :     }
     453             : 
     454           0 :     return pStateSet;
     455             : }
     456             : 
     457             : 
     458           0 : uno::Reference< css::accessibility::XAccessible > SAL_CALL SvxShowCharSetAcc::getAccessibleAtPoint( const awt::Point& aPoint )
     459             :     throw (uno::RuntimeException, std::exception)
     460             : {
     461           0 :     OExternalLockGuard aGuard( this );
     462           0 :     ensureAlive();
     463             : 
     464           0 :     uno::Reference< css::accessibility::XAccessible >    xRet;
     465             :     const sal_uInt16 nItemId = sal::static_int_cast<sal_uInt16>(
     466           0 :         m_pParent->getCharSetControl()->PixelToMapIndex( Point( aPoint.X, aPoint.Y ) ));
     467             : 
     468           0 :     if( sal_uInt16(-1) != nItemId )
     469             :     {
     470           0 :         SvxShowCharSetItem* pItem = m_pParent->getCharSetControl()->ImplGetItem( nItemId );
     471           0 :         xRet = pItem->GetAccessible();
     472             :     }
     473           0 :     return xRet;
     474             : }
     475             : 
     476           0 : void SAL_CALL SvxShowCharSetAcc::grabFocus()
     477             :     throw (uno::RuntimeException, std::exception)
     478             : {
     479           0 :     OExternalLockGuard aGuard( this );
     480           0 :     ensureAlive();
     481           0 :     m_pParent->getCharSetControl()->GrabFocus();
     482           0 : }
     483             : 
     484           0 : sal_Int32 SAL_CALL SvxShowCharSetAcc::getAccessibleRowCount(  ) throw (RuntimeException, std::exception)
     485             : {
     486           0 :     return ((getAccessibleChildCount()-1) / COLUMN_COUNT) + 1;
     487             : }
     488             : 
     489           0 : sal_Int32 SAL_CALL SvxShowCharSetAcc::getAccessibleColumnCount(  ) throw (RuntimeException, std::exception)
     490             : {
     491           0 :     return COLUMN_COUNT;
     492             : }
     493             : 
     494           0 : OUString SAL_CALL SvxShowCharSetAcc::getAccessibleRowDescription( sal_Int32 /*nRow*/ ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
     495             : {
     496           0 :     return OUString();
     497             : }
     498             : 
     499           0 : OUString SAL_CALL SvxShowCharSetAcc::getAccessibleColumnDescription( sal_Int32 /*nColumn*/ ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
     500             : {
     501           0 :     return OUString();
     502             : }
     503             : 
     504           0 : sal_Int32 SAL_CALL SvxShowCharSetAcc::getAccessibleRowExtentAt( sal_Int32 /*nRow*/, sal_Int32 /*nColumn*/ ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
     505             : {
     506           0 :     return 1;
     507             : }
     508             : 
     509           0 : sal_Int32 SAL_CALL SvxShowCharSetAcc::getAccessibleColumnExtentAt( sal_Int32 /*nRow*/, sal_Int32 /*nColumn*/ ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
     510             : {
     511           0 :     return 1;
     512             : }
     513             : 
     514           0 : Reference< XAccessibleTable > SAL_CALL SvxShowCharSetAcc::getAccessibleRowHeaders(  ) throw (RuntimeException, std::exception)
     515             : {
     516           0 :     return Reference< XAccessibleTable >();
     517             : }
     518             : 
     519           0 : Reference< XAccessibleTable > SAL_CALL SvxShowCharSetAcc::getAccessibleColumnHeaders(  ) throw (RuntimeException, std::exception)
     520             : {
     521           0 :     return Reference< XAccessibleTable >();
     522             : }
     523             : 
     524           0 : Sequence< sal_Int32 > SAL_CALL SvxShowCharSetAcc::getSelectedAccessibleRows(  ) throw (RuntimeException, std::exception)
     525             : {
     526           0 :     OExternalLockGuard aGuard( this );
     527           0 :     ensureAlive();
     528           0 :     Sequence< sal_Int32 > aSel(1);
     529           0 :     aSel[0] = SvxShowCharSet::GetRowPos(m_pParent->getCharSetControl()->GetSelectIndexId());
     530           0 :     return aSel;
     531             : }
     532             : 
     533           0 : Sequence< sal_Int32 > SAL_CALL SvxShowCharSetAcc::getSelectedAccessibleColumns(  ) throw (RuntimeException, std::exception)
     534             : {
     535           0 :     OExternalLockGuard aGuard( this );
     536           0 :     ensureAlive();
     537           0 :     Sequence< sal_Int32 > aSel(1);
     538           0 :     aSel[0] = SvxShowCharSet::GetColumnPos(m_pParent->getCharSetControl()->GetSelectIndexId());
     539           0 :     return aSel;
     540             : }
     541             : 
     542           0 : sal_Bool SAL_CALL SvxShowCharSetAcc::isAccessibleRowSelected( sal_Int32 nRow ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
     543             : {
     544           0 :     OExternalLockGuard aGuard( this );
     545           0 :     ensureAlive();
     546           0 :     return SvxShowCharSet::GetRowPos(m_pParent->getCharSetControl()->GetSelectIndexId()) == nRow;
     547             : }
     548             : 
     549           0 : sal_Bool SAL_CALL SvxShowCharSetAcc::isAccessibleColumnSelected( sal_Int32 nColumn ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
     550             : {
     551           0 :     OExternalLockGuard aGuard( this );
     552           0 :     ensureAlive();
     553           0 :     return SvxShowCharSet::GetColumnPos(m_pParent->getCharSetControl()->GetSelectIndexId()) == nColumn;
     554             : }
     555             : 
     556           0 : Reference< XAccessible > SAL_CALL SvxShowCharSetAcc::getAccessibleCellAt( sal_Int32 nRow, sal_Int32 nColumn ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
     557             : {
     558           0 :     OExternalLockGuard aGuard( this );
     559           0 :     ensureAlive();
     560             :     svx::SvxShowCharSetItem* pItem = m_pParent->getCharSetControl()->ImplGetItem(
     561           0 :         sal::static_int_cast<sal_uInt16>(getAccessibleIndex(nRow,nColumn) ));
     562           0 :     if ( !pItem  )
     563           0 :         throw IndexOutOfBoundsException();
     564           0 :     return pItem->GetAccessible();
     565             : }
     566             : 
     567           0 : Reference< XAccessible > SAL_CALL SvxShowCharSetAcc::getAccessibleCaption(  ) throw (RuntimeException, std::exception)
     568             : {
     569           0 :     return Reference< XAccessible >();
     570             : }
     571             : 
     572           0 : Reference< XAccessible > SAL_CALL SvxShowCharSetAcc::getAccessibleSummary(  ) throw (RuntimeException, std::exception)
     573             : {
     574           0 :     return Reference< XAccessible >();
     575             : }
     576             : 
     577           0 : sal_Bool SAL_CALL SvxShowCharSetAcc::isAccessibleSelected( sal_Int32 nRow, sal_Int32 nColumn ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
     578             : {
     579           0 :     OExternalLockGuard aGuard( this );
     580           0 :     ensureAlive();
     581           0 :     return m_pParent->getCharSetControl()->GetSelectIndexId() == getAccessibleIndex(nRow,nColumn);
     582             : }
     583             : 
     584           0 : sal_Int32 SAL_CALL SvxShowCharSetAcc::getAccessibleIndex( sal_Int32 nRow, sal_Int32 nColumn ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
     585             : {
     586           0 :     return (nRow*COLUMN_COUNT) + nColumn;
     587             : }
     588             : 
     589           0 : sal_Int32 SAL_CALL SvxShowCharSetAcc::getAccessibleRow( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
     590             : {
     591           0 :     OExternalLockGuard aGuard( this );
     592           0 :     ensureAlive();
     593           0 :     return SvxShowCharSet::GetRowPos(sal::static_int_cast<sal_uInt16>(nChildIndex));
     594             : }
     595             : 
     596           0 : sal_Int32 SAL_CALL SvxShowCharSetAcc::getAccessibleColumn( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
     597             : {
     598           0 :     OExternalLockGuard aGuard( this );
     599           0 :     ensureAlive();
     600           0 :     return SvxShowCharSet::GetColumnPos(sal::static_int_cast<sal_uInt16>(nChildIndex));
     601             : }
     602             : 
     603             : 
     604             : 
     605             : 
     606             : // - SvxShowCharSetItemAcc -
     607             : 
     608             : 
     609           0 : SvxShowCharSetItemAcc::SvxShowCharSetItemAcc( SvxShowCharSetItem* pParent ) : OAccessibleComponentHelper(new VCLExternalSolarLock())
     610           0 : ,mpParent( pParent )
     611             : {
     612             :     OSL_ENSURE(pParent,"NO parent supplied!");
     613           0 :     osl_atomic_increment(&m_refCount);
     614             :     { // #b6211265 #
     615           0 :         lateInit(this);
     616             :     }
     617           0 :     osl_atomic_decrement(&m_refCount);
     618           0 : }
     619             : 
     620             : 
     621             : 
     622           0 : SvxShowCharSetItemAcc::~SvxShowCharSetItemAcc()
     623             : {
     624           0 :     ensureDisposed();
     625           0 :     delete getExternalLock();
     626           0 : }
     627             : 
     628           0 : IMPLEMENT_FORWARD_XINTERFACE2( SvxShowCharSetItemAcc, OAccessibleComponentHelper, OAccessibleHelper_Base_2 )
     629           0 : IMPLEMENT_FORWARD_XTYPEPROVIDER2( SvxShowCharSetItemAcc, OAccessibleComponentHelper, OAccessibleHelper_Base_2 )
     630             : 
     631             : 
     632           0 : void SvxShowCharSetItemAcc::ParentDestroyed()
     633             : {
     634           0 :     const ::osl::MutexGuard aGuard( GetMutex() );
     635           0 :     mpParent = NULL;
     636           0 : }
     637             : 
     638             : 
     639             : 
     640           0 : sal_Int32 SAL_CALL SvxShowCharSetItemAcc::getAccessibleChildCount()
     641             :     throw (uno::RuntimeException, std::exception)
     642             : {
     643           0 :     return 0;
     644             : }
     645             : 
     646             : 
     647             : 
     648           0 : uno::Reference< css::accessibility::XAccessible > SAL_CALL SvxShowCharSetItemAcc::getAccessibleChild( sal_Int32 /*i*/ )
     649             :     throw (lang::IndexOutOfBoundsException, uno::RuntimeException, std::exception)
     650             : {
     651           0 :     throw lang::IndexOutOfBoundsException();
     652             : }
     653             : 
     654             : 
     655             : 
     656           0 : uno::Reference< css::accessibility::XAccessible > SAL_CALL SvxShowCharSetItemAcc::getAccessibleParent()
     657             :     throw (uno::RuntimeException, std::exception)
     658             : {
     659           0 :     OExternalLockGuard aGuard( this );
     660           0 :     ensureAlive();
     661           0 :     return mpParent->m_pParent;
     662             : }
     663             : 
     664             : 
     665             : 
     666           0 : sal_Int16 SAL_CALL SvxShowCharSetItemAcc::getAccessibleRole()
     667             :     throw (uno::RuntimeException, std::exception)
     668             : {
     669           0 :     return css::accessibility::AccessibleRole::TABLE_CELL;
     670             : }
     671             : 
     672             : 
     673             : 
     674           0 : OUString SAL_CALL SvxShowCharSetItemAcc::getAccessibleDescription()
     675             :     throw (uno::RuntimeException, std::exception)
     676             : {
     677           0 :     OExternalLockGuard aGuard( this );
     678           0 :     ensureAlive();
     679           0 :     OUString sDescription = SVX_RESSTR( RID_SVXSTR_CHARACTER_CODE );
     680             : 
     681           0 :     const OUString aCharStr( mpParent->maText);
     682           0 :     sal_Int32 nStrIndex = 0;
     683           0 :     const sal_UCS4 c = aCharStr.iterateCodePoints( &nStrIndex );
     684           0 :     const int tmp_len = (c < 0x10000) ? 4 : 6;
     685           0 :     char buf[16] = "0x0000";
     686           0 :     sal_UCS4 c_Shifted = c;
     687           0 :     for( int i = 0; i < tmp_len; ++i )
     688             :     {
     689           0 :         char h = (char)(c_Shifted & 0x0F);
     690           0 :         buf[tmp_len+1-i] = (h > 9) ? (h - 10 + 'A') : (h + '0');
     691           0 :         c_Shifted >>= 4;
     692             :     }
     693           0 :     if( c < 256 )
     694           0 :         snprintf( buf+6, 10, " (%" SAL_PRIuUINT32 ")", c );
     695           0 :     sDescription += " " + OUString(buf, strlen(buf), RTL_TEXTENCODING_ASCII_US);
     696             : 
     697           0 :     return sDescription;
     698             : }
     699             : 
     700             : 
     701             : 
     702           0 : OUString SAL_CALL SvxShowCharSetItemAcc::getAccessibleName()
     703             :     throw (uno::RuntimeException, std::exception)
     704             : {
     705           0 :     OExternalLockGuard aGuard( this );
     706           0 :     ensureAlive();
     707           0 :     OUString aRet;
     708             : 
     709           0 :     if( mpParent )
     710             :     {
     711           0 :         aRet = mpParent->maText;
     712             : 
     713           0 :         if (aRet.isEmpty())
     714           0 :             aRet = getAccessibleDescription();
     715             :     }
     716             : 
     717           0 :     return aRet;
     718             : }
     719             : 
     720             : 
     721             : 
     722           0 : uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL SvxShowCharSetItemAcc::getAccessibleRelationSet()
     723             :     throw (uno::RuntimeException, std::exception)
     724             : {
     725           0 :     return uno::Reference< css::accessibility::XAccessibleRelationSet >();
     726             : }
     727             : 
     728             : 
     729             : 
     730           0 : uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL SvxShowCharSetItemAcc::getAccessibleStateSet()
     731             :     throw (uno::RuntimeException, std::exception)
     732             : {
     733           0 :     OExternalLockGuard aGuard( this );
     734           0 :     ensureAlive();
     735             : 
     736           0 :     ::utl::AccessibleStateSetHelper*    pStateSet = new ::utl::AccessibleStateSetHelper;
     737             : 
     738           0 :     if( mpParent )
     739             :     {
     740           0 :         if (mpParent->mrParent.IsEnabled())
     741             :         {
     742           0 :             pStateSet->AddState( css::accessibility::AccessibleStateType::ENABLED );
     743             :             // SELECTABLE
     744           0 :             pStateSet->AddState( css::accessibility::AccessibleStateType::SELECTABLE );
     745           0 :             pStateSet->AddState( css::accessibility::AccessibleStateType::FOCUSABLE );
     746             :         }
     747             : 
     748             :         // SELECTED
     749           0 :         if( mpParent->mrParent.GetSelectIndexId() == mpParent->mnId )
     750             :         {
     751           0 :             pStateSet->AddState( css::accessibility::AccessibleStateType::SELECTED );
     752           0 :                pStateSet->AddState( css::accessibility::AccessibleStateType::FOCUSED );
     753             :         }
     754           0 :         if ( mpParent->mnId >= mpParent->mrParent.FirstInView() && mpParent->mnId <= mpParent->mrParent.LastInView() )
     755             :         {
     756           0 :             pStateSet->AddState( AccessibleStateType::VISIBLE );
     757           0 :             pStateSet->AddState( AccessibleStateType::SHOWING );
     758             :         }
     759           0 :         pStateSet->AddState( AccessibleStateType::TRANSIENT );
     760             :     }
     761             : 
     762           0 :     return pStateSet;
     763             : }
     764             : 
     765           0 : void SAL_CALL SvxShowCharSetItemAcc::grabFocus()
     766             :     throw (uno::RuntimeException, std::exception)
     767             : {
     768             :     // nothing to do
     769           0 : }
     770             : 
     771           0 : awt::Rectangle SvxShowCharSetItemAcc::implGetBounds(  ) throw (RuntimeException)
     772             : {
     773           0 :     awt::Rectangle      aRet;
     774             : 
     775           0 :     if( mpParent )
     776             :     {
     777           0 :         Rectangle   aRect( mpParent->maRect );
     778           0 :         Point       aOrigin;
     779           0 :         Rectangle   aParentRect( aOrigin, mpParent->mrParent.GetOutputSizePixel() );
     780             : 
     781           0 :         aRect.Intersection( aParentRect );
     782             : 
     783           0 :         aRet.X = aRect.Left();
     784           0 :         aRet.Y = aRect.Top();
     785           0 :         aRet.Width = aRect.GetWidth();
     786           0 :         aRet.Height = aRect.GetHeight();
     787             :     }
     788             : 
     789           0 :     return aRet;
     790             : }
     791             : 
     792           0 : uno::Reference< css::accessibility::XAccessible > SAL_CALL SvxShowCharSetItemAcc::getAccessibleAtPoint( const awt::Point& /*aPoint*/ )
     793             :     throw (uno::RuntimeException, std::exception)
     794             : {
     795           0 :     return uno::Reference< css::accessibility::XAccessible >();
     796             : }
     797             : 
     798           0 : sal_Int32 SAL_CALL SvxShowCharSetVirtualAcc::getForeground(  ) throw (RuntimeException, std::exception)
     799             : {
     800           0 :     OExternalLockGuard aGuard( this );
     801             : 
     802           0 :     sal_Int32 nColor = 0;
     803           0 :     if ( mpParent )
     804             :     {
     805           0 :         if ( mpParent->IsControlForeground() )
     806           0 :             nColor = mpParent->GetControlForeground().GetColor();
     807             :         else
     808             :         {
     809           0 :             vcl::Font aFont;
     810           0 :             if ( mpParent->IsControlFont() )
     811           0 :                 aFont = mpParent->GetControlFont();
     812             :             else
     813           0 :                 aFont = mpParent->GetFont();
     814           0 :             nColor = aFont.GetColor().GetColor();
     815             :         }
     816             :     }
     817             : 
     818           0 :     return nColor;
     819             : }
     820             : 
     821           0 : sal_Int32 SAL_CALL SvxShowCharSetVirtualAcc::getBackground(  ) throw (RuntimeException, std::exception)
     822             : {
     823           0 :     OExternalLockGuard aGuard( this  );
     824           0 :     sal_Int32 nColor = 0;
     825           0 :     if ( mpParent )
     826             :     {
     827           0 :         if ( mpParent->IsControlBackground() )
     828           0 :             nColor = mpParent->GetControlBackground().GetColor();
     829             :         else
     830           0 :             nColor = mpParent->GetBackground().GetColor().GetColor();
     831             :     }
     832             : 
     833           0 :     return nColor;
     834             : }
     835             : 
     836           0 : sal_Int32 SAL_CALL SvxShowCharSetAcc::getForeground(  ) throw (RuntimeException, std::exception)
     837             : {
     838           0 :     OExternalLockGuard aGuard( this );
     839             : 
     840           0 :     sal_Int32 nColor = 0;
     841           0 :     if ( m_pParent )
     842           0 :         nColor = m_pParent->getForeground();
     843           0 :     return nColor;
     844             : }
     845             : 
     846           0 : sal_Int32 SAL_CALL SvxShowCharSetAcc::getBackground(  ) throw (RuntimeException, std::exception)
     847             : {
     848           0 :     OExternalLockGuard aGuard( this  );
     849           0 :     sal_Int32 nColor = 0;
     850           0 :     if ( m_pParent )
     851           0 :         nColor = m_pParent->getBackground();
     852           0 :     return nColor;
     853             : }
     854             : 
     855             : 
     856             : 
     857             : }
     858             : 
     859             : 
     860             : 
     861             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11