Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : : #include <mmgreetingspage.hxx>
30 : : #include <mailmergewizard.hxx>
31 : : #include <mmconfigitem.hxx>
32 : : #include <mmaddressblockpage.hxx>
33 : : #include <swtypes.hxx>
34 : : #include <vcl/msgbox.hxx>
35 : : #include <mmgreetingspage.hrc>
36 : : #include <dbui.hrc>
37 : : #include <com/sun/star/sdb/XColumn.hpp>
38 : : #include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
39 : : #include <com/sun/star/container/XNameAccess.hpp>
40 : : #include <helpid.h>
41 : :
42 : : using namespace svt;
43 : : using namespace ::com::sun::star;
44 : : using namespace ::com::sun::star::uno;
45 : :
46 : 0 : void lcl_FillGreetingsBox(ListBox& rBox,
47 : : SwMailMergeConfigItem& rConfig,
48 : : SwMailMergeConfigItem::Gender eType)
49 : : {
50 : 0 : const Sequence< ::rtl::OUString> rEntries = rConfig.GetGreetings(eType);
51 : 0 : for(sal_Int32 nEntry = 0; nEntry < rEntries.getLength(); ++nEntry)
52 : 0 : rBox.InsertEntry(rEntries[nEntry]);
53 : 0 : rBox.SelectEntryPos((sal_uInt16)rConfig.GetCurrentGreeting(eType));
54 : 0 : }
55 : :
56 : 0 : void lcl_FillGreetingsBox(ComboBox& rBox,
57 : : SwMailMergeConfigItem& rConfig,
58 : : SwMailMergeConfigItem::Gender eType)
59 : : {
60 : 0 : const Sequence< ::rtl::OUString> rEntries = rConfig.GetGreetings(eType);
61 : 0 : for(sal_Int32 nEntry = 0; nEntry < rEntries.getLength(); ++nEntry)
62 : 0 : rBox.InsertEntry(rEntries[nEntry]);
63 : 0 : rBox.SelectEntryPos((sal_uInt16)rConfig.GetCurrentGreeting(eType));
64 : 0 : }
65 : :
66 : 0 : void lcl_StoreGreetingsBox(ListBox& rBox,
67 : : SwMailMergeConfigItem& rConfig,
68 : : SwMailMergeConfigItem::Gender eType)
69 : : {
70 : 0 : Sequence< ::rtl::OUString> aEntries(rBox.GetEntryCount());
71 : 0 : ::rtl::OUString* pEntries = aEntries.getArray();
72 : 0 : for(sal_uInt16 nEntry = 0; nEntry < rBox.GetEntryCount(); ++nEntry)
73 : 0 : pEntries[nEntry] = rBox.GetEntry(nEntry);
74 : 0 : rConfig.SetGreetings(eType, aEntries);
75 : 0 : rConfig.SetCurrentGreeting(eType, rBox.GetSelectEntryPos());
76 : 0 : }
77 : :
78 : 0 : void lcl_StoreGreetingsBox(ComboBox& rBox,
79 : : SwMailMergeConfigItem& rConfig,
80 : : SwMailMergeConfigItem::Gender eType)
81 : : {
82 : 0 : Sequence< ::rtl::OUString> aEntries(rBox.GetEntryCount());
83 : 0 : ::rtl::OUString* pEntries = aEntries.getArray();
84 : 0 : for(sal_uInt16 nEntry = 0; nEntry < rBox.GetEntryCount(); ++nEntry)
85 : 0 : pEntries[nEntry] = rBox.GetEntry(nEntry);
86 : 0 : rConfig.SetGreetings(eType, aEntries);
87 : 0 : rConfig.SetCurrentGreeting(eType, rBox.GetSelectEntryPos());
88 : 0 : }
89 : :
90 : 0 : IMPL_LINK_NOARG(SwGreetingsHandler, IndividualHdl_Impl)
91 : : {
92 : 0 : sal_Bool bIndividual = m_pPersonalizedCB->IsEnabled() && m_pPersonalizedCB->IsChecked();
93 : 0 : m_pFemaleFT->Enable(bIndividual);
94 : 0 : m_pFemaleLB->Enable(bIndividual);
95 : 0 : m_pFemalePB->Enable(bIndividual);
96 : 0 : m_pMaleFT->Enable(bIndividual);
97 : 0 : m_pMaleLB->Enable(bIndividual);
98 : 0 : m_pMalePB->Enable(bIndividual);
99 : 0 : m_pFemaleFI->Enable(bIndividual);
100 : 0 : m_pFemaleColumnFT->Enable(bIndividual);
101 : 0 : m_pFemaleColumnLB->Enable(bIndividual);
102 : 0 : m_pFemaleFieldFT->Enable(bIndividual);
103 : 0 : m_pFemaleFieldCB->Enable(bIndividual);
104 : :
105 : 0 : if( m_bIsTabPage )
106 : : {
107 : 0 : m_pWizard->GetConfigItem().SetIndividualGreeting(bIndividual, sal_False);
108 : 0 : m_pWizard->UpdateRoadmap();
109 : 0 : m_pWizard->enableButtons(WZB_NEXT, m_pWizard->isStateEnabled(MM_PREPAREMERGEPAGE));
110 : : }
111 : 0 : UpdatePreview();
112 : 0 : return 0;
113 : : }
114 : :
115 : 0 : IMPL_LINK(SwGreetingsHandler, GreetingHdl_Impl, PushButton*, pButton)
116 : : {
117 : : SwCustomizeAddressBlockDialog* pDlg =
118 : 0 : new SwCustomizeAddressBlockDialog(pButton, m_pWizard->GetConfigItem(),
119 : : pButton == m_pMalePB ?
120 : : SwCustomizeAddressBlockDialog::GREETING_MALE :
121 : 0 : SwCustomizeAddressBlockDialog::GREETING_FEMALE );
122 : 0 : if(RET_OK == pDlg->Execute())
123 : : {
124 : 0 : ListBox* pToInsert = pButton == m_pMalePB ? m_pMaleLB : m_pFemaleLB;
125 : 0 : pToInsert->SelectEntryPos(pToInsert->InsertEntry(pDlg->GetAddress()));
126 : 0 : if(m_bIsTabPage)
127 : : {
128 : 0 : m_pWizard->UpdateRoadmap();
129 : 0 : m_pWizard->enableButtons(WZB_NEXT, m_pWizard->isStateEnabled(MM_PREPAREMERGEPAGE));
130 : : }
131 : 0 : UpdatePreview();
132 : : }
133 : 0 : delete pDlg;
134 : 0 : return 0;
135 : : }
136 : :
137 : 0 : void SwGreetingsHandler::UpdatePreview()
138 : : {
139 : : //the base class does nothing
140 : 0 : }
141 : :
142 : 0 : IMPL_LINK(SwMailMergeGreetingsPage, AssignHdl_Impl, PushButton*, pButton)
143 : : {
144 : 0 : String sPreview = m_aFemaleLB.GetSelectEntry();
145 : 0 : sPreview += '\n';
146 : 0 : sPreview += m_aMaleLB.GetSelectEntry();
147 : : SwAssignFieldsDialog* pDlg =
148 : 0 : new SwAssignFieldsDialog(pButton, m_pWizard->GetConfigItem(), sPreview, false);
149 : 0 : if(RET_OK == pDlg->Execute())
150 : : {
151 : 0 : UpdatePreview();
152 : 0 : m_pWizard->UpdateRoadmap();
153 : 0 : m_pWizard->enableButtons(WZB_NEXT, m_pWizard->isStateEnabled(MM_PREPAREMERGEPAGE));
154 : : }
155 : 0 : delete pDlg;
156 : 0 : return 0;
157 : : }
158 : :
159 : 0 : IMPL_LINK_NOARG(SwMailMergeGreetingsPage, GreetingSelectHdl_Impl)
160 : : {
161 : 0 : UpdatePreview();
162 : 0 : return 0;
163 : : }
164 : :
165 : 0 : void SwMailMergeGreetingsPage::UpdatePreview()
166 : : {
167 : : //find out which type of greeting should be selected:
168 : 0 : bool bFemale = false;
169 : 0 : bool bNoValue = !m_pFemaleColumnLB->IsEnabled();
170 : 0 : if( !bNoValue )
171 : : {
172 : 0 : ::rtl::OUString sFemaleValue = m_aFemaleFieldCB.GetText();
173 : 0 : ::rtl::OUString sFemaleColumn = m_aFemaleColumnLB.GetSelectEntry();
174 : 0 : Reference< sdbcx::XColumnsSupplier > xColsSupp( m_pWizard->GetConfigItem().GetResultSet(), UNO_QUERY);
175 : 0 : Reference < container::XNameAccess> xColAccess = xColsSupp.is() ? xColsSupp->getColumns() : 0;
176 : 0 : if(!sFemaleValue.isEmpty() && !sFemaleColumn.isEmpty() &&
177 : 0 : xColAccess.is() &&
178 : 0 : xColAccess->hasByName(sFemaleColumn))
179 : : {
180 : : //get the content and exchange it in the address string
181 : 0 : Any aCol = xColAccess->getByName(sFemaleColumn);
182 : 0 : Reference< sdb::XColumn > xColumn;
183 : 0 : aCol >>= xColumn;
184 : 0 : if(xColumn.is())
185 : : {
186 : : try
187 : : {
188 : 0 : ::rtl::OUString sFemaleColumnValue = xColumn->getString();
189 : 0 : bFemale = sFemaleColumnValue == sFemaleValue;
190 : : //bNoValue = !sFemaleColumnValue.getLength();
191 : 0 : if( !bNoValue )
192 : : {
193 : : //no last name value marks the greeting also als neutral
194 : 0 : SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
195 : 0 : ::rtl::OUString sLastNameColumn = rConfig.GetAssignedColumn(MM_PART_LASTNAME);
196 : 0 : if ( xColAccess->hasByName(sLastNameColumn) )
197 : : {
198 : 0 : aCol = xColAccess->getByName(sLastNameColumn);
199 : 0 : aCol >>= xColumn;
200 : 0 : ::rtl::OUString sLastNameColumnValue = xColumn->getString();
201 : 0 : bNoValue = sLastNameColumnValue.isEmpty();
202 : 0 : }
203 : 0 : }
204 : : }
205 : 0 : catch (const sdbc::SQLException&)
206 : : {
207 : : OSL_FAIL("SQLException caught");
208 : : }
209 : 0 : }
210 : 0 : }
211 : : }
212 : :
213 : : String sPreview = bFemale ? m_aFemaleLB.GetSelectEntry() :
214 : 0 : bNoValue ? m_aNeutralCB.GetText() : m_aMaleLB.GetSelectEntry();
215 : :
216 : 0 : sPreview = SwAddressPreview::FillData(sPreview, m_pWizard->GetConfigItem());
217 : 0 : m_aPreviewWIN.SetAddress(sPreview);
218 : 0 : }
219 : :
220 : 0 : void SwGreetingsHandler::Contains(sal_Bool bContainsGreeting)
221 : : {
222 : 0 : m_pPersonalizedCB->Enable(bContainsGreeting);
223 : 0 : sal_Bool bEnablePersonal = bContainsGreeting && m_pPersonalizedCB->IsChecked();
224 : 0 : m_pFemaleFT->Enable(bEnablePersonal);
225 : 0 : m_pFemaleLB->Enable(bEnablePersonal);
226 : 0 : m_pFemalePB->Enable(bEnablePersonal);
227 : 0 : m_pMaleFT->Enable(bEnablePersonal);
228 : 0 : m_pMaleLB->Enable(bEnablePersonal);
229 : 0 : m_pMalePB->Enable(bEnablePersonal);
230 : 0 : m_pFemaleFI->Enable(bEnablePersonal);
231 : 0 : m_pFemaleColumnFT->Enable(bEnablePersonal);
232 : 0 : m_pFemaleColumnLB->Enable(bEnablePersonal);
233 : 0 : m_pFemaleFieldFT->Enable(bEnablePersonal);
234 : 0 : m_pFemaleFieldCB->Enable(bEnablePersonal);
235 : :
236 : 0 : m_pNeutralFT->Enable(bContainsGreeting);
237 : 0 : m_pNeutralCB->Enable(bContainsGreeting);
238 : 0 : }
239 : :
240 : 0 : SwMailMergeGreetingsPage::SwMailMergeGreetingsPage( SwMailMergeWizard* _pParent) :
241 : : svt::OWizardPage(_pParent, SW_RES(DLG_MM_GREETINGS_PAGE)),
242 : : #ifdef MSC
243 : : #pragma warning (disable : 4355)
244 : : #endif
245 : : m_aHeaderFI(this, SW_RES( FI_HEADER ) ),
246 : : m_aGreetingLineCB(this, SW_RES( CB_GREETINGLINE ) ),
247 : : m_aPersonalizedCB(this, SW_RES( CB_PERSONALIZED ) ),
248 : : m_aFemaleFT(this, SW_RES( FT_FEMALE ) ),
249 : : m_aFemaleLB(this, SW_RES( LB_FEMALE ) ),
250 : : m_aFemalePB(this, SW_RES( PB_FEMALE ) ),
251 : : m_aMaleFT(this, SW_RES( FT_MALE ) ),
252 : : m_aMaleLB(this, SW_RES( LB_MALE ) ),
253 : : m_aMalePB(this, SW_RES( PB_MALE ) ),
254 : : m_aFemaleFI(this, SW_RES( FI_FEMALE ) ),
255 : : m_aFemaleColumnFT(this, SW_RES( FT_FEMALECOLUMN ) ),
256 : : m_aFemaleColumnLB(this, SW_RES( LB_FEMALECOLUMN ) ),
257 : : m_aFemaleFieldFT(this, SW_RES( FT_FEMALEFIELD ) ),
258 : : m_aFemaleFieldCB(this, SW_RES( CB_FEMALEFIELD ) ),
259 : : m_aNeutralFT(this, SW_RES( FT_NEUTRAL ) ),
260 : : m_aNeutralCB(this, SW_RES( CB_NEUTRAL ) ),
261 : : m_aPreviewFI( this, SW_RES( FI_PREVIEW ) ),
262 : : m_aPreviewWIN( this, SW_RES( WIN_PREVIEW ) ),
263 : : m_aAssignPB( this, SW_RES( PB_ASSIGN ) ),
264 : : m_aDocumentIndexFI( this, SW_RES( FI_DOCINDEX ) ),
265 : : m_aPrevSetIB( this, SW_RES( IB_PREVSET ) ),
266 : : m_aNextSetIB( this, SW_RES( IB_NEXTSET ) ),
267 : 0 : m_sDocument( SW_RES( STR_DOCUMENT ) )
268 : : #ifdef MSC
269 : : #pragma warning (default : 4355)
270 : : #endif
271 : : {
272 : 0 : m_pWizard = _pParent;
273 : 0 : m_pGreetingLineCB = &m_aGreetingLineCB;
274 : 0 : m_pPersonalizedCB = &m_aPersonalizedCB;
275 : 0 : m_pFemaleFT = & m_aFemaleFT;
276 : 0 : m_pFemaleLB = & m_aFemaleLB;
277 : 0 : m_pFemalePB = & m_aFemalePB;
278 : 0 : m_pMaleFT = & m_aMaleFT;
279 : 0 : m_pMaleLB = & m_aMaleLB;
280 : 0 : m_pMalePB = & m_aMalePB;
281 : 0 : m_pFemaleFI = & m_aFemaleFI;
282 : 0 : m_pFemaleColumnFT = &m_aFemaleColumnFT;
283 : 0 : m_pFemaleColumnLB = &m_aFemaleColumnLB;
284 : 0 : m_pFemaleFieldFT = & m_aFemaleFieldFT;
285 : 0 : m_pFemaleFieldCB = & m_aFemaleFieldCB;
286 : 0 : m_pNeutralFT = & m_aNeutralFT;
287 : 0 : m_pNeutralCB = &m_aNeutralCB;
288 : 0 : m_bIsTabPage = true;
289 : :
290 : 0 : m_pPersonalizedCB->SetHelpId( HID_MM_GREETINGS_CB_PERSONALIZED);
291 : 0 : m_pFemaleLB->SetHelpId( HID_MM_GREETINGS_LB_FEMALE );
292 : 0 : m_pFemalePB->SetHelpId( HID_MM_GREETINGS_PB_FEMALE );
293 : 0 : m_pMaleLB->SetHelpId( HID_MM_GREETINGS_LB_MALE );
294 : 0 : m_pMalePB->SetHelpId( HID_MM_GREETINGS_PB_MALE );
295 : 0 : m_pFemaleColumnLB->SetHelpId( HID_MM_GREETINGS_LB_FEMALECOLUMN);
296 : 0 : m_pFemaleFieldCB->SetHelpId( HID_MM_GREETINGS_CB_FEMALEFIELD );
297 : 0 : m_pNeutralCB->SetHelpId( HID_MM_GREETINGS_CB_NEUTRAL );
298 : :
299 : 0 : FreeResource();
300 : 0 : m_aGreetingLineCB.SetClickHdl(LINK(this, SwMailMergeGreetingsPage, ContainsHdl_Impl));
301 : 0 : Link aIndividualLink = LINK(this, SwGreetingsHandler, IndividualHdl_Impl);
302 : 0 : m_aPersonalizedCB.SetClickHdl(aIndividualLink);
303 : 0 : Link aGreetingLink = LINK(this, SwGreetingsHandler, GreetingHdl_Impl);
304 : 0 : m_aFemalePB.SetClickHdl(aGreetingLink);
305 : 0 : m_aMalePB.SetClickHdl(aGreetingLink);
306 : 0 : m_aAssignPB.SetClickHdl(LINK(this, SwMailMergeGreetingsPage, AssignHdl_Impl));
307 : 0 : Link aLBoxLink = LINK(this, SwMailMergeGreetingsPage, GreetingSelectHdl_Impl);
308 : 0 : m_aFemaleLB.SetSelectHdl(aLBoxLink);
309 : 0 : m_aMaleLB.SetSelectHdl(aLBoxLink);
310 : 0 : m_aFemaleColumnLB.SetSelectHdl(aLBoxLink);
311 : 0 : m_aFemaleFieldCB.SetSelectHdl(aLBoxLink);
312 : 0 : m_aFemaleFieldCB.SetModifyHdl(aLBoxLink);
313 : 0 : m_aNeutralCB.SetSelectHdl(aLBoxLink);
314 : 0 : m_aNeutralCB.SetModifyHdl(aLBoxLink);
315 : :
316 : 0 : Link aDataLink = LINK(this, SwMailMergeGreetingsPage, InsertDataHdl_Impl);
317 : 0 : m_aPrevSetIB.SetClickHdl(aDataLink);
318 : 0 : m_aNextSetIB.SetClickHdl(aDataLink);
319 : :
320 : :
321 : 0 : SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
322 : 0 : m_aGreetingLineCB.Check(rConfig.IsGreetingLine(sal_False));
323 : 0 : m_aPersonalizedCB.Check(rConfig.IsIndividualGreeting(sal_False));
324 : 0 : ContainsHdl_Impl(&m_aGreetingLineCB);
325 : 0 : aIndividualLink.Call(0);
326 : :
327 : 0 : lcl_FillGreetingsBox(m_aFemaleLB, rConfig, SwMailMergeConfigItem::FEMALE);
328 : 0 : lcl_FillGreetingsBox(m_aMaleLB, rConfig, SwMailMergeConfigItem::MALE);
329 : 0 : lcl_FillGreetingsBox(m_aNeutralCB, rConfig, SwMailMergeConfigItem::NEUTRAL);
330 : :
331 : 0 : String sTemp(m_sDocument);
332 : 0 : sTemp.SearchAndReplaceAscii("%1", String::CreateFromInt32(1));
333 : 0 : m_aDocumentIndexFI.SetText(sTemp);
334 : 0 : }
335 : :
336 : 0 : SwMailMergeGreetingsPage::~SwMailMergeGreetingsPage()
337 : : {
338 : 0 : }
339 : :
340 : 0 : void SwMailMergeGreetingsPage::ActivatePage()
341 : : {
342 : 0 : SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
343 : :
344 : : //try to find the gender setting
345 : 0 : m_aFemaleColumnLB.Clear();
346 : 0 : Reference< sdbcx::XColumnsSupplier > xColsSupp = rConfig.GetColumnsSupplier();
347 : 0 : if(xColsSupp.is())
348 : : {
349 : 0 : Reference < container::XNameAccess> xColAccess = xColsSupp->getColumns();
350 : 0 : Sequence< ::rtl::OUString > aColumns = xColAccess->getElementNames();
351 : 0 : for(sal_Int32 nName = 0; nName < aColumns.getLength(); ++nName)
352 : 0 : m_aFemaleColumnLB.InsertEntry(aColumns[nName]);
353 : : }
354 : :
355 : 0 : ::rtl::OUString sGenderColumn = rConfig.GetAssignedColumn(MM_PART_GENDER);
356 : 0 : m_aFemaleColumnLB.SelectEntry(sGenderColumn);
357 : 0 : m_aFemaleColumnLB.SaveValue();
358 : :
359 : 0 : m_aFemaleFieldCB.SetText(rConfig.GetFemaleGenderValue());
360 : 0 : m_aFemaleFieldCB.SaveValue();
361 : :
362 : 0 : UpdatePreview();
363 : 0 : m_pWizard->enableButtons(WZB_NEXT, m_pWizard->isStateEnabled(MM_PREPAREMERGEPAGE));
364 : 0 : }
365 : :
366 : 0 : sal_Bool SwMailMergeGreetingsPage::commitPage( ::svt::WizardTypes::CommitPageReason )
367 : : {
368 : 0 : SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
369 : :
370 : 0 : if(m_aFemaleColumnLB.GetSelectEntryPos() != m_aFemaleColumnLB.GetSavedValue())
371 : : {
372 : 0 : const SwDBData& rDBData = rConfig.GetCurrentDBData();
373 : 0 : Sequence< ::rtl::OUString> aAssignment = rConfig.GetColumnAssignment( rDBData );
374 : 0 : if(aAssignment.getLength() <= MM_PART_GENDER)
375 : 0 : aAssignment.realloc(MM_PART_GENDER + 1);
376 : 0 : aAssignment[MM_PART_GENDER] = m_aFemaleColumnLB.GetSelectEntry();
377 : 0 : rConfig.SetColumnAssignment( rDBData, aAssignment );
378 : : }
379 : 0 : if(m_aFemaleFieldCB.GetText() != m_aFemaleFieldCB.GetSavedValue())
380 : 0 : rConfig.SetFemaleGenderValue(m_aFemaleFieldCB.GetText());
381 : :
382 : 0 : lcl_StoreGreetingsBox(m_aFemaleLB, rConfig, SwMailMergeConfigItem::FEMALE);
383 : 0 : lcl_StoreGreetingsBox(m_aMaleLB, rConfig, SwMailMergeConfigItem::MALE);
384 : :
385 : 0 : sal_uInt16 nCurrentTextPos = m_aNeutralCB.GetEntryPos( m_aNeutralCB.GetText() );
386 : 0 : if(LISTBOX_ENTRY_NOTFOUND == nCurrentTextPos)
387 : : {
388 : 0 : sal_uInt16 nCount = m_aNeutralCB.GetEntryCount();
389 : 0 : m_aNeutralCB.InsertEntry( m_aNeutralCB.GetText(), nCount );
390 : 0 : m_aNeutralCB.SelectEntryPos(nCount);
391 : : }
392 : 0 : lcl_StoreGreetingsBox(m_aNeutralCB, rConfig, SwMailMergeConfigItem::NEUTRAL);
393 : 0 : rConfig.SetGreetingLine(m_aGreetingLineCB.IsChecked(), sal_False);
394 : 0 : rConfig.SetIndividualGreeting(m_aPersonalizedCB.IsChecked(), sal_False);
395 : 0 : return sal_True;
396 : : }
397 : :
398 : 0 : IMPL_LINK(SwMailMergeGreetingsPage, ContainsHdl_Impl, CheckBox*, pBox)
399 : : {
400 : 0 : sal_Bool bContainsGreeting = pBox->IsChecked();
401 : 0 : SwGreetingsHandler::Contains(bContainsGreeting);
402 : 0 : m_aPreviewFI. Enable(bContainsGreeting);
403 : 0 : m_aPreviewWIN.Enable(bContainsGreeting);
404 : 0 : m_aAssignPB. Enable(bContainsGreeting);
405 : 0 : m_aDocumentIndexFI. Enable(bContainsGreeting);
406 : 0 : m_aPrevSetIB.Enable(bContainsGreeting);
407 : 0 : m_aNextSetIB.Enable(bContainsGreeting);
408 : 0 : SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
409 : 0 : rConfig.SetGreetingLine(m_aGreetingLineCB.IsChecked(), sal_False);
410 : 0 : m_pWizard->UpdateRoadmap();
411 : 0 : return 0;
412 : : }
413 : :
414 : 0 : IMPL_LINK(SwMailMergeGreetingsPage, InsertDataHdl_Impl, ImageButton*, pButton)
415 : : {
416 : : //if no pButton is given, the first set has to be pre-set
417 : 0 : SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
418 : 0 : if(!pButton)
419 : : {
420 : 0 : rConfig.GetResultSet();
421 : : }
422 : : else
423 : : {
424 : 0 : sal_Bool bNext = pButton == &m_aNextSetIB;
425 : 0 : sal_Int32 nPos = rConfig.GetResultSetPosition();
426 : 0 : rConfig.MoveResultSet( bNext ? ++nPos : --nPos);
427 : : }
428 : 0 : sal_Int32 nPos = rConfig.GetResultSetPosition();
429 : 0 : sal_Bool bEnable = sal_True;
430 : 0 : if(nPos < 1)
431 : : {
432 : 0 : bEnable = sal_False;
433 : 0 : nPos = 1;
434 : : }
435 : : else
436 : 0 : UpdatePreview();
437 : 0 : m_aPrevSetIB.Enable(bEnable);
438 : 0 : m_aNextSetIB.Enable(bEnable);
439 : 0 : m_aDocumentIndexFI.Enable(bEnable);
440 : 0 : String sTemp(m_sDocument);
441 : 0 : sTemp.SearchAndReplaceAscii("%1", String::CreateFromInt32(nPos));
442 : 0 : m_aDocumentIndexFI.SetText(sTemp);
443 : 0 : return 0;
444 : : }
445 : :
446 : 0 : SwMailBodyDialog::SwMailBodyDialog(Window* pParent, SwMailMergeWizard* _pWizard) :
447 : : SfxModalDialog(pParent, SW_RES(DLG_MM_MAILBODY)),
448 : : #ifdef MSC
449 : : #pragma warning (disable : 4355)
450 : : #endif
451 : : m_aGreetingLineCB(this, SW_RES( CB_GREETINGLINE ) ),
452 : : m_aPersonalizedCB(this, SW_RES( CB_PERSONALIZED ) ),
453 : : m_aFemaleFT(this, SW_RES( FT_FEMALE ) ),
454 : : m_aFemaleLB(this, SW_RES( LB_FEMALE ) ),
455 : : m_aFemalePB(this, SW_RES( PB_FEMALE ) ),
456 : : m_aMaleFT(this, SW_RES( FT_MALE ) ),
457 : : m_aMaleLB(this, SW_RES( LB_MALE ) ),
458 : : m_aMalePB(this, SW_RES( PB_MALE ) ),
459 : : m_aFemaleFI(this, SW_RES( FI_FEMALE ) ),
460 : : m_aFemaleColumnFT(this, SW_RES( FT_FEMALECOLUMN ) ),
461 : : m_aFemaleColumnLB(this, SW_RES( LB_FEMALECOLUMN ) ),
462 : : m_aFemaleFieldFT(this, SW_RES( FT_FEMALEFIELD ) ),
463 : : m_aFemaleFieldCB(this, SW_RES( CB_FEMALEFIELD ) ),
464 : : m_aNeutralFT(this, SW_RES( FT_NEUTRAL ) ),
465 : : m_aNeutralCB(this, SW_RES( CB_NEUTRAL ) ),
466 : : m_aBodyFT( this, SW_RES( FT_BODY ) ),
467 : : m_aBodyMLE( this, SW_RES( MLE_BODY ) ),
468 : : m_aSeparatorFL( this, SW_RES( FL_SEPARATOR ) ),
469 : : m_aOK( this, SW_RES( PB_OK ) ),
470 : : m_aCancel( this, SW_RES( PB_CANCEL ) ),
471 : 0 : m_aHelp( this, SW_RES( PB_HELP ) )
472 : : #ifdef MSC
473 : : #pragma warning (default : 4355)
474 : : #endif
475 : : {
476 : 0 : m_pWizard = _pWizard;
477 : 0 : m_pGreetingLineCB = &m_aGreetingLineCB;
478 : 0 : m_pPersonalizedCB = &m_aPersonalizedCB;
479 : 0 : m_pFemaleFT = & m_aFemaleFT;
480 : 0 : m_pFemaleLB = & m_aFemaleLB;
481 : 0 : m_pFemalePB = & m_aFemalePB;
482 : 0 : m_pMaleFT = & m_aMaleFT;
483 : 0 : m_pMaleLB = & m_aMaleLB;
484 : 0 : m_pMalePB = & m_aMalePB;
485 : 0 : m_pFemaleFI = & m_aFemaleFI;
486 : 0 : m_pFemaleColumnFT = &m_aFemaleColumnFT;
487 : 0 : m_pFemaleColumnLB = &m_aFemaleColumnLB;
488 : 0 : m_pFemaleFieldFT = & m_aFemaleFieldFT;
489 : 0 : m_pFemaleFieldCB = & m_aFemaleFieldCB;
490 : 0 : m_pNeutralFT = & m_aNeutralFT;
491 : 0 : m_pNeutralCB = &m_aNeutralCB;
492 : 0 : m_bIsTabPage = false;
493 : :
494 : 0 : m_pPersonalizedCB->SetHelpId( HID_MM_BODY_CB_PERSONALIZED );
495 : 0 : m_pFemaleLB->SetHelpId( HID_MM_BODY_LB_FEMALE );
496 : 0 : m_pFemalePB->SetHelpId( HID_MM_BODY_PB_FEMALE );
497 : 0 : m_pMaleLB->SetHelpId( HID_MM_BODY_LB_MALE );
498 : 0 : m_pMalePB->SetHelpId( HID_MM_BODY_PB_MALE );
499 : 0 : m_pFemaleColumnLB->SetHelpId( HID_MM_BODY_LB_FEMALECOLUMN );
500 : 0 : m_pFemaleFieldCB->SetHelpId( HID_MM_BODY_CB_FEMALEFIELD );
501 : 0 : m_pNeutralCB->SetHelpId( HID_MM_BODY_CB_NEUTRAL );
502 : :
503 : 0 : FreeResource();
504 : 0 : m_aGreetingLineCB.SetClickHdl(LINK(this, SwMailBodyDialog, ContainsHdl_Impl));
505 : 0 : Link aIndividualLink = LINK(this, SwGreetingsHandler, IndividualHdl_Impl);
506 : 0 : m_aPersonalizedCB.SetClickHdl(aIndividualLink);
507 : 0 : Link aGreetingLink = LINK(this, SwGreetingsHandler, GreetingHdl_Impl);
508 : 0 : m_aFemalePB.SetClickHdl(aGreetingLink);
509 : 0 : m_aMalePB.SetClickHdl(aGreetingLink);
510 : 0 : m_aOK.SetClickHdl(LINK(this, SwMailBodyDialog, OKHdl));
511 : :
512 : 0 : SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
513 : 0 : m_aGreetingLineCB.Check(rConfig.IsGreetingLine(sal_True));
514 : 0 : m_aPersonalizedCB.Check(rConfig.IsIndividualGreeting(sal_True));
515 : 0 : ContainsHdl_Impl(&m_aGreetingLineCB);
516 : 0 : aIndividualLink.Call(0);
517 : :
518 : 0 : lcl_FillGreetingsBox(m_aFemaleLB, rConfig, SwMailMergeConfigItem::FEMALE);
519 : 0 : lcl_FillGreetingsBox(m_aMaleLB, rConfig, SwMailMergeConfigItem::MALE);
520 : 0 : lcl_FillGreetingsBox(m_aNeutralCB, rConfig, SwMailMergeConfigItem::NEUTRAL);
521 : :
522 : : //try to find the gender setting
523 : 0 : m_aFemaleColumnLB.Clear();
524 : 0 : Reference< sdbcx::XColumnsSupplier > xColsSupp = rConfig.GetColumnsSupplier();
525 : 0 : if(xColsSupp.is())
526 : : {
527 : 0 : Reference < container::XNameAccess> xColAccess = xColsSupp->getColumns();
528 : 0 : Sequence< ::rtl::OUString > aColumns = xColAccess->getElementNames();
529 : 0 : for(sal_Int32 nName = 0; nName < aColumns.getLength(); ++nName)
530 : 0 : m_aFemaleColumnLB.InsertEntry(aColumns[nName]);
531 : : }
532 : :
533 : 0 : ::rtl::OUString sGenderColumn = rConfig.GetAssignedColumn(MM_PART_GENDER);
534 : 0 : m_aFemaleColumnLB.SelectEntry(sGenderColumn);
535 : 0 : m_aFemaleColumnLB.SaveValue();
536 : :
537 : 0 : m_aFemaleFieldCB.SetText(rConfig.GetFemaleGenderValue());
538 : 0 : m_aFemaleFieldCB.SaveValue();
539 : 0 : }
540 : :
541 : 0 : SwMailBodyDialog::~SwMailBodyDialog()
542 : : {
543 : 0 : }
544 : :
545 : 0 : IMPL_LINK(SwMailBodyDialog, ContainsHdl_Impl, CheckBox*, pBox)
546 : : {
547 : 0 : SwGreetingsHandler::Contains(pBox->IsChecked());
548 : 0 : m_pWizard->GetConfigItem().SetGreetingLine(pBox->IsChecked(), sal_True);
549 : 0 : return 0;
550 : : }
551 : :
552 : 0 : IMPL_LINK_NOARG(SwMailBodyDialog, OKHdl)
553 : : {
554 : 0 : SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem();
555 : : rConfigItem.SetGreetingLine(
556 : 0 : m_aGreetingLineCB.IsChecked(), sal_False);
557 : : rConfigItem.SetIndividualGreeting(
558 : 0 : m_aPersonalizedCB.IsChecked(), sal_False);
559 : :
560 : 0 : if(m_aFemaleColumnLB.GetSelectEntryPos() != m_aFemaleColumnLB.GetSavedValue())
561 : : {
562 : 0 : const SwDBData& rDBData = rConfigItem.GetCurrentDBData();
563 : 0 : Sequence< ::rtl::OUString> aAssignment = rConfigItem.GetColumnAssignment( rDBData );
564 : 0 : sal_Int32 nPos = m_aFemaleColumnLB.GetSelectEntryPos();
565 : 0 : if(aAssignment.getLength() < MM_PART_GENDER)
566 : 0 : aAssignment.realloc(MM_PART_GENDER);
567 : 0 : if( nPos > 0 )
568 : 0 : aAssignment[MM_PART_GENDER] = m_aFemaleColumnLB.GetSelectEntry();
569 : : else
570 : 0 : aAssignment[MM_PART_GENDER] = ::rtl::OUString();
571 : 0 : rConfigItem.SetColumnAssignment( rDBData, aAssignment );
572 : : }
573 : 0 : if(m_aFemaleFieldCB.GetText() != m_aFemaleFieldCB.GetSavedValue())
574 : 0 : rConfigItem.SetFemaleGenderValue(m_aFemaleFieldCB.GetText());
575 : :
576 : 0 : EndDialog(RET_OK);
577 : 0 : return 0;
578 : : }
579 : :
580 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|