sw/source/ui/dbui/mmgreetingspage.cxx | 107 +++++++++++++++------------------- sw/source/ui/dbui/mmgreetingspage.hxx | 9 ++ sw/source/ui/dbui/mmresultdialogs.cxx | 8 -- sw/source/ui/inc/mmresultdialogs.hxx | 2 4 files changed, 62 insertions(+), 64 deletions(-)
New commits: commit a4d300f559c4c5704133c01efa6fbcd9193a16c8 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Fri Mar 18 18:44:14 2016 +0100 sw: restore lost SwMMResultEmailDialog::SendAsHdl_Impl() Adapt SwMailBodyDialog to not require a wizard at all, and similarly let SwGreetingsHandler work without a wizard when m_bIsTabPage is false. Do this by not calling m_pWizard->GetConfigItem() in SwMailBodyDialog and in the parent class, instead always work with a new m_rConfigItem, and let the subclasses decide if they obtain that from a wizard (tabpage case), or from the view (toolbar case). With this, it's again possible to add an inline message in case the real mail merge document is an email attachment (odt/pdf/doc case, does not affect html or plain text). Change-Id: I4bf68ac4c06772b50d468d6b30959c5970babcb3 diff --git a/sw/source/ui/dbui/mmgreetingspage.cxx b/sw/source/ui/dbui/mmgreetingspage.cxx index 6a8a013..3a5a818 100644 --- a/sw/source/ui/dbui/mmgreetingspage.cxx +++ b/sw/source/ui/dbui/mmgreetingspage.cxx @@ -28,6 +28,8 @@ #include <com/sun/star/sdbcx/XColumnsSupplier.hpp> #include <com/sun/star/container/XNameAccess.hpp> #include <helpid.h> +#include <swmodule.hxx> +#include <view.hxx> using namespace svt; using namespace ::com::sun::star; @@ -94,7 +96,7 @@ IMPL_LINK_NOARG_TYPED(SwGreetingsHandler, IndividualHdl_Impl, Button*, void) if( m_bIsTabPage ) { - m_pWizard->GetConfigItem().SetIndividualGreeting(bIndividual, false); + m_rConfigItem.SetIndividualGreeting(bIndividual, false); m_pWizard->UpdateRoadmap(); m_pWizard->enableButtons(WizardButtonFlags::NEXT, true); } @@ -104,7 +106,7 @@ IMPL_LINK_NOARG_TYPED(SwGreetingsHandler, IndividualHdl_Impl, Button*, void) IMPL_LINK_TYPED(SwGreetingsHandler, GreetingHdl_Impl, Button*, pButton, void) { ScopedVclPtr<SwCustomizeAddressBlockDialog> pDlg( - VclPtr<SwCustomizeAddressBlockDialog>::Create(pButton, m_pWizard->GetConfigItem(), + VclPtr<SwCustomizeAddressBlockDialog>::Create(pButton, m_rConfigItem, pButton == m_pMalePB ? SwCustomizeAddressBlockDialog::GREETING_MALE : SwCustomizeAddressBlockDialog::GREETING_FEMALE )); @@ -130,7 +132,7 @@ IMPL_LINK_TYPED(SwMailMergeGreetingsPage, AssignHdl_Impl, Button*, pButton, void { const OUString sPreview(m_pFemaleLB->GetSelectEntry() + "\n" + m_pMaleLB->GetSelectEntry()); ScopedVclPtr<SwAssignFieldsDialog> pDlg( - VclPtr<SwAssignFieldsDialog>::Create(pButton, m_pWizard->GetConfigItem(), sPreview, false)); + VclPtr<SwAssignFieldsDialog>::Create(pButton, m_rConfigItem, sPreview, false)); if(RET_OK == pDlg->Execute()) { UpdatePreview(); @@ -161,7 +163,7 @@ void SwMailMergeGreetingsPage::UpdatePreview() { const OUString sFemaleValue = m_pFemaleFieldCB->GetText(); const OUString sFemaleColumn = m_pFemaleColumnLB->GetSelectEntry(); - Reference< sdbcx::XColumnsSupplier > xColsSupp( m_pWizard->GetConfigItem().GetResultSet(), UNO_QUERY); + Reference< sdbcx::XColumnsSupplier > xColsSupp( m_rConfigItem.GetResultSet(), UNO_QUERY); Reference < container::XNameAccess> xColAccess = xColsSupp.is() ? xColsSupp->getColumns() : nullptr; if(!sFemaleValue.isEmpty() && !sFemaleColumn.isEmpty() && xColAccess.is() && @@ -179,9 +181,8 @@ void SwMailMergeGreetingsPage::UpdatePreview() if( !bNoValue ) { //no last name value marks the greeting also als neutral - SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem(); const OUString sLastNameColumn = - rConfig.GetAssignedColumn(MM_PART_LASTNAME); + m_rConfigItem.GetAssignedColumn(MM_PART_LASTNAME); if ( xColAccess->hasByName(sLastNameColumn) ) { aCol = xColAccess->getByName(sLastNameColumn); @@ -201,7 +202,7 @@ void SwMailMergeGreetingsPage::UpdatePreview() OUString sPreview = bFemale ? m_pFemaleLB->GetSelectEntry() : bNoValue ? m_pNeutralCB->GetText() : m_pMaleLB->GetSelectEntry(); - sPreview = SwAddressPreview::FillData(sPreview, m_pWizard->GetConfigItem()); + sPreview = SwAddressPreview::FillData(sPreview, m_rConfigItem); m_pPreviewWIN->SetAddress(sPreview); } @@ -227,7 +228,8 @@ void SwGreetingsHandler::Contains(bool bContainsGreeting) SwMailMergeGreetingsPage::SwMailMergeGreetingsPage(SwMailMergeWizard* _pParent) : svt::OWizardPage(_pParent, "MMSalutationPage", - "modules/swriter/ui/mmsalutationpage.ui") + "modules/swriter/ui/mmsalutationpage.ui"), + SwGreetingsHandler(_pParent->GetConfigItem()) { m_pWizard = _pParent; @@ -280,15 +282,14 @@ SwMailMergeGreetingsPage::SwMailMergeGreetingsPage(SwMailMergeWizard* _pParent) m_pPrevSetIB->SetClickHdl(aDataLink); m_pNextSetIB->SetClickHdl(aDataLink); - SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem(); - m_pGreetingLineCB->Check(rConfig.IsGreetingLine(false)); - m_pPersonalizedCB->Check(rConfig.IsIndividualGreeting(false)); + m_pGreetingLineCB->Check(m_rConfigItem.IsGreetingLine(false)); + m_pPersonalizedCB->Check(m_rConfigItem.IsIndividualGreeting(false)); ContainsHdl_Impl(m_pGreetingLineCB); aIndividualLink.Call(nullptr); - lcl_FillGreetingsBox(*m_pFemaleLB, rConfig, SwMailMergeConfigItem::FEMALE); - lcl_FillGreetingsBox(*m_pMaleLB, rConfig, SwMailMergeConfigItem::MALE); - lcl_FillGreetingsBox(*m_pNeutralCB, rConfig, SwMailMergeConfigItem::NEUTRAL); + lcl_FillGreetingsBox(*m_pFemaleLB, m_rConfigItem, SwMailMergeConfigItem::FEMALE); + lcl_FillGreetingsBox(*m_pMaleLB, m_rConfigItem, SwMailMergeConfigItem::MALE); + lcl_FillGreetingsBox(*m_pNeutralCB, m_rConfigItem, SwMailMergeConfigItem::NEUTRAL); m_pDocumentIndexFI->SetText(m_sDocument.replaceFirst("%1", "1")); } @@ -311,11 +312,9 @@ void SwMailMergeGreetingsPage::dispose() void SwMailMergeGreetingsPage::ActivatePage() { - SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem(); - //try to find the gender setting m_pFemaleColumnLB->Clear(); - Reference< sdbcx::XColumnsSupplier > xColsSupp = rConfig.GetColumnsSupplier(); + Reference< sdbcx::XColumnsSupplier > xColsSupp = m_rConfigItem.GetColumnsSupplier(); if(xColsSupp.is()) { Reference < container::XNameAccess> xColAccess = xColsSupp->getColumns(); @@ -324,10 +323,10 @@ void SwMailMergeGreetingsPage::ActivatePage() m_pFemaleColumnLB->InsertEntry(aColumns[nName]); } - m_pFemaleColumnLB->SelectEntry(rConfig.GetAssignedColumn(MM_PART_GENDER)); + m_pFemaleColumnLB->SelectEntry(m_rConfigItem.GetAssignedColumn(MM_PART_GENDER)); m_pFemaleColumnLB->SaveValue(); - m_pFemaleFieldCB->SetText(rConfig.GetFemaleGenderValue()); + m_pFemaleFieldCB->SetText(m_rConfigItem.GetFemaleGenderValue()); m_pFemaleFieldCB->SaveValue(); UpdatePreview(); @@ -336,22 +335,20 @@ void SwMailMergeGreetingsPage::ActivatePage() bool SwMailMergeGreetingsPage::commitPage( ::svt::WizardTypes::CommitPageReason ) { - SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem(); - if (m_pFemaleColumnLB->IsValueChangedFromSaved()) { - const SwDBData& rDBData = rConfig.GetCurrentDBData(); - Sequence< OUString> aAssignment = rConfig.GetColumnAssignment( rDBData ); + const SwDBData& rDBData = m_rConfigItem.GetCurrentDBData(); + Sequence< OUString> aAssignment = m_rConfigItem.GetColumnAssignment( rDBData ); if(aAssignment.getLength() <= MM_PART_GENDER) aAssignment.realloc(MM_PART_GENDER + 1); aAssignment[MM_PART_GENDER] = m_pFemaleColumnLB->GetSelectEntry(); - rConfig.SetColumnAssignment( rDBData, aAssignment ); + m_rConfigItem.SetColumnAssignment( rDBData, aAssignment ); } if (m_pFemaleFieldCB->IsValueChangedFromSaved()) - rConfig.SetFemaleGenderValue(m_pFemaleFieldCB->GetText()); + m_rConfigItem.SetFemaleGenderValue(m_pFemaleFieldCB->GetText()); - lcl_StoreGreetingsBox(*m_pFemaleLB, rConfig, SwMailMergeConfigItem::FEMALE); - lcl_StoreGreetingsBox(*m_pMaleLB, rConfig, SwMailMergeConfigItem::MALE); + lcl_StoreGreetingsBox(*m_pFemaleLB, m_rConfigItem, SwMailMergeConfigItem::FEMALE); + lcl_StoreGreetingsBox(*m_pMaleLB, m_rConfigItem, SwMailMergeConfigItem::MALE); sal_Int32 nCurrentTextPos = m_pNeutralCB->GetEntryPos(m_pNeutralCB->GetText()); if(COMBOBOX_ENTRY_NOTFOUND == nCurrentTextPos) @@ -360,9 +357,9 @@ bool SwMailMergeGreetingsPage::commitPage( ::svt::WizardTypes::CommitPageReason m_pNeutralCB->InsertEntry(m_pNeutralCB->GetText(), nCount); m_pNeutralCB->SelectEntryPos(nCount); } - lcl_StoreGreetingsBox(*m_pNeutralCB, rConfig, SwMailMergeConfigItem::NEUTRAL); - rConfig.SetGreetingLine(m_pGreetingLineCB->IsChecked(), false); - rConfig.SetIndividualGreeting(m_pPersonalizedCB->IsChecked(), false); + lcl_StoreGreetingsBox(*m_pNeutralCB, m_rConfigItem, SwMailMergeConfigItem::NEUTRAL); + m_rConfigItem.SetGreetingLine(m_pGreetingLineCB->IsChecked(), false); + m_rConfigItem.SetIndividualGreeting(m_pPersonalizedCB->IsChecked(), false); return true; } @@ -376,26 +373,24 @@ IMPL_LINK_TYPED(SwMailMergeGreetingsPage, ContainsHdl_Impl, Button*, pBox, void) m_pDocumentIndexFI-> Enable(bContainsGreeting); m_pPrevSetIB->Enable(bContainsGreeting); m_pNextSetIB->Enable(bContainsGreeting); - SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem(); - rConfig.SetGreetingLine(m_pGreetingLineCB->IsChecked(), false); + m_rConfigItem.SetGreetingLine(m_pGreetingLineCB->IsChecked(), false); m_pWizard->UpdateRoadmap(); } IMPL_LINK_TYPED(SwMailMergeGreetingsPage, InsertDataHdl_Impl, Button*, pButton, void) { //if no pButton is given, the first set has to be pre-set - SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem(); if(!pButton) { - rConfig.GetResultSet(); + m_rConfigItem.GetResultSet(); } else { bool bNext = pButton == m_pNextSetIB; - sal_Int32 nPos = rConfig.GetResultSetPosition(); - rConfig.MoveResultSet( bNext ? ++nPos : --nPos); + sal_Int32 nPos = m_rConfigItem.GetResultSetPosition(); + m_rConfigItem.MoveResultSet( bNext ? ++nPos : --nPos); } - sal_Int32 nPos = rConfig.GetResultSetPosition(); + sal_Int32 nPos = m_rConfigItem.GetResultSetPosition(); bool bEnable = true; if(nPos < 1) { @@ -410,10 +405,10 @@ IMPL_LINK_TYPED(SwMailMergeGreetingsPage, InsertDataHdl_Impl, Button*, pButton, m_pDocumentIndexFI->SetText(m_sDocument.replaceFirst("%1", OUString::number(nPos))); } -SwMailBodyDialog::SwMailBodyDialog(vcl::Window* pParent, SwMailMergeWizard* _pWizard) : - SfxModalDialog(pParent, "MailBodyDialog", "modules/swriter/ui/mmmailbody.ui") +SwMailBodyDialog::SwMailBodyDialog(vcl::Window* pParent) : + SfxModalDialog(pParent, "MailBodyDialog", "modules/swriter/ui/mmmailbody.ui"), + SwGreetingsHandler(*GetActiveView()->GetMailMergeConfigItem()) { - m_pWizard = _pWizard; get(m_pGreetingLineCB, "greeting"); get(m_pPersonalizedCB, "personalized"); get(m_pFemaleFT, "femaleft"); @@ -455,19 +450,18 @@ SwMailBodyDialog::SwMailBodyDialog(vcl::Window* pParent, SwMailMergeWizard* _pWi m_pMalePB->SetClickHdl(aGreetingLink); m_pOK->SetClickHdl(LINK(this, SwMailBodyDialog, OKHdl)); - SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem(); - m_pGreetingLineCB->Check(rConfig.IsGreetingLine(true)); - m_pPersonalizedCB->Check(rConfig.IsIndividualGreeting(true)); + m_pGreetingLineCB->Check(m_rConfigItem.IsGreetingLine(true)); + m_pPersonalizedCB->Check(m_rConfigItem.IsIndividualGreeting(true)); ContainsHdl_Impl(m_pGreetingLineCB); aIndividualLink.Call(nullptr); - lcl_FillGreetingsBox(*m_pFemaleLB, rConfig, SwMailMergeConfigItem::FEMALE); - lcl_FillGreetingsBox(*m_pMaleLB, rConfig, SwMailMergeConfigItem::MALE); - lcl_FillGreetingsBox(*m_pNeutralCB, rConfig, SwMailMergeConfigItem::NEUTRAL); + lcl_FillGreetingsBox(*m_pFemaleLB, m_rConfigItem, SwMailMergeConfigItem::FEMALE); + lcl_FillGreetingsBox(*m_pMaleLB, m_rConfigItem, SwMailMergeConfigItem::MALE); + lcl_FillGreetingsBox(*m_pNeutralCB, m_rConfigItem, SwMailMergeConfigItem::NEUTRAL); //try to find the gender setting m_pFemaleColumnLB->Clear(); - Reference< sdbcx::XColumnsSupplier > xColsSupp = rConfig.GetColumnsSupplier(); + Reference< sdbcx::XColumnsSupplier > xColsSupp = m_rConfigItem.GetColumnsSupplier(); if(xColsSupp.is()) { Reference < container::XNameAccess> xColAccess = xColsSupp->getColumns(); @@ -476,10 +470,10 @@ SwMailBodyDialog::SwMailBodyDialog(vcl::Window* pParent, SwMailMergeWizard* _pWi m_pFemaleColumnLB->InsertEntry(aColumns[nName]); } - m_pFemaleColumnLB->SelectEntry(rConfig.GetAssignedColumn(MM_PART_GENDER)); + m_pFemaleColumnLB->SelectEntry(m_rConfigItem.GetAssignedColumn(MM_PART_GENDER)); m_pFemaleColumnLB->SaveValue(); - m_pFemaleFieldCB->SetText(rConfig.GetFemaleGenderValue()); + m_pFemaleFieldCB->SetText(m_rConfigItem.GetFemaleGenderValue()); m_pFemaleFieldCB->SaveValue(); } @@ -500,21 +494,20 @@ IMPL_LINK_TYPED(SwMailBodyDialog, ContainsHdl_Impl, Button*, pButton, void) { CheckBox* pBox = static_cast<CheckBox*>(pButton); SwGreetingsHandler::Contains(pBox->IsChecked()); - m_pWizard->GetConfigItem().SetGreetingLine(pBox->IsChecked(), true); + m_rConfigItem.SetGreetingLine(pBox->IsChecked(), true); } IMPL_LINK_NOARG_TYPED(SwMailBodyDialog, OKHdl, Button*, void) { - SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem(); - rConfigItem.SetGreetingLine( + m_rConfigItem.SetGreetingLine( m_pGreetingLineCB->IsChecked(), false); - rConfigItem.SetIndividualGreeting( + m_rConfigItem.SetIndividualGreeting( m_pPersonalizedCB->IsChecked(), false); if(m_pFemaleColumnLB->IsValueChangedFromSaved()) { - const SwDBData& rDBData = rConfigItem.GetCurrentDBData(); - Sequence< OUString> aAssignment = rConfigItem.GetColumnAssignment( rDBData ); + const SwDBData& rDBData = m_rConfigItem.GetCurrentDBData(); + Sequence< OUString> aAssignment = m_rConfigItem.GetColumnAssignment( rDBData ); sal_Int32 nPos = m_pFemaleColumnLB->GetSelectEntryPos(); if(aAssignment.getLength() < MM_PART_GENDER) aAssignment.realloc(MM_PART_GENDER); @@ -522,10 +515,10 @@ IMPL_LINK_NOARG_TYPED(SwMailBodyDialog, OKHdl, Button*, void) aAssignment[MM_PART_GENDER] = m_pFemaleColumnLB->GetSelectEntry(); else aAssignment[MM_PART_GENDER].clear(); - rConfigItem.SetColumnAssignment( rDBData, aAssignment ); + m_rConfigItem.SetColumnAssignment( rDBData, aAssignment ); } if(m_pFemaleFieldCB->IsValueChangedFromSaved()) - rConfigItem.SetFemaleGenderValue(m_pFemaleFieldCB->GetText()); + m_rConfigItem.SetFemaleGenderValue(m_pFemaleFieldCB->GetText()); EndDialog(RET_OK); } diff --git a/sw/source/ui/dbui/mmgreetingspage.hxx b/sw/source/ui/dbui/mmgreetingspage.hxx index 95cfd17..2510b75 100644 --- a/sw/source/ui/dbui/mmgreetingspage.hxx +++ b/sw/source/ui/dbui/mmgreetingspage.hxx @@ -57,6 +57,13 @@ protected: bool m_bIsTabPage; VclPtr<SwMailMergeWizard> m_pWizard; + /// The mail merge state, available even when m_pWizard is nullptr. + SwMailMergeConfigItem& m_rConfigItem; + + SwGreetingsHandler(SwMailMergeConfigItem& rConfigItem) + : m_rConfigItem(rConfigItem) + { + } ~SwGreetingsHandler() {} @@ -106,7 +113,7 @@ class SwMailBodyDialog : public SfxModalDialog, public SwGreetingsHandler DECL_LINK_TYPED(ContainsHdl_Impl, Button*, void); DECL_LINK_TYPED(OKHdl, Button*, void); public: - SwMailBodyDialog(vcl::Window* pParent, SwMailMergeWizard* pWizard); + SwMailBodyDialog(vcl::Window* pParent); virtual ~SwMailBodyDialog(); virtual void dispose() override; diff --git a/sw/source/ui/dbui/mmresultdialogs.cxx b/sw/source/ui/dbui/mmresultdialogs.cxx index b6e863a..bb99902 100644 --- a/sw/source/ui/dbui/mmresultdialogs.cxx +++ b/sw/source/ui/dbui/mmresultdialogs.cxx @@ -21,6 +21,7 @@ #include <mailmergewizard.hxx> #include <mmconfigitem.hxx> #include <mailconfigpage.hxx> +#include <mmgreetingspage.hxx> #include <swmessdialog.hxx> #include <cmdid.h> #include <swtypes.hxx> @@ -872,17 +873,14 @@ IMPL_LINK_TYPED(SwMMResultEmailDialog, SendTypeHdl_Impl, ListBox&, rBox, void) } } -IMPL_STATIC_LINK_TYPED(SwMMResultEmailDialog, SendAsHdl_Impl, Button*, /*pButton*/, void) +IMPL_LINK_TYPED(SwMMResultEmailDialog, SendAsHdl_Impl, Button*, pButton, void) { - /* TODO FIXME this currently tries to connect to the wizard, fix that, or - instantiate it when needed or something - VclPtr<SwMailBodyDialog> pDlg = VclPtr<SwMailBodyDialog>::Create(pButton, m_pWizard); + VclPtr<SwMailBodyDialog> pDlg = VclPtr<SwMailBodyDialog>::Create(pButton); pDlg->SetBody(m_sBody); if(RET_OK == pDlg->Execute()) { m_sBody = pDlg->GetBody(); } - */ } // Send documents as e-mail diff --git a/sw/source/ui/inc/mmresultdialogs.hxx b/sw/source/ui/inc/mmresultdialogs.hxx index 18f878d..521bc4d 100644 --- a/sw/source/ui/inc/mmresultdialogs.hxx +++ b/sw/source/ui/inc/mmresultdialogs.hxx @@ -137,7 +137,7 @@ class SwMMResultEmailDialog : public SfxModalDialog DECL_LINK_TYPED(CopyToHdl_Impl, Button*, void); DECL_LINK_TYPED(SendTypeHdl_Impl, ListBox&, void); - DECL_STATIC_LINK_TYPED(SwMMResultEmailDialog, SendAsHdl_Impl, Button*, void); + DECL_LINK_TYPED(SendAsHdl_Impl, Button*, void); DECL_LINK_TYPED(SendDocumentsHdl_Impl, Button*, void); DECL_LINK_TYPED(DocumentSelectionHdl_Impl, Button*, void); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits