diff options
Diffstat (limited to 'sw/source/ui/dbui/mmconfigitem.cxx')
-rw-r--r-- | sw/source/ui/dbui/mmconfigitem.cxx | 1986 |
1 files changed, 1986 insertions, 0 deletions
diff --git a/sw/source/ui/dbui/mmconfigitem.cxx b/sw/source/ui/dbui/mmconfigitem.cxx new file mode 100644 index 000000000000..be1ad7d3a43d --- /dev/null +++ b/sw/source/ui/dbui/mmconfigitem.cxx @@ -0,0 +1,1986 @@ +/************************************************************************* + * + * 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" +#include <mmconfigitem.hxx> +#include <swtypes.hxx> +#include <tools/debug.hxx> +#include <com/sun/star/uno/Any.hxx> +#include <com/sun/star/beans/PropertyValue.hpp> +#include <com/sun/star/sdb/XCompletedConnection.hpp> +#include <com/sun/star/sdbc/XDataSource.hpp> +#include <com/sun/star/sdbcx/XColumnsSupplier.hpp> +#include "com/sun/star/mail/MailServiceType.hpp" +#include "com/sun/star/mail/XMailService.hpp" +#include "com/sun/star/mail/MailServiceProvider.hpp" +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/sdbc/XRowSet.hpp> +#include <comphelper/processfactory.hxx> +#include <comphelper/types.hxx> +#include <com/sun/star/sdb/CommandType.hpp> +#include <unotools/configitem.hxx> +#include <mailmergehelper.hxx> +#include <swunohelper.hxx> +#ifndef _DBMGR_HXX +#include <dbmgr.hxx> +#endif +#ifndef _VIEW_HXX +#include <view.hxx> +#endif +#include <wrtsh.hxx> +#include <dbui.hrc> +#include <vector> + +#include <unomid.h> + +#define _SVSTDARR_STRINGSDTOR +#include <svl/svstdarr.hxx> + +using namespace utl; +using ::rtl::OUString; +using namespace ::com::sun::star; +using namespace ::com::sun::star::uno; +using namespace ::com::sun::star::lang; +using namespace ::com::sun::star::beans; +using namespace ::com::sun::star::sdb; +using namespace ::com::sun::star::sdbc; +using namespace ::com::sun::star::sdbcx; + +const char* cAddressDataAssignments = "AddressDataAssignments"; +const char* cDBColumnAssignments = "DBColumnAssignments"; +const char* cDataSourceName = "DataSource/DataSourceName"; +const char* cDataTableName = "DataSource/DataTableName" ; +const char* cDataCommandType = "DataSource/DataCommandType"; + +#define SECURE_PORT 465 +#define DEFAULT_PORT 25 +#define POP_PORT 110 + +/*-- 16.04.2004 09:41:36--------------------------------------------------- + + -----------------------------------------------------------------------*/ +struct DBAddressDataAssignment +{ + SwDBData aDBData; + Sequence< ::rtl::OUString> aDBColumnAssignments; + //if loaded the name of the node has to be saved + ::rtl::OUString sConfigNodeName; + //all created or changed assignments need to be stored + bool bColumnAssignmentsChanged; + + DBAddressDataAssignment() : + bColumnAssignmentsChanged(false) + {} +}; + +/*-- 16.04.2004 09:43:29--------------------------------------------------- + + -----------------------------------------------------------------------*/ +class SwMailMergeConfigItem_Impl : public utl::ConfigItem +{ + friend class SwMailMergeConfigItem; + Reference< XDataSource> xSource; + SharedConnection xConnection; + Reference< XColumnsSupplier> xColumnsSupplier; + Reference< XStatement> xStatement; + Reference< XResultSet> xResultSet; + SwDBData aDBData; + ::rtl::OUString sFilter; + sal_Int32 nResultSetCursorPos; + + ::std::vector<DBAddressDataAssignment> aAddressDataAssignments; + ::std::vector< ::rtl::OUString> aAddressBlocks; + sal_Int32 nCurrentAddressBlock; + sal_Bool bIsAddressBlock; + sal_Bool bIsHideEmptyParagraphs; + + sal_Bool bIsOutputToLetter; + sal_Bool bIncludeCountry; + ::rtl::OUString sExcludeCountry; + + sal_Bool bIsGreetingLine; + sal_Bool bIsIndividualGreetingLine; + ::std::vector< ::rtl::OUString> aFemaleGreetingLines; + sal_Int32 nCurrentFemaleGreeting; + ::std::vector< ::rtl::OUString> aMaleGreetingLines; + sal_Int32 nCurrentMaleGreeting; + ::std::vector< ::rtl::OUString> aNeutralGreetingLines; + sal_Int32 nCurrentNeutralGreeting; + ::rtl::OUString sFemaleGenderValue; + uno::Sequence< ::rtl::OUString> aSavedDocuments; + + sal_Bool bIsGreetingLineInMail; + sal_Bool bIsIndividualGreetingLineInMail; + + //mail settings + ::rtl::OUString sMailDisplayName; + ::rtl::OUString sMailAddress; + ::rtl::OUString sMailReplyTo; + ::rtl::OUString sMailServer; + ::rtl::OUString sMailUserName; + ::rtl::OUString sMailPassword; + + sal_Bool bIsSMPTAfterPOP; + ::rtl::OUString sInServerName; + sal_Int16 nInServerPort; + sal_Bool bInServerPOP; + ::rtl::OUString sInServerUserName; + ::rtl::OUString sInServerPassword; + + sal_Int16 nMailPort; + sal_Bool bIsMailReplyTo; + sal_Bool bIsDefaultPort; + sal_Bool bIsSecureConnection; + sal_Bool bIsAuthentication; + + sal_Bool bIsEMailSupported; + + ResStringArray m_AddressHeaderSA; + + //these addresses are not stored in the configuration + ::std::vector< SwDocMergeInfo > aMergeInfos; + + //we do overwrite the usersettings in a special case + //than we do remind the usersettings here + sal_Bool bUserSettingWereOverwritten; + sal_Bool bIsAddressBlock_LastUserSetting; + sal_Bool bIsGreetingLineInMail_LastUserSetting; + sal_Bool bIsGreetingLine_LastUserSetting; + + + const Sequence< ::rtl::OUString>& GetPropertyNames(); + +public: + SwMailMergeConfigItem_Impl(); + ~SwMailMergeConfigItem_Impl(); + + virtual void Commit(); + virtual void Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); + const Sequence< ::rtl::OUString> + GetAddressBlocks(sal_Bool bConvertToConfig = sal_False) const; + void SetAddressBlocks( + const Sequence< ::rtl::OUString>& rBlocks, + sal_Bool bConvertFromConfig = sal_False); + const uno::Sequence< ::rtl::OUString> + GetGreetings(SwMailMergeConfigItem::Gender eType, + sal_Bool bConvertToConfig = sal_False) const; + void SetGreetings(SwMailMergeConfigItem::Gender eType, + const uno::Sequence< ::rtl::OUString>& rBlocks, + sal_Bool bConvertFromConfig = sal_False); + + void SetCurrentAddressBlockIndex( sal_Int32 nSet ); + sal_Int32 GetCurrentAddressBlockIndex() const + { return nCurrentAddressBlock; } + sal_Int32 GetCurrentGreeting(SwMailMergeConfigItem::Gender eType) const; + void SetCurrentGreeting(SwMailMergeConfigItem::Gender eType, sal_Int32 nIndex); + +}; + +/*-- 06.05.2004 12:51:54--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SwMailMergeConfigItem_Impl::SwMailMergeConfigItem_Impl() : + ConfigItem(C2U("Office.Writer/MailMergeWizard"), 0), + nResultSetCursorPos(-1), + nCurrentAddressBlock(0), + bIsAddressBlock(sal_True), + bIsHideEmptyParagraphs(sal_False), + bIsOutputToLetter(sal_True), + bIncludeCountry(sal_False), + bIsGreetingLine(sal_True), + nCurrentFemaleGreeting(0), + nCurrentMaleGreeting(0), + nCurrentNeutralGreeting(0), + + bIsSMPTAfterPOP(sal_False), + nInServerPort( POP_PORT ), + bInServerPOP( sal_True ), + nMailPort(0), + bIsMailReplyTo(sal_False), + bIsDefaultPort(sal_False), + bIsSecureConnection(sal_False), + bIsAuthentication(sal_False), + + bIsEMailSupported(sal_False), + m_AddressHeaderSA( SW_RES( SA_ADDRESS_HEADER )), + bUserSettingWereOverwritten(sal_False), + bIsAddressBlock_LastUserSetting(sal_False), + bIsGreetingLineInMail_LastUserSetting(sal_False), + bIsGreetingLine_LastUserSetting(sal_False) +{ + const Sequence<OUString>& rNames = GetPropertyNames(); + Sequence<Any> aValues = GetProperties(rNames); + const Any* pValues = aValues.getConstArray(); + DBG_ASSERT(aValues.getLength() == rNames.getLength(), "GetProperties failed"); + if(aValues.getLength() == rNames.getLength()) + { + for(int nProp = 0; nProp < rNames.getLength(); nProp++) + { + switch(nProp) + { + case 0: pValues[nProp] >>= bIsOutputToLetter; break; + case 1: pValues[nProp] >>= bIncludeCountry; break; + case 2: pValues[nProp] >>= sExcludeCountry; break; + case 3: + { + Sequence< ::rtl::OUString> aBlocks; + pValues[nProp] >>= aBlocks; + SetAddressBlocks(aBlocks, sal_True); + } + break; + case 4: pValues[nProp] >>= bIsAddressBlock; break; + case 5: pValues[nProp] >>= bIsGreetingLine; break; + case 6: pValues[nProp] >>= bIsIndividualGreetingLine; break; + case 7 : + case 8 : + case 9 : + { + Sequence< ::rtl::OUString> aGreetings; + pValues[nProp] >>= aGreetings; + SetGreetings(SwMailMergeConfigItem::Gender( + SwMailMergeConfigItem::FEMALE + nProp - 7), aGreetings, sal_True); + } + break; + + case 10: pValues[nProp] >>= nCurrentFemaleGreeting; break; + case 11: pValues[nProp] >>= nCurrentMaleGreeting; break; + case 12: pValues[nProp] >>= nCurrentNeutralGreeting; break; + case 13: pValues[nProp] >>= sFemaleGenderValue; break; + case 14: pValues[nProp] >>= sMailDisplayName; break; + case 15: pValues[nProp] >>= sMailAddress; break; + case 16: pValues[nProp] >>= bIsMailReplyTo; break; + case 17: pValues[nProp] >>= sMailReplyTo; break; + case 18: pValues[nProp] >>= sMailServer; break; + case 19: + bIsDefaultPort = + (pValues[nProp] >>= nMailPort) ? + sal_False : sal_True; + break; + case 20: pValues[nProp] >>= bIsSecureConnection; break; + case 21: pValues[nProp] >>= bIsAuthentication; break; + case 22: pValues[nProp] >>= sMailUserName; break; + case 23: pValues[nProp] >>= sMailPassword; break; + case 24 :pValues[nProp] >>= aDBData.sDataSource; break; + case 25 :pValues[nProp] >>= aDBData.sCommand; break; + case 26 : + { + short nTemp = 0; + if(pValues[nProp] >>= nTemp) + aDBData.nCommandType = nTemp; + } + break; + case 27: pValues[nProp] >>= sFilter; break; + case 28: pValues[nProp] >>= aSavedDocuments; break; + case 29: + pValues[nProp] >>= bIsEMailSupported; + break; + case 30: pValues[nProp] >>= bIsGreetingLineInMail; break; + case 31: pValues[nProp] >>= bIsIndividualGreetingLineInMail; break; + case 32: pValues[nProp] >>= bIsSMPTAfterPOP; break; + case 33: pValues[nProp] >>= sInServerName; break; + case 34: pValues[nProp] >>= nInServerPort; break; + case 35: pValues[nProp] >>= bInServerPOP; break; + case 36: pValues[nProp] >>= sInServerUserName; break; + case 37: pValues[nProp] >>= sInServerPassword; break; + case 38: pValues[nProp] >>= bIsHideEmptyParagraphs; break; + case 39: pValues[nProp] >>= nCurrentAddressBlock; break; + } + } + } + //read the list of data base assignments + Sequence<OUString> aAssignments = GetNodeNames(C2U(cAddressDataAssignments)); + if(aAssignments.getLength()) + { + //create a list of property names to load the URLs of all data bases + const OUString* pAssignments = aAssignments.getConstArray(); + Sequence< ::rtl::OUString > aAssignProperties(4 * aAssignments.getLength()); + ::rtl::OUString* pAssignProperties = aAssignProperties.getArray(); + sal_Int32 nAssign; + OUString sSlash = C2U("/"); + for(nAssign = 0; nAssign < aAssignProperties.getLength(); nAssign += 4) + { + String sAssignPath = C2U(cAddressDataAssignments); + sAssignPath += '/'; + sAssignPath += String(pAssignments[nAssign / 4]); + sAssignPath += '/'; + pAssignProperties[nAssign] = sAssignPath; + pAssignProperties[nAssign] += C2U(cDataSourceName); + pAssignProperties[nAssign + 1] = sAssignPath; + pAssignProperties[nAssign + 1] += C2U(cDataTableName); + pAssignProperties[nAssign + 2] = sAssignPath; + pAssignProperties[nAssign + 2] += C2U(cDataCommandType); + pAssignProperties[nAssign + 3] = sAssignPath; + pAssignProperties[nAssign + 3] += C2U(cDBColumnAssignments); + } + Sequence<Any> aAssignValues = GetProperties(aAssignProperties); + const Any* pAssignValues = aAssignValues.getConstArray(); + for(nAssign = 0; nAssign < aAssignValues.getLength(); nAssign += 4 ) + { + DBAddressDataAssignment aAssignment; + pAssignValues[nAssign] >>= aAssignment.aDBData.sDataSource; + pAssignValues[nAssign + 1] >>= aAssignment.aDBData.sCommand; + pAssignValues[nAssign + 2] >>= aAssignment.aDBData.nCommandType; + pAssignValues[nAssign + 3] >>= aAssignment.aDBColumnAssignments; + aAssignment.sConfigNodeName = pAssignments[nAssign / 4]; + aAddressDataAssignments.push_back(aAssignment); + } + } + //check if the saved documents still exist + if(aSavedDocuments.getLength()) + { + uno::Sequence< ::rtl::OUString > aTempDocuments(aSavedDocuments.getLength()); + ::rtl::OUString* pTempDocuments = aTempDocuments.getArray(); + sal_Int32 nIndex = 0; + for(sal_Int32 i = 0; i < aSavedDocuments.getLength(); ++i) + { + if(SWUnoHelper::UCB_IsFile( aSavedDocuments[i] )) + { + pTempDocuments[nIndex++] = aSavedDocuments[i]; + } + } + if(nIndex < aSavedDocuments.getLength()) + { + aSavedDocuments = aTempDocuments; + aSavedDocuments.realloc(nIndex); + } + } + +} +/*-- 06.05.2004 12:51:54--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SwMailMergeConfigItem_Impl::~SwMailMergeConfigItem_Impl() +{ +} +/*-- 13.03.2006 12:12:59--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem_Impl::SetCurrentAddressBlockIndex( sal_Int32 nSet ) +{ + if(aAddressBlocks.size() >= sal::static_int_cast<sal_uInt32, sal_Int32>(nSet)) + { + nCurrentAddressBlock = nSet; + SetModified(); + } +} +/*-- 16.04.2004 13:06:07--------------------------------------------------- + + -----------------------------------------------------------------------*/ +OUString lcl_CreateNodeName(Sequence<OUString>& rAssignments ) +{ + const OUString* pNames = rAssignments.getConstArray(); + sal_Int32 nStart = rAssignments.getLength(); + OUString sNewName; + bool bFound; + do + { + bFound = false; + sNewName = C2U("_"); + sNewName += OUString::valueOf(nStart); + //search if the name exists + for(sal_Int32 nAssign = 0; nAssign < rAssignments.getLength(); ++nAssign) + { + if(pNames[nAssign] == sNewName) + { + bFound = true; + ++nStart; + break; + } + } + } + while(bFound); + // add the new name to the array of existing names + rAssignments.realloc(rAssignments.getLength() + 1); + rAssignments.getArray()[rAssignments.getLength() - 1] = sNewName; + return sNewName; +} +// -------------------------------------------------------------------------------- +void lcl_ConvertToNumbers(OUString& rBlock, const ResStringArray& rHeaders ) +{ + //convert the strings used for UI to numbers used for the configuration + String sBlock(rBlock); + sBlock.SearchAndReplaceAllAscii("\n", String::CreateFromAscii("\\n")); + for(USHORT i = 0; i < rHeaders.Count(); ++i) + { + String sHeader = rHeaders.GetString( i ); + sHeader.Insert('<', 0); + sHeader += '>'; + String sReplace(C2U("<>")); + sReplace.Insert('0' + i, 1); + sBlock.SearchAndReplaceAll(sHeader, sReplace); + } + rBlock = sBlock; +} +// -------------------------------------------------------------------------------- +void lcl_ConvertFromNumbers(OUString& rBlock, const ResStringArray& rHeaders) +{ + //convert the numbers used for the configuration to strings used for UI to numbers + //doesn't use ReplaceAll to prevent expansion of numbers inside of the headers + String sBlock(rBlock); + sBlock.SearchAndReplaceAllAscii("\\n", '\n'); + SwAddressIterator aGreetingIter(sBlock); + sBlock.Erase(); + while(aGreetingIter.HasMore()) + { + SwMergeAddressItem aNext = aGreetingIter.Next(); + if(aNext.bIsColumn) + { + //the text should be 1 characters long + sal_Unicode cChar = aNext.sText.GetChar(0); + if(cChar >= '0' && cChar <= 'c') + { + sBlock += '<'; + sal_uInt16 nHeader = cChar - '0'; + if(nHeader < rHeaders.Count()) + sBlock += rHeaders.GetString( nHeader ); + sBlock += '>'; + } + else + { + DBG_ERROR("parse error in address block or greeting line"); + } + } + else + sBlock += aNext.sText; + } + rBlock = sBlock; +} + +/*-------------------------------------------------------------------- + + --------------------------------------------------------------------*/ +const Sequence<OUString>& SwMailMergeConfigItem_Impl::GetPropertyNames() +{ + static Sequence<OUString> aNames; + if(!aNames.getLength()) + { + static const char* aPropNames[] = + { + "OutputToLetter", // 0 + "IncludeCountry", // 1 + "ExcludeCountry", // 2 + "AddressBlockSettings", // 3 + "IsAddressBlock", // 4 + "IsGreetingLine", // 5 + "IsIndividualGreetingLine", // 6 + "FemaleGreetingLines", // 7 + "MaleGreetingLines", // 8 + "NeutralGreetingLines", // 9 + "CurrentFemaleGreeting", // 10 + "CurrentMaleGreeting", // 11 + "CurrentNeutralGreeting", // 12 + "FemaleGenderValue", // 13 + "MailDisplayName", // 14 + "MailAddress", // 15 + "IsMailReplyTo", // 16 + "MailReplyTo", // 17 + "MailServer", // 18 + "MailPort", // 19 + "IsSecureConnection", // 20 + "IsAuthentication", // 21 + "MailUserName", // 22 + "MailPassword", // 23 + "DataSource/DataSourceName",// 24 + "DataSource/DataTableName", // 25 + "DataSource/DataCommandType",// 26 + "Filter", // 27 + "SavedDocuments", // 28 + "EMailSupported", // 29 + "IsEMailGreetingLine", //30 + "IsEMailIndividualGreetingLine", //31 + "IsSMPTAfterPOP", //32 + "InServerName", //33 + "InServerPort", //34 + "InServerIsPOP", //35 + "InServerUserName", //36 + "InServerPassword", //37 + "IsHideEmptyParagraphs", //38 + "CurrentAddressBlock" //39 + + }; + const int nCount = sizeof(aPropNames)/sizeof(const char*); + aNames.realloc(nCount); + OUString* pNames = aNames.getArray(); + for(int i = 0; i < nCount; i++) + pNames[i] = OUString::createFromAscii(aPropNames[i]); + } + return aNames; +} +/*-- 15.04.2004 08:48:39--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem_Impl::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + +void SwMailMergeConfigItem_Impl::Commit() +{ + Sequence<OUString> aNames = GetPropertyNames(); + Sequence<Any> aValues(aNames.getLength()); + Any* pValues = aValues.getArray(); + + for(int nProp = 0; nProp < aNames.getLength(); nProp++) + { + switch(nProp) + { + case 0: pValues[nProp] <<= bIsOutputToLetter; break;// + case 1: pValues[nProp] <<= bIncludeCountry; break; + case 2: pValues[nProp] <<= sExcludeCountry; break; + case 3: pValues[nProp] <<= GetAddressBlocks(sal_True); break; + case 4: + { + if( bUserSettingWereOverwritten == sal_True ) + pValues[nProp] <<= bIsAddressBlock_LastUserSetting; + else + pValues[nProp] <<= bIsAddressBlock; + break; + } + case 5: + { + if( bUserSettingWereOverwritten == sal_True ) + pValues[nProp] <<= bIsGreetingLine_LastUserSetting; + else + pValues[nProp] <<= bIsGreetingLine; + break; + } + case 6: pValues[nProp] <<= bIsIndividualGreetingLine; break; + case 7: + case 8: + case 9: + pValues[nProp] <<= GetGreetings( + SwMailMergeConfigItem::Gender( + SwMailMergeConfigItem::FEMALE + nProp - 7), sal_True); + break; + case 10: pValues[nProp] <<= nCurrentFemaleGreeting; break; + case 11: pValues[nProp] <<= nCurrentMaleGreeting; break; + case 12: pValues[nProp] <<= nCurrentNeutralGreeting; break; + case 13: pValues[nProp] <<= sFemaleGenderValue; break; + case 14: pValues[nProp] <<= sMailDisplayName; break; + case 15: pValues[nProp] <<= sMailAddress; break; + case 16: pValues[nProp] <<= bIsMailReplyTo; break; + case 17: pValues[nProp] <<= sMailReplyTo; break; + case 18: pValues[nProp] <<= sMailServer; break; + case 19: if(!bIsDefaultPort) + pValues[nProp] <<= nMailPort; + break; + case 20: pValues[nProp] <<= bIsSecureConnection; break; + case 21: pValues[nProp] <<= bIsAuthentication; break; + case 22: pValues[nProp] <<= sMailUserName; break; + case 23: pValues[nProp] <<= sMailPassword; break; + case 24 :pValues[nProp] <<= aDBData.sDataSource; break; + case 25 :pValues[nProp] <<= aDBData.sCommand; break; + case 26 :pValues[nProp] <<= (short)aDBData.nCommandType; break; + case 27 :pValues[nProp] <<= sFilter; break; + case 28 :pValues[nProp] <<= aSavedDocuments; break; + case 29: pValues[nProp] <<= bIsEMailSupported; break; + case 30: + { + if( bUserSettingWereOverwritten == sal_True ) + pValues[nProp] <<= bIsGreetingLineInMail_LastUserSetting; + else + pValues[nProp] <<= bIsGreetingLineInMail; + break; + } + case 31: pValues[nProp] <<= bIsIndividualGreetingLineInMail; break; + case 32: pValues[nProp] <<= bIsSMPTAfterPOP; break; + case 33: pValues[nProp] <<= sInServerName; break; + case 34: pValues[nProp] <<= nInServerPort; break; + case 35: pValues[nProp] <<= bInServerPOP; break; + case 36: pValues[nProp] <<= sInServerUserName; break; + case 37: pValues[nProp] <<= sInServerPassword; break; + case 38: pValues[nProp] <<= bIsHideEmptyParagraphs; break; + case 39: pValues[nProp] <<= nCurrentAddressBlock; break; + } + } + PutProperties(aNames, aValues); + //store the changed / new assignments + + //load the existing node names to find new names + Sequence<OUString> aAssignments = GetNodeNames(C2U(cAddressDataAssignments)); + + ::std::vector<DBAddressDataAssignment>::iterator aAssignIter; + for(aAssignIter = aAddressDataAssignments.begin(); + aAssignIter != aAddressDataAssignments.end(); aAssignIter++) + { + if(aAssignIter->bColumnAssignmentsChanged) + { + //create a new node name + OUString sNewNode = aAssignIter->sConfigNodeName.getLength() ? + aAssignIter->sConfigNodeName : + lcl_CreateNodeName(aAssignments); + OUString sSlash = C2U("/"); + OUString sNodePath = C2U(cAddressDataAssignments); + sNodePath += sSlash; + sNodePath += sNewNode; + sNodePath += sSlash; + //only one new entry is written + Sequence< PropertyValue > aNewValues(4); + PropertyValue* pNewValues = aNewValues.getArray(); + pNewValues[0].Name = sNodePath; + pNewValues[0].Name += C2U(cDataSourceName); + pNewValues[0].Value <<= aAssignIter->aDBData.sDataSource; + pNewValues[1].Name = sNodePath; + pNewValues[1].Name += C2U(cDataTableName); + pNewValues[1].Value <<= aAssignIter->aDBData.sCommand; + pNewValues[2].Name = sNodePath; + pNewValues[2].Name += C2U(cDataCommandType); + pNewValues[2].Value <<= aAssignIter->aDBData.nCommandType; + pNewValues[3].Name = sNodePath; + pNewValues[3].Name += C2U(cDBColumnAssignments); + pNewValues[3].Value <<= aAssignIter->aDBColumnAssignments; + + SetSetProperties(C2U(cAddressDataAssignments), aNewValues); + } + } + + bUserSettingWereOverwritten = sal_False; +} +/*-- 06.05.2004 13:04:36--------------------------------------------------- + + -----------------------------------------------------------------------*/ +const Sequence< ::rtl::OUString> SwMailMergeConfigItem_Impl::GetAddressBlocks( + sal_Bool bConvertToConfig) const +{ + Sequence< ::rtl::OUString> aRet(aAddressBlocks.size()); + ::rtl::OUString* pRet = aRet.getArray(); + for(sal_uInt32 nBlock = 0; nBlock < aAddressBlocks.size(); nBlock++) + { + pRet[nBlock] = aAddressBlocks[nBlock]; + if(bConvertToConfig) + lcl_ConvertToNumbers(pRet[nBlock], m_AddressHeaderSA); + } + return aRet; +} +/*-- 06.05.2004 13:04:36--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem_Impl::SetAddressBlocks( + const Sequence< ::rtl::OUString>& rBlocks, + sal_Bool bConvertFromConfig) +{ + aAddressBlocks.clear(); + for(sal_Int32 nBlock = 0; nBlock < rBlocks.getLength(); nBlock++) + { + OUString sBlock = rBlocks[nBlock]; + if(bConvertFromConfig) + lcl_ConvertFromNumbers(sBlock, m_AddressHeaderSA); + aAddressBlocks.push_back(sBlock); + } + nCurrentAddressBlock = 0; + SetModified(); +} +/*-- 30.04.2004 11:04:52--------------------------------------------------- + + -----------------------------------------------------------------------*/ +const Sequence< ::rtl::OUString> SwMailMergeConfigItem_Impl::GetGreetings( + SwMailMergeConfigItem::Gender eType, sal_Bool bConvertToConfig) const +{ + const ::std::vector< ::rtl::OUString>& rGreetings = + eType == SwMailMergeConfigItem::FEMALE ? aFemaleGreetingLines : + eType == SwMailMergeConfigItem::MALE ? aMaleGreetingLines : + aNeutralGreetingLines; + Sequence< ::rtl::OUString> aRet(rGreetings.size()); + ::rtl::OUString* pRet = aRet.getArray(); + for(sal_uInt32 nGreeting = 0; nGreeting < rGreetings.size(); nGreeting++) + { + pRet[nGreeting] = rGreetings[nGreeting]; + if(bConvertToConfig) + lcl_ConvertToNumbers(pRet[nGreeting], m_AddressHeaderSA); + } + return aRet; +} +/*-- 30.04.2004 11:04:52--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem_Impl::SetGreetings( + SwMailMergeConfigItem::Gender eType, + const Sequence< ::rtl::OUString>& rSetGreetings, + sal_Bool bConvertFromConfig) +{ + ::std::vector< ::rtl::OUString>& rGreetings = + eType == SwMailMergeConfigItem::FEMALE ? aFemaleGreetingLines : + eType == SwMailMergeConfigItem::MALE ? aMaleGreetingLines : + aNeutralGreetingLines; + + rGreetings.clear(); + for(sal_Int32 nGreeting = 0; nGreeting < rSetGreetings.getLength(); nGreeting++) + { + OUString sGreeting = rSetGreetings[nGreeting]; + if(bConvertFromConfig) + lcl_ConvertFromNumbers(sGreeting, m_AddressHeaderSA); + rGreetings.push_back(sGreeting); + } + SetModified(); +} +/*-- 11.05.2004 13:13:54--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Int32 SwMailMergeConfigItem_Impl::GetCurrentGreeting( + SwMailMergeConfigItem::Gender eType) const +{ + sal_Int32 nRet; + switch(eType) + { + case SwMailMergeConfigItem::FEMALE: nRet = nCurrentFemaleGreeting ; break; + case SwMailMergeConfigItem::MALE: nRet = nCurrentMaleGreeting ; break; + default: nRet = nCurrentNeutralGreeting; break; + } + return nRet; +} +/*-- 11.05.2004 13:13:54--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem_Impl::SetCurrentGreeting( + SwMailMergeConfigItem::Gender eType, sal_Int32 nIndex) +{ + bool bChanged = false; + switch(eType) + { + case SwMailMergeConfigItem::FEMALE: + bChanged = nCurrentFemaleGreeting != nIndex; + nCurrentFemaleGreeting = nIndex; + break; + case SwMailMergeConfigItem::MALE: + bChanged = nCurrentMaleGreeting != nIndex; + nCurrentMaleGreeting = nIndex; + break; + default: + bChanged = nCurrentNeutralGreeting != nIndex; + nCurrentNeutralGreeting = nIndex; + } + if(bChanged) + SetModified(); +} + +static SwMailMergeConfigItem_Impl* pOptions = NULL; +static sal_Int32 nRefCount = 0; +static ::osl::Mutex aMutex; +/*-- 15.04.2004 08:42:43--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SwMailMergeConfigItem::SwMailMergeConfigItem() : + m_bAddressInserted(false), + m_bMergeDone(false), + m_bGreetingInserted(false), + m_nGreetingMoves(0), + m_nStartPrint(0), + m_nEndPrint(0), + m_pSourceView(0), + m_pTargetView(0) +{ + // Global access, must be guarded (multithreading) + ::osl::MutexGuard aGuard( aMutex ); + if ( !pOptions ) + pOptions = new SwMailMergeConfigItem_Impl; + ++nRefCount; + m_pImpl = pOptions; +} +/*-- 15.04.2004 08:43:36--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SwMailMergeConfigItem::~SwMailMergeConfigItem() +{ + // Global access, must be guarded (multithreading) + ::osl::MutexGuard aGuard( aMutex ); + if ( !--nRefCount ) + { + DELETEZ( pOptions ); + } +} +/*-- 06.05.2004 14:18:10--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::Commit() +{ + if(m_pImpl->IsModified()) + m_pImpl->Commit(); +} +/*-- 06.05.2004 12:59:50--------------------------------------------------- + + -----------------------------------------------------------------------*/ +const ResStringArray& SwMailMergeConfigItem::GetDefaultAddressHeaders() const +{ + return m_pImpl->m_AddressHeaderSA; +} +/*-- 27.04.2004 14:34:16--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetAddressBlocks( + const Sequence< ::rtl::OUString>& rBlocks) +{ + m_pImpl->SetAddressBlocks(rBlocks); +} +/*-- 27.04.2004 14:34:16--------------------------------------------------- + + -----------------------------------------------------------------------*/ +const Sequence< ::rtl::OUString> SwMailMergeConfigItem::GetAddressBlocks() const +{ + return m_pImpl->GetAddressBlocks(); +} +/*-- 11.05.2004 17:08:45--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Bool SwMailMergeConfigItem::IsAddressBlock()const +{ + return m_pImpl->bIsAddressBlock && IsOutputToLetter(); +} +/*-- 11.05.2004 17:08:46--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetAddressBlock(sal_Bool bSet) +{ + m_pImpl->bUserSettingWereOverwritten = sal_False; + if(m_pImpl->bIsAddressBlock != bSet) + { + m_pImpl->bIsAddressBlock = bSet; + m_pImpl->SetModified(); + } +} + +/*-- 30.08.2005 15:09:46--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Bool SwMailMergeConfigItem::IsHideEmptyParagraphs() const +{ + return m_pImpl->bIsHideEmptyParagraphs; +} +/*-- 30.08.2005 15:09:47--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetHideEmptyParagraphs(sal_Bool bSet) +{ + if(m_pImpl->bIsHideEmptyParagraphs != bSet) + { + m_pImpl->bIsHideEmptyParagraphs = bSet; + m_pImpl->SetModified(); + } +} +/*-- 28.04.2004 13:00:02--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Bool SwMailMergeConfigItem::IsIncludeCountry() const +{ + return m_pImpl->bIncludeCountry; +} +/*-- 28.04.2004 13:00:02--------------------------------------------------- + + -----------------------------------------------------------------------*/ +rtl::OUString& SwMailMergeConfigItem::GetExcludeCountry() const +{ + return m_pImpl->sExcludeCountry; +} +/*-- 28.04.2004 13:00:02--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetCountrySettings(sal_Bool bSet, const rtl::OUString& rCountry) +{ + if(m_pImpl->sExcludeCountry != rCountry || + m_pImpl->bIncludeCountry != bSet) + { + m_pImpl->bIncludeCountry = bSet; + m_pImpl->sExcludeCountry = bSet ? rCountry : OUString(); + m_pImpl->SetModified(); + } +} + +/*-- 28.04.2004 15:35:16--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetCurrentConnection( + Reference< XDataSource> xSource, + SharedConnection xConnection, + Reference< XColumnsSupplier> xColumnsSupplier, + const SwDBData& rDBData) +{ + m_pImpl->xSource = xSource ; + m_pImpl->xConnection = xConnection ; + m_pImpl->xColumnsSupplier = xColumnsSupplier; + m_pImpl->aDBData = rDBData; + m_pImpl->xResultSet = 0; + m_pImpl->nResultSetCursorPos = 0; + m_pImpl->SetModified(); +} +/*-- 28.04.2004 15:38:11--------------------------------------------------- + + -----------------------------------------------------------------------*/ +Reference< XDataSource> SwMailMergeConfigItem::GetSource() +{ + return m_pImpl->xSource; +} +/*-- 28.04.2004 15:38:11--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SharedConnection SwMailMergeConfigItem::GetConnection() +{ + return m_pImpl->xConnection; +} +/*-- 28.04.2004 15:38:11--------------------------------------------------- + + -----------------------------------------------------------------------*/ +Reference< XColumnsSupplier> SwMailMergeConfigItem::GetColumnsSupplier() +{ + if(!m_pImpl->xColumnsSupplier.is() && m_pImpl->xConnection.is()) + { + m_pImpl->xColumnsSupplier = SwNewDBMgr::GetColumnSupplier(m_pImpl->xConnection, + m_pImpl->aDBData.sCommand, + m_pImpl->aDBData.nCommandType == CommandType::TABLE ? + SW_DB_SELECT_TABLE : SW_DB_SELECT_QUERY ); + } + return m_pImpl->xColumnsSupplier; +} +/*-- 30.04.2004 14:30:55--------------------------------------------------- + + -----------------------------------------------------------------------*/ +const SwDBData& SwMailMergeConfigItem::GetCurrentDBData() const +{ + return m_pImpl->aDBData; +} + +/*-- 17.06.2004 13:18:47--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetCurrentDBData( const SwDBData& rDBData) +{ + if(m_pImpl->aDBData != rDBData) + { + m_pImpl->aDBData = rDBData; + m_pImpl->xConnection.clear(); + m_pImpl->xSource = 0; + m_pImpl->xColumnsSupplier = 0; + m_pImpl->SetModified(); + } +} +/*-- 29.04.2004 11:34:36--------------------------------------------------- + + -----------------------------------------------------------------------*/ +Reference< XResultSet> SwMailMergeConfigItem::GetResultSet() const +{ + if(!m_pImpl->xConnection.is() && m_pImpl->aDBData.sDataSource.getLength()) + { + m_pImpl->xConnection.reset( + SwNewDBMgr::GetConnection( m_pImpl->aDBData.sDataSource, m_pImpl->xSource ), + SharedConnection::TakeOwnership + ); + } + if(!m_pImpl->xResultSet.is() && m_pImpl->xConnection.is()) + { + try + { + Reference< XMultiServiceFactory > xMgr( ::comphelper::getProcessServiceFactory() ); + if( xMgr.is() ) + { + Reference<XRowSet> xRowSet( + xMgr->createInstance(C2U("com.sun.star.sdb.RowSet")), UNO_QUERY); + Reference<XPropertySet> xRowProperties(xRowSet, UNO_QUERY); + xRowProperties->setPropertyValue(C2U("DataSourceName"), makeAny(m_pImpl->aDBData.sDataSource)); + xRowProperties->setPropertyValue(C2U("Command"), makeAny(m_pImpl->aDBData.sCommand)); + xRowProperties->setPropertyValue(C2U("CommandType"), makeAny(m_pImpl->aDBData.nCommandType)); + xRowProperties->setPropertyValue(C2U("FetchSize"), makeAny((sal_Int32)10)); + xRowProperties->setPropertyValue(C2U("ActiveConnection"), makeAny(m_pImpl->xConnection.getTyped())); + try + { + xRowProperties->setPropertyValue(C2U("ApplyFilter"), makeAny(m_pImpl->sFilter.getLength()>0)); + xRowProperties->setPropertyValue(C2U("Filter"), makeAny(m_pImpl->sFilter)); + } + catch(Exception&) + { + DBG_ERROR("exception caught in xResultSet->SetFilter()"); + } + xRowSet->execute(); + m_pImpl->xResultSet = xRowSet.get(); + m_pImpl->xResultSet->first(); + m_pImpl->nResultSetCursorPos = 1; + } + } + catch(Exception& ) + { + DBG_ERROR("exception caught in: SwMailMergeConfigItem::GetResultSet() "); + } + } + return m_pImpl->xResultSet; +} +/*-- 13.08.2004 11:49:46--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::DisposeResultSet() +{ + m_pImpl->xConnection.clear(); + if(m_pImpl->xResultSet.is()) + { + ::comphelper::disposeComponent( m_pImpl->xResultSet ); + } +} +/*-- 14.05.2004 15:07:55--------------------------------------------------- + + -----------------------------------------------------------------------*/ +::rtl::OUString& SwMailMergeConfigItem::GetFilter() const +{ + return m_pImpl->sFilter; +} +/*-- 14.05.2004 15:07:55--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetFilter(::rtl::OUString& rFilter) +{ + if(m_pImpl->sFilter != rFilter) + { + m_pImpl->sFilter = rFilter; + m_pImpl->SetModified(); + Reference<XPropertySet> xRowProperties(m_pImpl->xResultSet, UNO_QUERY); + if(xRowProperties.is()) + { + try + { + xRowProperties->setPropertyValue(C2U("ApplyFilter"), makeAny(m_pImpl->sFilter.getLength()>0)); + xRowProperties->setPropertyValue(C2U("Filter"), makeAny(m_pImpl->sFilter)); + uno::Reference<XRowSet> xRowSet( m_pImpl->xResultSet, UNO_QUERY_THROW ); + xRowSet->execute(); + } + catch(Exception&) + { + DBG_ERROR("exception caught in SwMailMergeConfigItem::SetFilter()"); + } + } + } +} +/*-- 29.04.2004 11:55:38--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Int32 SwMailMergeConfigItem::MoveResultSet(sal_Int32 nTarget) +{ + if(!m_pImpl->xResultSet.is()) + GetResultSet(); + if(m_pImpl->xResultSet.is()) + { + try + { + //no action if the resultset is already at the right position + if(m_pImpl->xResultSet->getRow() != nTarget) + { + if(nTarget > 0) + { + BOOL bMoved = m_pImpl->xResultSet->absolute(nTarget); + if(!bMoved) + { + if(nTarget > 1) + m_pImpl->xResultSet->last(); + else if(nTarget == 1) + m_pImpl->xResultSet->first(); + } + } + else if(nTarget == -1) + m_pImpl->xResultSet->last(); + m_pImpl->nResultSetCursorPos = m_pImpl->xResultSet->getRow(); + } + } + catch(Exception&) + { + } + } + return m_pImpl->nResultSetCursorPos; +} + +/*-- 27.05.2004 13:56:18--------------------------------------------------- + + -----------------------------------------------------------------------*/ +bool SwMailMergeConfigItem::IsResultSetFirstLast(bool& bIsFirst, bool& bIsLast) +{ + bool bRet = false; + if(!m_pImpl->xResultSet.is()) + GetResultSet(); + if(m_pImpl->xResultSet.is()) + { + try + { + bIsFirst = m_pImpl->xResultSet->isFirst(); + bIsLast = m_pImpl->xResultSet->isLast(); + bRet = true; + } + catch(Exception&) + { + } + } + return bRet; +} +/*-- 29.04.2004 11:55:38--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Int32 SwMailMergeConfigItem::GetResultSetPosition() const +{ + return m_pImpl->nResultSetCursorPos; +} +/*-- 27.05.2004 14:49:53--------------------------------------------------- + + -----------------------------------------------------------------------*/ +bool SwMailMergeConfigItem::IsRecordExcluded(sal_Int32 nRecord) +{ + bool bRet = false; + if(nRecord > 0 && nRecord < m_aSelection.getLength()) + { + sal_Int32 nTemp = 0; + m_aSelection[nRecord - 1] >>= nTemp; + bRet = nTemp < 1; + } + return bRet; +} +/*-- 27.05.2004 14:49:53--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::ExcludeRecord(sal_Int32 nRecord, bool bExclude) +{ + //nRecord is based on 1 + //the selection array contains Anys for all records + //excluded records contain a '-1' + if(!m_aSelection.getLength() || nRecord > m_aSelection.getLength()) + { + if(bExclude) + { + //if no selection array is available we need to create one containing the + //entries for all available records + if(!m_pImpl->xResultSet.is()) + GetResultSet(); + if(m_pImpl->xResultSet.is()) + { + m_pImpl->xResultSet->last(); + sal_Int32 nEnd = m_pImpl->xResultSet->getRow(); + sal_Int32 nStart = m_aSelection.getLength(); + m_aSelection.realloc(nEnd); + Any* pSelection = m_aSelection.getArray(); + for(sal_Int32 nIndex = nStart; nIndex < nEnd; ++nIndex) + { + if((nRecord - 1) != nIndex) + pSelection[nIndex] <<= nIndex + 1; + else + pSelection[nIndex] <<= (sal_Int32) -1; + } + } + } + } + else + { + if(nRecord > 0 && m_aSelection.getLength() > nRecord) + { + m_aSelection[nRecord - 1] <<= bExclude ? -1 : nRecord; + } + } +} +/*-- 27.05.2004 15:08:35--------------------------------------------------- + + -----------------------------------------------------------------------*/ +Sequence< Any > SwMailMergeConfigItem::GetSelection() const +{ + Sequence< Any > aRet(m_aSelection.getLength()); + sal_Int32 nRetIndex = 0; + sal_Int32 nRet; + for(sal_Int32 nIndex = 0; nIndex < m_aSelection.getLength(); ++nIndex) + { + m_aSelection[nIndex] >>= nRet; + if(nRet > 0) + { + aRet[nRetIndex] <<= nRet; + ++nRetIndex; + } + } + aRet.realloc(nRetIndex); + return aRet; +} +/*-- 16.06.2004 15:15:56--------------------------------------------------- + + -----------------------------------------------------------------------*/ +const uno::Sequence< ::rtl::OUString>& + SwMailMergeConfigItem::GetSavedDocuments() const +{ + return m_pImpl->aSavedDocuments; +} +/*-- 16.06.2004 15:15:56--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::AddSavedDocument(::rtl::OUString rName) +{ + const ::rtl::OUString* pDocs = m_pImpl->aSavedDocuments.getConstArray(); + bool bFound = false; + for(sal_Int32 nDoc = 0; nDoc < m_pImpl->aSavedDocuments.getLength(); ++nDoc) + { + if(pDocs[nDoc] == rName) + { + bFound = true; + break; + } + } + if(!bFound) + { + m_pImpl->aSavedDocuments.realloc(m_pImpl->aSavedDocuments.getLength() + 1); + m_pImpl->aSavedDocuments[m_pImpl->aSavedDocuments.getLength() - 1] = rName; + } +} +/*-- 28.04.2004 16:15:16--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Bool SwMailMergeConfigItem::IsOutputToLetter()const +{ + return m_pImpl->bIsOutputToLetter || !IsMailAvailable(); +} +/*-- 28.04.2004 16:15:16--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetOutputToLetter(sal_Bool bSet) +{ + if(m_pImpl->bIsOutputToLetter != bSet) + { + m_pImpl->bIsOutputToLetter = bSet; + m_pImpl->SetModified(); + } +} +/*-- 30.04.2004 10:51:10--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Bool SwMailMergeConfigItem::IsIndividualGreeting(sal_Bool bInEMail) const +{ + return bInEMail ? + m_pImpl->bIsIndividualGreetingLineInMail : + m_pImpl->bIsIndividualGreetingLine; +} +/*-- 30.04.2004 10:51:10--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetIndividualGreeting( + sal_Bool bSet, sal_Bool bInEMail) +{ + if(bInEMail) + { + if(m_pImpl->bIsIndividualGreetingLineInMail != bSet) + { + m_pImpl->bIsIndividualGreetingLineInMail = bSet; + m_pImpl->SetModified(); + } + } + else + { + if(m_pImpl->bIsIndividualGreetingLine != bSet) + { + m_pImpl->bIsIndividualGreetingLine = bSet; + m_pImpl->SetModified(); + } + } +} +/*-- 30.04.2004 10:51:10--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Bool SwMailMergeConfigItem::IsGreetingLine(sal_Bool bInEMail) const +{ + return bInEMail ? m_pImpl->bIsGreetingLineInMail : m_pImpl->bIsGreetingLine; +} +/*-- 30.04.2004 10:51:10--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetGreetingLine(sal_Bool bSet, sal_Bool bInEMail) +{ + m_pImpl->bUserSettingWereOverwritten = sal_False; + if(bInEMail) + { + if(m_pImpl->bIsGreetingLineInMail != bSet) + { + m_pImpl->bIsGreetingLineInMail = bSet; + m_pImpl->SetModified(); + } + } + else + { + if(m_pImpl->bIsGreetingLine != bSet) + { + m_pImpl->bIsGreetingLine = bSet; + m_pImpl->SetModified(); + } + } +} +/*-- 30.04.2004 11:04:52--------------------------------------------------- + + -----------------------------------------------------------------------*/ +const Sequence< ::rtl::OUString> SwMailMergeConfigItem::GetGreetings( + Gender eType ) const +{ + return m_pImpl->GetGreetings(eType); +} +/*-- 30.04.2004 11:04:52--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetGreetings( + Gender eType, const Sequence< ::rtl::OUString>& rSetGreetings) +{ + m_pImpl->SetGreetings( eType, rSetGreetings); +} + +/*-- 11.05.2004 13:10:54--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Int32 SwMailMergeConfigItem::GetCurrentGreeting( + SwMailMergeConfigItem::Gender eType) const +{ + return m_pImpl->GetCurrentGreeting(eType); +} +/*-- 11.05.2004 13:10:55--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetCurrentGreeting(Gender eType, sal_Int32 nIndex) +{ + m_pImpl->SetCurrentGreeting(eType, nIndex); +} +/*-- 12.05.2004 12:29:59--------------------------------------------------- + + -----------------------------------------------------------------------*/ +const ::rtl::OUString& SwMailMergeConfigItem::GetFemaleGenderValue() const +{ + return m_pImpl->sFemaleGenderValue; +} +/*-- 12.05.2004 12:29:59--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetFemaleGenderValue(const ::rtl::OUString rValue) +{ + if( m_pImpl->sFemaleGenderValue != rValue ) + { + m_pImpl->sFemaleGenderValue = rValue; + m_pImpl->SetModified(); + } +} + +/*-- 30.04.2004 13:25:41--------------------------------------------------- + + -----------------------------------------------------------------------*/ +Sequence< ::rtl::OUString> SwMailMergeConfigItem::GetColumnAssignment( + const SwDBData& rDBData ) const +{ + Sequence< ::rtl::OUString> aRet; + ::std::vector<DBAddressDataAssignment>::iterator aAssignIter; + for(aAssignIter = m_pImpl->aAddressDataAssignments.begin(); + aAssignIter != m_pImpl->aAddressDataAssignments.end(); aAssignIter++) + { + if(aAssignIter->aDBData == rDBData) + { + aRet = aAssignIter->aDBColumnAssignments; + break; + } + } + return aRet; +} +/*-- 21.05.2004 12:31:31--------------------------------------------------- + returns the name that is assigned as e-mail column of the current data base + -----------------------------------------------------------------------*/ +::rtl::OUString SwMailMergeConfigItem::GetAssignedColumn(sal_uInt32 nColumn) const +{ + ::rtl::OUString sRet; + Sequence< ::rtl::OUString> aAssignment = GetColumnAssignment( m_pImpl->aDBData ); + if(aAssignment.getLength() > sal::static_int_cast< sal_Int32, sal_uInt32>(nColumn) && aAssignment[nColumn].getLength()) + sRet = aAssignment[nColumn]; + else if(nColumn < m_pImpl->m_AddressHeaderSA.Count()) + sRet = m_pImpl->m_AddressHeaderSA.GetString(nColumn); + return sRet; +} +/*-- 30.04.2004 13:25:41--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetColumnAssignment( const SwDBData& rDBData, + const Sequence< ::rtl::OUString>& rList) +{ + ::std::vector<DBAddressDataAssignment>::iterator aAssignIter; + sal_Bool bFound = sal_False; + for(aAssignIter = m_pImpl->aAddressDataAssignments.begin(); + aAssignIter != m_pImpl->aAddressDataAssignments.end(); aAssignIter++) + { + if(aAssignIter->aDBData == rDBData) + { + if(aAssignIter->aDBColumnAssignments != rList) + { + aAssignIter->aDBColumnAssignments = rList; + aAssignIter->bColumnAssignmentsChanged = true; + } + bFound = sal_True; + break; + } + } + if(!bFound) + { + DBAddressDataAssignment aAssignment; + aAssignment.aDBData = rDBData; + aAssignment.aDBColumnAssignments = rList; + aAssignment.bColumnAssignmentsChanged = true; + m_pImpl->aAddressDataAssignments.push_back(aAssignment); + } + m_pImpl->SetModified(); +} + +/*-- 07.09.2005 11:50:27--------------------------------------------------- + + -----------------------------------------------------------------------*/ +bool SwMailMergeConfigItem::IsAddressFieldsAssigned() const +{ + bool bResult = true; + Reference< XResultSet> xResultSet = GetResultSet(); + uno::Reference< XColumnsSupplier > xColsSupp( xResultSet, UNO_QUERY ); + if(!xColsSupp.is()) + return false; + uno::Reference<container::XNameAccess> xCols = xColsSupp->getColumns(); + + const ResStringArray& rHeaders = GetDefaultAddressHeaders(); + Sequence< ::rtl::OUString> aAssignment = + GetColumnAssignment( GetCurrentDBData() ); + const ::rtl::OUString* pAssignment = aAssignment.getConstArray(); + const Sequence< ::rtl::OUString> aBlocks = GetAddressBlocks(); + + if(aBlocks.getLength() <= m_pImpl->GetCurrentAddressBlockIndex()) + return false; + SwAddressIterator aIter(aBlocks[m_pImpl->GetCurrentAddressBlockIndex()]); + while(aIter.HasMore()) + { + SwMergeAddressItem aItem = aIter.Next(); + if(aItem.bIsColumn) + { + String sConvertedColumn = aItem.sText; + for(USHORT nColumn = 0; + nColumn < rHeaders.Count() && nColumn < aAssignment.getLength(); + ++nColumn) + { + if(rHeaders.GetString(nColumn) == aItem.sText && + pAssignment[nColumn].getLength()) + { + sConvertedColumn = pAssignment[nColumn]; + break; + } + } + //find out if the column exists in the data base + if(!xCols->hasByName(sConvertedColumn)) + { + bResult = false; + break; + } + } + } + return bResult; +} +/*-- 07.09.2005 11:50:27--------------------------------------------------- + + -----------------------------------------------------------------------*/ +bool SwMailMergeConfigItem::IsGreetingFieldsAssigned() const +{ + bool bResult = true; + + if(!IsIndividualGreeting(sal_False)) + return true; + + Reference< XResultSet> xResultSet = GetResultSet(); + uno::Reference< XColumnsSupplier > xColsSupp( xResultSet, UNO_QUERY ); + if(!xColsSupp.is()) + return false; + const ResStringArray& rHeaders = GetDefaultAddressHeaders(); + uno::Reference<container::XNameAccess> xCols = xColsSupp->getColumns(); + + Sequence< ::rtl::OUString> aAssignment = + GetColumnAssignment( GetCurrentDBData() ); + const ::rtl::OUString* pAssignment = aAssignment.getConstArray(); + + const Sequence< ::rtl::OUString> rFemaleEntries = GetGreetings(SwMailMergeConfigItem::FEMALE); + sal_Int32 nCurrentFemale = GetCurrentGreeting(SwMailMergeConfigItem::FEMALE); + const Sequence< ::rtl::OUString> rMaleEntries = GetGreetings(SwMailMergeConfigItem::MALE); + sal_Int32 nCurrentMale = GetCurrentGreeting(SwMailMergeConfigItem::MALE); + ::rtl::OUString sMale, sFemale; + if(rFemaleEntries.getLength() > nCurrentFemale) + sFemale = rFemaleEntries[nCurrentFemale]; + if(rMaleEntries.getLength() > nCurrentMale) + sMale = rMaleEntries[nCurrentMale]; + + ::rtl::OUString sAddress( sFemale ); + sAddress += sMale; + SwAddressIterator aIter(sAddress); + while(aIter.HasMore()) + { + SwMergeAddressItem aItem = aIter.Next(); + if(aItem.bIsColumn) + { + String sConvertedColumn = aItem.sText; + for(USHORT nColumn = 0; + nColumn < rHeaders.Count() && nColumn < aAssignment.getLength(); + ++nColumn) + { + if(rHeaders.GetString(nColumn) == aItem.sText && + pAssignment[nColumn].getLength()) + { + sConvertedColumn = pAssignment[nColumn]; + break; + } + } + //find out if the column exists in the data base + if(!xCols->hasByName(sConvertedColumn)) + { + bResult = false; + break; + } + } + } + return bResult; +} +/*-- 05.05.2004 16:10:07--------------------------------------------------- + + -----------------------------------------------------------------------*/ +::rtl::OUString SwMailMergeConfigItem::GetMailDisplayName() const +{ + return m_pImpl->sMailDisplayName; +} +/*-- 05.05.2004 16:10:08--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetMailDisplayName(const ::rtl::OUString& rName) +{ + if(m_pImpl->sMailDisplayName != rName) + { + m_pImpl->sMailDisplayName = rName; + m_pImpl->SetModified(); + } +} +/*-- 05.05.2004 16:10:09--------------------------------------------------- + + -----------------------------------------------------------------------*/ +::rtl::OUString SwMailMergeConfigItem::GetMailAddress() const +{ + return m_pImpl->sMailAddress; +} +/*-- 05.05.2004 16:10:09--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetMailAddress(const ::rtl::OUString& rAddress) +{ + if(m_pImpl->sMailAddress != rAddress ) + { + m_pImpl->sMailAddress = rAddress; + m_pImpl->SetModified(); + } +} + +/*-- 07.05.2004 12:40:59--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Bool SwMailMergeConfigItem::IsMailReplyTo() const +{ + return m_pImpl->bIsMailReplyTo; +} +/*-- 07.05.2004 12:40:59--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetMailReplyTo(sal_Bool bSet) +{ + if(m_pImpl->bIsMailReplyTo != bSet) + { + m_pImpl->bIsMailReplyTo = bSet; + m_pImpl->SetModified(); + } +} +/*-- 05.05.2004 16:10:09--------------------------------------------------- + + -----------------------------------------------------------------------*/ +::rtl::OUString SwMailMergeConfigItem::GetMailReplyTo() const +{ + return m_pImpl->sMailReplyTo; +} +/*-- 05.05.2004 16:10:09--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetMailReplyTo(const ::rtl::OUString& rReplyTo) +{ + if(m_pImpl->sMailReplyTo != rReplyTo) + { + m_pImpl->sMailReplyTo = rReplyTo; + m_pImpl->SetModified(); + } +} +/*-- 05.05.2004 16:10:09--------------------------------------------------- + + -----------------------------------------------------------------------*/ +::rtl::OUString SwMailMergeConfigItem::GetMailServer() const +{ + return m_pImpl->sMailServer; +} +/*-- 05.05.2004 16:10:10--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetMailServer(const ::rtl::OUString& rAddress) +{ + if(m_pImpl->sMailServer != rAddress) + { + m_pImpl->sMailServer = rAddress; + m_pImpl->SetModified(); + } +} +/*-- 05.05.2004 16:10:10--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Int16 SwMailMergeConfigItem::GetMailPort() const +{ + return m_pImpl->bIsDefaultPort ? + (m_pImpl->bIsSecureConnection ? SECURE_PORT : DEFAULT_PORT) : + m_pImpl->nMailPort; +} +/*-- 05.05.2004 16:10:10--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetMailPort(sal_Int16 nSet) +{ + if(m_pImpl->nMailPort != nSet || m_pImpl->bIsDefaultPort) + { + m_pImpl->nMailPort = nSet; + m_pImpl->bIsDefaultPort = sal_False; + m_pImpl->SetModified(); + } +} +/*-- 05.05.2004 16:10:11--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Bool SwMailMergeConfigItem::IsSecureConnection() const +{ + return m_pImpl->bIsSecureConnection; +} +/*-- 05.05.2004 16:10:12--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetSecureConnection(sal_Bool bSet) +{ + if(m_pImpl->bIsSecureConnection != bSet) + { + m_pImpl->bIsSecureConnection = bSet; + m_pImpl->SetModified(); + } +} +/*-- 05.05.2004 16:10:12--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Bool SwMailMergeConfigItem::IsAuthentication() const +{ + return m_pImpl->bIsAuthentication; +} +/*-- 05.05.2004 16:10:13--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetAuthentication(sal_Bool bSet) +{ + if(m_pImpl->bIsAuthentication != bSet) + { + m_pImpl->bIsAuthentication = bSet; + m_pImpl->SetModified(); + } +} +/*-- 05.05.2004 16:10:13--------------------------------------------------- + + -----------------------------------------------------------------------*/ +::rtl::OUString SwMailMergeConfigItem::GetMailUserName() const +{ + return m_pImpl->sMailUserName; +} +/*-- 05.05.2004 16:10:13--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetMailUserName(const ::rtl::OUString& rName) +{ + if(m_pImpl->sMailUserName != rName) + { + m_pImpl->sMailUserName = rName; + m_pImpl->SetModified(); + } +} +/*-- 05.05.2004 16:10:14--------------------------------------------------- + + -----------------------------------------------------------------------*/ +::rtl::OUString SwMailMergeConfigItem::GetMailPassword() const +{ + return m_pImpl->sMailPassword; +} +/*-- 05.05.2004 16:10:14--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetMailPassword(const ::rtl::OUString& rPassword) +{ + if(m_pImpl->sMailPassword != rPassword) + { + m_pImpl->sMailPassword = rPassword; + m_pImpl->SetModified(); + } +} +/*-- 19.08.2004 14:44:57--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Bool SwMailMergeConfigItem::IsSMTPAfterPOP() const +{ + return m_pImpl->bIsSMPTAfterPOP; +} +/*-- 19.08.2004 14:44:57--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetSMTPAfterPOP(sal_Bool bSet) +{ + if( m_pImpl->bIsSMPTAfterPOP != bSet) + { + m_pImpl->bIsSMPTAfterPOP = bSet; + m_pImpl->SetModified(); + } +} +/*-- 19.08.2004 14:44:57--------------------------------------------------- + + -----------------------------------------------------------------------*/ +::rtl::OUString SwMailMergeConfigItem::GetInServerName() const +{ + return m_pImpl->sInServerName; +} +/*-- 19.08.2004 14:44:57--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetInServerName(const ::rtl::OUString& rServer) +{ + if(m_pImpl->sInServerName != rServer) + { + m_pImpl->sInServerName = rServer; + m_pImpl->SetModified(); + } +} +/*-- 19.08.2004 14:44:58--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Int16 SwMailMergeConfigItem::GetInServerPort() const +{ + return m_pImpl->nInServerPort; +} +/*-- 19.08.2004 14:44:58--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetInServerPort(sal_Int16 nSet) +{ + if( m_pImpl->nInServerPort != nSet) + { + m_pImpl->nInServerPort = nSet; + m_pImpl->SetModified(); + } +} +/*-- 20.08.2004 08:52:48--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Bool SwMailMergeConfigItem::IsInServerPOP() const +{ + return m_pImpl->bInServerPOP; +} +/*-- 20.08.2004 08:52:49--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetInServerPOP(sal_Bool bSet) +{ + if( m_pImpl->bInServerPOP != bSet) + { + m_pImpl->bInServerPOP = bSet; + m_pImpl->SetModified(); + } +} +/*-- 19.08.2004 14:44:58--------------------------------------------------- + + -----------------------------------------------------------------------*/ +::rtl::OUString SwMailMergeConfigItem::GetInServerUserName() const +{ + return m_pImpl->sInServerUserName; +} +/*-- 19.08.2004 14:44:58--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetInServerUserName(const ::rtl::OUString& rName) +{ + if( m_pImpl->sInServerUserName != rName) + { + m_pImpl->sInServerUserName = rName; + m_pImpl->SetModified(); + } +} +/*-- 19.08.2004 14:44:59--------------------------------------------------- + + -----------------------------------------------------------------------*/ +::rtl::OUString SwMailMergeConfigItem::GetInServerPassword() const +{ + return m_pImpl->sInServerPassword; +} +/*-- 19.08.2004 14:45:00--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetInServerPassword(const ::rtl::OUString& rPassword) +{ + if(m_pImpl->sInServerPassword != rPassword) + { + m_pImpl->sInServerPassword = rPassword; + m_pImpl->SetModified(); + } +} + +/*-- 02.09.2004 14:43:27--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::DocumentReloaded() +{ + m_bMergeDone = false; + m_bGreetingInserted = false; + m_bAddressInserted = false; + m_rAddressBlockFrame = ::rtl::OUString(); +} +/*-- 16.06.2004 12:24:18--------------------------------------------------- + + -----------------------------------------------------------------------*/ +bool SwMailMergeConfigItem::IsMailAvailable() const +{ + return m_pImpl->bIsEMailSupported; +} +/*-- 21.05.2004 12:20:05--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::AddMergedDocument(SwDocMergeInfo& rInfo) +{ + m_pImpl->aMergeInfos.push_back(rInfo); +} +/*-- 21.05.2004 12:20:05--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SwDocMergeInfo& SwMailMergeConfigItem::GetDocumentMergeInfo(sal_uInt32 nDocument) +{ + DBG_ASSERT(m_pImpl->aMergeInfos.size() > nDocument,"invalid document index"); + return m_pImpl->aMergeInfos[nDocument]; +} +/*-- 14.06.2004 11:46:26--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_uInt32 SwMailMergeConfigItem::GetMergedDocumentCount() const +{ + return m_pImpl->aMergeInfos.size(); +} +/*-- 11.06.2004 10:38:39--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SwView* lcl_ExistsView(SwView* pView) +{ + const TypeId aType(TYPE(SwView)); + SfxViewShell* pViewShell = SfxViewShell::GetFirst( &aType, FALSE ); + while(pViewShell) + { + if(pViewShell == pView) + return pView; + + pViewShell = SfxViewShell::GetNext( *pViewShell, &aType, FALSE ); + } + return 0; +} +/*-- 16.06.2004 15:02:35--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SwView* SwMailMergeConfigItem::GetTargetView() +{ + //make sure that the pointer is really valid - the document may have been closed manually + if(m_pTargetView) + { + m_pTargetView = lcl_ExistsView(m_pTargetView); + } + return m_pTargetView; +} +/*-- 02.09.2004 17:04:11--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetTargetView(SwView* pView) +{ + m_pTargetView = pView; + //reset the document merge counter + if(!m_pTargetView) + { + m_pImpl->aMergeInfos.clear(); + } +} +/*-- 16.06.2004 15:02:35--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SwView* SwMailMergeConfigItem::GetSourceView() +{ + m_pSourceView = lcl_ExistsView(m_pSourceView); + return m_pSourceView; +} + +/*-- 04.11.2004 19:53 --------------------------------------------------- + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetSourceView(SwView* pView) +{ + m_pSourceView = pView; + + if(pView) + { + SvStringsDtor aDBNameList(5, 1); + SvStringsDtor aAllDBNames(5, 5); + pView->GetWrtShell().GetAllUsedDB( aDBNameList, &aAllDBNames ); + if(aDBNameList.Count()) + { + // if fields are available there is usually no need of an addressblock and greeting + if(!m_pImpl->bUserSettingWereOverwritten) + { + if( m_pImpl->bIsAddressBlock == sal_True + || m_pImpl->bIsGreetingLineInMail == sal_True + || m_pImpl->bIsGreetingLine == sal_True ) + { + //store user settings + m_pImpl->bUserSettingWereOverwritten = sal_True; + m_pImpl->bIsAddressBlock_LastUserSetting = m_pImpl->bIsAddressBlock; + m_pImpl->bIsGreetingLineInMail_LastUserSetting = m_pImpl->bIsGreetingLineInMail; + m_pImpl->bIsGreetingLine_LastUserSetting = m_pImpl->bIsGreetingLine; + + //set all to false + m_pImpl->bIsAddressBlock = sal_False; + m_pImpl->bIsGreetingLineInMail = sal_False; + m_pImpl->bIsGreetingLine = sal_False; + + m_pImpl->SetModified(); + } + } + } + else if( m_pImpl->bUserSettingWereOverwritten ) + { + //restore last user settings: + m_pImpl->bIsAddressBlock = m_pImpl->bIsAddressBlock_LastUserSetting; + m_pImpl->bIsGreetingLineInMail = m_pImpl->bIsGreetingLineInMail_LastUserSetting; + m_pImpl->bIsGreetingLine = m_pImpl->bIsGreetingLine_LastUserSetting; + + m_pImpl->bUserSettingWereOverwritten = sal_False; + } + } +} + +/*-- 13.03.2006 12:15:06--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem::SetCurrentAddressBlockIndex( sal_Int32 nSet ) +{ + m_pImpl->SetCurrentAddressBlockIndex( nSet ); +} +/*-- 13.03.2006 12:15:07--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Int32 SwMailMergeConfigItem::GetCurrentAddressBlockIndex() const +{ + return m_pImpl->GetCurrentAddressBlockIndex(); +} |