summaryrefslogtreecommitdiff
path: root/svtools
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-07-09 20:16:22 +0100
committerCaolán McNamara <caolanm@redhat.com>2020-07-12 18:16:22 +0200
commit8328d84a0ce8c1b9592ce0dbab17dbbecc423b3c (patch)
treeb25fd10fd460280b1e03d5057dffde1e95cf0bb8 /svtools
parent1663b961ce2f9f109ad7634f165445f9ea785db3 (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.mk1
-rw-r--r--svtools/source/brwbox/ebbcontrols.cxx117
-rw-r--r--svtools/source/brwbox/editbrowsebox.cxx30
-rw-r--r--svtools/uiconfig/ui/checkboxcontrol.ui30
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>