diff options
Diffstat (limited to 'svx/source/form/tbxform.cxx')
-rw-r--r-- | svx/source/form/tbxform.cxx | 94 |
1 files changed, 58 insertions, 36 deletions
diff --git a/svx/source/form/tbxform.cxx b/svx/source/form/tbxform.cxx index ab80e13aa4ba..94e00643b897 100644 --- a/svx/source/form/tbxform.cxx +++ b/svx/source/form/tbxform.cxx @@ -21,14 +21,13 @@ #include <svl/intitem.hxx> #include <svl/eitem.hxx> #include <svl/stritem.hxx> +#include <sfx2/InterimItemWindow.hxx> #include <sfx2/dispatch.hxx> #include <vcl/event.hxx> #include <vcl/toolbox.hxx> -#include <vcl/fixed.hxx> #include <vcl/settings.hxx> #include <formtoolbars.hxx> - #include <svx/dialmgr.hxx> #include <svx/svxids.hrc> #include <svx/strings.hrc> @@ -143,23 +142,57 @@ SFX_IMPL_TOOLBOX_CONTROL( SvxFmTbxCtlRecText, SfxBoolItem ); SvxFmTbxCtlRecText::SvxFmTbxCtlRecText( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) :SfxToolBoxControl( nSlotId, nId, rTbx ) { + rTbx.SetItemWindowNonInteractive(nId, true); } SvxFmTbxCtlRecText::~SvxFmTbxCtlRecText() { } +class LabelItemWindow final : public InterimItemWindow +{ +private: + std::unique_ptr<weld::Label> m_xLabel; +public: + LabelItemWindow(vcl::Window *pParent, const OUString& rLabel) + : InterimItemWindow(pParent, "svx/ui/labelbox.ui", "LabelBox") + , m_xLabel(m_xBuilder->weld_label("label")) + { + m_xLabel->set_label(rLabel); + Size aSize(m_xLabel->get_preferred_size()); + aSize.AdjustWidth(12); + m_xLabel->set_size_request(aSize.Width(), -1); + + SetSizePixel(m_xLabel->get_preferred_size()); + + m_xLabel->set_toolbar_background(); + } + + void set_label(const OUString& rLabel) + { + m_xLabel->set_label(rLabel); + } + + virtual void dispose() override + { + m_xLabel.reset(); + InterimItemWindow::dispose(); + } + + virtual ~LabelItemWindow() override + { + disposeOnce(); + } +}; + VclPtr<vcl::Window> SvxFmTbxCtlRecText::CreateItemWindow( vcl::Window* pParent ) { OUString aText(SvxResId(RID_STR_REC_TEXT)); - VclPtrInstance<FixedText> pFixedText( pParent ); - Size aSize( pFixedText->GetTextWidth( aText ), pFixedText->GetTextHeight( ) ); - pFixedText->SetText( aText ); - aSize.AdjustWidth(6 ); - pFixedText->SetSizePixel( aSize ); - pFixedText->SetBackground(Wallpaper(COL_TRANSPARENT)); - - return pFixedText; + VclPtrInstance<LabelItemWindow> xFixedText(pParent, aText); + + xFixedText->Show(); + + return xFixedText; } SFX_IMPL_TOOLBOX_CONTROL( SvxFmTbxCtlRecFromText, SfxBoolItem ); @@ -167,57 +200,48 @@ SFX_IMPL_TOOLBOX_CONTROL( SvxFmTbxCtlRecFromText, SfxBoolItem ); SvxFmTbxCtlRecFromText::SvxFmTbxCtlRecFromText( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) :SfxToolBoxControl( nSlotId, nId, rTbx ) { + rTbx.SetItemWindowNonInteractive(nId, true); } - SvxFmTbxCtlRecFromText::~SvxFmTbxCtlRecFromText() { } - VclPtr<vcl::Window> SvxFmTbxCtlRecFromText::CreateItemWindow( vcl::Window* pParent ) { OUString aText(SvxResId(RID_STR_REC_FROM_TEXT)); - VclPtrInstance<FixedText> pFixedText( pParent, WB_CENTER ); - Size aSize( pFixedText->GetTextWidth( aText ), pFixedText->GetTextHeight( ) ); - aSize.AdjustWidth(12 ); - pFixedText->SetText( aText ); - pFixedText->SetSizePixel( aSize ); - pFixedText->SetBackground(Wallpaper(COL_TRANSPARENT)); - return pFixedText.get(); + VclPtrInstance<LabelItemWindow> xFixedText(pParent, aText); + + xFixedText->Show(); + + return xFixedText; } SFX_IMPL_TOOLBOX_CONTROL( SvxFmTbxCtlRecTotal, SfxStringItem ); - SvxFmTbxCtlRecTotal::SvxFmTbxCtlRecTotal( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) - :SfxToolBoxControl( nSlotId, nId, rTbx ) - ,pFixedText( nullptr ) + : SfxToolBoxControl( nSlotId, nId, rTbx ) { + rTbx.SetItemWindowNonInteractive(nId, true); } - SvxFmTbxCtlRecTotal::~SvxFmTbxCtlRecTotal() { } - VclPtr<vcl::Window> SvxFmTbxCtlRecTotal::CreateItemWindow( vcl::Window* pParent ) { - pFixedText.reset(VclPtr<FixedText>::Create( pParent )); OUString const aSample("123456"); - Size aSize( pFixedText->GetTextWidth( aSample ), pFixedText->GetTextHeight( ) ); - aSize.AdjustWidth(12 ); - pFixedText->SetSizePixel( aSize ); - pFixedText->SetBackground(); - pFixedText->SetPaintTransparent(true); - return pFixedText; -} + m_xFixedText.reset(VclPtr<LabelItemWindow>::Create(pParent, aSample)); + m_xFixedText->set_label(""); + m_xFixedText->Show(); + + return m_xFixedText; +} void SvxFmTbxCtlRecTotal::StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ) { - // setting the FixedText if (GetSlotId() != SID_FM_RECORD_TOTAL) return; @@ -228,9 +252,7 @@ void SvxFmTbxCtlRecTotal::StateChanged( sal_uInt16 nSID, SfxItemState eState, co else aText = "?"; - pFixedText->SetText( aText ); - pFixedText->Update(); - pFixedText->Flush(); + m_xFixedText->set_label(aText); SfxToolBoxControl::StateChanged( nSID, eState,pState ); } |