sw/source/core/access/AccessibilityCheck.cxx | 125 +++++++++++++++++++++------ sw/source/core/inc/AccessibilityCheck.hxx | 4 2 files changed, 103 insertions(+), 26 deletions(-)
New commits: commit 239b5aa976cd4d052ea39ed700e47114f6057dff Author: Tomaž Vajngerl <[email protected]> AuthorDate: Sat Dec 7 13:12:12 2019 +0100 Commit: Tomaž Vajngerl <[email protected]> CommitDate: Sat Dec 7 13:20:13 2019 +0100 acc. check: add check for Tables Tables shouldn't use splitted or merge cells. Change-Id: Ife6726413d9dd1ead098c081e03f4f82540f1012 diff --git a/sw/source/core/access/AccessibilityCheck.cxx b/sw/source/core/access/AccessibilityCheck.cxx index f327105dc864..2f724d17b102 100644 --- a/sw/source/core/access/AccessibilityCheck.cxx +++ b/sw/source/core/access/AccessibilityCheck.cxx @@ -19,6 +19,55 @@ namespace { OUString sNoAlt("No alt text for graphic '%OBJECT_NAME%'"); +OUString sTableMergeSplit("Table '%OBJECT_NAME%' contains merges or splits"); +} + +void AccessibilityCheck::checkTableNode(SwTableNode* pTableNode) +{ + if (!pTableNode) + return; + + SwTable const& rTable = pTableNode->GetTable(); + if (rTable.IsTableComplex()) + { + OUString sName = rTable.GetTableStyleName(); + AccessibilityCheckResult aResult; + aResult.m_aIssueText = sTableMergeSplit.replaceAll("%OBJECT_NAME%", sName); + m_aAccessibilityCheckResultCollection.push_back(aResult); + } + else + { + if (rTable.GetTabLines().size() > 1) + { + int i = 0; + size_t nFirstLineSize = 0; + bool bAllColumnsSameSize = true; + + for (SwTableLine const* pTableLine : rTable.GetTabLines()) + { + if (i == 0) + { + nFirstLineSize = pTableLine->GetTabBoxes().size(); + } + else + { + size_t nLineSize = pTableLine->GetTabBoxes().size(); + if (nFirstLineSize != nLineSize) + { + bAllColumnsSameSize = false; + } + } + i++; + } + if (!bAllColumnsSameSize) + { + OUString sName = rTable.GetTableStyleName(); + AccessibilityCheckResult aResult; + aResult.m_aIssueText = sTableMergeSplit.replaceAll("%OBJECT_NAME%", sName); + m_aAccessibilityCheckResultCollection.push_back(aResult); + } + } + } } // Check NoTextNodes: Graphic, OLE @@ -73,6 +122,12 @@ void AccessibilityCheck::check() if (pNoTextNode) checkNoTextNode(pNoTextNode); } + if (pNode->GetNodeType() & SwNodeType::Table) + { + SwTableNode* pTableNode = pNode->GetTableNode(); + if (pTableNode) + checkTableNode(pTableNode); + } } } diff --git a/sw/source/core/inc/AccessibilityCheck.hxx b/sw/source/core/inc/AccessibilityCheck.hxx index 8a55142c63dd..2540b3063be5 100644 --- a/sw/source/core/inc/AccessibilityCheck.hxx +++ b/sw/source/core/inc/AccessibilityCheck.hxx @@ -32,6 +32,7 @@ public: } void check(); + void checkTableNode(SwTableNode* pTableNode); void checkNoTextNode(SwNoTextNode* pNoTextNode); void checkObject(SdrObject* pObject); }; commit 20b54fa8c904e50223807d002eb78d3f8cb16176 Author: Tomaž Vajngerl <[email protected]> AuthorDate: Sat Dec 7 13:08:16 2019 +0100 Commit: Tomaž Vajngerl <[email protected]> CommitDate: Sat Dec 7 13:18:20 2019 +0100 extract accessibility checks to it's own function Change-Id: I986b863d152b515927c62785bfed39354559a743 diff --git a/sw/source/core/access/AccessibilityCheck.cxx b/sw/source/core/access/AccessibilityCheck.cxx index a464dbd3e263..f327105dc864 100644 --- a/sw/source/core/access/AccessibilityCheck.cxx +++ b/sw/source/core/access/AccessibilityCheck.cxx @@ -14,15 +14,53 @@ #include <IDocumentDrawModelAccess.hxx> #include <drawdoc.hxx> #include <svx/svdpage.hxx> +#include <swtable.hxx> + +namespace +{ +OUString sNoAlt("No alt text for graphic '%OBJECT_NAME%'"); +} + +// Check NoTextNodes: Graphic, OLE +void AccessibilityCheck::checkNoTextNode(SwNoTextNode* pNoTextNode) +{ + if (!pNoTextNode) + return; + + OUString sAlternative = pNoTextNode->GetTitle(); + if (sAlternative.isEmpty()) + { + OUString sName = pNoTextNode->GetFlyFormat()->GetName(); + AccessibilityCheckResult aResult; + aResult.m_aIssueText = sNoAlt.replaceAll("%OBJECT_NAME%", sName); + m_aAccessibilityCheckResultCollection.push_back(aResult); + } +} + +// Check Shapes, TextBox +void AccessibilityCheck::checkObject(SdrObject* pObject) +{ + if (!pObject) + return; + + if (pObject->GetObjIdentifier() == OBJ_CUSTOMSHAPE || pObject->GetObjIdentifier() == OBJ_TEXT) + { + OUString sAlternative = pObject->GetTitle(); + if (sAlternative.isEmpty()) + { + OUString sName = pObject->GetName(); + AccessibilityCheckResult aResult; + aResult.m_aIssueText = sNoAlt.replaceAll("%OBJECT_NAME%", sName); + m_aAccessibilityCheckResultCollection.push_back(aResult); + } + } +} void AccessibilityCheck::check() { if (m_pDoc == nullptr) return; - OUString sNoAlt("No alt text for graphic '%OBJECT_NAME%'"); - - // Check NoTextNodes: Graphic, OLE auto const& pNodes = m_pDoc->GetNodes(); for (sal_uLong n = 0; n < pNodes.Count(); ++n) { @@ -33,21 +71,11 @@ void AccessibilityCheck::check() { SwNoTextNode* pNoTextNode = pNode->GetNoTextNode(); if (pNoTextNode) - { - OUString sAlternative = pNoTextNode->GetTitle(); - if (sAlternative.isEmpty()) - { - OUString sName = pNoTextNode->GetFlyFormat()->GetName(); - AccessibilityCheckResult aResult; - aResult.m_aIssueText = sNoAlt.replaceAll("%OBJECT_NAME%", sName); - m_aAccessibilityCheckResultCollection.push_back(aResult); - } - } + checkNoTextNode(pNoTextNode); } } } - // Check Shapes, TextBox IDocumentDrawModelAccess& rDrawModelAccess = m_pDoc->getIDocumentDrawModelAccess(); auto* pModel = rDrawModelAccess.GetDrawModel(); for (sal_uInt16 nPage = 0; nPage < pModel->GetPageCount(); ++nPage) @@ -56,18 +84,8 @@ void AccessibilityCheck::check() for (size_t nObject = 0; nObject < pPage->GetObjCount(); ++nObject) { SdrObject* pObject = pPage->GetObj(nObject); - if (pObject->GetObjIdentifier() == OBJ_CUSTOMSHAPE - || pObject->GetObjIdentifier() == OBJ_TEXT) - { - OUString sAlternative = pObject->GetTitle(); - if (sAlternative.isEmpty()) - { - OUString sName = pObject->GetName(); - AccessibilityCheckResult aResult; - aResult.m_aIssueText = sNoAlt.replaceAll("%OBJECT_NAME%", sName); - m_aAccessibilityCheckResultCollection.push_back(aResult); - } - } + if (pObject) + checkObject(pObject); } } } diff --git a/sw/source/core/inc/AccessibilityCheck.hxx b/sw/source/core/inc/AccessibilityCheck.hxx index 2fcca0ce9460..8a55142c63dd 100644 --- a/sw/source/core/inc/AccessibilityCheck.hxx +++ b/sw/source/core/inc/AccessibilityCheck.hxx @@ -13,6 +13,7 @@ #include <svx/AccessibilityCheckDialog.hxx> #include <doc.hxx> +#include <node.hxx> class AccessibilityCheck { @@ -31,6 +32,8 @@ public: } void check(); + void checkNoTextNode(SwNoTextNode* pNoTextNode); + void checkObject(SdrObject* pObject); }; #endif _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
