summaryrefslogtreecommitdiff
path: root/sw/source/ui/dbui/mmgreetingspage.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/ui/dbui/mmgreetingspage.cxx')
-rw-r--r--sw/source/ui/dbui/mmgreetingspage.cxx619
1 files changed, 619 insertions, 0 deletions
diff --git a/sw/source/ui/dbui/mmgreetingspage.cxx b/sw/source/ui/dbui/mmgreetingspage.cxx
new file mode 100644
index 000000000000..7281880c593d
--- /dev/null
+++ b/sw/source/ui/dbui/mmgreetingspage.cxx
@@ -0,0 +1,619 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 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((USHORT)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((USHORT)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(USHORT 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(USHORT 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)
+{
+ 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);
+
+ USHORT nCurrentTextPos = m_aNeutralCB.GetEntryPos( m_aNeutralCB.GetText() );
+ if(LISTBOX_ENTRY_NOTFOUND == nCurrentTextPos)
+ {
+ USHORT 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
+ {
+ BOOL bNext = pButton == &m_aNextSetIB;
+ sal_Int32 nPos = rConfig.GetResultSetPosition();
+ rConfig.MoveResultSet( bNext ? ++nPos : --nPos);
+ }
+ sal_Int32 nPos = rConfig.GetResultSetPosition();
+ BOOL bEnable = TRUE;
+ if(nPos < 1)
+ {
+ bEnable = 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;
+}
+