Kaydet (Commit) e637b674 authored tarafından Jan-Marek Glogowski's avatar Jan-Marek Glogowski

MM: move email subject and address into descriptor

Both are not related to the DBManager, but the mail merge job.

While at it, also drop the insane bSubjectIsFilename handling, add
an independent sPath, rename sAddressFromColumn to a more general
sDBcolumn, as it's also used for file name lookup in FILE mode, and
unify the DB column data handling.

Change-Id: I1b583f4a67279a229329ba7cd15fb8d2c215737c
üst 3e33c891
...@@ -149,8 +149,9 @@ struct SwMergeDescriptor ...@@ -149,8 +149,9 @@ struct SwMergeDescriptor
OUString sSaveToFilterOptions; OUString sSaveToFilterOptions;
css::uno::Sequence< css::beans::PropertyValue > aSaveToFilterData; css::uno::Sequence< css::beans::PropertyValue > aSaveToFilterData;
OUString sPath;
OUString sSubject; OUString sSubject;
OUString sAddressFromColumn;
OUString sMailBody; OUString sMailBody;
OUString sAttachmentName; OUString sAttachmentName;
css::uno::Sequence< OUString > aCopiesTo; css::uno::Sequence< OUString > aCopiesTo;
...@@ -163,7 +164,8 @@ struct SwMergeDescriptor ...@@ -163,7 +164,8 @@ struct SwMergeDescriptor
bool bPrintAsync; bool bPrintAsync;
bool bCreateSingleFile; bool bCreateSingleFile;
bool bSubjectIsFilename;
OUString sDBcolumn;
SwMailMergeConfigItem* pMailMergeConfigItem; SwMailMergeConfigItem* pMailMergeConfigItem;
...@@ -179,7 +181,6 @@ struct SwMergeDescriptor ...@@ -179,7 +181,6 @@ struct SwMergeDescriptor
bSendAsAttachment( false ), bSendAsAttachment( false ),
bPrintAsync( false ), bPrintAsync( false ),
bCreateSingleFile( false ), bCreateSingleFile( false ),
bSubjectIsFilename( false ),
pMailMergeConfigItem(nullptr) pMailMergeConfigItem(nullptr)
{} {}
...@@ -194,8 +195,6 @@ class SW_DLLPUBLIC SwDBManager ...@@ -194,8 +195,6 @@ class SW_DLLPUBLIC SwDBManager
{ {
friend class SwConnectionDisposedListener_Impl; friend class SwConnectionDisposedListener_Impl;
OUString sEMailAddrField; ///< Mailing: Column name of email address.
OUString sSubject; ///< Mailing: Subject
bool m_bCancel; ///< Mail merge canceled. bool m_bCancel; ///< Mail merge canceled.
bool bInitDBFields : 1; bool bInitDBFields : 1;
bool bInMerge : 1; ///< merge process active bool bInMerge : 1; ///< merge process active
...@@ -259,10 +258,6 @@ public: ...@@ -259,10 +258,6 @@ public:
inline bool IsInitDBFields() const { return bInitDBFields; } inline bool IsInitDBFields() const { return bInitDBFields; }
inline void SetInitDBFields(bool b) { bInitDBFields = b; } inline void SetInitDBFields(bool b) { bInitDBFields = b; }
/// Mailing: Set email data.
inline void SetEMailColumn(const OUString& sColName) { sEMailAddrField = sColName; }
inline void SetSubject(const OUString& sSbj) { sSubject = sSbj; }
/// Fill listbox with all table names of a database. /// Fill listbox with all table names of a database.
bool GetTableNames(ListBox* pListBox, const OUString& rDBName ); bool GetTableNames(ListBox* pListBox, const OUString& rDBName );
......
...@@ -149,14 +149,15 @@ public: ...@@ -149,14 +149,15 @@ public:
virtual bool IsSaveSingleDoc() const = 0; virtual bool IsSaveSingleDoc() const = 0;
virtual bool IsGenerateFromDataBase() const = 0; virtual bool IsGenerateFromDataBase() const = 0;
virtual OUString GetColumnName() const = 0; virtual OUString GetColumnName() const = 0;
virtual OUString GetPath() const = 0; virtual OUString GetTargetURL() const = 0;
}; };
class AbstractMailMergeCreateFromDlg : public VclAbstractDialog class AbstractMailMergeCreateFromDlg : public VclAbstractDialog
{ {
public: public:
virtual bool IsThisDocument() const = 0; virtual bool IsThisDocument() const = 0;
}; };
class AbstractMailMergeFieldConnectionsDlg : public VclAbstractDialog class AbstractMailMergeFieldConnectionsDlg : public VclAbstractDialog
{ {
public: public:
......
...@@ -512,9 +512,9 @@ OUString AbstractMailMergeDlg_Impl::GetColumnName() const ...@@ -512,9 +512,9 @@ OUString AbstractMailMergeDlg_Impl::GetColumnName() const
return pDlg->GetColumnName(); return pDlg->GetColumnName();
} }
OUString AbstractMailMergeDlg_Impl::GetPath() const OUString AbstractMailMergeDlg_Impl::GetTargetURL() const
{ {
return pDlg->GetPath(); return pDlg->GetTargetURL();
} }
bool AbstractMailMergeCreateFromDlg_Impl::IsThisDocument() const bool AbstractMailMergeCreateFromDlg_Impl::IsThisDocument() const
......
...@@ -284,7 +284,7 @@ class AbstractMailMergeDlg_Impl : public AbstractMailMergeDlg ...@@ -284,7 +284,7 @@ class AbstractMailMergeDlg_Impl : public AbstractMailMergeDlg
virtual bool IsSaveSingleDoc() const override; virtual bool IsSaveSingleDoc() const override;
virtual bool IsGenerateFromDataBase() const override; virtual bool IsGenerateFromDataBase() const override;
virtual OUString GetColumnName() const override; virtual OUString GetColumnName() const override;
virtual OUString GetPath() const override; virtual OUString GetTargetURL() const override;
}; };
class SwMailMergeCreateFromDlg; class SwMailMergeCreateFromDlg;
......
...@@ -486,12 +486,16 @@ IMPL_LINK_NOARG_TYPED(SwMailMergeDlg, ModifyHdl, Edit&, void) ...@@ -486,12 +486,16 @@ IMPL_LINK_NOARG_TYPED(SwMailMergeDlg, ModifyHdl, Edit&, void)
m_pFromRB->Check(); m_pFromRB->Check();
} }
bool SwMailMergeDlg::AskUserFilename() const
{
return (m_pSaveSingleDocRB->IsChecked() || !m_pGenerateFromDataBaseCB->IsChecked());
}
bool SwMailMergeDlg::ExecQryShell() bool SwMailMergeDlg::ExecQryShell()
{ {
if(pImpl->xSelSupp.is()) { if(pImpl->xSelSupp.is()) {
pImpl->xSelSupp->removeSelectionChangeListener( pImpl->xChgLstnr ); pImpl->xSelSupp->removeSelectionChangeListener( pImpl->xChgLstnr );
} }
SwDBManager* pMgr = rSh.GetDBManager();
if (m_pPrinterRB->IsChecked()) if (m_pPrinterRB->IsChecked())
nMergeType = DBMGR_MERGE_PRINTER; nMergeType = DBMGR_MERGE_PRINTER;
...@@ -501,33 +505,27 @@ bool SwMailMergeDlg::ExecQryShell() ...@@ -501,33 +505,27 @@ bool SwMailMergeDlg::ExecQryShell()
INetURLObject aAbs; INetURLObject aAbs;
if( pMedium ) if( pMedium )
aAbs = pMedium->GetURLObject(); aAbs = pMedium->GetURLObject();
OUString sPath( pModOpt->SetMailingPath(
URIHelper::SmartRel2Abs( URIHelper::SmartRel2Abs(
aAbs, m_pPathED->GetText(), URIHelper::GetMaybeFileHdl())); aAbs, m_pPathED->GetText(), URIHelper::GetMaybeFileHdl()));
pModOpt->SetMailingPath(sPath);
if (!sPath.endsWith("/"))
sPath += "/";
pModOpt->SetIsNameFromColumn(m_pGenerateFromDataBaseCB->IsChecked()); pModOpt->SetIsNameFromColumn(m_pGenerateFromDataBaseCB->IsChecked());
if (m_pGenerateFromDataBaseCB->IsEnabled() && m_pGenerateFromDataBaseCB->IsChecked()) { if (!AskUserFilename()) {
pMgr->SetEMailColumn(m_pColumnLB->GetSelectEntry());
pModOpt->SetNameFromColumn(m_pColumnLB->GetSelectEntry()); pModOpt->SetNameFromColumn(m_pColumnLB->GetSelectEntry());
if( m_pFilterLB->GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND) if( m_pFilterLB->GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND)
m_sSaveFilter = *static_cast<const OUString*>(m_pFilterLB->GetSelectEntryData()); m_sSaveFilter = *static_cast<const OUString*>(m_pFilterLB->GetSelectEntryData());
m_sFilename = OUString();
} else { } else {
//#i97667# reset column name - otherwise it's remembered from the last run //#i97667# reset column name - otherwise it's remembered from the last run
pMgr->SetEMailColumn(OUString()); pModOpt->SetNameFromColumn(OUString());
//start save as dialog //start save as dialog
OUString sFilter; OUString sFilter;
sPath = SwMailMergeHelper::CallSaveAsDialog(sFilter); m_sFilename = SwMailMergeHelper::CallSaveAsDialog(sFilter);
if (sPath.isEmpty()) if (m_sFilename.isEmpty())
return false; return false;
m_sSaveFilter = sFilter; m_sSaveFilter = sFilter;
} }
pMgr->SetSubject(sPath);
} }
if (m_pFromRB->IsChecked()) { // Insert list if (m_pFromRB->IsChecked()) { // Insert list
...@@ -579,6 +577,20 @@ bool SwMailMergeDlg::ExecQryShell() ...@@ -579,6 +577,20 @@ bool SwMailMergeDlg::ExecQryShell()
return true; return true;
} }
OUString SwMailMergeDlg::GetTargetURL() const
{
if( AskUserFilename() )
return m_sFilename;
OUString sPath( pModOpt->GetMailingPath() );
if( sPath.isEmpty() ) {
SvtPathOptions aPathOpt;
sPath = aPathOpt.GetWorkPath();
}
if( !sPath.endsWith("/") )
sPath += "/";
return sPath;
}
IMPL_LINK_NOARG_TYPED(SwMailMergeDlg, InsertPathHdl, Button*, void) IMPL_LINK_NOARG_TYPED(SwMailMergeDlg, InsertPathHdl, Button*, void)
{ {
OUString sPath( m_pPathED->GetText() ); OUString sPath( m_pPathED->GetText() );
......
This diff is collapsed.
...@@ -103,6 +103,7 @@ class SwMailMergeDlg : public SvxStandardDialog ...@@ -103,6 +103,7 @@ class SwMailMergeDlg : public SvxStandardDialog
Size m_aDialogSize; Size m_aDialogSize;
OUString m_sSaveFilter; OUString m_sSaveFilter;
OUString m_sFilename;
DECL_LINK_TYPED( ButtonHdl, Button*, void ); DECL_LINK_TYPED( ButtonHdl, Button*, void );
DECL_LINK_TYPED( InsertPathHdl, Button*, void ); DECL_LINK_TYPED( InsertPathHdl, Button*, void );
...@@ -113,6 +114,7 @@ class SwMailMergeDlg : public SvxStandardDialog ...@@ -113,6 +114,7 @@ class SwMailMergeDlg : public SvxStandardDialog
virtual void Apply() override; virtual void Apply() override;
bool ExecQryShell(); bool ExecQryShell();
bool AskUserFilename() const;
public: public:
SwMailMergeDlg(vcl::Window* pParent, SwWrtShell& rSh, SwMailMergeDlg(vcl::Window* pParent, SwWrtShell& rSh,
...@@ -128,8 +130,8 @@ public: ...@@ -128,8 +130,8 @@ public:
bool IsSaveSingleDoc() const { return m_pSaveSingleDocRB->IsChecked(); } bool IsSaveSingleDoc() const { return m_pSaveSingleDocRB->IsChecked(); }
bool IsGenerateFromDataBase() const { return m_pGenerateFromDataBaseCB->IsChecked(); } bool IsGenerateFromDataBase() const { return m_pGenerateFromDataBaseCB->IsChecked(); }
OUString GetColumnName() const { return m_pColumnLB->GetSelectEntry();} OUString GetColumnName() const { return m_pColumnLB->GetSelectEntry(); }
OUString GetPath() const { return m_pPathED->GetText();} OUString GetTargetURL() const;
const OUString& GetSaveFilter() const {return m_sSaveFilter;} const OUString& GetSaveFilter() const {return m_sSaveFilter;}
inline const css::uno::Sequence< css::uno::Any > GetSelection() const { return m_aSelection; } inline const css::uno::Sequence< css::uno::Any > GetSelection() const { return m_aSelection; }
......
...@@ -700,7 +700,6 @@ uno::Any SAL_CALL SwXMailMerge::execute( ...@@ -700,7 +700,6 @@ uno::Any SAL_CALL SwXMailMerge::execute(
aMergeDesc.pMailMergeConfigItem = pMMConfigItem.get(); aMergeDesc.pMailMergeConfigItem = pMMConfigItem.get();
break; break;
case MailMergeType::FILE: case MailMergeType::FILE:
case MailMergeType::MAIL:
{ {
INetURLObject aURLObj; INetURLObject aURLObj;
aURLObj.SetSmartProtocol( INetProtocol::File ); aURLObj.SetSmartProtocol( INetProtocol::File );
...@@ -731,23 +730,22 @@ uno::Any SAL_CALL SwXMailMerge::execute( ...@@ -731,23 +730,22 @@ uno::Any SAL_CALL SwXMailMerge::execute(
if (!aPath.isEmpty() && !aPath.endsWith(aDelim)) if (!aPath.isEmpty() && !aPath.endsWith(aDelim))
aPath += aDelim; aPath += aDelim;
if (bCurFileNameFromColumn) if (bCurFileNameFromColumn)
pMgr->SetEMailColumn( aCurFileNamePrefix ); aMergeDesc.sDBcolumn = aCurFileNamePrefix;
else else
{ {
aPath += aCurFileNamePrefix; aPath += aCurFileNamePrefix;
pMgr->SetEMailColumn( OUString() );
}
pMgr->SetSubject( aPath );
if(MailMergeType::FILE == nCurOutputType)
{
aMergeDesc.sSaveToFilter = m_sSaveFilter;
aMergeDesc.sSaveToFilterOptions = m_sSaveFilterOptions;
aMergeDesc.aSaveToFilterData = m_aSaveFilterData;
aMergeDesc.bCreateSingleFile = m_bSaveAsSingleFile;
} }
else
aMergeDesc.sPath = aPath;
aMergeDesc.sSaveToFilter = m_sSaveFilter;
aMergeDesc.sSaveToFilterOptions = m_sSaveFilterOptions;
aMergeDesc.aSaveToFilterData = m_aSaveFilterData;
aMergeDesc.bCreateSingleFile = m_bSaveAsSingleFile;
}
break;
case MailMergeType::MAIL:
{ {
pMgr->SetEMailColumn( m_sAddressFromColumn ); aMergeDesc.sDBcolumn = m_sAddressFromColumn;
if(m_sAddressFromColumn.isEmpty()) if(m_sAddressFromColumn.isEmpty())
throw RuntimeException("Mail address column not set.", static_cast < cppu::OWeakObject * > ( this ) ); throw RuntimeException("Mail address column not set.", static_cast < cppu::OWeakObject * > ( this ) );
aMergeDesc.sSaveToFilter = m_sAttachmentFilter; aMergeDesc.sSaveToFilter = m_sAttachmentFilter;
...@@ -769,7 +767,6 @@ uno::Any SAL_CALL SwXMailMerge::execute( ...@@ -769,7 +767,6 @@ uno::Any SAL_CALL SwXMailMerge::execute(
if( !aMergeDesc.xSmtpServer.is() || !aMergeDesc.xSmtpServer->isConnected()) if( !aMergeDesc.xSmtpServer.is() || !aMergeDesc.xSmtpServer->isConnected())
throw RuntimeException("Failed to connect to mail server.", static_cast < cppu::OWeakObject * > ( this ) ); throw RuntimeException("Failed to connect to mail server.", static_cast < cppu::OWeakObject * > ( this ) );
} }
}
break; break;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment