summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
Diffstat (limited to 'sw')
-rw-r--r--sw/inc/OnlineAccessibilityCheck.hxx1
-rw-r--r--sw/inc/bitmaps.hlst3
-rw-r--r--sw/inc/strings.hrc2
-rw-r--r--sw/source/core/txtnode/OnlineAccessibilityCheck.cxx17
-rw-r--r--sw/source/uibase/inc/AccessibilityStatusBarControl.hxx3
-rw-r--r--sw/source/uibase/uiview/view0.cxx7
-rw-r--r--sw/source/uibase/utlui/AccessibilityStatusBarControl.cxx50
7 files changed, 54 insertions, 29 deletions
diff --git a/sw/inc/OnlineAccessibilityCheck.hxx b/sw/inc/OnlineAccessibilityCheck.hxx
index 5e1da9b77c99..e87f24d61d44 100644
--- a/sw/inc/OnlineAccessibilityCheck.hxx
+++ b/sw/inc/OnlineAccessibilityCheck.hxx
@@ -67,6 +67,7 @@ public:
OnlineAccessibilityCheck(SwDoc& rDocument);
void update(SwPosition const& rNewPos);
void resetAndQueue(SwNode* pNode);
+ void updateCheckerActivity();
sal_Int32 getNumberOfAccessibilityIssues() { return m_nAccessibilityIssues; }
};
diff --git a/sw/inc/bitmaps.hlst b/sw/inc/bitmaps.hlst
index 0ade4923b8fe..647d2fb2f073 100644
--- a/sw/inc/bitmaps.hlst
+++ b/sw/inc/bitmaps.hlst
@@ -110,4 +110,7 @@ inline constexpr OUStringLiteral RID_BMP_WRAP_CONTOUR_PARALLEL = u"sw/res/wr010.
inline constexpr OUStringLiteral RID_BMP_PREVIEW_FALLBACK = u"sw/res/image-example.png";
+inline constexpr OUStringLiteral RID_BMP_A11Y_CHECK_ISSUES_NOT_FOUND = u"svx/res/a11y_check_issues_not_found.png";
+inline constexpr OUStringLiteral RID_BMP_A11Y_CHECK_ISSUES_FOUND = u"svx/res/a11y_check_issues_found.png";
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/sw/inc/strings.hrc b/sw/inc/strings.hrc
index eef50782ebe5..7cf98621de2e 100644
--- a/sw/inc/strings.hrc
+++ b/sw/inc/strings.hrc
@@ -1095,7 +1095,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.")
+#define STR_ACCESSIBILITY_CHECK_HINT NC_("STR_ACCESSIBILITY_CHECK_HINT", "Status of the accessibility check.\nNumber of issues found: %issues%.")
// Strings for textual attributes.
#define STR_DROP_OVER NC_("STR_DROP_OVER", "Drop Caps over")
diff --git a/sw/source/core/txtnode/OnlineAccessibilityCheck.cxx b/sw/source/core/txtnode/OnlineAccessibilityCheck.cxx
index f919ce124a88..75e727b5e6d9 100644
--- a/sw/source/core/txtnode/OnlineAccessibilityCheck.cxx
+++ b/sw/source/core/txtnode/OnlineAccessibilityCheck.cxx
@@ -170,7 +170,7 @@ void OnlineAccessibilityCheck::initialCheck()
m_bInitialCheck = true;
}
-void OnlineAccessibilityCheck::update(const SwPosition& rNewPos)
+void OnlineAccessibilityCheck::updateCheckerActivity()
{
bool bOnlineCheckStatus
= officecfg::Office::Common::Accessibility::OnlineAccessibilityCheck::get();
@@ -185,13 +185,24 @@ void OnlineAccessibilityCheck::update(const SwPosition& rNewPos)
if (!bOnlineCheckStatus)
{
clearAccessibilityIssuesFromAllNodes(); // cleanup all accessibility check data on nodes
- updateStatusbar();
+ m_nAccessibilityIssues = -1;
+ }
+ else
+ {
+ m_nAccessibilityIssues = 0;
}
m_bOnlineCheckStatus = bOnlineCheckStatus;
+
+ updateStatusbar();
}
+}
- if (!bOnlineCheckStatus)
+void OnlineAccessibilityCheck::update(const SwPosition& rNewPos)
+{
+ updateCheckerActivity();
+
+ if (!m_bOnlineCheckStatus)
return;
initialCheck();
diff --git a/sw/source/uibase/inc/AccessibilityStatusBarControl.hxx b/sw/source/uibase/inc/AccessibilityStatusBarControl.hxx
index 63744499d083..72940cdbce8a 100644
--- a/sw/source/uibase/inc/AccessibilityStatusBarControl.hxx
+++ b/sw/source/uibase/inc/AccessibilityStatusBarControl.hxx
@@ -10,12 +10,15 @@
#pragma once
#include <sfx2/stbitem.hxx>
+#include <vcl/image.hxx>
namespace sw
{
class AccessibilityStatusBarControl final : public SfxStatusBarControl
{
sal_Int32 mnIssues;
+ Image maImageIssuesFound;
+ Image maImageIssuesNotFound;
public:
SFX_DECL_STATUSBAR_CONTROL();
diff --git a/sw/source/uibase/uiview/view0.cxx b/sw/source/uibase/uiview/view0.cxx
index c6b9d0e22d34..3f05a607c984 100644
--- a/sw/source/uibase/uiview/view0.cxx
+++ b/sw/source/uibase/uiview/view0.cxx
@@ -34,6 +34,7 @@
#include <svx/srchdlg.hxx>
#include <sfx2/viewfrm.hxx>
#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
#include <sfx2/sidebar/SidebarChildWindow.hxx>
#include <uivwimp.hxx>
#include <avmedia/mediaplayer.hxx>
@@ -51,6 +52,7 @@
#include <cmdid.h>
#include <globdoc.hxx>
#include <wview.hxx>
+#include <OnlineAccessibilityCheck.hxx>
#define ShellClass_SwView
#define ShellClass_Text
@@ -595,6 +597,11 @@ void SwView::ExecViewOptions(SfxRequest &rReq)
std::shared_ptr<comphelper::ConfigurationChanges> batch(comphelper::ConfigurationChanges::create());
officecfg::Office::Common::Accessibility::OnlineAccessibilityCheck::set(bSet, batch);
batch->commit();
+
+ SwDocShell *pDocSh = GetDocShell();
+ SwDoc* pDocument = pDocSh? pDocSh->GetDoc() : nullptr;
+ if (pDocument)
+ pDocument->getOnlineAccessibilityCheck()->updateCheckerActivity();
}
break;
diff --git a/sw/source/uibase/utlui/AccessibilityStatusBarControl.cxx b/sw/source/uibase/utlui/AccessibilityStatusBarControl.cxx
index 100313f709b1..d0ce67fc2349 100644
--- a/sw/source/uibase/utlui/AccessibilityStatusBarControl.cxx
+++ b/sw/source/uibase/utlui/AccessibilityStatusBarControl.cxx
@@ -13,6 +13,8 @@
#include <svl/intitem.hxx>
#include <vcl/status.hxx>
#include <vcl/event.hxx>
+#include <officecfg/Office/Common.hxx>
+#include <bitmaps.hlst>
SFX_IMPL_STATUSBAR_CONTROL(sw::AccessibilityStatusBarControl, SfxInt32Item);
@@ -22,6 +24,8 @@ AccessibilityStatusBarControl::AccessibilityStatusBarControl(sal_uInt16 _nSlotId
StatusBar& rStb)
: SfxStatusBarControl(_nSlotId, _nId, rStb)
, mnIssues(0)
+ , maImageIssuesFound(Image(StockImage::Yes, RID_BMP_A11Y_CHECK_ISSUES_FOUND))
+ , maImageIssuesNotFound(Image(StockImage::Yes, RID_BMP_A11Y_CHECK_ISSUES_NOT_FOUND))
{
}
@@ -31,49 +35,45 @@ 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;
- }
+ mnIssues = -1;
- GetStatusBar().SetItemData(GetId(), nullptr); // necessary ?
- GetStatusBar().SetItemText(GetId(), ""); // necessary ?
+ bool bOnlineCheckStatus
+ = officecfg::Office::Common::Accessibility::OnlineAccessibilityCheck::get();
- if (eState == SfxItemState::DEFAULT) // Can access pState
+ if (eState == SfxItemState::DEFAULT && bOnlineCheckStatus)
{
- GetStatusBar().SetQuickHelpText(GetId(), SwResId(STR_ACCESSIBILITY_CHECK_HINT));
+ if (auto pItem = dynamic_cast<const SfxInt32Item*>(pState))
+ mnIssues = pItem->GetValue();
+ OUString aString = SwResId(STR_ACCESSIBILITY_CHECK_HINT)
+ .replaceFirst("%issues%", OUString::number(mnIssues));
+ GetStatusBar().SetQuickHelpText(GetId(), aString);
}
else
{
GetStatusBar().SetQuickHelpText(GetId(), u"");
}
+
+ GetStatusBar().Invalidate();
}
void AccessibilityStatusBarControl::Paint(const UserDrawEvent& rUserEvent)
{
+ if (mnIssues < 0)
+ return;
+
vcl::RenderContext* pRenderContext = rUserEvent.GetRenderContext();
tools::Rectangle aRect = rUserEvent.GetRect();
- Color aOldLineColor = pRenderContext->GetLineColor();
- Color aOldFillColor = pRenderContext->GetFillColor();
+ const tools::Rectangle aControlRect = getControlRect();
- if (mnIssues > 0)
- pRenderContext->SetFillColor(COL_RED);
- else
- pRenderContext->SetFillColor(COL_GREEN);
+ Image aImage = mnIssues > 0 ? maImageIssuesFound : maImageIssuesNotFound;
+
+ Size aSize(aImage.GetSizePixel());
- pRenderContext->DrawRect(aRect);
+ auto aPosition = Point(aRect.Left() + (aControlRect.GetWidth() - aSize.Width()) / 2,
+ aRect.Top() + (aControlRect.GetHeight() - aSize.Height()) / 2);
- pRenderContext->SetLineColor(aOldLineColor);
- pRenderContext->SetFillColor(aOldFillColor);
+ pRenderContext->DrawImage(aPosition, aImage);
}
} // end sw