vcl/inc/jsdialog/jsdialogbuilder.hxx | 9 +++++++ vcl/jsdialog/jsdialogbuilder.cxx | 44 +++++++++++++++++++++++------------ 2 files changed, 38 insertions(+), 15 deletions(-)
New commits: commit afeaa3394ecaa913a409a12d5a67b27eb9596405 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Wed Oct 20 10:59:12 2021 +0200 Commit: Szymon Kłos <szymon.k...@collabora.com> CommitDate: Fri Oct 29 10:23:17 2021 +0200 jsdialog: weld Image widget Change-Id: Iaf900da5d6256b1aa441dc0dad07ba967f88b085 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124224 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx index a6b8021a50b4..d826e6625606 100644 --- a/vcl/inc/jsdialog/jsdialogbuilder.hxx +++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx @@ -259,6 +259,8 @@ public: bool bTakeOwnership = false) override; virtual std::unique_ptr<weld::RadioButton> weld_radio_button(const OString& id, bool bTakeOwnership = false) override; + virtual std::unique_ptr<weld::Image> weld_image(const OString& id, + bool bTakeOwnership = false) override; static weld::MessageDialog* CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType, @@ -597,4 +599,11 @@ public: virtual void set_active(bool active) override; }; +class JSImage : public JSWidget<SalInstanceImage, FixedImage> +{ +public: + JSImage(JSDialogSender* pSender, FixedImage* pImage, SalInstanceBuilder* pBuilder, + bool bTakeOwnership); +}; + /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx index b102b557002f..56163a3e377d 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -520,7 +520,8 @@ void JSInstanceBuilder::RememberWidget(const OString& id, weld::Widget* pWidget) } } -void JSInstanceBuilder::AddChildWidget(sal_uInt64 nWindowId, const OString& id, weld::Widget* pWidget) +void JSInstanceBuilder::AddChildWidget(sal_uInt64 nWindowId, const OString& id, + weld::Widget* pWidget) { auto it = GetLOKWeldWidgetsMap().find(nWindowId); if (it != GetLOKWeldWidgetsMap().end()) @@ -807,6 +808,19 @@ std::unique_ptr<weld::RadioButton> JSInstanceBuilder::weld_radio_button(const OS return pWeldWidget; } +std::unique_ptr<weld::Image> JSInstanceBuilder::weld_image(const OString& id, bool bTakeOwnership) +{ + FixedImage* pImage = m_xBuilder->get<FixedImage>(id); + + auto pWeldWidget + = pImage ? std::make_unique<JSImage>(this, pImage, this, bTakeOwnership) : nullptr; + + if (pWeldWidget) + RememberWidget(id, pWeldWidget.get()); + + return pWeldWidget; +} + weld::MessageDialog* JSInstanceBuilder::CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType, VclButtonsType eButtonType, @@ -1023,21 +1037,21 @@ JSMessageDialog::JSMessageDialog(::MessageDialog* pDialog, SalInstanceBuilder* p if (!pBuilder) { - if(::OKButton* pOKBtn = dynamic_cast<::OKButton*>(m_xMessageDialog->get_widget_for_response(RET_OK))) + if (::OKButton* pOKBtn + = dynamic_cast<::OKButton*>(m_xMessageDialog->get_widget_for_response(RET_OK))) { m_pOK.reset(new JSButton(m_pSender, pOKBtn, nullptr, false)); JSInstanceBuilder::AddChildWidget(m_xMessageDialog->GetLOKWindowId(), - pOKBtn->get_id().toUtf8(), - m_pOK.get()); + pOKBtn->get_id().toUtf8(), m_pOK.get()); m_pOK->connect_clicked(LINK(this, JSMessageDialog, OKHdl)); } - if(::CancelButton* pCancelBtn = dynamic_cast<::CancelButton*>(m_xMessageDialog->get_widget_for_response(RET_CANCEL))) + if (::CancelButton* pCancelBtn + = dynamic_cast<::CancelButton*>(m_xMessageDialog->get_widget_for_response(RET_CANCEL))) { m_pCancel.reset(new JSButton(m_pSender, pCancelBtn, nullptr, false)); JSInstanceBuilder::AddChildWidget(m_xMessageDialog->GetLOKWindowId(), - pCancelBtn->get_id().toUtf8(), - m_pCancel.get()); + pCancelBtn->get_id().toUtf8(), m_pCancel.get()); m_pCancel->connect_clicked(LINK(this, JSMessageDialog, CancelHdl)); } } @@ -1049,15 +1063,9 @@ JSMessageDialog::~JSMessageDialog() JSInstanceBuilder::RemoveWindowWidget(m_xMessageDialog->GetLOKWindowId()); } -IMPL_LINK_NOARG(JSMessageDialog, OKHdl, weld::Button&, void) -{ - response(RET_OK); -} +IMPL_LINK_NOARG(JSMessageDialog, OKHdl, weld::Button&, void) { response(RET_OK); } -IMPL_LINK_NOARG(JSMessageDialog, CancelHdl, weld::Button&, void) -{ - response(RET_CANCEL); -} +IMPL_LINK_NOARG(JSMessageDialog, CancelHdl, weld::Button&, void) { response(RET_CANCEL); } void JSMessageDialog::set_primary_text(const OUString& rText) { @@ -1334,4 +1342,10 @@ void JSRadioButton::set_active(bool active) sendUpdate(); } +JSImage::JSImage(JSDialogSender* pSender, FixedImage* pImage, SalInstanceBuilder* pBuilder, + bool bTakeOwnership) + : JSWidget<SalInstanceImage, FixedImage>(pSender, pImage, pBuilder, bTakeOwnership) +{ +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */