1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
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>
28 #include <com/sun/star/sdb/XColumn.hpp>
29 #include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
30 #include <com/sun/star/container/XNameAccess.hpp>
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
);
98 m_pWizard
->GetConfigItem().SetIndividualGreeting(bIndividual
, sal_False
);
99 m_pWizard
->UpdateRoadmap();
100 m_pWizard
->enableButtons(WZB_NEXT
, m_pWizard
->isStateEnabled(MM_PREPAREMERGEPAGE
));
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()));
119 m_pWizard
->UpdateRoadmap();
120 m_pWizard
->enableButtons(WZB_NEXT
, m_pWizard
->isStateEnabled(MM_PREPAREMERGEPAGE
));
128 void SwGreetingsHandler::UpdatePreview()
130 //the base class does nothing
133 IMPL_LINK(SwMailMergeGreetingsPage
, AssignHdl_Impl
, PushButton
*, pButton
)
135 String sPreview
= m_aFemaleLB
.GetSelectEntry();
137 sPreview
+= m_aMaleLB
.GetSelectEntry();
138 SwAssignFieldsDialog
* pDlg
=
139 new SwAssignFieldsDialog(pButton
, m_pWizard
->GetConfigItem(), sPreview
, false);
140 if(RET_OK
== pDlg
->Execute())
143 m_pWizard
->UpdateRoadmap();
144 m_pWizard
->enableButtons(WZB_NEXT
, m_pWizard
->isStateEnabled(MM_PREPAREMERGEPAGE
));
150 IMPL_LINK_NOARG(SwMailMergeGreetingsPage
, GreetingSelectHdl_Impl
)
156 void SwMailMergeGreetingsPage::UpdatePreview()
158 //find out which type of greeting should be selected:
159 bool bFemale
= false;
160 bool bNoValue
= !m_pFemaleColumnLB
->IsEnabled();
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() &&
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
;
179 OUString sFemaleColumnValue
= xColumn
->getString();
180 bFemale
= sFemaleColumnValue
== sFemaleValue
;
181 //bNoValue = !sFemaleColumnValue.getLength();
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
);
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
)),
234 #pragma warning (disable : 4355)
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
) )
260 #pragma warning (default : 4355)
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
;
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
);
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();
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();
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
);
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();
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();
411 rConfig
.GetResultSet();
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
;
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
);
437 SwMailBodyDialog::SwMailBodyDialog(Window
* pParent
, SwMailMergeWizard
* _pWizard
) :
438 SfxModalDialog(pParent
, SW_RES(DLG_MM_MAILBODY
)),
440 #pragma warning (disable : 4355)
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
) )
464 #pragma warning (default : 4355)
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
);
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();
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
);
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
);
559 aAssignment
[MM_PART_GENDER
] = m_aFemaleColumnLB
.GetSelectEntry();
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());
571 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */