From 3d2be32a12708e43158f2a490bde24aae8f11f9e Mon Sep 17 00:00:00 2001 From: Szymon Kłos Date: Wed, 4 Mar 2020 16:05:10 +0100 Subject: jsdialog: refresh on notebook changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I81159d043add3d8bdd1b81f26f642f99c1430f73 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94183 Tested-by: Jenkins CollaboraOffice Reviewed-by: Szymon Kłos --- vcl/inc/jsdialog/jsdialogbuilder.hxx | 17 +++++++++++++++ vcl/inc/salvtables.hxx | 2 +- vcl/jsdialog/jsdialogbuilder.cxx | 40 ++++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx index 24b1ef7808c1..0104756b7b55 100644 --- a/vcl/inc/jsdialog/jsdialogbuilder.hxx +++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx @@ -37,6 +37,8 @@ public: bool bTakeOwnership = false) override; virtual std::unique_ptr weld_combo_box(const OString& id, bool bTakeOwnership = false) override; + virtual std::unique_ptr weld_notebook(const OString& id, + bool bTakeOwnership = false) override; }; template @@ -113,4 +115,19 @@ public: virtual void set_entry_text(const OUString& rText) override; }; +class VCL_DLLPUBLIC JSNotebook : public JSWidget +{ +public: + JSNotebook(VclPtr aOwnedToplevel, ::TabControl* pControl, + SalInstanceBuilder* pBuilder, bool bTakeOwnership); + + virtual void set_current_page(int nPage) override; + + virtual void set_current_page(const OString& rIdent) override; + + virtual void remove_page(const OString& rIdent) override; + + virtual void append_page(const OString& rIdent, const OUString& rLabel) override; +}; + #endif \ No newline at end of file diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx index b308f5f8bc8c..6222423551bc 100644 --- a/vcl/inc/salvtables.hxx +++ b/vcl/inc/salvtables.hxx @@ -869,7 +869,7 @@ class SalInstanceNotebook : public SalInstanceContainer, public virtual weld::No { private: VclPtr m_xNotebook; - mutable std::vector> m_aPages; + mutable std::vector> m_aPages; std::vector> m_aAddedPages; std::vector> m_aAddedGrids; diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx index a9465a4de5bb..64f78c295bed 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -91,6 +91,15 @@ std::unique_ptr JSInstanceBuilder::weld_combo_box(const OString& : nullptr; } +std::unique_ptr JSInstanceBuilder::weld_notebook(const OString& id, + bool bTakeOwnership) +{ + TabControl* pNotebook = m_xBuilder->get(id); + return pNotebook + ? std::make_unique(m_aOwnedToplevel, pNotebook, this, bTakeOwnership) + : nullptr; +} + JSLabel::JSLabel(VclPtr aOwnedToplevel, FixedText* pLabel, SalInstanceBuilder* pBuilder, bool bTakeOwnership) : JSWidget(aOwnedToplevel, pLabel, pBuilder, bTakeOwnership) @@ -166,3 +175,34 @@ void JSComboBox::set_entry_text(const OUString& rText) SalInstanceComboBoxWithEdit::set_entry_text(rText); notifyDialogState(); } + +JSNotebook::JSNotebook(VclPtr aOwnedToplevel, ::TabControl* pControl, + SalInstanceBuilder* pBuilder, bool bTakeOwnership) + : JSWidget(aOwnedToplevel, pControl, pBuilder, + bTakeOwnership) +{ +} + +void JSNotebook::set_current_page(int nPage) +{ + SalInstanceNotebook::set_current_page(nPage); + notifyDialogState(); +} + +void JSNotebook::set_current_page(const OString& rIdent) +{ + SalInstanceNotebook::set_current_page(rIdent); + notifyDialogState(); +} + +void JSNotebook::remove_page(const OString& rIdent) +{ + SalInstanceNotebook::remove_page(rIdent); + notifyDialogState(); +} + +void JSNotebook::append_page(const OString& rIdent, const OUString& rLabel) +{ + SalInstanceNotebook::append_page(rIdent, rLabel); + notifyDialogState(); +} -- cgit