diff options
author | pv2k <vidhey96@gmail.com> | 2017-08-31 01:59:05 +0530 |
---|---|---|
committer | Katarina Behrens <Katarina.Behrens@cib.de> | 2017-09-30 08:32:21 +0200 |
commit | d5a64f114c101339ed479ea926653c703951fae5 (patch) | |
tree | 715ee1b342a7761563d25d6437702c79e5613817 /sd | |
parent | 499194508c8cf91fbbc21f882bcf4ace77e19eaa (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>
Diffstat (limited to 'sd')
-rw-r--r-- | sd/source/ui/sidebar/PageMarginUtils.hxx | 158 | ||||
-rw-r--r-- | sd/source/ui/sidebar/SlideBackground.cxx | 188 | ||||
-rw-r--r-- | sd/source/ui/sidebar/SlideBackground.hxx | 15 | ||||
-rw-r--r-- | sd/uiconfig/simpress/ui/sidebarslidebackground.ui | 107 |
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> |