diff options
author | Gülşah Köse <gulsah.kose@collabora.com> | 2020-06-14 19:21:22 +0300 |
---|---|---|
committer | Gülşah Köse <gulsah.kose@collabora.com> | 2020-06-15 09:30:47 +0200 |
commit | aa96436c6eeeca9004b6c72282a8cfe9cf8c9eb3 (patch) | |
tree | a4a949ea3c859c6a6c58f81e166e6d5a83e1f8a1 /sw/source | |
parent | 360adf267b923d263adc536ab542320538609b4e (diff) |
Add an option to send email encrypted PDF files via mailmerge.
Change-Id: I002e054b685bd3367c4183014adc1dbd0843a365
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96303
Reviewed-by: Gülşah Köse <gulsah.kose@collabora.com>
Tested-by: Gülşah Köse <gulsah.kose@collabora.com>
Diffstat (limited to 'sw/source')
-rw-r--r-- | sw/source/ui/dbui/mmresultdialogs.cxx | 80 | ||||
-rw-r--r-- | sw/source/ui/inc/mmresultdialogs.hxx | 4 |
2 files changed, 78 insertions, 6 deletions
diff --git a/sw/source/ui/dbui/mmresultdialogs.cxx b/sw/source/ui/dbui/mmresultdialogs.cxx index 2702afde2b17..8c812c0b4b8f 100644 --- a/sw/source/ui/dbui/mmresultdialogs.cxx +++ b/sw/source/ui/dbui/mmresultdialogs.cxx @@ -322,6 +322,9 @@ SwMMResultEmailDialog::SwMMResultEmailDialog(weld::Window* pParent) , m_xSendAsPB(m_xBuilder->weld_button("sendassettings")) , m_xAttachmentGroup(m_xBuilder->weld_widget("attachgroup")) , m_xAttachmentED(m_xBuilder->weld_entry("attach")) + , m_xPasswordFT(m_xBuilder->weld_label("passwordft")) + , m_xPasswordLB(m_xBuilder->weld_combo_box("password")) + , m_xPasswordCB(m_xBuilder->weld_check_button("passwordcb")) , m_xSendAllRB(m_xBuilder->weld_radio_button("sendallrb")) , m_xFromRB(m_xBuilder->weld_radio_button("fromrb")) , m_xFromNF(m_xBuilder->weld_spin_button("from")) @@ -332,6 +335,7 @@ SwMMResultEmailDialog::SwMMResultEmailDialog(weld::Window* pParent) m_xCopyToPB->connect_clicked(LINK(this, SwMMResultEmailDialog, CopyToHdl_Impl)); m_xSendAsPB->connect_clicked(LINK(this, SwMMResultEmailDialog, SendAsHdl_Impl)); m_xSendAsLB->connect_changed(LINK(this, SwMMResultEmailDialog, SendTypeHdl_Impl)); + m_xPasswordCB->connect_toggled( LINK( this, SwMMResultEmailDialog, CheckHdl )); Link<weld::ToggleButton&,void> aLink = LINK(this, SwMMResultEmailDialog, DocumentSelectionHdl_Impl); m_xSendAllRB->connect_toggled(aLink); @@ -341,6 +345,10 @@ SwMMResultEmailDialog::SwMMResultEmailDialog(weld::Window* pParent) m_xOKButton->connect_clicked(LINK(this, SwMMResultEmailDialog, SendDocumentsHdl_Impl)); + m_xPasswordCB->hide(); + m_xPasswordFT->hide(); + m_xPasswordLB->hide(); + FillInEmailSettings(); } @@ -416,12 +424,18 @@ void SwMMResultEmailDialog::FillInEmailSettings() if (xColAccess.is()) aFields = xColAccess->getElementNames(); - // fill mail address ListBox + // fill mail address and password ListBox assert(m_xMailToLB->get_count() == 0); + assert(m_xPasswordLB->get_count() == 0); for (const OUString& rField : std::as_const(aFields)) + { m_xMailToLB->append_text(rField); + m_xPasswordLB->append_text(rField); + } m_xMailToLB->set_active(0); + m_xPasswordLB->set_active(0); + // then select the right one - may not be available const std::vector<std::pair<OUString, int>>& rHeaders = xConfigItem->GetDefaultAddressHeaders(); OUString sEMailColumn = rHeaders[MM_PART_E_MAIL].first; @@ -448,6 +462,14 @@ IMPL_LINK_NOARG(SwMMResultSaveDialog, DocumentSelectionHdl_Impl, weld::ToggleBut m_xToNF->set_sensitive(bEnableFromTo); } +IMPL_LINK_NOARG(SwMMResultEmailDialog, CheckHdl, weld::ToggleButton&, void) +{ + bool bEnable = m_xPasswordCB->get_active(); + + m_xPasswordFT->set_sensitive(bEnable); + m_xPasswordLB->set_sensitive(bEnable); +} + IMPL_LINK_NOARG(SwMMResultPrintDialog, DocumentSelectionHdl_Impl, weld::ToggleButton&, void) { bool bEnableFromTo = m_xFromRB->get_active(); @@ -814,6 +836,7 @@ IMPL_LINK(SwMMResultEmailDialog, SendTypeHdl_Impl, weld::ComboBox&, rBox, void) { auto nDocType = rBox.get_active_id().toUInt32(); bool bEnable = MM_DOCTYPE_HTML != nDocType && MM_DOCTYPE_TEXT != nDocType; + bool bIsPDF = nDocType == MM_DOCTYPE_PDF; m_xSendAsPB->set_sensitive(bEnable); m_xAttachmentGroup->set_sensitive(bEnable); if(bEnable) @@ -833,6 +856,21 @@ IMPL_LINK(SwMMResultEmailDialog, SendTypeHdl_Impl, weld::ComboBox&, rBox, void) m_xAttachmentED->set_text(sAttach); } } + + if(bIsPDF) + { + m_xPasswordCB->show(); + m_xPasswordFT->show(); + m_xPasswordLB->show(); + CheckHdl(*m_xPasswordCB); + } + else + { + m_xPasswordCB->hide(); + m_xPasswordFT->hide(); + m_xPasswordLB->hide(); + + } } IMPL_LINK_NOARG(SwMMResultEmailDialog, SendAsHdl_Impl, weld::Button&, void) @@ -995,6 +1033,7 @@ IMPL_LINK_NOARG(SwMMResultEmailDialog, SendDocumentsHdl_Impl, weld::Button&, voi else return; // back to the dialog } + OUString sEMailColumn = m_xMailToLB->get_active_text(); OSL_ENSURE( !sEMailColumn.isEmpty(), "No email column selected"); Reference< sdbcx::XColumnsSupplier > xColsSupp( xConfigItem->GetResultSet(), UNO_QUERY); @@ -1005,6 +1044,14 @@ IMPL_LINK_NOARG(SwMMResultEmailDialog, SendDocumentsHdl_Impl, weld::Button&, voi return; } + OUString sPasswordColumn = m_xPasswordLB->get_active_text(); + OSL_ENSURE( !sPasswordColumn.isEmpty(), "No password column selected"); + if(sPasswordColumn.isEmpty() || !xColAccess.is() || !xColAccess->hasByName(sPasswordColumn)) + { + m_xDialog->response(RET_OK); + return; + } + OUString sFilterOptions; if(MM_DOCTYPE_TEXT == nDocType) { @@ -1082,14 +1129,35 @@ IMPL_LINK_NOARG(SwMMResultEmailDialog, SendDocumentsHdl_Impl, weld::Button&, voi { bool withFilterOptions = MM_DOCTYPE_TEXT == nDocType || MM_DOCTYPE_HTML == nDocType; - uno::Sequence< beans::PropertyValue > aFilterValues(withFilterOptions ? 2 : 1); + bool withPasswordOptions = m_xPasswordCB->get_active(); + + sal_Int32 nTarget = xConfigItem->MoveResultSet(rInfo.nDBRow); + OSL_ENSURE( nTarget == rInfo.nDBRow, "row of current document could not be selected"); + OUString sPassword = lcl_GetColumnValueOf(sPasswordColumn, xColAccess); + + sal_Int32 nOptionCount = (withFilterOptions && withPasswordOptions) ? 4 : withPasswordOptions ? 3 : withFilterOptions ? 2 : 1; + sal_Int32 nOpt = 0; + uno::Sequence< beans::PropertyValue > aFilterValues(nOptionCount); beans::PropertyValue* pFilterValues = aFilterValues.getArray(); - pFilterValues[0].Name = "FilterName"; - pFilterValues[0].Value <<= pSfxFlt->GetFilterName(); + + pFilterValues[nOpt].Name = "FilterName"; + pFilterValues[nOpt].Value <<= pSfxFlt->GetFilterName(); + if(withFilterOptions) { - pFilterValues[1].Name = "FilterOptions"; - pFilterValues[1].Value <<= sFilterOptions; + nOpt++; + pFilterValues[nOpt].Name = "FilterOptions"; + pFilterValues[nOpt].Value <<= sFilterOptions; + } + + if(withPasswordOptions) + { + nOpt++; + pFilterValues[nOpt].Name = "EncryptFile"; + pFilterValues[nOpt].Value <<= true; + nOpt++; + pFilterValues[nOpt].Name = "DocumentOpenPassword"; + pFilterValues[nOpt].Value <<= sPassword; } uno::Reference< frame::XStorable > xTempStore( pTempView->GetDocShell()->GetModel(), uno::UNO_QUERY); diff --git a/sw/source/ui/inc/mmresultdialogs.hxx b/sw/source/ui/inc/mmresultdialogs.hxx index 4db8e0e766f4..8c28383f7345 100644 --- a/sw/source/ui/inc/mmresultdialogs.hxx +++ b/sw/source/ui/inc/mmresultdialogs.hxx @@ -97,6 +97,9 @@ class SwMMResultEmailDialog : public SfxDialogController std::unique_ptr<weld::Button> m_xSendAsPB; std::unique_ptr<weld::Widget> m_xAttachmentGroup; std::unique_ptr<weld::Entry> m_xAttachmentED; + std::unique_ptr<weld::Label> m_xPasswordFT; + std::unique_ptr<weld::ComboBox> m_xPasswordLB; + std::unique_ptr<weld::CheckButton> m_xPasswordCB; std::unique_ptr<weld::RadioButton> m_xSendAllRB; std::unique_ptr<weld::RadioButton> m_xFromRB; std::unique_ptr<weld::SpinButton> m_xFromNF; @@ -109,6 +112,7 @@ class SwMMResultEmailDialog : public SfxDialogController DECL_LINK(SendAsHdl_Impl, weld::Button&, void); DECL_LINK(SendDocumentsHdl_Impl, weld::Button&, void); DECL_LINK(DocumentSelectionHdl_Impl, weld::ToggleButton&, void); + DECL_LINK(CheckHdl, weld::ToggleButton&, void ); void FillInEmailSettings(); |