27 #include <document.hxx>
29 #include <strings.hrc>
30 #include <strings.hxx>
32 #include <com/sun/star/accessibility/AccessibleRole.hpp>
33 #include <com/sun/star/accessibility/AccessibleStateType.hpp>
34 #include <com/sun/star/accessibility/AccessibleEventId.hpp>
35 #include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
51 mpViewShell( pViewShell ),
87 if ( nId == SfxHintId::DataChanged )
93 else if (nId == SfxHintId::ScAccVisAreaChanged)
95 AccessibleEventObject
aEvent;
96 aEvent.EventId = AccessibleEventId::VISIBLE_DATA_CHANGED;
97 aEvent.Source = uno::Reference< XAccessibleContext >(
this);
157 throw lang::IndexOutOfBoundsException();
167 throw lang::IndexOutOfBoundsException();
182 throw lang::IndexOutOfBoundsException();
210 sal_Int32 nColumns = 1;
213 throw lang::IndexOutOfBoundsException();
265 throw lang::IndexOutOfBoundsException();
277 throw lang::IndexOutOfBoundsException();
289 uno::Reference<XAccessible> xRet;
290 if (
mpTableInfo && nColumn >= 0 && nRow >= 0 && nColumn < mpTableInfo->GetCols() && nRow < mpTableInfo->GetRows() )
301 const bool bRotatedColHeader = rRowInfo.
bIsHeader;
302 const bool bRotatedRowHeader = rColInfo.
bIsHeader;
304 bRotatedColHeader, bRotatedRowHeader, nNewIndex));
305 xRet = pHeaderCell.get();
317 throw lang::IndexOutOfBoundsException();
343 throw lang::IndexOutOfBoundsException();
357 throw lang::IndexOutOfBoundsException();
360 sal_Int32 nRet = nRow *
mpTableInfo->GetCols() + nColumn;
372 throw lang::IndexOutOfBoundsException();
374 sal_Int32 nRow = nChildIndex /
mpTableInfo->GetCols();
386 throw lang::IndexOutOfBoundsException();
388 sal_Int32 nCol = nChildIndex %
static_cast<sal_Int32
>(
mpTableInfo->GetCols());
396 uno::Reference<XAccessible> xRet;
413 awt::Point aMovedPoint = aPoint;
414 aMovedPoint.X += aScreenRect.
Left();
415 aMovedPoint.Y += aScreenRect.
Top();
417 if ( nCols > 0 && nRows > 0 && aMovedPoint.X >= pColInfo[0].
nPixelStart && aMovedPoint.Y >= pRowInfo[0].
nPixelStart )
420 while ( nColIndex < nCols && aMovedPoint.X > pColInfo[nColIndex].nPixelEnd )
423 while ( nRowIndex < nRows && aMovedPoint.Y > pRowInfo[nRowIndex].nPixelEnd )
425 if ( nColIndex < nCols && nRowIndex < nRows )
431 catch (uno::Exception&)
449 if (xAccessibleComponent.is())
450 xAccessibleComponent->grabFocus();
476 uno::Reference<XAccessible> xRet;
483 sal_Int32 nCol = nIndex % nColumns;
484 sal_Int32 nRow = nIndex / nColumns;
491 throw lang::IndexOutOfBoundsException();
504 uno::Reference<XAccessibleStateSet> xParentStates;
507 uno::Reference<XAccessibleContext> xParentContext =
getAccessibleParent()->getAccessibleContext();
508 xParentStates = xParentContext->getAccessibleStateSet();
512 pStateSet->AddState(AccessibleStateType::DEFUNC);
515 pStateSet->AddState(AccessibleStateType::MANAGES_DESCENDANTS);
516 pStateSet->AddState(AccessibleStateType::ENABLED);
517 pStateSet->AddState(AccessibleStateType::OPAQUE);
519 pStateSet->AddState(AccessibleStateType::SHOWING);
521 pStateSet->AddState(AccessibleStateType::VISIBLE);
530 return "ScAccessiblePreviewTable";
536 sal_Int32 nOldSize(aSequence.getLength());
537 aSequence.realloc(nOldSize + 1);
539 aSequence.getArray()[nOldSize] =
"com.sun.star.table.AccessibleTableView";
553 return css::uno::Sequence<sal_Int8>();
575 sName = sName.replaceFirst(
"%1", sCoreName);
606 if ( nColumns > 0 && nRows > 0 )
612 pRowInfo[0].nPixelStart,
613 pColInfo[nColumns-1].nPixelEnd,
614 pRowInfo[nRows-1].nPixelEnd );
623 (rxParentStates.is() && rxParentStates->contains(AccessibleStateType::DEFUNC));
virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override
virtual sal_Int32 SAL_CALL getAccessibleIndexInParent() override
Return this objects index among the parents children.
const ScPreviewLocationData & GetLocationData()
SCCOL GetColMerge() const
virtual sal_Int32 SAL_CALL getAccessibleColumnCount() override
virtual void SAL_CALL acquire() noexcept override
virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const &rType) override
===== XInterface =====================================================
void AddAccessibilityObject(SfxListener &rObject)
virtual sal_Int32 SAL_CALL getAccessibleIndex(sal_Int32 nRow, sal_Int32 nColumn) override
OUString ScResId(TranslateId aId)
std::unique_ptr< ScPreviewTableInfo > mpTableInfo
virtual sal_Int32 SAL_CALL getAccessibleChildCount() override
===== XAccessibleContext ==============================================
virtual sal_Int32 SAL_CALL getAccessibleRowExtentAt(sal_Int32 nRow, sal_Int32 nColumn) override
virtual sal_Int32 SAL_CALL getAccessibleRow(sal_Int32 nChildIndex) override
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override
Return a reference to the parent.
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint(const css::awt::Point &aPoint) override
virtual sal_Bool SAL_CALL containsPoint(const css::awt::Point &rPoint) override
===== XAccessibleComponent ============================================
constexpr TypedWhichId< ScMergeAttr > ATTR_MERGE(144)
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
Returns a list of all supported services.
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleCaption() override
virtual void SAL_CALL release() noexcept override
virtual tools::Rectangle GetBoundingBox() const override
Return the object's current bounding box relative to the parent object.
virtual void SAL_CALL acquire() noexcept override
virtual OUString SAL_CALL getAccessibleRowDescription(sal_Int32 nRow) override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleCellAt(sal_Int32 nRow, sal_Int32 nColumn) override
virtual sal_Bool SAL_CALL isAccessibleSelected(sal_Int32 nRow, sal_Int32 nColumn) override
virtual css::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleRows() override
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
===== SfxListener =====================================================
virtual css::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleColumns() override
tools::Rectangle GetWindowExtentsRelative(const vcl::Window *pRelativeWindow) const
virtual sal_Int32 SAL_CALL getAccessibleColumn(sal_Int32 nChildIndex) override
virtual sal_Bool SAL_CALL isAccessibleColumnSelected(sal_Int32 nColumn) override
SC_DLLPUBLIC const SfxPoolItem * GetAttr(SCCOL nCol, SCROW nRow, SCTAB nTab, sal_uInt16 nWhich) const
virtual tools::Rectangle GetBoundingBoxOnScreen() const override
Return the object's current bounding box relative to the desktop.
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
Returns a list of all supported services.
virtual OUString createAccessibleName() override
Return the object's current name.
virtual ~ScAccessiblePreviewTable() override
virtual sal_Int32 SAL_CALL getAccessibleRowCount() override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleSummary() override
virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override
===== XTypeProvider ===================================================
virtual void SAL_CALL disposing() override
void IsObjectValid() const
virtual css::uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet() override
Return the set of current states.
virtual OUString SAL_CALL getImplementationName() override
===== XServiceInfo ====================================================
ScAccessiblePreviewTable(const css::uno::Reference< css::accessibility::XAccessible > &rxParent, ScPreviewShell *pViewShell, sal_Int32 nIndex)
css::uno::Sequence< T > concatSequences(const css::uno::Sequence< T > &rS1, const Ss &...rSn)
virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const &rType) SAL_OVERRIDE
virtual void SAL_CALL grabFocus() override
virtual OUString SAL_CALL getAccessibleColumnDescription(sal_Int32 nColumn) override
virtual void SAL_CALL release() noexcept override
virtual void SAL_CALL disposing() override
virtual sal_Bool SAL_CALL isAccessibleRowSelected(sal_Int32 nRow) override
void RemoveAccessibilityObject(SfxListener &rObject)
void FillTableInfo() const
ScPreviewShell * mpViewShell
virtual css::uno::Reference< css::accessibility::XAccessibleTable > SAL_CALL getAccessibleColumnHeaders() override
constexpr OUStringLiteral STR_ACC_TABLE_DESCR
virtual css::uno::Reference< css::accessibility::XAccessibleTable > SAL_CALL getAccessibleRowHeaders() override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild(sal_Int32 i) override
Return the specified child or NULL if index is invalid.
virtual OUString createAccessibleDescription() override
Return this object's description.
ScDocument & GetDocument()
vcl::Window * GetWindow() const
Size GetOutputSizePixel() const
virtual sal_Int32 SAL_CALL getAccessibleColumnExtentAt(sal_Int32 nRow, sal_Int32 nColumn) override
void CommitChange(const css::accessibility::AccessibleEventObject &rEvent) const
Calls all Listener to tell they the change.
SCROW GetRowMerge() const
virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const &rType) override
===== XInterface =====================================================
void GetTableInfo(const tools::Rectangle &rVisiblePixel, ScPreviewTableInfo &rInfo) const
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
===== SfxListener =====================================================
SC_DLLPUBLIC bool GetName(SCTAB nTab, OUString &rName) const
virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() SAL_OVERRIDE
virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext() override
===== XAccessible =====================================================