1*efeef26fSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*efeef26fSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*efeef26fSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*efeef26fSAndrew Rist  * distributed with this work for additional information
6*efeef26fSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*efeef26fSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*efeef26fSAndrew Rist  * "License"); you may not use this file except in compliance
9*efeef26fSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*efeef26fSAndrew Rist  *
11*efeef26fSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*efeef26fSAndrew Rist  *
13*efeef26fSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*efeef26fSAndrew Rist  * software distributed under the License is distributed on an
15*efeef26fSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*efeef26fSAndrew Rist  * KIND, either express or implied.  See the License for the
17*efeef26fSAndrew Rist  * specific language governing permissions and limitations
18*efeef26fSAndrew Rist  * under the License.
19*efeef26fSAndrew Rist  *
20*efeef26fSAndrew Rist  *************************************************************/
21*efeef26fSAndrew Rist 
22*efeef26fSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sw.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #ifdef SW_DLLIMPLEMENTATION
28cdf0e10cSrcweir #undef SW_DLLIMPLEMENTATION
29cdf0e10cSrcweir #endif
30cdf0e10cSrcweir #include <mmpreparemergepage.hxx>
31cdf0e10cSrcweir #include <mailmergewizard.hxx>
32cdf0e10cSrcweir #include <mmconfigitem.hxx>
33cdf0e10cSrcweir #ifndef _DBUI_HRC
34cdf0e10cSrcweir #include <dbui.hrc>
35cdf0e10cSrcweir #endif
36cdf0e10cSrcweir #include <swtypes.hxx>
37cdf0e10cSrcweir #ifndef _VIEW_HXX
38cdf0e10cSrcweir #include <view.hxx>
39cdf0e10cSrcweir #endif
40cdf0e10cSrcweir #ifndef _DBMGR_HXX
41cdf0e10cSrcweir #include <dbmgr.hxx>
42cdf0e10cSrcweir #endif
43cdf0e10cSrcweir #include <wrtsh.hxx>
44cdf0e10cSrcweir #include <svx/dataaccessdescriptor.hxx>
45cdf0e10cSrcweir #include <com/sun/star/sdbc/XConnection.hpp>
46cdf0e10cSrcweir #include <swabstdlg.hxx>
47cdf0e10cSrcweir 
48cdf0e10cSrcweir 
49cdf0e10cSrcweir #include <mmpreparemergepage.hrc>
50cdf0e10cSrcweir #include <dbui.hrc>
51cdf0e10cSrcweir 
52cdf0e10cSrcweir #include <unomid.h>
53cdf0e10cSrcweir 
54cdf0e10cSrcweir using namespace ::com::sun::star::uno;
55cdf0e10cSrcweir using namespace ::com::sun::star::beans;
56cdf0e10cSrcweir using namespace ::com::sun::star::sdbc;
57cdf0e10cSrcweir using ::rtl::OUString;
58cdf0e10cSrcweir 
59cdf0e10cSrcweir /*-- 02.04.2004 16:42:49---------------------------------------------------
60cdf0e10cSrcweir 
61cdf0e10cSrcweir   -----------------------------------------------------------------------*/
SwMailMergePrepareMergePage(SwMailMergeWizard * _pParent)62cdf0e10cSrcweir SwMailMergePrepareMergePage::SwMailMergePrepareMergePage( SwMailMergeWizard* _pParent) :
63cdf0e10cSrcweir     svt::OWizardPage( _pParent, SW_RES(DLG_MM_PREPAREMERGE_PAGE)),
64cdf0e10cSrcweir #ifdef MSC
65cdf0e10cSrcweir #pragma warning (disable : 4355)
66cdf0e10cSrcweir #endif
67cdf0e10cSrcweir     m_aHeaderFI(this,  SW_RES(     FI_HEADER ) ),
68cdf0e10cSrcweir     m_aPreviewFI(this, SW_RES(     FI_PREVIEW ) ),
69cdf0e10cSrcweir     m_aRecipientFT(this, SW_RES(   FT_RECIPIENT ) ),
70cdf0e10cSrcweir     m_aFirstPB(this, SW_RES(       PB_FIRST   ) ),
71cdf0e10cSrcweir     m_aPrevPB(this, SW_RES(        PB_PREV    ) ),
72cdf0e10cSrcweir     m_aRecordED(this, SW_RES(      ED_RECORD  ) ),
73cdf0e10cSrcweir     m_aNextPB(this, SW_RES(        PB_NEXT    ) ),
74cdf0e10cSrcweir     m_aLastPB(this, SW_RES(        PB_LAST    ) ),
75cdf0e10cSrcweir     m_ExcludeCB(this, SW_RES(      CB_EXCLUDE    ) ),
76cdf0e10cSrcweir     m_aNoteHeaderFL(this, SW_RES(  FL_NOTEHEADER ) ),
77cdf0e10cSrcweir     m_aEditFI(this, SW_RES(        FI_EDIT       ) ),
78cdf0e10cSrcweir     m_aEditPB(this, SW_RES(        PB_EDIT       ) ),
79cdf0e10cSrcweir #ifdef MSC
80cdf0e10cSrcweir #pragma warning (default : 4355)
81cdf0e10cSrcweir #endif
82cdf0e10cSrcweir     m_pWizard(_pParent)
83cdf0e10cSrcweir {
84cdf0e10cSrcweir     FreeResource();
85cdf0e10cSrcweir     m_aEditPB.SetClickHdl( LINK( this, SwMailMergePrepareMergePage, EditDocumentHdl_Impl));
86cdf0e10cSrcweir     Link aMoveLink(LINK( this, SwMailMergePrepareMergePage, MoveHdl_Impl));
87cdf0e10cSrcweir     m_aFirstPB.SetClickHdl( aMoveLink );
88cdf0e10cSrcweir     m_aPrevPB.SetClickHdl( aMoveLink );
89cdf0e10cSrcweir     m_aNextPB.SetClickHdl( aMoveLink );
90cdf0e10cSrcweir     m_aLastPB.SetClickHdl( aMoveLink );
91cdf0e10cSrcweir     m_aRecordED.SetActionHdl( aMoveLink );
92cdf0e10cSrcweir     m_ExcludeCB.SetClickHdl(LINK(this, SwMailMergePrepareMergePage, ExcludeHdl_Impl));
93cdf0e10cSrcweir     aMoveLink.Call(&m_aRecordED);
94cdf0e10cSrcweir }
95cdf0e10cSrcweir /*-- 02.04.2004 16:42:49---------------------------------------------------
96cdf0e10cSrcweir 
97cdf0e10cSrcweir   -----------------------------------------------------------------------*/
~SwMailMergePrepareMergePage()98cdf0e10cSrcweir SwMailMergePrepareMergePage::~SwMailMergePrepareMergePage()
99cdf0e10cSrcweir {
100cdf0e10cSrcweir }
101cdf0e10cSrcweir /*-- 13.05.2004 15:36:48---------------------------------------------------
102cdf0e10cSrcweir 
103cdf0e10cSrcweir   -----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergePrepareMergePage,EditDocumentHdl_Impl,PushButton *,EMPTYARG)104cdf0e10cSrcweir IMPL_LINK( SwMailMergePrepareMergePage, EditDocumentHdl_Impl, PushButton*, EMPTYARG)
105cdf0e10cSrcweir {
106cdf0e10cSrcweir     m_pWizard->SetRestartPage(MM_PREPAREMERGEPAGE);
107cdf0e10cSrcweir     m_pWizard->EndDialog(RET_EDIT_DOC);
108cdf0e10cSrcweir     return 0;
109cdf0e10cSrcweir }
110cdf0e10cSrcweir /*-- 27.05.2004 14:16:37---------------------------------------------------
111cdf0e10cSrcweir 
112cdf0e10cSrcweir   -----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergePrepareMergePage,MoveHdl_Impl,void *,pCtrl)113cdf0e10cSrcweir IMPL_LINK( SwMailMergePrepareMergePage, MoveHdl_Impl, void*, pCtrl)
114cdf0e10cSrcweir {
115cdf0e10cSrcweir     SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem();
116cdf0e10cSrcweir     sal_Int32 nPos = rConfigItem.GetResultSetPosition();
117cdf0e10cSrcweir     if(pCtrl == &m_aFirstPB)
118cdf0e10cSrcweir     {
119cdf0e10cSrcweir         rConfigItem.MoveResultSet(1);
120cdf0e10cSrcweir     }
121cdf0e10cSrcweir     else if(pCtrl == &m_aPrevPB)
122cdf0e10cSrcweir     {
123cdf0e10cSrcweir         rConfigItem.MoveResultSet(nPos - 1);
124cdf0e10cSrcweir     }
125cdf0e10cSrcweir     else if(pCtrl == &m_aRecordED)
126cdf0e10cSrcweir     {
127cdf0e10cSrcweir         rConfigItem.MoveResultSet( static_cast< sal_Int32 >(m_aRecordED.GetValue()) );
128cdf0e10cSrcweir     }
129cdf0e10cSrcweir     else if(pCtrl == &m_aNextPB)
130cdf0e10cSrcweir         rConfigItem.MoveResultSet(nPos + 1);
131cdf0e10cSrcweir     else if(pCtrl == &m_aLastPB)
132cdf0e10cSrcweir         rConfigItem.MoveResultSet(-1);
133cdf0e10cSrcweir 
134cdf0e10cSrcweir     nPos = rConfigItem.GetResultSetPosition();
135cdf0e10cSrcweir     m_aRecordED.SetValue(nPos);
136cdf0e10cSrcweir     bool bIsFirst;
137cdf0e10cSrcweir     bool bIsLast;
138cdf0e10cSrcweir     bool bValid = rConfigItem.IsResultSetFirstLast(bIsFirst, bIsLast);
139cdf0e10cSrcweir     m_aFirstPB.Enable(bValid && !bIsFirst);
140cdf0e10cSrcweir     m_aPrevPB.Enable(bValid && !bIsFirst);
141cdf0e10cSrcweir     m_aNextPB.Enable(bValid && !bIsLast);
142cdf0e10cSrcweir     m_aLastPB.Enable(bValid && !bIsLast);
143cdf0e10cSrcweir     m_ExcludeCB.Check(rConfigItem.IsRecordExcluded( rConfigItem.GetResultSetPosition() ));
144cdf0e10cSrcweir     //now the record has to be merged into the source document
145cdf0e10cSrcweir     const SwDBData& rDBData = rConfigItem.GetCurrentDBData();
146cdf0e10cSrcweir 
147cdf0e10cSrcweir     Sequence< PropertyValue > aArgs(7);
148cdf0e10cSrcweir     Sequence<Any> aSelection(1);
149cdf0e10cSrcweir     aSelection[0] <<= rConfigItem.GetResultSetPosition();
150cdf0e10cSrcweir     aArgs[0].Name = C2U("Selection");
151cdf0e10cSrcweir     aArgs[0].Value <<= aSelection;
152cdf0e10cSrcweir     aArgs[1].Name = C2U("DataSourceName");
153cdf0e10cSrcweir     aArgs[1].Value <<= rDBData.sDataSource;
154cdf0e10cSrcweir     aArgs[2].Name = C2U("Command");
155cdf0e10cSrcweir     aArgs[2].Value <<= rDBData.sCommand;
156cdf0e10cSrcweir     aArgs[3].Name = C2U("CommandType");
157cdf0e10cSrcweir     aArgs[3].Value <<= rDBData.nCommandType;
158cdf0e10cSrcweir     aArgs[4].Name = C2U("ActiveConnection");
159cdf0e10cSrcweir     aArgs[4].Value <<=  rConfigItem.GetConnection().getTyped();
160cdf0e10cSrcweir     aArgs[5].Name = C2U("Filter");
161cdf0e10cSrcweir     aArgs[5].Value <<= rConfigItem.GetFilter();
162cdf0e10cSrcweir     aArgs[6].Name = C2U("Cursor");
163cdf0e10cSrcweir     aArgs[6].Value <<= rConfigItem.GetResultSet();
164cdf0e10cSrcweir 
165cdf0e10cSrcweir     ::svx::ODataAccessDescriptor aDescriptor(aArgs);
166cdf0e10cSrcweir     SwWrtShell& rSh = m_pWizard->GetSwView()->GetWrtShell();
167cdf0e10cSrcweir     SwMergeDescriptor aMergeDesc( DBMGR_MERGE, rSh, aDescriptor );
168cdf0e10cSrcweir     rSh.GetNewDBMgr()->MergeNew(aMergeDesc);
169cdf0e10cSrcweir     return 0;
170cdf0e10cSrcweir }
171cdf0e10cSrcweir /*-- 27.05.2004 14:46:28---------------------------------------------------
172cdf0e10cSrcweir 
173cdf0e10cSrcweir   -----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergePrepareMergePage,ExcludeHdl_Impl,CheckBox *,pBox)174cdf0e10cSrcweir IMPL_LINK( SwMailMergePrepareMergePage, ExcludeHdl_Impl, CheckBox*, pBox)
175cdf0e10cSrcweir {
176cdf0e10cSrcweir     SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem();
177cdf0e10cSrcweir     rConfigItem.ExcludeRecord( rConfigItem.GetResultSetPosition(), pBox->IsChecked());
178cdf0e10cSrcweir     return 0;
179cdf0e10cSrcweir };
180cdf0e10cSrcweir /*-- 18.08.2004 10:36:25---------------------------------------------------
181cdf0e10cSrcweir 
182cdf0e10cSrcweir   -----------------------------------------------------------------------*/
ActivatePage()183cdf0e10cSrcweir void  SwMailMergePrepareMergePage::ActivatePage()
184cdf0e10cSrcweir {
185cdf0e10cSrcweir     MoveHdl_Impl(&m_aRecordED);
186cdf0e10cSrcweir }
187cdf0e10cSrcweir /*-- 13.05.2004 15:38:32---------------------------------------------------
188cdf0e10cSrcweir     merge the data into a new file
189cdf0e10cSrcweir   -----------------------------------------------------------------------*/
commitPage(::svt::WizardTypes::CommitPageReason _eReason)190cdf0e10cSrcweir sal_Bool  SwMailMergePrepareMergePage::commitPage( ::svt::WizardTypes::CommitPageReason _eReason )
191cdf0e10cSrcweir {
192cdf0e10cSrcweir     SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem();
193cdf0e10cSrcweir     if(::svt::WizardTypes::eTravelForward == _eReason && !rConfigItem.IsMergeDone())
194cdf0e10cSrcweir     {
195cdf0e10cSrcweir         m_pWizard->CreateTargetDocument();
196cdf0e10cSrcweir         m_pWizard->SetRestartPage(MM_MERGEPAGE);
197cdf0e10cSrcweir         m_pWizard->EndDialog(RET_TARGET_CREATED);
198cdf0e10cSrcweir     }
199cdf0e10cSrcweir     return sal_True;
200cdf0e10cSrcweir }
201