Kaydet (Commit) d7c26670 authored tarafından Mike Kaganski's avatar Mike Kaganski

Only show Mail Merge toolbar after wizard finished

The toolbar is not needed while wizard works (since it's modal).
This simplifies the logic a little.

Also this allows to show the toolbar in the actual document used for
mailmerge (e.g., when a new or existing document is used, nit the
current one); previously, the toolbar appeared in the document active at
the moment of wizard launch remained in that document, and actual
document went without the toolbar.

Change-Id: I44c45c41f1a3e06cd0fb1930092727b9e08caf74
Reviewed-on: https://gerrit.libreoffice.org/54864Reviewed-by: 's avatarMike Kaganski <mike.kaganski@collabora.com>
Tested-by: 's avatarMike Kaganski <mike.kaganski@collabora.com>
üst 255bfc28
...@@ -59,9 +59,7 @@ ...@@ -59,9 +59,7 @@
#include <uinums.hxx> #include <uinums.hxx>
#include <dbconfig.hxx> #include <dbconfig.hxx>
#include <mmconfigitem.hxx> #include <mmconfigitem.hxx>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/container/XChild.hpp> #include <com/sun/star/container/XChild.hpp>
#include <com/sun/star/frame/XLayoutManager.hpp>
#include <com/sun/star/sdbc/XConnection.hpp> #include <com/sun/star/sdbc/XConnection.hpp>
#include <com/sun/star/sdb/TextConnectionSettings.hpp> #include <com/sun/star/sdb/TextConnectionSettings.hpp>
#include <com/sun/star/sdbc/XDataSource.hpp> #include <com/sun/star/sdbc/XDataSource.hpp>
...@@ -331,8 +329,6 @@ class SwMailMergeWizardExecutor : public salhelper::SimpleReferenceObject ...@@ -331,8 +329,6 @@ class SwMailMergeWizardExecutor : public salhelper::SimpleReferenceObject
VclPtr<AbstractMailMergeWizard> m_pWizard; // always owner VclPtr<AbstractMailMergeWizard> m_pWizard; // always owner
VclPtr<AbstractMailMergeWizard> m_pWizardToDestroyInCallback; VclPtr<AbstractMailMergeWizard> m_pWizardToDestroyInCallback;
bool m_bDestroyMMToolbarOnCancel;
DECL_LINK( EndDialogHdl, Dialog&, void ); DECL_LINK( EndDialogHdl, Dialog&, void );
DECL_LINK( DestroyDialogHdl, void*, void ); DECL_LINK( DestroyDialogHdl, void*, void );
DECL_LINK( DestroyWizardHdl, void*, void ); DECL_LINK( DestroyWizardHdl, void*, void );
...@@ -352,8 +348,7 @@ public: ...@@ -352,8 +348,7 @@ public:
SwMailMergeWizardExecutor::SwMailMergeWizardExecutor() SwMailMergeWizardExecutor::SwMailMergeWizardExecutor()
: m_pView( nullptr ), : m_pView( nullptr ),
m_pView2Close( nullptr ), m_pView2Close( nullptr ),
m_pWizard( nullptr ), m_pWizard( nullptr )
m_bDestroyMMToolbarOnCancel( false )
{ {
} }
...@@ -418,25 +413,6 @@ void SwMailMergeWizardExecutor::ExecuteMailMergeWizard( const SfxItemSet * pArgs ...@@ -418,25 +413,6 @@ void SwMailMergeWizardExecutor::ExecuteMailMergeWizard( const SfxItemSet * pArgs
SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
m_pWizard = pFact->CreateMailMergeWizard(*m_pView, xMMConfig); m_pWizard = pFact->CreateMailMergeWizard(*m_pView, xMMConfig);
uno::Reference<beans::XPropertySet> xPropSet(m_pView->GetViewFrame()->GetFrame().GetFrameInterface(), uno::UNO_QUERY);
if (!xPropSet.is())
return;
uno::Reference<frame::XLayoutManager> xLayoutManager;
uno::Any aValue = xPropSet->getPropertyValue("LayoutManager");
aValue >>= xLayoutManager;
if (!xLayoutManager.is())
return;
const OUString sResourceURL( "private:resource/toolbar/mailmerge" );
uno::Reference<ui::XUIElement> xUIElement = xLayoutManager->getElement(sResourceURL);
if (!xUIElement.is())
{
// ensure the mail-merge toolbar is displayed and remember if it was before
m_bDestroyMMToolbarOnCancel = true;
xLayoutManager->createElement(sResourceURL);
xLayoutManager->showElement(sResourceURL);
}
ExecuteWizard(); ExecuteWizard();
} }
...@@ -452,21 +428,24 @@ void SwMailMergeWizardExecutor::ExecutionFinished() ...@@ -452,21 +428,24 @@ void SwMailMergeWizardExecutor::ExecutionFinished()
SwDBManager* pDbManager = pDoc->GetDBManager(); SwDBManager* pDbManager = pDoc->GetDBManager();
if (pDbManager) if (pDbManager)
pDbManager->CommitLastRegistrations(); pDbManager->CommitLastRegistrations();
}
// Update Mail Merge controls // Show the toolbar
const sal_uInt16 slotIds[] = { FN_MAILMERGE_FIRST_ENTRY, m_pView->ShowUIElement("private:resource/toolbar/mailmerge");
FN_MAILMERGE_PREV_ENTRY,
FN_MAILMERGE_NEXT_ENTRY, // Update Mail Merge controls
FN_MAILMERGE_LAST_ENTRY, const sal_uInt16 slotIds[] = { FN_MAILMERGE_FIRST_ENTRY,
FN_MAILMERGE_CURRENT_ENTRY, FN_MAILMERGE_PREV_ENTRY,
FN_MAILMERGE_EXCLUDE_ENTRY, FN_MAILMERGE_NEXT_ENTRY,
FN_MAILMERGE_CREATE_DOCUMENTS, FN_MAILMERGE_LAST_ENTRY,
FN_MAILMERGE_SAVE_DOCUMENTS, FN_MAILMERGE_CURRENT_ENTRY,
FN_MAILMERGE_PRINT_DOCUMENTS, FN_MAILMERGE_EXCLUDE_ENTRY,
FN_MAILMERGE_EMAIL_DOCUMENTS, FN_MAILMERGE_CREATE_DOCUMENTS,
0 }; FN_MAILMERGE_SAVE_DOCUMENTS,
m_pView->GetViewFrame()->GetBindings().Invalidate(slotIds); FN_MAILMERGE_PRINT_DOCUMENTS,
FN_MAILMERGE_EMAIL_DOCUMENTS,
0 };
m_pView->GetViewFrame()->GetBindings().Invalidate(slotIds);
}
// release/destroy asynchronously // release/destroy asynchronously
Application::PostUserEvent( LINK( this, SwMailMergeWizardExecutor, DestroyDialogHdl ) ); Application::PostUserEvent( LINK( this, SwMailMergeWizardExecutor, DestroyDialogHdl ) );
...@@ -623,19 +602,6 @@ IMPL_LINK_NOARG(SwMailMergeWizardExecutor, CancelHdl, void*, void) ...@@ -623,19 +602,6 @@ IMPL_LINK_NOARG(SwMailMergeWizardExecutor, CancelHdl, void*, void)
{ {
auto pViewFrame(xMMConfig->GetSourceView()->GetViewFrame()); auto pViewFrame(xMMConfig->GetSourceView()->GetViewFrame());
pViewFrame->GetFrame().AppearWithUpdate(); pViewFrame->GetFrame().AppearWithUpdate();
uno::Reference<beans::XPropertySet> xPropSet(pViewFrame->GetFrame().GetFrameInterface(), uno::UNO_QUERY);
if (xPropSet.is() && m_bDestroyMMToolbarOnCancel)
{
// hide mailmerge toolbar if it hasn't been there before
uno::Reference<frame::XLayoutManager> xLayoutManager;
uno::Any aValue = xPropSet->getPropertyValue("LayoutManager");
aValue >>= xLayoutManager;
if (xLayoutManager.is())
{
const OUString sResourceURL( "private:resource/toolbar/mailmerge" );
xLayoutManager->destroyElement( sResourceURL );
}
}
} }
xMMConfig->Commit(); xMMConfig->Commit();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment