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