summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@collabora.com>2016-02-19 21:37:21 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2016-03-18 09:13:56 +0100
commitf8f90fa24f373df09df6fd664a393972bd0054fe (patch)
tree22ecb250440f7453aa85d44f4c04abce5952b90d /sw
parentf7a28b3b0bc63a485ffb6edce88f390793cbd6c1 (diff)
mailmerge: Create the documents for printing.
Now the printing from the toolbar works. Change-Id: Id52deb78f0fcce96afc7727c63e6020f1743a430
Diffstat (limited to 'sw')
-rw-r--r--sw/source/uibase/app/apphdl.cxx64
1 files changed, 31 insertions, 33 deletions
diff --git a/sw/source/uibase/app/apphdl.cxx b/sw/source/uibase/app/apphdl.cxx
index 53e4238d20e7..3b6d4ae3e9b7 100644
--- a/sw/source/uibase/app/apphdl.cxx
+++ b/sw/source/uibase/app/apphdl.cxx
@@ -619,6 +619,33 @@ IMPL_LINK_NOARG_TYPED(SwMailMergeWizardExecutor, CloseFrameHdl, void*, void)
}
}
+SwMailMergeConfigItem* PerformMailMerge(SwView* pView)
+{
+ SwMailMergeConfigItem* pConfigItem = pView->GetMailMergeConfigItem();
+ if (!pConfigItem)
+ return nullptr;
+
+ svx::ODataAccessDescriptor aDescriptor;
+ aDescriptor.setDataSource(pConfigItem->GetCurrentDBData().sDataSource);
+ aDescriptor[ svx::daConnection ] <<= pConfigItem->GetConnection().getTyped();
+ aDescriptor[ svx::daCursor ] <<= pConfigItem->GetResultSet();
+ aDescriptor[ svx::daCommand ] <<= pConfigItem->GetCurrentDBData().sCommand;
+ aDescriptor[ svx::daCommandType ] <<= pConfigItem->GetCurrentDBData().nCommandType;
+ aDescriptor[ svx::daSelection ] <<= pConfigItem->GetSelection();
+
+ SwWrtShell& rSh = pView->GetWrtShell();
+ pConfigItem->SetTargetView(nullptr);
+
+ SwMergeDescriptor aMergeDesc(DBMGR_MERGE_SHELL, rSh, aDescriptor);
+ aMergeDesc.pMailMergeConfigItem = pConfigItem;
+ aMergeDesc.bCreateSingleFile = true;
+ rSh.GetDBManager()->MergeNew(aMergeDesc);
+
+ pConfigItem->SetMergeDone();
+
+ return pConfigItem;
+}
+
} // namespace
#endif // HAVE_FEATURE_DBCONNECTIVITY
@@ -735,6 +762,7 @@ void SwModule::ExecOther(SfxRequest& rReq)
}
// now the record has to be merged into the source document
+ // TODO can we re-use PerformMailMerge() here somehow?
const SwDBData& rDBData = pConfigItem->GetCurrentDBData();
uno::Sequence<uno::Any> vSelection({ uno::makeAny(pConfigItem->GetResultSetPosition()) });
svx::ODataAccessDescriptor aDescriptor(::comphelper::InitPropertySequence({
@@ -764,49 +792,19 @@ void SwModule::ExecOther(SfxRequest& rReq)
break;
case FN_MAILMERGE_CREATE_DOCUMENTS:
{
- SwView* pView = ::GetActiveView();
- SwMailMergeConfigItem* pConfigItem = pView->GetMailMergeConfigItem();
- if (!pConfigItem)
- return;
-
- // TODO share this code somehow with the above FN_MAILMERGE_*_ENTRY
- // TODO kill SwMailMergeWizard::CreateTargetDocument()
- svx::ODataAccessDescriptor aDescriptor;
- aDescriptor.setDataSource(pConfigItem->GetCurrentDBData().sDataSource);
- aDescriptor[ svx::daConnection ] <<= pConfigItem->GetConnection().getTyped();
- aDescriptor[ svx::daCursor ] <<= pConfigItem->GetResultSet();
- aDescriptor[ svx::daCommand ] <<= pConfigItem->GetCurrentDBData().sCommand;
- aDescriptor[ svx::daCommandType ] <<= pConfigItem->GetCurrentDBData().nCommandType;
- aDescriptor[ svx::daSelection ] <<= pConfigItem->GetSelection();
-
- SwWrtShell& rSh = pView->GetWrtShell();
- pConfigItem->SetTargetView(nullptr);
-
- SwMergeDescriptor aMergeDesc(DBMGR_MERGE_SHELL, rSh, aDescriptor);
- aMergeDesc.pMailMergeConfigItem = pConfigItem;
- aMergeDesc.bCreateSingleFile = true;
- rSh.GetDBManager()->MergeNew(aMergeDesc);
+ SwMailMergeConfigItem* pConfigItem = PerformMailMerge(GetActiveView());
- pConfigItem->SetMergeDone();
- if (pConfigItem->GetTargetView())
+ if (pConfigItem && pConfigItem->GetTargetView())
pConfigItem->GetTargetView()->GetViewFrame()->GetFrame().Appear();
}
case FN_MAILMERGE_SAVE_DOCUMENTS:
case FN_MAILMERGE_PRINT_DOCUMENTS:
case FN_MAILMERGE_EMAIL_DOCUMENTS:
{
- SwView* pView = ::GetActiveView();
- SwMailMergeConfigItem* pConfigItem = pView->GetMailMergeConfigItem();
+ SwMailMergeConfigItem* pConfigItem = PerformMailMerge(GetActiveView());
if (!pConfigItem)
return;
- if (!pConfigItem->GetTargetView())
- {
- SwView* pSourceView = pConfigItem->GetSourceView();
- assert(pSourceView);
- pConfigItem->SetTargetView(SwDBManager::CreateTargetDocShell(true, &pSourceView->GetEditWin(), pSourceView->GetWrtShellPtr(), pSourceView->GetDocShell()));
- }
-
SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
switch (nWhich)
{