xref: /AOO41X/main/sw/source/ui/dbui/mmoutputpage.cxx (revision efeef26f81c84063fb0a91bde3856d4a51172d90)
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   -----------------------------------------------------------------------*/
lcl_GetExtensionForDocType(sal_uLong nDocType)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   -----------------------------------------------------------------------*/
lcl_GetColumnValueOf(const::rtl::OUString & rColumn,Reference<container::XNameAccess> & rxColAccess)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 
GetFileName() const153cdf0e10cSrcweir     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 
SetValue(const String & rSet)175cdf0e10cSrcweir     void            SetValue(const String& rSet)
176cdf0e10cSrcweir                         {
177cdf0e10cSrcweir                             aTextED.SetText(rSet);
178cdf0e10cSrcweir                             ModifyHdl( &aTextED );
179cdf0e10cSrcweir                         }
GetValue() const180cdf0e10cSrcweir     String          GetValue() const {return aTextED.GetText();}
181cdf0e10cSrcweir 
SetIsEmptyTextAllowed(bool bSet)182cdf0e10cSrcweir     void            SetIsEmptyTextAllowed(bool bSet)
183cdf0e10cSrcweir                         {
184cdf0e10cSrcweir                             bIsEmptyAllowed = bSet;
185cdf0e10cSrcweir                             ModifyHdl( &aTextED );
186cdf0e10cSrcweir                         }
187cdf0e10cSrcweir };
188cdf0e10cSrcweir 
189cdf0e10cSrcweir /*-- 21.06.2004 14:11:58---------------------------------------------------
190cdf0e10cSrcweir 
191cdf0e10cSrcweir   -----------------------------------------------------------------------*/
SwSaveWarningBox_Impl(Window * pParent,const String & rFileName)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   -----------------------------------------------------------------------*/
~SwSaveWarningBox_Impl()211cdf0e10cSrcweir SwSaveWarningBox_Impl::~SwSaveWarningBox_Impl()
212cdf0e10cSrcweir {
213cdf0e10cSrcweir }
214cdf0e10cSrcweir /*-- 21.06.2004 14:11:58---------------------------------------------------
215cdf0e10cSrcweir 
216cdf0e10cSrcweir   -----------------------------------------------------------------------*/
IMPL_LINK(SwSaveWarningBox_Impl,ModifyHdl,Edit *,pEdit)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   -----------------------------------------------------------------------*/
SwSendQueryBox_Impl(Window * pParent,const String & rText)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   -----------------------------------------------------------------------*/
~SwSendQueryBox_Impl()244cdf0e10cSrcweir SwSendQueryBox_Impl::~SwSendQueryBox_Impl()
245cdf0e10cSrcweir {
246cdf0e10cSrcweir }
247cdf0e10cSrcweir /*-- 02.07.2004 08:58:25---------------------------------------------------
248cdf0e10cSrcweir 
249cdf0e10cSrcweir   -----------------------------------------------------------------------*/
IMPL_LINK(SwSendQueryBox_Impl,ModifyHdl,Edit *,pEdit)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 
GetCC()278cdf0e10cSrcweir     String          GetCC() {return m_aCCED.GetText();}
SetCC(const String & rSet)279cdf0e10cSrcweir     void            SetCC(const String& rSet) {m_aCCED.SetText(rSet);}
280cdf0e10cSrcweir 
GetBCC()281cdf0e10cSrcweir     String          GetBCC() {return m_aBCCED.GetText();}
SetBCC(const String & rSet)282cdf0e10cSrcweir     void            SetBCC(const String& rSet) {m_aBCCED.SetText(rSet);}
283cdf0e10cSrcweir };
284cdf0e10cSrcweir 
285cdf0e10cSrcweir /*-- 16.04.2004 16:43:18---------------------------------------------------
286cdf0e10cSrcweir 
287cdf0e10cSrcweir   -----------------------------------------------------------------------*/
SwCopyToDialog(Window * pParent)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   -----------------------------------------------------------------------*/
~SwCopyToDialog()312cdf0e10cSrcweir SwCopyToDialog::~SwCopyToDialog()
313cdf0e10cSrcweir {
314cdf0e10cSrcweir }
315cdf0e10cSrcweir 
316cdf0e10cSrcweir /*-- 02.04.2004 13:15:54---------------------------------------------------
317cdf0e10cSrcweir 
318cdf0e10cSrcweir   -----------------------------------------------------------------------*/
SwMailMergeOutputPage(SwMailMergeWizard * _pParent)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   -----------------------------------------------------------------------*/
~SwMailMergeOutputPage()431cdf0e10cSrcweir SwMailMergeOutputPage::~SwMailMergeOutputPage()
432cdf0e10cSrcweir {
433cdf0e10cSrcweir     delete m_pTempPrinter;
434cdf0e10cSrcweir     delete m_pDocumentPrinterCopy;
435cdf0e10cSrcweir }
436cdf0e10cSrcweir /*-- 31.01.2005 08:38:14---------------------------------------------------
437cdf0e10cSrcweir 
438cdf0e10cSrcweir   -----------------------------------------------------------------------*/
ActivatePage()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   -----------------------------------------------------------------------*/
canAdvance() const482cdf0e10cSrcweir bool SwMailMergeOutputPage::canAdvance() const
483cdf0e10cSrcweir {
484cdf0e10cSrcweir     return false;
485cdf0e10cSrcweir }
486cdf0e10cSrcweir /*-- 02.04.2004 13:15:44---------------------------------------------------
487cdf0e10cSrcweir 
488cdf0e10cSrcweir   -----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergeOutputPage,OutputTypeHdl_Impl,RadioButton *,pButton)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   -----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergeOutputPage,DocumentSelectionHdl_Impl,RadioButton *,pButton)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   -----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergeOutputPage,CopyToHdl_Impl,PushButton *,pButton)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   -----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergeOutputPage,SaveStartHdl_Impl,PushButton *,pButton)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   -----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergeOutputPage,SaveCancelHdl_Impl,Button *,EMPTYARG)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   -----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergeOutputPage,SaveOutputHdl_Impl,PushButton *,pButton)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   -----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergeOutputPage,PrinterChangeHdl_Impl,ListBox *,pBox)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   -----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergeOutputPage,PrintHdl_Impl,PushButton *,EMPTYARG)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   -----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergeOutputPage,PrinterSetupHdl_Impl,PushButton *,pButton)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   -----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergeOutputPage,SendTypeHdl_Impl,ListBox *,pBox)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   -----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergeOutputPage,SendAsHdl_Impl,PushButton *,pButton)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   -----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergeOutputPage,SendDocumentsHdl_Impl,PushButton *,pButton)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