[Libreoffice-commits] core.git: vcl/qt5
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Tue Oct 30 20:09:54 UTC 2018
vcl/qt5/Qt5AccessibleWidget.cxx | 68 ++++++++++++++++++++++++++++++++++++++--
1 file changed, 65 insertions(+), 3 deletions(-)
New commits:
commit c2a9207e28c11132d5c3d4817c8a903a3f38ecd1
Author: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
AuthorDate: Tue Oct 30 12:13:32 2018 +0100
Commit: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
CommitDate: Tue Oct 30 21:09:27 2018 +0100
qt5 a11y: Implement QAccessibleTextInterface::attributes
Only a few basic attributes for now
Change-Id: I1147e4feaf9eac3664142a678e918a65e9a7b2a3
Reviewed-on: https://gerrit.libreoffice.org/62633
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
diff --git a/vcl/qt5/Qt5AccessibleWidget.cxx b/vcl/qt5/Qt5AccessibleWidget.cxx
index 637dd78ba343..b75cda8cc454 100644
--- a/vcl/qt5/Qt5AccessibleWidget.cxx
+++ b/vcl/qt5/Qt5AccessibleWidget.cxx
@@ -41,6 +41,8 @@
#include <com/sun/star/accessibility/XAccessibleStateSet.hpp>
#include <com/sun/star/accessibility/XAccessibleText.hpp>
#include <com/sun/star/accessibility/XAccessibleValue.hpp>
+#include <com/sun/star/awt/FontWeight.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/uno/Sequence.hxx>
#include <comphelper/AccessibleImplementationHelper.hxx>
@@ -49,6 +51,7 @@
using namespace css;
using namespace css::accessibility;
+using namespace css::beans;
using namespace css::uno;
Qt5AccessibleWidget::Qt5AccessibleWidget(const Reference<XAccessible> xAccessible)
@@ -725,11 +728,70 @@ void Qt5AccessibleWidget::addSelection(int /* startOffset */, int /* endOffset *
{
SAL_INFO("vcl.qt5", "Unsupported QAccessibleTextInterface::addSelection");
}
-QString Qt5AccessibleWidget::attributes(int /* offset */, int* /* startOffset */,
- int* /* endOffset */) const
+
+namespace
+{
+OUString lcl_convertFontWeight(double fontWeight)
+{
+ if (fontWeight == awt::FontWeight::THIN || fontWeight == awt::FontWeight::ULTRALIGHT)
+ return "100";
+ if (fontWeight == awt::FontWeight::LIGHT)
+ return "200";
+ if (fontWeight == awt::FontWeight::SEMILIGHT)
+ return "300";
+ if (fontWeight == awt::FontWeight::NORMAL)
+ return "normal";
+ if (fontWeight == awt::FontWeight::SEMIBOLD)
+ return "500";
+ if (fontWeight == awt::FontWeight::BOLD)
+ return "bold";
+ if (fontWeight == awt::FontWeight::ULTRABOLD)
+ return "800";
+ if (fontWeight == awt::FontWeight::BLACK)
+ return "900";
+
+ // awt::FontWeight::DONTKNOW || fontWeight == awt::FontWeight::NORMAL
+ return "normal";
+}
+}
+
+QString Qt5AccessibleWidget::attributes(int offset, int* startOffset, int* endOffset) const
{
SAL_INFO("vcl.qt5", "Unsupported QAccessibleTextInterface::attributes");
- return QString();
+ Reference<XAccessibleText> xText(m_xAccessible, UNO_QUERY);
+ if (!xText.is())
+ return QString();
+
+ Sequence<PropertyValue> attribs = xText->getCharacterAttributes(offset, Sequence<OUString>());
+ const PropertyValue* pValues = attribs.getConstArray();
+ OUString aRet;
+ for (sal_Int32 i = 0; i < attribs.getLength(); i++)
+ {
+ if (pValues[i].Name == "CharFontName")
+ {
+ OUString aStr;
+ pValues[i].Value >>= aStr;
+ aRet += "font-family:" + aStr + ";";
+ continue;
+ }
+ if (pValues[i].Name == "CharHeight")
+ {
+ double fHeight;
+ pValues[i].Value >>= fHeight;
+ aRet += "font-size:" + OUString::number(fHeight) + "pt;";
+ continue;
+ }
+ if (pValues[i].Name == "CharWeight")
+ {
+ double fWeight;
+ pValues[i].Value >>= fWeight;
+ aRet += "font-weight:" + lcl_convertFontWeight(fWeight) + ";";
+ continue;
+ }
+ }
+ *startOffset = offset;
+ *endOffset = offset + 1;
+ return toQString(aRet);
}
int Qt5AccessibleWidget::characterCount() const
{
More information about the Libreoffice-commits
mailing list