blob: 33775dd0148e9a631f47e26451c68c6520549165 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
#ifdef SW_DLLIMPLEMENTATION
#undef SW_DLLIMPLEMENTATION
#endif
#include <mmgreetingspage.hxx>
#include <mailmergewizard.hxx>
#include <mmconfigitem.hxx>
#include <mmaddressblockpage.hxx>
#include <swtypes.hxx>
#include <vcl/msgbox.hxx>
#include <mmgreetingspage.hrc>
#include <dbui.hrc>
#include <com/sun/star/sdb/XColumn.hpp>
#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
#include <helpid.h>
using namespace svt;
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
// -----------------------------------------------------------------------
void lcl_FillGreetingsBox(ListBox& rBox,
SwMailMergeConfigItem& rConfig,
SwMailMergeConfigItem::Gender eType)
{
const Sequence< ::rtl::OUString> rEntries = rConfig.GetGreetings(eType);
for(sal_Int32 nEntry = 0; nEntry < rEntries.getLength(); ++nEntry)
rBox.InsertEntry(rEntries[nEntry]);
rBox.SelectEntryPos((sal_uInt16)rConfig.GetCurrentGreeting(eType));
}
// -----------------------------------------------------------------------
void lcl_FillGreetingsBox(ComboBox& rBox,
SwMailMergeConfigItem& rConfig,
SwMailMergeConfigItem::Gender eType)
{
const Sequence< ::rtl::OUString> rEntries = rConfig.GetGreetings(eType);
for(sal_Int32 nEntry = 0; nEntry < rEntries.getLength(); ++nEntry)
rBox.InsertEntry(rEntries[nEntry]);
rBox.SelectEntryPos((sal_uInt16)rConfig.GetCurrentGreeting(eType));
}
// -----------------------------------------------------------------------
void lcl_StoreGreetingsBox(ListBox& rBox,
SwMailMergeConfigItem& rConfig,
SwMailMergeConfigItem::Gender eType)
{
Sequence< ::rtl::OUString> aEntries(rBox.GetEntryCount());
::rtl::OUString* pEntries = aEntries.getArray();
for(sal_uInt16 nEntry = 0; nEntry < rBox.GetEntryCount(); ++nEntry)
pEntries[nEntry] = rBox.GetEntry(nEntry);
rConfig.SetGreetings(eType, aEntries);
rConfig.SetCurrentGreeting(eType, rBox.GetSelectEntryPos());
}
// -----------------------------------------------------------------------
void lcl_StoreGreetingsBox(ComboBox& rBox,
SwMailMergeConfigItem& rConfig,
SwMailMergeConfigItem::Gender eType)
{
Sequence< ::rtl::OUString> aEntries(rBox.GetEntryCount());
::rtl::OUString* pEntries = aEntries.getArray();
for(sal_uInt16 nEntry = 0; nEntry < rBox.GetEntryCount(); ++nEntry)
pEntries[nEntry] = rBox.GetEntry(nEntry);
rConfig.SetGreetings(eType, aEntries);
rConfig.SetCurrentGreeting(eType, rBox.GetSelectEntryPos());
}
/*-- 30.04.2004 10:42:57---------------------------------------------------
-----------------------------------------------------------------------*/
IMPL_LINK(SwGreetingsHandler, IndividualHdl_Impl, CheckBox*, EMPTYARG)
{
sal_Bool bIndividual = m_pPersonalizedCB->IsEnabled() && m_pPersonalizedCB->IsChecked();
m_pFemaleFT->Enable(bIndividual);
m_pFemaleLB->Enable(bIndividual);
m_pFemalePB->Enable(bIndividual);
m_pMaleFT->Enable(bIndividual);
m_pMaleLB->Enable(bIndividual);
m_pMalePB->Enable(bIndividual);
m_pFemaleFI->Enable(bIndividual);
m_pFemaleColumnFT->Enable(bIndividual);
m_pFemaleColumnLB->Enable(bIndividual);
m_pFemaleFieldFT->Enable(bIndividual);
m_pFemaleFieldCB->Enable(bIndividual);
if( m_bIsTabPage )
{
m_pWizard->GetConfigItem().SetIndividualGreeting(bIndividual, sal_False);
m_pWizard->UpdateRoadmap();
m_pWizard->enableButtons(WZB_NEXT, m_pWizard->isStateEnabled(MM_PREPAREMERGEPAGE));
}
UpdatePreview();
return 0;
}
/*-- 30.04.2004 10:42:57---------------------------------------------------
-----------------------------------------------------------------------*/
IMPL_LINK(SwGreetingsHandler, GreetingHdl_Impl, PushButton*, pButton)
{
SwCustomizeAddressBlockDialog* pDlg =
new SwCustomizeAddressBlockDialog(pButton, m_pWizard->GetConfigItem(),
pButton == m_pMalePB ?
SwCustomizeAddressBlockDialog::GREETING_MALE :
SwCustomizeAddressBlockDialog::GREETING_FEMALE );
if(RET_OK == pDlg->Execute())
{
ListBox* pToInsert = pButton == m_pMalePB ? m_pMaleLB : m_pFemaleLB;
pToInsert->SelectEntryPos(pToInsert->InsertEntry(pDlg->GetAddress()));
if(m_bIsTabPage)
{
m_pWizard->UpdateRoadmap();
m_pWizard->enableButtons(WZB_NEXT, m_pWizard->isStateEnabled(MM_PREPAREMERGEPAGE));
}
UpdatePreview();
}
delete pDlg;
return 0;
}
/*-- 16.06.2004 10:56:21---------------------------------------------------
-----------------------------------------------------------------------*/
void SwGreetingsHandler::UpdatePreview()
{
//the base class does nothing
}
/*-- 30.04.2004 10:42:59---------------------------------------------------
-----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergeGreetingsPage, AssignHdl_Impl, PushButton*, pButton)
{
String sPreview = m_aFemaleLB.GetSelectEntry();
sPreview += '\n';
sPreview += m_aMaleLB.GetSelectEntry();
SwAssignFieldsDialog* pDlg =
new SwAssignFieldsDialog(pButton, m_pWizard->GetConfigItem(), sPreview, false);
if(RET_OK == pDlg->Execute())
{
UpdatePreview();
m_pWizard->UpdateRoadmap();
m_pWizard->enableButtons(WZB_NEXT, m_pWizard->isStateEnabled(MM_PREPAREMERGEPAGE));
}
delete pDlg;
return 0;
}
/*-- 05.05.2004 15:25:56---------------------------------------------------
-----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergeGreetingsPage, GreetingSelectHdl_Impl, ListBox*, EMPTYARG)
{
UpdatePreview();
return 0;
}
/*-- 05.05.2004 15:23:43---------------------------------------------------
-----------------------------------------------------------------------*/
void SwMailMergeGreetingsPage::UpdatePreview()
{
//find out which type of greeting should be selected:
bool bFemale = false;
bool bNoValue = !m_pFemaleColumnLB->IsEnabled();
if( !bNoValue )
{
::rtl::OUString sFemaleValue = m_aFemaleFieldCB.GetText();
::rtl::OUString sFemaleColumn = m_aFemaleColumnLB.GetSelectEntry();
Reference< sdbcx::XColumnsSupplier > xColsSupp( m_pWizard->GetConfigItem().GetResultSet(), UNO_QUERY);
Reference < container::XNameAccess> xColAccess = xColsSupp.is() ? xColsSupp->getColumns() : 0;
if(sFemaleValue.getLength() && sFemaleColumn.getLength() &&
xColAccess.is() &&
xColAccess->hasByName(sFemaleColumn))
{
//get the content and exchange it in the address string
Any aCol = xColAccess->getByName(sFemaleColumn);
Reference< sdb::XColumn > xColumn;
aCol >>= xColumn;
if(xColumn.is())
{
try
{
::rtl::OUString sFemaleColumnValue = xColumn->getString();
bFemale = sFemaleColumnValue == sFemaleValue;
//bNoValue = !sFemaleColumnValue.getLength();
if( !bNoValue )
{
//no last name value marks the greeting also als neutral
SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
::rtl::OUString sLastNameColumn = rConfig.GetAssignedColumn(MM_PART_LASTNAME);
if ( xColAccess->hasByName(sLastNameColumn) )
{
aCol = xColAccess->getByName(sLastNameColumn);
aCol >>= xColumn;
::rtl::OUString sLastNameColumnValue = xColumn->getString();
bNoValue = !sLastNameColumnValue.getLength();
}
}
}
catch( sdbc::SQLException& )
{
DBG_ERROR("SQLException caught");
}
}
}
}
String sPreview = bFemale ? m_aFemaleLB.GetSelectEntry() :
bNoValue ? m_aNeutralCB.GetText() : m_aMaleLB.GetSelectEntry();
sPreview = SwAddressPreview::FillData(sPreview, m_pWizard->GetConfigItem());
m_aPreviewWIN.SetAddress(sPreview);
}
/*-- 17.05.2004 15:44:53---------------------------------------------------
-----------------------------------------------------------------------*/
void SwGreetingsHandler::Contains(sal_Bool bContainsGreeting)
{
m_pPersonalizedCB->Enable(bContainsGreeting);
sal_Bool bEnablePersonal = bContainsGreeting && m_pPersonalizedCB->IsChecked();
m_pFemaleFT->Enable(bEnablePersonal);
m_pFemaleLB->Enable(bEnablePersonal);
m_pFemalePB->Enable(bEnablePersonal);
m_pMaleFT->Enable(bEnablePersonal);
m_pMaleLB->Enable(bEnablePersonal);
m_pMalePB->Enable(bEnablePersonal);
m_pFemaleFI->Enable(bEnablePersonal);
m_pFemaleColumnFT->Enable(bEnablePersonal);
m_pFemaleColumnLB->Enable(bEnablePersonal);
m_pFemaleFieldFT->Enable(bEnablePersonal);
m_pFemaleFieldCB->Enable(bEnablePersonal);
m_pNeutralFT->Enable(bContainsGreeting);
m_pNeutralCB->Enable(bContainsGreeting);
}
/*-- 02.04.2004 14:17:52---------------------------------------------------
-----------------------------------------------------------------------*/
SwMailMergeGreetingsPage::SwMailMergeGreetingsPage( SwMailMergeWizard* _pParent) :
svt::OWizardPage(_pParent, SW_RES(DLG_MM_GREETINGS_PAGE)),
#ifdef MSC
#pragma warning (disable : 4355)
#endif
m_aHeaderFI(this, SW_RES( FI_HEADER ) ),
m_aGreetingLineCB(this, SW_RES( CB_GREETINGLINE ) ),
m_aPersonalizedCB(this, SW_RES( CB_PERSONALIZED ) ),
m_aFemaleFT(this, SW_RES( FT_FEMALE ) ),
m_aFemaleLB(this, SW_RES( LB_FEMALE ) ),
m_aFemalePB(this, SW_RES( PB_FEMALE ) ),
m_aMaleFT(this, SW_RES( FT_MALE ) ),
m_aMaleLB(this, SW_RES( LB_MALE ) ),
m_aMalePB(this, SW_RES( PB_MALE ) ),
m_aFemaleFI(this, SW_RES( FI_FEMALE ) ),
m_aFemaleColumnFT(this, SW_RES( FT_FEMALECOLUMN ) ),
m_aFemaleColumnLB(this, SW_RES( LB_FEMALECOLUMN ) ),
m_aFemaleFieldFT(this, SW_RES( FT_FEMALEFIELD ) ),
m_aFemaleFieldCB(this, SW_RES( CB_FEMALEFIELD ) ),
m_aNeutralFT(this, SW_RES( FT_NEUTRAL ) ),
m_aNeutralCB(this, SW_RES( CB_NEUTRAL ) ),
m_aPreviewFI( this, SW_RES( FI_PREVIEW ) ),
m_aPreviewWIN( this, SW_RES( WIN_PREVIEW ) ),
m_aAssignPB( this, SW_RES( PB_ASSIGN ) ),
m_aDocumentIndexFI( this, SW_RES( FI_DOCINDEX ) ),
m_aPrevSetIB( this, SW_RES( IB_PREVSET ) ),
m_aNextSetIB( this, SW_RES( IB_NEXTSET ) ),
m_sDocument( SW_RES( STR_DOCUMENT ) )
#ifdef MSC
#pragma warning (default : 4355)
#endif
{
m_pWizard = _pParent;
m_pGreetingLineCB = &m_aGreetingLineCB;
m_pPersonalizedCB = &m_aPersonalizedCB;
m_pFemaleFT = & m_aFemaleFT;
m_pFemaleLB = & m_aFemaleLB;
m_pFemalePB = & m_aFemalePB;
m_pMaleFT = & m_aMaleFT;
m_pMaleLB = & m_aMaleLB;
m_pMalePB = & m_aMalePB;
m_pFemaleFI = & m_aFemaleFI;
m_pFemaleColumnFT = &m_aFemaleColumnFT;
m_pFemaleColumnLB = &m_aFemaleColumnLB;
m_pFemaleFieldFT = & m_aFemaleFieldFT;
m_pFemaleFieldCB = & m_aFemaleFieldCB;
m_pNeutralFT = & m_aNeutralFT;
m_pNeutralCB = &m_aNeutralCB;
m_bIsTabPage = true;
m_pPersonalizedCB->SetHelpId( HID_MM_GREETINGS_CB_PERSONALIZED);
m_pFemaleLB->SetHelpId( HID_MM_GREETINGS_LB_FEMALE );
m_pFemalePB->SetHelpId( HID_MM_GREETINGS_PB_FEMALE );
m_pMaleLB->SetHelpId( HID_MM_GREETINGS_LB_MALE );
m_pMalePB->SetHelpId( HID_MM_GREETINGS_PB_MALE );
m_pFemaleColumnLB->SetHelpId( HID_MM_GREETINGS_LB_FEMALECOLUMN);
m_pFemaleFieldCB->SetHelpId( HID_MM_GREETINGS_CB_FEMALEFIELD );
m_pNeutralCB->SetHelpId( HID_MM_GREETINGS_CB_NEUTRAL );
FreeResource();
m_aGreetingLineCB.SetClickHdl(LINK(this, SwMailMergeGreetingsPage, ContainsHdl_Impl));
Link aIndividualLink = LINK(this, SwGreetingsHandler, IndividualHdl_Impl);
m_aPersonalizedCB.SetClickHdl(aIndividualLink);
Link aGreetingLink = LINK(this, SwGreetingsHandler, GreetingHdl_Impl);
m_aFemalePB.SetClickHdl(aGreetingLink);
m_aMalePB.SetClickHdl(aGreetingLink);
m_aAssignPB.SetClickHdl(LINK(this, SwMailMergeGreetingsPage, AssignHdl_Impl));
Link aLBoxLink = LINK(this, SwMailMergeGreetingsPage, GreetingSelectHdl_Impl);
m_aFemaleLB.SetSelectHdl(aLBoxLink);
m_aMaleLB.SetSelectHdl(aLBoxLink);
m_aFemaleColumnLB.SetSelectHdl(aLBoxLink);
m_aFemaleFieldCB.SetSelectHdl(aLBoxLink);
m_aFemaleFieldCB.SetModifyHdl(aLBoxLink);
m_aNeutralCB.SetSelectHdl(aLBoxLink);
m_aNeutralCB.SetModifyHdl(aLBoxLink);
Link aDataLink = LINK(this, SwMailMergeGreetingsPage, InsertDataHdl_Impl);
m_aPrevSetIB.SetClickHdl(aDataLink);
m_aNextSetIB.SetClickHdl(aDataLink);
SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
m_aGreetingLineCB.Check(rConfig.IsGreetingLine(sal_False));
m_aPersonalizedCB.Check(rConfig.IsIndividualGreeting(sal_False));
ContainsHdl_Impl(&m_aGreetingLineCB);
aIndividualLink.Call(0);
lcl_FillGreetingsBox(m_aFemaleLB, rConfig, SwMailMergeConfigItem::FEMALE);
lcl_FillGreetingsBox(m_aMaleLB, rConfig, SwMailMergeConfigItem::MALE);
lcl_FillGreetingsBox(m_aNeutralCB, rConfig, SwMailMergeConfigItem::NEUTRAL);
String sTemp(m_sDocument);
sTemp.SearchAndReplaceAscii("%1", String::CreateFromInt32(1));
m_aDocumentIndexFI.SetText(sTemp);
}
/*-- 02.04.2004 14:17:52---------------------------------------------------
-----------------------------------------------------------------------*/
SwMailMergeGreetingsPage::~SwMailMergeGreetingsPage()
{
}
/*-- 18.06.2004 12:13:53---------------------------------------------------
-----------------------------------------------------------------------*/
void SwMailMergeGreetingsPage::ActivatePage()
{
SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
//try to find the gender setting
m_aFemaleColumnLB.Clear();
Reference< sdbcx::XColumnsSupplier > xColsSupp = rConfig.GetColumnsSupplier();
if(xColsSupp.is())
{
Reference < container::XNameAccess> xColAccess = xColsSupp->getColumns();
Sequence< ::rtl::OUString > aColumns = xColAccess->getElementNames();
for(sal_Int32 nName = 0; nName < aColumns.getLength(); ++nName)
m_aFemaleColumnLB.InsertEntry(aColumns[nName]);
}
::rtl::OUString sGenderColumn = rConfig.GetAssignedColumn(MM_PART_GENDER);
m_aFemaleColumnLB.SelectEntry(sGenderColumn);
m_aFemaleColumnLB.SaveValue();
m_aFemaleFieldCB.SetText(rConfig.GetFemaleGenderValue());
m_aFemaleFieldCB.SaveValue();
UpdatePreview();
m_pWizard->enableButtons(WZB_NEXT, m_pWizard->isStateEnabled(MM_PREPAREMERGEPAGE));
}
/*-- 11.05.2004 14:47:10---------------------------------------------------
-----------------------------------------------------------------------*/
sal_Bool SwMailMergeGreetingsPage::commitPage( ::svt::WizardTypes::CommitPageReason )
{
SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
if(m_aFemaleColumnLB.GetSelectEntryPos() != m_aFemaleColumnLB.GetSavedValue())
{
const SwDBData& rDBData = rConfig.GetCurrentDBData();
Sequence< ::rtl::OUString> aAssignment = rConfig.GetColumnAssignment( rDBData );
if(aAssignment.getLength() <= MM_PART_GENDER)
aAssignment.realloc(MM_PART_GENDER + 1);
aAssignment[MM_PART_GENDER] = m_aFemaleColumnLB.GetSelectEntry();
rConfig.SetColumnAssignment( rDBData, aAssignment );
}
if(m_aFemaleFieldCB.GetText() != m_aFemaleFieldCB.GetSavedValue())
rConfig.SetFemaleGenderValue(m_aFemaleFieldCB.GetText());
lcl_StoreGreetingsBox(m_aFemaleLB, rConfig, SwMailMergeConfigItem::FEMALE);
lcl_StoreGreetingsBox(m_aMaleLB, rConfig, SwMailMergeConfigItem::MALE);
sal_uInt16 nCurrentTextPos = m_aNeutralCB.GetEntryPos( m_aNeutralCB.GetText() );
if(LISTBOX_ENTRY_NOTFOUND == nCurrentTextPos)
{
sal_uInt16 nCount = m_aNeutralCB.GetEntryCount();
m_aNeutralCB.InsertEntry( m_aNeutralCB.GetText(), nCount );
m_aNeutralCB.SelectEntryPos(nCount);
}
lcl_StoreGreetingsBox(m_aNeutralCB, rConfig, SwMailMergeConfigItem::NEUTRAL);
rConfig.SetGreetingLine(m_aGreetingLineCB.IsChecked(), sal_False);
rConfig.SetIndividualGreeting(m_aPersonalizedCB.IsChecked(), sal_False);
return sal_True;
}
/*-- 30.04.2004 10:42:57---------------------------------------------------
-----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergeGreetingsPage, ContainsHdl_Impl, CheckBox*, pBox)
{
sal_Bool bContainsGreeting = pBox->IsChecked();
SwGreetingsHandler::Contains(bContainsGreeting);
m_aPreviewFI. Enable(bContainsGreeting);
m_aPreviewWIN.Enable(bContainsGreeting);
m_aAssignPB. Enable(bContainsGreeting);
m_aDocumentIndexFI. Enable(bContainsGreeting);
m_aPrevSetIB.Enable(bContainsGreeting);
m_aNextSetIB.Enable(bContainsGreeting);
SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
rConfig.SetGreetingLine(m_aGreetingLineCB.IsChecked(), sal_False);
m_pWizard->UpdateRoadmap();
return 0;
}
/*-- 07.05.2004 12:56:42---------------------------------------------------
-----------------------------------------------------------------------*/
IMPL_LINK(SwMailMergeGreetingsPage, InsertDataHdl_Impl, ImageButton*, pButton)
{
//if no pButton is given, the first set has to be pre-set
SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
if(!pButton)
{
rConfig.GetResultSet();
}
else
{
sal_Bool bNext = pButton == &m_aNextSetIB;
sal_Int32 nPos = rConfig.GetResultSetPosition();
rConfig.MoveResultSet( bNext ? ++nPos : --nPos);
}
sal_Int32 nPos = rConfig.GetResultSetPosition();
sal_Bool bEnable = sal_True;
if(nPos < 1)
{
bEnable = sal_False;
nPos = 1;
}
else
UpdatePreview();
m_aPrevSetIB.Enable(bEnable);
m_aNextSetIB.Enable(bEnable);
m_aDocumentIndexFI.Enable(bEnable);
String sTemp(m_sDocument);
sTemp.SearchAndReplaceAscii("%1", String::CreateFromInt32(nPos));
m_aDocumentIndexFI.SetText(sTemp);
return 0;
}
/*-- 17.05.2004 15:11:19---------------------------------------------------
-----------------------------------------------------------------------*/
SwMailBodyDialog::SwMailBodyDialog(Window* pParent, SwMailMergeWizard* _pWizard) :
SfxModalDialog(pParent, SW_RES(DLG_MM_MAILBODY)),
#ifdef MSC
#pragma warning (disable : 4355)
#endif
m_aGreetingLineCB(this, SW_RES( CB_GREETINGLINE ) ),
m_aPersonalizedCB(this, SW_RES( CB_PERSONALIZED ) ),
m_aFemaleFT(this, SW_RES( FT_FEMALE ) ),
m_aFemaleLB(this, SW_RES( LB_FEMALE ) ),
m_aFemalePB(this, SW_RES( PB_FEMALE ) ),
m_aMaleFT(this, SW_RES( FT_MALE ) ),
m_aMaleLB(this, SW_RES( LB_MALE ) ),
m_aMalePB(this, SW_RES( PB_MALE ) ),
m_aFemaleFI(this, SW_RES( FI_FEMALE ) ),
m_aFemaleColumnFT(this, SW_RES( FT_FEMALECOLUMN ) ),
m_aFemaleColumnLB(this, SW_RES( LB_FEMALECOLUMN ) ),
m_aFemaleFieldFT(this, SW_RES( FT_FEMALEFIELD ) ),
m_aFemaleFieldCB(this, SW_RES( CB_FEMALEFIELD ) ),
m_aNeutralFT(this, SW_RES( FT_NEUTRAL ) ),
m_aNeutralCB(this, SW_RES( CB_NEUTRAL ) ),
m_aBodyFT( this, SW_RES( FT_BODY ) ),
m_aBodyMLE( this, SW_RES( MLE_BODY ) ),
m_aSeparatorFL( this, SW_RES( FL_SEPARATOR ) ),
m_aOK( this, SW_RES( PB_OK ) ),
m_aCancel( this, SW_RES( PB_CANCEL ) ),
m_aHelp( this, SW_RES( PB_HELP ) )
#ifdef MSC
#pragma warning (default : 4355)
#endif
{
m_pWizard = _pWizard;
m_pGreetingLineCB = &m_aGreetingLineCB;
m_pPersonalizedCB = &m_aPersonalizedCB;
m_pFemaleFT = & m_aFemaleFT;
m_pFemaleLB = & m_aFemaleLB;
m_pFemalePB = & m_aFemalePB;
m_pMaleFT = & m_aMaleFT;
m_pMaleLB = & m_aMaleLB;
m_pMalePB = & m_aMalePB;
m_pFemaleFI = & m_aFemaleFI;
m_pFemaleColumnFT = &m_aFemaleColumnFT;
m_pFemaleColumnLB = &m_aFemaleColumnLB;
m_pFemaleFieldFT = & m_aFemaleFieldFT;
m_pFemaleFieldCB = & m_aFemaleFieldCB;
m_pNeutralFT = & m_aNeutralFT;
m_pNeutralCB = &m_aNeutralCB;
m_bIsTabPage = false;
m_pPersonalizedCB->SetHelpId( HID_MM_BODY_CB_PERSONALIZED );
m_pFemaleLB->SetHelpId( HID_MM_BODY_LB_FEMALE );
m_pFemalePB->SetHelpId( HID_MM_BODY_PB_FEMALE );
m_pMaleLB->SetHelpId( HID_MM_BODY_LB_MALE );
m_pMalePB->SetHelpId( HID_MM_BODY_PB_MALE );
m_pFemaleColumnLB->SetHelpId( HID_MM_BODY_LB_FEMALECOLUMN );
m_pFemaleFieldCB->SetHelpId( HID_MM_BODY_CB_FEMALEFIELD );
m_pNeutralCB->SetHelpId( HID_MM_BODY_CB_NEUTRAL );
FreeResource();
m_aGreetingLineCB.SetClickHdl(LINK(this, SwMailBodyDialog, ContainsHdl_Impl));
Link aIndividualLink = LINK(this, SwGreetingsHandler, IndividualHdl_Impl);
m_aPersonalizedCB.SetClickHdl(aIndividualLink);
Link aGreetingLink = LINK(this, SwGreetingsHandler, GreetingHdl_Impl);
m_aFemalePB.SetClickHdl(aGreetingLink);
m_aMalePB.SetClickHdl(aGreetingLink);
m_aOK.SetClickHdl(LINK(this, SwMailBodyDialog, OKHdl));
SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
m_aGreetingLineCB.Check(rConfig.IsGreetingLine(sal_True));
m_aPersonalizedCB.Check(rConfig.IsIndividualGreeting(sal_True));
ContainsHdl_Impl(&m_aGreetingLineCB);
aIndividualLink.Call(0);
lcl_FillGreetingsBox(m_aFemaleLB, rConfig, SwMailMergeConfigItem::FEMALE);
lcl_FillGreetingsBox(m_aMaleLB, rConfig, SwMailMergeConfigItem::MALE);
lcl_FillGreetingsBox(m_aNeutralCB, rConfig, SwMailMergeConfigItem::NEUTRAL);
//try to find the gender setting
m_aFemaleColumnLB.Clear();
Reference< sdbcx::XColumnsSupplier > xColsSupp = rConfig.GetColumnsSupplier();
if(xColsSupp.is())
{
Reference < container::XNameAccess> xColAccess = xColsSupp->getColumns();
Sequence< ::rtl::OUString > aColumns = xColAccess->getElementNames();
for(sal_Int32 nName = 0; nName < aColumns.getLength(); ++nName)
m_aFemaleColumnLB.InsertEntry(aColumns[nName]);
}
::rtl::OUString sGenderColumn = rConfig.GetAssignedColumn(MM_PART_GENDER);
m_aFemaleColumnLB.SelectEntry(sGenderColumn);
m_aFemaleColumnLB.SaveValue();
m_aFemaleFieldCB.SetText(rConfig.GetFemaleGenderValue());
m_aFemaleFieldCB.SaveValue();
}
/*-- 17.05.2004 15:13:07---------------------------------------------------
-----------------------------------------------------------------------*/
SwMailBodyDialog::~SwMailBodyDialog()
{
}
/*-- 30.04.2004 10:42:57---------------------------------------------------
-----------------------------------------------------------------------*/
IMPL_LINK(SwMailBodyDialog, ContainsHdl_Impl, CheckBox*, pBox)
{
SwGreetingsHandler::Contains(pBox->IsChecked());
m_pWizard->GetConfigItem().SetGreetingLine(pBox->IsChecked(), sal_True);
return 0;
}
/*-- 28.06.2004 11:22:42---------------------------------------------------
-----------------------------------------------------------------------*/
IMPL_LINK(SwMailBodyDialog, OKHdl, PushButton*, EMPTYARG)
{
SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem();
rConfigItem.SetGreetingLine(
m_aGreetingLineCB.IsChecked(), sal_False);
rConfigItem.SetIndividualGreeting(
m_aPersonalizedCB.IsChecked(), sal_False);
if(m_aFemaleColumnLB.GetSelectEntryPos() != m_aFemaleColumnLB.GetSavedValue())
{
const SwDBData& rDBData = rConfigItem.GetCurrentDBData();
Sequence< ::rtl::OUString> aAssignment = rConfigItem.GetColumnAssignment( rDBData );
sal_Int32 nPos = m_aFemaleColumnLB.GetSelectEntryPos();
if(aAssignment.getLength() < MM_PART_GENDER)
aAssignment.realloc(MM_PART_GENDER);
if( nPos > 0 )
aAssignment[MM_PART_GENDER] = m_aFemaleColumnLB.GetSelectEntry();
else
aAssignment[MM_PART_GENDER] = ::rtl::OUString();
rConfigItem.SetColumnAssignment( rDBData, aAssignment );
}
if(m_aFemaleFieldCB.GetText() != m_aFemaleFieldCB.GetSavedValue())
rConfigItem.SetFemaleGenderValue(m_aFemaleFieldCB.GetText());
EndDialog(RET_OK);
return 0;
}