summaryrefslogtreecommitdiff
path: root/sw/source/ui/dbui/mmpreparemergepage.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/ui/dbui/mmpreparemergepage.cxx')
-rw-r--r--sw/source/ui/dbui/mmpreparemergepage.cxx204
1 files changed, 204 insertions, 0 deletions
diff --git a/sw/source/ui/dbui/mmpreparemergepage.cxx b/sw/source/ui/dbui/mmpreparemergepage.cxx
new file mode 100644
index 000000000000..8539f037ecdc
--- /dev/null
+++ b/sw/source/ui/dbui/mmpreparemergepage.cxx
@@ -0,0 +1,204 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sw.hxx"
+
+#ifdef SW_DLLIMPLEMENTATION
+#undef SW_DLLIMPLEMENTATION
+#endif
+#include <mmpreparemergepage.hxx>
+#include <mailmergewizard.hxx>
+#include <mmconfigitem.hxx>
+#ifndef _DBUI_HRC
+#include <dbui.hrc>
+#endif
+#include <swtypes.hxx>
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef _DBMGR_HXX
+#include <dbmgr.hxx>
+#endif
+#include <wrtsh.hxx>
+#include <svx/dataaccessdescriptor.hxx>
+#include <com/sun/star/sdbc/XConnection.hpp>
+#include <swabstdlg.hxx>
+
+
+#include <mmpreparemergepage.hrc>
+#include <dbui.hrc>
+
+#include <unomid.h>
+
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::sdbc;
+using ::rtl::OUString;
+
+/*-- 02.04.2004 16:42:49---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwMailMergePrepareMergePage::SwMailMergePrepareMergePage( SwMailMergeWizard* _pParent) :
+ svt::OWizardPage( _pParent, SW_RES(DLG_MM_PREPAREMERGE_PAGE)),
+#ifdef MSC
+#pragma warning (disable : 4355)
+#endif
+ m_aHeaderFI(this, SW_RES( FI_HEADER ) ),
+ m_aPreviewFI(this, SW_RES( FI_PREVIEW ) ),
+ m_aRecipientFT(this, SW_RES( FT_RECIPIENT ) ),
+ m_aFirstPB(this, SW_RES( PB_FIRST ) ),
+ m_aPrevPB(this, SW_RES( PB_PREV ) ),
+ m_aRecordED(this, SW_RES( ED_RECORD ) ),
+ m_aNextPB(this, SW_RES( PB_NEXT ) ),
+ m_aLastPB(this, SW_RES( PB_LAST ) ),
+ m_ExcludeCB(this, SW_RES( CB_EXCLUDE ) ),
+ m_aNoteHeaderFL(this, SW_RES( FL_NOTEHEADER ) ),
+ m_aEditFI(this, SW_RES( FI_EDIT ) ),
+ m_aEditPB(this, SW_RES( PB_EDIT ) ),
+#ifdef MSC
+#pragma warning (default : 4355)
+#endif
+ m_pWizard(_pParent)
+{
+ FreeResource();
+ m_aEditPB.SetClickHdl( LINK( this, SwMailMergePrepareMergePage, EditDocumentHdl_Impl));
+ Link aMoveLink(LINK( this, SwMailMergePrepareMergePage, MoveHdl_Impl));
+ m_aFirstPB.SetClickHdl( aMoveLink );
+ m_aPrevPB.SetClickHdl( aMoveLink );
+ m_aNextPB.SetClickHdl( aMoveLink );
+ m_aLastPB.SetClickHdl( aMoveLink );
+ m_aRecordED.SetActionHdl( aMoveLink );
+ m_ExcludeCB.SetClickHdl(LINK(this, SwMailMergePrepareMergePage, ExcludeHdl_Impl));
+ aMoveLink.Call(&m_aRecordED);
+}
+/*-- 02.04.2004 16:42:49---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+SwMailMergePrepareMergePage::~SwMailMergePrepareMergePage()
+{
+}
+/*-- 13.05.2004 15:36:48---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+IMPL_LINK( SwMailMergePrepareMergePage, EditDocumentHdl_Impl, PushButton*, EMPTYARG)
+{
+ m_pWizard->SetRestartPage(MM_PREPAREMERGEPAGE);
+ m_pWizard->EndDialog(RET_EDIT_DOC);
+ return 0;
+}
+/*-- 27.05.2004 14:16:37---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+IMPL_LINK( SwMailMergePrepareMergePage, MoveHdl_Impl, void*, pCtrl)
+{
+ SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem();
+ sal_Int32 nPos = rConfigItem.GetResultSetPosition();
+ if(pCtrl == &m_aFirstPB)
+ {
+ rConfigItem.MoveResultSet(1);
+ }
+ else if(pCtrl == &m_aPrevPB)
+ {
+ rConfigItem.MoveResultSet(nPos - 1);
+ }
+ else if(pCtrl == &m_aRecordED)
+ {
+ rConfigItem.MoveResultSet( static_cast< sal_Int32 >(m_aRecordED.GetValue()) );
+ }
+ else if(pCtrl == &m_aNextPB)
+ rConfigItem.MoveResultSet(nPos + 1);
+ else if(pCtrl == &m_aLastPB)
+ rConfigItem.MoveResultSet(-1);
+
+ nPos = rConfigItem.GetResultSetPosition();
+ m_aRecordED.SetValue(nPos);
+ bool bIsFirst;
+ bool bIsLast;
+ bool bValid = rConfigItem.IsResultSetFirstLast(bIsFirst, bIsLast);
+ m_aFirstPB.Enable(bValid && !bIsFirst);
+ m_aPrevPB.Enable(bValid && !bIsFirst);
+ m_aNextPB.Enable(bValid && !bIsLast);
+ m_aLastPB.Enable(bValid && !bIsLast);
+ m_ExcludeCB.Check(rConfigItem.IsRecordExcluded( rConfigItem.GetResultSetPosition() ));
+ //now the record has to be merged into the source document
+ const SwDBData& rDBData = rConfigItem.GetCurrentDBData();
+
+ Sequence< PropertyValue > aArgs(7);
+ Sequence<Any> aSelection(1);
+ aSelection[0] <<= rConfigItem.GetResultSetPosition();
+ aArgs[0].Name = C2U("Selection");
+ aArgs[0].Value <<= aSelection;
+ aArgs[1].Name = C2U("DataSourceName");
+ aArgs[1].Value <<= rDBData.sDataSource;
+ aArgs[2].Name = C2U("Command");
+ aArgs[2].Value <<= rDBData.sCommand;
+ aArgs[3].Name = C2U("CommandType");
+ aArgs[3].Value <<= rDBData.nCommandType;
+ aArgs[4].Name = C2U("ActiveConnection");
+ aArgs[4].Value <<= rConfigItem.GetConnection().getTyped();
+ aArgs[5].Name = C2U("Filter");
+ aArgs[5].Value <<= rConfigItem.GetFilter();
+ aArgs[6].Name = C2U("Cursor");
+ aArgs[6].Value <<= rConfigItem.GetResultSet();
+
+ ::svx::ODataAccessDescriptor aDescriptor(aArgs);
+ SwWrtShell& rSh = m_pWizard->GetSwView()->GetWrtShell();
+ SwMergeDescriptor aMergeDesc( DBMGR_MERGE, rSh, aDescriptor );
+ rSh.GetNewDBMgr()->MergeNew(aMergeDesc);
+ return 0;
+}
+/*-- 27.05.2004 14:46:28---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+IMPL_LINK( SwMailMergePrepareMergePage, ExcludeHdl_Impl, CheckBox*, pBox)
+{
+ SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem();
+ rConfigItem.ExcludeRecord( rConfigItem.GetResultSetPosition(), pBox->IsChecked());
+ return 0;
+};
+/*-- 18.08.2004 10:36:25---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SwMailMergePrepareMergePage::ActivatePage()
+{
+ MoveHdl_Impl(&m_aRecordED);
+}
+/*-- 13.05.2004 15:38:32---------------------------------------------------
+ merge the data into a new file
+ -----------------------------------------------------------------------*/
+sal_Bool SwMailMergePrepareMergePage::commitPage( ::svt::WizardTypes::CommitPageReason _eReason )
+{
+ SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem();
+ if(::svt::WizardTypes::eTravelForward == _eReason && !rConfigItem.IsMergeDone())
+ {
+ m_pWizard->CreateTargetDocument();
+ m_pWizard->SetRestartPage(MM_MERGEPAGE);
+ m_pWizard->EndDialog(RET_TARGET_CREATED);
+ }
+ return sal_True;
+}