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