/* -*- 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 .
*/
SwXViewSettings::SwXViewSettings(SwView* pVw)
: ChainablePropertySet( lcl_createViewSettingsInfo().get(), &Application::GetSolarMutex() )
, m_pView(pVw)
, mpConstViewOption(nullptr)
, m_bObjectValid(true)
, mbApplyZoom(false)
, m_eHRulerUnit(FieldUnit::CM)
, mbApplyHRulerMetric(false)
, m_eVRulerUnit(FieldUnit::CM)
, mbApplyVRulerMetric(false)
{ // This property only exists if we have a view (ie, not at the module ) if ( !m_pView )
mxInfo->remove ( u"HelpURL"_ustr );
void SwXViewSettings::_setSingleValue( const comphelper::PropertyInfo & rInfo, const uno::Any &rValue )
{ // the API flag should not be set to the application's view settings switch( rInfo.mnHandle )
{ case HANDLE_VIEWSET_SHOW_RULER : mpViewOption->SetViewAnyRuler(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_HRULER : mpViewOption->SetViewHRuler(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_VRULER : mpViewOption->SetViewVRuler(*o3tl::doAccess<bool>(rValue));break; case HANDLE_VIEWSET_VRULER_RIGHT : mpViewOption->SetVRulerRight(*o3tl::doAccess<bool>(rValue));break; case HANDLE_VIEWSET_HSCROLL : mpViewOption->SetViewHScrollBar(*o3tl::doAccess<bool>(rValue));break; case HANDLE_VIEWSET_VSCROLL : mpViewOption->SetViewVScrollBar(*o3tl::doAccess<bool>(rValue));break; case HANDLE_VIEWSET_GRAPHICS : mpViewOption->SetGraphic(*o3tl::doAccess<bool>(rValue));break; case HANDLE_VIEWSET_TABLES : mpViewOption->SetTable(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_DRAWINGS : mpViewOption->SetDraw(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_FIELD_COMMANDS : mpViewOption->SetFieldName(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_ANNOTATIONS : mpViewOption->SetPostIts(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_INDEX_MARK_BACKGROUND : mpViewOption->SetAppearanceFlag(ViewOptFlags::FieldShadings, *o3tl::doAccess<bool>(rValue), true); break; case HANDLE_VIEWSET_NONPRINTING_CHARACTERS: mpViewOption->SetViewMetaChars( *o3tl::doAccess<bool>(rValue) ); break; case HANDLE_VIEWSET_FOOTNOTE_BACKGROUND : mpViewOption->SetAppearanceFlag(ViewOptFlags::FieldShadings, *o3tl::doAccess<bool>(rValue), true); break; case HANDLE_VIEWSET_TEXT_FIELD_BACKGROUND : mpViewOption->SetAppearanceFlag(ViewOptFlags::FieldShadings, *o3tl::doAccess<bool>(rValue), true); break; case HANDLE_VIEWSET_PARA_BREAKS : mpViewOption->SetParagraph(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_SOFT_HYPHENS : mpViewOption->SetSoftHyph(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_SPACES : mpViewOption->SetBlank(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_PROTECTED_SPACES : mpViewOption->SetHardBlank(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_TABSTOPS : mpViewOption->SetTab(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_BREAKS : mpViewOption->SetLineBreak(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_BOOKMARKS : mpViewOption->SetShowBookmarks(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_HIDDEN_TEXT : mpViewOption->SetShowHiddenField(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_HIDDEN_CHARACTERS : mpViewOption->SetShowHiddenChar(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_HIDDEN_PARAGRAPHS : mpViewOption->SetShowHiddenPara(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_TABLE_BOUNDARIES : mpViewOption->SetTableBoundaries(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_TEXT_BOUNDARIES : mpViewOption->SetTextBoundaries(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_SMOOTH_SCROLLING : mpViewOption->SetSmoothScroll(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_SHOW_CONTENT_TIPS : mpViewOption->SetShowContentTips(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_IS_RASTER_VISIBLE : mpViewOption->SetGridVisible(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_IS_SNAP_TO_RASTER : mpViewOption->SetSnap(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_SCROLLBAR_TIPS : mpViewOption->SetShowScrollBarTips(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_INLINECHANGES_TIPS : mpViewOption->SetShowInlineTooltips(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_USE_HEADERFOOTERMENU : mpViewOption->SetUseHeaderFooterMenu(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_SHOW_OUTLINECONTENTVISIBILITYBUTTON : mpViewOption->SetShowOutlineContentVisibilityButton(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_TREAT_SUB_OUTLINE_LEVELS_AS_CONTENT : mpViewOption->SetTreatSubOutlineLevelsAsContent(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_CHANGES_IN_MARGIN : mpViewOption->SetShowChangesInMargin(*o3tl::doAccess<bool>(rValue)); break; case HANDLE_VIEWSET_RASTER_RESOLUTION_X :
{
sal_Int32 nTmp = 0; if(!(rValue >>= nTmp) || nTmp < 10) throw IllegalArgumentException();
Size aSize( mpViewOption->GetSnapSize() );
aSize.setWidth( o3tl::toTwips(nTmp, o3tl::Length::mm100) );
mpViewOption->SetSnapSize( aSize );
} break; case HANDLE_VIEWSET_RASTER_RESOLUTION_Y :
{
sal_Int32 nTmp = 0; if(!(rValue >>= nTmp) || nTmp < 10) throw IllegalArgumentException();
Size aSize( mpViewOption->GetSnapSize() );
aSize.setHeight( o3tl::toTwips(nTmp, o3tl::Length::mm100) );
mpViewOption->SetSnapSize( aSize );
} break; case HANDLE_VIEWSET_RASTER_SUBDIVISION_X :
{
sal_Int32 nTmp = 0; if(!(rValue >>= nTmp) || (0 > nTmp || nTmp >= 100)) throw IllegalArgumentException();
mpViewOption->SetDivisionX( static_cast<short>(nTmp) );
} break; case HANDLE_VIEWSET_RASTER_SUBDIVISION_Y :
{
sal_Int32 nTmp = 0; if(!(rValue >>= nTmp) || (0 > nTmp || nTmp >= 100)) throw IllegalArgumentException();
mpViewOption->SetDivisionY( static_cast<short>(nTmp) );
} break; case HANDLE_VIEWSET_ZOOM :
{
sal_Int16 nZoom = 0; if(!(rValue >>= nZoom) || nZoom > MAXZOOM || nZoom < MINZOOM) throw lang::IllegalArgumentException();
mpViewOption->SetZoom(o3tl::narrowing<sal_uInt16>(nZoom));
mbApplyZoom = true;
} break; case HANDLE_VIEWSET_ZOOM_TYPE:
{
sal_Int16 nZoom = 0; if(!(rValue >>= nZoom)) throw IllegalArgumentException();
SvxZoomType eZoom; switch (nZoom)
{ case view::DocumentZoomType::OPTIMAL:
eZoom = SvxZoomType::OPTIMAL; break; case view::DocumentZoomType::PAGE_WIDTH:
eZoom = SvxZoomType::PAGEWIDTH; break; case view::DocumentZoomType::ENTIRE_PAGE:
eZoom = SvxZoomType::WHOLEPAGE; break; case view::DocumentZoomType::BY_VALUE:
eZoom = SvxZoomType::PERCENT; break; case view::DocumentZoomType::PAGE_WIDTH_EXACT:
eZoom = SvxZoomType::PAGEWIDTH_NOBORDER; break; default: throw IllegalArgumentException(
u"SwXViewSettings: invalid zoom type"_ustr, nullptr, 0);
}
mpViewOption->SetZoomType( eZoom );
mbApplyZoom = true;
} break; case HANDLE_VIEWSET_ONLINE_LAYOUT :
{ if ( m_pView )
{ bool bVal = *o3tl::doAccess<bool>(rValue);
SwViewOption aOpt(*m_pView->GetWrtShell().GetViewOptions()); if (!bVal != !aOpt.getBrowseMode())
{
aOpt.setBrowseMode( bVal );
m_pView->GetWrtShell().ApplyViewOptions( aOpt );
// must be set in mpViewOption as this will overwrite settings in _post! if(mpViewOption)
mpViewOption->setBrowseMode(bVal);
m_pView->GetDocShell()->ToggleLayoutMode(m_pView);
}
}
} break; case HANDLE_VIEWSET_HIDE_WHITESPACE:
{ if ( m_pView )
{ bool bVal = *o3tl::doAccess<bool>(rValue);
SwViewOption aOpt(*m_pView->GetWrtShell().GetViewOptions()); if (!bVal != !aOpt.IsHideWhitespaceMode())
{
aOpt.SetHideWhitespaceMode( bVal );
m_pView->GetWrtShell().ApplyViewOptions( aOpt );
// must be set in mpViewOption as this will overwrite settings in _post! if(mpViewOption)
mpViewOption->SetHideWhitespaceMode(bVal);
}
}
} break; case HANDLE_VIEWSET_HELP_URL:
{ if ( !m_pView ) throw UnknownPropertyException();
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.