svx/source/sidebar/paragraph/ParaSpacingWindow.cxx |   88 +++++++++------------
 svx/source/sidebar/paragraph/ParaSpacingWindow.hxx |   35 ++++----
 2 files changed, 59 insertions(+), 64 deletions(-)

New commits:
commit e49cd2c253fe1d292ae3f9212a805cdace77b174
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Tue Feb 4 10:45:52 2020 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Tue Feb 4 13:58:41 2020 +0100

    merge common code together
    
    Change-Id: I26cb6184bd607b86c807219d6afbd9d445f346d0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87964
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/svx/source/sidebar/paragraph/ParaSpacingWindow.cxx 
b/svx/source/sidebar/paragraph/ParaSpacingWindow.cxx
index 9815a06eab00..f098f29cb6e7 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 36dd90aea79b..d25030c3d9f6 100644
--- a/svx/source/sidebar/paragraph/ParaSpacingWindow.hxx
+++ b/svx/source/sidebar/paragraph/ParaSpacingWindow.hxx
@@ -27,26 +27,36 @@
 
 using namespace com::sun::star;
 
-namespace svx {
-
-class ParaULSpacingWindow : public Control
+class InterimItemWindow : public Control
 {
 public:
-    virtual ~ParaULSpacingWindow() override;
+    virtual ~InterimItemWindow() override;
     virtual void dispose() override;
 
-    void SetValue(const SvxULSpaceItem* pItem);
-    void SetUnit(FieldUnit eUnit);
-
     virtual void Resize() override;
     virtual Size GetOptimalSize() const override;
 
 protected:
-    ParaULSpacingWindow(vcl::Window* pParent);
+    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 InterimItemWindow
+{
+public:
+    virtual ~ParaULSpacingWindow() override;
+    virtual void dispose() override;
+
+    void SetValue(const SvxULSpaceItem* pItem);
+    void SetUnit(FieldUnit eUnit);
+
+protected:
+    ParaULSpacingWindow(vcl::Window* pParent);
 
     std::unique_ptr<SvxRelativeField> m_xAboveSpacing;
     std::unique_ptr<SvxRelativeField> m_xBelowSpacing;
@@ -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;
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to