summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2022-10-26 22:02:44 +0200
committerTomaž Vajngerl <quikee@gmail.com>2022-12-24 12:15:51 +0000
commitde9320f7fc86c1421ff59eb218a04c6c90049c39 (patch)
tree69d99295b04fb9ee66c6a8726882988446382b8e
parentf8a20f000d0bbac0b1cd4f2bc0b74cef4677bf2e (diff)
sw: improve a11y check statusbar
Change-Id: I86f589d6618ae80f26542cf83b6b5e3695ca35f8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142193 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> (cherry picked from commit e96dd14288172187372b3a4f82de870b1d660020) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144494 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
-rw-r--r--sw/inc/strings.hrc1
-rw-r--r--sw/sdi/swriter.sdi2
-rw-r--r--sw/source/uibase/inc/AccessibilityStatusBarControl.hxx7
-rw-r--r--sw/source/uibase/uiview/view2.cxx16
-rw-r--r--sw/source/uibase/utlui/AccessibilityStatusBarControl.cxx45
-rw-r--r--sw/uiconfig/sglobal/statusbar/statusbar.xml2
-rw-r--r--sw/uiconfig/swriter/statusbar/statusbar.xml2
7 files changed, 53 insertions, 22 deletions
diff --git a/sw/inc/strings.hrc b/sw/inc/strings.hrc
index 5748ba7122ff..b4b03968a1eb 100644
--- a/sw/inc/strings.hrc
+++ b/sw/inc/strings.hrc
@@ -1087,6 +1087,7 @@
#define STR_BOOKCTRL_HINT NC_("STR_BOOKCTRL_HINT", "Page number in document. Click to open Go to Page dialog or right-click for bookmark list.")
#define STR_BOOKCTRL_HINT_EXTENDED NC_("STR_BOOKCTRL_HINT_EXTENDED", "Page number in document (Page number on printed document). Click to open Go to Page dialog.")
#define STR_TMPLCTRL_HINT NC_("STR_TMPLCTRL_HINT", "Page Style. Right-click to change style or click to open Style dialog.")
+#define STR_ACCESSIBILITY_CHECK_HINT NC_("STR_ACCESSIBILITY_CHECK_HINT", "Status of the accessibility check.")
// Strings for textual attributes.
#define STR_DROP_OVER NC_("STR_DROP_OVER", "Drop Caps over")
diff --git a/sw/sdi/swriter.sdi b/sw/sdi/swriter.sdi
index f001b70ebb90..bc58977788a4 100644
--- a/sw/sdi/swriter.sdi
+++ b/sw/sdi/swriter.sdi
@@ -5970,7 +5970,7 @@ SfxStringItem StateWordCount FN_STAT_WORDCOUNT
GroupId = SfxGroupId::View;
]
-SfxStringItem StateAccessibilityCheck FN_STAT_ACCESSIBILITY_CHECK
+SfxInt32Item StateAccessibilityCheck FN_STAT_ACCESSIBILITY_CHECK
[
AutoUpdate = FALSE,
diff --git a/sw/source/uibase/inc/AccessibilityStatusBarControl.hxx b/sw/source/uibase/inc/AccessibilityStatusBarControl.hxx
index 52e64b99f5ac..63744499d083 100644
--- a/sw/source/uibase/inc/AccessibilityStatusBarControl.hxx
+++ b/sw/source/uibase/inc/AccessibilityStatusBarControl.hxx
@@ -15,14 +15,17 @@ namespace sw
{
class AccessibilityStatusBarControl final : public SfxStatusBarControl
{
+ sal_Int32 mnIssues;
+
public:
SFX_DECL_STATUSBAR_CONTROL();
AccessibilityStatusBarControl(sal_uInt16 nSlotId, sal_uInt16 nId, StatusBar& rStb);
virtual ~AccessibilityStatusBarControl() override;
- virtual void StateChangedAtStatusBarControl(sal_uInt16 nSID, SfxItemState eState,
- const SfxPoolItem* pState) override;
+ void StateChangedAtStatusBarControl(sal_uInt16 nSID, SfxItemState eState,
+ const SfxPoolItem* pState) override;
+ void Paint(const UserDrawEvent& rEvent) override;
};
} // end sw
diff --git a/sw/source/uibase/uiview/view2.cxx b/sw/source/uibase/uiview/view2.cxx
index 3472bf63ef0e..a5cdc27fd059 100644
--- a/sw/source/uibase/uiview/view2.cxx
+++ b/sw/source/uibase/uiview/view2.cxx
@@ -1614,19 +1614,11 @@ void SwView::StateStatusLine(SfxItemSet &rSet)
break;
case FN_STAT_ACCESSIBILITY_CHECK:
{
- if (rShell.GetDoc()->getOnlineAccessibilityCheck())
+ std::unique_ptr<sw::OnlineAccessibilityCheck> const& rOnlineAccessibilityCheck = rShell.GetDoc()->getOnlineAccessibilityCheck();
+ if (rOnlineAccessibilityCheck)
{
- auto nIssues = rShell.GetDoc()->getOnlineAccessibilityCheck()->getNumberOfAccessibilityIssues();
- OUString aString;
- if (nIssues > 0)
- {
- aString = u"Issues: " + OUString::number(nIssues);
- }
- else
- {
- aString = u"No Issues";
- }
- rSet.Put(SfxStringItem(FN_STAT_ACCESSIBILITY_CHECK, aString));
+ sal_Int32 nIssues = rOnlineAccessibilityCheck->getNumberOfAccessibilityIssues();
+ rSet.Put(SfxInt32Item(FN_STAT_ACCESSIBILITY_CHECK, nIssues));
}
}
break;
diff --git a/sw/source/uibase/utlui/AccessibilityStatusBarControl.cxx b/sw/source/uibase/utlui/AccessibilityStatusBarControl.cxx
index 55daee5d31d9..100313f709b1 100644
--- a/sw/source/uibase/utlui/AccessibilityStatusBarControl.cxx
+++ b/sw/source/uibase/utlui/AccessibilityStatusBarControl.cxx
@@ -10,16 +10,18 @@
#include <swtypes.hxx>
#include <strings.hrc>
#include <AccessibilityStatusBarControl.hxx>
-#include <svl/stritem.hxx>
+#include <svl/intitem.hxx>
#include <vcl/status.hxx>
+#include <vcl/event.hxx>
-SFX_IMPL_STATUSBAR_CONTROL(sw::AccessibilityStatusBarControl, SfxStringItem);
+SFX_IMPL_STATUSBAR_CONTROL(sw::AccessibilityStatusBarControl, SfxInt32Item);
namespace sw
{
AccessibilityStatusBarControl::AccessibilityStatusBarControl(sal_uInt16 _nSlotId, sal_uInt16 _nId,
StatusBar& rStb)
: SfxStatusBarControl(_nSlotId, _nId, rStb)
+ , mnIssues(0)
{
}
@@ -29,18 +31,51 @@ void AccessibilityStatusBarControl::StateChangedAtStatusBarControl(sal_uInt16 /*
SfxItemState eState,
const SfxPoolItem* pState)
{
+ if (eState != SfxItemState::DEFAULT)
+ {
+ mnIssues = -1;
+ }
+ else if (auto pItem = dynamic_cast<const SfxInt32Item*>(pState))
+ {
+ mnIssues = pItem->GetValue();
+ }
+ else
+ {
+ mnIssues = -1;
+ }
+
+ GetStatusBar().SetItemData(GetId(), nullptr); // necessary ?
+ GetStatusBar().SetItemText(GetId(), ""); // necessary ?
+
if (eState == SfxItemState::DEFAULT) // Can access pState
{
- GetStatusBar().SetItemText(GetId(), static_cast<const SfxStringItem*>(pState)->GetValue());
- GetStatusBar().SetQuickHelpText(GetId(), SwResId(STR_WORDCOUNT_HINT));
+ GetStatusBar().SetQuickHelpText(GetId(), SwResId(STR_ACCESSIBILITY_CHECK_HINT));
}
else
{
- GetStatusBar().SetItemText(GetId(), u"");
GetStatusBar().SetQuickHelpText(GetId(), u"");
}
}
+void AccessibilityStatusBarControl::Paint(const UserDrawEvent& rUserEvent)
+{
+ vcl::RenderContext* pRenderContext = rUserEvent.GetRenderContext();
+
+ tools::Rectangle aRect = rUserEvent.GetRect();
+ Color aOldLineColor = pRenderContext->GetLineColor();
+ Color aOldFillColor = pRenderContext->GetFillColor();
+
+ if (mnIssues > 0)
+ pRenderContext->SetFillColor(COL_RED);
+ else
+ pRenderContext->SetFillColor(COL_GREEN);
+
+ pRenderContext->DrawRect(aRect);
+
+ pRenderContext->SetLineColor(aOldLineColor);
+ pRenderContext->SetFillColor(aOldFillColor);
+}
+
} // end sw
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/uiconfig/sglobal/statusbar/statusbar.xml b/sw/uiconfig/sglobal/statusbar/statusbar.xml
index 2f2e54f21c6d..18f6871a3ac6 100644
--- a/sw/uiconfig/sglobal/statusbar/statusbar.xml
+++ b/sw/uiconfig/sglobal/statusbar/statusbar.xml
@@ -20,7 +20,7 @@
<statusbar:statusbar xmlns:statusbar="http://openoffice.org/2001/statusbar" xmlns:xlink="http://www.w3.org/1999/xlink">
<statusbar:statusbaritem xlink:href=".uno:StatePageNumber" statusbar:align="left" statusbar:autosize="true" statusbar:mandatory="true" statusbar:width="54"/>
<statusbar:statusbaritem xlink:href=".uno:StateWordCount" statusbar:align="left" statusbar:autosize="true"/>
- <statusbar:statusbaritem xlink:href=".uno:StateAccessibilityCheck" statusbar:align="left" statusbar:width="50"/>
+ <statusbar:statusbaritem xlink:href=".uno:StateAccessibilityCheck" statusbar:align="left" statusbar:ownerdraw="true" statusbar:width="32"/>
<statusbar:statusbaritem xlink:href=".uno:PageStyleName" statusbar:align="left" statusbar:autosize="true" statusbar:width="79"/>
<statusbar:statusbaritem xlink:href=".uno:LanguageStatus" statusbar:align="center" statusbar:autosize="true" statusbar:mandatory="false" statusbar:width="100"/>
<statusbar:statusbaritem xlink:href=".uno:InsertMode" statusbar:align="center" statusbar:mandatory="false" statusbar:width="55"/>
diff --git a/sw/uiconfig/swriter/statusbar/statusbar.xml b/sw/uiconfig/swriter/statusbar/statusbar.xml
index 090c44b1f941..09a7f76abb98 100644
--- a/sw/uiconfig/swriter/statusbar/statusbar.xml
+++ b/sw/uiconfig/swriter/statusbar/statusbar.xml
@@ -21,7 +21,7 @@
<statusbar:statusbaritem xlink:href=".uno:ModifiedStatus" statusbar:align="center" statusbar:ownerdraw="true" statusbar:mandatory="true" statusbar:width="16"/>
<statusbar:statusbaritem xlink:href=".uno:StatePageNumber" statusbar:align="left" statusbar:autosize="true" statusbar:mandatory="true" statusbar:width="54"/>
<statusbar:statusbaritem xlink:href=".uno:StateWordCount" statusbar:align="left" statusbar:autosize="true"/>
-<statusbar:statusbaritem xlink:href=".uno:StateAccessibilityCheck" statusbar:align="left" statusbar:width="50"/>
+ <statusbar:statusbaritem xlink:href=".uno:StateAccessibilityCheck" statusbar:align="left" statusbar:ownerdraw="true" statusbar:width="32"/>
<statusbar:statusbaritem xlink:href=".uno:PageStyleName" statusbar:align="left" statusbar:autosize="true" statusbar:width="79"/>
<statusbar:statusbaritem xlink:href=".uno:LanguageStatus" statusbar:align="center" statusbar:autosize="true" statusbar:mandatory="false" statusbar:width="100"/>
<statusbar:statusbaritem xlink:href=".uno:InsertMode" statusbar:align="center" statusbar:mandatory="false" statusbar:width="55"/>