sw/source/core/access/AccessibilityCheck.cxx | 52 +++++++++++++++++++++++++++ 1 file changed, 52 insertions(+)
New commits: commit 2c3d3bf9d439dcf2c3e6f016ba28fb8a9f6beddb Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Sun Dec 15 17:36:24 2019 +0100 Commit: Tomaž Vajngerl <qui...@gmail.com> CommitDate: Sat Dec 28 12:37:15 2019 +0100 acc. check: check for blinking text Change-Id: If023c9b6c6225a3889f2fd68b8ed62abb4365d48 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/85906 Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> Tested-by: Tomaž Vajngerl <qui...@gmail.com> diff --git a/sw/source/core/access/AccessibilityCheck.cxx b/sw/source/core/access/AccessibilityCheck.cxx index 5143ddfb6887..19728a0539bf 100644 --- a/sw/source/core/access/AccessibilityCheck.cxx +++ b/sw/source/core/access/AccessibilityCheck.cxx @@ -39,6 +39,7 @@ OUString sDocumentDefaultLanguage("Document default language is not set"); OUString sStyleNoLanguage("Style '%STYLE_NAME%' has no language set"); OUString sDocumentTitle("Document title is not set"); OUString sTextContrast("Text contrast is too low."); +OUString sTextBlinking("Blinking text."); class BaseCheck { @@ -393,6 +394,56 @@ public: } }; +class BlinkingTextCheck : public NodeCheck +{ +private: + void checkTextRange(uno::Reference<text::XTextRange> const& xTextRange) + { + uno::Reference<beans::XPropertySet> xProperties(xTextRange, uno::UNO_QUERY); + if (xProperties.is() && xProperties->getPropertySetInfo()->hasPropertyByName("CharFlash")) + { + bool bBlinking = false; + xProperties->getPropertyValue("CharFlash") >>= bBlinking; + + if (bBlinking) + { + svx::AccessibilityIssue aIssue; + aIssue.m_aIssueText = sTextBlinking; + m_rIssueCollection.push_back(aIssue); + } + } + } + +public: + BlinkingTextCheck(std::vector<svx::AccessibilityIssue>& rIssueCollection) + : NodeCheck(rIssueCollection) + { + } + + void check(SwNode* pCurrent) override + { + if (pCurrent->IsTextNode()) + { + SwTextNode* pTextNode = pCurrent->GetTextNode(); + uno::Reference<text::XTextContent> xParagraph; + xParagraph = SwXParagraph::CreateXParagraph(*pTextNode->GetDoc(), pTextNode); + if (xParagraph.is()) + { + uno::Reference<container::XEnumerationAccess> xRunEnumAccess(xParagraph, + uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xRunEnum + = xRunEnumAccess->createEnumeration(); + while (xRunEnum->hasMoreElements()) + { + uno::Reference<text::XTextRange> xRun(xRunEnum->nextElement(), uno::UNO_QUERY); + if (xRun.is()) + checkTextRange(xRun); + } + } + } + } +}; + class DocumentCheck : public BaseCheck { public: @@ -510,6 +561,7 @@ void AccessibilityCheck::check() aNodeChecks.push_back(std::make_unique<NumberingCheck>(m_aIssueCollection)); aNodeChecks.push_back(std::make_unique<HyperlinkCheck>(m_aIssueCollection)); aNodeChecks.push_back(std::make_unique<TextContrastCheck>(m_aIssueCollection)); + aNodeChecks.push_back(std::make_unique<BlinkingTextCheck>(m_aIssueCollection)); auto const& pNodes = m_pDoc->GetNodes(); SwNode* pNode = nullptr; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits