tdf#139464 Change label of OK button

In Move/copy sheet UI, change label
according to selected action
 update: with UI test

Change-Id: I8244b1635f56574c7641191be7e15ee4a098dce9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133364
Tested-by: Jenkins
Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
diff --git a/sc/qa/uitest/calc_tests6/moveCopySheet.py b/sc/qa/uitest/calc_tests6/moveCopySheet.py
index 9436364..41019b3 100644
--- a/sc/qa/uitest/calc_tests6/moveCopySheet.py
+++ b/sc/qa/uitest/calc_tests6/moveCopySheet.py
@@ -65,5 +65,22 @@ class moveCopySheet(UITestCase):
            self.assertEqual(document.Sheets[1].Name, "Sheet1")
            self.assertEqual(document.Sheets[2].Name, "moveName")

    #tdf#139464 Set OK button label to selected action: Move or Copy
    def test_tdf139464_move_sheet(self):
        with self.ui_test.create_doc_in_start_center("calc") as document:
            with self.ui_test.execute_dialog_through_command(".uno:Move") as xDialog:
                xOkButton = xDialog.getChild("ok")
                xCopyButton = xDialog.getChild("copy")
                self.assertEqual(get_state_as_dict(xCopyButton)['Text'], get_state_as_dict(xOkButton)['Text'])
            with self.ui_test.execute_dialog_through_command(".uno:Move") as xDialog:
                xOkButton = xDialog.getChild("ok")
                xCopyButton = xDialog.getChild("copy")
                xMoveButton = xDialog.getChild("move")
                self.assertEqual(get_state_as_dict(xMoveButton)['Text'], get_state_as_dict(xOkButton)['Text'])
                xCopyButton.executeAction("CLICK", tuple())
                self.assertEqual(get_state_as_dict(xCopyButton)['Text'], get_state_as_dict(xOkButton)['Text'])
                xMoveButton.executeAction("CLICK", tuple())
                self.assertEqual(get_state_as_dict(xMoveButton)['Text'], get_state_as_dict(xOkButton)['Text'])


# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/source/ui/inc/mvtabdlg.hxx b/sc/source/ui/inc/mvtabdlg.hxx
index 2f11fd3..9d121a9 100644
--- a/sc/source/ui/inc/mvtabdlg.hxx
+++ b/sc/source/ui/inc/mvtabdlg.hxx
@@ -37,6 +37,7 @@ public:
    void    GetTabNameString( OUString& rString ) const;
    void    SetForceCopyTable       ();
    void    EnableRenameTable       (bool bFlag);
    void    SetOkBtnLabel           ();

private:
    void ResetRenameInput();
diff --git a/sc/source/ui/miscdlgs/mvtabdlg.cxx b/sc/source/ui/miscdlgs/mvtabdlg.cxx
index 6ec7712..80eeaea 100644
--- a/sc/source/ui/miscdlgs/mvtabdlg.cxx
+++ b/sc/source/ui/miscdlgs/mvtabdlg.cxx
@@ -74,6 +74,7 @@ void ScMoveTableDlg::SetForceCopyTable()
    m_xBtnCopy->set_active(true);
    m_xBtnMove->set_sensitive(false);
    m_xBtnCopy->set_sensitive(false);
    SetOkBtnLabel();
}

void ScMoveTableDlg::EnableRenameTable(bool bFlag)
@@ -185,6 +186,7 @@ void ScMoveTableDlg::Init()
    m_xBtnOk->connect_clicked(LINK(this, ScMoveTableDlg, OkHdl));
    m_xLbDoc->connect_changed(LINK(this, ScMoveTableDlg, SelHdl));
    m_xBtnCopy->connect_toggled(LINK(this, ScMoveTableDlg, CheckBtnHdl));
    m_xBtnMove->connect_toggled(LINK(this, ScMoveTableDlg, CheckBtnHdl));
    m_xEdTabName->connect_changed(LINK(this, ScMoveTableDlg, CheckNameHdl));
    m_xBtnMove->set_active(true);
    m_xBtnCopy->set_active(false);
@@ -197,6 +199,7 @@ void ScMoveTableDlg::Init()
        m_xFtDoc->hide();
        m_xLbDoc->hide();
    }
    SetOkBtnLabel();
}

void ScMoveTableDlg::InitDocListBox()
@@ -236,12 +239,20 @@ void ScMoveTableDlg::InitDocListBox()
    m_xLbDoc->set_active(nSelPos);
}

void ScMoveTableDlg::SetOkBtnLabel()
{
    // tdf#139464 Write "Copy" or "Move" on OK button
    m_xBtnOk->set_label(m_xBtnCopy->get_active() ? m_xBtnCopy->get_label()
                                                 : m_xBtnMove->get_label());
}

// Handler:

IMPL_LINK(ScMoveTableDlg, CheckBtnHdl, weld::Toggleable&, rBtn, void)
{
    if (&rBtn == m_xBtnCopy.get())
        ResetRenameInput();
    SetOkBtnLabel();
}

IMPL_LINK_NOARG(ScMoveTableDlg, OkHdl, weld::Button&, void)