libreoffice/sd/source/ui/view/frmview.cxx
Noel Grandin e588aa4d34 convert PageKind to scoped enum
Change-Id: I7f90cf2e96b72031bcfff558794e6cb42ea408e8
2016-10-11 14:32:40 +02:00

912 lines
34 KiB
C++

/* -*- 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 "FrameView.hxx"
#include <svx/svxids.hrc>
#include <com/sun/star/awt/Rectangle.hpp>
#include <com/sun/star/drawing/framework/ResourceId.hpp>
#include <rtl/ustrbuf.hxx>
#include "unokywds.hxx"
#include <vcl/settings.hxx>
#include <vector>
#include "ViewShell.hxx"
#include "drawdoc.hxx"
#include "DrawDocShell.hxx"
#include "optsitem.hxx"
#include "ViewShellBase.hxx"
#include "DrawViewShell.hxx"
#include "OutlineViewShell.hxx"
#include "sdmod.hxx"
#include "sdresid.hxx"
#include "pres.hxx"
#include "glob.hrc"
#include "sdiocmpt.hxx"
#include "framework/FrameworkHelper.hxx"
#include <comphelper/processfactory.hxx>
#include <sfx2/viewfrm.hxx>
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::beans;
using namespace ::std;
namespace sd {
FrameView::FrameView(SdDrawDocument* pDrawDoc, FrameView* pFrameView /* = NULK */)
: SdrView(pDrawDoc, nullptr),
mnRefCount(0),
mnPresViewShellId(SID_VIEWSHELL0),
mnSlotId(SID_OBJECT_SELECT),
mbIsNavigatorShowingAllShapes(false)
{
EndListening(*pDrawDoc);
EnableExtendedKeyInputDispatcher(false);
EnableExtendedMouseEventDispatcher(false);
EnableExtendedCommandEventDispatcher(false);
SetGridFront( false );
SetHlplFront( false );
SetOConSnap( false );
SetFrameDragSingles();
SetSlidesPerRow(4);
if( nullptr == pFrameView )
{
DrawDocShell* pDocShell = pDrawDoc->GetDocSh();
if ( pDocShell )
{
// document is loaded, is there a FrameView?
sal_uLong nSdViewShellCount = 0;
SfxViewFrame* pSfxViewFrame = SfxViewFrame::GetFirst(pDocShell);
while (pSfxViewFrame)
{
// Count the FrameViews and remember the type of the main
// view shell.
SfxViewShell* pSfxViewSh = pSfxViewFrame->GetViewShell();
ViewShellBase* pBase = dynamic_cast<ViewShellBase*>( pSfxViewSh );
if (pBase != nullptr)
{
nSdViewShellCount++;
OUString sViewURL;
Reference<drawing::framework::XView> xView (
framework::FrameworkHelper::Instance(*pBase)->GetView(
drawing::framework::ResourceId::create(
::comphelper::getProcessComponentContext(),
framework::FrameworkHelper::msCenterPaneURL)));
if (xView.is())
sViewURL = xView->getResourceId()->getResourceURL();
switch (framework::FrameworkHelper::GetViewId(sViewURL))
{
default:
// case ViewShell::ST_IMPRESS:
// case ViewShell::ST_NOTES:
// case ViewShell::ST_HANDOUT:
mnPresViewShellId = SID_VIEWSHELL0;
break;
case ViewShell::ST_SLIDE_SORTER:
mnPresViewShellId = SID_VIEWSHELL1;
break;
case ViewShell::ST_OUTLINE:
mnPresViewShellId = SID_VIEWSHELL2;
break;
}
}
pSfxViewFrame = SfxViewFrame::GetNext(*pSfxViewFrame, pDocShell);
}
SdDrawDocument* pDoc = pDocShell->GetDoc();
pFrameView = pDoc->GetFrameView(nSdViewShellCount);
}
}
if (pFrameView)
{
// initialize FrameView with the FrameView of the DocShell
SetRuler( pFrameView->HasRuler() );
SetGridCoarse( pFrameView->GetGridCoarse() );
SetGridFine( pFrameView->GetGridFine() );
SetSnapGridWidth(pFrameView->GetSnapGridWidthX(), pFrameView->GetSnapGridWidthY());
SetGridVisible( pFrameView->IsGridVisible() );
SetGridFront( pFrameView->IsGridFront() );
SetSnapAngle( pFrameView->GetSnapAngle() );
SetGridSnap( pFrameView->IsGridSnap() );
SetBordSnap( pFrameView->IsBordSnap() );
SetHlplSnap( pFrameView->IsHlplSnap() );
SetOFrmSnap( pFrameView->IsOFrmSnap() );
SetOPntSnap( pFrameView->IsOPntSnap() );
SetOConSnap( pFrameView->IsOConSnap() );
SetHlplVisible( pFrameView->IsHlplVisible() );
SetDragStripes( pFrameView->IsDragStripes() );
SetPlusHandlesAlwaysVisible( pFrameView->IsPlusHandlesAlwaysVisible() );
SetFrameDragSingles( pFrameView->IsFrameDragSingles() );
SetSnapMagneticPixel( pFrameView->GetSnapMagneticPixel() );
SetMarkedHitMovesAlways( pFrameView->IsMarkedHitMovesAlways() );
SetMoveOnlyDragging( pFrameView->IsMoveOnlyDragging() );
SetCrookNoContortion( pFrameView->IsCrookNoContortion() );
SetSlantButShear( pFrameView->IsSlantButShear() );
SetNoDragXorPolys( pFrameView->IsNoDragXorPolys() );
SetAngleSnapEnabled( pFrameView->IsAngleSnapEnabled() );
SetBigOrtho( pFrameView->IsBigOrtho() );
SetOrtho( pFrameView->IsOrtho() );
SetEliminatePolyPointLimitAngle( pFrameView->GetEliminatePolyPointLimitAngle() );
SetEliminatePolyPoints( pFrameView->IsEliminatePolyPoints() );
SetDesignMode( pFrameView->IsDesignMode() );
SetSolidDragging( pFrameView->IsSolidDragging() );
maVisibleLayers = pFrameView->GetVisibleLayers();
maPrintableLayers = pFrameView->GetPrintableLayers();
maLockedLayers = pFrameView->GetLockedLayers();
maStandardHelpLines = pFrameView->GetStandardHelpLines();
maNotesHelpLines = pFrameView->GetNotesHelpLines();
maHandoutHelpLines = pFrameView->GetHandoutHelpLines();
SetActiveLayer( pFrameView->GetActiveLayer() );
mbNoColors = pFrameView->IsNoColors();
mbNoAttribs = pFrameView->IsNoAttribs() ;
maVisArea = pFrameView->GetVisArea();
mePageKind = pFrameView->GetPageKind();
mePageKindOnLoad = pFrameView->GetPageKindOnLoad();
mnSelectedPage = pFrameView->GetSelectedPage();
mnSelectedPageOnLoad = pFrameView->GetSelectedPageOnLoad();
meEditMode = pFrameView->GetViewShEditMode();
// meStandardEditMode = pFrameView->GetViewShEditMode(PageKind::Standard);
// meNotesEditMode = pFrameView->GetViewShEditMode(PageKind::Notes);
// meHandoutEditMode = pFrameView->GetViewShEditMode(PageKind::Handout);
SetViewShEditModeOnLoad(pFrameView->GetViewShEditModeOnLoad());
mbLayerMode = pFrameView->IsLayerMode();
mbQuickEdit = pFrameView->IsQuickEdit();
// #i26631#
SetMasterPagePaintCaching( pFrameView->IsMasterPagePaintCaching() );
SetDragWithCopy( pFrameView->IsDragWithCopy() );
mbDoubleClickTextEdit = pFrameView->IsDoubleClickTextEdit();
mbClickChangeRotation = pFrameView->IsClickChangeRotation();
mnSlidesPerRow = pFrameView->GetSlidesPerRow();
mnDrawMode = pFrameView->GetDrawMode();
mbIsNavigatorShowingAllShapes = pFrameView->IsNavigatorShowingAllShapes();
SetPreviousViewShellType (pFrameView->GetPreviousViewShellType());
SetViewShellTypeOnLoad (pFrameView->GetViewShellTypeOnLoad());
}
else
{
// initialize FrameView with the application data
maVisibleLayers.SetAll();
maPrintableLayers.SetAll();
SetGridCoarse( Size( 1000, 1000 ) );
SetSnapGridWidth(Fraction(1000, 1), Fraction(1000, 1));
SetActiveLayer( SD_RESSTR(STR_LAYER_LAYOUT) );
mbNoColors = true;
mbNoAttribs = false;
maVisArea = Rectangle( Point(), Size(0, 0) );
mePageKind = PageKind::Standard;
mePageKindOnLoad = PageKind::Standard;
mnSelectedPage = 0;
mnSelectedPageOnLoad = 0;
meEditMode = EditMode::Page;
// meStandardEditMode = EditMode::Page;
// meNotesEditMode = EditMode::Page;
// meHandoutEditMode = EditMode::MasterPage;
SetViewShEditModeOnLoad(EditMode::Page);
mbLayerMode = false;
SetEliminatePolyPoints(false);
mbDoubleClickTextEdit = false;
mbClickChangeRotation = false;
mnSlidesPerRow = 4;
{
bool bUseContrast = Application::GetSettings().GetStyleSettings().GetHighContrastMode();
mnDrawMode = bUseContrast ? OUTPUT_DRAWMODE_CONTRAST : OUTPUT_DRAWMODE_COLOR;
}
mbIsNavigatorShowingAllShapes = false;
SetPreviousViewShellType (ViewShell::ST_NONE);
SetViewShellTypeOnLoad (ViewShell::ST_IMPRESS);
// get default for design mode
bool bInitDesignMode = pDrawDoc->GetOpenInDesignMode();
if( pDrawDoc->OpenInDesignModeIsDefaulted() )
{
bInitDesignMode = true;
}
SfxObjectShell* pObjShell = pDrawDoc->GetObjectShell();
if( pObjShell && pObjShell->IsReadOnly() )
bInitDesignMode = false;
SetDesignMode( bInitDesignMode );
Update( SD_MOD()->GetSdOptions(pDrawDoc->GetDocumentType()) );
}
}
FrameView::~FrameView()
{
}
void FrameView::Connect()
{
mnRefCount++;
}
void FrameView::Disconnect()
{
if (mnRefCount > 0)
{
mnRefCount--;
}
if (mnRefCount == 0)
{
delete this;
}
}
/**
* Update with data from the specified SdOptions
*/
void FrameView::Update(SdOptions* pOptions)
{
if (pOptions)
{
mbRuler = pOptions->IsRulerVisible();
SetGridVisible( pOptions->IsGridVisible() );
SetSnapAngle( pOptions->GetAngle() );
SetGridSnap( pOptions->IsUseGridSnap() );
SetBordSnap( pOptions->IsSnapBorder() );
SetHlplSnap( pOptions->IsSnapHelplines() );
SetOFrmSnap( pOptions->IsSnapFrame() );
SetOPntSnap( pOptions->IsSnapPoints() );
SetHlplVisible( pOptions->IsHelplines() );
SetDragStripes( pOptions->IsDragStripes() );
SetPlusHandlesAlwaysVisible( pOptions->IsHandlesBezier() );
SetSnapMagneticPixel( pOptions->GetSnapArea() );
SetMarkedHitMovesAlways( pOptions->IsMarkedHitMovesAlways() );
SetMoveOnlyDragging( pOptions->IsMoveOnlyDragging() );
SetSlantButShear( pOptions->IsMoveOnlyDragging() );
SetNoDragXorPolys ( !pOptions->IsMoveOutline() );
SetCrookNoContortion( pOptions->IsCrookNoContortion() );
SetAngleSnapEnabled( pOptions->IsRotate() );
SetBigOrtho( pOptions->IsBigOrtho() );
SetOrtho( pOptions->IsOrtho() );
SetEliminatePolyPointLimitAngle( pOptions->GetEliminatePolyPointLimitAngle() );
GetModel()->SetPickThroughTransparentTextFrames( pOptions->IsPickThrough() );
SetSolidDragging( pOptions->IsSolidDragging() );
SetGridCoarse( Size( pOptions->GetFieldDrawX(), pOptions->GetFieldDrawY() ) );
SetGridFine( Size( pOptions->GetFieldDivisionX(), pOptions->GetFieldDivisionY() ) );
Fraction aFractX(pOptions->GetFieldDrawX(), pOptions->GetFieldDrawX() / ( pOptions->GetFieldDivisionX() ? pOptions->GetFieldDivisionX() : 1 ));
Fraction aFractY(pOptions->GetFieldDrawY(), pOptions->GetFieldDrawY() / ( pOptions->GetFieldDivisionY() ? pOptions->GetFieldDivisionY() : 1 ));
SetSnapGridWidth(aFractX, aFractY);
SetQuickEdit(pOptions->IsQuickEdit());
// #i26631#
SetMasterPagePaintCaching( pOptions->IsMasterPagePaintCaching() );
SetDragWithCopy(pOptions->IsDragWithCopy());
SetDoubleClickTextEdit( pOptions->IsDoubleClickTextEdit() );
SetClickChangeRotation( pOptions->IsClickChangeRotation() );
}
}
/**
* Set EditMode (Page or MasterPage) of working mode
*/
void FrameView::SetViewShEditMode(EditMode eMode)
{
meEditMode = eMode;
}
/**
* Return EditMode (Page or MasterPage) of working mode
*/
EditMode FrameView::GetViewShEditMode()
{
return meEditMode;
}
void FrameView::SetViewShEditModeOnLoad (EditMode eMode)
{
meEditModeOnLoad = eMode;
}
static OUString createHelpLinesString( const SdrHelpLineList& rHelpLines )
{
OUStringBuffer aLines;
const sal_uInt16 nCount = rHelpLines.GetCount();
for( sal_uInt16 nHlpLine = 0; nHlpLine < nCount; nHlpLine++ )
{
const SdrHelpLine& rHelpLine = rHelpLines[nHlpLine];
const Point& rPos = rHelpLine.GetPos();
switch( rHelpLine.GetKind() )
{
case SdrHelpLineKind::Point:
aLines.append( 'P' );
aLines.append( (sal_Int32)rPos.X() );
aLines.append( ',' );
aLines.append( (sal_Int32)rPos.Y() );
break;
case SdrHelpLineKind::Vertical:
aLines.append( 'V' );
aLines.append( (sal_Int32)rPos.X() );
break;
case SdrHelpLineKind::Horizontal:
aLines.append( 'H' );
aLines.append( (sal_Int32)rPos.Y() );
break;
default:
OSL_FAIL( "Unsupported helpline Kind!" );
}
}
return aLines.makeStringAndClear();
}
#define addValue( n, v ) push_back( std::pair< OUString, Any >( OUString( n ), v ) )
void FrameView::WriteUserDataSequence ( css::uno::Sequence < css::beans::PropertyValue >& rValues, bool )
{
std::vector< std::pair< OUString, Any > > aUserData;
aUserData.addValue( sUNO_View_GridIsVisible, makeAny( IsGridVisible() ) );
aUserData.addValue( sUNO_View_GridIsFront, makeAny( IsGridFront() ) );
aUserData.addValue( sUNO_View_IsSnapToGrid, makeAny( IsGridSnap() ) );
aUserData.addValue( sUNO_View_IsSnapToPageMargins, makeAny( IsBordSnap() ) );
aUserData.addValue( sUNO_View_IsSnapToSnapLines, makeAny( IsHlplSnap() ) );
aUserData.addValue( sUNO_View_IsSnapToObjectFrame, makeAny( IsOFrmSnap() ) );
aUserData.addValue( sUNO_View_IsSnapToObjectPoints, makeAny( IsOPntSnap() ) );
aUserData.addValue( sUNO_View_IsPlusHandlesAlwaysVisible, makeAny( IsPlusHandlesAlwaysVisible() ) );
aUserData.addValue( sUNO_View_IsFrameDragSingles, makeAny( IsFrameDragSingles() ) );
aUserData.addValue( sUNO_View_EliminatePolyPointLimitAngle, makeAny( (sal_Int32)GetEliminatePolyPointLimitAngle() ) );
aUserData.addValue( sUNO_View_IsEliminatePolyPoints, makeAny( IsEliminatePolyPoints() ) );
Any aAny;
GetVisibleLayers().QueryValue( aAny );
aUserData.addValue( sUNO_View_VisibleLayers, aAny );
GetPrintableLayers().QueryValue( aAny );
aUserData.addValue( sUNO_View_PrintableLayers, aAny );
GetLockedLayers().QueryValue( aAny );
aUserData.addValue( sUNO_View_LockedLayers, aAny );
aUserData.addValue( sUNO_View_NoAttribs, makeAny( IsNoAttribs() ) );
aUserData.addValue( sUNO_View_NoColors, makeAny( IsNoColors() ) );
if( GetStandardHelpLines().GetCount() )
aUserData.addValue( sUNO_View_SnapLinesDrawing, makeAny( createHelpLinesString( GetStandardHelpLines() ) ) );
if( GetNotesHelpLines().GetCount() )
aUserData.addValue( sUNO_View_SnapLinesNotes, makeAny( createHelpLinesString( GetNotesHelpLines() ) ) );
if( GetHandoutHelpLines().GetCount() )
aUserData.addValue( sUNO_View_SnapLinesHandout, makeAny( createHelpLinesString( GetHandoutHelpLines() ) ) );
aUserData.addValue( sUNO_View_RulerIsVisible, makeAny( HasRuler() ) );
aUserData.addValue( sUNO_View_PageKind, makeAny( (sal_Int16)GetPageKind() ) );
aUserData.addValue( sUNO_View_SelectedPage, makeAny( (sal_Int16)GetSelectedPage() ) );
aUserData.addValue( sUNO_View_IsLayerMode, makeAny( IsLayerMode() ) );
aUserData.addValue( sUNO_View_IsDoubleClickTextEdit, makeAny( IsDoubleClickTextEdit() ) );
aUserData.addValue( sUNO_View_IsClickChangeRotation, makeAny( IsClickChangeRotation() ) );
aUserData.addValue( sUNO_View_SlidesPerRow, makeAny( (sal_Int16)GetSlidesPerRow() ) );
aUserData.addValue( sUNO_View_EditMode, makeAny( (sal_Int32)GetViewShEditMode() ) );
// aUserData.addValue( sUNO_View_EditModeStandard, makeAny( (sal_Int32)GetViewShEditMode( PageKind::Standard ) ) );
// aUserData.addValue( sUNO_View_EditModeNotes, makeAny( (sal_Int32)GetViewShEditMode( PageKind::Notes ) ) );
// aUserData.addValue( sUNO_View_EditModeHandout, makeAny( (sal_Int32)GetViewShEditMode( PageKind::Handout ) ) );
{
const Rectangle aVisArea = GetVisArea();
aUserData.addValue( sUNO_View_VisibleAreaTop, makeAny( (sal_Int32)aVisArea.Top() ) );
aUserData.addValue( sUNO_View_VisibleAreaLeft, makeAny( (sal_Int32)aVisArea.Left() ) );
aUserData.addValue( sUNO_View_VisibleAreaWidth, makeAny( (sal_Int32)aVisArea.GetWidth() ) );
aUserData.addValue( sUNO_View_VisibleAreaHeight, makeAny( (sal_Int32)aVisArea.GetHeight() ) );
}
aUserData.addValue( sUNO_View_GridCoarseWidth, makeAny( (sal_Int32)GetGridCoarse().Width() ) );
aUserData.addValue( sUNO_View_GridCoarseHeight, makeAny( (sal_Int32)GetGridCoarse().Height() ) );
aUserData.addValue( sUNO_View_GridFineWidth, makeAny( (sal_Int32)GetGridFine().Width() ) );
aUserData.addValue( sUNO_View_GridFineHeight, makeAny( (sal_Int32)GetGridFine().Height() ) );
aUserData.addValue( sUNO_View_GridSnapWidthXNumerator, makeAny( (sal_Int32)GetSnapGridWidthX().GetNumerator() ) );
aUserData.addValue( sUNO_View_GridSnapWidthXDenominator, makeAny( (sal_Int32)GetSnapGridWidthX().GetDenominator() ) );
aUserData.addValue( sUNO_View_GridSnapWidthYNumerator, makeAny( (sal_Int32)GetSnapGridWidthY().GetNumerator() ) );
aUserData.addValue( sUNO_View_GridSnapWidthYDenominator, makeAny( (sal_Int32)GetSnapGridWidthY().GetDenominator() ) );
aUserData.addValue( sUNO_View_IsAngleSnapEnabled, makeAny( IsAngleSnapEnabled() ) );
aUserData.addValue( sUNO_View_SnapAngle, makeAny( (sal_Int32)GetSnapAngle() ) );
const sal_Int32 nOldLength = rValues.getLength();
rValues.realloc( nOldLength + aUserData.size() );
PropertyValue* pValue = &(rValues.getArray()[nOldLength]);
std::vector< std::pair< OUString, Any > >::iterator aIter( aUserData.begin() );
for( ; aIter != aUserData.end(); ++aIter, ++pValue )
{
pValue->Name = (*aIter).first;
pValue->Value = (*aIter).second;
}
}
#undef addValue
static void createHelpLinesFromString( const OUString& rLines, SdrHelpLineList& rHelpLines )
{
const sal_Unicode * pStr = rLines.getStr();
SdrHelpLine aNewHelpLine;
OUStringBuffer sBuffer;
while( *pStr )
{
Point aPoint;
switch( *pStr )
{
case (sal_Unicode)'P':
aNewHelpLine.SetKind( SdrHelpLineKind::Point );
break;
case (sal_Unicode)'V':
aNewHelpLine.SetKind( SdrHelpLineKind::Vertical );
break;
case (sal_Unicode)'H':
aNewHelpLine.SetKind( SdrHelpLineKind::Horizontal );
break;
default:
OSL_FAIL( "syntax error in snap lines settings string" );
return;
}
pStr++;
while( (*pStr >= '0' && *pStr <= '9') || (*pStr == '+') || (*pStr == '-') )
{
sBuffer.append( *pStr++ );
}
sal_Int32 nValue = sBuffer.makeStringAndClear().toInt32();
if( aNewHelpLine.GetKind() == SdrHelpLineKind::Horizontal )
{
aPoint.Y() = nValue;
}
else
{
aPoint.X() = nValue;
if( aNewHelpLine.GetKind() == SdrHelpLineKind::Point )
{
if( *pStr++ != ',' )
return;
while( (*pStr >= '0' && *pStr <= '9') || (*pStr == '+') || (*pStr == '-') )
{
sBuffer.append( *pStr++ );
}
aPoint.Y() = sBuffer.makeStringAndClear().toInt32();
}
}
aNewHelpLine.SetPos( aPoint );
rHelpLines.Insert( aNewHelpLine );
}
}
void FrameView::ReadUserDataSequence ( const css::uno::Sequence < css::beans::PropertyValue >& rSequence, bool )
{
const sal_Int32 nLength = rSequence.getLength();
if (nLength)
{
SdDrawDocument* pDrawDocument = dynamic_cast<SdDrawDocument*>(GetModel());
const bool bImpress = pDrawDocument && pDrawDocument->GetDocumentType() == DocumentType::Impress;
bool bBool = false;
sal_Int32 nInt32 = 0;
sal_Int16 nInt16 = 0;
OUString aString;
sal_Int32 aSnapGridWidthXNum = GetSnapGridWidthX().GetNumerator();
sal_Int32 aSnapGridWidthXDom = GetSnapGridWidthX().GetDenominator();
sal_Int32 aSnapGridWidthYNum = GetSnapGridWidthY().GetNumerator();
sal_Int32 aSnapGridWidthYDom = GetSnapGridWidthY().GetDenominator();
const css::beans::PropertyValue *pValue = rSequence.getConstArray();
for (sal_Int32 i = 0 ; i < nLength; i++, pValue++ )
{
if ( pValue->Name == sUNO_View_ViewId )
{
}
else if ( pValue->Name == sUNO_View_SnapLinesDrawing )
{
if( pValue->Value >>= aString )
{
SdrHelpLineList aHelpLines;
createHelpLinesFromString( aString, aHelpLines );
SetStandardHelpLines( aHelpLines );
}
}
else if ( pValue->Name == sUNO_View_SnapLinesNotes )
{
if( pValue->Value >>= aString )
{
SdrHelpLineList aHelpLines;
createHelpLinesFromString( aString, aHelpLines );
SetNotesHelpLines( aHelpLines );
}
}
else if ( pValue->Name == sUNO_View_SnapLinesHandout )
{
if( pValue->Value >>= aString )
{
SdrHelpLineList aHelpLines;
createHelpLinesFromString( aString, aHelpLines );
SetHandoutHelpLines( aHelpLines );
}
}
else if ( pValue->Name == sUNO_View_RulerIsVisible )
{
if( pValue->Value >>= bBool )
{
SetRuler( bBool );
}
}
else if ( pValue->Name == sUNO_View_PageKind )
{
if( pValue->Value >>= nInt16 )
{
SdDrawDocument* pDoc = dynamic_cast< SdDrawDocument* >( GetModel() );
if( pDoc && pDoc->GetDocSh() && ( SfxObjectCreateMode::EMBEDDED == pDoc->GetDocSh()->GetCreateMode() ) )
SetPageKind( (PageKind)nInt16 );
SetPageKindOnLoad( (PageKind)nInt16 );
}
}
else if ( pValue->Name == sUNO_View_SelectedPage )
{
if( pValue->Value >>= nInt16 )
{
SdDrawDocument* pDoc = dynamic_cast< SdDrawDocument* >( GetModel() );
if( pDoc && pDoc->GetDocSh() && ( SfxObjectCreateMode::EMBEDDED == pDoc->GetDocSh()->GetCreateMode() ) )
SetSelectedPage( (sal_uInt16)nInt16 );
SetSelectedPageOnLoad( (sal_uInt16)nInt16 );
}
}
else if ( pValue->Name == sUNO_View_IsLayerMode )
{
if( pValue->Value >>= bBool )
{
SetLayerMode( bBool );
}
}
else if ( pValue->Name == sUNO_View_IsDoubleClickTextEdit )
{
if( pValue->Value >>= bBool )
{
SetDoubleClickTextEdit( bBool );
}
}
else if ( pValue->Name == sUNO_View_IsClickChangeRotation )
{
if( pValue->Value >>= bBool )
{
SetClickChangeRotation( bBool );
}
}
else if ( pValue->Name == sUNO_View_SlidesPerRow )
{
if( pValue->Value >>= nInt16 )
{
SetSlidesPerRow( (sal_uInt16)nInt16 );
}
}
else if ( pValue->Name == sUNO_View_EditMode )
{
if( pValue->Value >>= nInt32 )
{
SdDrawDocument* pDoc = dynamic_cast< SdDrawDocument* >( GetModel() );
if( pDoc && pDoc->GetDocSh() && ( SfxObjectCreateMode::EMBEDDED == pDoc->GetDocSh()->GetCreateMode() ) )
SetViewShEditMode( (EditMode)nInt32 );
}
}
// This one is kept for compatibility. Old value read from sUNO_View_EditModeStandard
// is used. New value will be written into sUNO_View_EditMode.
// Values from sUNO_View_EditModeNotes and sUNO_View_EditModeHangout will be ignored.
else if ( pValue->Name == sUNO_View_EditModeStandard )
{
if( pValue->Value >>= nInt32 )
{
SdDrawDocument* pDoc = dynamic_cast< SdDrawDocument* >( GetModel() );
if( pDoc && pDoc->GetDocSh() && ( SfxObjectCreateMode::EMBEDDED == pDoc->GetDocSh()->GetCreateMode() ) )
SetViewShEditMode( (EditMode)nInt32 );
}
}
else if ( pValue->Name == sUNO_View_VisibleAreaTop )
{
sal_Int32 nTop = 0;
if( pValue->Value >>= nTop )
{
Rectangle aVisArea( GetVisArea() );
aVisArea.Bottom() += nTop - aVisArea.Top();
aVisArea.Top() = nTop;
SetVisArea( aVisArea );
}
}
else if ( pValue->Name == sUNO_View_VisibleAreaLeft )
{
sal_Int32 nLeft = 0;
if( pValue->Value >>= nLeft )
{
Rectangle aVisArea( GetVisArea() );
aVisArea.Right() += nLeft - aVisArea.Left();
aVisArea.Left() = nLeft;
SetVisArea( aVisArea );
}
}
else if ( pValue->Name == sUNO_View_VisibleAreaWidth )
{
sal_Int32 nWidth = 0;
if( pValue->Value >>= nWidth )
{
Rectangle aVisArea( GetVisArea() );
aVisArea.Right() = aVisArea.Left() + nWidth - 1;
SetVisArea( aVisArea );
}
}
else if ( pValue->Name == sUNO_View_VisibleAreaHeight )
{
sal_Int32 nHeight = 0;
if( pValue->Value >>= nHeight )
{
Rectangle aVisArea( GetVisArea() );
aVisArea.Bottom() = nHeight + aVisArea.Top() - 1;
SetVisArea( aVisArea );
}
}
else if ( pValue->Name == sUNO_View_GridIsVisible )
{
if( pValue->Value >>= bBool )
{
SetGridVisible( bBool );
}
}
else if ( pValue->Name == sUNO_View_IsSnapToGrid )
{
if( pValue->Value >>= bBool )
{
SetGridSnap( bBool );
}
}
else if ( pValue->Name == sUNO_View_GridIsFront )
{
if( pValue->Value >>= bBool )
{
SetGridFront( bBool );
}
}
else if ( pValue->Name == sUNO_View_IsSnapToPageMargins )
{
if( pValue->Value >>= bBool )
{
SetBordSnap( bBool );
}
}
else if ( pValue->Name == sUNO_View_IsSnapToSnapLines )
{
if( pValue->Value >>= bBool )
{
SetHlplSnap( bBool );
}
}
else if ( pValue->Name == sUNO_View_IsSnapToObjectFrame )
{
if( pValue->Value >>= bBool )
{
SetOFrmSnap( bBool );
}
}
else if ( pValue->Name == sUNO_View_IsSnapToObjectPoints )
{
if( pValue->Value >>= bBool )
{
SetOPntSnap( bBool );
}
}
else if ( pValue->Name == sUNO_View_IsPlusHandlesAlwaysVisible )
{
if( pValue->Value >>= bBool )
{
SetPlusHandlesAlwaysVisible( bBool );
}
}
else if ( pValue->Name == sUNO_View_IsFrameDragSingles )
{
if( pValue->Value >>= bBool )
{
SetFrameDragSingles( bBool );
}
}
else if ( pValue->Name == sUNO_View_EliminatePolyPointLimitAngle )
{
if( pValue->Value >>= nInt32 )
{
SetEliminatePolyPointLimitAngle( nInt32 );
}
}
else if ( pValue->Name == sUNO_View_IsEliminatePolyPoints )
{
if( pValue->Value >>= bBool )
{
SetEliminatePolyPoints( bBool );
}
}
else if ( pValue->Name == sUNO_View_ActiveLayer )
{
if( pValue->Value >>= aString )
{
SetActiveLayer( aString );
}
}
else if ( pValue->Name == sUNO_View_NoAttribs )
{
if( pValue->Value >>= bBool )
{
SetNoAttribs( bBool );
}
}
else if ( pValue->Name == sUNO_View_NoColors )
{
if( pValue->Value >>= bBool )
{
SetNoColors( bBool );
}
}
else if ( pValue->Name == sUNO_View_GridCoarseWidth )
{
if( pValue->Value >>= nInt32 )
{
const Size aCoarse( nInt32, GetGridCoarse().Height() );
SetGridCoarse( aCoarse );
}
}
else if ( pValue->Name == sUNO_View_GridCoarseHeight )
{
if( pValue->Value >>= nInt32 )
{
const Size aCoarse( GetGridCoarse().Width(), nInt32 );
SetGridCoarse( aCoarse );
}
}
else if ( pValue->Name == sUNO_View_GridFineWidth )
{
if( pValue->Value >>= nInt32 )
{
const Size aCoarse( nInt32, GetGridFine().Height() );
SetGridFine( aCoarse );
}
}
else if ( pValue->Name == sUNO_View_GridFineHeight )
{
if( pValue->Value >>= nInt32 )
{
const Size aCoarse( GetGridFine().Width(), nInt32 );
SetGridFine( aCoarse );
}
}
else if ( pValue->Name == sUNO_View_IsAngleSnapEnabled )
{
if( pValue->Value >>= bBool )
{
SetAngleSnapEnabled( bBool );
}
}
else if ( pValue->Name == sUNO_View_SnapAngle )
{
if( pValue->Value >>= nInt32 )
{
SetSnapAngle( nInt32 );
}
}
else if ( pValue->Name == sUNO_View_GridSnapWidthXNumerator )
{
pValue->Value >>= aSnapGridWidthXNum;
}
else if ( pValue->Name == sUNO_View_GridSnapWidthXDenominator )
{
pValue->Value >>= aSnapGridWidthXDom;
}
else if ( pValue->Name == sUNO_View_GridSnapWidthYNumerator )
{
pValue->Value >>= aSnapGridWidthYNum;
}
else if ( pValue->Name == sUNO_View_GridSnapWidthYDenominator )
{
pValue->Value >>= aSnapGridWidthYDom;
}
else if (!bImpress && pValue->Name == sUNO_View_VisibleLayers )
{
SetOfByte aSetOfBytes;
aSetOfBytes.PutValue( pValue->Value );
SetVisibleLayers( aSetOfBytes );
}
else if (!bImpress && pValue->Name == sUNO_View_PrintableLayers )
{
SetOfByte aSetOfBytes;
aSetOfBytes.PutValue( pValue->Value );
SetPrintableLayers( aSetOfBytes );
}
else if (!bImpress && pValue->Name == sUNO_View_LockedLayers )
{
SetOfByte aSetOfBytes;
aSetOfBytes.PutValue( pValue->Value );
SetLockedLayers( aSetOfBytes );
}
}
SetViewShEditModeOnLoad(EditMode::Page);
const Fraction aSnapGridWidthX( aSnapGridWidthXNum, aSnapGridWidthXDom );
const Fraction aSnapGridWidthY( aSnapGridWidthYNum, aSnapGridWidthYDom );
SetSnapGridWidth( aSnapGridWidthX, aSnapGridWidthY );
}
}
void FrameView::SetPreviousViewShellType (ViewShell::ShellType eType)
{
mePreviousViewShellType = eType;
}
void FrameView::SetViewShellTypeOnLoad (ViewShell::ShellType eType)
{
meViewShellTypeOnLoad = eType;
}
void FrameView::SetSelectedPage(sal_uInt16 nPage)
{
mnSelectedPage = nPage;
}
void FrameView::SetIsNavigatorShowingAllShapes (const bool bIsNavigatorShowingAllShapes)
{
mbIsNavigatorShowingAllShapes = bIsNavigatorShowingAllShapes;
}
} // end of namespace sd
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */