diff options
Diffstat (limited to 'sw')
-rw-r--r-- | sw/inc/OnlineAccessibilityCheck.hxx | 1 | ||||
-rw-r--r-- | sw/inc/bitmaps.hlst | 3 | ||||
-rw-r--r-- | sw/inc/strings.hrc | 2 | ||||
-rw-r--r-- | sw/source/core/txtnode/OnlineAccessibilityCheck.cxx | 17 | ||||
-rw-r--r-- | sw/source/uibase/inc/AccessibilityStatusBarControl.hxx | 3 | ||||
-rw-r--r-- | sw/source/uibase/uiview/view0.cxx | 7 | ||||
-rw-r--r-- | sw/source/uibase/utlui/AccessibilityStatusBarControl.cxx | 50 |
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 |