summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpv2k <vidhey96@gmail.com>2017-08-31 01:59:05 +0530
committerKatarina Behrens <Katarina.Behrens@cib.de>2017-09-30 08:32:21 +0200
commitd5a64f114c101339ed479ea926653c703951fae5 (patch)
tree715ee1b342a7761563d25d6437702c79e5613817
parent499194508c8cf91fbbc21f882bcf4ace77e19eaa (diff)
tdf#109100 margin spinboxes in draw's sidebar changed to listbox
Change-Id: Ia59f0fb64f10beab70f449d01b8a25113bea475d Reviewed-on: https://gerrit.libreoffice.org/41741 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
-rw-r--r--sd/source/ui/sidebar/PageMarginUtils.hxx158
-rw-r--r--sd/source/ui/sidebar/SlideBackground.cxx188
-rw-r--r--sd/source/ui/sidebar/SlideBackground.hxx15
-rw-r--r--sd/uiconfig/simpress/ui/sidebarslidebackground.ui107
4 files changed, 299 insertions, 169 deletions
diff --git a/sd/source/ui/sidebar/PageMarginUtils.hxx b/sd/source/ui/sidebar/PageMarginUtils.hxx
new file mode 100644
index 000000000000..7061a11f9a6a
--- /dev/null
+++ b/sd/source/ui/sidebar/PageMarginUtils.hxx
@@ -0,0 +1,158 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+#include <cmath>
+#define SDPAGE_NO_MARGIN 0
+#define SDPAGE_NARROW_VALUE 635
+#define SDPAGE_MODERATE_LR 955
+#define SDPAGE_NORMAL_VALUE 1000
+#define SDPAGE_WIDE_VALUE1 1270
+#define SDPAGE_WIDE_VALUE2 2540
+#define SDPAGE_WIDE_VALUE3 1590
+#define SDPAGE_UNIT_THRESHOLD 5
+
+namespace sd { namespace sidebar{
+
+bool IsNone( const long nPageLeftMargin, const long nPageRightMargin,
+ const long nPageTopMargin, const long nPageBottomMargin )
+{
+ return( std::abs(nPageLeftMargin - SDPAGE_NO_MARGIN) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageRightMargin - SDPAGE_NO_MARGIN ) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageTopMargin - SDPAGE_NO_MARGIN) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageBottomMargin - SDPAGE_NO_MARGIN) <= SDPAGE_UNIT_THRESHOLD );
+}
+
+void SetNone( long& nPageLeftMargin, long& nPageRightMargin,
+ long& nPageTopMargin, long& nPageBottomMargin )
+{
+ nPageLeftMargin = SDPAGE_NO_MARGIN;
+ nPageRightMargin = SDPAGE_NO_MARGIN;
+ nPageTopMargin = SDPAGE_NO_MARGIN;
+ nPageBottomMargin = SDPAGE_NO_MARGIN;
+}
+
+bool IsNarrow( const long nPageLeftMargin, const long nPageRightMargin,
+ const long nPageTopMargin, const long nPageBottomMargin )
+{
+ return( std::abs(nPageLeftMargin - SDPAGE_NARROW_VALUE) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageRightMargin - SDPAGE_NARROW_VALUE) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageTopMargin - SDPAGE_NARROW_VALUE) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageBottomMargin - SDPAGE_NARROW_VALUE) <= SDPAGE_UNIT_THRESHOLD );
+}
+
+void SetNarrow( long& nPageLeftMargin, long& nPageRightMargin,
+ long& nPageTopMargin, long& nPageBottomMargin )
+{
+ nPageLeftMargin = SDPAGE_NARROW_VALUE;
+ nPageRightMargin = SDPAGE_NARROW_VALUE;
+ nPageTopMargin = SDPAGE_NARROW_VALUE;
+ nPageBottomMargin = SDPAGE_NARROW_VALUE;
+}
+
+bool IsModerate( const long nPageLeftMargin, const long nPageRightMargin,
+ const long nPageTopMargin, const long nPageBottomMargin )
+{
+ return( std::abs(nPageLeftMargin - SDPAGE_MODERATE_LR) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageRightMargin - SDPAGE_MODERATE_LR) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageTopMargin - SDPAGE_WIDE_VALUE1) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageBottomMargin - SDPAGE_WIDE_VALUE1) <= SDPAGE_UNIT_THRESHOLD );
+}
+
+void SetModerate( long& nPageLeftMargin, long& nPageRightMargin,
+ long& nPageTopMargin, long& nPageBottomMargin )
+{
+ nPageLeftMargin = SDPAGE_MODERATE_LR;
+ nPageRightMargin = SDPAGE_MODERATE_LR;
+ nPageTopMargin = SDPAGE_WIDE_VALUE1;
+ nPageBottomMargin = SDPAGE_WIDE_VALUE1;
+}
+
+bool IsNormal075( const long nPageLeftMargin, const long nPageRightMargin,
+ const long nPageTopMargin, const long nPageBottomMargin )
+{
+ return( std::abs(nPageLeftMargin - SDPAGE_NORMAL_VALUE) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageRightMargin - SDPAGE_NORMAL_VALUE) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageTopMargin - SDPAGE_NORMAL_VALUE) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageBottomMargin - SDPAGE_NORMAL_VALUE) <= SDPAGE_UNIT_THRESHOLD );
+}
+
+void SetNormal075( long& nPageLeftMargin, long& nPageRightMargin,
+ long& nPageTopMargin, long& nPageBottomMargin )
+{
+ nPageLeftMargin = SDPAGE_NORMAL_VALUE;
+ nPageRightMargin = SDPAGE_NORMAL_VALUE;
+ nPageTopMargin = SDPAGE_NORMAL_VALUE;
+ nPageBottomMargin = SDPAGE_NORMAL_VALUE;
+}
+
+bool IsNormal100( const long nPageLeftMargin, const long nPageRightMargin,
+ const long nPageTopMargin, const long nPageBottomMargin )
+{
+ return( std::abs(nPageLeftMargin - SDPAGE_WIDE_VALUE1) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageRightMargin - SDPAGE_WIDE_VALUE1) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageTopMargin - SDPAGE_WIDE_VALUE1) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageBottomMargin - SDPAGE_WIDE_VALUE1) <= SDPAGE_UNIT_THRESHOLD );
+}
+
+void SetNormal100( long& nPageLeftMargin, long& nPageRightMargin,
+ long& nPageTopMargin, long& nPageBottomMargin )
+{
+ nPageLeftMargin = SDPAGE_WIDE_VALUE1;
+ nPageRightMargin = SDPAGE_WIDE_VALUE1;
+ nPageTopMargin = SDPAGE_WIDE_VALUE1;
+ nPageBottomMargin = SDPAGE_WIDE_VALUE1;
+}
+
+bool IsNormal125( const long nPageLeftMargin, const long nPageRightMargin,
+ const long nPageTopMargin, const long nPageBottomMargin )
+{
+ return( std::abs(nPageLeftMargin - SDPAGE_WIDE_VALUE3) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageRightMargin - SDPAGE_WIDE_VALUE3) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageTopMargin - SDPAGE_WIDE_VALUE1) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageBottomMargin - SDPAGE_WIDE_VALUE1) <= SDPAGE_UNIT_THRESHOLD );
+}
+
+void SetNormal125( long& nPageLeftMargin, long& nPageRightMargin,
+ long& nPageTopMargin, long& nPageBottomMargin )
+{
+ nPageLeftMargin = SDPAGE_WIDE_VALUE3;
+ nPageRightMargin = SDPAGE_WIDE_VALUE3;
+ nPageTopMargin = SDPAGE_WIDE_VALUE1;
+ nPageBottomMargin = SDPAGE_WIDE_VALUE1;
+}
+
+bool IsWide( const long nPageLeftMargin, const long nPageRightMargin,
+ const long nPageTopMargin, const long nPageBottomMargin )
+{
+ return( std::abs(nPageLeftMargin - SDPAGE_WIDE_VALUE2) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageRightMargin - SDPAGE_WIDE_VALUE2) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageTopMargin - SDPAGE_WIDE_VALUE1) <= SDPAGE_UNIT_THRESHOLD &&
+ std::abs(nPageBottomMargin - SDPAGE_WIDE_VALUE1) <= SDPAGE_UNIT_THRESHOLD );
+}
+
+void SetWide( long& nPageLeftMargin, long& nPageRightMargin,
+ long& nPageTopMargin, long& nPageBottomMargin )
+{
+ nPageLeftMargin = SDPAGE_WIDE_VALUE2;
+ nPageRightMargin = SDPAGE_WIDE_VALUE2;
+ nPageTopMargin = SDPAGE_WIDE_VALUE1;
+ nPageBottomMargin = SDPAGE_WIDE_VALUE1;
+}
+} }
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/sidebar/SlideBackground.cxx b/sd/source/ui/sidebar/SlideBackground.cxx
index 82e0fc8e7bb6..08e7cab09e6d 100644
--- a/sd/source/ui/sidebar/SlideBackground.cxx
+++ b/sd/source/ui/sidebar/SlideBackground.cxx
@@ -28,6 +28,7 @@
#include "SlideSorterViewShell.hxx"
#include "drawdoc.hxx"
#include "filedlg.hxx"
+#include "PageMarginUtils.hxx"
#include "strings.hrc"
#include "DocumentHelper.hxx"
#include "MasterPagesSelector.hxx"
@@ -141,11 +142,14 @@ SlideBackground::SlideBackground(
maImpressMasterContext(vcl::EnumContext::Application::Impress, vcl::EnumContext::Context::MasterPage),
maImpressHandoutContext(vcl::EnumContext::Application::Impress, vcl::EnumContext::Context::HandoutPage),
mbTitle(false),
+ mpPageLRMarginItem( new SvxLongLRSpaceItem( 0, 0, SID_ATTR_PAGE_LRSPACE ) ),
+ mpPageULMarginItem( new SvxLongULSpaceItem( 0, 0, SID_ATTR_PAGE_ULSPACE ) ),
meFieldUnit(lcl_GetFieldUnit()),
m_nPageLeftMargin(0),
m_nPageRightMargin(0),
m_nPageTopMargin(0),
m_nPageBottomMargin(0),
+ maCustomEntry(),
mpBindings(pBindings)
{
get(mpPaperSizeBox,"paperformat");
@@ -165,10 +169,9 @@ SlideBackground::SlideBackground(
get(mpCloseMaster, "closemasterslide");
get(mpEditMaster, "masterslidebutton");
get(mpMasterLabel, "masterlabel");
- get(m_pLeftMarginEdit, "left");
- get(m_pRightMarginEdit, "right");
- get(m_pTopMarginEdit, "top");
- get(m_pBottomMarginEdit, "bottom");
+ get(mpMarginSelectBox, "marginLB");
+
+ maCustomEntry = get<FixedText>("customlabel")->GetText();
SfxViewFrame* pCurrent = SfxViewFrame::Current();
if (pCurrent)
@@ -181,10 +184,6 @@ SlideBackground::SlideBackground(
m_aPageSize = pSize->GetSize();
}
}
- SetFieldUnit( *m_pTopMarginEdit, meFieldUnit );
- SetFieldUnit( *m_pBottomMarginEdit, meFieldUnit );
- SetFieldUnit( *m_pLeftMarginEdit, meFieldUnit );
- SetFieldUnit( *m_pRightMarginEdit, meFieldUnit );
addListener();
Initialize();
}
@@ -238,12 +237,10 @@ void SlideBackground::Initialize()
mpDspMasterObjects->SetClickHdl(LINK(this,SlideBackground, DspObjects));
//margins
- m_pLeftMarginEdit->SetModifyHdl(LINK(this, SlideBackground, ModifyLRMarginHdl));
- m_pRightMarginEdit->SetModifyHdl(LINK(this, SlideBackground, ModifyLRMarginHdl));
- m_pTopMarginEdit->SetModifyHdl(LINK(this, SlideBackground, ModifyULMarginHdl));
- m_pBottomMarginEdit->SetModifyHdl(LINK(this, SlideBackground, ModifyULMarginHdl));
+ mpMarginSelectBox->SetSelectHdl(LINK(this, SlideBackground,ModifyMarginHdl));
Update();
+ UpdateMarginBox();
}
void SlideBackground::HandleContextChange(
@@ -370,6 +367,56 @@ void SlideBackground::Update()
}
}
+void SlideBackground::UpdateMarginBox()
+{
+ m_nPageLeftMargin = mpPageLRMarginItem->GetLeft();
+ m_nPageRightMargin = mpPageLRMarginItem->GetRight();
+ m_nPageTopMargin = mpPageULMarginItem->GetUpper();
+ m_nPageBottomMargin = mpPageULMarginItem->GetLower();
+
+ if( IsNone(m_nPageLeftMargin, m_nPageRightMargin, m_nPageTopMargin, m_nPageBottomMargin) )
+ {
+ mpMarginSelectBox->SelectEntryPos(0);
+ mpMarginSelectBox->RemoveEntry(maCustomEntry);
+ }
+ else if( IsNarrow(m_nPageLeftMargin, m_nPageRightMargin, m_nPageTopMargin, m_nPageBottomMargin) )
+ {
+ mpMarginSelectBox->SelectEntryPos(1);
+ mpMarginSelectBox->RemoveEntry(maCustomEntry);
+ }
+ else if( IsModerate(m_nPageLeftMargin, m_nPageRightMargin, m_nPageTopMargin, m_nPageBottomMargin) )
+ {
+ mpMarginSelectBox->SelectEntryPos(2);
+ mpMarginSelectBox->RemoveEntry(maCustomEntry);
+ }
+ else if( IsNormal075(m_nPageLeftMargin, m_nPageRightMargin, m_nPageTopMargin, m_nPageBottomMargin) )
+ {
+ mpMarginSelectBox->SelectEntryPos(3);
+ mpMarginSelectBox->RemoveEntry(maCustomEntry);
+ }
+ else if( IsNormal100(m_nPageLeftMargin, m_nPageRightMargin, m_nPageTopMargin, m_nPageBottomMargin) )
+ {
+ mpMarginSelectBox->SelectEntryPos(4);
+ mpMarginSelectBox->RemoveEntry(maCustomEntry);
+ }
+ else if( IsNormal125(m_nPageLeftMargin, m_nPageRightMargin, m_nPageTopMargin, m_nPageBottomMargin) )
+ {
+ mpMarginSelectBox->SelectEntryPos(5);
+ mpMarginSelectBox->RemoveEntry(maCustomEntry);
+ }
+ else if( IsWide(m_nPageLeftMargin, m_nPageRightMargin, m_nPageTopMargin, m_nPageBottomMargin) )
+ {
+ mpMarginSelectBox->SelectEntryPos(6);
+ mpMarginSelectBox->RemoveEntry(maCustomEntry);
+ }
+ else
+ {
+ if(mpMarginSelectBox->GetEntryPos(maCustomEntry) == LISTBOX_ENTRY_NOTFOUND)
+ mpMarginSelectBox->InsertEntry(maCustomEntry);
+ mpMarginSelectBox->SelectEntry(maCustomEntry);
+ }
+}
+
void SlideBackground::SetPanelTitle( const OUString& rTitle )
{
Reference<frame::XController2> xController( mxFrame->getController(), uno::UNO_QUERY);
@@ -546,15 +593,13 @@ void SlideBackground::dispose()
mpFillStyle.clear();
mpFillLB.clear();
mpInsertImage.clear();
+ mpMarginSelectBox.disposeAndClear();
mpDspMasterBackground.clear();
mpDspMasterObjects.clear();
mpMasterLabel.clear();
mpEditMaster.clear();
mpCloseMaster.clear();
- m_pLeftMarginEdit.clear();
- m_pRightMarginEdit.clear();
- m_pTopMarginEdit.clear();
- m_pBottomMarginEdit.clear();
+
m_pContainer.clear();
maPaperSizeController.dispose();
@@ -576,9 +621,25 @@ void SlideBackground::dispose()
mpColorItem.reset();
mpHatchItem.reset();
mpBitmapItem.reset();
+ mpPageLRMarginItem.reset();
+ mpPageULMarginItem.reset();
PanelLayout::dispose();
}
+void SlideBackground::ExecuteMarginLRChange(const long mnPageLeftMargin, const long mnPageRightMargin)
+{
+ mpPageLRMarginItem->SetLeft(mnPageLeftMargin);
+ mpPageLRMarginItem->SetRight(mnPageRightMargin);
+ GetBindings()->GetDispatcher()->ExecuteList( SID_ATTR_PAGE_LRSPACE, SfxCallMode::RECORD, { mpPageLRMarginItem.get() } );
+}
+
+void SlideBackground::ExecuteMarginULChange(const long mnPageTopMargin, const long mnPageBottomMargin)
+{
+ mpPageULMarginItem->SetUpper(mnPageTopMargin);
+ mpPageULMarginItem->SetLower(mnPageBottomMargin);
+ GetBindings()->GetDispatcher()->ExecuteList( SID_ATTR_PAGE_ULSPACE, SfxCallMode::RECORD, { mpPageULMarginItem.get() } );
+}
+
Color SlideBackground::GetColorSetOrDefault()
{
// Tango Sky Blue 1, to be consistent w/ area fill panel (b/c COL_AUTO for slides is transparent)
@@ -789,12 +850,8 @@ void SlideBackground::NotifyItemUpdate(
pLRItem = dynamic_cast<const SvxLongLRSpaceItem*>(pState);
if (pLRItem)
{
- m_nPageLeftMargin = pLRItem->GetLeft();
- m_nPageRightMargin = pLRItem->GetRight();
- SetFieldUnit(*m_pLeftMarginEdit, meFieldUnit, true);
- SetMetricValue(*m_pLeftMarginEdit.get(), m_nPageLeftMargin, meUnit);
- SetFieldUnit(*m_pRightMarginEdit, meFieldUnit, true);
- SetMetricValue(*m_pRightMarginEdit.get(), m_nPageRightMargin, meUnit);
+ mpPageLRMarginItem.reset( static_cast<SvxLongLRSpaceItem*>(pState->Clone()) );
+ UpdateMarginBox();
}
}
break;
@@ -806,12 +863,8 @@ void SlideBackground::NotifyItemUpdate(
pULItem = dynamic_cast<const SvxLongULSpaceItem*>(pState);
if (pULItem)
{
- m_nPageTopMargin = pULItem->GetUpper();
- m_nPageBottomMargin = pULItem->GetLower();
- SetFieldUnit(*m_pTopMarginEdit, meFieldUnit, true);
- SetMetricValue(*m_pTopMarginEdit.get(), m_nPageTopMargin, meUnit);
- SetFieldUnit(*m_pBottomMarginEdit, meFieldUnit, true);
- SetMetricValue(*m_pBottomMarginEdit.get(), m_nPageBottomMargin, meUnit);
+ mpPageULMarginItem.reset( static_cast<SvxLongULSpaceItem*>(pState->Clone()) );
+ UpdateMarginBox();
}
}
break;
@@ -848,33 +901,6 @@ void SlideBackground::NotifyItemUpdate(
}
}
-void SlideBackground::SetMetricFieldMaxValues( const Size& rPageSize )
-{
- const long nML = m_pLeftMarginEdit->Denormalize( m_pLeftMarginEdit->GetValue( FUNIT_TWIP ) );
- const long nMR = m_pRightMarginEdit->Denormalize( m_pRightMarginEdit->GetValue( FUNIT_TWIP ) );
- const long nMT = m_pTopMarginEdit->Denormalize( m_pTopMarginEdit->GetValue( FUNIT_TWIP ) );
- const long nMB = m_pBottomMarginEdit->Denormalize( m_pBottomMarginEdit->GetValue( FUNIT_TWIP ) );
-
- const long nPH = LogicToLogic( rPageSize.Height(), meUnit, MapUnit::MapTwip );
- const long nPW = LogicToLogic( rPageSize.Width(), meUnit, MapUnit::MapTwip );
-
- // Left
- long nMax = nPW - nMR - MINBODY;
- m_pLeftMarginEdit->SetMax( m_pLeftMarginEdit->Normalize( nMax ), FUNIT_TWIP );
-
- // Right
- nMax = nPW - nML - MINBODY;
- m_pRightMarginEdit->SetMax( m_pRightMarginEdit->Normalize( nMax ), FUNIT_TWIP );
-
- //Top
- nMax = nPH - nMB - MINBODY;
- m_pTopMarginEdit->SetMax( m_pTopMarginEdit->Normalize( nMax ), FUNIT_TWIP );
-
- //Bottom
- nMax = nPH - nMT - MINBODY;
- m_pBottomMarginEdit->SetMax( m_pTopMarginEdit->Normalize( nMax ), FUNIT_TWIP );
-}
-
IMPL_LINK_NOARG(SlideBackground, FillStyleModifyHdl, ListBox&, void)
{
const eFillStyle nPos = (eFillStyle)mpFillStyle->GetSelectedEntryPos();
@@ -1055,34 +1081,42 @@ IMPL_LINK_NOARG(SlideBackground, DspObjects, Button*, void)
GetBindings()->GetDispatcher()->ExecuteList(SID_DISPLAY_MASTER_OBJECTS, SfxCallMode::RECORD, { &aBoolItem, &aBoolItem });
}
-IMPL_LINK_NOARG( SlideBackground, ModifyLRMarginHdl, Edit&, void )
+IMPL_LINK_NOARG( SlideBackground, ModifyMarginHdl, ListBox&, void )
{
- m_nPageLeftMargin = GetCoreValue( *m_pLeftMarginEdit.get(), meUnit );
- m_nPageRightMargin = GetCoreValue( *m_pRightMarginEdit.get(), meUnit );
- if ( SfxViewFrame::Current() )
+ bool bApplyNewPageMargins = true;
+ switch ( mpMarginSelectBox->GetSelectedEntryPos() )
{
- std::unique_ptr<SvxLongLRSpaceItem> pPageLRMarginItem( new SvxLongLRSpaceItem( 0, 0, SID_ATTR_PAGE_LRSPACE ) );
- pPageLRMarginItem->SetLeft( m_nPageLeftMargin );
- pPageLRMarginItem->SetRight( m_nPageRightMargin );
- GetBindings()->GetDispatcher()->ExecuteList( SID_ATTR_PAGE_LRSPACE, SfxCallMode::RECORD, { pPageLRMarginItem.get() } );
- pPageLRMarginItem.reset();
+ case 0:
+ SetNone(m_nPageLeftMargin, m_nPageRightMargin, m_nPageTopMargin, m_nPageBottomMargin);
+ break;
+ case 1:
+ SetNarrow(m_nPageLeftMargin, m_nPageRightMargin, m_nPageTopMargin, m_nPageBottomMargin);
+ break;
+ case 2:
+ SetModerate(m_nPageLeftMargin, m_nPageRightMargin, m_nPageTopMargin, m_nPageBottomMargin);
+ break;
+ case 3:
+ SetNormal075(m_nPageLeftMargin, m_nPageRightMargin, m_nPageTopMargin, m_nPageBottomMargin);
+ break;
+ case 4:
+ SetNormal100(m_nPageLeftMargin, m_nPageRightMargin, m_nPageTopMargin, m_nPageBottomMargin);
+ break;
+ case 5:
+ SetNormal125(m_nPageLeftMargin, m_nPageRightMargin, m_nPageTopMargin, m_nPageBottomMargin);
+ break;
+ case 6:
+ SetWide(m_nPageLeftMargin, m_nPageRightMargin, m_nPageTopMargin, m_nPageBottomMargin);
+ break;
+ default:
+ bApplyNewPageMargins = false;
+ break;
}
- SetMetricFieldMaxValues( m_aPageSize );
-}
-IMPL_LINK_NOARG( SlideBackground, ModifyULMarginHdl, Edit&, void )
-{
- m_nPageTopMargin = GetCoreValue( *m_pTopMarginEdit.get(), meUnit );
- m_nPageBottomMargin = GetCoreValue( *m_pBottomMarginEdit.get(), meUnit );
- if ( SfxViewFrame::Current() )
+ if(bApplyNewPageMargins)
{
- std::unique_ptr<SvxLongULSpaceItem> pPageULMarginItem( new SvxLongULSpaceItem( 0, 0, SID_ATTR_PAGE_ULSPACE ) );
- pPageULMarginItem->SetUpper( m_nPageTopMargin );
- pPageULMarginItem->SetLower( m_nPageBottomMargin );
- GetBindings()->GetDispatcher()->ExecuteList( SID_ATTR_PAGE_ULSPACE, SfxCallMode::RECORD, { pPageULMarginItem.get() } );
- pPageULMarginItem.reset();
+ ExecuteMarginLRChange(m_nPageLeftMargin, m_nPageRightMargin);
+ ExecuteMarginULChange(m_nPageTopMargin, m_nPageBottomMargin);
}
- SetMetricFieldMaxValues( m_aPageSize );
}
}}
diff --git a/sd/source/ui/sidebar/SlideBackground.hxx b/sd/source/ui/sidebar/SlideBackground.hxx
index 4463f233b80b..804b6571b20d 100644
--- a/sd/source/ui/sidebar/SlideBackground.hxx
+++ b/sd/source/ui/sidebar/SlideBackground.hxx
@@ -95,10 +95,7 @@ private:
VclPtr<Button> mpCloseMaster;
VclPtr<Button> mpEditMaster;
VclPtr<FixedText> mpMasterLabel;
- VclPtr<MetricField> m_pLeftMarginEdit;
- VclPtr<MetricField> m_pRightMarginEdit;
- VclPtr<MetricField> m_pTopMarginEdit;
- VclPtr<MetricField> m_pBottomMarginEdit;
+ VclPtr<ListBox> mpMarginSelectBox;
VclPtr<VclVBox> m_pContainer;
::sfx2::sidebar::ControllerItem maPaperSizeController;
@@ -132,11 +129,14 @@ private:
vcl::EnumContext maImpressMasterContext;
vcl::EnumContext maImpressHandoutContext;
bool mbTitle;
+ std::unique_ptr<SvxLongLRSpaceItem> mpPageLRMarginItem;
+ std::unique_ptr<SvxLongULSpaceItem> mpPageULMarginItem;
FieldUnit meFieldUnit;
long m_nPageLeftMargin;
long m_nPageRightMargin;
long m_nPageTopMargin;
long m_nPageBottomMargin;
+ OUString maCustomEntry;
SfxBindings* mpBindings;
@@ -152,11 +152,11 @@ private:
DECL_LINK(DspObjects, Button*, void);
DECL_LINK(CloseMasterHdl, Button*, void);
DECL_LINK(EventMultiplexerListener, tools::EventMultiplexerEvent&, void );
- DECL_LINK( ModifyLRMarginHdl, Edit&, void );
- DECL_LINK( ModifyULMarginHdl, Edit&, void );
+ DECL_LINK( ModifyMarginHdl, ListBox&, void );
void Initialize();
void Update();
+ void UpdateMarginBox();
void SetPanelTitle(const OUString& rTitle);
Color GetColorSetOrDefault();
@@ -167,9 +167,10 @@ private:
bool IsImpress();
void addListener();
void removeListener();
+ void ExecuteMarginLRChange(const long mnPageLeftMargin, const long mnPageRightMargin);
+ void ExecuteMarginULChange(const long mnPageTopMargin, const long mnPageBottomMargin);
void populateMasterSlideDropdown();
void updateMasterSlideSelection();
- void SetMetricFieldMaxValues(const Size& rPageSize);
};
}}
diff --git a/sd/uiconfig/simpress/ui/sidebarslidebackground.ui b/sd/uiconfig/simpress/ui/sidebarslidebackground.ui
index 9eea5fbc0c3a..370527a13ed5 100644
--- a/sd/uiconfig/simpress/ui/sidebarslidebackground.ui
+++ b/sd/uiconfig/simpress/ui/sidebarslidebackground.ui
@@ -99,7 +99,7 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">9</property>
+ <property name="top_attach">10</property>
</packing>
</child>
<child>
@@ -110,7 +110,7 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">7</property>
+ <property name="top_attach">8</property>
</packing>
</child>
<child>
@@ -122,7 +122,7 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">7</property>
+ <property name="top_attach">8</property>
</packing>
</child>
<child>
@@ -175,7 +175,7 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">8</property>
+ <property name="top_attach">9</property>
</packing>
</child>
<child>
@@ -237,111 +237,48 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">10</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="labeltop">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">end</property>
- <property name="label" translatable="yes" context="sidebarslidebackground|labeltop">Top: </property>
- <property name="mnemonic_widget">top:0.00cm</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">13</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="top:0.00cm">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">•</property>
- <property name="digits">2</property>
- <property name="adjustment">adjustment1</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">13</property>
+ <property name="top_attach">11</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="labelbottom">
+ <object class="GtkComboBoxText" id="marginLB">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="halign">end</property>
- <property name="label" translatable="yes" context="sidebarslidebackground|labelbottom">Bottom: </property>
- <property name="mnemonic_widget">bottom:0.00cm</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">14</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="bottom:0.00cm">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">•</property>
- <property name="digits">2</property>
- <property name="adjustment">adjustment1</property>
+ <items>
+ <item translatable="yes" context="sidebarslidebackground|marginLB">None</item>
+ <item translatable="yes" context="sidebarslidebackground|marginLB">Narrow</item>
+ <item translatable="yes" context="sidebarslidebackground|marginLB">Moderate</item>
+ <item translatable="yes" context="sidebarslidebackground|marginLB">Normal 0.75"</item>
+ <item translatable="yes" context="sidebarslidebackground|marginLB">Normal 1"</item>
+ <item translatable="yes" context="sidebarslidebackground|marginLB">Normal 1.25"</item>
+ <item translatable="yes" context="sidebarslidebackground|marginLB">Wide</item>
+ </items>
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">14</property>
+ <property name="top_attach">7</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="labelleft">
+ <object class="GtkLabel" id="labelmargin">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
- <property name="label" translatable="yes" context="sidebarslidebackground|labelleft">Left: </property>
- <property name="mnemonic_widget">left:0.00cm</property>
+ <property name="label" translatable="yes" context="sidebarslidebackground|labelmargin">Margin: </property>
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">11</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="left:0.00cm">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">•</property>
- <property name="digits">2</property>
- <property name="adjustment">adjustment1</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">11</property>
+ <property name="top_attach">7</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="labelright">
- <property name="visible">True</property>
+ <object class="GtkLabel" id="customlabel">
<property name="can_focus">False</property>
- <property name="halign">end</property>
- <property name="label" translatable="yes" context="sidebarslidebackground|labelright">Right: </property>
- <property name="mnemonic_widget">right:0.00cm</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">12</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="right:0.00cm">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">•</property>
- <property name="digits">2</property>
- <property name="adjustment">adjustment1</property>
+ <property name="label" translatable="yes" context="sidebarslidebackground|customlabel">Custom</property>
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">12</property>
+ <property name="top_attach">16</property>
</packing>
</child>
<child>