update credits
[LibreOffice.git] / sw / source / ui / dbui / mmgreetingspage.cxx
blobc1126eb3908adf8ae9a3e9d20f893422396e8a78
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include <mmgreetingspage.hxx>
21 #include <mailmergewizard.hxx>
22 #include <mmconfigitem.hxx>
23 #include <mmaddressblockpage.hxx>
24 #include <swtypes.hxx>
25 #include <vcl/msgbox.hxx>
26 #include <mmgreetingspage.hrc>
27 #include <dbui.hrc>
28 #include <com/sun/star/sdb/XColumn.hpp>
29 #include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
30 #include <com/sun/star/container/XNameAccess.hpp>
31 #include <helpid.h>
33 using namespace svt;
34 using namespace ::com::sun::star;
35 using namespace ::com::sun::star::uno;
37 static void lcl_FillGreetingsBox(ListBox& rBox,
38 SwMailMergeConfigItem& rConfig,
39 SwMailMergeConfigItem::Gender eType)
41 const Sequence< OUString> rEntries = rConfig.GetGreetings(eType);
42 for(sal_Int32 nEntry = 0; nEntry < rEntries.getLength(); ++nEntry)
43 rBox.InsertEntry(rEntries[nEntry]);
44 rBox.SelectEntryPos((sal_uInt16)rConfig.GetCurrentGreeting(eType));
47 static void lcl_FillGreetingsBox(ComboBox& rBox,
48 SwMailMergeConfigItem& rConfig,
49 SwMailMergeConfigItem::Gender eType)
51 const Sequence< OUString> rEntries = rConfig.GetGreetings(eType);
52 for(sal_Int32 nEntry = 0; nEntry < rEntries.getLength(); ++nEntry)
53 rBox.InsertEntry(rEntries[nEntry]);
54 rBox.SelectEntryPos((sal_uInt16)rConfig.GetCurrentGreeting(eType));
57 static void lcl_StoreGreetingsBox(ListBox& rBox,
58 SwMailMergeConfigItem& rConfig,
59 SwMailMergeConfigItem::Gender eType)
61 Sequence< OUString> aEntries(rBox.GetEntryCount());
62 OUString* pEntries = aEntries.getArray();
63 for(sal_uInt16 nEntry = 0; nEntry < rBox.GetEntryCount(); ++nEntry)
64 pEntries[nEntry] = rBox.GetEntry(nEntry);
65 rConfig.SetGreetings(eType, aEntries);
66 rConfig.SetCurrentGreeting(eType, rBox.GetSelectEntryPos());
69 static void lcl_StoreGreetingsBox(ComboBox& rBox,
70 SwMailMergeConfigItem& rConfig,
71 SwMailMergeConfigItem::Gender eType)
73 Sequence< OUString> aEntries(rBox.GetEntryCount());
74 OUString* pEntries = aEntries.getArray();
75 for(sal_uInt16 nEntry = 0; nEntry < rBox.GetEntryCount(); ++nEntry)
76 pEntries[nEntry] = rBox.GetEntry(nEntry);
77 rConfig.SetGreetings(eType, aEntries);
78 rConfig.SetCurrentGreeting(eType, rBox.GetSelectEntryPos());
81 IMPL_LINK_NOARG(SwGreetingsHandler, IndividualHdl_Impl)
83 sal_Bool bIndividual = m_pPersonalizedCB->IsEnabled() && m_pPersonalizedCB->IsChecked();
84 m_pFemaleFT->Enable(bIndividual);
85 m_pFemaleLB->Enable(bIndividual);
86 m_pFemalePB->Enable(bIndividual);
87 m_pMaleFT->Enable(bIndividual);
88 m_pMaleLB->Enable(bIndividual);
89 m_pMalePB->Enable(bIndividual);
90 m_pFemaleFI->Enable(bIndividual);
91 m_pFemaleColumnFT->Enable(bIndividual);
92 m_pFemaleColumnLB->Enable(bIndividual);
93 m_pFemaleFieldFT->Enable(bIndividual);
94 m_pFemaleFieldCB->Enable(bIndividual);
96 if( m_bIsTabPage )
98 m_pWizard->GetConfigItem().SetIndividualGreeting(bIndividual, sal_False);
99 m_pWizard->UpdateRoadmap();
100 m_pWizard->enableButtons(WZB_NEXT, m_pWizard->isStateEnabled(MM_PREPAREMERGEPAGE));
102 UpdatePreview();
103 return 0;
106 IMPL_LINK(SwGreetingsHandler, GreetingHdl_Impl, PushButton*, pButton)
108 SwCustomizeAddressBlockDialog* pDlg =
109 new SwCustomizeAddressBlockDialog(pButton, m_pWizard->GetConfigItem(),
110 pButton == m_pMalePB ?
111 SwCustomizeAddressBlockDialog::GREETING_MALE :
112 SwCustomizeAddressBlockDialog::GREETING_FEMALE );
113 if(RET_OK == pDlg->Execute())
115 ListBox* pToInsert = pButton == m_pMalePB ? m_pMaleLB : m_pFemaleLB;
116 pToInsert->SelectEntryPos(pToInsert->InsertEntry(pDlg->GetAddress()));
117 if(m_bIsTabPage)
119 m_pWizard->UpdateRoadmap();
120 m_pWizard->enableButtons(WZB_NEXT, m_pWizard->isStateEnabled(MM_PREPAREMERGEPAGE));
122 UpdatePreview();
124 delete pDlg;
125 return 0;
128 void SwGreetingsHandler::UpdatePreview()
130 //the base class does nothing
133 IMPL_LINK(SwMailMergeGreetingsPage, AssignHdl_Impl, PushButton*, pButton)
135 String sPreview = m_aFemaleLB.GetSelectEntry();
136 sPreview += '\n';
137 sPreview += m_aMaleLB.GetSelectEntry();
138 SwAssignFieldsDialog* pDlg =
139 new SwAssignFieldsDialog(pButton, m_pWizard->GetConfigItem(), sPreview, false);
140 if(RET_OK == pDlg->Execute())
142 UpdatePreview();
143 m_pWizard->UpdateRoadmap();
144 m_pWizard->enableButtons(WZB_NEXT, m_pWizard->isStateEnabled(MM_PREPAREMERGEPAGE));
146 delete pDlg;
147 return 0;
150 IMPL_LINK_NOARG(SwMailMergeGreetingsPage, GreetingSelectHdl_Impl)
152 UpdatePreview();
153 return 0;
156 void SwMailMergeGreetingsPage::UpdatePreview()
158 //find out which type of greeting should be selected:
159 bool bFemale = false;
160 bool bNoValue = !m_pFemaleColumnLB->IsEnabled();
161 if( !bNoValue )
163 OUString sFemaleValue = m_aFemaleFieldCB.GetText();
164 OUString sFemaleColumn = m_aFemaleColumnLB.GetSelectEntry();
165 Reference< sdbcx::XColumnsSupplier > xColsSupp( m_pWizard->GetConfigItem().GetResultSet(), UNO_QUERY);
166 Reference < container::XNameAccess> xColAccess = xColsSupp.is() ? xColsSupp->getColumns() : 0;
167 if(!sFemaleValue.isEmpty() && !sFemaleColumn.isEmpty() &&
168 xColAccess.is() &&
169 xColAccess->hasByName(sFemaleColumn))
171 //get the content and exchange it in the address string
172 Any aCol = xColAccess->getByName(sFemaleColumn);
173 Reference< sdb::XColumn > xColumn;
174 aCol >>= xColumn;
175 if(xColumn.is())
179 OUString sFemaleColumnValue = xColumn->getString();
180 bFemale = sFemaleColumnValue == sFemaleValue;
181 //bNoValue = !sFemaleColumnValue.getLength();
182 if( !bNoValue )
184 //no last name value marks the greeting also als neutral
185 SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
186 OUString sLastNameColumn = rConfig.GetAssignedColumn(MM_PART_LASTNAME);
187 if ( xColAccess->hasByName(sLastNameColumn) )
189 aCol = xColAccess->getByName(sLastNameColumn);
190 aCol >>= xColumn;
191 OUString sLastNameColumnValue = xColumn->getString();
192 bNoValue = sLastNameColumnValue.isEmpty();
196 catch (const sdbc::SQLException&)
198 OSL_FAIL("SQLException caught");
204 String sPreview = bFemale ? OUString(m_aFemaleLB.GetSelectEntry()) :
205 bNoValue ? m_aNeutralCB.GetText() : OUString(m_aMaleLB.GetSelectEntry());
207 sPreview = SwAddressPreview::FillData(sPreview, m_pWizard->GetConfigItem());
208 m_aPreviewWIN.SetAddress(sPreview);
211 void SwGreetingsHandler::Contains(sal_Bool bContainsGreeting)
213 m_pPersonalizedCB->Enable(bContainsGreeting);
214 sal_Bool bEnablePersonal = bContainsGreeting && m_pPersonalizedCB->IsChecked();
215 m_pFemaleFT->Enable(bEnablePersonal);
216 m_pFemaleLB->Enable(bEnablePersonal);
217 m_pFemalePB->Enable(bEnablePersonal);
218 m_pMaleFT->Enable(bEnablePersonal);
219 m_pMaleLB->Enable(bEnablePersonal);
220 m_pMalePB->Enable(bEnablePersonal);
221 m_pFemaleFI->Enable(bEnablePersonal);
222 m_pFemaleColumnFT->Enable(bEnablePersonal);
223 m_pFemaleColumnLB->Enable(bEnablePersonal);
224 m_pFemaleFieldFT->Enable(bEnablePersonal);
225 m_pFemaleFieldCB->Enable(bEnablePersonal);
227 m_pNeutralFT->Enable(bContainsGreeting);
228 m_pNeutralCB->Enable(bContainsGreeting);
231 SwMailMergeGreetingsPage::SwMailMergeGreetingsPage( SwMailMergeWizard* _pParent) :
232 svt::OWizardPage(_pParent, SW_RES(DLG_MM_GREETINGS_PAGE)),
233 #ifdef _MSC_VER
234 #pragma warning (disable : 4355)
235 #endif
236 m_aHeaderFI(this, SW_RES( FI_HEADER ) ),
237 m_aGreetingLineCB(this, SW_RES( CB_GREETINGLINE ) ),
238 m_aPersonalizedCB(this, SW_RES( CB_PERSONALIZED ) ),
239 m_aFemaleFT(this, SW_RES( FT_FEMALE ) ),
240 m_aFemaleLB(this, SW_RES( LB_FEMALE ) ),
241 m_aFemalePB(this, SW_RES( PB_FEMALE ) ),
242 m_aMaleFT(this, SW_RES( FT_MALE ) ),
243 m_aMaleLB(this, SW_RES( LB_MALE ) ),
244 m_aMalePB(this, SW_RES( PB_MALE ) ),
245 m_aFemaleFI(this, SW_RES( FI_FEMALE ) ),
246 m_aFemaleColumnFT(this, SW_RES( FT_FEMALECOLUMN ) ),
247 m_aFemaleColumnLB(this, SW_RES( LB_FEMALECOLUMN ) ),
248 m_aFemaleFieldFT(this, SW_RES( FT_FEMALEFIELD ) ),
249 m_aFemaleFieldCB(this, SW_RES( CB_FEMALEFIELD ) ),
250 m_aNeutralFT(this, SW_RES( FT_NEUTRAL ) ),
251 m_aNeutralCB(this, SW_RES( CB_NEUTRAL ) ),
252 m_aPreviewFI( this, SW_RES( FI_PREVIEW ) ),
253 m_aPreviewWIN( this, SW_RES( WIN_PREVIEW ) ),
254 m_aAssignPB( this, SW_RES( PB_ASSIGN ) ),
255 m_aDocumentIndexFI( this, SW_RES( FI_DOCINDEX ) ),
256 m_aPrevSetIB( this, SW_RES( IB_PREVSET ) ),
257 m_aNextSetIB( this, SW_RES( IB_NEXTSET ) ),
258 m_sDocument( SW_RES( STR_DOCUMENT ) )
259 #ifdef _MSC_VER
260 #pragma warning (default : 4355)
261 #endif
263 m_pWizard = _pParent;
264 m_pGreetingLineCB = &m_aGreetingLineCB;
265 m_pPersonalizedCB = &m_aPersonalizedCB;
266 m_pFemaleFT = & m_aFemaleFT;
267 m_pFemaleLB = & m_aFemaleLB;
268 m_pFemalePB = & m_aFemalePB;
269 m_pMaleFT = & m_aMaleFT;
270 m_pMaleLB = & m_aMaleLB;
271 m_pMalePB = & m_aMalePB;
272 m_pFemaleFI = & m_aFemaleFI;
273 m_pFemaleColumnFT = &m_aFemaleColumnFT;
274 m_pFemaleColumnLB = &m_aFemaleColumnLB;
275 m_pFemaleFieldFT = & m_aFemaleFieldFT;
276 m_pFemaleFieldCB = & m_aFemaleFieldCB;
277 m_pNeutralFT = & m_aNeutralFT;
278 m_pNeutralCB = &m_aNeutralCB;
279 m_bIsTabPage = true;
281 m_pPersonalizedCB->SetHelpId( HID_MM_GREETINGS_CB_PERSONALIZED);
282 m_pFemaleLB->SetHelpId( HID_MM_GREETINGS_LB_FEMALE );
283 m_pFemalePB->SetHelpId( HID_MM_GREETINGS_PB_FEMALE );
284 m_pMaleLB->SetHelpId( HID_MM_GREETINGS_LB_MALE );
285 m_pMalePB->SetHelpId( HID_MM_GREETINGS_PB_MALE );
286 m_pFemaleColumnLB->SetHelpId( HID_MM_GREETINGS_LB_FEMALECOLUMN);
287 m_pFemaleFieldCB->SetHelpId( HID_MM_GREETINGS_CB_FEMALEFIELD );
288 m_pNeutralCB->SetHelpId( HID_MM_GREETINGS_CB_NEUTRAL );
290 FreeResource();
291 m_aGreetingLineCB.SetClickHdl(LINK(this, SwMailMergeGreetingsPage, ContainsHdl_Impl));
292 Link aIndividualLink = LINK(this, SwGreetingsHandler, IndividualHdl_Impl);
293 m_aPersonalizedCB.SetClickHdl(aIndividualLink);
294 Link aGreetingLink = LINK(this, SwGreetingsHandler, GreetingHdl_Impl);
295 m_aFemalePB.SetClickHdl(aGreetingLink);
296 m_aMalePB.SetClickHdl(aGreetingLink);
297 m_aAssignPB.SetClickHdl(LINK(this, SwMailMergeGreetingsPage, AssignHdl_Impl));
298 Link aLBoxLink = LINK(this, SwMailMergeGreetingsPage, GreetingSelectHdl_Impl);
299 m_aFemaleLB.SetSelectHdl(aLBoxLink);
300 m_aMaleLB.SetSelectHdl(aLBoxLink);
301 m_aFemaleColumnLB.SetSelectHdl(aLBoxLink);
302 m_aFemaleFieldCB.SetSelectHdl(aLBoxLink);
303 m_aFemaleFieldCB.SetModifyHdl(aLBoxLink);
304 m_aNeutralCB.SetSelectHdl(aLBoxLink);
305 m_aNeutralCB.SetModifyHdl(aLBoxLink);
307 Link aDataLink = LINK(this, SwMailMergeGreetingsPage, InsertDataHdl_Impl);
308 m_aPrevSetIB.SetClickHdl(aDataLink);
309 m_aNextSetIB.SetClickHdl(aDataLink);
312 SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
313 m_aGreetingLineCB.Check(rConfig.IsGreetingLine(sal_False));
314 m_aPersonalizedCB.Check(rConfig.IsIndividualGreeting(sal_False));
315 ContainsHdl_Impl(&m_aGreetingLineCB);
316 aIndividualLink.Call(0);
318 lcl_FillGreetingsBox(m_aFemaleLB, rConfig, SwMailMergeConfigItem::FEMALE);
319 lcl_FillGreetingsBox(m_aMaleLB, rConfig, SwMailMergeConfigItem::MALE);
320 lcl_FillGreetingsBox(m_aNeutralCB, rConfig, SwMailMergeConfigItem::NEUTRAL);
322 String sTemp(m_sDocument);
323 sTemp.SearchAndReplaceAscii("%1", OUString::number(1));
324 m_aDocumentIndexFI.SetText(sTemp);
327 SwMailMergeGreetingsPage::~SwMailMergeGreetingsPage()
331 void SwMailMergeGreetingsPage::ActivatePage()
333 SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
335 //try to find the gender setting
336 m_aFemaleColumnLB.Clear();
337 Reference< sdbcx::XColumnsSupplier > xColsSupp = rConfig.GetColumnsSupplier();
338 if(xColsSupp.is())
340 Reference < container::XNameAccess> xColAccess = xColsSupp->getColumns();
341 Sequence< OUString > aColumns = xColAccess->getElementNames();
342 for(sal_Int32 nName = 0; nName < aColumns.getLength(); ++nName)
343 m_aFemaleColumnLB.InsertEntry(aColumns[nName]);
346 OUString sGenderColumn = rConfig.GetAssignedColumn(MM_PART_GENDER);
347 m_aFemaleColumnLB.SelectEntry(sGenderColumn);
348 m_aFemaleColumnLB.SaveValue();
350 m_aFemaleFieldCB.SetText(rConfig.GetFemaleGenderValue());
351 m_aFemaleFieldCB.SaveValue();
353 UpdatePreview();
354 m_pWizard->enableButtons(WZB_NEXT, m_pWizard->isStateEnabled(MM_PREPAREMERGEPAGE));
357 sal_Bool SwMailMergeGreetingsPage::commitPage( ::svt::WizardTypes::CommitPageReason )
359 SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
361 if(m_aFemaleColumnLB.GetSelectEntryPos() != m_aFemaleColumnLB.GetSavedValue())
363 const SwDBData& rDBData = rConfig.GetCurrentDBData();
364 Sequence< OUString> aAssignment = rConfig.GetColumnAssignment( rDBData );
365 if(aAssignment.getLength() <= MM_PART_GENDER)
366 aAssignment.realloc(MM_PART_GENDER + 1);
367 aAssignment[MM_PART_GENDER] = m_aFemaleColumnLB.GetSelectEntry();
368 rConfig.SetColumnAssignment( rDBData, aAssignment );
370 if(m_aFemaleFieldCB.GetText() != m_aFemaleFieldCB.GetSavedValue())
371 rConfig.SetFemaleGenderValue(m_aFemaleFieldCB.GetText());
373 lcl_StoreGreetingsBox(m_aFemaleLB, rConfig, SwMailMergeConfigItem::FEMALE);
374 lcl_StoreGreetingsBox(m_aMaleLB, rConfig, SwMailMergeConfigItem::MALE);
376 sal_uInt16 nCurrentTextPos = m_aNeutralCB.GetEntryPos( m_aNeutralCB.GetText() );
377 if(LISTBOX_ENTRY_NOTFOUND == nCurrentTextPos)
379 sal_uInt16 nCount = m_aNeutralCB.GetEntryCount();
380 m_aNeutralCB.InsertEntry( m_aNeutralCB.GetText(), nCount );
381 m_aNeutralCB.SelectEntryPos(nCount);
383 lcl_StoreGreetingsBox(m_aNeutralCB, rConfig, SwMailMergeConfigItem::NEUTRAL);
384 rConfig.SetGreetingLine(m_aGreetingLineCB.IsChecked(), sal_False);
385 rConfig.SetIndividualGreeting(m_aPersonalizedCB.IsChecked(), sal_False);
386 return sal_True;
389 IMPL_LINK(SwMailMergeGreetingsPage, ContainsHdl_Impl, CheckBox*, pBox)
391 sal_Bool bContainsGreeting = pBox->IsChecked();
392 SwGreetingsHandler::Contains(bContainsGreeting);
393 m_aPreviewFI. Enable(bContainsGreeting);
394 m_aPreviewWIN.Enable(bContainsGreeting);
395 m_aAssignPB. Enable(bContainsGreeting);
396 m_aDocumentIndexFI. Enable(bContainsGreeting);
397 m_aPrevSetIB.Enable(bContainsGreeting);
398 m_aNextSetIB.Enable(bContainsGreeting);
399 SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
400 rConfig.SetGreetingLine(m_aGreetingLineCB.IsChecked(), sal_False);
401 m_pWizard->UpdateRoadmap();
402 return 0;
405 IMPL_LINK(SwMailMergeGreetingsPage, InsertDataHdl_Impl, ImageButton*, pButton)
407 //if no pButton is given, the first set has to be pre-set
408 SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
409 if(!pButton)
411 rConfig.GetResultSet();
413 else
415 bool bNext = pButton == &m_aNextSetIB;
416 sal_Int32 nPos = rConfig.GetResultSetPosition();
417 rConfig.MoveResultSet( bNext ? ++nPos : --nPos);
419 sal_Int32 nPos = rConfig.GetResultSetPosition();
420 sal_Bool bEnable = sal_True;
421 if(nPos < 1)
423 bEnable = sal_False;
424 nPos = 1;
426 else
427 UpdatePreview();
428 m_aPrevSetIB.Enable(bEnable);
429 m_aNextSetIB.Enable(bEnable);
430 m_aDocumentIndexFI.Enable(bEnable);
431 String sTemp(m_sDocument);
432 sTemp.SearchAndReplaceAscii("%1", OUString::number(nPos));
433 m_aDocumentIndexFI.SetText(sTemp);
434 return 0;
437 SwMailBodyDialog::SwMailBodyDialog(Window* pParent, SwMailMergeWizard* _pWizard) :
438 SfxModalDialog(pParent, SW_RES(DLG_MM_MAILBODY)),
439 #ifdef _MSC_VER
440 #pragma warning (disable : 4355)
441 #endif
442 m_aGreetingLineCB(this, SW_RES( CB_GREETINGLINE ) ),
443 m_aPersonalizedCB(this, SW_RES( CB_PERSONALIZED ) ),
444 m_aFemaleFT(this, SW_RES( FT_FEMALE ) ),
445 m_aFemaleLB(this, SW_RES( LB_FEMALE ) ),
446 m_aFemalePB(this, SW_RES( PB_FEMALE ) ),
447 m_aMaleFT(this, SW_RES( FT_MALE ) ),
448 m_aMaleLB(this, SW_RES( LB_MALE ) ),
449 m_aMalePB(this, SW_RES( PB_MALE ) ),
450 m_aFemaleFI(this, SW_RES( FI_FEMALE ) ),
451 m_aFemaleColumnFT(this, SW_RES( FT_FEMALECOLUMN ) ),
452 m_aFemaleColumnLB(this, SW_RES( LB_FEMALECOLUMN ) ),
453 m_aFemaleFieldFT(this, SW_RES( FT_FEMALEFIELD ) ),
454 m_aFemaleFieldCB(this, SW_RES( CB_FEMALEFIELD ) ),
455 m_aNeutralFT(this, SW_RES( FT_NEUTRAL ) ),
456 m_aNeutralCB(this, SW_RES( CB_NEUTRAL ) ),
457 m_aBodyFT( this, SW_RES( FT_BODY ) ),
458 m_aBodyMLE( this, SW_RES( MLE_BODY ) ),
459 m_aSeparatorFL( this, SW_RES( FL_SEPARATOR ) ),
460 m_aOK( this, SW_RES( PB_OK ) ),
461 m_aCancel( this, SW_RES( PB_CANCEL ) ),
462 m_aHelp( this, SW_RES( PB_HELP ) )
463 #ifdef _MSC_VER
464 #pragma warning (default : 4355)
465 #endif
467 m_pWizard = _pWizard;
468 m_pGreetingLineCB = &m_aGreetingLineCB;
469 m_pPersonalizedCB = &m_aPersonalizedCB;
470 m_pFemaleFT = & m_aFemaleFT;
471 m_pFemaleLB = & m_aFemaleLB;
472 m_pFemalePB = & m_aFemalePB;
473 m_pMaleFT = & m_aMaleFT;
474 m_pMaleLB = & m_aMaleLB;
475 m_pMalePB = & m_aMalePB;
476 m_pFemaleFI = & m_aFemaleFI;
477 m_pFemaleColumnFT = &m_aFemaleColumnFT;
478 m_pFemaleColumnLB = &m_aFemaleColumnLB;
479 m_pFemaleFieldFT = & m_aFemaleFieldFT;
480 m_pFemaleFieldCB = & m_aFemaleFieldCB;
481 m_pNeutralFT = & m_aNeutralFT;
482 m_pNeutralCB = &m_aNeutralCB;
483 m_bIsTabPage = false;
485 m_pPersonalizedCB->SetHelpId( HID_MM_BODY_CB_PERSONALIZED );
486 m_pFemaleLB->SetHelpId( HID_MM_BODY_LB_FEMALE );
487 m_pFemalePB->SetHelpId( HID_MM_BODY_PB_FEMALE );
488 m_pMaleLB->SetHelpId( HID_MM_BODY_LB_MALE );
489 m_pMalePB->SetHelpId( HID_MM_BODY_PB_MALE );
490 m_pFemaleColumnLB->SetHelpId( HID_MM_BODY_LB_FEMALECOLUMN );
491 m_pFemaleFieldCB->SetHelpId( HID_MM_BODY_CB_FEMALEFIELD );
492 m_pNeutralCB->SetHelpId( HID_MM_BODY_CB_NEUTRAL );
494 FreeResource();
495 m_aGreetingLineCB.SetClickHdl(LINK(this, SwMailBodyDialog, ContainsHdl_Impl));
496 Link aIndividualLink = LINK(this, SwGreetingsHandler, IndividualHdl_Impl);
497 m_aPersonalizedCB.SetClickHdl(aIndividualLink);
498 Link aGreetingLink = LINK(this, SwGreetingsHandler, GreetingHdl_Impl);
499 m_aFemalePB.SetClickHdl(aGreetingLink);
500 m_aMalePB.SetClickHdl(aGreetingLink);
501 m_aOK.SetClickHdl(LINK(this, SwMailBodyDialog, OKHdl));
503 SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
504 m_aGreetingLineCB.Check(rConfig.IsGreetingLine(sal_True));
505 m_aPersonalizedCB.Check(rConfig.IsIndividualGreeting(sal_True));
506 ContainsHdl_Impl(&m_aGreetingLineCB);
507 aIndividualLink.Call(0);
509 lcl_FillGreetingsBox(m_aFemaleLB, rConfig, SwMailMergeConfigItem::FEMALE);
510 lcl_FillGreetingsBox(m_aMaleLB, rConfig, SwMailMergeConfigItem::MALE);
511 lcl_FillGreetingsBox(m_aNeutralCB, rConfig, SwMailMergeConfigItem::NEUTRAL);
513 //try to find the gender setting
514 m_aFemaleColumnLB.Clear();
515 Reference< sdbcx::XColumnsSupplier > xColsSupp = rConfig.GetColumnsSupplier();
516 if(xColsSupp.is())
518 Reference < container::XNameAccess> xColAccess = xColsSupp->getColumns();
519 Sequence< OUString > aColumns = xColAccess->getElementNames();
520 for(sal_Int32 nName = 0; nName < aColumns.getLength(); ++nName)
521 m_aFemaleColumnLB.InsertEntry(aColumns[nName]);
524 OUString sGenderColumn = rConfig.GetAssignedColumn(MM_PART_GENDER);
525 m_aFemaleColumnLB.SelectEntry(sGenderColumn);
526 m_aFemaleColumnLB.SaveValue();
528 m_aFemaleFieldCB.SetText(rConfig.GetFemaleGenderValue());
529 m_aFemaleFieldCB.SaveValue();
532 SwMailBodyDialog::~SwMailBodyDialog()
536 IMPL_LINK(SwMailBodyDialog, ContainsHdl_Impl, CheckBox*, pBox)
538 SwGreetingsHandler::Contains(pBox->IsChecked());
539 m_pWizard->GetConfigItem().SetGreetingLine(pBox->IsChecked(), sal_True);
540 return 0;
543 IMPL_LINK_NOARG(SwMailBodyDialog, OKHdl)
545 SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem();
546 rConfigItem.SetGreetingLine(
547 m_aGreetingLineCB.IsChecked(), sal_False);
548 rConfigItem.SetIndividualGreeting(
549 m_aPersonalizedCB.IsChecked(), sal_False);
551 if(m_aFemaleColumnLB.GetSelectEntryPos() != m_aFemaleColumnLB.GetSavedValue())
553 const SwDBData& rDBData = rConfigItem.GetCurrentDBData();
554 Sequence< OUString> aAssignment = rConfigItem.GetColumnAssignment( rDBData );
555 sal_Int32 nPos = m_aFemaleColumnLB.GetSelectEntryPos();
556 if(aAssignment.getLength() < MM_PART_GENDER)
557 aAssignment.realloc(MM_PART_GENDER);
558 if( nPos > 0 )
559 aAssignment[MM_PART_GENDER] = m_aFemaleColumnLB.GetSelectEntry();
560 else
561 aAssignment[MM_PART_GENDER] = OUString();
562 rConfigItem.SetColumnAssignment( rDBData, aAssignment );
564 if(m_aFemaleFieldCB.GetText() != m_aFemaleFieldCB.GetSavedValue())
565 rConfigItem.SetFemaleGenderValue(m_aFemaleFieldCB.GetText());
567 EndDialog(RET_OK);
568 return 0;
571 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */