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 10cdf0e10cSrcweir * 11*efeef26fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 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. 19cdf0e10cSrcweir * 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 #ifdef SW_DLLIMPLEMENTATION 27cdf0e10cSrcweir #undef SW_DLLIMPLEMENTATION 28cdf0e10cSrcweir #endif 29cdf0e10cSrcweir #include <mmoutputpage.hxx> 30cdf0e10cSrcweir #include <mailmergewizard.hxx> 31cdf0e10cSrcweir #include <mmconfigitem.hxx> 32cdf0e10cSrcweir #include <mailmergechildwindow.hxx> 33cdf0e10cSrcweir #include <mailconfigpage.hxx> 34cdf0e10cSrcweir #include <cmdid.h> 35cdf0e10cSrcweir #include <swtypes.hxx> 36cdf0e10cSrcweir #ifndef _VIEW_HXX 37cdf0e10cSrcweir #include <view.hxx> 38cdf0e10cSrcweir #endif 39cdf0e10cSrcweir #include <wrtsh.hxx> 40cdf0e10cSrcweir #ifndef _DOCSH_HXX 41cdf0e10cSrcweir #include <docsh.hxx> 42cdf0e10cSrcweir #endif 43cdf0e10cSrcweir #ifndef IDOCUMENTDEVICEACCESS_HXX_INCLUDED 44cdf0e10cSrcweir #include <IDocumentDeviceAccess.hxx> 45cdf0e10cSrcweir #endif 46cdf0e10cSrcweir #include <hintids.hxx> 47cdf0e10cSrcweir #include <editeng/scripttypeitem.hxx> 48cdf0e10cSrcweir #include <editeng/langitem.hxx> 49cdf0e10cSrcweir #include <svl/itemset.hxx> 50cdf0e10cSrcweir #include <svl/stritem.hxx> 51cdf0e10cSrcweir #include <svtools/ehdl.hxx> 52cdf0e10cSrcweir #include <svtools/sfxecode.hxx> 53cdf0e10cSrcweir #include <vcl/msgbox.hxx> 54cdf0e10cSrcweir #include <sfx2/dinfdlg.hxx> 55cdf0e10cSrcweir #include <sfx2/printer.hxx> 56cdf0e10cSrcweir #include <sfx2/fcontnr.hxx> 57cdf0e10cSrcweir #include <sfx2/viewfrm.hxx> 58cdf0e10cSrcweir #include <sfx2/dispatch.hxx> 59cdf0e10cSrcweir #include <sfx2/docfile.hxx> 60cdf0e10cSrcweir //#ifndef _SFX_DOCFILT_HACK_HXX 61cdf0e10cSrcweir //#include <sfx2/docfilt.hxx> 62cdf0e10cSrcweir //#endif 63cdf0e10cSrcweir #include <tools/urlobj.hxx> 64cdf0e10cSrcweir #include <svl/urihelper.hxx> 65cdf0e10cSrcweir #ifndef _VCL_PRINT_HXX 66cdf0e10cSrcweir #include <vcl/print.hxx> 67cdf0e10cSrcweir #endif 68cdf0e10cSrcweir #include <unotools/tempfile.hxx> 69cdf0e10cSrcweir #include <osl/file.hxx> 70cdf0e10cSrcweir #include <mmgreetingspage.hxx> 71cdf0e10cSrcweir #include <com/sun/star/frame/XStorable.hpp> 72cdf0e10cSrcweir #include <com/sun/star/sdbcx/XColumnsSupplier.hpp> 73cdf0e10cSrcweir #include <com/sun/star/sdb/XColumn.hpp> 74cdf0e10cSrcweir //#ifndef _COM_SUN_STAR_BEANS_PROPERTYVALUE_HPP_ 75cdf0e10cSrcweir //#include <com/sun/star/beans/PropertyValue.hpp> 76cdf0e10cSrcweir //#endif 77cdf0e10cSrcweir //#ifndef _BASEDLGS_HXX 78cdf0e10cSrcweir //#include <sfx2/basedlgs.hxx> 79cdf0e10cSrcweir //#endif 80cdf0e10cSrcweir #ifndef _DBMGR_HXX 81cdf0e10cSrcweir #include <dbmgr.hxx> 82cdf0e10cSrcweir #endif 83cdf0e10cSrcweir #include <swunohelper.hxx> 84cdf0e10cSrcweir #include <vos/mutex.hxx> 85cdf0e10cSrcweir #include <shellio.hxx> 86cdf0e10cSrcweir #include <svtools/htmlcfg.hxx> 87cdf0e10cSrcweir #include <sfx2/event.hxx> 88cdf0e10cSrcweir #include <swevent.hxx> 89cdf0e10cSrcweir #include <mmoutputpage.hrc> 90cdf0e10cSrcweir #include <dbui.hxx> 91cdf0e10cSrcweir #include <dbui.hrc> 92cdf0e10cSrcweir #include <helpid.h> 93cdf0e10cSrcweir #include <sfx2/app.hxx> 94cdf0e10cSrcweir #include <statstr.hrc> 95cdf0e10cSrcweir #include <unomid.h> 96cdf0e10cSrcweir 97cdf0e10cSrcweir using namespace svt; 98cdf0e10cSrcweir using namespace ::com::sun::star; 99cdf0e10cSrcweir using namespace ::com::sun::star::uno; 100cdf0e10cSrcweir 101cdf0e10cSrcweir /*-- 01.07.2004 16:47:49--------------------------------------------------- 102cdf0e10cSrcweir 103cdf0e10cSrcweir -----------------------------------------------------------------------*/ 104cdf0e10cSrcweir String lcl_GetExtensionForDocType(sal_uLong nDocType) 105cdf0e10cSrcweir { 106cdf0e10cSrcweir String sExtension; 107cdf0e10cSrcweir switch( nDocType ) 108cdf0e10cSrcweir { 109cdf0e10cSrcweir case MM_DOCTYPE_OOO : sExtension = String::CreateFromAscii( "odt" ); break; 110cdf0e10cSrcweir case MM_DOCTYPE_PDF : sExtension = String::CreateFromAscii( "pdf" ); break; 111cdf0e10cSrcweir case MM_DOCTYPE_WORD: sExtension = String::CreateFromAscii( "doc" ); break; 112cdf0e10cSrcweir case MM_DOCTYPE_HTML: sExtension = String::CreateFromAscii( "html" ); break; 113cdf0e10cSrcweir case MM_DOCTYPE_TEXT: sExtension = String::CreateFromAscii( "txt" ); break; 114cdf0e10cSrcweir } 115cdf0e10cSrcweir return sExtension; 116cdf0e10cSrcweir } 117cdf0e10cSrcweir /*-- 28.06.2004 11:49:21--------------------------------------------------- 118cdf0e10cSrcweir 119cdf0e10cSrcweir -----------------------------------------------------------------------*/ 120cdf0e10cSrcweir ::rtl::OUString lcl_GetColumnValueOf(const ::rtl::OUString& rColumn, Reference < container::XNameAccess>& rxColAccess ) 121cdf0e10cSrcweir { 122cdf0e10cSrcweir ::rtl::OUString sRet; 123cdf0e10cSrcweir if(rxColAccess->hasByName(rColumn)) 124cdf0e10cSrcweir { 125cdf0e10cSrcweir Any aCol = rxColAccess->getByName(rColumn); 126cdf0e10cSrcweir Reference< sdb::XColumn > xColumn; 127cdf0e10cSrcweir aCol >>= xColumn; 128cdf0e10cSrcweir if(xColumn.is()) 129cdf0e10cSrcweir sRet = xColumn->getString(); 130cdf0e10cSrcweir } 131cdf0e10cSrcweir return sRet; 132cdf0e10cSrcweir } 133cdf0e10cSrcweir /*-- 21.06.2004 14:01:13--------------------------------------------------- 134cdf0e10cSrcweir 135cdf0e10cSrcweir -----------------------------------------------------------------------*/ 136cdf0e10cSrcweir class SwSaveWarningBox_Impl : public ModalDialog 137cdf0e10cSrcweir { 138cdf0e10cSrcweir FixedImage aWarningImageIM; 139cdf0e10cSrcweir FixedInfo aWarningFI; 140cdf0e10cSrcweir 141cdf0e10cSrcweir FixedText aFileNameFT; 142cdf0e10cSrcweir Edit aFileNameED; 143cdf0e10cSrcweir 144cdf0e10cSrcweir FixedLine aSeparatorFL; 145cdf0e10cSrcweir OKButton aOKPB; 146cdf0e10cSrcweir CancelButton aCancelPB; 147cdf0e10cSrcweir 148cdf0e10cSrcweir DECL_LINK( ModifyHdl, Edit*); 149cdf0e10cSrcweir public: 150cdf0e10cSrcweir SwSaveWarningBox_Impl(Window* pParent, const String& rFileName); 151cdf0e10cSrcweir ~SwSaveWarningBox_Impl(); 152cdf0e10cSrcweir 153cdf0e10cSrcweir String GetFileName() const {return aFileNameED.GetText();} 154cdf0e10cSrcweir }; 155cdf0e10cSrcweir /*-- 02.07.2004 08:54:42--------------------------------------------------- 156cdf0e10cSrcweir 157cdf0e10cSrcweir -----------------------------------------------------------------------*/ 158cdf0e10cSrcweir class SwSendQueryBox_Impl : public ModalDialog 159cdf0e10cSrcweir { 160cdf0e10cSrcweir FixedImage aQueryImageIM; 161cdf0e10cSrcweir FixedInfo aQueryFI; 162cdf0e10cSrcweir 163cdf0e10cSrcweir Edit aTextED; 164cdf0e10cSrcweir 165cdf0e10cSrcweir FixedLine aSeparatorFL; 166cdf0e10cSrcweir OKButton aOKPB; 167cdf0e10cSrcweir CancelButton aCancelPB; 168cdf0e10cSrcweir 169cdf0e10cSrcweir bool bIsEmptyAllowed; 170cdf0e10cSrcweir DECL_LINK( ModifyHdl, Edit*); 171cdf0e10cSrcweir public: 172cdf0e10cSrcweir SwSendQueryBox_Impl(Window* pParent, const String& rQueryText); 173cdf0e10cSrcweir ~SwSendQueryBox_Impl(); 174cdf0e10cSrcweir 175cdf0e10cSrcweir void SetValue(const String& rSet) 176cdf0e10cSrcweir { 177cdf0e10cSrcweir aTextED.SetText(rSet); 178cdf0e10cSrcweir ModifyHdl( &aTextED ); 179cdf0e10cSrcweir } 180cdf0e10cSrcweir String GetValue() const {return aTextED.GetText();} 181cdf0e10cSrcweir 182cdf0e10cSrcweir void SetIsEmptyTextAllowed(bool bSet) 183cdf0e10cSrcweir { 184cdf0e10cSrcweir bIsEmptyAllowed = bSet; 185cdf0e10cSrcweir ModifyHdl( &aTextED ); 186cdf0e10cSrcweir } 187cdf0e10cSrcweir }; 188cdf0e10cSrcweir 189cdf0e10cSrcweir /*-- 21.06.2004 14:11:58--------------------------------------------------- 190cdf0e10cSrcweir 191cdf0e10cSrcweir -----------------------------------------------------------------------*/ 192cdf0e10cSrcweir SwSaveWarningBox_Impl::SwSaveWarningBox_Impl(Window* pParent, const String& rFileName) : 193cdf0e10cSrcweir ModalDialog(pParent, SW_RES( DLG_MM_SAVEWARNING )), 194cdf0e10cSrcweir aWarningImageIM(this, SW_RES( IM_WARNING )), 195cdf0e10cSrcweir aWarningFI(this, SW_RES( FI_WARNING )), 196cdf0e10cSrcweir aFileNameFT(this, SW_RES( FT_FILENAME )), 197cdf0e10cSrcweir aFileNameED(this, SW_RES( ED_FILENAME )), 198cdf0e10cSrcweir aSeparatorFL(this, SW_RES( FL_SEPARATOR )), 199cdf0e10cSrcweir aOKPB(this, SW_RES( PB_OK )), 200cdf0e10cSrcweir aCancelPB(this, SW_RES( PB_CANCEL )) 201cdf0e10cSrcweir { 202cdf0e10cSrcweir FreeResource(); 203cdf0e10cSrcweir aWarningImageIM.SetImage(WarningBox::GetStandardImage()); 204cdf0e10cSrcweir aFileNameED.SetText(rFileName); 205cdf0e10cSrcweir aFileNameED.SetModifyHdl(LINK(this, SwSaveWarningBox_Impl, ModifyHdl)); 206cdf0e10cSrcweir ModifyHdl( &aFileNameED ); 207cdf0e10cSrcweir } 208cdf0e10cSrcweir /*-- 21.06.2004 14:11:58--------------------------------------------------- 209cdf0e10cSrcweir 210cdf0e10cSrcweir -----------------------------------------------------------------------*/ 211cdf0e10cSrcweir SwSaveWarningBox_Impl::~SwSaveWarningBox_Impl() 212cdf0e10cSrcweir { 213cdf0e10cSrcweir } 214cdf0e10cSrcweir /*-- 21.06.2004 14:11:58--------------------------------------------------- 215cdf0e10cSrcweir 216cdf0e10cSrcweir -----------------------------------------------------------------------*/ 217cdf0e10cSrcweir IMPL_LINK( SwSaveWarningBox_Impl, ModifyHdl, Edit*, pEdit) 218cdf0e10cSrcweir { 219cdf0e10cSrcweir aOKPB.Enable(pEdit->GetText().Len() > 0); 220cdf0e10cSrcweir return 0; 221cdf0e10cSrcweir } 222cdf0e10cSrcweir /*-- 02.07.2004 09:02:53--------------------------------------------------- 223cdf0e10cSrcweir 224cdf0e10cSrcweir -----------------------------------------------------------------------*/ 225cdf0e10cSrcweir SwSendQueryBox_Impl::SwSendQueryBox_Impl(Window* pParent, const String& rText) : 226cdf0e10cSrcweir ModalDialog(pParent, SW_RES( DLG_MM_QUERY )), 227cdf0e10cSrcweir aQueryImageIM( this, SW_RES( IM_QUERY )), 228cdf0e10cSrcweir aQueryFI( this, SW_RES( FI_QUERY )), 229cdf0e10cSrcweir aTextED( this, SW_RES( ED_TEXT )), 230cdf0e10cSrcweir aSeparatorFL(this, SW_RES( FL_SEPARATOR )), 231cdf0e10cSrcweir aOKPB(this, SW_RES( PB_OK )), 232cdf0e10cSrcweir aCancelPB(this, SW_RES( PB_CANCEL )), 233cdf0e10cSrcweir bIsEmptyAllowed(true) 234cdf0e10cSrcweir { 235cdf0e10cSrcweir FreeResource(); 236cdf0e10cSrcweir aQueryFI.SetText(rText); 237cdf0e10cSrcweir aQueryImageIM.SetImage(QueryBox::GetStandardImage()); 238cdf0e10cSrcweir aTextED.SetModifyHdl(LINK(this, SwSendQueryBox_Impl, ModifyHdl)); 239cdf0e10cSrcweir ModifyHdl( &aTextED ); 240cdf0e10cSrcweir } 241cdf0e10cSrcweir /*-- 02.07.2004 08:58:45--------------------------------------------------- 242cdf0e10cSrcweir 243cdf0e10cSrcweir -----------------------------------------------------------------------*/ 244cdf0e10cSrcweir SwSendQueryBox_Impl::~SwSendQueryBox_Impl() 245cdf0e10cSrcweir { 246cdf0e10cSrcweir } 247cdf0e10cSrcweir /*-- 02.07.2004 08:58:25--------------------------------------------------- 248cdf0e10cSrcweir 249cdf0e10cSrcweir -----------------------------------------------------------------------*/ 250cdf0e10cSrcweir IMPL_LINK( SwSendQueryBox_Impl, ModifyHdl, Edit*, pEdit) 251cdf0e10cSrcweir { 252cdf0e10cSrcweir aOKPB.Enable(bIsEmptyAllowed || (pEdit->GetText().Len() > 0)); 253cdf0e10cSrcweir return 0; 254cdf0e10cSrcweir } 255cdf0e10cSrcweir 256cdf0e10cSrcweir /*-- 16.04.2004 16:34:48--------------------------------------------------- 257cdf0e10cSrcweir 258cdf0e10cSrcweir -----------------------------------------------------------------------*/ 259cdf0e10cSrcweir class SwCopyToDialog : public SfxModalDialog 260cdf0e10cSrcweir { 261cdf0e10cSrcweir FixedInfo m_aDescriptionFI; 262cdf0e10cSrcweir FixedText m_aCCFT; 263cdf0e10cSrcweir Edit m_aCCED; 264cdf0e10cSrcweir FixedText m_aBCCFT; 265cdf0e10cSrcweir Edit m_aBCCED; 266cdf0e10cSrcweir 267cdf0e10cSrcweir FixedInfo m_aNoteFI; 268cdf0e10cSrcweir FixedLine m_aSeparatorFL; 269cdf0e10cSrcweir 270cdf0e10cSrcweir OKButton m_aOK; 271cdf0e10cSrcweir CancelButton m_aCancel; 272cdf0e10cSrcweir HelpButton m_aHelp; 273cdf0e10cSrcweir 274cdf0e10cSrcweir public: 275cdf0e10cSrcweir SwCopyToDialog(Window* pParent); 276cdf0e10cSrcweir ~SwCopyToDialog(); 277cdf0e10cSrcweir 278cdf0e10cSrcweir String GetCC() {return m_aCCED.GetText();} 279cdf0e10cSrcweir void SetCC(const String& rSet) {m_aCCED.SetText(rSet);} 280cdf0e10cSrcweir 281cdf0e10cSrcweir String GetBCC() {return m_aBCCED.GetText();} 282cdf0e10cSrcweir void SetBCC(const String& rSet) {m_aBCCED.SetText(rSet);} 283cdf0e10cSrcweir }; 284cdf0e10cSrcweir 285cdf0e10cSrcweir /*-- 16.04.2004 16:43:18--------------------------------------------------- 286cdf0e10cSrcweir 287cdf0e10cSrcweir -----------------------------------------------------------------------*/ 288cdf0e10cSrcweir SwCopyToDialog::SwCopyToDialog(Window* pParent) : 289cdf0e10cSrcweir SfxModalDialog(pParent, SW_RES(DLG_MM_COPYTO)), 290cdf0e10cSrcweir #ifdef MSC 291cdf0e10cSrcweir #pragma warning (disable : 4355) 292cdf0e10cSrcweir #endif 293cdf0e10cSrcweir m_aDescriptionFI( this, SW_RES( FI_DESCRIPTION )), 294cdf0e10cSrcweir m_aCCFT( this, SW_RES( FT_CC )), 295cdf0e10cSrcweir m_aCCED( this, SW_RES( ED_CC )), 296cdf0e10cSrcweir m_aBCCFT( this, SW_RES( FT_BCC )), 297cdf0e10cSrcweir m_aBCCED( this, SW_RES( ED_BCC )), 298cdf0e10cSrcweir m_aNoteFI( this, SW_RES( FI_NOTE )), 299cdf0e10cSrcweir m_aSeparatorFL( this, SW_RES( FL_SEPARATOR )), 300cdf0e10cSrcweir m_aOK( this, SW_RES( PB_OK )), 301cdf0e10cSrcweir m_aCancel( this, SW_RES( PB_CANCEL )), 302cdf0e10cSrcweir m_aHelp( this, SW_RES( PB_HELP )) 303cdf0e10cSrcweir #ifdef MSC 304cdf0e10cSrcweir #pragma warning (default : 4355) 305cdf0e10cSrcweir #endif 306cdf0e10cSrcweir { 307cdf0e10cSrcweir FreeResource(); 308cdf0e10cSrcweir } 309cdf0e10cSrcweir /*-- 16.04.2004 16:43:10--------------------------------------------------- 310cdf0e10cSrcweir 311cdf0e10cSrcweir -----------------------------------------------------------------------*/ 312cdf0e10cSrcweir SwCopyToDialog::~SwCopyToDialog() 313cdf0e10cSrcweir { 314cdf0e10cSrcweir } 315cdf0e10cSrcweir 316cdf0e10cSrcweir /*-- 02.04.2004 13:15:54--------------------------------------------------- 317cdf0e10cSrcweir 318cdf0e10cSrcweir -----------------------------------------------------------------------*/ 319cdf0e10cSrcweir SwMailMergeOutputPage::SwMailMergeOutputPage( SwMailMergeWizard* _pParent) : 320cdf0e10cSrcweir svt::OWizardPage( _pParent, SW_RES(DLG_MM_OUTPUT_PAGE)), 321cdf0e10cSrcweir #ifdef MSC 322cdf0e10cSrcweir #pragma warning (disable : 4355) 323cdf0e10cSrcweir #endif 324cdf0e10cSrcweir m_aHeaderFI(this, SW_RES( FI_HEADER ) ), 325cdf0e10cSrcweir m_aOptionsFI(this, SW_RES( FI_OPTIONS ) ), 326cdf0e10cSrcweir m_aSaveStartDocRB(this, SW_RES( RB_SAVESTARTDOC ) ), 327cdf0e10cSrcweir m_aSaveMergedDocRB(this, SW_RES( RB_SAVEMERGEDDOC ) ), 328cdf0e10cSrcweir m_aPrintRB(this, SW_RES( RB_PRINT ) ), 329cdf0e10cSrcweir m_aSendMailRB(this, SW_RES( RB_SENDMAIL ) ), 330cdf0e10cSrcweir 331cdf0e10cSrcweir m_aSeparatorFL(this, SW_RES( FL_SEPARATOR ) ), 332cdf0e10cSrcweir 333cdf0e10cSrcweir m_aSaveStartDocPB(this, SW_RES( PB_SAVESTARTDOC ) ), 334cdf0e10cSrcweir 335cdf0e10cSrcweir m_aSaveAsOneRB(this, SW_RES( RB_SAVEASONE ) ), 336cdf0e10cSrcweir m_aSaveIndividualRB(this, SW_RES( RB_SAVEINDIVIDUAL ) ), 337cdf0e10cSrcweir m_aPrintAllRB(this, SW_RES( RB_PRINTALL ) ), 338cdf0e10cSrcweir m_aSendAllRB( this, SW_RES( RB_SENDALL ) ), 339cdf0e10cSrcweir 340cdf0e10cSrcweir m_aFromRB(this, SW_RES( RB_FROM ) ), 341cdf0e10cSrcweir m_aFromNF(this, SW_RES( NF_FROM ) ), 342cdf0e10cSrcweir m_aToFT(this, SW_RES( FT_TO ) ), 343cdf0e10cSrcweir m_aToNF(this, SW_RES( NF_TO ) ), 344cdf0e10cSrcweir m_aSaveNowPB(this, SW_RES( PB_SAVENOW ) ), 345cdf0e10cSrcweir 346cdf0e10cSrcweir m_aPrinterFT(this, SW_RES( FT_PRINT ) ), 347cdf0e10cSrcweir m_aPrinterLB(this, SW_RES( LB_PRINT ) ), 348cdf0e10cSrcweir m_aPrinterSettingsPB(this, SW_RES( PB_PRINTERSETTINGS ) ), 349cdf0e10cSrcweir m_aPrintNowPB(this, SW_RES( PB_PRINTNOW ) ), 350cdf0e10cSrcweir 351cdf0e10cSrcweir m_aMailToFT( this, SW_RES( FT_MAILTO ) ), 352cdf0e10cSrcweir m_aMailToLB( this, SW_RES( LB_MAILTO ) ), 353cdf0e10cSrcweir m_aCopyToPB( this, SW_RES( PB_COPYTO ) ), 354cdf0e10cSrcweir m_aSubjectFT( this, SW_RES( FT_SUBJECT ) ), 355cdf0e10cSrcweir m_aSubjectED( this, SW_RES( ED_SUBJECT ) ), 356cdf0e10cSrcweir m_aSendAsFT( this, SW_RES( FT_SENDAS ) ), 357cdf0e10cSrcweir m_aSendAsLB( this, SW_RES( LB_SENDAS ) ), 358cdf0e10cSrcweir m_aAttachmentFT( this, SW_RES( FT_ATTACHMENT ) ), 359cdf0e10cSrcweir m_aAttachmentED( this, SW_RES( ED_ATTACHMENT ) ), 360cdf0e10cSrcweir m_aSendAsPB( this, SW_RES( PB_SENDAS ) ), 361cdf0e10cSrcweir m_aSendDocumentsPB( this, SW_RES( PB_SENDDOCUMENTS ) ), 362cdf0e10cSrcweir 363cdf0e10cSrcweir m_sSaveStartST(SW_RES( ST_SAVESTART ) ), 364cdf0e10cSrcweir m_sSaveMergedST(SW_RES( ST_SAVEMERGED ) ), 365cdf0e10cSrcweir m_sPrintST(SW_RES( ST_PRINT ) ), 366cdf0e10cSrcweir m_sSendMailST(SW_RES( ST_SENDMAIL ) ), 367cdf0e10cSrcweir 368cdf0e10cSrcweir m_sDefaultAttachmentST(SW_RES( ST_DEFAULTATTACHMENT )), 369cdf0e10cSrcweir m_sNoSubjectQueryST(SW_RES( ST_SUBJECTQUERY )), 370cdf0e10cSrcweir m_sNoSubjectST(SW_RES( ST_NOSUBJECT )), 371cdf0e10cSrcweir m_sNoAttachmentNameST(SW_RES( ST_NOATTACHMENTNAME )), 372cdf0e10cSrcweir m_sConfigureMail(SW_RES( ST_CONFIGUREMAIL)), 373cdf0e10cSrcweir #ifdef MSC 374cdf0e10cSrcweir #pragma warning (default : 4355) 375cdf0e10cSrcweir #endif 376cdf0e10cSrcweir m_bCancelSaving( false ), 377cdf0e10cSrcweir m_pWizard(_pParent), 378cdf0e10cSrcweir m_pTempPrinter( 0 ), 379cdf0e10cSrcweir m_pDocumentPrinterCopy(0) 380cdf0e10cSrcweir { 381cdf0e10cSrcweir FreeResource(); 382cdf0e10cSrcweir 383cdf0e10cSrcweir SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem(); 384cdf0e10cSrcweir // #i51949# hide e-Mail option if e-Mail is not supported 385cdf0e10cSrcweir if(!rConfigItem.IsMailAvailable()) 386cdf0e10cSrcweir m_aSendMailRB.Hide(); 387cdf0e10cSrcweir 388cdf0e10cSrcweir Link aLink = LINK(this, SwMailMergeOutputPage, OutputTypeHdl_Impl); 389cdf0e10cSrcweir m_aSaveStartDocRB.SetClickHdl(aLink); 390cdf0e10cSrcweir m_aSaveMergedDocRB.SetClickHdl(aLink); 391cdf0e10cSrcweir m_aPrintRB.SetClickHdl(aLink); 392cdf0e10cSrcweir m_aSendMailRB.SetClickHdl(aLink); 393cdf0e10cSrcweir m_aSaveStartDocRB.Check(); 394cdf0e10cSrcweir m_aPrintAllRB.Check(); 395cdf0e10cSrcweir m_aSaveAsOneRB.Check(); 396cdf0e10cSrcweir m_aSendAllRB.Check(); 397cdf0e10cSrcweir 398cdf0e10cSrcweir m_aSaveStartDocPB.SetClickHdl(LINK(this, SwMailMergeOutputPage, SaveStartHdl_Impl)); 399cdf0e10cSrcweir m_aSaveNowPB.SetClickHdl(LINK(this, SwMailMergeOutputPage, SaveOutputHdl_Impl)); 400cdf0e10cSrcweir m_aPrinterLB.SetSelectHdl(LINK(this, SwMailMergeOutputPage, PrinterChangeHdl_Impl)); 401cdf0e10cSrcweir m_aPrintNowPB.SetClickHdl(LINK(this, SwMailMergeOutputPage, PrintHdl_Impl)); 402cdf0e10cSrcweir m_aPrinterSettingsPB.SetClickHdl(LINK(this, SwMailMergeOutputPage, PrinterSetupHdl_Impl)); 403cdf0e10cSrcweir 404cdf0e10cSrcweir m_aSendAsPB.SetClickHdl(LINK(this, SwMailMergeOutputPage, SendAsHdl_Impl)), 405cdf0e10cSrcweir m_aSendDocumentsPB.SetClickHdl(LINK(this, SwMailMergeOutputPage, SendDocumentsHdl_Impl)), 406cdf0e10cSrcweir m_aSendAsLB.SetSelectHdl(LINK(this, SwMailMergeOutputPage, SendTypeHdl_Impl)); 407cdf0e10cSrcweir 408cdf0e10cSrcweir m_nFromToRBPos = m_aFromRB.GetPosPixel().Y(); 409cdf0e10cSrcweir m_nFromToFTPos = m_aToFT.GetPosPixel().Y(); 410cdf0e10cSrcweir m_nFromToNFPos = m_aFromNF.GetPosPixel().Y(); 411cdf0e10cSrcweir 412cdf0e10cSrcweir m_nRBOffset = m_nFromToRBPos - m_aSaveIndividualRB.GetPosPixel().Y(); 413cdf0e10cSrcweir 414cdf0e10cSrcweir OutputTypeHdl_Impl(&m_aSaveStartDocRB); 415cdf0e10cSrcweir 416cdf0e10cSrcweir m_aCopyToPB.SetClickHdl(LINK(this, SwMailMergeOutputPage, CopyToHdl_Impl)); 417cdf0e10cSrcweir 418cdf0e10cSrcweir m_aSaveAsOneRB.SetClickHdl(LINK(this, SwMailMergeOutputPage, DocumentSelectionHdl_Impl)); 419cdf0e10cSrcweir m_aSaveIndividualRB.SetClickHdl(LINK(this, SwMailMergeOutputPage, DocumentSelectionHdl_Impl)); 420cdf0e10cSrcweir m_aPrintAllRB.SetClickHdl(LINK(this, SwMailMergeOutputPage, DocumentSelectionHdl_Impl)); 421cdf0e10cSrcweir m_aSendAllRB.SetClickHdl(LINK(this, SwMailMergeOutputPage, DocumentSelectionHdl_Impl)); 422cdf0e10cSrcweir 423cdf0e10cSrcweir m_aFromRB.SetClickHdl(LINK(this, SwMailMergeOutputPage, DocumentSelectionHdl_Impl)); 424cdf0e10cSrcweir //#i63267# printing might be disabled 425cdf0e10cSrcweir m_aPrintRB.Enable(!Application::GetSettings().GetMiscSettings().GetDisablePrinting()); 426cdf0e10cSrcweir } 427cdf0e10cSrcweir 428cdf0e10cSrcweir /*-- 02.04.2004 13:15:44--------------------------------------------------- 429cdf0e10cSrcweir 430cdf0e10cSrcweir -----------------------------------------------------------------------*/ 431cdf0e10cSrcweir SwMailMergeOutputPage::~SwMailMergeOutputPage() 432cdf0e10cSrcweir { 433cdf0e10cSrcweir delete m_pTempPrinter; 434cdf0e10cSrcweir delete m_pDocumentPrinterCopy; 435cdf0e10cSrcweir } 436cdf0e10cSrcweir /*-- 31.01.2005 08:38:14--------------------------------------------------- 437cdf0e10cSrcweir 438cdf0e10cSrcweir -----------------------------------------------------------------------*/ 439cdf0e10cSrcweir void SwMailMergeOutputPage::ActivatePage() 440cdf0e10cSrcweir { 441cdf0e10cSrcweir //fill printer ListBox 442cdf0e10cSrcweir const std::vector<rtl::OUString>& rPrinters = Printer::GetPrinterQueues(); 443cdf0e10cSrcweir unsigned int nCount = rPrinters.size(); 444cdf0e10cSrcweir if ( nCount ) 445cdf0e10cSrcweir { 446cdf0e10cSrcweir for( unsigned int i = 0; i < nCount; i++ ) 447cdf0e10cSrcweir { 448cdf0e10cSrcweir m_aPrinterLB.InsertEntry( rPrinters[i] ); 449cdf0e10cSrcweir } 450cdf0e10cSrcweir 451cdf0e10cSrcweir } 452cdf0e10cSrcweir SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem(); 453cdf0e10cSrcweir 454cdf0e10cSrcweir SwView* pTargetView = rConfigItem.GetTargetView(); 455cdf0e10cSrcweir DBG_ASSERT(pTargetView, "no target view exists"); 456cdf0e10cSrcweir if(pTargetView) 457cdf0e10cSrcweir { 458cdf0e10cSrcweir SfxPrinter* pPrinter = pTargetView->GetWrtShell().getIDocumentDeviceAccess()->getPrinter( true ); 459cdf0e10cSrcweir m_aPrinterLB.SelectEntry( pPrinter->GetName() ); 460cdf0e10cSrcweir m_aToNF.SetValue( rConfigItem.GetMergedDocumentCount() ); 461cdf0e10cSrcweir m_aToNF.SetMax( rConfigItem.GetMergedDocumentCount() ); 462cdf0e10cSrcweir m_pDocumentPrinterCopy = pTargetView->GetWrtShell().getIDocumentDeviceAccess()->getPrinter( true )->Clone(); 463cdf0e10cSrcweir } 464cdf0e10cSrcweir m_aPrinterLB.SelectEntry( rConfigItem.GetSelectedPrinter() ); 465cdf0e10cSrcweir 466cdf0e10cSrcweir SwView* pSourceView = rConfigItem.GetSourceView(); 467cdf0e10cSrcweir DBG_ASSERT(pSourceView, "no source view exists"); 468cdf0e10cSrcweir if(pSourceView) 469cdf0e10cSrcweir { 470cdf0e10cSrcweir SwDocShell* pDocShell = pSourceView->GetDocShell(); 471cdf0e10cSrcweir if ( pDocShell->HasName() ) 472cdf0e10cSrcweir { 473cdf0e10cSrcweir INetURLObject aTmp( pDocShell->GetMedium()->GetName() ); 474cdf0e10cSrcweir m_aAttachmentED.SetText(aTmp.getName( 475cdf0e10cSrcweir INetURLObject::LAST_SEGMENT, true, INetURLObject::DECODE_WITH_CHARSET )); 476cdf0e10cSrcweir } 477cdf0e10cSrcweir } 478cdf0e10cSrcweir } 479cdf0e10cSrcweir /*-- 05.07.2004 13:54:11--------------------------------------------------- 480cdf0e10cSrcweir 481cdf0e10cSrcweir -----------------------------------------------------------------------*/ 482cdf0e10cSrcweir bool SwMailMergeOutputPage::canAdvance() const 483cdf0e10cSrcweir { 484cdf0e10cSrcweir return false; 485cdf0e10cSrcweir } 486cdf0e10cSrcweir /*-- 02.04.2004 13:15:44--------------------------------------------------- 487cdf0e10cSrcweir 488cdf0e10cSrcweir -----------------------------------------------------------------------*/ 489cdf0e10cSrcweir IMPL_LINK(SwMailMergeOutputPage, OutputTypeHdl_Impl, RadioButton*, pButton) 490cdf0e10cSrcweir { 491cdf0e10cSrcweir Control* aControls[] = 492cdf0e10cSrcweir { 493cdf0e10cSrcweir &m_aSaveStartDocPB, 494cdf0e10cSrcweir &m_aSaveAsOneRB, &m_aSaveIndividualRB, 495cdf0e10cSrcweir &m_aFromRB, &m_aFromNF, &m_aToFT, &m_aToNF, 496cdf0e10cSrcweir &m_aSaveNowPB, 497cdf0e10cSrcweir &m_aPrinterFT, &m_aPrinterLB, &m_aPrinterSettingsPB, &m_aPrintAllRB, 498cdf0e10cSrcweir &m_aPrintNowPB, 499cdf0e10cSrcweir &m_aMailToFT, &m_aMailToLB, &m_aCopyToPB, 500cdf0e10cSrcweir &m_aSubjectFT, &m_aSubjectED, 501cdf0e10cSrcweir &m_aSendAsFT, &m_aSendAsLB, &m_aSendAsPB, 502cdf0e10cSrcweir &m_aAttachmentFT, &m_aAttachmentED, 503cdf0e10cSrcweir &m_aSendAllRB, &m_aSendDocumentsPB, 504cdf0e10cSrcweir 0 505cdf0e10cSrcweir }; 506cdf0e10cSrcweir SetUpdateMode(sal_True); 507cdf0e10cSrcweir Control** pControl = aControls; 508cdf0e10cSrcweir do 509cdf0e10cSrcweir { 510cdf0e10cSrcweir (*pControl)->Show(sal_False); 511cdf0e10cSrcweir 512cdf0e10cSrcweir } while(*(++pControl)); 513cdf0e10cSrcweir 514cdf0e10cSrcweir if(&m_aSaveStartDocRB == pButton) 515cdf0e10cSrcweir { 516cdf0e10cSrcweir m_aSaveStartDocPB.Show(); 517cdf0e10cSrcweir m_aSeparatorFL.SetText(m_sSaveStartST); 518cdf0e10cSrcweir 519cdf0e10cSrcweir } 520cdf0e10cSrcweir else if(&m_aSaveMergedDocRB == pButton) 521cdf0e10cSrcweir { 522cdf0e10cSrcweir Control* aSaveMergedControls[] = 523cdf0e10cSrcweir { 524cdf0e10cSrcweir &m_aSaveAsOneRB, &m_aSaveIndividualRB, 525cdf0e10cSrcweir &m_aFromRB, &m_aFromNF, &m_aToFT, &m_aToNF, 526cdf0e10cSrcweir &m_aSaveNowPB, 527cdf0e10cSrcweir 0 528cdf0e10cSrcweir }; 529cdf0e10cSrcweir Control** pSaveMergeControl = aSaveMergedControls; 530cdf0e10cSrcweir do 531cdf0e10cSrcweir { 532cdf0e10cSrcweir (*pSaveMergeControl)->Show(sal_True); 533cdf0e10cSrcweir 534cdf0e10cSrcweir } while(*(++pSaveMergeControl)); 535cdf0e10cSrcweir if(!m_aFromRB.IsChecked() && !m_aSaveAsOneRB.IsChecked()) 536cdf0e10cSrcweir { 537cdf0e10cSrcweir m_aSaveIndividualRB.Check(); 538cdf0e10cSrcweir } 539cdf0e10cSrcweir m_aSeparatorFL.SetText(m_sSaveMergedST); 540cdf0e10cSrcweir //reposition the from/to line 541cdf0e10cSrcweir if(m_aFromRB.GetPosPixel().Y() != m_nFromToRBPos) 542cdf0e10cSrcweir { 543cdf0e10cSrcweir Point aPos(m_aFromRB.GetPosPixel()); aPos.Y() = m_nFromToRBPos; m_aFromRB.SetPosPixel(aPos); 544cdf0e10cSrcweir aPos = m_aToFT.GetPosPixel(); aPos.Y() = m_nFromToFTPos; m_aToFT.SetPosPixel(aPos); 545cdf0e10cSrcweir aPos = m_aFromNF.GetPosPixel(); aPos.Y() = m_nFromToNFPos; m_aFromNF.SetPosPixel(aPos); 546cdf0e10cSrcweir aPos = m_aToNF.GetPosPixel(); aPos.Y() = m_nFromToNFPos; m_aToNF.SetPosPixel(aPos); 547cdf0e10cSrcweir } 548cdf0e10cSrcweir } 549cdf0e10cSrcweir else if(&m_aPrintRB == pButton) 550cdf0e10cSrcweir { 551cdf0e10cSrcweir Control* aPrintControls[] = 552cdf0e10cSrcweir { 553cdf0e10cSrcweir &m_aFromRB, &m_aFromNF, &m_aToFT, &m_aToNF, 554cdf0e10cSrcweir &m_aPrinterFT, &m_aPrinterLB, &m_aPrinterSettingsPB, &m_aPrintAllRB, 555cdf0e10cSrcweir &m_aPrintNowPB, 556cdf0e10cSrcweir 0 557cdf0e10cSrcweir }; 558cdf0e10cSrcweir Control** pPrinterControl = aPrintControls; 559cdf0e10cSrcweir do 560cdf0e10cSrcweir { 561cdf0e10cSrcweir (*pPrinterControl)->Show(sal_True); 562cdf0e10cSrcweir 563cdf0e10cSrcweir } while(*(++pPrinterControl)); 564cdf0e10cSrcweir if(!m_aFromRB.IsChecked()) 565cdf0e10cSrcweir m_aPrintAllRB.Check(); 566cdf0e10cSrcweir 567cdf0e10cSrcweir m_aSeparatorFL.SetText(m_sPrintST); 568cdf0e10cSrcweir //reposition the from/to line 569cdf0e10cSrcweir long nRB_FT_Offset = m_nFromToRBPos - m_nFromToFTPos; 570cdf0e10cSrcweir long nNewRBXPos = m_aPrintAllRB.GetPosPixel().Y() + m_nRBOffset; 571cdf0e10cSrcweir 572cdf0e10cSrcweir Point aPos(m_aFromRB.GetPosPixel());aPos.Y() = nNewRBXPos; m_aFromRB.SetPosPixel(aPos); 573cdf0e10cSrcweir aPos = m_aToFT.GetPosPixel(); aPos.Y() = nNewRBXPos + nRB_FT_Offset; m_aToFT.SetPosPixel(aPos); 574cdf0e10cSrcweir aPos = m_aFromNF.GetPosPixel(); aPos.Y() = nNewRBXPos + nRB_FT_Offset; m_aFromNF.SetPosPixel(aPos); 575cdf0e10cSrcweir aPos = m_aToNF.GetPosPixel(); aPos.Y() = nNewRBXPos + nRB_FT_Offset; m_aToNF.SetPosPixel(aPos); 576cdf0e10cSrcweir } 577cdf0e10cSrcweir else /*if(&m_aSendMailRB == pButton)*/ 578cdf0e10cSrcweir { 579cdf0e10cSrcweir Control* aMailControls[] = 580cdf0e10cSrcweir { 581cdf0e10cSrcweir &m_aFromRB, &m_aFromNF, &m_aToFT, &m_aToNF, 582cdf0e10cSrcweir &m_aMailToFT, &m_aMailToLB, &m_aCopyToPB, 583cdf0e10cSrcweir &m_aSubjectFT, &m_aSubjectED, 584cdf0e10cSrcweir &m_aSendAsFT, &m_aSendAsLB, &m_aSendAsPB, 585cdf0e10cSrcweir &m_aAttachmentFT, &m_aAttachmentED, 586cdf0e10cSrcweir &m_aSendAllRB, &m_aSendDocumentsPB, 0 587cdf0e10cSrcweir }; 588cdf0e10cSrcweir Control** pMailControl = aMailControls; 589cdf0e10cSrcweir do 590cdf0e10cSrcweir { 591cdf0e10cSrcweir (*pMailControl)->Show(sal_True); 592cdf0e10cSrcweir 593cdf0e10cSrcweir } while(*(++pMailControl)); 594cdf0e10cSrcweir 595cdf0e10cSrcweir if(!m_aFromRB.IsChecked()) 596cdf0e10cSrcweir m_aSendAllRB.Check(); 597cdf0e10cSrcweir if(!m_aAttachmentED.GetText().Len()) 598cdf0e10cSrcweir { 599cdf0e10cSrcweir String sAttach( m_sDefaultAttachmentST ); 600cdf0e10cSrcweir sAttach += '.'; 601cdf0e10cSrcweir sAttach += lcl_GetExtensionForDocType( 602cdf0e10cSrcweir (sal_uLong)m_aSendAsLB.GetEntryData(m_aSendAsLB.GetSelectEntryPos())); 603cdf0e10cSrcweir m_aAttachmentED.SetText( sAttach ); 604cdf0e10cSrcweir 605cdf0e10cSrcweir } 606cdf0e10cSrcweir m_aSeparatorFL.SetText(m_sSendMailST); 607cdf0e10cSrcweir //fill mail address ListBox 608cdf0e10cSrcweir if(!m_aMailToLB.GetEntryCount()) 609cdf0e10cSrcweir { 610cdf0e10cSrcweir SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem(); 611cdf0e10cSrcweir //select first column 612cdf0e10cSrcweir uno::Reference< sdbcx::XColumnsSupplier > xColsSupp( rConfigItem.GetResultSet(), uno::UNO_QUERY); 613cdf0e10cSrcweir //get the name of the actual columns 614cdf0e10cSrcweir uno::Reference < container::XNameAccess> xColAccess = xColsSupp.is() ? xColsSupp->getColumns() : 0; 615cdf0e10cSrcweir uno::Sequence< ::rtl::OUString > aFields; 616cdf0e10cSrcweir if(xColAccess.is()) 617cdf0e10cSrcweir aFields = xColAccess->getElementNames(); 618cdf0e10cSrcweir const ::rtl::OUString* pFields = aFields.getConstArray(); 619cdf0e10cSrcweir for(sal_Int32 nField = 0; nField < aFields.getLength(); ++nField) 620cdf0e10cSrcweir m_aMailToLB.InsertEntry(pFields[nField]); 621cdf0e10cSrcweir 622cdf0e10cSrcweir m_aMailToLB.SelectEntryPos(0); 623cdf0e10cSrcweir // then select the right one - may not be available 624cdf0e10cSrcweir const ResStringArray& rHeaders = rConfigItem.GetDefaultAddressHeaders(); 625cdf0e10cSrcweir String sEMailColumn = rHeaders.GetString( MM_PART_E_MAIL ); 626cdf0e10cSrcweir Sequence< ::rtl::OUString> aAssignment = 627cdf0e10cSrcweir rConfigItem.GetColumnAssignment( rConfigItem.GetCurrentDBData() ); 628cdf0e10cSrcweir if(aAssignment.getLength() > MM_PART_E_MAIL && aAssignment[MM_PART_E_MAIL].getLength()) 629cdf0e10cSrcweir sEMailColumn = aAssignment[MM_PART_E_MAIL]; 630cdf0e10cSrcweir m_aMailToLB.SelectEntry(sEMailColumn); 631cdf0e10cSrcweir // HTML format pre-selected 632cdf0e10cSrcweir m_aSendAsLB.SelectEntryPos(3); 633cdf0e10cSrcweir SendTypeHdl_Impl(&m_aSendAsLB); 634cdf0e10cSrcweir } 635cdf0e10cSrcweir if(m_aSendAllRB.GetPosPixel().Y() + m_nRBOffset != m_aFromRB.GetPosPixel().Y()) 636cdf0e10cSrcweir { 637cdf0e10cSrcweir long nRB_FT_Offset = m_nFromToRBPos - m_nFromToFTPos; 638cdf0e10cSrcweir long nNewRBXPos = m_aSendAllRB.GetPosPixel().Y() + m_nRBOffset; 639cdf0e10cSrcweir 640cdf0e10cSrcweir Point aPos(m_aFromRB.GetPosPixel());aPos.Y() = nNewRBXPos; m_aFromRB.SetPosPixel(aPos); 641cdf0e10cSrcweir aPos = m_aToFT.GetPosPixel(); aPos.Y() = nNewRBXPos + nRB_FT_Offset; m_aToFT.SetPosPixel(aPos); 642cdf0e10cSrcweir aPos = m_aFromNF.GetPosPixel(); aPos.Y() = nNewRBXPos + nRB_FT_Offset; m_aFromNF.SetPosPixel(aPos); 643cdf0e10cSrcweir aPos = m_aToNF.GetPosPixel(); aPos.Y() = nNewRBXPos + nRB_FT_Offset; m_aToNF.SetPosPixel(aPos); 644cdf0e10cSrcweir } 645cdf0e10cSrcweir } 646cdf0e10cSrcweir m_aFromRB.GetClickHdl().Call(m_aFromRB.IsChecked() ? &m_aFromRB : 0); 647cdf0e10cSrcweir 648cdf0e10cSrcweir SetUpdateMode(sal_False); 649cdf0e10cSrcweir return 0; 650cdf0e10cSrcweir } 651cdf0e10cSrcweir /*-- 22.08.2005 12:15:10--------------------------------------------------- 652cdf0e10cSrcweir 653cdf0e10cSrcweir -----------------------------------------------------------------------*/ 654cdf0e10cSrcweir IMPL_LINK(SwMailMergeOutputPage, DocumentSelectionHdl_Impl, RadioButton*, pButton) 655cdf0e10cSrcweir { 656cdf0e10cSrcweir sal_Bool bEnableFromTo = pButton == &m_aFromRB; 657cdf0e10cSrcweir m_aFromNF.Enable(bEnableFromTo); 658cdf0e10cSrcweir m_aToFT.Enable(bEnableFromTo); 659cdf0e10cSrcweir m_aToNF.Enable(bEnableFromTo); 660cdf0e10cSrcweir return 0; 661cdf0e10cSrcweir } 662cdf0e10cSrcweir 663cdf0e10cSrcweir /*-- 16.04.2004 16:45:10--------------------------------------------------- 664cdf0e10cSrcweir 665cdf0e10cSrcweir -----------------------------------------------------------------------*/ 666cdf0e10cSrcweir IMPL_LINK(SwMailMergeOutputPage, CopyToHdl_Impl, PushButton*, pButton) 667cdf0e10cSrcweir { 668cdf0e10cSrcweir SwCopyToDialog* pDlg = new SwCopyToDialog(pButton); 669cdf0e10cSrcweir pDlg->SetCC(m_sCC ); 670cdf0e10cSrcweir pDlg->SetBCC(m_sBCC); 671cdf0e10cSrcweir if(RET_OK == pDlg->Execute()) 672cdf0e10cSrcweir { 673cdf0e10cSrcweir m_sCC = pDlg->GetCC() ; 674cdf0e10cSrcweir m_sBCC = pDlg->GetBCC(); 675cdf0e10cSrcweir } 676cdf0e10cSrcweir delete pDlg; 677cdf0e10cSrcweir return 0; 678cdf0e10cSrcweir } 679cdf0e10cSrcweir /*-- 17.05.2004 13:51:02--------------------------------------------------- 680cdf0e10cSrcweir 681cdf0e10cSrcweir -----------------------------------------------------------------------*/ 682cdf0e10cSrcweir IMPL_LINK(SwMailMergeOutputPage, SaveStartHdl_Impl, PushButton*, pButton) 683cdf0e10cSrcweir { 684cdf0e10cSrcweir SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem(); 685cdf0e10cSrcweir SwView* pSourceView = rConfigItem.GetSourceView(); 686cdf0e10cSrcweir DBG_ASSERT( pSourceView, "source view missing"); 687cdf0e10cSrcweir if(pSourceView) 688cdf0e10cSrcweir { 689cdf0e10cSrcweir SfxViewFrame* pSourceViewFrm = pSourceView->GetViewFrame(); 690cdf0e10cSrcweir uno::Reference< frame::XFrame > xFrame = 691cdf0e10cSrcweir pSourceViewFrm->GetFrame().GetFrameInterface(); 692cdf0e10cSrcweir xFrame->getContainerWindow()->setVisible(sal_True); 693cdf0e10cSrcweir pSourceViewFrm->GetDispatcher()->Execute(SID_SAVEDOC, SFX_CALLMODE_SYNCHRON); 694cdf0e10cSrcweir xFrame->getContainerWindow()->setVisible(sal_False); 695cdf0e10cSrcweir SwDocShell* pDocShell = pSourceView->GetDocShell(); 696cdf0e10cSrcweir //if the document has been saved it's URL has to be stored for 697cdf0e10cSrcweir // later use and it can be closed now 698cdf0e10cSrcweir if(pDocShell->HasName() && !pDocShell->IsModified()) 699cdf0e10cSrcweir { 700cdf0e10cSrcweir INetURLObject aURL = pDocShell->GetMedium()->GetURLObject(); 701cdf0e10cSrcweir //update the attachment name 702cdf0e10cSrcweir if(!m_aAttachmentED.GetText().Len()) 703cdf0e10cSrcweir { 704cdf0e10cSrcweir if ( pDocShell->HasName() ) 705cdf0e10cSrcweir { 706cdf0e10cSrcweir m_aAttachmentED.SetText(aURL.getName( 707cdf0e10cSrcweir INetURLObject::LAST_SEGMENT, true, INetURLObject::DECODE_WITH_CHARSET )); 708cdf0e10cSrcweir } 709cdf0e10cSrcweir } 710cdf0e10cSrcweir 711cdf0e10cSrcweir rConfigItem.AddSavedDocument( 712cdf0e10cSrcweir aURL.GetMainURL(INetURLObject::DECODE_TO_IURI)); 713cdf0e10cSrcweir pButton->Enable(sal_False); 714cdf0e10cSrcweir m_pWizard->enableButtons(WZB_FINISH, sal_True); 715cdf0e10cSrcweir pButton->Enable(sal_False); 716cdf0e10cSrcweir 717cdf0e10cSrcweir } 718cdf0e10cSrcweir } 719cdf0e10cSrcweir return 0; 720cdf0e10cSrcweir } 721cdf0e10cSrcweir /*-- 17.07.2008 08:09:06--------------------------------------------------- 722cdf0e10cSrcweir 723cdf0e10cSrcweir -----------------------------------------------------------------------*/ 724cdf0e10cSrcweir IMPL_LINK(SwMailMergeOutputPage, SaveCancelHdl_Impl, Button*, EMPTYARG ) 725cdf0e10cSrcweir { 726cdf0e10cSrcweir m_bCancelSaving = true; 727cdf0e10cSrcweir return 0; 728cdf0e10cSrcweir } 729cdf0e10cSrcweir /*-- 17.05.2004 13:51:02--------------------------------------------------- 730cdf0e10cSrcweir 731cdf0e10cSrcweir -----------------------------------------------------------------------*/ 732cdf0e10cSrcweir IMPL_LINK(SwMailMergeOutputPage, SaveOutputHdl_Impl, PushButton*, pButton) 733cdf0e10cSrcweir { 734cdf0e10cSrcweir SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem(); 735cdf0e10cSrcweir SwView* pTargetView = rConfigItem.GetTargetView(); 736cdf0e10cSrcweir DBG_ASSERT(pTargetView, "no target view exists"); 737cdf0e10cSrcweir if(!pTargetView) 738cdf0e10cSrcweir return 0; 739cdf0e10cSrcweir 740cdf0e10cSrcweir if(m_aSaveAsOneRB.IsChecked()) 741cdf0e10cSrcweir { 742cdf0e10cSrcweir String sFilter; 743cdf0e10cSrcweir String sPath = SwMailMergeHelper::CallSaveAsDialog(sFilter); 744cdf0e10cSrcweir if(!sPath.Len()) 745cdf0e10cSrcweir return 0; 746cdf0e10cSrcweir uno::Sequence< beans::PropertyValue > aValues(1); 747cdf0e10cSrcweir beans::PropertyValue* pValues = aValues.getArray(); 748cdf0e10cSrcweir pValues[0].Name = C2U("FilterName"); 749cdf0e10cSrcweir pValues[0].Value <<= ::rtl::OUString(sFilter); 750cdf0e10cSrcweir 751cdf0e10cSrcweir uno::Reference< frame::XStorable > xStore( pTargetView->GetDocShell()->GetModel(), uno::UNO_QUERY); 752cdf0e10cSrcweir sal_uInt32 nErrorCode = ERRCODE_NONE; 753cdf0e10cSrcweir try 754cdf0e10cSrcweir { 755cdf0e10cSrcweir xStore->storeToURL( sPath, aValues ); 756cdf0e10cSrcweir } 757cdf0e10cSrcweir catch( task::ErrorCodeIOException& aErrorEx ) 758cdf0e10cSrcweir { 759cdf0e10cSrcweir nErrorCode = (sal_uInt32)aErrorEx.ErrCode; 760cdf0e10cSrcweir } 761cdf0e10cSrcweir catch( Exception& ) 762cdf0e10cSrcweir { 763cdf0e10cSrcweir nErrorCode = ERRCODE_IO_GENERAL; 764cdf0e10cSrcweir } 765cdf0e10cSrcweir if( nErrorCode != ERRCODE_NONE ) 766cdf0e10cSrcweir { 767cdf0e10cSrcweir SfxErrorContext aEc(ERRCTX_SFX_SAVEASDOC, pTargetView->GetDocShell()->GetTitle()); 768cdf0e10cSrcweir ErrorHandler::HandleError( nErrorCode ); 769cdf0e10cSrcweir } 770cdf0e10cSrcweir } 771cdf0e10cSrcweir else 772cdf0e10cSrcweir { 773cdf0e10cSrcweir sal_uInt32 nBegin = 0; 774cdf0e10cSrcweir sal_uInt32 nEnd = 0; 775cdf0e10cSrcweir if(m_aSaveIndividualRB.IsChecked()) 776cdf0e10cSrcweir { 777cdf0e10cSrcweir nBegin = 0; 778cdf0e10cSrcweir nEnd = rConfigItem.GetMergedDocumentCount(); 779cdf0e10cSrcweir } 780cdf0e10cSrcweir else 781cdf0e10cSrcweir { 782cdf0e10cSrcweir nBegin = static_cast< sal_Int32 >(m_aFromNF.GetValue() - 1); 783cdf0e10cSrcweir nEnd = static_cast< sal_Int32 >(m_aToNF.GetValue()); 784cdf0e10cSrcweir if(nEnd > rConfigItem.GetMergedDocumentCount()) 785cdf0e10cSrcweir nEnd = rConfigItem.GetMergedDocumentCount(); 786cdf0e10cSrcweir } 787cdf0e10cSrcweir String sFilter; 788cdf0e10cSrcweir String sPath = SwMailMergeHelper::CallSaveAsDialog(sFilter); 789cdf0e10cSrcweir if(!sPath.Len()) 790cdf0e10cSrcweir return 0; 791cdf0e10cSrcweir String sTargetTempURL = URIHelper::SmartRel2Abs( 792cdf0e10cSrcweir INetURLObject(), utl::TempFile::CreateTempName(), 793cdf0e10cSrcweir URIHelper::GetMaybeFileHdl()); 794cdf0e10cSrcweir const SfxFilter *pSfxFlt = SwIoSystem::GetFilterOfFormat( 795cdf0e10cSrcweir String::CreateFromAscii( FILTER_XML ), 796cdf0e10cSrcweir SwDocShell::Factory().GetFilterContainer() ); 797cdf0e10cSrcweir 798cdf0e10cSrcweir uno::Sequence< beans::PropertyValue > aValues(1); 799cdf0e10cSrcweir beans::PropertyValue* pValues = aValues.getArray(); 800cdf0e10cSrcweir pValues[0].Name = C2U("FilterName"); 801cdf0e10cSrcweir pValues[0].Value <<= ::rtl::OUString(pSfxFlt->GetFilterName()); 802cdf0e10cSrcweir 803cdf0e10cSrcweir uno::Reference< frame::XStorable > xStore( pTargetView->GetDocShell()->GetModel(), uno::UNO_QUERY); 804cdf0e10cSrcweir sal_uInt32 nErrorCode = ERRCODE_NONE; 805cdf0e10cSrcweir try 806cdf0e10cSrcweir { 807cdf0e10cSrcweir xStore->storeToURL( sTargetTempURL, aValues ); 808cdf0e10cSrcweir } 809cdf0e10cSrcweir catch( task::ErrorCodeIOException& aErrorEx ) 810cdf0e10cSrcweir { 811cdf0e10cSrcweir nErrorCode = (sal_uInt32)aErrorEx.ErrCode; 812cdf0e10cSrcweir } 813cdf0e10cSrcweir catch( Exception& ) 814cdf0e10cSrcweir { 815cdf0e10cSrcweir nErrorCode = ERRCODE_IO_GENERAL; 816cdf0e10cSrcweir } 817cdf0e10cSrcweir if( nErrorCode != ERRCODE_NONE ) 818cdf0e10cSrcweir { 819cdf0e10cSrcweir SfxErrorContext aEc(ERRCTX_SFX_SAVEASDOC, pTargetView->GetDocShell()->GetTitle()); 820cdf0e10cSrcweir ErrorHandler::HandleError( nErrorCode ); 821cdf0e10cSrcweir } 822cdf0e10cSrcweir 823cdf0e10cSrcweir SwView* pSourceView = rConfigItem.GetSourceView(); 824cdf0e10cSrcweir PrintMonitor aSaveMonitor(this, PrintMonitor::MONITOR_TYPE_SAVE); 825cdf0e10cSrcweir aSaveMonitor.aDocName.SetText(pSourceView->GetDocShell()->GetTitle(22)); 826cdf0e10cSrcweir aSaveMonitor.aCancel.SetClickHdl(LINK(this, SwMailMergeOutputPage, SaveCancelHdl_Impl)); 827cdf0e10cSrcweir aSaveMonitor.aPrinter.SetText( INetURLObject( sPath ).getFSysPath( INetURLObject::FSYS_DETECT ) ); 828cdf0e10cSrcweir aSaveMonitor.ResizeControls(); 829cdf0e10cSrcweir 830cdf0e10cSrcweir m_bCancelSaving = false; 831cdf0e10cSrcweir aSaveMonitor.Show(); 832cdf0e10cSrcweir m_pWizard->enableButtons(WZB_CANCEL, sal_False); 833cdf0e10cSrcweir 834cdf0e10cSrcweir for(sal_uInt32 nDoc = nBegin; nDoc < nEnd && !m_bCancelSaving; ++nDoc) 835cdf0e10cSrcweir { 836cdf0e10cSrcweir SwDocMergeInfo& rInfo = rConfigItem.GetDocumentMergeInfo(nDoc); 837cdf0e10cSrcweir INetURLObject aURL(sPath); 838cdf0e10cSrcweir String sFile = aURL.GetBase(); 839cdf0e10cSrcweir String sExtension = aURL.getExtension(); 840cdf0e10cSrcweir if(!sExtension.Len()) 841cdf0e10cSrcweir { 842cdf0e10cSrcweir sExtension = pSfxFlt->GetWildcard()().GetToken(1, '.'); 843cdf0e10cSrcweir sPath += '.'; 844cdf0e10cSrcweir sPath += sExtension; 845cdf0e10cSrcweir } 846cdf0e10cSrcweir String sStat(SW_RES(STR_STATSTR_LETTER)); 847cdf0e10cSrcweir sStat += ' '; 848cdf0e10cSrcweir sStat += String::CreateFromInt32( nDoc ); 849cdf0e10cSrcweir aSaveMonitor.aPrintInfo.SetText(sStat); 850cdf0e10cSrcweir 851cdf0e10cSrcweir //now extract a document from the target document 852cdf0e10cSrcweir // the shell will be closed at the end, but it is more safe to use SfxObjectShellLock here 853cdf0e10cSrcweir SfxObjectShellLock xTempDocShell( new SwDocShell( SFX_CREATE_MODE_STANDARD ) ); 854cdf0e10cSrcweir xTempDocShell->DoInitNew( 0 ); 855cdf0e10cSrcweir SfxViewFrame* pTempFrame = SfxViewFrame::LoadHiddenDocument( *xTempDocShell, 0 ); 856cdf0e10cSrcweir // pTempFrame->GetFrame().Appear(); 857cdf0e10cSrcweir SwView* pTempView = static_cast<SwView*>( pTempFrame->GetViewShell() ); 858cdf0e10cSrcweir pTargetView->GetWrtShell().StartAction(); 859cdf0e10cSrcweir SwgReaderOption aOpt; 860cdf0e10cSrcweir aOpt.SetTxtFmts( sal_True ); 861cdf0e10cSrcweir aOpt.SetFrmFmts( sal_True ); 862cdf0e10cSrcweir aOpt.SetPageDescs( sal_True ); 863cdf0e10cSrcweir aOpt.SetNumRules( sal_True ); 864cdf0e10cSrcweir aOpt.SetMerge( sal_False ); 865cdf0e10cSrcweir pTempView->GetDocShell()->LoadStylesFromFile( 866cdf0e10cSrcweir sTargetTempURL, aOpt, sal_True ); 867cdf0e10cSrcweir 868cdf0e10cSrcweir pTargetView->GetWrtShell().PastePages(pTempView->GetWrtShell(), 869cdf0e10cSrcweir (sal_uInt16)rInfo.nStartPageInTarget, (sal_uInt16)rInfo.nEndPageInTarget ); 870cdf0e10cSrcweir pTargetView->GetWrtShell().EndAction(); 871cdf0e10cSrcweir //then save it 872cdf0e10cSrcweir String sOutPath = aURL.GetMainURL(INetURLObject::DECODE_TO_IURI); 873cdf0e10cSrcweir String sCounter('_'); 874cdf0e10cSrcweir sCounter += String::CreateFromInt32(nDoc); 875cdf0e10cSrcweir sOutPath.Insert(sCounter, sOutPath.Len() - sExtension.Len() - 1); 876cdf0e10cSrcweir //SfxStringItem aName(SID_FILE_NAME, sOutPath); 877cdf0e10cSrcweir //SfxStringItem aFilter(SID_FILTER_NAME, sFilter); 878cdf0e10cSrcweir 879cdf0e10cSrcweir while(true) 880cdf0e10cSrcweir { 881cdf0e10cSrcweir //time for other slots is needed 882cdf0e10cSrcweir for(sal_Int16 r = 0; r < 10; ++r) 883cdf0e10cSrcweir Application::Reschedule(); 884cdf0e10cSrcweir bool bFailed = false; 885cdf0e10cSrcweir try 886cdf0e10cSrcweir { 887cdf0e10cSrcweir pValues[0].Value <<= ::rtl::OUString(sFilter); 888cdf0e10cSrcweir uno::Reference< frame::XStorable > xTempStore( xTempDocShell->GetModel(), uno::UNO_QUERY); 889cdf0e10cSrcweir xTempStore->storeToURL( sOutPath, aValues ); 890cdf0e10cSrcweir } 891cdf0e10cSrcweir catch( const uno::Exception& ) 892cdf0e10cSrcweir { 893cdf0e10cSrcweir bFailed = true; 894cdf0e10cSrcweir } 895cdf0e10cSrcweir 896cdf0e10cSrcweir if(bFailed) 897cdf0e10cSrcweir { 898cdf0e10cSrcweir SwSaveWarningBox_Impl aWarning( pButton, sOutPath ); 899cdf0e10cSrcweir if(RET_OK == aWarning.Execute()) 900cdf0e10cSrcweir sOutPath = aWarning.GetFileName(); 901cdf0e10cSrcweir else 902cdf0e10cSrcweir { 903cdf0e10cSrcweir xTempDocShell->DoClose(); 904cdf0e10cSrcweir return 0; 905cdf0e10cSrcweir } 906cdf0e10cSrcweir } 907cdf0e10cSrcweir else 908cdf0e10cSrcweir { 909cdf0e10cSrcweir xTempDocShell->DoClose(); 910cdf0e10cSrcweir break; 911cdf0e10cSrcweir } 912cdf0e10cSrcweir } 913cdf0e10cSrcweir } 914cdf0e10cSrcweir ::osl::File::remove( sTargetTempURL ); 915cdf0e10cSrcweir } 916cdf0e10cSrcweir m_pWizard->enableButtons(WZB_CANCEL, sal_True); 917cdf0e10cSrcweir m_pWizard->enableButtons(WZB_FINISH, sal_True); 918cdf0e10cSrcweir return 0; 919cdf0e10cSrcweir } 920cdf0e10cSrcweir /*-- 22.06.2004 11:51:30--------------------------------------------------- 921cdf0e10cSrcweir 922cdf0e10cSrcweir -----------------------------------------------------------------------*/ 923cdf0e10cSrcweir IMPL_LINK(SwMailMergeOutputPage, PrinterChangeHdl_Impl, ListBox*, pBox) 924cdf0e10cSrcweir { 925cdf0e10cSrcweir if( m_pDocumentPrinterCopy && pBox->GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND ) 926cdf0e10cSrcweir { 927cdf0e10cSrcweir const QueueInfo* pInfo = Printer::GetQueueInfo( pBox->GetSelectEntry(), false ); 928cdf0e10cSrcweir 929cdf0e10cSrcweir if( pInfo ) 930cdf0e10cSrcweir { 931cdf0e10cSrcweir if ( !m_pTempPrinter ) 932cdf0e10cSrcweir { 933cdf0e10cSrcweir if( (m_pDocumentPrinterCopy->GetName() == pInfo->GetPrinterName()) && 934cdf0e10cSrcweir (m_pDocumentPrinterCopy->GetDriverName() == pInfo->GetDriver()) ) 935cdf0e10cSrcweir m_pTempPrinter = new Printer( m_pDocumentPrinterCopy->GetJobSetup() ); 936cdf0e10cSrcweir else 937cdf0e10cSrcweir m_pTempPrinter = new Printer( *pInfo ); 938cdf0e10cSrcweir } 939cdf0e10cSrcweir else 940cdf0e10cSrcweir { 941cdf0e10cSrcweir if( (m_pTempPrinter->GetName() != pInfo->GetPrinterName()) || 942cdf0e10cSrcweir (m_pTempPrinter->GetDriverName() != pInfo->GetDriver()) ) 943cdf0e10cSrcweir { 944cdf0e10cSrcweir delete m_pTempPrinter; 945cdf0e10cSrcweir m_pTempPrinter = new Printer( *pInfo ); 946cdf0e10cSrcweir } 947cdf0e10cSrcweir } 948cdf0e10cSrcweir } 949cdf0e10cSrcweir else if( ! m_pTempPrinter ) 950cdf0e10cSrcweir m_pTempPrinter = new Printer(); 951cdf0e10cSrcweir 952cdf0e10cSrcweir m_aPrinterSettingsPB.Enable( m_pTempPrinter->HasSupport( SUPPORT_SETUPDIALOG ) ); 953cdf0e10cSrcweir } 954cdf0e10cSrcweir else 955cdf0e10cSrcweir m_aPrinterSettingsPB.Disable(); 956cdf0e10cSrcweir m_pWizard->GetConfigItem().SetSelectedPrinter( pBox->GetSelectEntry() ); 957cdf0e10cSrcweir 958cdf0e10cSrcweir // return m_pTempPrinter; 959cdf0e10cSrcweir return 0; 960cdf0e10cSrcweir } 961cdf0e10cSrcweir 962cdf0e10cSrcweir /*-- 17.05.2004 13:51:02--------------------------------------------------- 963cdf0e10cSrcweir 964cdf0e10cSrcweir -----------------------------------------------------------------------*/ 965cdf0e10cSrcweir IMPL_LINK(SwMailMergeOutputPage, PrintHdl_Impl, PushButton*, EMPTYARG) 966cdf0e10cSrcweir { 967cdf0e10cSrcweir SwView* pTargetView = m_pWizard->GetConfigItem().GetTargetView(); 968cdf0e10cSrcweir DBG_ASSERT(pTargetView, "no target view exists"); 969cdf0e10cSrcweir if(!pTargetView) 970cdf0e10cSrcweir return 0; 971cdf0e10cSrcweir 972cdf0e10cSrcweir sal_uInt32 nBegin = 0; 973cdf0e10cSrcweir sal_uInt32 nEnd = 0; 974cdf0e10cSrcweir SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem(); 975cdf0e10cSrcweir if(m_aPrintAllRB.IsChecked()) 976cdf0e10cSrcweir { 977cdf0e10cSrcweir nBegin = 0; 978cdf0e10cSrcweir nEnd = rConfigItem.GetMergedDocumentCount(); 979cdf0e10cSrcweir } 980cdf0e10cSrcweir else 981cdf0e10cSrcweir { 982cdf0e10cSrcweir nBegin = static_cast< sal_Int32 >(m_aFromNF.GetValue() - 1); 983cdf0e10cSrcweir nEnd = static_cast< sal_Int32 >(m_aToNF.GetValue()); 984cdf0e10cSrcweir if(nEnd > rConfigItem.GetMergedDocumentCount()) 985cdf0e10cSrcweir nEnd = rConfigItem.GetMergedDocumentCount(); 986cdf0e10cSrcweir } 987cdf0e10cSrcweir rConfigItem.SetPrintRange( (sal_uInt16)nBegin, (sal_uInt16)nEnd ); 988cdf0e10cSrcweir SwDocMergeInfo& rStartInfo = rConfigItem.GetDocumentMergeInfo(nBegin); 989cdf0e10cSrcweir SwDocMergeInfo& rEndInfo = rConfigItem.GetDocumentMergeInfo(nEnd - 1); 990cdf0e10cSrcweir 991cdf0e10cSrcweir rtl::OUString sPages(rtl::OUString::valueOf( rStartInfo.nStartPageInTarget )); 992cdf0e10cSrcweir sPages += rtl::OUString::createFromAscii( " - "); 993cdf0e10cSrcweir sPages += rtl::OUString::valueOf( rEndInfo.nEndPageInTarget ); 994cdf0e10cSrcweir 995cdf0e10cSrcweir SwWrtShell& rSh = pTargetView->GetWrtShell(); 996cdf0e10cSrcweir pTargetView->SetMailMergeConfigItem(&rConfigItem, 0, sal_False); 997cdf0e10cSrcweir if(m_pTempPrinter) 998cdf0e10cSrcweir { 999cdf0e10cSrcweir m_pDocumentPrinterCopy->SetPrinterProps(m_pTempPrinter); 1000cdf0e10cSrcweir pTargetView->SetPrinter(m_pDocumentPrinterCopy->Clone()); 1001cdf0e10cSrcweir } 1002cdf0e10cSrcweir 1003cdf0e10cSrcweir SfxObjectShell* pObjSh = pTargetView->GetViewFrame()->GetObjectShell(); 1004cdf0e10cSrcweir SFX_APP()->NotifyEvent(SfxEventHint(SW_EVENT_MAIL_MERGE, SwDocShell::GetEventName(STR_SW_EVENT_MAIL_MERGE), pObjSh)); 1005cdf0e10cSrcweir rSh.GetNewDBMgr()->SetMergeType( DBMGR_MERGE_DOCUMENTS ); 1006cdf0e10cSrcweir //SfxDispatcher *pDis = pTargetView->GetViewFrame()->GetDispatcher(); 1007cdf0e10cSrcweir SfxBoolItem aMergeSilent(SID_SILENT, sal_False); 1008cdf0e10cSrcweir m_pWizard->enableButtons(WZB_CANCEL, sal_False); 1009cdf0e10cSrcweir 1010cdf0e10cSrcweir uno::Sequence < beans::PropertyValue > aProps( 2 ); 1011cdf0e10cSrcweir aProps[0]. Name = rtl::OUString::createFromAscii("MonitorVisible"); 1012cdf0e10cSrcweir aProps[0].Value <<= sal_True; 1013cdf0e10cSrcweir aProps[1]. Name = rtl::OUString::createFromAscii("Pages"); 1014cdf0e10cSrcweir aProps[1]. Value <<= sPages; 1015cdf0e10cSrcweir 1016cdf0e10cSrcweir pTargetView->ExecPrint( aProps, false, true ); 1017cdf0e10cSrcweir SFX_APP()->NotifyEvent(SfxEventHint(SW_EVENT_MAIL_MERGE_END, SwDocShell::GetEventName(STR_SW_EVENT_MAIL_MERGE_END), pObjSh)); 1018cdf0e10cSrcweir 1019cdf0e10cSrcweir pTargetView->SetMailMergeConfigItem(0, 0, sal_False); 1020cdf0e10cSrcweir m_pWizard->enableButtons(WZB_CANCEL, sal_True); 1021cdf0e10cSrcweir m_pWizard->enableButtons(WZB_FINISH, sal_True); 1022cdf0e10cSrcweir return 0; 1023cdf0e10cSrcweir } 1024cdf0e10cSrcweir /*-- 17.05.2004 13:51:02--------------------------------------------------- 1025cdf0e10cSrcweir 1026cdf0e10cSrcweir -----------------------------------------------------------------------*/ 1027cdf0e10cSrcweir IMPL_LINK(SwMailMergeOutputPage, PrinterSetupHdl_Impl, PushButton*, pButton) 1028cdf0e10cSrcweir { 1029cdf0e10cSrcweir if( !m_pTempPrinter ) 1030cdf0e10cSrcweir PrinterChangeHdl_Impl(&m_aPrinterLB); 1031cdf0e10cSrcweir if(m_pTempPrinter) 1032cdf0e10cSrcweir m_pTempPrinter->Setup(pButton); 1033cdf0e10cSrcweir return 0; 1034cdf0e10cSrcweir } 1035cdf0e10cSrcweir /*-- 14.06.2004 09:34:01--------------------------------------------------- 1036cdf0e10cSrcweir 1037cdf0e10cSrcweir -----------------------------------------------------------------------*/ 1038cdf0e10cSrcweir IMPL_LINK(SwMailMergeOutputPage, SendTypeHdl_Impl, ListBox*, pBox) 1039cdf0e10cSrcweir { 1040cdf0e10cSrcweir sal_uLong nDocType = (sal_uLong)pBox->GetEntryData(pBox->GetSelectEntryPos()); 1041cdf0e10cSrcweir sal_Bool bEnable = MM_DOCTYPE_HTML != nDocType && MM_DOCTYPE_TEXT != nDocType; 1042cdf0e10cSrcweir m_aSendAsPB.Enable( bEnable ); 1043cdf0e10cSrcweir m_aAttachmentFT.Enable( bEnable ); 1044cdf0e10cSrcweir m_aAttachmentED.Enable( bEnable ); 1045cdf0e10cSrcweir if(bEnable) 1046cdf0e10cSrcweir { 1047cdf0e10cSrcweir //add the correct extension 1048cdf0e10cSrcweir String sAttach(m_aAttachmentED.GetText()); 1049cdf0e10cSrcweir //do nothing if the user has removed the name - the warning will come early enough 1050cdf0e10cSrcweir if(sAttach.Len()) 1051cdf0e10cSrcweir { 1052cdf0e10cSrcweir xub_StrLen nTokenCount = sAttach.GetTokenCount( '.' ); 1053cdf0e10cSrcweir if( 2 > nTokenCount) 1054cdf0e10cSrcweir { 1055cdf0e10cSrcweir sAttach += '.'; 1056cdf0e10cSrcweir ++nTokenCount; 1057cdf0e10cSrcweir } 1058cdf0e10cSrcweir sAttach.SetToken( nTokenCount - 1, '.', lcl_GetExtensionForDocType( nDocType )); 1059cdf0e10cSrcweir m_aAttachmentED.SetText(sAttach); 1060cdf0e10cSrcweir } 1061cdf0e10cSrcweir } 1062cdf0e10cSrcweir return 0; 1063cdf0e10cSrcweir } 1064cdf0e10cSrcweir /*-- 17.05.2004 13:51:02--------------------------------------------------- 1065cdf0e10cSrcweir 1066cdf0e10cSrcweir -----------------------------------------------------------------------*/ 1067cdf0e10cSrcweir IMPL_LINK(SwMailMergeOutputPage, SendAsHdl_Impl, PushButton*, pButton) 1068cdf0e10cSrcweir { 1069cdf0e10cSrcweir SwMailBodyDialog* pDlg = new SwMailBodyDialog(pButton, m_pWizard); 1070cdf0e10cSrcweir pDlg->SetBody(m_sBody); 1071cdf0e10cSrcweir if(RET_OK == pDlg->Execute()) 1072cdf0e10cSrcweir { 1073cdf0e10cSrcweir m_sBody = pDlg->GetBody(); 1074cdf0e10cSrcweir } 1075cdf0e10cSrcweir return 0; 1076cdf0e10cSrcweir } 1077cdf0e10cSrcweir /*-- 21.05.2004 12:03:25--------------------------------------------------- 1078cdf0e10cSrcweir Send documents as e-mail 1079cdf0e10cSrcweir -----------------------------------------------------------------------*/ 1080cdf0e10cSrcweir IMPL_LINK(SwMailMergeOutputPage, SendDocumentsHdl_Impl, PushButton*, pButton) 1081cdf0e10cSrcweir { 1082cdf0e10cSrcweir SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem(); 1083cdf0e10cSrcweir 1084cdf0e10cSrcweir //get the composed document 1085cdf0e10cSrcweir SwView* pTargetView = rConfigItem.GetTargetView(); 1086cdf0e10cSrcweir DBG_ASSERT(pTargetView, "no target view exists"); 1087cdf0e10cSrcweir if(!pTargetView) 1088cdf0e10cSrcweir return 0; 1089cdf0e10cSrcweir 1090cdf0e10cSrcweir if(!rConfigItem.GetMailServer().getLength() || 1091cdf0e10cSrcweir !SwMailMergeHelper::CheckMailAddress(rConfigItem.GetMailAddress()) ) 1092cdf0e10cSrcweir { 1093cdf0e10cSrcweir QueryBox aQuery(pButton, WB_YES_NO_CANCEL, m_sConfigureMail); 1094cdf0e10cSrcweir sal_uInt16 nRet = aQuery.Execute(); 1095cdf0e10cSrcweir if(RET_YES == nRet ) 1096cdf0e10cSrcweir { 1097cdf0e10cSrcweir SfxAllItemSet aSet(pTargetView->GetPool()); 1098cdf0e10cSrcweir SwMailConfigDlg* pDlg = new SwMailConfigDlg(pButton, aSet); 1099cdf0e10cSrcweir nRet = pDlg->Execute(); 1100cdf0e10cSrcweir delete pDlg; 1101cdf0e10cSrcweir } 1102cdf0e10cSrcweir 1103cdf0e10cSrcweir if(nRet != RET_OK && nRet != RET_YES) 1104cdf0e10cSrcweir return 0; 1105cdf0e10cSrcweir } 1106cdf0e10cSrcweir //add the documents 1107cdf0e10cSrcweir sal_uInt32 nBegin = 0; 1108cdf0e10cSrcweir sal_uInt32 nEnd = 0; 1109cdf0e10cSrcweir if(m_aSendAllRB.IsChecked()) 1110cdf0e10cSrcweir { 1111cdf0e10cSrcweir nBegin = 0; 1112cdf0e10cSrcweir nEnd = rConfigItem.GetMergedDocumentCount(); 1113cdf0e10cSrcweir } 1114cdf0e10cSrcweir else 1115cdf0e10cSrcweir { 1116cdf0e10cSrcweir nBegin = static_cast< sal_Int32 >(m_aFromNF.GetValue() - 1); 1117cdf0e10cSrcweir nEnd = static_cast< sal_Int32 >(m_aToNF.GetValue()); 1118cdf0e10cSrcweir if(nEnd > rConfigItem.GetMergedDocumentCount()) 1119cdf0e10cSrcweir nEnd = rConfigItem.GetMergedDocumentCount(); 1120cdf0e10cSrcweir } 1121cdf0e10cSrcweir bool bAsBody = false; 1122cdf0e10cSrcweir bool bIsPDF = false; 1123cdf0e10cSrcweir rtl_TextEncoding eEncoding = ::gsl_getSystemTextEncoding(); 1124cdf0e10cSrcweir SfxFilterContainer* pFilterContainer = SwDocShell::Factory().GetFilterContainer(); 1125cdf0e10cSrcweir const SfxFilter *pSfxFlt = 0; 1126cdf0e10cSrcweir sal_uLong nDocType = (sal_uLong)m_aSendAsLB.GetEntryData(m_aSendAsLB.GetSelectEntryPos()); 1127cdf0e10cSrcweir String sExtension = lcl_GetExtensionForDocType(nDocType); 1128cdf0e10cSrcweir switch( nDocType ) 1129cdf0e10cSrcweir { 1130cdf0e10cSrcweir case MM_DOCTYPE_OOO : break; 1131cdf0e10cSrcweir case MM_DOCTYPE_PDF : bIsPDF = true; 1132cdf0e10cSrcweir { 1133cdf0e10cSrcweir //the method SwIOSystemGetFilterOfFormat( ) returns the template filter 1134cdf0e10cSrcweir //because it uses the same user data :-( 1135cdf0e10cSrcweir SfxFilterMatcher aMatcher( pFilterContainer->GetName() ); 1136cdf0e10cSrcweir SfxFilterMatcherIter aIter( &aMatcher ); 1137cdf0e10cSrcweir const SfxFilter* pFilter = aIter.First(); 1138cdf0e10cSrcweir String sFilterMime( String::CreateFromAscii( "application/pdf" )); 1139cdf0e10cSrcweir while ( pFilter ) 1140cdf0e10cSrcweir { 1141cdf0e10cSrcweir if( pFilter->GetMimeType() == sFilterMime && pFilter->CanExport() ) 1142cdf0e10cSrcweir { 1143cdf0e10cSrcweir pSfxFlt = pFilter; 1144cdf0e10cSrcweir break; 1145cdf0e10cSrcweir } 1146cdf0e10cSrcweir pFilter = aIter.Next(); 1147cdf0e10cSrcweir } 1148cdf0e10cSrcweir 1149cdf0e10cSrcweir } 1150cdf0e10cSrcweir break; 1151cdf0e10cSrcweir case MM_DOCTYPE_WORD: 1152cdf0e10cSrcweir { 1153cdf0e10cSrcweir //the method SwIOSystemGetFilterOfFormat( ) returns the template filter 1154cdf0e10cSrcweir //because it uses the same user data :-( 1155cdf0e10cSrcweir SfxFilterMatcher aMatcher( pFilterContainer->GetName() ); 1156cdf0e10cSrcweir SfxFilterMatcherIter aIter( &aMatcher ); 1157cdf0e10cSrcweir const SfxFilter* pFilter = aIter.First(); 1158cdf0e10cSrcweir String sFilterUserData( String::CreateFromAscii( FILTER_WW8 )); 1159cdf0e10cSrcweir while ( pFilter ) 1160cdf0e10cSrcweir { 1161cdf0e10cSrcweir if( pFilter->GetUserData() == sFilterUserData && pFilter->CanExport() ) 1162cdf0e10cSrcweir { 1163cdf0e10cSrcweir pSfxFlt = pFilter; 1164cdf0e10cSrcweir break; 1165cdf0e10cSrcweir } 1166cdf0e10cSrcweir pFilter = aIter.Next(); 1167cdf0e10cSrcweir } 1168cdf0e10cSrcweir 1169cdf0e10cSrcweir } 1170cdf0e10cSrcweir break; 1171cdf0e10cSrcweir case MM_DOCTYPE_HTML: 1172cdf0e10cSrcweir { 1173cdf0e10cSrcweir bAsBody = true; 1174cdf0e10cSrcweir SvxHtmlOptions* pHtmlOptions = SvxHtmlOptions::Get(); 1175cdf0e10cSrcweir eEncoding = pHtmlOptions->GetTextEncoding(); 1176cdf0e10cSrcweir } 1177cdf0e10cSrcweir break; 1178cdf0e10cSrcweir case MM_DOCTYPE_TEXT: 1179cdf0e10cSrcweir bAsBody = true; 1180cdf0e10cSrcweir break; 1181cdf0e10cSrcweir } 1182cdf0e10cSrcweir if(!pSfxFlt) 1183cdf0e10cSrcweir pSfxFlt = pFilterContainer->GetFilter4Extension(sExtension, SFX_FILTER_EXPORT); 1184cdf0e10cSrcweir 1185cdf0e10cSrcweir if(!pSfxFlt) 1186cdf0e10cSrcweir return 0; 1187cdf0e10cSrcweir String sMimeType = pSfxFlt->GetMimeType(); 1188cdf0e10cSrcweir 1189cdf0e10cSrcweir if(!m_aSubjectED.GetText().Len()) 1190cdf0e10cSrcweir { 1191cdf0e10cSrcweir SwSendQueryBox_Impl aQuery(pButton, m_sNoSubjectQueryST); 1192cdf0e10cSrcweir aQuery.SetIsEmptyTextAllowed(true); 1193cdf0e10cSrcweir aQuery.SetValue(m_sNoSubjectST); 1194cdf0e10cSrcweir if(RET_OK == aQuery.Execute()) 1195cdf0e10cSrcweir { 1196cdf0e10cSrcweir if(aQuery.GetValue() != m_sNoSubjectST) 1197cdf0e10cSrcweir m_aSubjectED.SetText(aQuery.GetValue()); 1198cdf0e10cSrcweir } 1199cdf0e10cSrcweir else 1200cdf0e10cSrcweir return 0; 1201cdf0e10cSrcweir } 1202cdf0e10cSrcweir if(!bAsBody && !m_aAttachmentED.GetText().Len()) 1203cdf0e10cSrcweir { 1204cdf0e10cSrcweir SwSendQueryBox_Impl aQuery(pButton, m_sNoAttachmentNameST); 1205cdf0e10cSrcweir aQuery.SetIsEmptyTextAllowed(false); 1206cdf0e10cSrcweir if(RET_OK == aQuery.Execute()) 1207cdf0e10cSrcweir { 1208cdf0e10cSrcweir String sAttach(aQuery.GetValue()); 1209cdf0e10cSrcweir xub_StrLen nTokenCount = sAttach.GetTokenCount( '.' ); 1210cdf0e10cSrcweir if( 2 > nTokenCount) 1211cdf0e10cSrcweir { 1212cdf0e10cSrcweir sAttach += '.'; 1213cdf0e10cSrcweir ++nTokenCount; 1214cdf0e10cSrcweir } 1215cdf0e10cSrcweir sAttach.SetToken( nTokenCount - 1, '.', lcl_GetExtensionForDocType( 1216cdf0e10cSrcweir (sal_uLong)m_aSendAsLB.GetEntryData(m_aSendAsLB.GetSelectEntryPos()))); 1217cdf0e10cSrcweir m_aAttachmentED.SetText(sAttach); 1218cdf0e10cSrcweir } 1219cdf0e10cSrcweir else 1220cdf0e10cSrcweir return 0; 1221cdf0e10cSrcweir } 1222cdf0e10cSrcweir SfxStringItem aFilterName( SID_FILTER_NAME, pSfxFlt->GetFilterName() ); 1223cdf0e10cSrcweir String sEMailColumn = m_aMailToLB.GetSelectEntry(); 1224cdf0e10cSrcweir DBG_ASSERT( sEMailColumn.Len(), "No email column selected"); 1225cdf0e10cSrcweir Reference< sdbcx::XColumnsSupplier > xColsSupp( rConfigItem.GetResultSet(), UNO_QUERY); 1226cdf0e10cSrcweir Reference < container::XNameAccess> xColAccess = xColsSupp.is() ? xColsSupp->getColumns() : 0; 1227cdf0e10cSrcweir if(!sEMailColumn.Len() || !xColAccess.is() || !xColAccess->hasByName(sEMailColumn)) 1228cdf0e10cSrcweir return 0; 1229cdf0e10cSrcweir 1230cdf0e10cSrcweir String sFilterOptions; 1231cdf0e10cSrcweir if(MM_DOCTYPE_TEXT == nDocType) 1232cdf0e10cSrcweir { 1233cdf0e10cSrcweir SwAsciiOptions aOpt; 1234cdf0e10cSrcweir sal_uInt16 nAppScriptType = GetI18NScriptTypeOfLanguage( (sal_uInt16)GetAppLanguage() ); 1235cdf0e10cSrcweir sal_uInt16 nWhich = GetWhichOfScript( RES_CHRATR_LANGUAGE, nAppScriptType); 1236cdf0e10cSrcweir aOpt.SetLanguage( ((SvxLanguageItem&)pTargetView->GetWrtShell(). 1237cdf0e10cSrcweir GetDefault( nWhich )).GetLanguage()); 1238cdf0e10cSrcweir aOpt.SetParaFlags( LINEEND_CR ); 1239cdf0e10cSrcweir aOpt.WriteUserData( sFilterOptions ); 1240cdf0e10cSrcweir } 1241cdf0e10cSrcweir String sTargetTempURL = URIHelper::SmartRel2Abs( 1242cdf0e10cSrcweir INetURLObject(), utl::TempFile::CreateTempName(), 1243cdf0e10cSrcweir URIHelper::GetMaybeFileHdl()); 1244cdf0e10cSrcweir const SfxFilter *pTargetSfxFlt = SwIoSystem::GetFilterOfFormat( 1245cdf0e10cSrcweir String::CreateFromAscii( FILTER_XML ), 1246cdf0e10cSrcweir SwDocShell::Factory().GetFilterContainer() ); 1247cdf0e10cSrcweir 1248cdf0e10cSrcweir uno::Sequence< beans::PropertyValue > aValues(1); 1249cdf0e10cSrcweir beans::PropertyValue* pValues = aValues.getArray(); 1250cdf0e10cSrcweir pValues[0].Name = C2U("FilterName"); 1251cdf0e10cSrcweir pValues[0].Value <<= ::rtl::OUString(pTargetSfxFlt->GetFilterName()); 1252cdf0e10cSrcweir 1253cdf0e10cSrcweir uno::Reference< frame::XStorable > xStore( pTargetView->GetDocShell()->GetModel(), uno::UNO_QUERY); 1254cdf0e10cSrcweir xStore->storeToURL( sTargetTempURL, aValues ); 1255cdf0e10cSrcweir 1256cdf0e10cSrcweir //create the send dialog 1257cdf0e10cSrcweir SwSendMailDialog* pDlg = new SwSendMailDialog( pButton, rConfigItem ); 1258cdf0e10cSrcweir pDlg->SetDocumentCount( nEnd ); 1259cdf0e10cSrcweir pDlg->ShowDialog(); 1260cdf0e10cSrcweir //help to force painting the dialog 1261cdf0e10cSrcweir //TODO/CLEANUP 1262cdf0e10cSrcweir //Sollbruchstelle 1263cdf0e10cSrcweir for ( sal_Int16 i = 0; i < 25; i++) 1264cdf0e10cSrcweir Application::Reschedule(); 1265cdf0e10cSrcweir for(sal_uInt32 nDoc = nBegin; nDoc < nEnd; ++nDoc) 1266cdf0e10cSrcweir { 1267cdf0e10cSrcweir m_pWizard->EnterWait(); 1268cdf0e10cSrcweir SwDocMergeInfo& rInfo = rConfigItem.GetDocumentMergeInfo(nDoc); 1269cdf0e10cSrcweir 1270cdf0e10cSrcweir //now extract a document from the target document 1271cdf0e10cSrcweir // the shell will be closed at the end, but it is more safe to use SfxObjectShellLock here 1272cdf0e10cSrcweir SfxObjectShellLock xTempDocShell( new SwDocShell( SFX_CREATE_MODE_STANDARD ) ); 1273cdf0e10cSrcweir xTempDocShell->DoInitNew( 0 ); 1274cdf0e10cSrcweir SfxViewFrame* pTempFrame = SfxViewFrame::LoadHiddenDocument( *xTempDocShell, 0 ); 1275cdf0e10cSrcweir // pTempFrame->GetFrame().Appear(); 1276cdf0e10cSrcweir SwView* pTempView = static_cast<SwView*>( pTempFrame->GetViewShell() ); 1277cdf0e10cSrcweir pTargetView->GetWrtShell().StartAction(); 1278cdf0e10cSrcweir SwgReaderOption aOpt; 1279cdf0e10cSrcweir aOpt.SetTxtFmts( sal_True ); 1280cdf0e10cSrcweir aOpt.SetFrmFmts( sal_True ); 1281cdf0e10cSrcweir aOpt.SetPageDescs( sal_True ); 1282cdf0e10cSrcweir aOpt.SetNumRules( sal_True ); 1283cdf0e10cSrcweir aOpt.SetMerge( sal_False ); 1284cdf0e10cSrcweir pTempView->GetDocShell()->LoadStylesFromFile( 1285cdf0e10cSrcweir sTargetTempURL, aOpt, sal_True ); 1286cdf0e10cSrcweir pTargetView->GetWrtShell().PastePages(pTempView->GetWrtShell(), 1287cdf0e10cSrcweir (sal_uInt16)rInfo.nStartPageInTarget, (sal_uInt16)rInfo.nEndPageInTarget ); 1288cdf0e10cSrcweir pTargetView->GetWrtShell().EndAction(); 1289cdf0e10cSrcweir 1290cdf0e10cSrcweir //then save it 1291cdf0e10cSrcweir SfxStringItem aName(SID_FILE_NAME, 1292cdf0e10cSrcweir URIHelper::SmartRel2Abs( 1293cdf0e10cSrcweir INetURLObject(), utl::TempFile::CreateTempName(0), 1294cdf0e10cSrcweir URIHelper::GetMaybeFileHdl()) ); 1295cdf0e10cSrcweir 1296cdf0e10cSrcweir /* if(bIsPDF) 1297cdf0e10cSrcweir { 1298cdf0e10cSrcweir SfxDispatcher* pSfxDispatcher = pTempView->GetViewFrame()->GetDispatcher(); 1299cdf0e10cSrcweir pSfxDispatcher->Execute( 1300cdf0e10cSrcweir SID_DIRECTEXPORTDOCASPDF, 1301cdf0e10cSrcweir SFX_CALLMODE_SYNCHRON, &aName, &aFilterName, 0L ); 1302cdf0e10cSrcweir } 1303cdf0e10cSrcweir else*/ 1304cdf0e10cSrcweir { 1305cdf0e10cSrcweir uno::Sequence< beans::PropertyValue > aFilterValues(MM_DOCTYPE_TEXT == nDocType ? 2 : 1); 1306cdf0e10cSrcweir beans::PropertyValue* pFilterValues = aFilterValues.getArray(); 1307cdf0e10cSrcweir pFilterValues[0].Name = C2U("FilterName"); 1308cdf0e10cSrcweir pFilterValues[0].Value <<= ::rtl::OUString(pSfxFlt->GetFilterName()); 1309cdf0e10cSrcweir if(MM_DOCTYPE_TEXT == nDocType) 1310cdf0e10cSrcweir { 1311cdf0e10cSrcweir pFilterValues[1].Name = C2U("FilterOptions"); 1312cdf0e10cSrcweir pFilterValues[1].Value <<= ::rtl::OUString(sFilterOptions); 1313cdf0e10cSrcweir } 1314cdf0e10cSrcweir 1315cdf0e10cSrcweir uno::Reference< frame::XStorable > xTempStore( pTempView->GetDocShell()->GetModel(), uno::UNO_QUERY); 1316cdf0e10cSrcweir xTempStore->storeToURL( aName.GetValue(), aFilterValues ); 1317cdf0e10cSrcweir } 1318cdf0e10cSrcweir xTempDocShell->DoClose(); 1319cdf0e10cSrcweir 1320cdf0e10cSrcweir #ifdef DBG_UTIL 1321cdf0e10cSrcweir sal_Int32 nTarget = 1322cdf0e10cSrcweir #endif 1323cdf0e10cSrcweir rConfigItem.MoveResultSet(rInfo.nDBRow); 1324cdf0e10cSrcweir DBG_ASSERT( nTarget == rInfo.nDBRow, "row of current document could not be selected"); 1325cdf0e10cSrcweir DBG_ASSERT( sEMailColumn.Len(), "No email column selected"); 1326cdf0e10cSrcweir ::rtl::OUString sEMail = lcl_GetColumnValueOf(sEMailColumn, xColAccess); 1327cdf0e10cSrcweir SwMailDescriptor aDesc; 1328cdf0e10cSrcweir aDesc.sEMail = sEMail; 1329cdf0e10cSrcweir rtl::OUString sBody; 1330cdf0e10cSrcweir if(bAsBody) 1331cdf0e10cSrcweir { 1332cdf0e10cSrcweir { 1333cdf0e10cSrcweir //read in the temporary file and use it as mail body 1334cdf0e10cSrcweir SfxMedium aMedium( aName.GetValue(), STREAM_READ, sal_True); 1335cdf0e10cSrcweir SvStream* pInStream = aMedium.GetInStream(); 1336cdf0e10cSrcweir if(pInStream) 1337cdf0e10cSrcweir pInStream->SetStreamCharSet( eEncoding ); 1338cdf0e10cSrcweir else 1339cdf0e10cSrcweir { 1340cdf0e10cSrcweir DBG_ERROR("no output file created?"); 1341cdf0e10cSrcweir continue; 1342cdf0e10cSrcweir } 1343cdf0e10cSrcweir ByteString sLine; 1344cdf0e10cSrcweir sal_Bool bDone = pInStream->ReadLine( sLine ); 1345cdf0e10cSrcweir while ( bDone ) 1346cdf0e10cSrcweir { 1347cdf0e10cSrcweir sBody += rtl::OUString(String(sLine, eEncoding)); 1348cdf0e10cSrcweir sBody += rtl::OUString('\n'); 1349cdf0e10cSrcweir bDone = pInStream->ReadLine( sLine ); 1350cdf0e10cSrcweir } 1351cdf0e10cSrcweir } 1352cdf0e10cSrcweir //remove the temporary file 1353cdf0e10cSrcweir SWUnoHelper::UCB_DeleteFile( aName.GetValue() ); 1354cdf0e10cSrcweir } 1355cdf0e10cSrcweir else 1356cdf0e10cSrcweir { 1357cdf0e10cSrcweir sBody = m_sBody; 1358cdf0e10cSrcweir aDesc.sAttachmentURL = aName.GetValue(); 1359cdf0e10cSrcweir String sAttachment(m_aAttachmentED.GetText()); 1360cdf0e10cSrcweir xub_StrLen nTokenCount = sAttachment.GetTokenCount( '.' ); 1361cdf0e10cSrcweir if( 2 > nTokenCount) 1362cdf0e10cSrcweir { 1363cdf0e10cSrcweir sAttachment += '.'; 1364cdf0e10cSrcweir sAttachment.SetToken( nTokenCount, '.', sExtension); 1365cdf0e10cSrcweir } 1366cdf0e10cSrcweir else if(sAttachment.GetToken( nTokenCount - 1, '.') != sExtension) 1367cdf0e10cSrcweir sAttachment += sExtension; 1368cdf0e10cSrcweir aDesc.sAttachmentName = sAttachment; 1369cdf0e10cSrcweir aDesc.sMimeType = sMimeType; 1370cdf0e10cSrcweir 1371cdf0e10cSrcweir if(rConfigItem.IsGreetingLine(sal_True)) 1372cdf0e10cSrcweir { 1373cdf0e10cSrcweir ::rtl::OUString sNameColumn = rConfigItem.GetAssignedColumn(MM_PART_LASTNAME); 1374cdf0e10cSrcweir ::rtl::OUString sName = lcl_GetColumnValueOf(sNameColumn, xColAccess); 1375cdf0e10cSrcweir String sGreeting; 1376cdf0e10cSrcweir if(sName.getLength() && rConfigItem.IsIndividualGreeting(sal_True)) 1377cdf0e10cSrcweir { 1378cdf0e10cSrcweir ::rtl::OUString sGenderColumn = rConfigItem.GetAssignedColumn(MM_PART_GENDER); 1379cdf0e10cSrcweir const ::rtl::OUString& sFemaleValue = rConfigItem.GetFemaleGenderValue(); 1380cdf0e10cSrcweir ::rtl::OUString sGenderValue = lcl_GetColumnValueOf(sGenderColumn, xColAccess); 1381cdf0e10cSrcweir SwMailMergeConfigItem::Gender eGenderType = sGenderValue == sFemaleValue ? 1382cdf0e10cSrcweir SwMailMergeConfigItem::FEMALE : 1383cdf0e10cSrcweir SwMailMergeConfigItem::MALE; 1384cdf0e10cSrcweir 1385cdf0e10cSrcweir sGreeting = SwAddressPreview::FillData( 1386cdf0e10cSrcweir rConfigItem.GetGreetings(eGenderType) 1387cdf0e10cSrcweir [rConfigItem.GetCurrentGreeting(eGenderType)], 1388cdf0e10cSrcweir rConfigItem); 1389cdf0e10cSrcweir } 1390cdf0e10cSrcweir else 1391cdf0e10cSrcweir { 1392cdf0e10cSrcweir sGreeting = 1393cdf0e10cSrcweir rConfigItem.GetGreetings(SwMailMergeConfigItem::NEUTRAL) 1394cdf0e10cSrcweir [rConfigItem.GetCurrentGreeting(SwMailMergeConfigItem::NEUTRAL)]; 1395cdf0e10cSrcweir 1396cdf0e10cSrcweir } 1397cdf0e10cSrcweir sGreeting += '\n'; 1398cdf0e10cSrcweir ::rtl::OUString sTemp( sGreeting ); 1399cdf0e10cSrcweir sTemp += sBody; 1400cdf0e10cSrcweir sBody = sTemp; 1401cdf0e10cSrcweir } 1402cdf0e10cSrcweir } 1403cdf0e10cSrcweir aDesc.sBodyContent = sBody; 1404cdf0e10cSrcweir if(MM_DOCTYPE_HTML == nDocType) 1405cdf0e10cSrcweir { 1406cdf0e10cSrcweir aDesc.sBodyMimeType = ::rtl::OUString::createFromAscii("text/html; charset="); 1407cdf0e10cSrcweir aDesc.sBodyMimeType += ::rtl::OUString::createFromAscii( 1408cdf0e10cSrcweir rtl_getBestMimeCharsetFromTextEncoding( eEncoding )); 1409cdf0e10cSrcweir } 1410cdf0e10cSrcweir else 1411cdf0e10cSrcweir aDesc.sBodyMimeType = 1412cdf0e10cSrcweir ::rtl::OUString::createFromAscii("text/plain; charset=UTF-8; format=flowed"); 1413cdf0e10cSrcweir 1414cdf0e10cSrcweir aDesc.sSubject = m_aSubjectED.GetText(); 1415cdf0e10cSrcweir aDesc.sCC = m_sCC; 1416cdf0e10cSrcweir aDesc.sBCC = m_sBCC; 1417cdf0e10cSrcweir pDlg->AddDocument( aDesc ); 1418cdf0e10cSrcweir //help to force painting the dialog 1419cdf0e10cSrcweir for ( sal_Int16 i = 0; i < 25; i++) 1420cdf0e10cSrcweir Application::Reschedule(); 1421cdf0e10cSrcweir //stop creating of data when dialog has been closed 1422cdf0e10cSrcweir if(!pDlg->IsVisible()) 1423cdf0e10cSrcweir { 1424cdf0e10cSrcweir m_pWizard->LeaveWait(); 1425cdf0e10cSrcweir break; 1426cdf0e10cSrcweir } 1427cdf0e10cSrcweir m_pWizard->LeaveWait(); 1428cdf0e10cSrcweir } 1429cdf0e10cSrcweir pDlg->EnableDesctruction(); 1430cdf0e10cSrcweir ::osl::File::remove( sTargetTempURL ); 1431cdf0e10cSrcweir 1432cdf0e10cSrcweir m_pWizard->enableButtons(WZB_FINISH, sal_True); 1433cdf0e10cSrcweir //the dialog deletes itself 1434cdf0e10cSrcweir //delete pDlg; 1435cdf0e10cSrcweir return 0; 1436cdf0e10cSrcweir } 1437