diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-07-09 20:16:22 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-07-12 18:16:22 +0200 |
commit | 8328d84a0ce8c1b9592ce0dbab17dbbecc423b3c (patch) | |
tree | b25fd10fd460280b1e03d5057dffde1e95cf0bb8 /svtools | |
parent | 1663b961ce2f9f109ad7634f165445f9ea785db3 (diff) |
weld CheckBoxControl
Change-Id: Iea057189ab17c1fdaf6663f1c328b9d288d97a18
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98532
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'svtools')
-rw-r--r-- | svtools/UIConfig_svt.mk | 1 | ||||
-rw-r--r-- | svtools/source/brwbox/ebbcontrols.cxx | 117 | ||||
-rw-r--r-- | svtools/source/brwbox/editbrowsebox.cxx | 30 | ||||
-rw-r--r-- | svtools/uiconfig/ui/checkboxcontrol.ui | 30 |
4 files changed, 74 insertions, 104 deletions
diff --git a/svtools/UIConfig_svt.mk b/svtools/UIConfig_svt.mk index 4b7cbecf4e75..d11f9ff97509 100644 --- a/svtools/UIConfig_svt.mk +++ b/svtools/UIConfig_svt.mk @@ -12,6 +12,7 @@ $(eval $(call gb_UIConfig_UIConfig,svt)) $(eval $(call gb_UIConfig_add_uifiles,svt,\ svtools/uiconfig/ui/addresstemplatedialog \ svtools/uiconfig/ui/calendar \ + svtools/uiconfig/ui/checkboxcontrol \ svtools/uiconfig/ui/combocontrol \ svtools/uiconfig/ui/datewindow \ svtools/uiconfig/ui/editcontrol \ diff --git a/svtools/source/brwbox/ebbcontrols.cxx b/svtools/source/brwbox/ebbcontrols.cxx index fc96e14e4de4..911063b82d4e 100644 --- a/svtools/source/brwbox/ebbcontrols.cxx +++ b/svtools/source/brwbox/ebbcontrols.cxx @@ -17,7 +17,6 @@ */ #include <svtools/editbrowsebox.hxx> -#include <vcl/button.hxx> #include <vcl/spinfld.hxx> #include <vcl/xtextedt.hxx> #include <vcl/textview.hxx> @@ -166,109 +165,52 @@ namespace svt } //= CheckBoxControl - CheckBoxControl::CheckBoxControl(vcl::Window* pParent) - :Control(pParent, 0) + CheckBoxControl::CheckBoxControl(BrowserDataWin* pParent) + : ControlBase(pParent, "svt/ui/checkboxcontrol.ui", "CheckBoxControl") + , m_xBox(m_xBuilder->weld_check_button("checkbox")) + , m_bTriState(true) { - const Wallpaper& rParentBackground = pParent->GetBackground(); - if ( (pParent->GetStyle() & WB_CLIPCHILDREN) || rParentBackground.IsFixed() ) - SetBackground( rParentBackground ); - else - { - SetPaintTransparent( true ); - SetBackground(); - } - - EnableChildTransparentMode(); - - pBox = VclPtr<CheckBox>::Create(this,WB_CENTER|WB_VCENTER); - pBox->EnableTriState( true ); - pBox->SetLegacyNoTextAlign( true ); - pBox->EnableChildTransparentMode(); - pBox->SetPaintTransparent( true ); - pBox->SetClickHdl( LINK( this, CheckBoxControl, OnClick ) ); - pBox->Show(); - } - - CheckBoxControl::~CheckBoxControl() - { - disposeOnce(); + InitControlBase(m_xBox.get()); + m_xBox->connect_key_press(LINK(this, ControlBase, KeyInputHdl)); + m_xBox->connect_clicked(LINK(this, CheckBoxControl, OnClick)); } - void CheckBoxControl::dispose() - { - pBox.disposeAndClear(); - Control::dispose(); - } - - - IMPL_LINK_NOARG(CheckBoxControl, OnClick, Button*, void) - { - m_aClickLink.Call(pBox); - m_aModifyLink.Call(nullptr); - } - - - void CheckBoxControl::Resize() - { - Control::Resize(); - pBox->SetPosSizePixel(Point(0,0),GetSizePixel()); - } - - - void CheckBoxControl::DataChanged( const DataChangedEvent& _rEvent ) + void CheckBoxControl::EnableTriState( bool bTriState ) { - if ( _rEvent.GetType() == DataChangedEventType::SETTINGS ) - pBox->SetSettings( GetSettings() ); - } - + if (m_bTriState != bTriState) + { + m_bTriState = bTriState; - void CheckBoxControl::StateChanged( StateChangedType nStateChange ) - { - Control::StateChanged(nStateChange); - if ( nStateChange == StateChangedType::Zoom ) - pBox->SetZoom(GetZoom()); + if (!m_bTriState && GetState() == TRISTATE_INDET) + SetState(TRISTATE_FALSE); + } } - void CheckBoxControl::Draw( OutputDevice* pDev, const Point& rPos, DrawFlags nFlags ) + void CheckBoxControl::SetState(TriState eState) { - pBox->Draw(pDev, rPos, nFlags); + if (!m_bTriState && (eState == TRISTATE_INDET)) + eState = TRISTATE_FALSE; + m_xBox->set_state(eState); } - void CheckBoxControl::GetFocus() + CheckBoxControl::~CheckBoxControl() { - if (pBox) - pBox->GrabFocus(); + disposeOnce(); } - - void CheckBoxControl::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rClientRect) + void CheckBoxControl::dispose() { - Control::Paint(rRenderContext, rClientRect); - if (HasFocus()) - ShowFocus(tools::Rectangle()); + m_xBox.reset(); + ControlBase::dispose(); } - - bool CheckBoxControl::PreNotify(NotifyEvent& rEvt) + IMPL_LINK_NOARG(CheckBoxControl, OnClick, weld::Button&, void) { - switch (rEvt.GetType()) - { - case MouseNotifyEvent::GETFOCUS: - ShowFocus(tools::Rectangle()); - break; - case MouseNotifyEvent::LOSEFOCUS: - HideFocus(); - break; - default: - break; - } - return Control::PreNotify(rEvt); + m_aClickLink.Call(*m_xBox); + CallModifyHdls(); } - //= CheckBoxCellController - - CheckBoxCellController::CheckBoxCellController(CheckBoxControl* pWin) : CellController(pWin) { @@ -280,20 +222,19 @@ namespace svt return true; } - - CheckBox& CheckBoxCellController::GetCheckBox() const + weld::CheckButton& CheckBoxCellController::GetCheckBox() const { return static_cast<CheckBoxControl &>(GetWindow()).GetBox(); } bool CheckBoxCellController::IsValueChangedFromSaved() const { - return GetCheckBox().IsValueChangedFromSaved(); + return GetCheckBox().get_state_changed_from_saved(); } void CheckBoxCellController::SaveValue() { - GetCheckBox().SaveValue(); + GetCheckBox().save_state(); } IMPL_LINK_NOARG(CheckBoxCellController, ModifyHdl, LinkParamNone*, void) diff --git a/svtools/source/brwbox/editbrowsebox.cxx b/svtools/source/brwbox/editbrowsebox.cxx index 72c66b786cc0..b9249ccd9ebc 100644 --- a/svtools/source/brwbox/editbrowsebox.cxx +++ b/svtools/source/brwbox/editbrowsebox.cxx @@ -19,12 +19,11 @@ #include <svtools/editbrowsebox.hxx> -#include <vcl/svapp.hxx> #include <tools/debug.hxx> -#include <vcl/window.hxx> - -#include <vcl/button.hxx> +#include <vcl/image.hxx> #include <vcl/settings.hxx> +#include <vcl/window.hxx> +#include <vcl/svapp.hxx> #include <bitmaps.hlst> @@ -1204,13 +1203,11 @@ namespace svt return nNewColWidth; } - sal_uInt32 EditBrowseBox::GetTotalCellWidth(long, sal_uInt16) { return 0; } - void EditBrowseBox::InvalidateHandleColumn() { tools::Rectangle aHdlFieldRect( GetFieldRectPixel( 0, 0 )); @@ -1219,20 +1216,21 @@ namespace svt Invalidate( aInvalidRect ); } - void EditBrowseBox::PaintTristate(const tools::Rectangle& rRect, const TriState& eState, bool _bEnabled) const { - pCheckBoxPaint->GetBox().SetState(eState); - pCheckBoxPaint->SetPosSizePixel(rRect.TopLeft(), rRect.GetSize()); + pCheckBoxPaint->SetState(eState); - pCheckBoxPaint->GetBox().Enable(_bEnabled); - pCheckBoxPaint->Show(); - pCheckBoxPaint->SetParentUpdateMode( false ); - pCheckBoxPaint->PaintImmediately(); - pCheckBoxPaint->Hide(); - pCheckBoxPaint->SetParentUpdateMode( true ); - } + pCheckBoxPaint->GetBox().set_sensitive(_bEnabled); + auto nWidth = pCheckBoxPaint->GetBox().get_preferred_size().Width(); + auto nHeight = pCheckBoxPaint->GetBox().get_preferred_size().Height(); + tools::Rectangle aRect(Point(rRect.Left() + ((rRect.GetWidth() - nWidth) / 2), + rRect.Top() + ((rRect.GetHeight() - nHeight) / 2)), + Size(nWidth, nHeight)); + pCheckBoxPaint->SetPosSizePixel(aRect.TopLeft(), aRect.GetSize()); + + pCheckBoxPaint->Draw(&GetDataWindow(), aRect.TopLeft(), DrawFlags::NONE); + } void EditBrowseBox::AsynchGetFocus() { diff --git a/svtools/uiconfig/ui/checkboxcontrol.ui b/svtools/uiconfig/ui/checkboxcontrol.ui new file mode 100644 index 000000000000..786b09107db3 --- /dev/null +++ b/svtools/uiconfig/ui/checkboxcontrol.ui @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.36.0 --> +<interface domain="svt"> + <requires lib="gtk+" version="3.18"/> + <object class="GtkBox" id="CheckBoxControl"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkCheckButton" id="checkbox"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="halign">center</property> + <property name="valign">center</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + </object> +</interface> |