Writer: Insert signature line at current cursor position

Reviewed-on: https://gerrit.libreoffice.org/57026
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
(cherry picked from commit 8905ae9f0fc8b0e4a95113fd81e88d4e7db57bcc)

Change-Id: Ic7cbcd409372a2d8222f57e67e1109a74f6f5ce3
Reviewed-on: https://gerrit.libreoffice.org/57035
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
diff --git a/cui/source/dialogs/SignatureLineDialog.cxx b/cui/source/dialogs/SignatureLineDialog.cxx
index bd3d2a7..f2a5ec0 100644
--- a/cui/source/dialogs/SignatureLineDialog.cxx
+++ b/cui/source/dialogs/SignatureLineDialog.cxx
@@ -25,6 +25,8 @@
#include <com/sun/star/text/TextContentAnchorType.hpp>
#include <com/sun/star/text/XTextContent.hpp>
#include <com/sun/star/text/XTextDocument.hpp>
#include <com/sun/star/text/XTextViewCursor.hpp>
#include <com/sun/star/text/XTextViewCursorSupplier.hpp>

using namespace css;
using namespace css::uno;
@@ -162,10 +164,13 @@ void SignatureLineDialog::Apply()
        xShapeProps->setPropertyValue("AnchorType", Any(TextContentAnchorType_AT_PARAGRAPH));

        // Insert into document
        Reference<XTextRange> const xEnd
            = Reference<XTextDocument>(m_xModel, UNO_QUERY)->getText()->getEnd();
        Reference<XTextContent> const xShapeContent(xShapeProps, UNO_QUERY);
        xShapeContent->attach(xEnd);
        const Reference<XTextDocument> xTextDocument(m_xModel, UNO_QUERY);
        Reference<XText> xText = xTextDocument->getText();
        Reference<XTextContent> xTextContent(xShape, UNO_QUERY_THROW);
        Reference<XTextViewCursorSupplier> xViewCursorSupplier(m_xModel->getCurrentController(),
                                                               UNO_QUERY_THROW);
        Reference<XTextViewCursor> xCursor = xViewCursorSupplier->getViewCursor();
        xText->insertTextContent(xCursor, xTextContent, true);
    }
}