259 lines
8.1 KiB
C++
259 lines
8.1 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* This file incorporates work covered by the following license notice:
|
|
*
|
|
* 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 .
|
|
*/
|
|
#ifndef INCLUDED_SW_SOURCE_UIBASE_INC_MMCONFIGITEM_HXX
|
|
#define INCLUDED_SW_SOURCE_UIBASE_INC_MMCONFIGITEM_HXX
|
|
|
|
#include <com/sun/star/uno/Sequence.hxx>
|
|
#include <com/sun/star/uno/Reference.hxx>
|
|
#include <com/sun/star/view/XSelectionChangeListener.hpp>
|
|
#include <memory>
|
|
#include <set>
|
|
#include <vector>
|
|
#include <swdbdata.hxx>
|
|
#include <swdllapi.h>
|
|
#include "sharedconnection.hxx"
|
|
|
|
namespace com::sun::star{
|
|
namespace sdbc{
|
|
class XDataSource;
|
|
class XResultSet;
|
|
}
|
|
namespace sdbcx{
|
|
class XColumnsSupplier;
|
|
}
|
|
}
|
|
|
|
class SwMailMergeConfigItem_Impl;
|
|
class SwView;
|
|
namespace sw::mark { class MarkBase; }
|
|
|
|
struct SwDocMergeInfo
|
|
{
|
|
sw::mark::MarkBase* startPageInTarget;
|
|
sal_Int32 nDBRow;
|
|
};
|
|
|
|
class SW_DLLPUBLIC SwMailMergeConfigItem
|
|
{
|
|
std::unique_ptr<SwMailMergeConfigItem_Impl> m_pImpl;
|
|
//session information - not stored in configuration
|
|
bool m_bAddressInserted;
|
|
bool m_bGreetingInserted;
|
|
sal_Int32 m_nGreetingMoves;
|
|
sal_uInt32 m_nBegin;
|
|
sal_uInt32 m_nEnd;
|
|
std::set<sal_Int32> m_aExcludedRecords;
|
|
css::uno::Reference<css::view::XSelectionChangeListener> m_xDBChangedListener;
|
|
|
|
OUString m_sSelectedPrinter;
|
|
|
|
SwView* m_pSourceView;
|
|
SwView* m_pTargetView;
|
|
public:
|
|
SwMailMergeConfigItem();
|
|
~SwMailMergeConfigItem();
|
|
|
|
enum Gender
|
|
{
|
|
FEMALE,
|
|
MALE,
|
|
NEUTRAL
|
|
};
|
|
|
|
void Commit();
|
|
|
|
const std::vector<std::pair<OUString, int>>& GetDefaultAddressHeaders() const;
|
|
|
|
void SetCurrentConnection(
|
|
css::uno::Reference< css::sdbc::XDataSource> const & xSource,
|
|
const SharedConnection& rConnection,
|
|
css::uno::Reference< css::sdbcx::XColumnsSupplier> const & xColumnsSupplier,
|
|
const SwDBData& rDBData);
|
|
|
|
css::uno::Reference< css::sdbc::XDataSource> const & GetSource() const;
|
|
|
|
SharedConnection const & GetConnection() const;
|
|
|
|
css::uno::Reference< css::sdbcx::XColumnsSupplier> const & GetColumnsSupplier();
|
|
|
|
css::uno::Reference< css::sdbc::XResultSet> const & GetResultSet() const;
|
|
|
|
void DisposeResultSet();
|
|
|
|
OUString& GetFilter() const;
|
|
void SetFilter(OUString const &);
|
|
|
|
void SetCurrentDBData( const SwDBData& rDBData);
|
|
const SwDBData& GetCurrentDBData() const;
|
|
|
|
// move absolute, nTarget == -1 -> goto last record
|
|
sal_Int32 MoveResultSet(sal_Int32 nTarget);
|
|
sal_Int32 GetResultSetPosition()const;
|
|
bool IsResultSetFirstLast(bool& bIsFirst, bool& bIsLast);
|
|
|
|
bool IsRecordIncluded(sal_uInt32 nRecord) const;
|
|
bool IsRecordExcluded(sal_uInt32 nRecord) const;
|
|
void ExcludeRecord(sal_Int32 nRecord, bool bExclude);
|
|
css::uno::Sequence< css::uno::Any> GetSelection() const;
|
|
|
|
const css::uno::Sequence<OUString>& GetSavedDocuments() const;
|
|
|
|
bool IsOutputToLetter()const;
|
|
void SetOutputToLetter(bool bSet);
|
|
|
|
bool IsAddressBlock()const;
|
|
void SetAddressBlock(bool bSet);
|
|
|
|
bool IsHideEmptyParagraphs() const;
|
|
void SetHideEmptyParagraphs(bool bSet);
|
|
|
|
css::uno::Sequence<OUString> GetAddressBlocks() const;
|
|
void SetAddressBlocks(const css::uno::Sequence< OUString>& rBlocks);
|
|
|
|
void SetCurrentAddressBlockIndex( sal_Int32 nSet );
|
|
sal_Int32 GetCurrentAddressBlockIndex() const;
|
|
|
|
bool IsIncludeCountry() const;
|
|
OUString& GetExcludeCountry() const;
|
|
void SetCountrySettings(bool bSet, const OUString& sCountry);
|
|
|
|
bool IsIndividualGreeting(bool bInEMail) const;
|
|
void SetIndividualGreeting(bool bSet, bool bInEMail);
|
|
|
|
bool IsGreetingLine(bool bInEMail) const;
|
|
void SetGreetingLine(bool bSet, bool bInEMail);
|
|
|
|
css::uno::Sequence<OUString> GetGreetings(Gender eType) const;
|
|
void SetGreetings(Gender eType, const css::uno::Sequence< OUString>& rBlocks);
|
|
|
|
sal_Int32 GetCurrentGreeting(Gender eType) const;
|
|
void SetCurrentGreeting(Gender eType, sal_Int32 nIndex);
|
|
|
|
//the content of the gender column that marks it as female
|
|
const OUString& GetFemaleGenderValue() const;
|
|
void SetFemaleGenderValue(const OUString& rValue);
|
|
|
|
//returns the assignment in the order of the default headers (GetDefaultAddressHeaders())
|
|
css::uno::Sequence<OUString> GetColumnAssignment( const SwDBData& rDBData ) const;
|
|
void SetColumnAssignment(
|
|
const SwDBData& rDBData,
|
|
const css::uno::Sequence< OUString>& );
|
|
|
|
bool IsAddressFieldsAssigned() const;
|
|
bool IsGreetingFieldsAssigned() const;
|
|
|
|
//e-Mail settings:
|
|
OUString const & GetMailDisplayName() const;
|
|
void SetMailDisplayName(const OUString& rName);
|
|
|
|
OUString const & GetMailAddress() const;
|
|
void SetMailAddress(const OUString& rAddress);
|
|
|
|
bool IsMailReplyTo() const;
|
|
void SetMailReplyTo(bool bSet);
|
|
|
|
OUString const & GetMailReplyTo() const;
|
|
void SetMailReplyTo(const OUString& rReplyTo);
|
|
|
|
OUString const & GetMailServer() const;
|
|
void SetMailServer(const OUString& rAddress);
|
|
|
|
sal_Int16 GetMailPort() const;
|
|
void SetMailPort(sal_Int16 nSet);
|
|
|
|
bool IsSecureConnection() const;
|
|
void SetSecureConnection(bool bSet);
|
|
|
|
bool IsAuthentication() const;
|
|
void SetAuthentication(bool bSet);
|
|
|
|
OUString const & GetMailUserName() const;
|
|
void SetMailUserName(const OUString& rName);
|
|
|
|
OUString const & GetMailPassword() const;
|
|
void SetMailPassword(const OUString& rPassword);
|
|
|
|
bool IsSMTPAfterPOP() const;
|
|
void SetSMTPAfterPOP(bool bSet);
|
|
|
|
OUString const & GetInServerName() const;
|
|
void SetInServerName(const OUString& rServer);
|
|
|
|
sal_Int16 GetInServerPort() const;
|
|
void SetInServerPort(sal_Int16 nSet);
|
|
|
|
bool IsInServerPOP() const;
|
|
void SetInServerPOP(bool bSet);
|
|
|
|
OUString const & GetInServerUserName() const;
|
|
void SetInServerUserName(const OUString& rName);
|
|
|
|
OUString const & GetInServerPassword() const;
|
|
void SetInServerPassword(const OUString& rPassword);
|
|
|
|
//session information
|
|
bool IsAddressInserted() const { return m_bAddressInserted; }
|
|
void SetAddressInserted()
|
|
{
|
|
m_bAddressInserted = true;
|
|
}
|
|
|
|
bool IsGreetingInserted() const
|
|
{ return m_bGreetingInserted; }
|
|
void SetGreetingInserted()
|
|
{ m_bGreetingInserted = true; }
|
|
|
|
void SetBeginEnd(sal_uInt32 nBegin, sal_uInt32 nEnd)
|
|
{ m_nBegin = nBegin; m_nEnd = nEnd; }
|
|
|
|
// counts the moves in the layout page
|
|
void MoveGreeting( sal_Int32 nMove) { m_nGreetingMoves += nMove;}
|
|
sal_Int32 GetGreetingMoves() const { return m_nGreetingMoves;}
|
|
|
|
// new source document - reset some flags
|
|
void DocumentReloaded();
|
|
|
|
bool IsMailAvailable() const;
|
|
|
|
// notify a completed merge, provide the appropriate e-Mail address if available
|
|
void AddMergedDocument(SwDocMergeInfo const & rInfo);
|
|
//returns the page and database cursor information of each merged document
|
|
SwDocMergeInfo& GetDocumentMergeInfo(sal_uInt32 nDocument);
|
|
sal_uInt32 GetMergedDocumentCount();
|
|
|
|
const OUString& GetSelectedPrinter() const
|
|
{ return m_sSelectedPrinter; }
|
|
void SetSelectedPrinter(const OUString& rSet)
|
|
{ m_sSelectedPrinter = rSet; }
|
|
|
|
SwView* GetTargetView();
|
|
void SetTargetView(SwView* pView);
|
|
|
|
SwView* GetSourceView();
|
|
void SetSourceView(SwView* pView);
|
|
|
|
//helper methods
|
|
OUString GetAssignedColumn(sal_uInt32 nColumn) const;
|
|
void stopDBChangeListening();
|
|
void updateCurrentDBDataFromDocument();
|
|
};
|
|
|
|
#endif
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|