diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-08-22 17:15:44 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-08-22 20:40:07 +0200 |
commit | b5f2f32defd22c8ec0c47c0100836a8d5bb132ea (patch) | |
tree | 49bf3d2671c6f8665438f090cd9078b6817c840a | |
parent | d5c7657c541c1f6d17bfe5e605594c235eecfcdb (diff) |
weld SwMailMergeAddressBlockPage
Change-Id: Ib3383f1ae590766ecb1371cab2ccdb7c835c95a8
Reviewed-on: https://gerrit.libreoffice.org/77971
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | extras/source/glade/libreoffice-catalog.xml.in | 3 | ||||
-rwxr-xr-x | solenv/bin/native-code.py | 1 | ||||
-rw-r--r-- | sw/source/ui/dbui/mailmergewizard.cxx | 2 | ||||
-rw-r--r-- | sw/source/ui/dbui/mmaddressblockpage.cxx | 201 | ||||
-rw-r--r-- | sw/source/ui/dbui/mmaddressblockpage.hxx | 59 | ||||
-rw-r--r-- | sw/source/uibase/dbui/mailmergehelper.cxx | 9 | ||||
-rw-r--r-- | sw/source/uibase/inc/mailmergehelper.hxx | 5 | ||||
-rw-r--r-- | sw/uiconfig/swriter/ui/mmaddressblockpage.ui | 38 |
8 files changed, 181 insertions, 137 deletions
diff --git a/extras/source/glade/libreoffice-catalog.xml.in b/extras/source/glade/libreoffice-catalog.xml.in index eef7bdd744b6..a86845bd17d1 100644 --- a/extras/source/glade/libreoffice-catalog.xml.in +++ b/extras/source/glade/libreoffice-catalog.xml.in @@ -159,9 +159,6 @@ <glade-widget-class title="NUP Preview" name="vcllo-ShowNupOrderWindow" generic-name="NUP Preview" parent="GtkDrawingArea" icon-name="widget-gtk-drawingarea"/> - <glade-widget-class title="Address Preview" name="swlo-SwAddressPreview" - generic-name="Address Preview" parent="GtkDrawingArea" - icon-name="widget-gtk-drawingarea"/> <glade-widget-class title="Tree List" name="vcllo-SvTreeListBox" generic-name="Tree List" parent="GtkTreeView" icon-name="widget-gtk-treeview"> diff --git a/solenv/bin/native-code.py b/solenv/bin/native-code.py index a58a30654a06..45a3fee13118 100755 --- a/solenv/bin/native-code.py +++ b/solenv/bin/native-code.py @@ -512,7 +512,6 @@ custom_widgets = [ 'SvxRelativeField', 'SvxTextEncodingBox', 'SvxTextEncodingBox', - 'SwAddressPreview', 'SwNavHelpToolBox', 'TableValueSet', 'TemplateDefaultView', diff --git a/sw/source/ui/dbui/mailmergewizard.cxx b/sw/source/ui/dbui/mailmergewizard.cxx index 49ea7c661fc9..6ca8822cbfc3 100644 --- a/sw/source/ui/dbui/mailmergewizard.cxx +++ b/sw/source/ui/dbui/mailmergewizard.cxx @@ -106,7 +106,7 @@ VclPtr<TabPage> SwMailMergeWizard::createPage(WizardState _nState) SetRoadmapHelpId("modules/swriter/ui/mmoutputtypepage/MMOutputTypePage"); break; case MM_ADDRESSBLOCKPAGE : - pRet = VclPtr<SwMailMergeAddressBlockPage>::Create(this); + pRet = VclPtr<SwMailMergeAddressBlockPage>::Create(this, TabPageParent(this)); SetRoadmapHelpId("modules/swriter/ui/mmaddressblockpage/MMAddressBlockPage"); break; case MM_GREETINGSPAGE : diff --git a/sw/source/ui/dbui/mmaddressblockpage.cxx b/sw/source/ui/dbui/mmaddressblockpage.cxx index dd12860e54ca..0edb9bddee1f 100644 --- a/sw/source/ui/dbui/mmaddressblockpage.cxx +++ b/sw/source/ui/dbui/mmaddressblockpage.cxx @@ -57,46 +57,46 @@ using namespace ::com::sun::star::sdb; using namespace ::com::sun::star::sdbc; using namespace ::com::sun::star::sdbcx; -SwMailMergeAddressBlockPage::SwMailMergeAddressBlockPage( SwMailMergeWizard* _pParent) : - vcl::OWizardPage(_pParent, "MMAddressBlockPage", - "modules/swriter/ui/mmaddressblockpage.ui") - , m_pWizard(_pParent) -{ - get(m_pAddressListPB, "addresslist"); - get(m_pCurrentAddressFI, "currentaddress"); - get(m_pStep2, "step2"); - get(m_pStep3, "step3"); - get(m_pStep4, "step4"); - get(m_pSettingsFI, "settingsft"); - get(m_pAddressCB, "address"); - get(m_pSettingsWIN, "settingspreview"); +SwMailMergeAddressBlockPage::SwMailMergeAddressBlockPage(SwMailMergeWizard* pWizard, TabPageParent pParent) + : vcl::OWizardPage(pParent, "modules/swriter/ui/mmaddressblockpage.ui", "MMAddressBlockPage") + , m_pWizard(pWizard) + , m_xAddressListPB(m_xBuilder->weld_button("addresslist")) + , m_xCurrentAddressFI(m_xBuilder->weld_label("currentaddress")) + , m_xStep2(m_xBuilder->weld_container("step2")) + , m_xStep3(m_xBuilder->weld_container("step3")) + , m_xStep4(m_xBuilder->weld_container("step4")) + , m_xSettingsFI(m_xBuilder->weld_label("settingsft")) + , m_xAddressCB(m_xBuilder->weld_check_button("address")) + , m_xSettingsPB(m_xBuilder->weld_button("settings")) + , m_xHideEmptyParagraphsCB(m_xBuilder->weld_check_button("hideempty")) + , m_xAssignPB(m_xBuilder->weld_button("assign")) + , m_xDocumentIndexFI(m_xBuilder->weld_label("documentindex")) + , m_xPrevSetIB(m_xBuilder->weld_button("prev")) + , m_xNextSetIB(m_xBuilder->weld_button("next")) + , m_xDifferentlist(m_xBuilder->weld_label("differentlist")) + , m_xSettings(new AddressPreview(m_xBuilder->weld_scrolled_window("settingspreviewwin"))) + , m_xPreview(new AddressPreview(m_xBuilder->weld_scrolled_window("addresspreviewwin"))) + , m_xSettingsWIN(new weld::CustomWeld(*m_xBuilder, "settingspreview", *m_xSettings)) + , m_xPreviewWIN(new weld::CustomWeld(*m_xBuilder, "addresspreview", *m_xPreview)) +{ Size aSize(LogicToPixel(Size(164 , 45), MapMode(MapUnit::MapAppFont))); - m_pSettingsWIN->set_width_request(aSize.Width()); - m_pSettingsWIN->set_height_request(aSize.Height()); - get(m_pSettingsPB, "settings"); - get(m_pHideEmptyParagraphsCB, "hideempty"); - get(m_pAssignPB, "assign"); - get(m_pPreviewWIN, "addresspreview"); + m_xSettingsWIN->set_size_request(aSize.Width(), aSize.Height()); aSize = LogicToPixel(Size(176, 46), MapMode(MapUnit::MapAppFont)); - m_pPreviewWIN->set_width_request(aSize.Width()); - m_pPreviewWIN->set_height_request(aSize.Height()); - get(m_pDocumentIndexFI, "documentindex"); - get(m_pPrevSetIB, "prev"); - get(m_pNextSetIB, "next"); - m_sDocument = m_pDocumentIndexFI->GetText(); - m_sChangeAddress = get<Button>("differentlist")->GetText(); - - m_sCurrentAddress = m_pCurrentAddressFI->GetText(); - m_pAddressListPB->SetClickHdl(LINK(this, SwMailMergeAddressBlockPage, AddressListHdl_Impl)); - m_pSettingsPB->SetClickHdl(LINK(this, SwMailMergeAddressBlockPage, SettingsHdl_Impl)); - m_pAssignPB->SetClickHdl(LINK(this, SwMailMergeAddressBlockPage, AssignHdl_Impl )); - m_pAddressCB->SetClickHdl(LINK(this, SwMailMergeAddressBlockPage, AddressBlockHdl_Impl)); - m_pSettingsWIN->SetSelectHdl(LINK(this, SwMailMergeAddressBlockPage, AddressBlockSelectHdl_Impl)); - m_pHideEmptyParagraphsCB->SetClickHdl(LINK(this, SwMailMergeAddressBlockPage, HideParagraphsHdl_Impl)); - - Link<Button*,void> aLink = LINK(this, SwMailMergeAddressBlockPage, InsertDataHdl_Impl); - m_pPrevSetIB->SetClickHdl(aLink); - m_pNextSetIB->SetClickHdl(aLink); + m_xPreviewWIN->set_size_request(aSize.Width(), aSize.Height()); + m_sChangeAddress = m_xDifferentlist->get_label(); + m_sDocument = m_xDocumentIndexFI->get_label(); + + m_sCurrentAddress = m_xCurrentAddressFI->get_label(); + m_xAddressListPB->connect_clicked(LINK(this, SwMailMergeAddressBlockPage, AddressListHdl_Impl)); + m_xSettingsPB->connect_clicked(LINK(this, SwMailMergeAddressBlockPage, SettingsHdl_Impl)); + m_xAssignPB->connect_clicked(LINK(this, SwMailMergeAddressBlockPage, AssignHdl_Impl )); + m_xAddressCB->connect_toggled(LINK(this, SwMailMergeAddressBlockPage, AddressBlockHdl_Impl)); + m_xSettings->SetSelectHdl(LINK(this, SwMailMergeAddressBlockPage, AddressBlockSelectHdl_Impl)); + m_xHideEmptyParagraphsCB->connect_toggled(LINK(this, SwMailMergeAddressBlockPage, HideParagraphsHdl_Impl)); + + Link<weld::Button&,void> aLink = LINK(this, SwMailMergeAddressBlockPage, InsertDataHdl_Impl); + m_xPrevSetIB->connect_clicked(aLink); + m_xNextSetIB->connect_clicked(aLink); } SwMailMergeAddressBlockPage::~SwMailMergeAddressBlockPage() @@ -106,21 +106,11 @@ SwMailMergeAddressBlockPage::~SwMailMergeAddressBlockPage() void SwMailMergeAddressBlockPage::dispose() { - m_pAddressListPB.clear(); - m_pCurrentAddressFI.clear(); - m_pStep2.clear(); - m_pStep3.clear(); - m_pStep4.clear(); - m_pSettingsFI.clear(); - m_pAddressCB.clear(); - m_pSettingsWIN.clear(); - m_pSettingsPB.clear(); - m_pHideEmptyParagraphsCB.clear(); - m_pAssignPB.clear(); - m_pPreviewWIN.clear(); - m_pDocumentIndexFI.clear(); - m_pPrevSetIB.clear(); - m_pNextSetIB.clear(); + m_xPreviewWIN.reset(); + m_xSettingsWIN.reset(); + m_xPreview.reset(); + m_xSettings.reset(); + m_pWizard.clear(); vcl::OWizardPage::dispose(); } @@ -136,25 +126,25 @@ void SwMailMergeAddressBlockPage::ActivatePage() bool bIsLetter = rConfigItem.IsOutputToLetter(); //no address block is created for e-Mail - m_pStep2->Show(bIsLetter); - m_pStep3->Show(bIsLetter); - m_pStep4->Show(bIsLetter); + m_xStep2->set_visible(bIsLetter); + m_xStep3->set_visible(bIsLetter); + m_xStep4->set_visible(bIsLetter); if (bIsLetter) { - m_pHideEmptyParagraphsCB->Check( rConfigItem.IsHideEmptyParagraphs() ); - m_pDocumentIndexFI->SetText(m_sDocument.replaceFirst("%1", "1")); + m_xHideEmptyParagraphsCB->set_active( rConfigItem.IsHideEmptyParagraphs() ); + m_xDocumentIndexFI->set_label(m_sDocument.replaceFirst("%1", "1")); - m_pSettingsWIN->Clear(); + m_xSettings->Clear(); const uno::Sequence< OUString> aBlocks = m_pWizard->GetConfigItem().GetAddressBlocks(); for(const auto& rAddress : aBlocks) - m_pSettingsWIN->AddAddress(rAddress); - m_pSettingsWIN->SelectAddress(static_cast<sal_uInt16>(rConfigItem.GetCurrentAddressBlockIndex())); - m_pAddressCB->Check(rConfigItem.IsAddressBlock()); - AddressBlockHdl_Impl(m_pAddressCB); - m_pSettingsWIN->SetLayout(1, 2); - InsertDataHdl_Impl(nullptr); + m_xSettings->AddAddress(rAddress); + m_xSettings->SelectAddress(static_cast<sal_uInt16>(rConfigItem.GetCurrentAddressBlockIndex())); + m_xAddressCB->set_active(rConfigItem.IsAddressBlock()); + AddressBlockHdl_Impl(*m_xAddressCB); + m_xSettings->SetLayout(1, 2); + InsertDataHdl(nullptr); } } @@ -163,7 +153,7 @@ bool SwMailMergeAddressBlockPage::commitPage( ::vcl::WizardTypes::CommitPageReas return ::vcl::WizardTypes::eTravelForward != _eReason || m_pWizard->GetConfigItem().GetResultSet().is(); } -IMPL_LINK_NOARG(SwMailMergeAddressBlockPage, AddressListHdl_Impl, Button*, void) +IMPL_LINK_NOARG(SwMailMergeAddressBlockPage, AddressListHdl_Impl, weld::Button&, void) { try { @@ -178,7 +168,7 @@ IMPL_LINK_NOARG(SwMailMergeAddressBlockPage, AddressListHdl_Impl, Button*, void) aAddrDialog.GetDBData()); OUString sFilter = aAddrDialog.GetFilter(); rConfigItem.SetFilter( sFilter ); - InsertDataHdl_Impl(nullptr); + InsertDataHdl(nullptr); GetWizard()->UpdateRoadmap(); GetWizard()->enableButtons(WizardButtonFlags::NEXT, GetWizard()->isStateEnabled(MM_GREETINGSPAGE)); } @@ -192,39 +182,39 @@ IMPL_LINK_NOARG(SwMailMergeAddressBlockPage, AddressListHdl_Impl, Button*, void) } } -IMPL_LINK_NOARG(SwMailMergeAddressBlockPage, SettingsHdl_Impl, Button*, void) +IMPL_LINK_NOARG(SwMailMergeAddressBlockPage, SettingsHdl_Impl, weld::Button&, void) { SwSelectAddressBlockDialog aDlg(GetFrameWeld(), m_pWizard->GetConfigItem()); SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem(); - aDlg.SetAddressBlocks(rConfig.GetAddressBlocks(), m_pSettingsWIN->GetSelectedAddress()); + aDlg.SetAddressBlocks(rConfig.GetAddressBlocks(), m_xSettings->GetSelectedAddress()); aDlg.SetSettings(rConfig.IsIncludeCountry(), rConfig.GetExcludeCountry()); if (aDlg.run() == RET_OK) { //the dialog provides the selected address at the first position! const uno::Sequence< OUString> aBlocks = aDlg.GetAddressBlocks(); rConfig.SetAddressBlocks(aBlocks); - m_pSettingsWIN->Clear(); + m_xSettings->Clear(); for(const auto& rAddress : aBlocks) - m_pSettingsWIN->AddAddress(rAddress); - m_pSettingsWIN->SelectAddress(0); - m_pSettingsWIN->Invalidate(); // #i40408 + m_xSettings->AddAddress(rAddress); + m_xSettings->SelectAddress(0); + m_xSettings->Invalidate(); // #i40408 rConfig.SetCountrySettings(aDlg.IsIncludeCountry(), aDlg.GetCountry()); - InsertDataHdl_Impl(nullptr); + InsertDataHdl(nullptr); } GetWizard()->UpdateRoadmap(); GetWizard()->enableButtons(WizardButtonFlags::NEXT, GetWizard()->isStateEnabled(MM_GREETINGSPAGE)); } -IMPL_LINK(SwMailMergeAddressBlockPage, AssignHdl_Impl, Button*, pButton, void) +IMPL_LINK_NOARG(SwMailMergeAddressBlockPage, AssignHdl_Impl, weld::Button&, void) { SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem(); - const sal_uInt16 nSel = m_pSettingsWIN->GetSelectedAddress(); + const sal_uInt16 nSel = m_xSettings->GetSelectedAddress(); const uno::Sequence< OUString> aBlocks = rConfigItem.GetAddressBlocks(); - SwAssignFieldsDialog aDlg(pButton->GetFrameWeld(), m_pWizard->GetConfigItem(), aBlocks[nSel], true); + SwAssignFieldsDialog aDlg(m_pWizard->GetFrameWeld(), m_pWizard->GetConfigItem(), aBlocks[nSel], true); if(RET_OK == aDlg.run()) { //preview update - InsertDataHdl_Impl(nullptr); + InsertDataHdl(nullptr); GetWizard()->UpdateRoadmap(); GetWizard()->enableButtons(WizardButtonFlags::NEXT, GetWizard()->isStateEnabled(MM_GREETINGSPAGE)); } @@ -232,44 +222,44 @@ IMPL_LINK(SwMailMergeAddressBlockPage, AssignHdl_Impl, Button*, pButton, void) void SwMailMergeAddressBlockPage::EnableAddressBlock(bool bAll, bool bSelective) { - m_pSettingsFI->Enable(bAll); - m_pAddressCB->Enable(bAll); + m_xSettingsFI->set_sensitive(bAll); + m_xAddressCB->set_sensitive(bAll); bSelective &= bAll; - m_pHideEmptyParagraphsCB->Enable(bSelective); - m_pSettingsWIN->Enable(bSelective); - m_pSettingsPB->Enable(bSelective); - m_pStep3->Enable(bSelective); - m_pStep4->Enable(bSelective); + m_xHideEmptyParagraphsCB->set_sensitive(bSelective); + m_xSettingsWIN->set_sensitive(bSelective); + m_xSettingsPB->set_sensitive(bSelective); + m_xStep3->set_sensitive(bSelective); + m_xStep4->set_sensitive(bSelective); } -IMPL_LINK(SwMailMergeAddressBlockPage, AddressBlockHdl_Impl, Button*, pBox, void) +IMPL_LINK(SwMailMergeAddressBlockPage, AddressBlockHdl_Impl, weld::ToggleButton&, rBox, void) { - EnableAddressBlock(pBox->IsEnabled(), static_cast<CheckBox*>(pBox)->IsChecked()); + EnableAddressBlock(rBox.get_sensitive(), rBox.get_active()); SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem(); - rConfigItem.SetAddressBlock(m_pAddressCB->IsChecked()); + rConfigItem.SetAddressBlock(m_xAddressCB->get_active()); m_pWizard->UpdateRoadmap(); GetWizard()->enableButtons(WizardButtonFlags::NEXT, GetWizard()->isStateEnabled(MM_GREETINGSPAGE)); } IMPL_LINK_NOARG(SwMailMergeAddressBlockPage, AddressBlockSelectHdl_Impl, LinkParamNone*, void) { - const sal_uInt16 nSel = m_pSettingsWIN->GetSelectedAddress(); + const sal_uInt16 nSel = m_xSettings->GetSelectedAddress(); const uno::Sequence< OUString> aBlocks = m_pWizard->GetConfigItem().GetAddressBlocks(); - m_pPreviewWIN->SetAddress(SwAddressPreview::FillData(aBlocks[nSel], + m_xPreview->SetAddress(SwAddressPreview::FillData(aBlocks[nSel], m_pWizard->GetConfigItem())); m_pWizard->GetConfigItem().SetCurrentAddressBlockIndex( nSel ); GetWizard()->UpdateRoadmap(); GetWizard()->enableButtons(WizardButtonFlags::NEXT, GetWizard()->isStateEnabled(MM_GREETINGSPAGE)); } -IMPL_LINK(SwMailMergeAddressBlockPage, HideParagraphsHdl_Impl, Button*, pBox, void) +IMPL_LINK(SwMailMergeAddressBlockPage, HideParagraphsHdl_Impl, weld::ToggleButton&, rBox, void) { SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem(); - rConfigItem.SetHideEmptyParagraphs( static_cast<CheckBox*>(pBox)->IsChecked() ); + rConfigItem.SetHideEmptyParagraphs(rBox.get_active()); } -IMPL_LINK(SwMailMergeAddressBlockPage, InsertDataHdl_Impl, Button*, pButton, void) +void SwMailMergeAddressBlockPage::InsertDataHdl(weld::Button* pButton) { //if no pButton is given, the first set has to be pre-set SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem(); @@ -280,7 +270,7 @@ IMPL_LINK(SwMailMergeAddressBlockPage, InsertDataHdl_Impl, Button*, pButton, voi } else { - bool bNext = pButton == m_pNextSetIB; + bool bNext = pButton == m_xNextSetIB.get(); sal_Int32 nPos = rConfig.GetResultSetPosition(); rConfig.MoveResultSet( bNext ? ++nPos : --nPos); } @@ -295,27 +285,32 @@ IMPL_LINK(SwMailMergeAddressBlockPage, InsertDataHdl_Impl, Button*, pButton, voi else { //if output type is letter - if(m_pSettingsWIN->IsVisible()) + if (m_xSettings->IsVisible()) { //Fill data into preview - const sal_uInt16 nSel = m_pSettingsWIN->GetSelectedAddress(); + const sal_uInt16 nSel = m_xSettings->GetSelectedAddress(); const uno::Sequence< OUString> aBlocks = m_pWizard->GetConfigItem().GetAddressBlocks(); - m_pPreviewWIN->SetAddress(SwAddressPreview::FillData(aBlocks[nSel], rConfig)); + m_xPreview->SetAddress(SwAddressPreview::FillData(aBlocks[nSel], rConfig)); } } - m_pPrevSetIB->Enable(bEnable); - m_pDocumentIndexFI->SetText(m_sDocument.replaceFirst("%1", OUString::number(nPos))); + m_xPrevSetIB->set_sensitive(bEnable); + m_xDocumentIndexFI->set_label(m_sDocument.replaceFirst("%1", OUString::number(nPos))); GetWizard()->enableButtons(WizardButtonFlags::NEXT, GetWizard()->isStateEnabled(MM_GREETINGSPAGE)); bool bHasResultSet = rConfig.GetResultSet().is(); - m_pCurrentAddressFI->Show(bHasResultSet); + m_xCurrentAddressFI->set_visible(bHasResultSet); if(bHasResultSet) { - m_pCurrentAddressFI->SetText(m_sCurrentAddress.replaceFirst("%1", rConfig.GetCurrentDBData().sDataSource)); - m_pAddressListPB->SetText(m_sChangeAddress); + m_xCurrentAddressFI->set_label(m_sCurrentAddress.replaceFirst("%1", rConfig.GetCurrentDBData().sDataSource)); + m_xAddressListPB->set_label(m_sChangeAddress); } - EnableAddressBlock(bHasResultSet, m_pAddressCB->IsChecked()); + EnableAddressBlock(bHasResultSet, m_xAddressCB->get_active()); +} + +IMPL_LINK(SwMailMergeAddressBlockPage, InsertDataHdl_Impl, weld::Button&, rButton, void) +{ + InsertDataHdl(&rButton); } SwSelectAddressBlockDialog::SwSelectAddressBlockDialog(weld::Window* pParent, SwMailMergeConfigItem& rConfig) diff --git a/sw/source/ui/dbui/mmaddressblockpage.hxx b/sw/source/ui/dbui/mmaddressblockpage.hxx index 1bf08e55c2df..8d719ae1aa71 100644 --- a/sw/source/ui/dbui/mmaddressblockpage.hxx +++ b/sw/source/ui/dbui/mmaddressblockpage.hxx @@ -34,39 +34,46 @@ class SwMailMergeConfigItem; class SwMailMergeAddressBlockPage : public vcl::OWizardPage { - VclPtr<PushButton> m_pAddressListPB; - VclPtr<FixedText> m_pCurrentAddressFI; + OUString m_sDocument; + OUString m_sCurrentAddress; + OUString m_sChangeAddress; - VclPtr<VclContainer> m_pStep2; - VclPtr<VclContainer> m_pStep3; - VclPtr<VclContainer> m_pStep4; + VclPtr<SwMailMergeWizard> m_pWizard; - VclPtr<FixedText> m_pSettingsFI; - VclPtr<CheckBox> m_pAddressCB; - VclPtr<SwAddressPreview> m_pSettingsWIN; - VclPtr<PushButton> m_pSettingsPB; - VclPtr<CheckBox> m_pHideEmptyParagraphsCB; + std::unique_ptr<weld::Button> m_xAddressListPB; + std::unique_ptr<weld::Label> m_xCurrentAddressFI; - VclPtr<PushButton> m_pAssignPB; + std::unique_ptr<weld::Container> m_xStep2; + std::unique_ptr<weld::Container> m_xStep3; + std::unique_ptr<weld::Container> m_xStep4; - VclPtr<SwAddressPreview> m_pPreviewWIN; - VclPtr<FixedText> m_pDocumentIndexFI; - VclPtr<PushButton> m_pPrevSetIB; - VclPtr<PushButton> m_pNextSetIB; + std::unique_ptr<weld::Label> m_xSettingsFI; + std::unique_ptr<weld::CheckButton> m_xAddressCB; + std::unique_ptr<weld::Button> m_xSettingsPB; + std::unique_ptr<weld::CheckButton> m_xHideEmptyParagraphsCB; - OUString m_sDocument; - OUString m_sCurrentAddress; - OUString m_sChangeAddress; + std::unique_ptr<weld::Button> m_xAssignPB; - VclPtr<SwMailMergeWizard> m_pWizard; + std::unique_ptr<weld::Label> m_xDocumentIndexFI; + std::unique_ptr<weld::Button> m_xPrevSetIB; + std::unique_ptr<weld::Button> m_xNextSetIB; + + std::unique_ptr<weld::Label> m_xDifferentlist; + + std::unique_ptr<AddressPreview> m_xSettings; + std::unique_ptr<AddressPreview> m_xPreview; + std::unique_ptr<weld::CustomWeld> m_xSettingsWIN; + std::unique_ptr<weld::CustomWeld> m_xPreviewWIN; + + void InsertDataHdl(weld::Button* pButton); - DECL_LINK(AddressListHdl_Impl, Button *, void); - DECL_LINK(SettingsHdl_Impl, Button*, void); - DECL_LINK(AssignHdl_Impl, Button*, void); - DECL_LINK(AddressBlockHdl_Impl, Button*, void); - DECL_LINK(InsertDataHdl_Impl, Button*, void); + DECL_LINK(AddressListHdl_Impl, weld::Button&, void); + DECL_LINK(SettingsHdl_Impl, weld::Button&, void); + DECL_LINK(AssignHdl_Impl, weld::Button&, void); + DECL_LINK(AddressBlockHdl_Impl, weld::ToggleButton&, void); + DECL_LINK(InsertDataHdl_Impl, weld::Button&, void); DECL_LINK(AddressBlockSelectHdl_Impl, LinkParamNone*, void); - DECL_LINK(HideParagraphsHdl_Impl, Button*, void); + DECL_LINK(HideParagraphsHdl_Impl, weld::ToggleButton&, void); void EnableAddressBlock(bool bAll, bool bSelective); @@ -75,7 +82,7 @@ class SwMailMergeAddressBlockPage : public vcl::OWizardPage virtual bool canAdvance() const override; public: - SwMailMergeAddressBlockPage(SwMailMergeWizard* _pParent); + SwMailMergeAddressBlockPage(SwMailMergeWizard* pWizard, TabPageParent pParent); virtual ~SwMailMergeAddressBlockPage() override; virtual void dispose() override; SwMailMergeWizard* GetWizard() { return m_pWizard; } diff --git a/sw/source/uibase/dbui/mailmergehelper.cxx b/sw/source/uibase/dbui/mailmergehelper.cxx index f65eb9c96620..bbf60a49dd63 100644 --- a/sw/source/uibase/dbui/mailmergehelper.cxx +++ b/sw/source/uibase/dbui/mailmergehelper.cxx @@ -573,6 +573,13 @@ void AddressPreview::SelectAddress(sal_uInt16 nSelect) m_xVScrollBar->vadjustment_set_value(nSelectRow); } +void AddressPreview::Clear() +{ + pImpl->aAddresses.clear(); + pImpl->nSelectedAddress = 0; + UpdateScrollBar(); +} + void AddressPreview::ReplaceSelectedAddress(const OUString& rNew) { pImpl->aAddresses[pImpl->nSelectedAddress] = rNew; @@ -683,6 +690,7 @@ bool AddressPreview::MouseButtonDown( const MouseEvent& rMEvt ) pImpl->nSelectedAddress != static_cast<sal_uInt16>(nSelect)) { pImpl->nSelectedAddress = static_cast<sal_uInt16>(nSelect); + m_aSelectHdl.Call(nullptr); } Invalidate(); } @@ -726,6 +734,7 @@ bool AddressPreview::KeyInput( const KeyEvent& rKEvt ) pImpl->nSelectedAddress != static_cast<sal_uInt16>(nSelect)) { pImpl->nSelectedAddress = static_cast<sal_uInt16>(nSelect); + m_aSelectHdl.Call(nullptr); Invalidate(); } } diff --git a/sw/source/uibase/inc/mailmergehelper.hxx b/sw/source/uibase/inc/mailmergehelper.hxx index f93161a7108c..ae356c0b844d 100644 --- a/sw/source/uibase/inc/mailmergehelper.hxx +++ b/sw/source/uibase/inc/mailmergehelper.hxx @@ -113,6 +113,7 @@ class SW_DLLPUBLIC AddressPreview : public weld::CustomWidgetController { std::unique_ptr<SwAddressPreview_Impl> pImpl; std::unique_ptr<weld::ScrolledWindow> m_xVScrollBar; + Link<LinkParamNone*,void> m_aSelectHdl; void DrawText_Impl(vcl::RenderContext& rRenderContext, const OUString& rAddress, const Point& rTopLeft, const Size& rSize, bool bIsSelected); @@ -138,6 +139,8 @@ public: void AddAddress(const OUString& rAddress); // for preview mode - replaces the currently used address by the given one void SetAddress(const OUString& rAddress); + // removes all addresses + void Clear(); // returns the selected address sal_uInt16 GetSelectedAddress() const; @@ -148,6 +151,8 @@ public: // set the number of rows and columns of addresses void SetLayout(sal_uInt16 nRows, sal_uInt16 nColumns); void EnableScrollBar(); + + void SetSelectHdl (const Link<LinkParamNone*,void>& rLink) { m_aSelectHdl = rLink; } }; diff --git a/sw/uiconfig/swriter/ui/mmaddressblockpage.ui b/sw/uiconfig/swriter/ui/mmaddressblockpage.ui index 643f5b737ec9..ebecf2aad090 100644 --- a/sw/uiconfig/swriter/ui/mmaddressblockpage.ui +++ b/sw/uiconfig/swriter/ui/mmaddressblockpage.ui @@ -319,11 +319,27 @@ </packing> </child> <child> - <object class="swlo-SwAddressPreview" id="settingspreview:border"> + <object class="GtkScrolledWindow" id="settingspreviewwin"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="hexpand">True</property> <property name="vexpand">True</property> + <property name="hscrollbar_policy">never</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkViewport"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkDrawingArea" id="settingspreview"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + </object> + </child> + </object> + </child> </object> <packing> <property name="left_attach">0</property> @@ -397,11 +413,27 @@ <property name="vexpand">True</property> <property name="row_spacing">6</property> <child> - <object class="swlo-SwAddressPreview" id="addresspreview:border"> + <object class="GtkScrolledWindow" id="addresspreviewwin"> <property name="visible">True</property> - <property name="can_focus">True</property> + <property name="can_focus">False</property> <property name="hexpand">True</property> <property name="vexpand">True</property> + <property name="hscrollbar_policy">never</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkViewport"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkDrawingArea" id="addresspreview"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + </object> + </child> + </object> + </child> </object> <packing> <property name="left_attach">0</property> |