tdf#142978 Remove a11y check dialog

in favor of sidebar deck

Change-Id: I2daf34edbe71341ebc44ca9b966c97f8e494d583
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149433
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
diff --git a/filter/source/pdf/impdialog.cxx b/filter/source/pdf/impdialog.cxx
index d898a9f..06fb46b9 100644
--- a/filter/source/pdf/impdialog.cxx
+++ b/filter/source/pdf/impdialog.cxx
@@ -27,7 +27,6 @@
#include <comphelper/diagnose_ex.hxx>
#include <sfx2/objsh.hxx>
#include <svl/stritem.hxx>
#include <svx/AccessibilityCheckDialog.hxx>
#include <sfx2/dispatch.hxx>
#include <sfx2/sfxsids.hrc>

@@ -386,12 +385,6 @@ ImpPDFTabDialog::~ImpPDFTabDialog()
{
    maConfigItem.WriteModifiedConfig();
    maConfigI18N.WriteModifiedConfig();
    if (mpAccessibilityCheckDialog)
    {
        // restore set_modal to its original state
        mpAccessibilityCheckDialog->getDialog()->set_modal(false);
        mpAccessibilityCheckDialog->response(RET_CANCEL);
    }
}

void ImpPDFTabDialog::PageCreated(const OString& rId, SfxTabPage& rPage)
diff --git a/filter/source/pdf/impdialog.hxx b/filter/source/pdf/impdialog.hxx
index 45442c5..cc6e464 100644
--- a/filter/source/pdf/impdialog.hxx
+++ b/filter/source/pdf/impdialog.hxx
@@ -21,7 +21,6 @@

#include <sfx2/tabdlg.hxx>
#include <sfx2/passwd.hxx>
#include <svx/AccessibilityCheckDialog.hxx>

#include <vcl/pdfwriter.hxx>
#include <vcl/FilterConfigItem.hxx>
@@ -129,8 +128,6 @@ class ImpPDFTabDialog final : public SfxTabDialogController
    bool                        mbCanExtractForAccessibility;
    css::uno::Reference< css::beans::XMaterialHolder > mxPreparedPasswords;

    std::shared_ptr< svx::AccessibilityCheckDialog > mpAccessibilityCheckDialog;

    bool                        mbIsRangeChecked;
    OUString                    msPageRange;
    bool                        mbSelectionIsChecked;
diff --git a/include/sfx2/sfxsids.hrc b/include/sfx2/sfxsids.hrc
index fab797e..bb30974 100644
--- a/include/sfx2/sfxsids.hrc
+++ b/include/sfx2/sfxsids.hrc
@@ -469,7 +469,6 @@ class SvxZoomItem;
// Used for redaction
#define SID_SHAPE_NAME                      (SID_SFX_START + 810)
#define SID_GRAPHIC_SIZE_CHECK              (SID_SFX_START + 811)
#define SID_ACCESSIBILITY_CHECK             (SID_SFX_START + 812)
#define SID_ASYNCHRON                       (SID_SFX_START + 813)
#define SID_ACCESSIBILITY_CHECK_ONLINE      (SID_SFX_START + 814)
#define SID_THEME_DIALOG                    (SID_SFX_START + 815)
diff --git a/include/svx/AccessibilityCheckDialog.hxx b/include/svx/AccessibilityCheckDialog.hxx
deleted file mode 100644
index 65b1000..0000000
--- a/include/svx/AccessibilityCheckDialog.hxx
+++ /dev/null
@@ -1,67 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */

#ifndef INCLUDED_SVX_ACCESSIBILITYCHECKDIALOG_HXX
#define INCLUDED_SVX_ACCESSIBILITYCHECKDIALOG_HXX

#include <sfx2/AccessibilityIssue.hxx>
#include <svx/svxdllapi.h>
#include <tools/link.hxx>
#include <vcl/weld.hxx>

namespace svx
{
class AccessibilityCheckEntry final
{
private:
    std::unique_ptr<weld::Builder> m_xBuilder;
    std::unique_ptr<weld::Container> m_xContainer;
    std::unique_ptr<weld::Label> m_xLabel;
    std::unique_ptr<weld::Button> m_xGotoButton;

    std::shared_ptr<sfx::AccessibilityIssue> const& m_pAccessibilityIssue;

public:
    AccessibilityCheckEntry(weld::Container* pParent,
                            std::shared_ptr<sfx::AccessibilityIssue> const& pAccessibilityIssue);

    weld::Widget* get_widget() const { return m_xContainer.get(); }

    DECL_LINK(GotoButtonClicked, weld::Button&, void);
};

class SVX_DLLPUBLIC AccessibilityCheckDialog final : public weld::GenericDialogController
{
private:
    sfx::AccessibilityIssueCollection m_aIssueCollection;
    std::function<sfx::AccessibilityIssueCollection()> m_getIssueCollection;
    std::vector<std::unique_ptr<AccessibilityCheckEntry>> m_aAccessibilityCheckEntries;

    // Controls
    std::unique_ptr<weld::ScrolledWindow> m_xScrolledWindow;
    std::unique_ptr<weld::Box> m_xAccessibilityCheckBox;
    std::unique_ptr<weld::Button> m_xRescanBtn;

    DECL_LINK(RescanButtonClicked, weld::Button&, void);

    void populateIssues();

public:
    AccessibilityCheckDialog(weld::Window* pParent,
                             sfx::AccessibilityIssueCollection rIssueCollection,
                             std::function<sfx::AccessibilityIssueCollection()> getIssueCollection);
    virtual ~AccessibilityCheckDialog() override;
};

} // end svx namespace

#endif // INCLUDED_SVX_ACCESSIBILITYCHECKDIALOG_HXX

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
index 43302cf..ff915b4 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
@@ -3411,14 +3411,6 @@
          <value>1</value>
        </prop>
      </node>
      <node oor:name=".uno:AccessibilityCheck" oor:op="replace">
        <prop oor:name="Label" oor:type="xs:string">
          <value xml:lang="en-US">~Accessibility Check...</value>
        </prop>
        <prop oor:name="Properties" oor:type="xs:int">
          <value>1</value>
        </prop>
      </node>
      <node oor:name=".uno:StylesMenu" oor:op="replace">
        <prop oor:name="Label" oor:type="xs:string">
          <value xml:lang="en-US">Styl~es</value>
diff --git a/static/CustomTarget_emscripten_fs_image.mk b/static/CustomTarget_emscripten_fs_image.mk
index 37526af..ecdfddd 100644
--- a/static/CustomTarget_emscripten_fs_image.mk
+++ b/static/CustomTarget_emscripten_fs_image.mk
@@ -1194,7 +1194,6 @@ gb_emscripten_fs_image_files += \
    $(INSTROOT)/$(LIBO_SHARE_FOLDER)/config/soffice.cfg/svt/ui/thineditcontrol.ui \
    $(INSTROOT)/$(LIBO_SHARE_FOLDER)/config/soffice.cfg/svx/ui/absrecbox.ui \
    $(INSTROOT)/$(LIBO_SHARE_FOLDER)/config/soffice.cfg/svx/ui/acceptrejectchangesdialog.ui \
    $(INSTROOT)/$(LIBO_SHARE_FOLDER)/config/soffice.cfg/svx/ui/accessibilitycheckdialog.ui \
    $(INSTROOT)/$(LIBO_SHARE_FOLDER)/config/soffice.cfg/svx/ui/accessibilitycheckentry.ui \
    $(INSTROOT)/$(LIBO_SHARE_FOLDER)/config/soffice.cfg/svx/ui/addconditiondialog.ui \
    $(INSTROOT)/$(LIBO_SHARE_FOLDER)/config/soffice.cfg/svx/ui/adddataitemdialog.ui \
diff --git a/svx/Library_svx.mk b/svx/Library_svx.mk
index 074a18d..7a8cd93 100644
--- a/svx/Library_svx.mk
+++ b/svx/Library_svx.mk
@@ -123,7 +123,6 @@ $(eval $(call gb_Library_add_exception_objects,svx,\
    svx/source/customshapes/EnhancedCustomShapeEngine \
    svx/source/customshapes/EnhancedCustomShapeFontWork \
    svx/source/customshapes/EnhancedCustomShapeHandle \
    svx/source/dialog/AccessibilityCheckDialog \
    svx/source/dialog/GenericCheckDialog \
    svx/source/dialog/_bmpmask \
    svx/source/dialog/charmap \
diff --git a/svx/UIConfig_svx.mk b/svx/UIConfig_svx.mk
index 9f12a48..23d866c 100644
--- a/svx/UIConfig_svx.mk
+++ b/svx/UIConfig_svx.mk
@@ -12,7 +12,6 @@ $(eval $(call gb_UIConfig_UIConfig,svx))
$(eval $(call gb_UIConfig_add_uifiles,svx,\
	svx/uiconfig/ui/absrecbox \
	svx/uiconfig/ui/acceptrejectchangesdialog \
	svx/uiconfig/ui/accessibilitycheckdialog \
	svx/uiconfig/ui/accessibilitycheckentry \
	svx/uiconfig/ui/addconditiondialog \
	svx/uiconfig/ui/adddataitemdialog \
diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi
index d86ce1d..96505b7 100644
--- a/svx/sdi/svx.sdi
+++ b/svx/sdi/svx.sdi
@@ -12559,23 +12559,6 @@ SfxVoidItem ThemeDialog SID_THEME_DIALOG
    GroupId = SfxGroupId::Modify;
]

SfxVoidItem AccessibilityCheck SID_ACCESSIBILITY_CHECK
()
[
    AutoUpdate = FALSE,
    FastCall = FALSE,
    ReadOnlyDoc = TRUE,
    Toggle = FALSE,
    Container = FALSE,
    RecordAbsolute = FALSE,
    RecordPerSet;

    AccelConfig = FALSE,
    MenuConfig = FALSE,
    ToolBoxConfig = FALSE,
    GroupId = SfxGroupId::Modify;
]

SfxBoolItem AccessibilityCheckOnline SID_ACCESSIBILITY_CHECK_ONLINE
(SfxBoolItem Enable FN_PARAM_1)
[
diff --git a/svx/source/dialog/AccessibilityCheckDialog.cxx b/svx/source/dialog/AccessibilityCheckDialog.cxx
deleted file mode 100644
index 010f3af..0000000
--- a/svx/source/dialog/AccessibilityCheckDialog.cxx
+++ /dev/null
@@ -1,89 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */

#include <svx/AccessibilityCheckDialog.hxx>

#include <sfx2/AccessibilityIssue.hxx>
#include <utility>
#include <vcl/svapp.hxx>

namespace svx
{
AccessibilityCheckEntry::AccessibilityCheckEntry(
    weld::Container* pParent, std::shared_ptr<sfx::AccessibilityIssue> const& rAccessibilityIssue)
    : m_xBuilder(Application::CreateBuilder(pParent, "svx/ui/accessibilitycheckentry.ui"))
    , m_xContainer(m_xBuilder->weld_container("accessibilityCheckEntryBox"))
    , m_xLabel(m_xBuilder->weld_label("accessibilityCheckEntryLabel"))
    , m_xGotoButton(m_xBuilder->weld_button("accessibilityCheckEntryGotoButton"))
    , m_pAccessibilityIssue(rAccessibilityIssue)
{
    m_xLabel->set_label(m_pAccessibilityIssue->m_aIssueText);
    // lock in the height as including the button so all rows are the same height
    m_xContainer->set_size_request(-1, m_xContainer->get_preferred_size().Height());
    m_xGotoButton->set_visible(m_pAccessibilityIssue->canGotoIssue());
    m_xGotoButton->connect_clicked(LINK(this, AccessibilityCheckEntry, GotoButtonClicked));
}

IMPL_LINK_NOARG(AccessibilityCheckEntry, GotoButtonClicked, weld::Button&, void)
{
    m_pAccessibilityIssue->gotoIssue();
}

AccessibilityCheckDialog::AccessibilityCheckDialog(
    weld::Window* pParent, sfx::AccessibilityIssueCollection aIssueCollection,
    std::function<sfx::AccessibilityIssueCollection()> getIssueCollection)
    : GenericDialogController(pParent, "svx/ui/accessibilitycheckdialog.ui",
                              "AccessibilityCheckDialog")
    , m_aIssueCollection(std::move(aIssueCollection))
    , m_getIssueCollection(getIssueCollection)
    , m_xScrolledWindow(m_xBuilder->weld_scrolled_window("scrolledwindow"))
    , m_xAccessibilityCheckBox(m_xBuilder->weld_box("accessibilityCheckBox"))
    , m_xRescanBtn(m_xBuilder->weld_button("rescan"))
{
    m_xRescanBtn->connect_clicked(LINK(this, AccessibilityCheckDialog, RescanButtonClicked));

    populateIssues();
}

AccessibilityCheckDialog::~AccessibilityCheckDialog() {}

void AccessibilityCheckDialog::populateIssues()
{
    sal_Int32 i = 0;
    for (std::shared_ptr<sfx::AccessibilityIssue> const& pIssue : m_aIssueCollection.getIssues())
    {
        auto xEntry
            = std::make_unique<AccessibilityCheckEntry>(m_xAccessibilityCheckBox.get(), pIssue);
        m_xAccessibilityCheckBox->reorder_child(xEntry->get_widget(), i++);
        m_aAccessibilityCheckEntries.push_back(std::move(xEntry));
    }

    if (!m_aAccessibilityCheckEntries.empty())
    {
        auto nRowHeight
            = m_aAccessibilityCheckEntries.back()->get_widget()->get_preferred_size().Height();
        // 6 is the spacing set in the .ui
        m_xScrolledWindow->vadjustment_set_step_increment(nRowHeight + 6);
    }
}

IMPL_LINK_NOARG(AccessibilityCheckDialog, RescanButtonClicked, weld::Button&, void)
{
    // Remove old issue widgets
    for (auto const& xEntry : m_aAccessibilityCheckEntries)
        m_xAccessibilityCheckBox->move(xEntry->get_widget(), nullptr);

    m_aIssueCollection = m_getIssueCollection();
    populateIssues();
}

} // end svx namespace

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/uiconfig/ui/accessibilitycheckdialog.ui b/svx/uiconfig/ui/accessibilitycheckdialog.ui
deleted file mode 100644
index b19a1e3..0000000
--- a/svx/uiconfig/ui/accessibilitycheckdialog.ui
+++ /dev/null
@@ -1,148 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.40.0 -->
<interface domain="svx">
  <requires lib="gtk+" version="3.20"/>
  <object class="GtkDialog" id="AccessibilityCheckDialog">
    <property name="width-request">640</property>
    <property name="height-request">480</property>
    <property name="can-focus">False</property>
    <property name="hexpand">True</property>
    <property name="vexpand">True</property>
    <property name="border-width">6</property>
    <property name="title" translatable="yes" context="accessibilitycheckdialog|AccessibilityCheckDialog">Accessibility Check</property>
    <property name="type-hint">dialog</property>
    <child internal-child="vbox">
      <object class="GtkBox" id="dialogBox1">
        <property name="can-focus">False</property>
        <property name="hexpand">True</property>
        <property name="vexpand">True</property>
        <property name="orientation">vertical</property>
        <property name="spacing">12</property>
        <child internal-child="action_area">
          <object class="GtkButtonBox" id="dialogButtons">
            <property name="can-focus">False</property>
            <property name="layout-style">end</property>
            <child>
              <object class="GtkButton" id="rescan">
                <property name="label" translatable="yes" context="AccessibleCheckDialog|btn_rescan">Rescan</property>
                <property name="visible">True</property>
                <property name="can-focus">True</property>
                <property name="receives-default">True</property>
                <property name="use-underline">True</property>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">0</property>
              </packing>
            </child>
            <child>
              <object class="GtkButton" id="ok">
                <property name="label" translatable="yes" context="stock">_OK</property>
                <property name="visible">True</property>
                <property name="can-focus">True</property>
                <property name="can-default">True</property>
                <property name="has-default">True</property>
                <property name="receives-default">True</property>
                <property name="use-underline">True</property>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">1</property>
              </packing>
            </child>
            <child>
              <object class="GtkButton" id="cancel">
                <property name="label" translatable="yes" context="stock">_Cancel</property>
                <property name="visible">True</property>
                <property name="can-focus">True</property>
                <property name="receives-default">True</property>
                <property name="use-underline">True</property>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">2</property>
              </packing>
            </child>
            <child>
              <object class="GtkButton" id="help">
                <property name="label" translatable="yes" context="stock">_Help</property>
                <property name="visible">True</property>
                <property name="can-focus">True</property>
                <property name="receives-default">True</property>
                <property name="use-underline">True</property>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">3</property>
                <property name="secondary">True</property>
              </packing>
            </child>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="pack-type">end</property>
            <property name="position">0</property>
          </packing>
        </child>
        <child>
          <object class="GtkBox">
            <property name="visible">True</property>
            <property name="can-focus">False</property>
            <property name="hexpand">True</property>
            <property name="vexpand">True</property>
            <property name="orientation">vertical</property>
            <child>
              <object class="GtkScrolledWindow" id="scrolledwindow">
                <property name="visible">True</property>
                <property name="can-focus">True</property>
                <property name="hexpand">True</property>
                <property name="vexpand">True</property>
                <property name="shadow-type">in</property>
                <child>
                  <object class="GtkViewport">
                    <property name="visible">True</property>
                    <property name="can-focus">False</property>
                    <property name="hexpand">True</property>
                    <property name="vexpand">True</property>
                    <child>
                      <object class="GtkBox" id="accessibilityCheckBox">
                        <property name="visible">True</property>
                        <property name="can-focus">False</property>
                        <property name="orientation">vertical</property>
                        <property name="spacing">6</property>
                        <property name="homogeneous">True</property>
                        <child>
                          <placeholder/>
                        </child>
                      </object>
                    </child>
                  </object>
                </child>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">0</property>
              </packing>
            </child>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">1</property>
          </packing>
        </child>
      </object>
    </child>
    <action-widgets>
      <action-widget response="-5">ok</action-widget>
      <action-widget response="-6">cancel</action-widget>
      <action-widget response="-11">help</action-widget>
    </action-widgets>
  </object>
</interface>
diff --git a/sw/sdi/_basesh.sdi b/sw/sdi/_basesh.sdi
index a1468ff..b338abf 100644
--- a/sw/sdi/_basesh.sdi
+++ b/sw/sdi/_basesh.sdi
@@ -605,12 +605,6 @@ interface BaseTextSelection
        StateMethod = GetState;
    ]

    SID_ACCESSIBILITY_CHECK
    [
        ExecMethod = ExecDlg;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_GRAPHIC_SIZE_CHECK
    [
        ExecMethod = ExecDlg;
diff --git a/sw/source/uibase/shells/basesh.cxx b/sw/source/uibase/shells/basesh.cxx
index 61567a6..54745cd 100644
--- a/sw/source/uibase/shells/basesh.cxx
+++ b/sw/source/uibase/shells/basesh.cxx
@@ -135,7 +135,6 @@ static sal_uInt8 nFooterPos;
#include <swslots.hxx>

#include <AccessibilityCheck.hxx>
#include <svx/AccessibilityCheckDialog.hxx>

namespace
{
@@ -3029,21 +3028,6 @@ void SwBaseShell::ExecDlg(SfxRequest &rReq)
            }
        }
        break;
        case SID_ACCESSIBILITY_CHECK:
        {
            sw::AccessibilityCheck aCheck(rSh.GetDoc());
            aCheck.check();
            std::shared_ptr<svx::AccessibilityCheckDialog> aDialog
                = std::make_shared<svx::AccessibilityCheckDialog>(
                    pMDI, aCheck.getIssueCollection(),
                    [&rSh]() -> sfx::AccessibilityIssueCollection {
                        sw::AccessibilityCheck aA11yCheck(rSh.GetDoc());
                        aA11yCheck.check();
                        return aA11yCheck.getIssueCollection();
                    });
            weld::DialogController::runAsync(aDialog, [](int){});
        }
        break;

        case SID_GRAPHIC_SIZE_CHECK:
        {
diff --git a/sw/uiconfig/sglobal/menubar/menubar.xml b/sw/uiconfig/sglobal/menubar/menubar.xml
index 9b9d376..44d9f25 100644
--- a/sw/uiconfig/sglobal/menubar/menubar.xml
+++ b/sw/uiconfig/sglobal/menubar/menubar.xml
@@ -719,7 +719,6 @@
        </menu:menupopup>
      </menu:menu>
      <menu:menuitem menu:id=".uno:WordCountDialog" menu:style="text"/>
      <menu:menuitem menu:id=".uno:AccessibilityCheck"/>
      <menu:menuitem menu:id=".uno:AccessibilityCheckOnline"/>
      <menu:menuseparator/>
      <menu:menuitem menu:id=".uno:Translate" menu:style="text"/>
diff --git a/sw/uiconfig/swriter/menubar/menubar.xml b/sw/uiconfig/swriter/menubar/menubar.xml
index 99d34c5..0fa3b2e 100644
--- a/sw/uiconfig/swriter/menubar/menubar.xml
+++ b/sw/uiconfig/swriter/menubar/menubar.xml
@@ -745,7 +745,6 @@
        </menu:menupopup>
      </menu:menu>
      <menu:menuitem menu:id=".uno:WordCountDialog"/>
      <menu:menuitem menu:id=".uno:AccessibilityCheck"/>
      <menu:menuitem menu:id=".uno:AccessibilityCheckOnline"/>
      <menu:menuseparator/>
      <menu:menuitem menu:id=".uno:Translate"/>
diff --git a/vcl/jsdialog/enabled.cxx b/vcl/jsdialog/enabled.cxx
index 3f18cfe..26892ed 100644
--- a/vcl/jsdialog/enabled.cxx
+++ b/vcl/jsdialog/enabled.cxx
@@ -149,7 +149,6 @@ bool isBuilderEnabled(std::u16string_view rUIFile, bool bMobile)
        || rUIFile == u"sfx/ui/managestylepage.ui"
        || rUIFile == u"sfx/ui/password.ui"
        // svx
        || rUIFile == u"svx/ui/accessibilitycheckdialog.ui"
        || rUIFile == u"svx/ui/accessibilitycheckentry.ui"
        || rUIFile == u"svx/ui/findreplacedialog.ui"
        || rUIFile == u"svx/ui/fontworkgallerydialog.ui"