Resolves: tdf#120343 show pdf in async pdf export dialog callback

not after dialog async exec begins, but defer to during that response
callback

Change-Id: I316022c01a87cf251d57b1007ae93fefddada776
Reviewed-on: https://gerrit.libreoffice.org/73716
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/sfx2/source/doc/guisaveas.cxx b/sfx2/source/doc/guisaveas.cxx
index 9be232c..e14ed2b 100644
--- a/sfx2/source/doc/guisaveas.cxx
+++ b/sfx2/source/doc/guisaveas.cxx
@@ -1286,6 +1286,21 @@ uno::Reference< css::frame::XModuleManager2 > const & SfxStoringHelper::GetModul
    return m_xModuleManager;
}

namespace
{
    void LaunchPDFViewer(const INetURLObject& rURL)
    {
        // Launch PDF viewer
        FilterConfigItem aItem( "Office.Common/Filter/PDF/Export/" );
        bool aViewPDF = aItem.ReadBool( "ViewPDFAfterExport", false );

        if ( aViewPDF )
        {
            uno::Reference<XSystemShellExecute> xSystemShellExecute(SystemShellExecute::create(::comphelper::getProcessComponentContext()));
            xSystemShellExecute->execute(rURL.GetMainURL(INetURLObject::DecodeMechanism::NONE), "", SystemShellExecuteFlags::URIS_ONLY);
        }
    }
}

bool SfxStoringHelper::GUIStoreModel( const uno::Reference< frame::XModel >& xModel,
                                            const OUString& aSlotName,
@@ -1636,6 +1651,11 @@ bool SfxStoringHelper::GUIStoreModel( const uno::Reference< frame::XModel >& xMo
            {
                SfxStoringHelper::SetDocInfoState(aModel.GetModel(), xOldDocProps);
            }

            // Launch PDF viewer
            if (nStoreMode & PDFEXPORT_REQUESTED)
                LaunchPDFViewer(aURL);

        };

        // use dispatch API to show document info dialog
@@ -1657,19 +1677,10 @@ bool SfxStoringHelper::GUIStoreModel( const uno::Reference< frame::XModel >& xMo
            aModelData.GetStorable()->storeToURL( aURL.GetMainURL( INetURLObject::DecodeMechanism::NONE ), aArgsSequence );
        else
            aModelData.GetStorable()->storeAsURL( aURL.GetMainURL( INetURLObject::DecodeMechanism::NONE ), aArgsSequence );
    }

    // Launch PDF viewer
    if ( nStoreMode & PDFEXPORT_REQUESTED )
    {
        FilterConfigItem aItem( "Office.Common/Filter/PDF/Export/" );
        bool aViewPDF = aItem.ReadBool( "ViewPDFAfterExport", false );

        if ( aViewPDF )
        {
            uno::Reference<XSystemShellExecute> xSystemShellExecute(SystemShellExecute::create( ::comphelper::getProcessComponentContext() ) );
            xSystemShellExecute->execute( aURL.GetMainURL( INetURLObject::DecodeMechanism::NONE ), "", SystemShellExecuteFlags::URIS_ONLY );
        }
        // Launch PDF viewer
        if (nStoreMode & PDFEXPORT_REQUESTED)
            LaunchPDFViewer(aURL);
    }

    return bDialogUsed;