merge common code together
Change-Id: I26cb6184bd607b86c807219d6afbd9d445f346d0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87964
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/svx/source/sidebar/paragraph/ParaSpacingWindow.cxx b/svx/source/sidebar/paragraph/ParaSpacingWindow.cxx
index 9815a06..f098f29 100644
--- a/svx/source/sidebar/paragraph/ParaSpacingWindow.cxx
+++ b/svx/source/sidebar/paragraph/ParaSpacingWindow.cxx
@@ -34,17 +34,48 @@ using namespace svx;
#define MAX_SC_SD 116220200
#define NEGA_MAXVALUE -10000000
// ParaULSpacingWindow
ParaULSpacingWindow::ParaULSpacingWindow(vcl::Window* pParent)
InterimItemWindow::InterimItemWindow(vcl::Window* pParent, const OUString& rUIXMLDescription, const OString& rID)
: Control(pParent, WB_TABSTOP)
, m_eUnit(MapUnit::MapTwip)
{
m_xVclContentArea = VclPtr<VclVBox>::Create(this);
m_xVclContentArea->Show();
m_xBuilder.reset(Application::CreateInterimBuilder(m_xVclContentArea, "svx/ui/paraulspacing.ui"));
m_xContainer = m_xBuilder->weld_container("ParaULSpacingWindow");
m_xBuilder.reset(Application::CreateInterimBuilder(m_xVclContentArea, rUIXMLDescription));
m_xContainer = m_xBuilder->weld_container(rID);
}
InterimItemWindow::~InterimItemWindow()
{
disposeOnce();
}
void InterimItemWindow::dispose()
{
m_xContainer.reset();
m_xBuilder.reset();
m_xVclContentArea.disposeAndClear();
Control::dispose();
}
void InterimItemWindow::Resize()
{
vcl::Window *pChild = GetWindow(GetWindowType::FirstChild);
assert(pChild);
VclContainer::setLayoutAllocation(*pChild, Point(0, 0), GetSizePixel());
Control::Resize();
}
Size InterimItemWindow::GetOptimalSize() const
{
return VclContainer::getLayoutRequisition(*GetWindow(GetWindowType::FirstChild));
}
// ParaULSpacingWindow
ParaULSpacingWindow::ParaULSpacingWindow(vcl::Window* pParent)
: InterimItemWindow(pParent, "svx/ui/paraulspacing.ui", "ParaULSpacingWindow")
, m_eUnit(MapUnit::MapTwip)
{
m_xAboveSpacing = std::make_unique<SvxRelativeField>(m_xBuilder->weld_metric_spin_button("aboveparaspacing", FieldUnit::CM));
m_xBelowSpacing = std::make_unique<SvxRelativeField>(m_xBuilder->weld_metric_spin_button("belowparaspacing", FieldUnit::CM));
m_xAboveContainer = m_xBuilder->weld_container("above");
@@ -71,11 +102,7 @@ void ParaULSpacingWindow::dispose()
m_xAboveContainer.reset();
m_xBelowContainer.reset();
m_xContainer.reset();
m_xBuilder.reset();
m_xVclContentArea.disposeAndClear();
Control::dispose();
InterimItemWindow::dispose();
}
void ParaULSpacingWindow::SetUnit(FieldUnit eUnit)
@@ -102,19 +129,6 @@ void ParaULSpacingWindow::SetValue(const SvxULSpaceItem* pItem)
m_xBelowSpacing->set_value(nVal, FieldUnit::MM_100TH);
}
void ParaULSpacingWindow::Resize()
{
vcl::Window *pChild = GetWindow(GetWindowType::FirstChild);
assert(pChild);
VclContainer::setLayoutAllocation(*pChild, Point(0, 0), GetSizePixel());
Control::Resize();
}
Size ParaULSpacingWindow::GetOptimalSize() const
{
return VclContainer::getLayoutRequisition(*GetWindow(GetWindowType::FirstChild));
}
IMPL_LINK_NOARG(ParaULSpacingWindow, ModifySpacingHdl, weld::MetricSpinButton&, void)
{
SfxDispatcher* pDisp = SfxViewFrame::Current()->GetBindings().GetDispatcher();
@@ -162,14 +176,9 @@ void ParaBelowSpacingWindow::GetFocus()
// ParaLRSpacingWindow
ParaLRSpacingWindow::ParaLRSpacingWindow(vcl::Window* pParent)
: Control(pParent, WB_TABSTOP)
: InterimItemWindow(pParent, "svx/ui/paralrspacing.ui", "ParaLRSpacingWindow")
, m_eUnit(MapUnit::MapTwip)
{
m_xVclContentArea = VclPtr<VclVBox>::Create(this);
m_xVclContentArea->Show();
m_xBuilder.reset(Application::CreateInterimBuilder(m_xVclContentArea, "svx/ui/paralrspacing.ui"));
m_xContainer = m_xBuilder->weld_container("ParaLRSpacingWindow");
m_xBeforeSpacing = std::make_unique<SvxRelativeField>(m_xBuilder->weld_metric_spin_button("beforetextindent", FieldUnit::CM));
m_xAfterSpacing = std::make_unique<SvxRelativeField>(m_xBuilder->weld_metric_spin_button("aftertextindent", FieldUnit::CM));
m_xFLSpacing = std::make_unique<SvxRelativeField>(m_xBuilder->weld_metric_spin_button("firstlineindent", FieldUnit::CM));
@@ -202,11 +211,7 @@ void ParaLRSpacingWindow::dispose()
m_xAfterContainer.reset();
m_xFirstLineContainer.reset();
m_xContainer.reset();
m_xBuilder.reset();
m_xVclContentArea.disposeAndClear();
Control::dispose();
InterimItemWindow::dispose();
}
void ParaLRSpacingWindow::SetContext(const vcl::EnumContext& eContext)
@@ -311,19 +316,6 @@ void ParaLRSpacingWindow::SetValue(SfxItemState eState, const SfxPoolItem* pStat
}
}
void ParaLRSpacingWindow::Resize()
{
vcl::Window *pChild = GetWindow(GetWindowType::FirstChild);
assert(pChild);
VclContainer::setLayoutAllocation(*pChild, Point(0, 0), GetSizePixel());
Control::Resize();
}
Size ParaLRSpacingWindow::GetOptimalSize() const
{
return VclContainer::getLayoutRequisition(*GetWindow(GetWindowType::FirstChild));
}
void ParaLRSpacingWindow::SetUnit(FieldUnit eUnit)
{
m_xBeforeSpacing->SetFieldUnit(eUnit);
diff --git a/svx/source/sidebar/paragraph/ParaSpacingWindow.hxx b/svx/source/sidebar/paragraph/ParaSpacingWindow.hxx
index 36dd90a..d25030c 100644
--- a/svx/source/sidebar/paragraph/ParaSpacingWindow.hxx
+++ b/svx/source/sidebar/paragraph/ParaSpacingWindow.hxx
@@ -27,9 +27,26 @@
using namespace com::sun::star;
class InterimItemWindow : public Control
{
public:
virtual ~InterimItemWindow() override;
virtual void dispose() override;
virtual void Resize() override;
virtual Size GetOptimalSize() const override;
protected:
InterimItemWindow(vcl::Window* pParent, const OUString& rUIXMLDescription, const OString& rID);
std::unique_ptr<weld::Builder> m_xBuilder;
VclPtr<vcl::Window> m_xVclContentArea;
std::unique_ptr<weld::Container> m_xContainer;
};
namespace svx {
class ParaULSpacingWindow : public Control
class ParaULSpacingWindow : public InterimItemWindow
{
public:
virtual ~ParaULSpacingWindow() override;
@@ -38,16 +55,9 @@ public:
void SetValue(const SvxULSpaceItem* pItem);
void SetUnit(FieldUnit eUnit);
virtual void Resize() override;
virtual Size GetOptimalSize() const override;
protected:
ParaULSpacingWindow(vcl::Window* pParent);
std::unique_ptr<weld::Builder> m_xBuilder;
VclPtr<vcl::Window> m_xVclContentArea;
std::unique_ptr<weld::Container> m_xContainer;
std::unique_ptr<SvxRelativeField> m_xAboveSpacing;
std::unique_ptr<SvxRelativeField> m_xBelowSpacing;
std::unique_ptr<weld::Container> m_xAboveContainer;
@@ -72,15 +82,12 @@ public:
virtual void GetFocus() override;
};
class ParaLRSpacingWindow : public Control
class ParaLRSpacingWindow : public InterimItemWindow
{
public:
virtual ~ParaLRSpacingWindow() override;
virtual void dispose() override;
virtual void Resize() override;
virtual Size GetOptimalSize() const override;
void SetValue(SfxItemState eState, const SfxPoolItem* pState);
void SetUnit(FieldUnit eUnit);
void SetContext(const vcl::EnumContext& eContext);
@@ -88,10 +95,6 @@ public:
protected:
ParaLRSpacingWindow(vcl::Window* pParent);
std::unique_ptr<weld::Builder> m_xBuilder;
VclPtr<vcl::Window> m_xVclContentArea;
std::unique_ptr<weld::Container> m_xContainer;
std::unique_ptr<SvxRelativeField> m_xBeforeSpacing;
std::unique_ptr<SvxRelativeField> m_xAfterSpacing;
std::unique_ptr<SvxRelativeField> m_xFLSpacing;