summaryrefslogtreecommitdiff
path: root/svx/source/outliner
diff options
context:
space:
mode:
Diffstat (limited to 'svx/source/outliner')
-rw-r--r--svx/source/outliner/makefile.mk64
-rw-r--r--svx/source/outliner/outl_pch.cxx34
-rw-r--r--svx/source/outliner/outl_pch.hxx38
-rw-r--r--svx/source/outliner/outleeng.cxx241
-rw-r--r--svx/source/outliner/outleeng.hxx96
-rw-r--r--svx/source/outliner/outlin2.cxx810
-rw-r--r--svx/source/outliner/outliner.cxx2178
-rw-r--r--svx/source/outliner/outliner.hrc48
-rw-r--r--svx/source/outliner/outliner.src86
-rw-r--r--svx/source/outliner/outlobj.cxx274
-rw-r--r--svx/source/outliner/outlundo.cxx231
-rw-r--r--svx/source/outliner/outlundo.hxx146
-rw-r--r--svx/source/outliner/outlvw.cxx1669
-rw-r--r--svx/source/outliner/paralist.cxx290
-rw-r--r--svx/source/outliner/paralist.hxx74
15 files changed, 0 insertions, 6279 deletions
diff --git a/svx/source/outliner/makefile.mk b/svx/source/outliner/makefile.mk
deleted file mode 100644
index deef3530499c..000000000000
--- a/svx/source/outliner/makefile.mk
+++ /dev/null
@@ -1,64 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.6 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..
-
-PRJNAME=svx
-TARGET=outliner
-AUTOSEG=true
-ENABLE_EXCEPTIONS=TRUE
-
-PROJECTPCH4DLL=TRUE
-PROJECTPCH=outl_pch
-PROJECTPCHSOURCE=outl_pch
-
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-.INCLUDE : $(PRJ)$/util$/makefile.pmk
-
-# --- Allgemein ----------------------------------------------------------
-
-SLOFILES= \
- $(SLO)$/outlundo.obj \
- $(SLO)$/outliner.obj \
- $(SLO)$/outlin2.obj \
- $(SLO)$/paralist.obj \
- $(SLO)$/outlvw.obj \
- $(SLO)$/outleeng.obj \
- $(SLO)$/outlobj.obj
-
-SRS1NAME=$(TARGET)
-SRC1FILES= outliner.src
-
-.INCLUDE : target.mk
-
diff --git a/svx/source/outliner/outl_pch.cxx b/svx/source/outliner/outl_pch.cxx
deleted file mode 100644
index a86ea5686866..000000000000
--- a/svx/source/outliner/outl_pch.cxx
+++ /dev/null
@@ -1,34 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: outl_pch.cxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svx.hxx"
-#include <outl_pch.hxx>
-
diff --git a/svx/source/outliner/outl_pch.hxx b/svx/source/outliner/outl_pch.hxx
deleted file mode 100644
index 18d23c188d25..000000000000
--- a/svx/source/outliner/outl_pch.hxx
+++ /dev/null
@@ -1,38 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: outl_pch.hxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include <svl/intitem.hxx>
-
-#include <svx/editeng.hxx>
-#include <svx/editview.hxx>
-#include <svx/editdata.hxx>
-#include <eerdll.hxx>
-
-#include <svx/lrspitem.hxx>
-#include <svx/fhgtitem.hxx>
diff --git a/svx/source/outliner/outleeng.cxx b/svx/source/outliner/outleeng.cxx
deleted file mode 100644
index 6f5f5f68e5ab..000000000000
--- a/svx/source/outliner/outleeng.cxx
+++ /dev/null
@@ -1,241 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: outleeng.cxx,v $
- * $Revision: 1.19 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svx.hxx"
-#include <outl_pch.hxx>
-
-#define _OUTLINER_CXX
-#include <svx/outliner.hxx>
-#include <outleeng.hxx>
-#include <paralist.hxx>
-#include <outliner.hrc>
-#include <svl/itemset.hxx>
-#include <svx/eeitem.hxx>
-#include "editstat.hxx"
-#include "outlundo.hxx"
-
-OutlinerEditEng::OutlinerEditEng( Outliner* pEngOwner, SfxItemPool* pPool )
- : EditEngine( pPool )
-{
- pOwner = pEngOwner;
-}
-
-OutlinerEditEng::~OutlinerEditEng()
-{
-}
-
-void OutlinerEditEng::PaintingFirstLine( USHORT nPara, const Point& rStartPos, long nBaseLineY, const Point& rOrigin, short nOrientation, OutputDevice* pOutDev )
-{
- if( GetControlWord() && EE_CNTRL_OUTLINER )
- {
- PaintFirstLineInfo aInfo( nPara, rStartPos, nBaseLineY, rOrigin, nOrientation, pOutDev );
- pOwner->maPaintFirstLineHdl.Call( &aInfo );
- }
-
- pOwner->PaintBullet( nPara, rStartPos, rOrigin, nOrientation, pOutDev );
-}
-
-const SvxNumberFormat* OutlinerEditEng::GetNumberFormat( USHORT nPara ) const
-{
- const SvxNumberFormat* pFmt = NULL;
- if (pOwner)
- pFmt = pOwner->GetNumberFormat( nPara );
- return pFmt;
-}
-
-
-Rectangle OutlinerEditEng::GetBulletArea( USHORT nPara )
-{
- Rectangle aBulletArea = Rectangle( Point(), Point() );
- if ( nPara < pOwner->pParaList->GetParagraphCount() )
- {
- if ( pOwner->ImplHasBullet( nPara ) )
- aBulletArea = pOwner->ImpCalcBulletArea( nPara, FALSE, FALSE );
- }
- return aBulletArea;
-}
-
-void OutlinerEditEng::ParagraphInserted( USHORT nNewParagraph )
-{
- pOwner->ParagraphInserted( nNewParagraph );
-
- EditEngine::ParagraphInserted( nNewParagraph );
-}
-
-void OutlinerEditEng::ParagraphDeleted( USHORT nDeletedParagraph )
-{
- pOwner->ParagraphDeleted( nDeletedParagraph );
-
- EditEngine::ParagraphDeleted( nDeletedParagraph );
-}
-
-void OutlinerEditEng::ParagraphConnected( USHORT /*nLeftParagraph*/, USHORT nRightParagraph )
-{
- if( pOwner && pOwner->IsUndoEnabled() && !const_cast<EditEngine&>(pOwner->GetEditEngine()).IsInUndo() )
- {
- Paragraph* pPara = pOwner->GetParagraph( nRightParagraph );
- if( pPara && pOwner->HasParaFlag( pPara, PARAFLAG_ISPAGE ) )
- {
- pOwner->InsertUndo( new OutlinerUndoChangeParaFlags( pOwner, nRightParagraph, PARAFLAG_ISPAGE, 0 ) );
- }
- }
-}
-
-
-void OutlinerEditEng::StyleSheetChanged( SfxStyleSheet* pStyle )
-{
- pOwner->StyleSheetChanged( pStyle );
-}
-
-void OutlinerEditEng::ParaAttribsChanged( USHORT nPara )
-{
- pOwner->ParaAttribsChanged( nPara );
-}
-
-BOOL OutlinerEditEng::SpellNextDocument()
-{
- return pOwner->SpellNextDocument();
-}
-
-BOOL OutlinerEditEng::ConvertNextDocument()
-{
- return pOwner->ConvertNextDocument();
-}
-
-XubString OutlinerEditEng::GetUndoComment( USHORT nUndoId ) const
-{
- switch( nUndoId )
- {
- case OLUNDO_DEPTH:
- return XubString( EditResId( RID_OUTLUNDO_DEPTH ));
-
- case OLUNDO_EXPAND:
- return XubString( EditResId( RID_OUTLUNDO_EXPAND ));
-
- case OLUNDO_COLLAPSE:
- return XubString( EditResId( RID_OUTLUNDO_COLLAPSE ));
-
- case OLUNDO_ATTR:
- return XubString( EditResId( RID_OUTLUNDO_ATTR ));
-
- case OLUNDO_INSERT:
- return XubString( EditResId( RID_OUTLUNDO_INSERT ));
-
- default:
- return EditEngine::GetUndoComment( nUndoId );
- }
-}
-
-// #101498#
-void OutlinerEditEng::DrawingText( const Point& rStartPos, const XubString& rText, USHORT nTextStart, USHORT nTextLen,
- const sal_Int32* pDXArray, const SvxFont& rFont, USHORT nPara, USHORT nIndex, BYTE nRightToLeft,
- const EEngineData::WrongSpellVector* pWrongSpellVector,
- const SvxFieldData* pFieldData,
- bool bEndOfLine,
- bool bEndOfParagraph,
- bool bEndOfBullet,
- const ::com::sun::star::lang::Locale* pLocale,
- const Color& rOverlineColor,
- const Color& rTextLineColor)
-{
- // why do bullet here at all? Just use GetEditEnginePtr()->PaintingFirstLine
- // inside of ImpEditEngine::Paint which calls pOwner->PaintBullet with the correct
- // values for hor and ver. No change for not-layouting (painting).
- // changed, bullet rendering now using PaintBullet via
-/* if ( nIndex == 0 )
- {
- // Dann das Bullet 'malen', dort wird bStrippingPortions ausgewertet
- // und Outliner::DrawingText gerufen
-
- // DrawingText liefert die BaseLine, DrawBullet braucht Top().
-
- if(true)
- {
- // ##
- // another error: This call happens when only stripping, but the position
- // is already aligned to text output. For bullet rendering, it needs to be reset
- // to the correct value in x and y. PaintBullet takes care of X-start offset itself
- const Point aDocPosTopLeft(GetDocPosTopLeft( nPara ));
- const Point aCorrectedPos(rStartPos.X() - aDocPosTopLeft.X(), aDocPosTopLeft.Y() + GetFirstLineOffset( nPara ));
- pOwner->PaintBullet( nPara, aCorrectedPos, Point(), 0, GetRefDevice() );
- }
- else
- {
- Point aCorrectedPos( rStartPos );
- aCorrectedPos.Y() = GetDocPosTopLeft( nPara ).Y();
- aCorrectedPos.Y() += GetFirstLineOffset( nPara );
- pOwner->PaintBullet( nPara, aCorrectedPos, Point(), 0, GetRefDevice() );
- }
- } */
-
- // #101498#
- pOwner->DrawingText(rStartPos,rText,nTextStart,nTextLen,pDXArray,rFont,nPara,nIndex,nRightToLeft,
- pWrongSpellVector, pFieldData, bEndOfLine, bEndOfParagraph, bEndOfBullet, pLocale, rOverlineColor, rTextLineColor);
-}
-
-void OutlinerEditEng::FieldClicked( const SvxFieldItem& rField, USHORT nPara, USHORT nPos )
-{
- EditEngine::FieldClicked( rField, nPara, nPos ); // Falls URL
- pOwner->FieldClicked( rField, nPara, nPos );
-}
-
-void OutlinerEditEng::FieldSelected( const SvxFieldItem& rField, USHORT nPara, USHORT nPos )
-{
- pOwner->FieldSelected( rField, nPara, nPos );
-}
-
-XubString OutlinerEditEng::CalcFieldValue( const SvxFieldItem& rField, USHORT nPara, USHORT nPos, Color*& rpTxtColor, Color*& rpFldColor )
-{
- return pOwner->CalcFieldValue( rField, nPara, nPos, rpTxtColor, rpFldColor );
-}
-
-void OutlinerEditEng::SetParaAttribs( USHORT nPara, const SfxItemSet& rSet )
-{
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
- if( pPara )
- {
- if ( !IsInUndo() && IsUndoEnabled() )
- pOwner->UndoActionStart( OLUNDO_ATTR );
-
- EditEngine::SetParaAttribs( (USHORT)nPara, rSet );
-
- pOwner->ImplCheckNumBulletItem( (USHORT)nPara );
- // --> OD 2009-03-10 #i100014#
- // It is not a good idea to substract 1 from a count and cast the result
- // to USHORT without check, if the count is 0.
- pOwner->ImplCheckParagraphs( (USHORT)nPara, (USHORT) (pOwner->pParaList->GetParagraphCount()) );
- // <--
-
- if ( !IsInUndo() && IsUndoEnabled() )
- pOwner->UndoActionEnd( OLUNDO_ATTR );
- }
-}
-
diff --git a/svx/source/outliner/outleeng.hxx b/svx/source/outliner/outleeng.hxx
deleted file mode 100644
index be7c2084d717..000000000000
--- a/svx/source/outliner/outleeng.hxx
+++ /dev/null
@@ -1,96 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: outleeng.hxx,v $
- * $Revision: 1.15 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#ifndef _OUTLEENG_HXX
-#define _OUTLEENG_HXX
-
-#include <svx/outliner.hxx>
-#ifndef _EDITENG_HXX
-#include <svx/editeng.hxx>
-#endif
-
-typedef EENotify* EENotifyPtr;
-SV_DECL_PTRARR_DEL( NotifyList, EENotifyPtr, 1, 1 )
-
-class OutlinerEditEng : public EditEngine
-{
- Outliner* pOwner;
-
-protected:
-
- // derived from EditEngine. Allows Outliner objetcs to provide
- // bullet access to the EditEngine.
- virtual const SvxNumberFormat* GetNumberFormat( USHORT nPara ) const;
-
-public:
- OutlinerEditEng( Outliner* pOwner, SfxItemPool* pPool );
- ~OutlinerEditEng();
-
- virtual void PaintingFirstLine( USHORT nPara, const Point& rStartPos, long nBaseLineY, const Point& rOrigin, short nOrientation, OutputDevice* pOutDev );
-
- virtual void ParagraphInserted( USHORT nNewParagraph );
- virtual void ParagraphDeleted( USHORT nDeletedParagraph );
- virtual void ParagraphConnected( USHORT nLeftParagraph, USHORT nRightParagraph );
-
- // #101498#
- virtual void DrawingText(
- const Point& rStartPos, const XubString& rText, USHORT nTextStart, USHORT nTextLen, const sal_Int32* pDXArray, const SvxFont& rFont,
- USHORT nPara, USHORT nIndex, BYTE nRightToLeft,
- const EEngineData::WrongSpellVector* pWrongSpellVector,
- const SvxFieldData* pFieldData,
- bool bEndOfLine,
- bool bEndOfParagraph,
- bool bEndOfBullet,
- const ::com::sun::star::lang::Locale* pLocale,
- const Color& rOverlineColor,
- const Color& rTextLineColor);
-
- virtual void StyleSheetChanged( SfxStyleSheet* pStyle );
- virtual void ParaAttribsChanged( USHORT nPara );
- virtual BOOL SpellNextDocument();
- virtual XubString GetUndoComment( USHORT nUndoId ) const;
-
- // for text conversion
- virtual BOOL ConvertNextDocument();
-
- virtual void FieldClicked( const SvxFieldItem& rField, USHORT nPara, USHORT nPos );
- virtual void FieldSelected( const SvxFieldItem& rField, USHORT nPara, USHORT nPos );
- virtual XubString CalcFieldValue( const SvxFieldItem& rField, USHORT nPara, USHORT nPos, Color*& rTxtColor, Color*& rFldColor );
-
- virtual Rectangle GetBulletArea( USHORT nPara );
-
- virtual void SetParaAttribs( USHORT nPara, const SfxItemSet& rSet );
-
- // belongs into class Outliner, move there before incompatible update!
- Link aOutlinerNotifyHdl;
- NotifyList aNotifyCache;
-};
-
-#endif
-
diff --git a/svx/source/outliner/outlin2.cxx b/svx/source/outliner/outlin2.cxx
deleted file mode 100644
index f2da8129d87f..000000000000
--- a/svx/source/outliner/outlin2.cxx
+++ /dev/null
@@ -1,810 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: outlin2.cxx,v $
- * $Revision: 1.37 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svx.hxx"
-#include <outl_pch.hxx>
-
-#include <tools/list.hxx>
-#include <svl/style.hxx>
-#include <vcl/mapmod.hxx>
-
-#include <forbiddencharacterstable.hxx>
-
-#define _OUTLINER_CXX
-
-#include <svx/outliner.hxx>
-#include <paralist.hxx>
-#include <svx/outlobj.hxx>
-#include <outleeng.hxx>
-#include <outlundo.hxx>
-#include <svx/eeitem.hxx>
-#include <editstat.hxx>
-
-DBG_NAMEEX(Outliner)
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::linguistic2;
-
-// =====================================================================
-// ====================== Einfache Durchreicher =======================
-// ======================================================================
-
-void Outliner::SetUpdateMode( BOOL bUpdate )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetUpdateMode( bUpdate );
-}
-
-
-BOOL Outliner::GetUpdateMode() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetUpdateMode();
-}
-
-const SfxItemSet& Outliner::GetEmptyItemSet() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetEmptyItemSet();
-}
-
-void Outliner::EnableUndo( BOOL bEnable )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->EnableUndo( bEnable );
-}
-
-BOOL Outliner::IsUndoEnabled() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->IsUndoEnabled();
-}
-
-MapMode Outliner::GetRefMapMode() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetRefMapMode();
-}
-
-void Outliner::SetRefMapMode( const MapMode& rMMode )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetRefMapMode( rMMode );
-}
-
-void Outliner::SetBackgroundColor( const Color& rColor )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetBackgroundColor( rColor );
-}
-
-Color Outliner::GetBackgroundColor() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetBackgroundColor();
-}
-
-
-void Outliner::ClearModifyFlag()
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->ClearModifyFlag();
-}
-
-BOOL Outliner::IsModified() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->IsModified();
-}
-
-ULONG Outliner::GetTextHeight() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetTextHeight();
-}
-
-void Outliner::SetModifyHdl( const Link& rLink )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetModifyHdl( rLink );
-}
-
-Link Outliner::GetModifyHdl() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetModifyHdl();
-}
-
-void Outliner::SetNotifyHdl( const Link& rLink )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->aOutlinerNotifyHdl = rLink;
-
- if ( rLink.IsSet() )
- pEditEngine->SetNotifyHdl( LINK( this, Outliner, EditEngineNotifyHdl ) );
- else
- pEditEngine->SetNotifyHdl( Link() );
-
-}
-
-Link Outliner::GetNotifyHdl() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->aOutlinerNotifyHdl;
-}
-
-void Outliner::SetStatusEventHdl( const Link& rLink )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetStatusEventHdl( rLink );
-}
-
-Link Outliner::GetStatusEventHdl() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetStatusEventHdl();
-}
-
-void Outliner::SetDefTab( USHORT nTab )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetDefTab( nTab );
-}
-
-USHORT Outliner::GetDefTab() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetDefTab();
-}
-
-BOOL Outliner::IsFlatMode() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->IsFlatMode();
-}
-
-BOOL Outliner::UpdateFields()
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->UpdateFields();
-}
-
-void Outliner::RemoveFields( BOOL bKeepFieldText, TypeId aType )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->RemoveFields( bKeepFieldText, aType );
-}
-
-void Outliner::SetWordDelimiters( const String& rDelimiters )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetWordDelimiters( rDelimiters );
-}
-
-String Outliner::GetWordDelimiters() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetWordDelimiters();
-}
-
-String Outliner::GetWord( USHORT nPara, USHORT nIndex )
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetWord( nPara, nIndex );
-}
-
-void Outliner::Draw( OutputDevice* pOutDev, const Rectangle& rOutRect )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->Draw( pOutDev, rOutRect );
-}
-
-void Outliner::Draw( OutputDevice* pOutDev, const Rectangle& rOutRect, const Point& rStartDocPos )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->Draw( pOutDev, rOutRect, rStartDocPos );
-}
-
-
-void Outliner::Draw( OutputDevice* pOutDev, const Point& rStartPos, short nOrientation )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->Draw( pOutDev, rStartPos, nOrientation );
-}
-
-void Outliner::SetPaperSize( const Size& rSize )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetPaperSize( rSize );
-}
-
-const Size& Outliner::GetPaperSize() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetPaperSize();
-}
-
-void Outliner::SetPolygon( const basegfx::B2DPolyPolygon& rPolyPolygon )
-{
- DBG_CHKTHIS( Outliner, 0 );
- pEditEngine->SetPolygon( rPolyPolygon );
-}
-
-void Outliner::SetPolygon( const basegfx::B2DPolyPolygon& rPolyPolygon, const basegfx::B2DPolyPolygon* pLinePolyPolygon)
-{
- DBG_CHKTHIS( Outliner, 0 );
- pEditEngine->SetPolygon( rPolyPolygon, pLinePolyPolygon);
-}
-
-void Outliner::ClearPolygon()
-{
- DBG_CHKTHIS( Outliner, 0 );
- pEditEngine->ClearPolygon();
-}
-
-const PolyPolygon* Outliner::GetPolygon()
-{
- DBG_CHKTHIS( Outliner, 0 );
- return pEditEngine->GetPolygon();
-}
-
-const Size& Outliner::GetMinAutoPaperSize() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetMinAutoPaperSize();
-}
-
-void Outliner::SetMinAutoPaperSize( const Size& rSz )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetMinAutoPaperSize( rSz );
-}
-
-const Size& Outliner::GetMaxAutoPaperSize() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetMaxAutoPaperSize();
-}
-
-void Outliner::SetMaxAutoPaperSize( const Size& rSz )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetMaxAutoPaperSize( rSz );
-}
-
-BOOL Outliner::IsExpanded( Paragraph* pPara ) const
-{
- DBG_CHKTHIS(Outliner,0);
- return pParaList->HasVisibleChilds( pPara );
-}
-
-Paragraph* Outliner::GetParent( Paragraph* pParagraph ) const
-{
- DBG_CHKTHIS(Outliner,0);
- return pParaList->GetParent( pParagraph );
-}
-
-ULONG Outliner::GetChildCount( Paragraph* pParent ) const
-{
- DBG_CHKTHIS(Outliner,0);
- return pParaList->GetChildCount( pParent );
-}
-
-Size Outliner::CalcTextSize()
-{
- DBG_CHKTHIS(Outliner,0);
- return Size(pEditEngine->CalcTextWidth(),pEditEngine->GetTextHeight());
-}
-
-Point Outliner::GetDocPos( Paragraph* pPara )
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetDocPosTopLeft( (USHORT)pParaList->GetAbsPos( pPara ) );
-}
-
-void Outliner::SetStyleSheetPool( SfxStyleSheetPool* pSPool )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetStyleSheetPool( pSPool );
-}
-
-SfxStyleSheetPool* Outliner::GetStyleSheetPool()
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetStyleSheetPool();
-}
-
-SfxStyleSheet* Outliner::GetStyleSheet( ULONG nPara )
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetStyleSheet( (USHORT)nPara );
-}
-
-BOOL Outliner::IsInSelectionMode() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->IsInSelectionMode();
-}
-
-void Outliner::SetControlWord( ULONG nWord )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetControlWord( nWord );
-}
-
-ULONG Outliner::GetControlWord() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetControlWord();
-}
-
-void Outliner::SetAsianCompressionMode( USHORT n )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetAsianCompressionMode( n );
-}
-
-USHORT Outliner::GetAsianCompressionMode() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetAsianCompressionMode();
-}
-
-void Outliner::SetKernAsianPunctuation( BOOL b )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetKernAsianPunctuation( b );
-}
-
-BOOL Outliner::IsKernAsianPunctuation() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->IsKernAsianPunctuation();
-}
-
-void Outliner::SetAddExtLeading( BOOL bExtLeading )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetAddExtLeading( bExtLeading );
-}
-
-BOOL Outliner::IsAddExtLeading() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->IsAddExtLeading();
-}
-
-void Outliner::UndoActionStart( USHORT nId )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->UndoActionStart( nId );
-}
-
-void Outliner::UndoActionEnd( USHORT nId )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->UndoActionEnd( nId );
-}
-
-void Outliner::InsertUndo( EditUndo* pUndo )
-{
-#ifndef SVX_LIGHT
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->GetUndoManager().AddUndoAction( pUndo, FALSE );
-#endif
-}
-
-BOOL Outliner::IsInUndo()
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->IsInUndo();
-}
-
-ULONG Outliner::GetLineCount( ULONG nParagraph ) const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetLineCount( (USHORT)nParagraph );
-}
-
-USHORT Outliner::GetLineLen( ULONG nParagraph, USHORT nLine ) const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetLineLen( (USHORT)nParagraph, nLine );
-}
-
-ULONG Outliner::GetLineHeight( ULONG nParagraph, ULONG nLine )
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetLineHeight( (USHORT)nParagraph, (USHORT)nLine );
-}
-
-void Outliner::QuickRemoveCharAttribs( USHORT nPara, USHORT nWhich )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->QuickRemoveCharAttribs( nPara, nWhich );
-}
-
-EESpellState Outliner::HasSpellErrors()
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->HasSpellErrors();
-}
-
-sal_Bool Outliner::HasConvertibleTextPortion( LanguageType nLang )
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->HasConvertibleTextPortion( nLang );
-}
-
-BOOL Outliner::ConvertNextDocument()
-{
- DBG_CHKTHIS(Outliner,0);
- return FALSE;
-}
-
-void Outliner::SetDefaultLanguage( LanguageType eLang )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetDefaultLanguage( eLang );
-}
-
-LanguageType Outliner::GetDefaultLanguage() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetDefaultLanguage();
-}
-
-BOOL Outliner::HasOnlineSpellErrors() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->HasOnlineSpellErrors();
-}
-
-void Outliner::CompleteOnlineSpelling()
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->CompleteOnlineSpelling();
-}
-
-BOOL Outliner::HasText( const SvxSearchItem& rSearchItem )
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->HasText( rSearchItem );
-}
-
-void Outliner::SetEditTextObjectPool( SfxItemPool* pPool )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetEditTextObjectPool( pPool );
-}
-
-SfxItemPool* Outliner::GetEditTextObjectPool() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetEditTextObjectPool();
-}
-
-BOOL Outliner::SpellNextDocument()
-{
- DBG_CHKTHIS(Outliner,0);
- return FALSE;
-}
-
-
-void Outliner::SetSpeller( Reference< XSpellChecker1 > &xSpeller )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetSpeller( xSpeller );
-}
-Reference< XSpellChecker1 > Outliner::GetSpeller()
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetSpeller();
-}
-
-void Outliner::SetForbiddenCharsTable( vos::ORef<SvxForbiddenCharactersTable> xForbiddenChars )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetForbiddenCharsTable( xForbiddenChars );
-}
-
-vos::ORef<SvxForbiddenCharactersTable> Outliner::GetForbiddenCharsTable() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetForbiddenCharsTable();
-}
-
-
-Reference< XHyphenator > Outliner::GetHyphenator() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetHyphenator();
-}
-
-void Outliner::SetHyphenator( Reference< XHyphenator >& xHyph )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetHyphenator( xHyph );
-}
-
-OutputDevice* Outliner::GetRefDevice() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetRefDevice();
-}
-
-USHORT Outliner::GetFirstLineOffset( ULONG nParagraph )
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetFirstLineOffset( (USHORT)nParagraph );
-}
-
-ULONG Outliner::GetTextHeight( ULONG nParagraph ) const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetTextHeight((USHORT)nParagraph );
-}
-
-Point Outliner::GetDocPos( const Point& rPaperPos ) const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetDocPos( rPaperPos );
-}
-
-Point Outliner::GetDocPosTopLeft( ULONG nParagraph )
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetDocPosTopLeft( (USHORT)nParagraph );
-}
-
-BOOL Outliner::IsTextPos( const Point& rPaperPos, USHORT nBorder )
-{
- return IsTextPos( rPaperPos, nBorder, NULL );
-}
-
-BOOL Outliner::IsTextPos( const Point& rPaperPos, USHORT nBorder, BOOL* pbBullet )
-{
- DBG_CHKTHIS(Outliner,0);
- if ( pbBullet)
- *pbBullet = FALSE;
- BOOL bTextPos = pEditEngine->IsTextPos( rPaperPos, nBorder );
- if ( !bTextPos )
- {
- Point aDocPos = GetDocPos( rPaperPos );
- USHORT nPara = pEditEngine->FindParagraph( aDocPos.Y() );
- if ( ( nPara != EE_PARA_NOT_FOUND ) && ImplHasBullet( nPara ) )
- {
- Rectangle aBulArea = ImpCalcBulletArea( nPara, TRUE, TRUE );
- if ( aBulArea.IsInside( rPaperPos ) )
- {
- bTextPos = TRUE;
- if ( pbBullet)
- *pbBullet = TRUE;
- }
- }
- }
-
- return bTextPos;
-}
-
-void Outliner::QuickSetAttribs( const SfxItemSet& rSet, const ESelection& rSel )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->QuickSetAttribs( rSet, rSel );
-}
-
-void Outliner::QuickInsertText( const XubString& rText, const ESelection& rSel )
-{
- bFirstParaIsEmpty = FALSE;
- pEditEngine->QuickInsertText( rText, rSel );
-}
-
-void Outliner::QuickDelete( const ESelection& rSel )
-{
- bFirstParaIsEmpty = FALSE;
- pEditEngine->QuickDelete( rSel );
-}
-
-void Outliner::QuickInsertField( const SvxFieldItem& rFld, const ESelection& rSel )
-{
- DBG_CHKTHIS(Outliner,0);
- bFirstParaIsEmpty = FALSE;
- pEditEngine->QuickInsertField( rFld, rSel );
-}
-
-void Outliner::QuickInsertLineBreak( const ESelection& rSel )
-{
- DBG_CHKTHIS(Outliner,0);
- bFirstParaIsEmpty = FALSE;
- pEditEngine->QuickInsertLineBreak( rSel );
-}
-
-void Outliner::QuickFormatDoc( BOOL bFull )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->QuickFormatDoc( bFull );
-}
-
-void Outliner::SetGlobalCharStretching( USHORT nX, USHORT nY )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetGlobalCharStretching( nX, nY );
-}
-
-void Outliner::GetGlobalCharStretching( USHORT& rX, USHORT& rY )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->GetGlobalCharStretching( rX, rY );
-}
-
-
-void Outliner::DoStretchChars( USHORT nX, USHORT nY )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->DoStretchChars( nX, nY );
-}
-
-void Outliner::EraseVirtualDevice()
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->EraseVirtualDevice();
-}
-
-void Outliner::SetBigTextObjectStart( USHORT nStartAtPortionCount )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetBigTextObjectStart( nStartAtPortionCount );
-}
-
-USHORT Outliner::GetBigTextObjectStart() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetBigTextObjectStart();
-}
-
-BOOL Outliner::ShouldCreateBigTextObject() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->ShouldCreateBigTextObject();
-}
-
-void Outliner::SetVertical( BOOL b )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetVertical( b );
-}
-
-BOOL Outliner::IsVertical() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->IsVertical();
-}
-
-void Outliner::SetFixedCellHeight( BOOL bUseFixedCellHeight )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetFixedCellHeight( bUseFixedCellHeight );
-}
-
-BOOL Outliner::IsFixedCellHeight() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->IsFixedCellHeight();
-}
-
-
-void Outliner::SetDefaultHorizontalTextDirection( EEHorizontalTextDirection eHTextDir )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetDefaultHorizontalTextDirection( eHTextDir );
-}
-
-EEHorizontalTextDirection Outliner::GetDefaultHorizontalTextDirection() const
-{
- return pEditEngine->GetDefaultHorizontalTextDirection();
-}
-
-USHORT Outliner::GetScriptType( const ESelection& rSelection ) const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetScriptType( rSelection );
-}
-
-LanguageType Outliner::GetLanguage( USHORT nPara, USHORT nPos ) const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetLanguage( nPara, nPos );
-}
-
-void Outliner::RemoveAttribs( const ESelection& rSelection, sal_Bool bRemoveParaAttribs, sal_uInt16 nWhich )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->RemoveAttribs( rSelection, bRemoveParaAttribs, nWhich );
-}
-
-void Outliner::EnableAutoColor( BOOL b )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->EnableAutoColor( b );
-}
-
-BOOL Outliner::IsAutoColorEnabled() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->IsAutoColorEnabled();
-}
-
-void Outliner::ForceAutoColor( BOOL b )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->ForceAutoColor( b );
-}
-
-BOOL Outliner::IsForceAutoColor() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->IsForceAutoColor();
-}
-/*-- 13.10.2003 16:56:23---------------------------------------------------
-
- -----------------------------------------------------------------------*/
-void Outliner::StartSpelling(EditView& rEditView, sal_Bool bMultipleDoc)
-{
- pEditEngine->StartSpelling(rEditView, bMultipleDoc);
-}
-/*-- 13.10.2003 16:56:23---------------------------------------------------
-
- -----------------------------------------------------------------------*/
-void Outliner::EndSpelling()
-{
- pEditEngine->EndSpelling();
-}
-/*-- 13.10.2003 16:56:23---------------------------------------------------
-
- -----------------------------------------------------------------------*/
-bool Outliner::SpellSentence(EditView& rEditView, ::svx::SpellPortions& rToFill, bool bIsGrammarChecking )
-{
- return pEditEngine->SpellSentence(rEditView, rToFill, bIsGrammarChecking );
-}
-/*-- 08.09.2008 11:39:05---------------------------------------------------
-
- -----------------------------------------------------------------------*/
-void Outliner::PutSpellingToSentenceStart( EditView& rEditView )
-{
- pEditEngine->PutSpellingToSentenceStart( rEditView );
-}
-/*-- 13.10.2003 16:56:25---------------------------------------------------
-
- -----------------------------------------------------------------------*/
-void Outliner::ApplyChangedSentence(EditView& rEditView, const ::svx::SpellPortions& rNewPortions, bool bIsGrammarChecking )
-{
- pEditEngine->ApplyChangedSentence( rEditView, rNewPortions, bIsGrammarChecking );
-}
diff --git a/svx/source/outliner/outliner.cxx b/svx/source/outliner/outliner.cxx
deleted file mode 100644
index ab93e04b8461..000000000000
--- a/svx/source/outliner/outliner.cxx
+++ /dev/null
@@ -1,2178 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: outliner.cxx,v $
- * $Revision: 1.75.20.2 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svx.hxx"
-
-#include <outl_pch.hxx>
-
-#include <math.h>
-#include <svl/style.hxx>
-#include <vcl/wrkwin.hxx>
-#define _OUTLINER_CXX
-#include <svx/outliner.hxx>
-#include <paralist.hxx>
-#include <svx/outlobj.hxx>
-#include <outleeng.hxx>
-#include <outlundo.hxx>
-#include <svx/eeitem.hxx>
-#include <editstat.hxx>
-#include <svx/scripttypeitem.hxx>
-#include <svx/editobj.hxx>
-#include <svl/itemset.hxx>
-#include <svl/whiter.hxx>
-#include <vcl/metric.hxx>
-#include <svx/numitem.hxx>
-#include <svx/adjitem.hxx>
-#include <vcl/graph.hxx>
-#include <vcl/gdimtf.hxx>
-#include <vcl/metaact.hxx>
-#include <goodies/grfmgr.hxx>
-#include <svx/svxfont.hxx>
-#include <svx/brshitem.hxx>
-#include <svl/itempool.hxx>
-
-// #101498# calculate if it's RTL or not
-#include <unicode/ubidi.h>
-
-#define DEFAULT_SCALE 75
-
-static const USHORT nDefStyles = 3; // Sonderbehandlung fuer die ersten 3 Ebenen
-static const USHORT nDefBulletIndent = 800;
-static const USHORT nDefBulletWidth = 700;
-static const USHORT pDefBulletIndents[nDefStyles]= { 1400, 800, 800 };
-static const USHORT pDefBulletWidths[nDefStyles] = { 1000, 850, 700 };
-
-USHORT lcl_ImplGetDefBulletWidth( sal_Int16 nDepth )
-{
- return ( nDepth < nDefStyles ) ? pDefBulletWidths[nDepth] : nDefBulletWidth;
-}
-
-USHORT lcl_ImplGetDefBulletIndent( sal_Int16 nDepth )
-{
- USHORT nI = 0;
-
- if( nDepth >= 0 )
- {
- for ( sal_Int16 n = 0; n <= nDepth; n++ )
- nI = nI +
- ( ( n < nDefStyles ) ? pDefBulletIndents[n] : nDefBulletIndent );
- }
- return nI;
-}
-
-
-// ----------------------------------------------------------------------
-// Outliner
-// ----------------------------------------------------------------------
-DBG_NAME(Outliner);
-
-void Outliner::ImplCheckDepth( sal_Int16& rnDepth ) const
-{
- if( rnDepth < nMinDepth )
- rnDepth = nMinDepth;
- else if( rnDepth > nMaxDepth )
- rnDepth = nMaxDepth;
-}
-
-Paragraph* Outliner::Insert(const XubString& rText, ULONG nAbsPos, sal_Int16 nDepth)
-{
- DBG_CHKTHIS(Outliner,0);
- DBG_ASSERT(pParaList->GetParagraphCount(),"Insert:No Paras");
-
- Paragraph* pPara;
-
- ImplCheckDepth( nDepth );
-
- ULONG nParagraphCount = pParaList->GetParagraphCount();
- if( nAbsPos > nParagraphCount )
- nAbsPos = nParagraphCount;
-
- if( bFirstParaIsEmpty )
- {
- pPara = pParaList->GetParagraph( 0 );
- if( pPara->GetDepth() != nDepth )
- {
- nDepthChangedHdlPrevDepth = pPara->GetDepth();
- mnDepthChangeHdlPrevFlags = pPara->nFlags;
- pPara->SetDepth( nDepth );
- pHdlParagraph = pPara;
- DepthChangedHdl();
- }
- pPara->nFlags |= PARAFLAG_HOLDDEPTH;
- SetText( rText, pPara );
- }
- else
- {
- BOOL bUpdate = pEditEngine->GetUpdateMode();
- pEditEngine->SetUpdateMode( FALSE );
- ImplBlockInsertionCallbacks( TRUE );
- pPara = new Paragraph( nDepth );
- pParaList->Insert( pPara, nAbsPos );
- pEditEngine->InsertParagraph( (USHORT)nAbsPos, String() );
- DBG_ASSERT(pPara==pParaList->GetParagraph(nAbsPos),"Insert:Failed");
- ImplInitDepth( (USHORT)nAbsPos, nDepth, FALSE );
- pHdlParagraph = pPara;
- ParagraphInsertedHdl();
- pPara->nFlags |= PARAFLAG_HOLDDEPTH;
- SetText( rText, pPara );
- ImplBlockInsertionCallbacks( FALSE );
- pEditEngine->SetUpdateMode( bUpdate );
- }
- bFirstParaIsEmpty = FALSE;
- DBG_ASSERT(pEditEngine->GetParagraphCount()==pParaList->GetParagraphCount(),"SetText failed");
- return pPara;
-}
-
-
-void Outliner::ParagraphInserted( USHORT nPara )
-{
- DBG_CHKTHIS(Outliner,0);
-
- if ( bBlockInsCallback )
- return;
-
- if( bPasting || pEditEngine->IsInUndo() )
- {
- Paragraph* pPara = new Paragraph( -1 );
- pParaList->Insert( pPara, nPara );
- if( pEditEngine->IsInUndo() )
- {
- pPara->nFlags = PARAFLAG_SETBULLETTEXT;
- pPara->bVisible = TRUE;
- const SfxInt16Item& rLevel = (const SfxInt16Item&) pEditEngine->GetParaAttrib( nPara, EE_PARA_OUTLLEVEL );
- pPara->SetDepth( rLevel.GetValue() );
- }
- }
- else
- {
- sal_Int16 nDepth = -1;
- Paragraph* pParaBefore = pParaList->GetParagraph( nPara-1 );
- if ( pParaBefore )
- nDepth = pParaBefore->GetDepth();
-
- Paragraph* pPara = new Paragraph( nDepth );
- pParaList->Insert( pPara, nPara );
-
- if( !pEditEngine->IsInUndo() )
- {
- ImplCalcBulletText( nPara, TRUE, FALSE );
- pHdlParagraph = pPara;
- ParagraphInsertedHdl();
- }
- }
-}
-
-void Outliner::ParagraphDeleted( USHORT nPara )
-{
- DBG_CHKTHIS(Outliner,0);
-
- if ( bBlockInsCallback || ( nPara == EE_PARA_ALL ) )
- return;
-
- Paragraph* pPara = pParaList->GetParagraph( nPara );
- if (!pPara)
- return;
-
- sal_Int16 nDepth = pPara->GetDepth();
-
- if( !pEditEngine->IsInUndo() )
- {
- pHdlParagraph = pPara;
- ParagraphRemovingHdl();
- }
-
- pParaList->Remove( nPara );
- delete pPara;
-
- if( !pEditEngine->IsInUndo() && !bPasting )
- {
- pPara = pParaList->GetParagraph( nPara );
- if ( pPara && ( pPara->GetDepth() > nDepth ) )
- {
- ImplCalcBulletText( nPara, TRUE, FALSE );
- // naechsten auf gleicher Ebene suchen...
- while ( pPara && pPara->GetDepth() > nDepth )
- pPara = pParaList->GetParagraph( ++nPara );
- }
-
- if ( pPara && ( pPara->GetDepth() == nDepth ) )
- ImplCalcBulletText( nPara, TRUE, FALSE );
- }
-}
-
-void Outliner::Init( USHORT nMode )
-{
- nOutlinerMode = nMode;
-
- Clear();
-
- ULONG nCtrl = pEditEngine->GetControlWord();
- nCtrl &= ~(EE_CNTRL_OUTLINER|EE_CNTRL_OUTLINER2);
-
- SetMaxDepth( 9 );
-
- switch ( ImplGetOutlinerMode() )
- {
- case OUTLINERMODE_TEXTOBJECT:
- case OUTLINERMODE_TITLEOBJECT:
- break;
-
- case OUTLINERMODE_OUTLINEOBJECT:
- nCtrl |= EE_CNTRL_OUTLINER2;
- break;
- case OUTLINERMODE_OUTLINEVIEW:
- nCtrl |= EE_CNTRL_OUTLINER;
- break;
-
- default: DBG_ERROR( "Outliner::Init - Invalid Mode!" );
- }
-
- pEditEngine->SetControlWord( nCtrl );
-
- ImplInitDepth( 0, GetMinDepth(), FALSE );
-
- GetUndoManager().Clear();
-}
-
-void Outliner::SetMaxDepth( sal_Int16 nDepth, BOOL bCheckParagraphs )
-{
- if( nMaxDepth != nDepth )
- {
- nMaxDepth = Min( nDepth, (sal_Int16)(SVX_MAX_NUM-1) );
-
- if( bCheckParagraphs )
- {
- USHORT nParagraphs = (USHORT)pParaList->GetParagraphCount();
- for ( USHORT nPara = 0; nPara < nParagraphs; nPara++ )
- {
- Paragraph* pPara = pParaList->GetParagraph( nPara );
- if( pPara && pPara->GetDepth() > nMaxDepth )
- {
- SetDepth( pPara, nMaxDepth );
- }
- }
- }
- }
-}
-
-sal_Int16 Outliner::GetDepth( ULONG nPara ) const
-{
- Paragraph* pPara = pParaList->GetParagraph( nPara );
- DBG_ASSERT( pPara, "Outliner::GetDepth - Paragraph not found!" );
- return pPara ? pPara->GetDepth() : -1;
-}
-
-void Outliner::SetDepth( Paragraph* pPara, sal_Int16 nNewDepth )
-{
- DBG_CHKTHIS(Outliner,0);
-
- ImplCheckDepth( nNewDepth );
-
- if ( nNewDepth != pPara->GetDepth() )
- {
- nDepthChangedHdlPrevDepth = pPara->GetDepth();
- mnDepthChangeHdlPrevFlags = pPara->nFlags;
- pHdlParagraph = pPara;
-
- USHORT nPara = (USHORT)GetAbsPos( pPara );
- ImplInitDepth( nPara, nNewDepth, TRUE );
- ImplCalcBulletText( nPara, FALSE, FALSE );
-
- if ( ImplGetOutlinerMode() == OUTLINERMODE_OUTLINEOBJECT )
- ImplSetLevelDependendStyleSheet( nPara );
-
- DepthChangedHdl();
- }
-}
-
-sal_Int16 Outliner::GetNumberingStartValue( sal_uInt16 nPara )
-{
- Paragraph* pPara = pParaList->GetParagraph( nPara );
- DBG_ASSERT( pPara, "Outliner::GetNumberingStartValue - Paragraph not found!" );
- return pPara ? pPara->GetNumberingStartValue() : -1;
-}
-
-void Outliner::SetNumberingStartValue( sal_uInt16 nPara, sal_Int16 nNumberingStartValue )
-{
- Paragraph* pPara = pParaList->GetParagraph( nPara );
- DBG_ASSERT( pPara, "Outliner::GetNumberingStartValue - Paragraph not found!" );
- if( pPara && pPara->GetNumberingStartValue() != nNumberingStartValue )
- {
- if( IsUndoEnabled() && !IsInUndo() )
- InsertUndo( new OutlinerUndoChangeParaNumberingRestart( this, nPara,
- pPara->GetNumberingStartValue(), nNumberingStartValue,
- pPara->IsParaIsNumberingRestart(), pPara->IsParaIsNumberingRestart() ) );
-
- pPara->SetNumberingStartValue( nNumberingStartValue );
- // --> OD 2009-03-10 #i100014#
- // It is not a good idea to substract 1 from a count and cast the result
- // to USHORT without check, if the count is 0.
- ImplCheckParagraphs( nPara, (USHORT) (pParaList->GetParagraphCount()) );
- // <--
- pEditEngine->SetModified();
- }
-}
-
-sal_Bool Outliner::IsParaIsNumberingRestart( sal_uInt16 nPara )
-{
- Paragraph* pPara = pParaList->GetParagraph( nPara );
- DBG_ASSERT( pPara, "Outliner::IsParaIsNumberingRestart - Paragraph not found!" );
- return pPara ? pPara->IsParaIsNumberingRestart() : sal_False;
-}
-
-void Outliner::SetParaIsNumberingRestart( sal_uInt16 nPara, sal_Bool bParaIsNumberingRestart )
-{
- Paragraph* pPara = pParaList->GetParagraph( nPara );
- DBG_ASSERT( pPara, "Outliner::SetParaIsNumberingRestart - Paragraph not found!" );
- if( pPara && (pPara->IsParaIsNumberingRestart() != bParaIsNumberingRestart) )
- {
- if( IsUndoEnabled() && !IsInUndo() )
- InsertUndo( new OutlinerUndoChangeParaNumberingRestart( this, nPara,
- pPara->GetNumberingStartValue(), pPara->GetNumberingStartValue(),
- pPara->IsParaIsNumberingRestart(), bParaIsNumberingRestart ) );
-
- pPara->SetParaIsNumberingRestart( bParaIsNumberingRestart );
- // --> OD 2009-03-10 #i100014#
- // It is not a good idea to substract 1 from a count and cast the result
- // to USHORT without check, if the count is 0.
- ImplCheckParagraphs( nPara, (USHORT) (pParaList->GetParagraphCount()) );
- // <--
- pEditEngine->SetModified();
- }
-}
-
-OutlinerParaObject* Outliner::CreateParaObject( USHORT nStartPara, USHORT nCount ) const
-{
- DBG_CHKTHIS(Outliner,0);
-
- if ( sal::static_int_cast< ULONG >( nStartPara + nCount ) >
- pParaList->GetParagraphCount() )
- nCount = sal::static_int_cast< USHORT >(
- pParaList->GetParagraphCount() - nStartPara );
-
- // When a new OutlinerParaObject is created because a paragraph is just beeing deleted,
- // it can happen that the ParaList is not updated yet...
- if ( ( nStartPara + nCount ) > pEditEngine->GetParagraphCount() )
- nCount = pEditEngine->GetParagraphCount() - nStartPara;
-
- if( !nCount )
- return NULL;
-
- EditTextObject* pText = pEditEngine->CreateTextObject( nStartPara, nCount );
- const bool bIsEditDoc(OUTLINERMODE_TEXTOBJECT == ImplGetOutlinerMode());
- ParagraphDataVector aParagraphDataVector(nCount);
- const sal_uInt16 nLastPara(nStartPara + nCount - 1);
-
- for(sal_uInt16 nPara(nStartPara); nPara <= nLastPara; nPara++)
- {
- aParagraphDataVector[nPara-nStartPara] = *GetParagraph(nPara);
- }
-
- OutlinerParaObject* pPObj = new OutlinerParaObject(*pText, aParagraphDataVector, bIsEditDoc);
- pPObj->SetOutlinerMode(GetMode());
- delete pText;
-
- return pPObj;
-}
-
-void Outliner::SetText( const XubString& rText, Paragraph* pPara )
-{
- DBG_CHKTHIS(Outliner,0);
- DBG_ASSERT(pPara,"SetText:No Para");
-
- BOOL bUpdate = pEditEngine->GetUpdateMode();
- pEditEngine->SetUpdateMode( FALSE );
- ImplBlockInsertionCallbacks( TRUE );
-
- USHORT nPara = (USHORT)pParaList->GetAbsPos( pPara );
-
- if( !rText.Len() )
- {
- pEditEngine->SetText( nPara, rText );
- ImplInitDepth( nPara, pPara->GetDepth(), FALSE );
- }
- else
- {
- XubString aText( rText );
- aText.ConvertLineEnd( LINEEND_LF );
-
- if( aText.GetChar( aText.Len()-1 ) == '\x0A' )
- aText.Erase( aText.Len()-1, 1 ); // letzten Umbruch loeschen
-
- USHORT nCount = aText.GetTokenCount( '\x0A' );
- USHORT nPos = 0;
- USHORT nInsPos = nPara+1;
- while( nCount > nPos )
- {
- XubString aStr = aText.GetToken( nPos, '\x0A' );
-
- sal_Int16 nCurDepth;
- if( nPos )
- {
- pPara = new Paragraph( -1 );
- nCurDepth = -1;
- }
- else
- nCurDepth = pPara->GetDepth();
-
- // Im Outliner-Modus die Tabulatoren filtern und die
- // Einrueckung ueber ein LRSpaceItem einstellen
- // Im EditEngine-Modus ueber Maltes Tabulatoren einruecken
- if( ( ImplGetOutlinerMode() == OUTLINERMODE_OUTLINEOBJECT ) ||
- ( ImplGetOutlinerMode() == OUTLINERMODE_OUTLINEVIEW ) )
- {
- // Tabs raus
- USHORT nTabs = 0;
- while ( ( nTabs < aStr.Len() ) && ( aStr.GetChar( nTabs ) == '\t' ) )
- nTabs++;
- if ( nTabs )
- aStr.Erase( 0, nTabs );
-
- // Tiefe beibehalten ? (siehe Outliner::Insert)
- if( !(pPara->nFlags & PARAFLAG_HOLDDEPTH) )
- {
- nCurDepth = nTabs-1;
- ImplCheckDepth( nCurDepth );
- pPara->SetDepth( nCurDepth );
- pPara->nFlags &= (~PARAFLAG_HOLDDEPTH);
- }
- }
- if( nPos ) // nicht mit dem ersten Absatz
- {
- pParaList->Insert( pPara, nInsPos );
- pEditEngine->InsertParagraph( nInsPos, aStr );
- pHdlParagraph = pPara;
- ParagraphInsertedHdl();
- }
- else
- {
- nInsPos--;
- pEditEngine->SetText( nInsPos, aStr );
- }
- ImplInitDepth( nInsPos, nCurDepth, FALSE );
- nInsPos++;
- nPos++;
- }
- }
-
- DBG_ASSERT(pParaList->GetParagraphCount()==pEditEngine->GetParagraphCount(),"SetText failed!");
- bFirstParaIsEmpty = FALSE;
- ImplBlockInsertionCallbacks( FALSE );
- pEditEngine->SetUpdateMode( bUpdate );
-}
-
-// pView == 0 -> Tabulatoren nicht beachten
-
-bool Outliner::ImpConvertEdtToOut( sal_uInt32 nPara,EditView* pView)
-{
- DBG_CHKTHIS(Outliner,0);
-
- bool bConverted = false;
- USHORT nTabs = 0;
- ESelection aDelSel;
-
-// const SfxItemSet& rAttrs = pEditEngine->GetParaAttribs( (sal_uInt16)nPara );
-// bool bAlreadyOutliner = rAttrs.GetItemState( EE_PARA_OUTLLRSPACE ) == SFX_ITEM_ON ? true : false;
-
- XubString aName;
- XubString aHeading_US( RTL_CONSTASCII_USTRINGPARAM( "heading" ) );
- XubString aNumber_US( RTL_CONSTASCII_USTRINGPARAM( "Numbering" ) );
-
- XubString aStr( pEditEngine->GetText( (USHORT)nPara ) );
- xub_Unicode* pPtr = (xub_Unicode*)aStr.GetBuffer();
-
- USHORT nHeadingNumberStart = 0;
- USHORT nNumberingNumberStart = 0;
- SfxStyleSheet* pStyle= pEditEngine->GetStyleSheet( (USHORT)nPara );
- if( pStyle )
- {
- aName = pStyle->GetName();
- USHORT nSearch;
- if ( ( nSearch = aName.Search( aHeading_US ) ) != STRING_NOTFOUND )
- nHeadingNumberStart = nSearch + aHeading_US.Len();
- else if ( ( nSearch = aName.Search( aNumber_US ) ) != STRING_NOTFOUND )
- nNumberingNumberStart = nSearch + aNumber_US.Len();
- }
-
- if ( nHeadingNumberStart || nNumberingNumberStart )
- {
- // PowerPoint-Import ?
- if( nHeadingNumberStart && ( aStr.Len() >= 2 ) &&
- ( pPtr[0] != '\t' ) && ( pPtr[1] == '\t' ) )
- {
- // Bullet & Tab raus
- aDelSel = ESelection( (USHORT)nPara, 0, (USHORT)nPara, 2 );
- }
-
- USHORT nPos = nHeadingNumberStart ? nHeadingNumberStart : nNumberingNumberStart;
- String aLevel = aName.Copy( nPos );
- aLevel.EraseLeadingChars( ' ' );
- nTabs = sal::static_int_cast< USHORT >(aLevel.ToInt32());
- if( nTabs )
- nTabs--; // ebene 0 = "heading 1"
- bConverted = TRUE;
- }
- else
- {
- // Fuehrende Tabulatoren filtern
- while( *pPtr == '\t' )
- {
- pPtr++;
- nTabs++;
- }
- // Tabulatoren aus dem Text entfernen
- if( nTabs )
- aDelSel = ESelection( (USHORT)nPara, 0, (USHORT)nPara, nTabs );
- }
-
- if ( aDelSel.HasRange() )
- {
- if ( pView )
- {
- pView->SetSelection( aDelSel );
- pView->DeleteSelected();
- }
- else
- pEditEngine->QuickDelete( aDelSel );
- }
-
- const SfxInt16Item& rLevel = (const SfxInt16Item&) pEditEngine->GetParaAttrib( sal::static_int_cast< sal_uInt16 >(nPara), EE_PARA_OUTLLEVEL );
- sal_Int16 nOutlLevel = rLevel.GetValue();
-
- ImplCheckDepth( nOutlLevel );
- ImplInitDepth( sal::static_int_cast< sal_uInt16 >(nPara), nOutlLevel, FALSE );
-
- return bConverted;
-}
-
-void Outliner::SetText( const OutlinerParaObject& rPObj )
-{
- DBG_CHKTHIS(Outliner,0);
-
- BOOL bUpdate = pEditEngine->GetUpdateMode();
- pEditEngine->SetUpdateMode( FALSE );
-
- BOOL bUndo = pEditEngine->IsUndoEnabled();
- EnableUndo( FALSE );
-
- Init( rPObj.GetOutlinerMode() );
-
- ImplBlockInsertionCallbacks( TRUE );
- pEditEngine->SetText(rPObj.GetTextObject());
- if( rPObj.Count() != pEditEngine->GetParagraphCount() )
- {
- int nop=0;nop++;
- }
-
- bFirstParaIsEmpty = FALSE;
-
- pParaList->Clear( TRUE );
- for( USHORT nCurPara = 0; nCurPara < rPObj.Count(); nCurPara++ )
- {
- Paragraph* pPara = new Paragraph( rPObj.GetParagraphData(nCurPara));
- ImplCheckDepth( pPara->nDepth );
-
- pParaList->Insert( pPara, LIST_APPEND );
- ImplCheckNumBulletItem( nCurPara );
- }
-
- // --> OD 2009-03-10 #i100014#
- // It is not a good idea to substract 1 from a count and cast the result
- // to USHORT without check, if the count is 0.
- ImplCheckParagraphs( 0, (USHORT) (pParaList->GetParagraphCount()) );
- // <--
-
- EnableUndo( bUndo );
- ImplBlockInsertionCallbacks( FALSE );
- pEditEngine->SetUpdateMode( bUpdate );
-
- DBG_ASSERT( pParaList->GetParagraphCount()==rPObj.Count(),"SetText failed");
- DBG_ASSERT( pEditEngine->GetParagraphCount()==rPObj.Count(),"SetText failed");
-}
-
-void Outliner::AddText( const OutlinerParaObject& rPObj )
-{
- DBG_CHKTHIS(Outliner,0);
- Paragraph* pPara;
-
- BOOL bUpdate = pEditEngine->GetUpdateMode();
- pEditEngine->SetUpdateMode( FALSE );
-
- ImplBlockInsertionCallbacks( TRUE );
- ULONG nPara;
- if( bFirstParaIsEmpty )
- {
- pParaList->Clear( TRUE );
- pEditEngine->SetText(rPObj.GetTextObject());
- nPara = 0;
- }
- else
- {
- nPara = pParaList->GetParagraphCount();
- pEditEngine->InsertParagraph( EE_PARA_APPEND, rPObj.GetTextObject() );
- }
- bFirstParaIsEmpty = FALSE;
-
- for( USHORT n = 0; n < rPObj.Count(); n++ )
- {
- pPara = new Paragraph( rPObj.GetParagraphData(n) );
- pParaList->Insert( pPara, LIST_APPEND );
- USHORT nP = sal::static_int_cast< USHORT >(nPara+n);
- DBG_ASSERT(pParaList->GetAbsPos(pPara)==nP,"AddText:Out of sync");
- ImplInitDepth( nP, pPara->GetDepth(), FALSE );
- }
- DBG_ASSERT( pEditEngine->GetParagraphCount()==pParaList->GetParagraphCount(), "SetText: OutOfSync" );
-
- // --> OD 2009-03-10 #i100014#
- // It is not a good idea to substract 1 from a count and cast the result
- // to USHORT without check, if the count is 0.
- ImplCheckParagraphs( (USHORT)nPara, (USHORT) (pParaList->GetParagraphCount()) );
- // <--
-
- ImplBlockInsertionCallbacks( FALSE );
- pEditEngine->SetUpdateMode( bUpdate );
-}
-
-void __EXPORT Outliner::FieldClicked( const SvxFieldItem& rField, USHORT nPara, USHORT nPos )
-{
- DBG_CHKTHIS(Outliner,0);
-
- if ( aFieldClickedHdl.IsSet() )
- {
- EditFieldInfo aFldInfo( this, rField, nPara, nPos );
- aFldInfo.SetSimpleClick( TRUE );
- aFieldClickedHdl.Call( &aFldInfo );
- }
-}
-
-
-void __EXPORT Outliner::FieldSelected( const SvxFieldItem& rField, USHORT nPara, USHORT nPos )
-{
- DBG_CHKTHIS(Outliner,0);
- if ( !aFieldClickedHdl.IsSet() )
- return;
-
- EditFieldInfo aFldInfo( this, rField, nPara, nPos );
- aFldInfo.SetSimpleClick( FALSE );
- aFieldClickedHdl.Call( &aFldInfo );
-}
-
-
-XubString __EXPORT Outliner::CalcFieldValue( const SvxFieldItem& rField, USHORT nPara, USHORT nPos, Color*& rpTxtColor, Color*& rpFldColor )
-{
- DBG_CHKTHIS(Outliner,0);
- if ( !aCalcFieldValueHdl.IsSet() )
- return String( ' ' );
-
- EditFieldInfo aFldInfo( this, rField, nPara, nPos );
- // Die FldColor ist mit COL_LIGHTGRAY voreingestellt.
- if ( rpFldColor )
- aFldInfo.SetFldColor( *rpFldColor );
-
- aCalcFieldValueHdl.Call( &aFldInfo );
- if ( aFldInfo.GetTxtColor() )
- {
- delete rpTxtColor;
- rpTxtColor = new Color( *aFldInfo.GetTxtColor() );
- }
-
- delete rpFldColor;
- rpFldColor = aFldInfo.GetFldColor() ? new Color( *aFldInfo.GetFldColor() ) : 0;
-
- return aFldInfo.GetRepresentation();
-}
-
-void Outliner::SetStyleSheet( ULONG nPara, SfxStyleSheet* pStyle )
-{
- DBG_CHKTHIS(Outliner,0);
- Paragraph* pPara = pParaList->GetParagraph( nPara );
- if (pPara)
- {
- pEditEngine->SetStyleSheet( (USHORT)nPara, pStyle );
- pPara->nFlags |= PARAFLAG_SETBULLETTEXT;
- ImplCheckNumBulletItem( (USHORT) nPara );
- }
-}
-
-void Outliner::SetVisible( Paragraph* pPara, BOOL bVisible )
-{
- DBG_CHKTHIS(Outliner,0);
- DBG_ASSERT( pPara, "SetVisible: pPara = NULL" );
-
- if (pPara)
- {
- pPara->bVisible = bVisible;
- ULONG nPara = pParaList->GetAbsPos( pPara );
- pEditEngine->ShowParagraph( (USHORT)nPara, bVisible );
- }
-}
-
-void Outliner::ImplCheckNumBulletItem( USHORT nPara )
-{
- Paragraph* pPara = pParaList->GetParagraph( nPara );
- if (pPara)
- pPara->aBulSize.Width() = -1;
-}
-
-void Outliner::ImplSetLevelDependendStyleSheet( USHORT nPara, SfxStyleSheet* pLevelStyle )
-{
- DBG_CHKTHIS(Outliner,0);
-
- DBG_ASSERT( ( ImplGetOutlinerMode() == OUTLINERMODE_OUTLINEOBJECT ) || ( ImplGetOutlinerMode() == OUTLINERMODE_OUTLINEVIEW ), "SetLevelDependendStyleSheet: Wrong Mode!" );
-
- SfxStyleSheet* pStyle = pLevelStyle;
- if ( !pStyle )
- pStyle = GetStyleSheet( nPara );
-
- if ( pStyle )
- {
- sal_Int16 nDepth = GetDepth( nPara );
- if( nDepth < 0 )
- nDepth = 0;
-
- String aNewStyleSheetName( pStyle->GetName() );
- aNewStyleSheetName.Erase( aNewStyleSheetName.Len()-1, 1 );
- aNewStyleSheetName += String::CreateFromInt32( nDepth+1 );
- SfxStyleSheet* pNewStyle = (SfxStyleSheet*)GetStyleSheetPool()->Find( aNewStyleSheetName, pStyle->GetFamily() );
- DBG_ASSERT( pNewStyle, "AutoStyleSheetName - Style not found!" );
- if ( pNewStyle && ( pNewStyle != GetStyleSheet( nPara ) ) )
- {
- SfxItemSet aOldAttrs( GetParaAttribs( nPara ) );
- SetStyleSheet( nPara, pNewStyle );
- if ( aOldAttrs.GetItemState( EE_PARA_NUMBULLET ) == SFX_ITEM_ON )
- {
- SfxItemSet aAttrs( GetParaAttribs( nPara ) );
- aAttrs.Put( aOldAttrs.Get( EE_PARA_NUMBULLET ) );
- SetParaAttribs( nPara, aAttrs );
- }
- }
- }
-}
-
-void Outliner::ImplInitDepth( USHORT nPara, sal_Int16 nDepth, BOOL bCreateUndo, BOOL bUndoAction )
-{
- DBG_CHKTHIS(Outliner,0);
-
- DBG_ASSERT( ( nDepth >= nMinDepth ) && ( nDepth <= nMaxDepth ), "ImplInitDepth - Depth is invalid!" );
-
- Paragraph* pPara = pParaList->GetParagraph( nPara );
- if (!pPara)
- return;
- sal_Int16 nOldDepth = pPara->GetDepth();
- pPara->SetDepth( nDepth );
-
- // Bei IsInUndo brauchen Attribute und Style nicht eingestellt werden,
- // dort werden die alten Werte durch die EditEngine restauriert.
-
- if( !IsInUndo() )
- {
- BOOL bUpdate = pEditEngine->GetUpdateMode();
- pEditEngine->SetUpdateMode( FALSE );
-
- BOOL bUndo = bCreateUndo && IsUndoEnabled();
- if ( bUndo && bUndoAction )
- UndoActionStart( OLUNDO_DEPTH );
-
- SfxItemSet aAttrs( pEditEngine->GetParaAttribs( nPara ) );
- aAttrs.Put( SfxInt16Item( EE_PARA_OUTLLEVEL, nDepth ) );
- pEditEngine->SetParaAttribs( nPara, aAttrs );
- ImplCheckNumBulletItem( nPara );
- ImplCalcBulletText( nPara, FALSE, FALSE );
-
- if ( bUndo )
- {
- InsertUndo( new OutlinerUndoChangeDepth( this, nPara, nOldDepth, nDepth ) );
- if ( bUndoAction )
- UndoActionEnd( OLUNDO_DEPTH );
- }
-
- pEditEngine->SetUpdateMode( bUpdate );
- }
-}
-
-void Outliner::SetParaAttribs( USHORT nPara, const SfxItemSet& rSet )
-{
- DBG_CHKTHIS(Outliner,0);
-
- pEditEngine->SetParaAttribs( nPara, rSet );
-}
-
-BOOL Outliner::Expand( Paragraph* pPara )
-{
- DBG_CHKTHIS(Outliner,0);
-
- if ( pParaList->HasHiddenChilds( pPara ) )
- {
- OLUndoExpand* pUndo = 0;
- BOOL bUndo = IsUndoEnabled() && !IsInUndo();
- if( bUndo )
- {
- UndoActionStart( OLUNDO_EXPAND );
- pUndo = new OLUndoExpand( this, OLUNDO_EXPAND );
- pUndo->pParas = 0;
- pUndo->nCount = (USHORT)pParaList->GetAbsPos( pPara );
- }
- pHdlParagraph = pPara;
- bIsExpanding = TRUE;
- pParaList->Expand( pPara );
- ExpandHdl();
- InvalidateBullet( pPara, pParaList->GetAbsPos(pPara) );
- if( bUndo )
- {
- InsertUndo( pUndo );
- UndoActionEnd( OLUNDO_EXPAND );
- }
- return TRUE;
- }
- return FALSE;
-}
-
-
-BOOL Outliner::Collapse( Paragraph* pPara )
-{
- DBG_CHKTHIS(Outliner,0);
- if ( pParaList->HasVisibleChilds( pPara ) ) // expandiert
- {
- OLUndoExpand* pUndo = 0;
- BOOL bUndo = FALSE;
-
- if( !IsInUndo() && IsUndoEnabled() )
- bUndo = TRUE;
- if( bUndo )
- {
- UndoActionStart( OLUNDO_COLLAPSE );
- pUndo = new OLUndoExpand( this, OLUNDO_COLLAPSE );
- pUndo->pParas = 0;
- pUndo->nCount = (USHORT)pParaList->GetAbsPos( pPara );
- }
-
- pHdlParagraph = pPara;
- bIsExpanding = FALSE;
- pParaList->Collapse( pPara );
- ExpandHdl();
- InvalidateBullet( pPara, pParaList->GetAbsPos(pPara) );
- if( bUndo )
- {
- InsertUndo( pUndo );
- UndoActionEnd( OLUNDO_COLLAPSE );
- }
- return TRUE;
- }
- return FALSE;
-}
-
-
-Font Outliner::ImpCalcBulletFont( USHORT nPara ) const
-{
- const SvxNumberFormat* pFmt = GetNumberFormat( nPara );
- DBG_ASSERT( pFmt && ( pFmt->GetNumberingType() != SVX_NUM_BITMAP ) && ( pFmt->GetNumberingType() != SVX_NUM_NUMBER_NONE ), "ImpCalcBulletFont: Missing or BitmapBullet!" );
-
- Font aStdFont; //#107508#
- if ( !pEditEngine->IsFlatMode() )
- {
- ESelection aSel( nPara, 0, nPara, 0 );
- aStdFont = EditEngine::CreateFontFromItemSet( pEditEngine->GetAttribs( aSel ), GetScriptType( aSel ) );
- }
- else
- {
- aStdFont = pEditEngine->GetStandardFont( nPara );
- }
-
- Font aBulletFont;
- if ( pFmt->GetNumberingType() == SVX_NUM_CHAR_SPECIAL )
- {
- aBulletFont = *pFmt->GetBulletFont();
- }
- else
- {
- aBulletFont = aStdFont;
- aBulletFont.SetUnderline( UNDERLINE_NONE );
- aBulletFont.SetOverline( UNDERLINE_NONE );
- aBulletFont.SetStrikeout( STRIKEOUT_NONE );
- aBulletFont.SetEmphasisMark( EMPHASISMARK_NONE );
- aBulletFont.SetRelief( RELIEF_NONE );
- }
-
- // #107508# Use original scale...
- USHORT nScale = /* pEditEngine->IsFlatMode() ? DEFAULT_SCALE : */ pFmt->GetBulletRelSize();
- ULONG nScaledLineHeight = aStdFont.GetSize().Height();
- nScaledLineHeight *= nScale*10;
- nScaledLineHeight /= 1000;
-
- aBulletFont.SetAlign( ALIGN_BOTTOM );
- aBulletFont.SetSize( Size( 0, nScaledLineHeight ) );
- BOOL bVertical = IsVertical();
- aBulletFont.SetVertical( bVertical );
- aBulletFont.SetOrientation( bVertical ? 2700 : 0 );
-
- Color aColor( COL_AUTO );
- if( !pEditEngine->IsFlatMode() && !( pEditEngine->GetControlWord() & EE_CNTRL_NOCOLORS ) )
- {
- aColor = pFmt->GetBulletColor();
- }
-
- if ( ( aColor == COL_AUTO ) || ( IsForceAutoColor() ) )
- aColor = pEditEngine->GetAutoColor();
-
- aBulletFont.SetColor( aColor );
- return aBulletFont;
-}
-
-void Outliner::PaintBullet( USHORT nPara, const Point& rStartPos,
- const Point& rOrigin, short nOrientation, OutputDevice* pOutDev )
-{
- DBG_CHKTHIS(Outliner,0);
-
- bool bDrawBullet = false;
- if (pEditEngine)
- {
- const SfxBoolItem& rBulletState = (const SfxBoolItem&) pEditEngine->GetParaAttrib( nPara, EE_PARA_BULLETSTATE );
- bDrawBullet = rBulletState.GetValue() ? true : false;
- }
-
- if ( ImplHasBullet( nPara ) && bDrawBullet)
- {
- BOOL bVertical = IsVertical();
-
- BOOL bRightToLeftPara = pEditEngine->IsRightToLeft( nPara );
-
- Rectangle aBulletArea( ImpCalcBulletArea( nPara, TRUE, FALSE ) );
-
- Paragraph* pPara = pParaList->GetParagraph( nPara );
- const SvxNumberFormat* pFmt = GetNumberFormat( nPara );
- if ( pFmt && ( pFmt->GetNumberingType() != SVX_NUM_NUMBER_NONE ) )
- {
- if( pFmt->GetNumberingType() != SVX_NUM_BITMAP )
- {
- Font aBulletFont( ImpCalcBulletFont( nPara ) );
- // #2338# Use base line
- BOOL bSymbol = pFmt->GetNumberingType() == SVX_NUM_CHAR_SPECIAL;
- aBulletFont.SetAlign( bSymbol ? ALIGN_BOTTOM : ALIGN_BASELINE );
- Font aOldFont = pOutDev->GetFont();
- pOutDev->SetFont( aBulletFont );
-
- ParagraphInfos aParaInfos = pEditEngine->GetParagraphInfos( nPara );
- Point aTextPos;
- if ( !bVertical )
- {
-// aTextPos.Y() = rStartPos.Y() + aBulletArea.Bottom();
- aTextPos.Y() = rStartPos.Y() + ( bSymbol ? aBulletArea.Bottom() : aParaInfos.nFirstLineMaxAscent );
- if ( !bRightToLeftPara )
- aTextPos.X() = rStartPos.X() + aBulletArea.Left();
- else
- aTextPos.X() = rStartPos.X() + GetPaperSize().Width() - aBulletArea.Left();
- }
- else
- {
-// aTextPos.X() = rStartPos.X() - aBulletArea.Bottom();
- aTextPos.X() = rStartPos.X() - ( bSymbol ? aBulletArea.Bottom() : aParaInfos.nFirstLineMaxAscent );
- aTextPos.Y() = rStartPos.Y() + aBulletArea.Left();
- }
-
- if ( nOrientation )
- {
- // Sowohl TopLeft als auch BottomLeft nicht ganz richtig, da
- // in EditEngine BaseLine...
- double nRealOrientation = nOrientation*F_PI1800;
- double nCos = cos( nRealOrientation );
- double nSin = sin( nRealOrientation );
- Point aRotatedPos;
- // Translation...
- aTextPos -= rOrigin;
- // Rotation...
- aRotatedPos.X()=(long) (nCos*aTextPos.X() + nSin*aTextPos.Y());
- aRotatedPos.Y()=(long) - (nSin*aTextPos.X() - nCos*aTextPos.Y());
- aTextPos = aRotatedPos;
- // Translation...
- aTextPos += rOrigin;
- Font aRotatedFont( aBulletFont );
- aRotatedFont.SetOrientation( nOrientation );
- pOutDev->SetFont( aRotatedFont );
- }
-
- // #105803# VCL will care for brackets and so on...
- ULONG nLayoutMode = pOutDev->GetLayoutMode();
- nLayoutMode &= ~(TEXT_LAYOUT_BIDI_RTL|TEXT_LAYOUT_COMPLEX_DISABLED|TEXT_LAYOUT_BIDI_STRONG);
- if ( bRightToLeftPara )
- nLayoutMode |= TEXT_LAYOUT_BIDI_RTL;
- pOutDev->SetLayoutMode( nLayoutMode );
-
- if(bStrippingPortions)
- {
- const Font aSvxFont(pOutDev->GetFont());
- sal_Int32* pBuf = new sal_Int32[ pPara->GetText().Len() ];
- pOutDev->GetTextArray( pPara->GetText(), pBuf );
-
- if(bSymbol)
- {
- // aTextPos is Bottom, go to Baseline
- FontMetric aMetric(pOutDev->GetFontMetric());
- aTextPos.Y() -= aMetric.GetDescent();
- }
-
- DrawingText(aTextPos, pPara->GetText(), 0, pPara->GetText().Len(), pBuf,
- aSvxFont, nPara, 0xFFFF, 0xFF, 0, 0, false, false, true, 0, Color(), Color());
-
- delete[] pBuf;
- }
- else
- {
- pOutDev->DrawText( aTextPos, pPara->GetText() );
- }
-
- pOutDev->SetFont( aOldFont );
- }
- else
- {
- if ( pFmt->GetBrush()->GetGraphicObject() )
- {
- Point aBulletPos;
- if ( !bVertical )
- {
- aBulletPos.Y() = rStartPos.Y() + aBulletArea.Top();
- if ( !bRightToLeftPara )
- aBulletPos.X() = rStartPos.X() + aBulletArea.Left();
- else
- aBulletPos.X() = rStartPos.X() + GetPaperSize().Width() - aBulletArea.Right();
- }
- else
- {
- aBulletPos.X() = rStartPos.X() - aBulletArea.Bottom();
- aBulletPos.Y() = rStartPos.Y() + aBulletArea.Left();
- }
-
- if(bStrippingPortions)
- {
- if(aDrawBulletHdl.IsSet())
- {
- // call something analog to aDrawPortionHdl (if set) and feed it something
- // analog to DrawPortionInfo...
- // created aDrawBulletHdl, Set/GetDrawBulletHdl.
- // created DrawBulletInfo and added handling to sdrtextdecomposition.cxx
- DrawBulletInfo aDrawBulletInfo(
- *pFmt->GetBrush()->GetGraphicObject(),
- aBulletPos,
- pPara->aBulSize);
-
- aDrawBulletHdl.Call(&aDrawBulletInfo);
- }
- }
- else
- {
- // MT: Remove CAST when KA made the Draw-Method const
- ((GraphicObject*)pFmt->GetBrush()->GetGraphicObject())->Draw( pOutDev, aBulletPos, pPara->aBulSize );
- }
- }
- }
- }
-
- // Bei zusammengeklappten Absaetzen einen Strich vor den Text malen.
- if( pParaList->HasChilds(pPara) && !pParaList->HasVisibleChilds(pPara) &&
- !bStrippingPortions && !nOrientation )
- {
- long nWidth = pOutDev->PixelToLogic( Size( 10, 0 ) ).Width();
-
- Point aStartPos, aEndPos;
- if ( !bVertical )
- {
- aStartPos.Y() = rStartPos.Y() + aBulletArea.Bottom();
- if ( !bRightToLeftPara )
- aStartPos.X() = rStartPos.X() + aBulletArea.Right();
- else
- aStartPos.X() = rStartPos.X() + GetPaperSize().Width() - aBulletArea.Left();
- aEndPos = aStartPos;
- aEndPos.X() += nWidth;
- }
- else
- {
- aStartPos.X() = rStartPos.X() - aBulletArea.Bottom();
- aStartPos.Y() = rStartPos.Y() + aBulletArea.Right();
- aEndPos = aStartPos;
- aEndPos.Y() += nWidth;
- }
-
- const Color& rOldLineColor = pOutDev->GetLineColor();
- pOutDev->SetLineColor( Color( COL_BLACK ) );
- pOutDev->DrawLine( aStartPos, aEndPos );
- pOutDev->SetLineColor( rOldLineColor );
- }
- }
-}
-
-void Outliner::InvalidateBullet( Paragraph* /*pPara*/, ULONG nPara )
-{
- DBG_CHKTHIS(Outliner,0);
-
- long nLineHeight = (long)pEditEngine->GetLineHeight((USHORT)nPara );
- OutlinerView* pView = aViewList.First();
- while( pView )
- {
- Point aPos( pView->pEditView->GetWindowPosTopLeft((USHORT)nPara ) );
- Rectangle aRect( pView->GetOutputArea() );
- aRect.Right() = aPos.X();
- aRect.Top() = aPos.Y();
- aRect.Bottom() = aPos.Y();
- aRect.Bottom() += nLineHeight;
-
- pView->GetWindow()->Invalidate( aRect );
- pView = aViewList.Next();
- }
-}
-
-ULONG Outliner::Read( SvStream& rInput, const String& rBaseURL, USHORT eFormat, SvKeyValueIterator* pHTTPHeaderAttrs )
-{
- DBG_CHKTHIS(Outliner,0);
-
- BOOL bOldUndo = pEditEngine->IsUndoEnabled();
- EnableUndo( FALSE );
-
- BOOL bUpdate = pEditEngine->GetUpdateMode();
- pEditEngine->SetUpdateMode( FALSE );
-
- Clear();
-
- ImplBlockInsertionCallbacks( TRUE );
- ULONG nRet = pEditEngine->Read( rInput, rBaseURL, (EETextFormat)eFormat, pHTTPHeaderAttrs );
-
- bFirstParaIsEmpty = FALSE;
-
- USHORT nParas = pEditEngine->GetParagraphCount();
- pParaList->Clear( TRUE );
- USHORT n;
- for ( n = 0; n < nParas; n++ )
- {
- Paragraph* pPara = new Paragraph( 0 );
- pParaList->Insert( pPara, LIST_APPEND );
-
- if ( eFormat == EE_FORMAT_BIN )
- {
- const SfxItemSet& rAttrs = pEditEngine->GetParaAttribs( n );
- const SfxInt16Item& rLevel = (const SfxInt16Item&) rAttrs.Get( EE_PARA_OUTLLEVEL );
- sal_Int16 nDepth = rLevel.GetValue();
- ImplInitDepth( n, nDepth, FALSE );
- }
- }
-
- if ( eFormat != EE_FORMAT_BIN )
- {
- ImpFilterIndents( 0, nParas-1 );
- }
-
- ImplBlockInsertionCallbacks( FALSE );
- pEditEngine->SetUpdateMode( bUpdate );
- EnableUndo( bOldUndo );
-
- return nRet;
-}
-
-
-void Outliner::ImpFilterIndents( ULONG nFirstPara, ULONG nLastPara )
-{
- DBG_CHKTHIS(Outliner,0);
-
- BOOL bUpdate = pEditEngine->GetUpdateMode();
- pEditEngine->SetUpdateMode( FALSE );
-
- Paragraph* pLastConverted = NULL;
- for( ULONG nPara = nFirstPara; nPara <= nLastPara; nPara++ )
- {
- Paragraph* pPara = pParaList->GetParagraph( nPara );
- if (pPara)
- {
- if( ImpConvertEdtToOut( nPara ) )
- {
- pLastConverted = pPara;
- }
- else if ( pLastConverted )
- {
- // Normale Absaetze unter der Ueberschrift anordnen...
- pPara->SetDepth( pLastConverted->GetDepth() );
- }
-
- ImplInitDepth( (USHORT)nPara, pPara->GetDepth(), FALSE );
- }
- }
-
- pEditEngine->SetUpdateMode( bUpdate );
-}
-
-SfxUndoManager& Outliner::GetUndoManager()
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetUndoManager();
-}
-
-void Outliner::ImpTextPasted( ULONG nStartPara, USHORT nCount )
-{
- DBG_CHKTHIS(Outliner,0);
-
- BOOL bUpdate = pEditEngine->GetUpdateMode();
- pEditEngine->SetUpdateMode( FALSE );
-
- const ULONG nStart = nStartPara;
-
- Paragraph* pPara = pParaList->GetParagraph( nStartPara );
-// Paragraph* pLastConverted = NULL;
-// bool bFirst = true;
-
- while( nCount && pPara )
- {
- if( ImplGetOutlinerMode() != OUTLINERMODE_TEXTOBJECT )
- {
- nDepthChangedHdlPrevDepth = pPara->GetDepth();
- mnDepthChangeHdlPrevFlags = pPara->nFlags;
-
- ImpConvertEdtToOut( nStartPara );
-
- pHdlParagraph = pPara;
-
- if( nStartPara == nStart )
- {
- // the existing paragraph has changed depth or flags
- if( (pPara->GetDepth() != nDepthChangedHdlPrevDepth) || (pPara->nFlags != mnDepthChangeHdlPrevFlags) )
- DepthChangedHdl();
- }
- }
- else // EditEngine-Modus
- {
- sal_Int16 nDepth = -1;
- const SfxItemSet& rAttrs = pEditEngine->GetParaAttribs( (USHORT)nStartPara );
- if ( rAttrs.GetItemState( EE_PARA_OUTLLEVEL ) == SFX_ITEM_ON )
- {
- const SfxInt16Item& rLevel = (const SfxInt16Item&) rAttrs.Get( EE_PARA_OUTLLEVEL );
- nDepth = rLevel.GetValue();
- }
- if ( nDepth != GetDepth( nStartPara ) )
- ImplInitDepth( (USHORT)nStartPara, nDepth, FALSE );
- }
-
- nCount--;
- nStartPara++;
- pPara = pParaList->GetParagraph( nStartPara );
- }
-
- pEditEngine->SetUpdateMode( bUpdate );
-
- DBG_ASSERT(pParaList->GetParagraphCount()==pEditEngine->GetParagraphCount(),"ImpTextPasted failed");
-}
-
-long Outliner::IndentingPagesHdl( OutlinerView* pView )
-{
- DBG_CHKTHIS(Outliner,0);
- if( !aIndentingPagesHdl.IsSet() )
- return 1;
- return aIndentingPagesHdl.Call( pView );
-}
-
-BOOL Outliner::ImpCanIndentSelectedPages( OutlinerView* pCurView )
-{
- DBG_CHKTHIS(Outliner,0);
- // Die selektierten Seiten muessen vorher durch ImpCalcSelectedPages
- // schon eingestellt sein
-
- // Wenn der erste Absatz auf Ebene 0 liegt darf er auf keinen Fall
- // eingerueckt werden, evtl folgen aber weitere auf Ebene 0.
- if ( ( mnFirstSelPage == 0 ) && ( ImplGetOutlinerMode() != OUTLINERMODE_TEXTOBJECT ) )
- {
- if ( nDepthChangedHdlPrevDepth == 1 ) // ist die einzige Seite
- return FALSE;
- else
- pCurView->ImpCalcSelectedPages( FALSE ); // ohne die erste
- }
- return (BOOL)IndentingPagesHdl( pCurView );
-}
-
-
-BOOL Outliner::ImpCanDeleteSelectedPages( OutlinerView* pCurView )
-{
- DBG_CHKTHIS(Outliner,0);
- // Die selektierten Seiten muessen vorher durch ImpCalcSelectedPages
- // schon eingestellt sein
- return (BOOL)RemovingPagesHdl( pCurView );
-}
-
-Outliner::Outliner( SfxItemPool* pPool, USHORT nMode )
-: nMinDepth( -1 )
-{
- DBG_CTOR( Outliner, 0 );
-
- bStrippingPortions = FALSE;
- bPasting = FALSE;
-
- nFirstPage = 1;
- bBlockInsCallback = FALSE;
-
- nMaxDepth = 9;
-
- pParaList = new ParagraphList;
- pParaList->SetVisibleStateChangedHdl( LINK( this, Outliner, ParaVisibleStateChangedHdl ) );
- Paragraph* pPara = new Paragraph( 0 );
- pParaList->Insert( pPara, LIST_APPEND );
- bFirstParaIsEmpty = TRUE;
-
- pEditEngine = new OutlinerEditEng( this, pPool );
- pEditEngine->SetBeginMovingParagraphsHdl( LINK( this, Outliner, BeginMovingParagraphsHdl ) );
- pEditEngine->SetEndMovingParagraphsHdl( LINK( this, Outliner, EndMovingParagraphsHdl ) );
- pEditEngine->SetBeginPasteOrDropHdl( LINK( this, Outliner, BeginPasteOrDropHdl ) );
- pEditEngine->SetEndPasteOrDropHdl( LINK( this, Outliner, EndPasteOrDropHdl ) );
-
- Init( nMode );
-}
-
-Outliner::~Outliner()
-{
- DBG_DTOR(Outliner,0);
-
- pParaList->Clear( TRUE );
- delete pParaList;
- delete pEditEngine;
-}
-
-ULONG Outliner::InsertView( OutlinerView* pView, ULONG nIndex )
-{
- DBG_CHKTHIS(Outliner,0);
-
- aViewList.Insert( pView, nIndex );
- pEditEngine->InsertView( pView->pEditView, (USHORT)nIndex );
- return aViewList.GetPos( pView );
-}
-
-OutlinerView* Outliner::RemoveView( OutlinerView* pView )
-{
- DBG_CHKTHIS(Outliner,0);
-
- ULONG nPos = aViewList.GetPos( pView );
- if ( nPos != LIST_ENTRY_NOTFOUND )
- {
- pView->pEditView->HideCursor(); // HACK wg. BugId 10006
- pEditEngine->RemoveView( pView->pEditView );
- aViewList.Remove( nPos );
- }
- return NULL; // MT: return ueberfluessig
-}
-
-OutlinerView* Outliner::RemoveView( ULONG nIndex )
-{
- DBG_CHKTHIS(Outliner,0);
-
- EditView* pEditView = pEditEngine->GetView( (USHORT)nIndex );
- pEditView->HideCursor(); // HACK wg. BugId 10006
-
- pEditEngine->RemoveView( (USHORT)nIndex );
- aViewList.Remove( nIndex );
- return NULL; // MT: return ueberfluessig
-}
-
-
-OutlinerView* Outliner::GetView( ULONG nIndex ) const
-{
- DBG_CHKTHIS(Outliner,0);
- return aViewList.GetObject( nIndex );
-}
-
-ULONG Outliner::GetViewCount() const
-{
- DBG_CHKTHIS(Outliner,0);
- return aViewList.Count();
-}
-
-void Outliner::ParagraphInsertedHdl()
-{
- DBG_CHKTHIS(Outliner,0);
- if( !IsInUndo() )
- aParaInsertedHdl.Call( this );
-}
-
-
-void Outliner::ParagraphRemovingHdl()
-{
- DBG_CHKTHIS(Outliner,0);
- if( !IsInUndo() )
- aParaRemovingHdl.Call( this );
-}
-
-
-void Outliner::DepthChangedHdl()
-{
- DBG_CHKTHIS(Outliner,0);
- if( !IsInUndo() )
- aDepthChangedHdl.Call( this );
-}
-
-
-ULONG Outliner::GetAbsPos( Paragraph* pPara )
-{
- DBG_CHKTHIS(Outliner,0);
- DBG_ASSERT(pPara,"GetAbsPos:No Para");
- return pParaList->GetAbsPos( pPara );
-}
-
-ULONG Outliner::GetParagraphCount() const
-{
- DBG_CHKTHIS(Outliner,0);
- return pParaList->GetParagraphCount();
-}
-
-Paragraph* Outliner::GetParagraph( ULONG nAbsPos ) const
-{
- DBG_CHKTHIS(Outliner,0);
- return pParaList->GetParagraph( nAbsPos );
-}
-
-BOOL Outliner::HasChilds( Paragraph* pParagraph ) const
-{
- DBG_CHKTHIS(Outliner,0);
- return pParaList->HasChilds( pParagraph );
-}
-
-BOOL Outliner::ImplHasBullet( USHORT nPara ) const
-{
- return GetNumberFormat(nPara) != 0;
-}
-
-const SvxNumberFormat* Outliner::GetNumberFormat( USHORT nPara ) const
-{
- const SvxNumberFormat* pFmt = NULL;
-
- Paragraph* pPara = pParaList->GetParagraph( nPara );
- if (pPara == NULL)
- return NULL;
-
- sal_Int16 nDepth = pPara? pPara->GetDepth() : -1;
-
- if( nDepth >= 0 )
- {
- const SvxNumBulletItem& rNumBullet = (const SvxNumBulletItem&) pEditEngine->GetParaAttrib( nPara, EE_PARA_NUMBULLET );
- if ( rNumBullet.GetNumRule()->GetLevelCount() > nDepth )
- pFmt = rNumBullet.GetNumRule()->Get( nDepth );
- }
-
- return pFmt;
-}
-
-Size Outliner::ImplGetBulletSize( USHORT nPara )
-{
- Paragraph* pPara = pParaList->GetParagraph( nPara );
- if (!pPara)
- return Size();
-
- if( pPara->aBulSize.Width() == -1 )
- {
- const SvxNumberFormat* pFmt = GetNumberFormat( nPara );
- DBG_ASSERT( pFmt, "ImplGetBulletSize - no Bullet!" );
-
- if ( pFmt->GetNumberingType() == SVX_NUM_NUMBER_NONE )
- {
- pPara->aBulSize = Size( 0, 0 );
- }
- else if( pFmt->GetNumberingType() != SVX_NUM_BITMAP )
- {
- String aBulletText = ImplGetBulletText( nPara );
- OutputDevice* pRefDev = pEditEngine->GetRefDevice();
- Font aBulletFont( ImpCalcBulletFont( nPara ) );
- Font aRefFont( pRefDev->GetFont());
- pRefDev->SetFont( aBulletFont );
- pPara->aBulSize.Width() = pRefDev->GetTextWidth( aBulletText );
- pPara->aBulSize.Height() = pRefDev->GetTextHeight();
- pRefDev->SetFont( aRefFont );
- }
- else
- {
- pPara->aBulSize = OutputDevice::LogicToLogic( pFmt->GetGraphicSize(), MAP_100TH_MM, pEditEngine->GetRefDevice()->GetMapMode() );
- }
- }
-
- return pPara->aBulSize;
-}
-
-void Outliner::ImplCheckParagraphs( USHORT nStart, USHORT nEnd )
-{
- DBG_CHKTHIS( Outliner, 0 );
-
- // --> OD 2009-03-10 #i100014#
- // assure that the following for-loop does not loop forever
- for ( USHORT n = nStart; n < nEnd; n++ )
- // <--
- {
- Paragraph* pPara = pParaList->GetParagraph( n );
- if (pPara)
- {
- pPara->Invalidate();
- ImplCalcBulletText( n, FALSE, FALSE );
- }
- }
-}
-
-void Outliner::SetRefDevice( OutputDevice* pRefDev )
-{
- DBG_CHKTHIS(Outliner,0);
- pEditEngine->SetRefDevice( pRefDev );
- for ( USHORT n = (USHORT) pParaList->GetParagraphCount(); n; )
- {
- Paragraph* pPara = pParaList->GetParagraph( --n );
- pPara->Invalidate();
- }
-}
-
-void Outliner::ParaAttribsChanged( USHORT nPara )
-{
- DBG_CHKTHIS(Outliner,0);
-
- // Der Outliner hat kein eigenes Undo, wenn Absaetz getrennt/verschmolzen werden.
- // Beim ParagraphInserted ist das Attribut EE_PARA_OUTLLEVEL
- // ggf. noch nicht eingestellt, dies wird aber benoetigt um die Tiefe
- // des Absatzes zu bestimmen.
-
- if( pEditEngine->IsInUndo() )
- {
- if ( pParaList->GetParagraphCount() == pEditEngine->GetParagraphCount() )
- {
- Paragraph* pPara = pParaList->GetParagraph( nPara );
- const SfxInt16Item& rLevel = (const SfxInt16Item&) pEditEngine->GetParaAttrib( nPara, EE_PARA_OUTLLEVEL );
- if ( pPara && pPara->GetDepth() != rLevel.GetValue() )
- {
- pPara->SetDepth( rLevel.GetValue() );
- ImplCalcBulletText( nPara, TRUE, TRUE );
- }
- }
- }
-}
-
-void Outliner::StyleSheetChanged( SfxStyleSheet* pStyle )
-{
- DBG_CHKTHIS(Outliner,0);
-
- // Die EditEngine ruft StyleSheetChanged auch fuer abgeleitete Styles.
- // MT: Hier wurde frueher alle Absaetze durch ein ImpRecalcParaAttribs
- // gejagt, die die besagte Vorlage haben, warum?
- // => Eigentlich kann sich nur die Bullet-Repraesentation aendern...
-
- USHORT nParas = (USHORT)pParaList->GetParagraphCount();
- for( USHORT nPara = 0; nPara < nParas; nPara++ )
- {
- if ( pEditEngine->GetStyleSheet( nPara ) == pStyle )
- {
- ImplCheckNumBulletItem( nPara );
- ImplCalcBulletText( nPara, FALSE, FALSE );
- // #97333# EditEngine formats changed paragraphs before calling this method,
- // so they are not reformatted now and use wrong bullet indent
- pEditEngine->QuickMarkInvalid( ESelection( nPara, 0, nPara, 0 ) );
- }
- }
-}
-
-Rectangle Outliner::ImpCalcBulletArea( USHORT nPara, BOOL bAdjust, BOOL bReturnPaperPos )
-{
- // Bullet-Bereich innerhalb des Absatzes...
- Rectangle aBulletArea;
-
- const SvxNumberFormat* pFmt = GetNumberFormat( nPara );
- if ( pFmt )
- {
- Point aTopLeft;
- Size aBulletSize( ImplGetBulletSize( nPara ) );
-
- BOOL bOutlineMode = ( pEditEngine->GetControlWord() & EE_CNTRL_OUTLINER ) != 0;
-
- // the ODF attribut text:space-before which holds the spacing to add to the left of the label
- const short nSpaceBefore = pFmt->GetAbsLSpace() + pFmt->GetFirstLineOffset();
-
- const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&) pEditEngine->GetParaAttrib( nPara, bOutlineMode ? EE_PARA_OUTLLRSPACE : EE_PARA_LRSPACE );
- aTopLeft.X() = rLR.GetTxtLeft() + rLR.GetTxtFirstLineOfst() + nSpaceBefore;
-
- long nBulletWidth = Max( (long) -rLR.GetTxtFirstLineOfst(), (long) ((-pFmt->GetFirstLineOffset()) + pFmt->GetCharTextDistance()) );
- if ( nBulletWidth < aBulletSize.Width() ) // Bullet macht sich Platz
- nBulletWidth = aBulletSize.Width();
-
- if ( bAdjust && !bOutlineMode )
- {
- // Bei zentriert/rechtsbuendig anpassen
- const SvxAdjustItem& rItem = (const SvxAdjustItem&)pEditEngine->GetParaAttrib( nPara, EE_PARA_JUST );
- if ( ( !pEditEngine->IsRightToLeft( nPara ) && ( rItem.GetAdjust() != SVX_ADJUST_LEFT ) ) ||
- ( pEditEngine->IsRightToLeft( nPara ) && ( rItem.GetAdjust() != SVX_ADJUST_RIGHT ) ) )
- {
- aTopLeft.X() = pEditEngine->GetFirstLineStartX( nPara ) - nBulletWidth;
- }
- }
-
- // Vertikal:
- ParagraphInfos aInfos = pEditEngine->GetParagraphInfos( nPara );
- if ( aInfos.bValid )
- {
- aTopLeft.Y() = /* aInfos.nFirstLineOffset + */ // #91076# nFirstLineOffset is already added to the StartPos (PaintBullet) from the EditEngine
- aInfos.nFirstLineHeight - aInfos.nFirstLineTextHeight
- + aInfos.nFirstLineTextHeight / 2
- - aBulletSize.Height() / 2;
- // ggf. lieber auf der Baseline ausgeben...
- if( ( pFmt->GetNumberingType() != SVX_NUM_NUMBER_NONE ) && ( pFmt->GetNumberingType() != SVX_NUM_BITMAP ) && ( pFmt->GetNumberingType() != SVX_NUM_CHAR_SPECIAL ) )
- {
- Font aBulletFont( ImpCalcBulletFont( nPara ) );
- if ( aBulletFont.GetCharSet() != RTL_TEXTENCODING_SYMBOL )
- {
- OutputDevice* pRefDev = pEditEngine->GetRefDevice();
- Font aOldFont = pRefDev->GetFont();
- pRefDev->SetFont( aBulletFont );
- FontMetric aMetric( pRefDev->GetFontMetric() );
- // Leading der ersten Zeile...
- aTopLeft.Y() = /* aInfos.nFirstLineOffset + */ aInfos.nFirstLineMaxAscent;
- aTopLeft.Y() -= aMetric.GetAscent();
- pRefDev->SetFont( aOldFont );
- }
- }
- }
-
- // Horizontal:
- if( pFmt->GetNumAdjust() == SVX_ADJUST_RIGHT )
- {
- aTopLeft.X() += nBulletWidth - aBulletSize.Width();
- }
- else if( pFmt->GetNumAdjust() == SVX_ADJUST_CENTER )
- {
- aTopLeft.X() += ( nBulletWidth - aBulletSize.Width() ) / 2;
- }
-
- if ( aTopLeft.X() < 0 ) // dann draengeln
- aTopLeft.X() = 0;
-
- aBulletArea = Rectangle( aTopLeft, aBulletSize );
- }
- if ( bReturnPaperPos )
- {
- Size aBulletSize( aBulletArea.GetSize() );
- Point aBulletDocPos( aBulletArea.TopLeft() );
- aBulletDocPos.Y() += pEditEngine->GetDocPosTopLeft( nPara ).Y();
- Point aBulletPos( aBulletDocPos );
-
- if ( IsVertical() )
- {
- aBulletPos.Y() = aBulletDocPos.X();
- aBulletPos.X() = GetPaperSize().Width() - aBulletDocPos.Y();
- // Rotate:
- aBulletPos.X() -= aBulletSize.Height();
- Size aSz( aBulletSize );
- aBulletSize.Width() = aSz.Height();
- aBulletSize.Height() = aSz.Width();
- }
- else if ( pEditEngine->IsRightToLeft( nPara ) )
- {
- aBulletPos.X() = GetPaperSize().Width() - aBulletDocPos.X() - aBulletSize.Width();
- }
-
- aBulletArea = Rectangle( aBulletPos, aBulletSize );
- }
- return aBulletArea;
-}
-
-void Outliner::ExpandHdl()
-{
- DBG_CHKTHIS(Outliner,0);
- aExpandHdl.Call( this );
-}
-
-EBulletInfo Outliner::GetBulletInfo( USHORT nPara )
-{
- EBulletInfo aInfo;
-
- aInfo.nParagraph = nPara;
- aInfo.bVisible = ImplHasBullet( nPara );
-
- const SvxNumberFormat* pFmt = GetNumberFormat( nPara );
- aInfo.nType = pFmt ? pFmt->GetNumberingType() : 0;
-
- if( pFmt )
- {
- if( pFmt->GetNumberingType() != SVX_NUM_BITMAP )
- {
- aInfo.aText = ImplGetBulletText( nPara );
-
- if( pFmt->GetBulletFont() )
- aInfo.aFont = *pFmt->GetBulletFont();
- }
- else if ( pFmt->GetBrush()->GetGraphicObject() )
- {
- aInfo.aGraphic = pFmt->GetBrush()->GetGraphicObject()->GetGraphic();
- }
- }
-
- if ( aInfo.bVisible )
- {
- aInfo.aBounds = ImpCalcBulletArea( nPara, TRUE, TRUE );
- }
-
- return aInfo;
-}
-
-XubString Outliner::GetText( Paragraph* pParagraph, ULONG nCount ) const
-{
- DBG_CHKTHIS(Outliner,0);
-
- XubString aText;
- USHORT nStartPara = (USHORT) pParaList->GetAbsPos( pParagraph );
- for ( USHORT n = 0; n < nCount; n++ )
- {
- aText += pEditEngine->GetText( nStartPara + n );
- if ( (n+1) < (USHORT)nCount )
- aText += '\n';
- }
- return aText;
-}
-
-void Outliner::Remove( Paragraph* pPara, ULONG nParaCount )
-{
- DBG_CHKTHIS(Outliner,0);
-
- ULONG nPos = pParaList->GetAbsPos( pPara );
- if( !nPos && ( nParaCount >= pParaList->GetParagraphCount() ) )
- {
- Clear();
- }
- else
- {
- for( USHORT n = 0; n < (USHORT)nParaCount; n++ )
- pEditEngine->RemoveParagraph( (USHORT) nPos );
- }
-}
-
-void Outliner::StripPortions()
-{
- DBG_CHKTHIS(Outliner,0);
- bStrippingPortions = TRUE;
- pEditEngine->StripPortions();
- bStrippingPortions = FALSE;
-}
-
-// #101498#
-void Outliner::DrawingText( const Point& rStartPos, const XubString& rText, USHORT nTextStart, USHORT nTextLen, const sal_Int32* pDXArray,const SvxFont& rFont,
- USHORT nPara, USHORT nIndex, BYTE nRightToLeft,
- const EEngineData::WrongSpellVector* pWrongSpellVector,
- const SvxFieldData* pFieldData,
- bool bEndOfLine,
- bool bEndOfParagraph,
- bool bEndOfBullet,
- const ::com::sun::star::lang::Locale* pLocale,
- const Color& rOverlineColor,
- const Color& rTextLineColor)
-{
- DBG_CHKTHIS(Outliner,0);
-
- if(aDrawPortionHdl.IsSet())
- {
- // #101498#
- DrawPortionInfo aInfo( rStartPos, rText, nTextStart, nTextLen, rFont, nPara, nIndex, pDXArray, pWrongSpellVector,
- pFieldData, pLocale, rOverlineColor, rTextLineColor, nRightToLeft, bEndOfLine, bEndOfParagraph, bEndOfBullet);
-
- aDrawPortionHdl.Call( &aInfo );
- }
-}
-
-long Outliner::RemovingPagesHdl( OutlinerView* pView )
-{
- DBG_CHKTHIS(Outliner,0);
- return aRemovingPagesHdl.IsSet() ? aRemovingPagesHdl.Call( pView ) : TRUE;
-}
-
-BOOL Outliner::ImpCanDeleteSelectedPages( OutlinerView* pCurView, USHORT _nFirstPage, USHORT nPages )
-{
- DBG_CHKTHIS(Outliner,0);
-
- nDepthChangedHdlPrevDepth = nPages;
- mnFirstSelPage = _nFirstPage;
- pHdlParagraph = 0;
- return (BOOL)RemovingPagesHdl( pCurView );
-}
-
-SfxItemSet Outliner::GetParaAttribs( USHORT nPara )
-{
- DBG_CHKTHIS(Outliner,0);
- return pEditEngine->GetParaAttribs( nPara );
-}
-
-IMPL_LINK( Outliner, ParaVisibleStateChangedHdl, Paragraph*, pPara )
-{
- DBG_CHKTHIS(Outliner,0);
-
- ULONG nPara = pParaList->GetAbsPos( pPara );
- pEditEngine->ShowParagraph( (USHORT)nPara, pPara->IsVisible() );
-
- return 0;
-}
-
-IMPL_LINK( Outliner, BeginMovingParagraphsHdl, MoveParagraphsInfo*, EMPTYARG )
-{
- DBG_CHKTHIS(Outliner,0);
-
- if( !IsInUndo() )
- GetBeginMovingHdl().Call( this );
-
- return 0;
-}
-
-IMPL_LINK( Outliner, BeginPasteOrDropHdl, PasteOrDropInfos*, pInfos )
-{
- UndoActionStart( EDITUNDO_DRAGANDDROP );
- maBeginPasteOrDropHdl.Call(pInfos);
- return 0;
-}
-
-IMPL_LINK( Outliner, EndPasteOrDropHdl, PasteOrDropInfos*, pInfos )
-{
- bPasting = FALSE;
- ImpTextPasted( pInfos->nStartPara, pInfos->nEndPara - pInfos->nStartPara + 1 );
- maEndPasteOrDropHdl.Call( pInfos );
- UndoActionEnd( EDITUNDO_DRAGANDDROP );
- return 0;
-}
-
-IMPL_LINK( Outliner, EndMovingParagraphsHdl, MoveParagraphsInfo*, pInfos )
-{
- DBG_CHKTHIS(Outliner,0);
-
- pParaList->MoveParagraphs( pInfos->nStartPara, pInfos->nDestPara, pInfos->nEndPara - pInfos->nStartPara + 1 );
- USHORT nChangesStart = Min( pInfos->nStartPara, pInfos->nDestPara );
- USHORT nParas = (USHORT)pParaList->GetParagraphCount();
- for ( USHORT n = nChangesStart; n < nParas; n++ )
- ImplCalcBulletText( n, FALSE, FALSE );
-
- if( !IsInUndo() )
- aEndMovingHdl.Call( this );
-
- return 0;
-}
-
-static bool isSameNumbering( const SvxNumberFormat& rN1, const SvxNumberFormat& rN2 )
-{
- if( rN1.GetNumberingType() != rN2.GetNumberingType() )
- return false;
-
- if( rN1.GetNumStr(1) != rN2.GetNumStr(1) )
- return false;
-
- if( (rN1.GetPrefix() != rN2.GetPrefix()) || (rN1.GetSuffix() != rN2.GetSuffix()) )
- return false;
-
- return true;
-}
-
-sal_uInt16 Outliner::ImplGetNumbering( USHORT nPara, const SvxNumberFormat* pParaFmt )
-{
- sal_uInt16 nNumber = pParaFmt->GetStart() - 1;
-
- Paragraph* pPara = pParaList->GetParagraph( nPara );
- const sal_Int16 nParaDepth = pPara->GetDepth();
-
- do
- {
- pPara = pParaList->GetParagraph( nPara );
- const sal_Int16 nDepth = pPara->GetDepth();
-
- // ignore paragraphs that are below our paragraph or have no numbering
- if( (nDepth > nParaDepth) || (nDepth == -1) )
- continue;
-
- // stop on paragraphs that are above our paragraph
- if( nDepth < nParaDepth )
- break;
-
- const SvxNumberFormat* pFmt = GetNumberFormat( nPara );
-
- if( pFmt == 0 )
- continue; // ignore paragraphs without bullets
-
- // check if numbering is the same
- if( !isSameNumbering( *pFmt, *pParaFmt ) )
- break;
-
- const SfxBoolItem& rBulletState = (const SfxBoolItem&) pEditEngine->GetParaAttrib( nPara, EE_PARA_BULLETSTATE );
-
- if( rBulletState.GetValue() )
- nNumber += 1;
-
- // same depth, same number format, check for restart
- const sal_Int16 nNumberingStartValue = pPara->GetNumberingStartValue();
- if( (nNumberingStartValue != -1) || pPara->IsParaIsNumberingRestart() )
- {
- if( nNumberingStartValue != -1 )
- nNumber += nNumberingStartValue - 1;
- break;
- }
- }
- while( nPara-- );
-
- return nNumber;
-}
-
-void Outliner::ImplCalcBulletText( USHORT nPara, BOOL bRecalcLevel, BOOL bRecalcChilds )
-{
- DBG_CHKTHIS(Outliner,0);
-
- Paragraph* pPara = pParaList->GetParagraph( nPara );
- USHORT nRelPos = 0xFFFF;
-
- while ( pPara )
- {
- XubString aBulletText;
- const SvxNumberFormat* pFmt = GetNumberFormat( nPara );
- if( pFmt && ( pFmt->GetNumberingType() != SVX_NUM_BITMAP ) )
- {
- aBulletText += pFmt->GetPrefix();
- if( pFmt->GetNumberingType() == SVX_NUM_CHAR_SPECIAL )
- {
- aBulletText += pFmt->GetBulletChar();
- }
- else if( pFmt->GetNumberingType() != SVX_NUM_NUMBER_NONE )
- {
- aBulletText += pFmt->GetNumStr( ImplGetNumbering( nPara, pFmt ) );
- }
- aBulletText += pFmt->GetSuffix();
- }
-
- if( aBulletText != pPara->GetText() )
- pPara->SetText( aBulletText );
-
- pPara->nFlags &= (~PARAFLAG_SETBULLETTEXT);
-
- if ( bRecalcLevel )
- {
- if ( nRelPos != 0xFFFF )
- nRelPos++;
-
- sal_Int16 nDepth = pPara->GetDepth();
- pPara = pParaList->GetParagraph( ++nPara );
- if ( !bRecalcChilds )
- {
- while ( pPara && ( pPara->GetDepth() > nDepth ) )
- pPara = pParaList->GetParagraph( ++nPara );
- }
-
- if ( pPara && ( pPara->GetDepth() < nDepth ) )
- pPara = NULL;
- }
- else
- {
- pPara = NULL;
- }
- }
-}
-
-void Outliner::Clear()
-{
- DBG_CHKTHIS(Outliner,0);
-
- if( !bFirstParaIsEmpty )
- {
- ImplBlockInsertionCallbacks( TRUE );
- pEditEngine->Clear();
- pParaList->Clear( TRUE );
- pParaList->Insert( new Paragraph( nMinDepth ), LIST_APPEND );
- bFirstParaIsEmpty = TRUE;
- ImplBlockInsertionCallbacks( FALSE );
- }
- else
- {
- Paragraph* pPara = pParaList->GetParagraph( 0 );
- if(pPara)
- pPara->SetDepth( nMinDepth );
- }
-}
-
-void Outliner::SetFlatMode( BOOL bFlat )
-{
- DBG_CHKTHIS(Outliner,0);
-
- if( bFlat != pEditEngine->IsFlatMode() )
- {
- for ( USHORT nPara = (USHORT)pParaList->GetParagraphCount(); nPara; )
- pParaList->GetParagraph( --nPara )->aBulSize.Width() = -1;
-
- pEditEngine->SetFlatMode( bFlat );
- }
-}
-
-String Outliner::ImplGetBulletText( USHORT nPara )
-{
- String aRes;
- Paragraph* pPara = pParaList->GetParagraph( nPara );
- if (pPara)
- {
- // MT: Optimierung mal wieder aktivieren...
-// if( pPara->nFlags & PARAFLAG_SETBULLETTEXT )
- ImplCalcBulletText( nPara, FALSE, FALSE );
- aRes = pPara->GetText();
- }
- return aRes;
-}
-
-// this is needed for StarOffice Api
-void Outliner::SetLevelDependendStyleSheet( USHORT nPara )
-{
- SfxItemSet aOldAttrs( pEditEngine->GetParaAttribs( nPara ) );
- ImplSetLevelDependendStyleSheet( nPara );
- pEditEngine->SetParaAttribs( nPara, aOldAttrs );
-}
-
-SV_IMPL_PTRARR( NotifyList, EENotifyPtr );
-
-void Outliner::ImplBlockInsertionCallbacks( BOOL b )
-{
- if ( b )
- {
- bBlockInsCallback++;
- }
- else
- {
- DBG_ASSERT( bBlockInsCallback, "ImplBlockInsertionCallbacks ?!" );
- bBlockInsCallback--;
- if ( !bBlockInsCallback )
- {
- // Call blocked notify events...
- while ( pEditEngine->aNotifyCache.Count() )
- {
- EENotify* pNotify = pEditEngine->aNotifyCache[0];
- // Remove from list before calling, maybe we enter LeaveBlockNotifications while calling the handler...
- pEditEngine->aNotifyCache.Remove( 0 );
- pEditEngine->aOutlinerNotifyHdl.Call( pNotify );
- delete pNotify;
- }
- }
- }
-}
-
-IMPL_LINK( Outliner, EditEngineNotifyHdl, EENotify*, pNotify )
-{
- if ( !bBlockInsCallback )
- {
- pEditEngine->aOutlinerNotifyHdl.Call( pNotify );
- }
- else
- {
- EENotify* pNewNotify = new EENotify( *pNotify );
- pEditEngine->aNotifyCache.Insert( pNewNotify, pEditEngine->aNotifyCache.Count() );
- }
-
- return 0;
-}
-
-/** sets a link that is called at the beginning of a drag operation at an edit view */
-void Outliner::SetBeginDropHdl( const Link& rLink )
-{
- pEditEngine->SetBeginDropHdl( rLink );
-}
-
-Link Outliner::GetBeginDropHdl() const
-{
- return pEditEngine->GetBeginDropHdl();
-}
-
-/** sets a link that is called at the end of a drag operation at an edit view */
-void Outliner::SetEndDropHdl( const Link& rLink )
-{
- pEditEngine->SetEndDropHdl( rLink );
-}
-
-Link Outliner::GetEndDropHdl() const
-{
- return pEditEngine->GetEndDropHdl();
-}
-
-/** sets a link that is called before a drop or paste operation. */
-void Outliner::SetBeginPasteOrDropHdl( const Link& rLink )
-{
- maBeginPasteOrDropHdl = rLink;
-}
-
-/** sets a link that is called after a drop or paste operation. */
-void Outliner::SetEndPasteOrDropHdl( const Link& rLink )
-{
- maEndPasteOrDropHdl = rLink;
-}
-
-void Outliner::SetParaFlag( Paragraph* pPara, sal_uInt16 nFlag )
-{
- if( pPara && !pPara->HasFlag( nFlag ) )
- {
- if( IsUndoEnabled() && !IsInUndo() )
- InsertUndo( new OutlinerUndoChangeParaFlags( this, (sal_uInt16)GetAbsPos( pPara ), pPara->nFlags, pPara->nFlags|nFlag ) );
-
- pPara->SetFlag( nFlag );
- }
-}
-
-void Outliner::RemoveParaFlag( Paragraph* pPara, sal_uInt16 nFlag )
-{
- if( pPara && pPara->HasFlag( nFlag ) )
- {
- if( IsUndoEnabled() && !IsInUndo() )
- InsertUndo( new OutlinerUndoChangeParaFlags( this, (sal_uInt16)GetAbsPos( pPara ), pPara->nFlags, pPara->nFlags & ~nFlag ) );
-
- pPara->RemoveFlag( nFlag );
- }
-}
-
-bool Outliner::HasParaFlag( const Paragraph* pPara, sal_uInt16 nFlag ) const
-{
- return pPara && pPara->HasFlag( nFlag );
-}
-
-
-sal_Bool DrawPortionInfo::IsRTL() const
-{
- if(0xFF == mnBiDiLevel)
- {
- // Use Bidi functions from icu 2.0 to calculate if this portion
- // is RTL or not.
- UErrorCode nError(U_ZERO_ERROR);
- UBiDi* pBidi = ubidi_openSized(mrText.Len(), 0, &nError);
- nError = U_ZERO_ERROR;
-
- // I do not have this info here. Is it necessary? I'll have to ask MT.
- const BYTE nDefaultDir = UBIDI_LTR; //IsRightToLeft( nPara ) ? UBIDI_RTL : UBIDI_LTR;
-
- ubidi_setPara(pBidi, reinterpret_cast<const UChar *>(mrText.GetBuffer()), mrText.Len(), nDefaultDir, NULL, &nError); // UChar != sal_Unicode in MinGW
- nError = U_ZERO_ERROR;
-
-// sal_Int32 nCount(ubidi_countRuns(pBidi, &nError));
-
- int32_t nStart(0);
- int32_t nEnd;
- UBiDiLevel nCurrDir;
-
- ubidi_getLogicalRun(pBidi, nStart, &nEnd, &nCurrDir);
-
- ubidi_close(pBidi);
-
- // remember on-demand calculated state
- ((DrawPortionInfo*)this)->mnBiDiLevel = nCurrDir;
- }
-
- return (1 == (mnBiDiLevel % 2));
-}
-
-// eof
diff --git a/svx/source/outliner/outliner.hrc b/svx/source/outliner/outliner.hrc
deleted file mode 100644
index 36c5f1728fcd..000000000000
--- a/svx/source/outliner/outliner.hrc
+++ /dev/null
@@ -1,48 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: outliner.hrc,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#ifndef _OUTLINER_HRC
-#define _OUTLINER_HRC
-
-#ifndef _SOLAR_HRC
-#include <svl/solar.hrc>
-#endif
-
-#ifndef RID_OUTL_START
-#define RID_OUTL_START ( RID_EDIT_END + 100 )
-#endif
-
-#define RID_OUTLUNDO_DEPTH ( RID_OUTL_START + 0 )
-#define RID_OUTLUNDO_HEIGHT ( RID_OUTL_START + 1 )
-#define RID_OUTLUNDO_EXPAND ( RID_OUTL_START + 2 )
-#define RID_OUTLUNDO_COLLAPSE ( RID_OUTL_START + 3 )
-#define RID_OUTLUNDO_ATTR ( RID_OUTL_START + 4 )
-#define RID_OUTLUNDO_INSERT ( RID_OUTL_START + 5 )
-
-#endif // _OUTLINER_HRC
diff --git a/svx/source/outliner/outliner.src b/svx/source/outliner/outliner.src
deleted file mode 100644
index 35b2b5c8992d..000000000000
--- a/svx/source/outliner/outliner.src
+++ /dev/null
@@ -1,86 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: outliner.src,v $
- * $Revision: 1.20 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include <outliner.hrc>
-String RID_OUTLUNDO_HEIGHT
-{
- Text [ en-US ] = "Move" ;
-};
-String RID_OUTLUNDO_DEPTH
-{
- Text [ en-US ] = "Indent" ;
-};
-String RID_OUTLUNDO_EXPAND
-{
- Text [ en-US ] = "Show subpoints" ;
-};
-String RID_OUTLUNDO_COLLAPSE
-{
- Text [ en-US ] = "Collapse" ;
-};
-String RID_OUTLUNDO_ATTR
-{
- Text [ en-US ] = "Apply attributes" ;
-};
-String RID_OUTLUNDO_INSERT
-{
- Text [ en-US ] = "Insert" ;
-};
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/svx/source/outliner/outlobj.cxx b/svx/source/outliner/outlobj.cxx
deleted file mode 100644
index 0e319ad1be81..000000000000
--- a/svx/source/outliner/outlobj.cxx
+++ /dev/null
@@ -1,274 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: outlobj.cxx,v $
- * $Revision: 1.12.78.1 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svx.hxx"
-
-#include <outl_pch.hxx>
-
-#define _OUTLINER_CXX
-#include <svx/outliner.hxx>
-#include <svx/outlobj.hxx>
-#include <outleeng.hxx>
-#include <svx/editobj.hxx>
-#include <vcl/bitmap.hxx>
-#include <tools/stream.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-class ImplOutlinerParaObject
-{
-public:
- // data members
- EditTextObject* mpEditTextObject;
- ParagraphDataVector maParagraphDataVector;
- bool mbIsEditDoc;
-
- // refcounter
- sal_uInt32 mnRefCount;
-
- // constuctor
- ImplOutlinerParaObject(EditTextObject* pEditTextObject, const ParagraphDataVector& rParagraphDataVector, bool bIsEditDoc)
- : mpEditTextObject(pEditTextObject),
- maParagraphDataVector(rParagraphDataVector),
- mbIsEditDoc(bIsEditDoc),
- mnRefCount(0)
- {
- if( (maParagraphDataVector.size() == 0) && (pEditTextObject->GetParagraphCount() != 0) )
- maParagraphDataVector.resize(pEditTextObject->GetParagraphCount());
- }
-
- // destructor
- ~ImplOutlinerParaObject()
- {
- delete mpEditTextObject;
- }
-
- bool operator==(const ImplOutlinerParaObject& rCandidate) const
- {
- return (*mpEditTextObject == *rCandidate.mpEditTextObject
- && maParagraphDataVector == rCandidate.maParagraphDataVector
- && mbIsEditDoc == rCandidate.mbIsEditDoc);
- }
-
- // #i102062#
- bool isWrongListEqual(const ImplOutlinerParaObject& rCompare) const
- {
- return mpEditTextObject->isWrongListEqual(*rCompare.mpEditTextObject);
- }
-};
-
-//////////////////////////////////////////////////////////////////////////////
-
-void OutlinerParaObject::ImplMakeUnique()
-{
- if(mpImplOutlinerParaObject->mnRefCount)
- {
- ImplOutlinerParaObject* pNew = new ImplOutlinerParaObject(
- mpImplOutlinerParaObject->mpEditTextObject->Clone(),
- mpImplOutlinerParaObject->maParagraphDataVector,
- mpImplOutlinerParaObject->mbIsEditDoc);
- mpImplOutlinerParaObject->mnRefCount--;
- mpImplOutlinerParaObject = pNew;
- }
-}
-
-OutlinerParaObject::OutlinerParaObject(const EditTextObject& rEditTextObject, const ParagraphDataVector& rParagraphDataVector, bool bIsEditDoc)
-: mpImplOutlinerParaObject(new ImplOutlinerParaObject(rEditTextObject.Clone(), rParagraphDataVector, bIsEditDoc))
-{
-}
-
-OutlinerParaObject::OutlinerParaObject(const OutlinerParaObject& rCandidate)
-: mpImplOutlinerParaObject(rCandidate.mpImplOutlinerParaObject)
-{
- mpImplOutlinerParaObject->mnRefCount++;
-}
-
-OutlinerParaObject::~OutlinerParaObject()
-{
- if(mpImplOutlinerParaObject->mnRefCount)
- {
- mpImplOutlinerParaObject->mnRefCount--;
- }
- else
- {
- delete mpImplOutlinerParaObject;
- }
-}
-
-OutlinerParaObject& OutlinerParaObject::operator=(const OutlinerParaObject& rCandidate)
-{
- if(rCandidate.mpImplOutlinerParaObject != mpImplOutlinerParaObject)
- {
- if(mpImplOutlinerParaObject->mnRefCount)
- {
- mpImplOutlinerParaObject->mnRefCount--;
- }
- else
- {
- delete mpImplOutlinerParaObject;
- }
-
- mpImplOutlinerParaObject = rCandidate.mpImplOutlinerParaObject;
- mpImplOutlinerParaObject->mnRefCount++;
- }
-
- return *this;
-}
-
-bool OutlinerParaObject::operator==(const OutlinerParaObject& rCandidate) const
-{
- if(rCandidate.mpImplOutlinerParaObject == mpImplOutlinerParaObject)
- {
- return true;
- }
-
- return (*rCandidate.mpImplOutlinerParaObject == *mpImplOutlinerParaObject);
-}
-
-// #i102062#
-bool OutlinerParaObject::isWrongListEqual(const OutlinerParaObject& rCompare) const
-{
- if(rCompare.mpImplOutlinerParaObject == mpImplOutlinerParaObject)
- {
- return true;
- }
-
- return mpImplOutlinerParaObject->isWrongListEqual(*rCompare.mpImplOutlinerParaObject);
-}
-
-sal_uInt16 OutlinerParaObject::GetOutlinerMode() const
-{
- return mpImplOutlinerParaObject->mpEditTextObject->GetUserType();
-}
-
-void OutlinerParaObject::SetOutlinerMode(sal_uInt16 nNew)
-{
- if(mpImplOutlinerParaObject->mpEditTextObject->GetUserType() != nNew)
- {
- ImplMakeUnique();
- mpImplOutlinerParaObject->mpEditTextObject->SetUserType(nNew);
- }
-}
-
-bool OutlinerParaObject::IsVertical() const
-{
- return mpImplOutlinerParaObject->mpEditTextObject->IsVertical();
-}
-
-void OutlinerParaObject::SetVertical(bool bNew)
-{
- if((bool)mpImplOutlinerParaObject->mpEditTextObject->IsVertical() != bNew)
- {
- ImplMakeUnique();
- mpImplOutlinerParaObject->mpEditTextObject->SetVertical(bNew);
- }
-}
-
-sal_uInt32 OutlinerParaObject::Count() const
-{
- return mpImplOutlinerParaObject->maParagraphDataVector.size();
-}
-
-sal_Int16 OutlinerParaObject::GetDepth(sal_uInt16 nPara) const
-{
- if(nPara < mpImplOutlinerParaObject->maParagraphDataVector.size())
- {
- return mpImplOutlinerParaObject->maParagraphDataVector[nPara].getDepth();
- }
- else
- {
- return -1;
- }
-}
-
-const EditTextObject& OutlinerParaObject::GetTextObject() const
-{
- return *mpImplOutlinerParaObject->mpEditTextObject;
-}
-
-bool OutlinerParaObject::IsEditDoc() const
-{
- return mpImplOutlinerParaObject->mbIsEditDoc;
-}
-
-const ParagraphData& OutlinerParaObject::GetParagraphData(sal_uInt32 nIndex) const
-{
- if(nIndex < mpImplOutlinerParaObject->maParagraphDataVector.size())
- {
- return mpImplOutlinerParaObject->maParagraphDataVector[nIndex];
- }
- else
- {
- OSL_ENSURE(false, "OutlinerParaObject::GetParagraphData: Access out of range (!)");
- static ParagraphData aEmptyParagraphData;
- return aEmptyParagraphData;
- }
-}
-
-void OutlinerParaObject::ClearPortionInfo()
-{
- ImplMakeUnique();
- mpImplOutlinerParaObject->mpEditTextObject->ClearPortionInfo();
-}
-
-bool OutlinerParaObject::ChangeStyleSheets(const XubString& rOldName, SfxStyleFamily eOldFamily, const XubString& rNewName, SfxStyleFamily eNewFamily)
-{
- ImplMakeUnique();
- return mpImplOutlinerParaObject->mpEditTextObject->ChangeStyleSheets(rOldName, eOldFamily, rNewName, eNewFamily);
-}
-
-void OutlinerParaObject::ChangeStyleSheetName(SfxStyleFamily eFamily, const XubString& rOldName, const XubString& rNewName)
-{
- ImplMakeUnique();
- mpImplOutlinerParaObject->mpEditTextObject->ChangeStyleSheetName(eFamily, rOldName, rNewName);
-}
-
-void OutlinerParaObject::SetStyleSheets(sal_uInt16 nLevel, const XubString rNewName, const SfxStyleFamily& rNewFamily)
-{
- const sal_uInt32 nCount(mpImplOutlinerParaObject->maParagraphDataVector.size());
-
- if(nCount)
- {
- ImplMakeUnique();
- sal_uInt16 nDecrementer(sal::static_int_cast< sal_uInt16 >(nCount));
-
- for(;nDecrementer;)
- {
- if(GetDepth(--nDecrementer) == nLevel)
- {
- mpImplOutlinerParaObject->mpEditTextObject->SetStyleSheet(nDecrementer, rNewName, rNewFamily);
- }
- }
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
diff --git a/svx/source/outliner/outlundo.cxx b/svx/source/outliner/outlundo.cxx
deleted file mode 100644
index 3faf2e2480b5..000000000000
--- a/svx/source/outliner/outlundo.cxx
+++ /dev/null
@@ -1,231 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: outlundo.cxx,v $
- * $Revision: 1.9 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svx.hxx"
-
-#include <outl_pch.hxx>
-
-#define _OUTLINER_CXX
-#include <svx/outliner.hxx>
-#include <outlundo.hxx>
-
-
-OutlinerUndoBase::OutlinerUndoBase( USHORT _nId, Outliner* pOutliner )
- : EditUndo( _nId, NULL )
-{
- DBG_ASSERT( pOutliner, "Undo: Outliner?!" );
- mpOutliner = pOutliner;
-}
-
-OutlinerUndoChangeParaFlags::OutlinerUndoChangeParaFlags( Outliner* pOutliner, sal_uInt16 nPara, sal_uInt16 nOldFlags, sal_uInt16 nNewFlags )
-: OutlinerUndoBase( OLUNDO_DEPTH, pOutliner )
-{
- mnPara = nPara;
- mnOldFlags = nOldFlags;
- mnNewFlags = nNewFlags;
-}
-
-void OutlinerUndoChangeParaFlags::Undo()
-{
- ImplChangeFlags( mnOldFlags );
-}
-
-void OutlinerUndoChangeParaFlags::Redo()
-{
- ImplChangeFlags( mnNewFlags );
-}
-
-void OutlinerUndoChangeParaFlags::ImplChangeFlags( sal_uInt16 nFlags )
-{
- Outliner* pOutliner = GetOutliner();
- Paragraph* pPara = pOutliner->GetParagraph( mnPara );
- if( pPara )
- {
- pOutliner->nDepthChangedHdlPrevDepth = pPara->GetDepth();
- pOutliner->mnDepthChangeHdlPrevFlags = pPara->nFlags;
- pOutliner->pHdlParagraph = pPara;
-
- pPara->nFlags = nFlags;
- pOutliner->DepthChangedHdl();
- }
-}
-
-OutlinerUndoChangeParaNumberingRestart::OutlinerUndoChangeParaNumberingRestart( Outliner* pOutliner, sal_uInt16 nPara,
- sal_Int16 nOldNumberingStartValue, sal_Int16 nNewNumberingStartValue,
- sal_Bool bOldParaIsNumberingRestart, sal_Bool bNewParaIsNumberingRestart )
-: OutlinerUndoBase( OLUNDO_DEPTH, pOutliner )
-{
- mnPara = nPara;
-
- maUndoData.mnNumberingStartValue = nOldNumberingStartValue;
- maUndoData.mbParaIsNumberingRestart = bOldParaIsNumberingRestart;
- maRedoData.mnNumberingStartValue = nNewNumberingStartValue;
- maRedoData.mbParaIsNumberingRestart = bNewParaIsNumberingRestart;
-}
-
-void OutlinerUndoChangeParaNumberingRestart::Undo()
-{
- ImplApplyData( maUndoData );
-}
-
-void OutlinerUndoChangeParaNumberingRestart::Redo()
-{
- ImplApplyData( maRedoData );
-}
-
-void OutlinerUndoChangeParaNumberingRestart::ImplApplyData( const ParaRestartData& rData )
-{
- Outliner* pOutliner = GetOutliner();
- pOutliner->SetNumberingStartValue( mnPara, rData.mnNumberingStartValue );
- pOutliner->SetParaIsNumberingRestart( mnPara, rData.mbParaIsNumberingRestart );
-}
-
-OutlinerUndoChangeDepth::OutlinerUndoChangeDepth( Outliner* pOutliner, USHORT nPara, sal_Int16 nOldDepth, sal_Int16 nNewDepth )
- : OutlinerUndoBase( OLUNDO_DEPTH, pOutliner )
-{
- mnPara = nPara;
- mnOldDepth = nOldDepth;
- mnNewDepth = nNewDepth;
-}
-
-void OutlinerUndoChangeDepth::Undo()
-{
- GetOutliner()->ImplInitDepth( mnPara, mnOldDepth, FALSE );
-}
-
-void OutlinerUndoChangeDepth::Redo()
-{
- GetOutliner()->ImplInitDepth( mnPara, mnNewDepth, FALSE );
-}
-
-void OutlinerUndoChangeDepth::Repeat()
-{
- DBG_ERROR( "Repeat not implemented!" );
-}
-
-
-OutlinerUndoCheckPara::OutlinerUndoCheckPara( Outliner* pOutliner, USHORT nPara )
- : OutlinerUndoBase( OLUNDO_DEPTH, pOutliner )
-{
- mnPara = nPara;
-}
-
-void OutlinerUndoCheckPara::Undo()
-{
- Paragraph* pPara = GetOutliner()->GetParagraph( mnPara );
- pPara->Invalidate();
- GetOutliner()->ImplCalcBulletText( mnPara, FALSE, FALSE );
-}
-
-void OutlinerUndoCheckPara::Redo()
-{
- Paragraph* pPara = GetOutliner()->GetParagraph( mnPara );
- pPara->Invalidate();
- GetOutliner()->ImplCalcBulletText( mnPara, FALSE, FALSE );
-}
-
-void OutlinerUndoCheckPara::Repeat()
-{
- DBG_ERROR( "Repeat not implemented!" );
-}
-
-DBG_NAME(OLUndoExpand);
-
-OLUndoExpand::OLUndoExpand(Outliner* pOut, USHORT _nId )
- : EditUndo( _nId, 0 )
-{
- DBG_CTOR(OLUndoExpand,0);
- DBG_ASSERT(pOut,"Undo:No Outliner");
- pOutliner = pOut;
- nCount = 0;
- pParas = 0;
-}
-
-
-OLUndoExpand::~OLUndoExpand()
-{
- DBG_DTOR(OLUndoExpand,0);
- delete pParas;
-}
-
-
-void OLUndoExpand::Restore( BOOL bUndo )
-{
- DBG_CHKTHIS(OLUndoExpand,0);
- DBG_ASSERT(pOutliner,"Undo:No Outliner");
- DBG_ASSERT(pOutliner->pEditEngine,"Outliner already deleted");
- Paragraph* pPara;
-
- BOOL bExpand = FALSE;
- USHORT _nId = GetId();
- if((_nId == OLUNDO_EXPAND && !bUndo) || (_nId == OLUNDO_COLLAPSE && bUndo))
- bExpand = TRUE;
- if( !pParas )
- {
- pPara = pOutliner->GetParagraph( (ULONG)nCount );
- if( bExpand )
- pOutliner->Expand( pPara );
- else
- pOutliner->Collapse( pPara );
- }
- else
- {
- for( USHORT nIdx = 0; nIdx < nCount; nIdx++ )
- {
- pPara = pOutliner->GetParagraph( (ULONG)(pParas[nIdx]) );
- if( bExpand )
- pOutliner->Expand( pPara );
- else
- pOutliner->Collapse( pPara );
- }
- }
-}
-
-
-void OLUndoExpand::Undo()
-{
- DBG_CHKTHIS(OLUndoExpand,0);
- Restore( TRUE );
-}
-
-
-void OLUndoExpand::Redo()
-{
- DBG_CHKTHIS(OLUndoExpand,0);
- Restore( FALSE );
-}
-
-
-void OLUndoExpand::Repeat()
-{
- DBG_CHKTHIS(OLUndoExpand,0);
- DBG_ERROR("Not implemented");
-}
diff --git a/svx/source/outliner/outlundo.hxx b/svx/source/outliner/outlundo.hxx
deleted file mode 100644
index 569395c522d5..000000000000
--- a/svx/source/outliner/outlundo.hxx
+++ /dev/null
@@ -1,146 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: outlundo.hxx,v $
- * $Revision: 1.7 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _OUTLUNDO_HXX
-#define _OUTLUNDO_HXX
-
-#include <svx/outliner.hxx>
-
-#ifndef _EDITDATA_HXX
-#include <svx/editdata.hxx>
-#endif
-#include <editund2.hxx>
-
-class OutlinerUndoBase : public EditUndo
-{
-private:
- Outliner* mpOutliner;
-
-public:
- OutlinerUndoBase( USHORT nId, Outliner* pOutliner );
-
- Outliner* GetOutliner() const { return mpOutliner; }
-};
-
-class OutlinerUndoChangeParaFlags : public OutlinerUndoBase
-{
-private:
- sal_uInt16 mnPara;
- sal_uInt16 mnOldFlags;
- sal_uInt16 mnNewFlags;
-
- void ImplChangeFlags( sal_uInt16 nFlags );
-
-public:
- OutlinerUndoChangeParaFlags( Outliner* pOutliner, sal_uInt16 nPara, sal_uInt16 nOldDepth, sal_uInt16 nNewDepth );
-
- virtual void Undo();
- virtual void Redo();
-};
-
-class OutlinerUndoChangeParaNumberingRestart : public OutlinerUndoBase
-{
-private:
- sal_uInt16 mnPara;
-
- struct ParaRestartData
- {
- sal_Int16 mnNumberingStartValue;
- sal_Bool mbParaIsNumberingRestart;
- };
-
- ParaRestartData maUndoData;
- ParaRestartData maRedoData;
-
- void ImplApplyData( const ParaRestartData& rData );
-public:
- OutlinerUndoChangeParaNumberingRestart( Outliner* pOutliner, sal_uInt16 nPara,
- sal_Int16 nOldNumberingStartValue, sal_Int16 mnNewNumberingStartValue,
- sal_Bool nOldbParaIsNumberingRestart, sal_Bool nbNewParaIsNumberingRestart );
-
- virtual void Undo();
- virtual void Redo();
-};
-
-class OutlinerUndoChangeDepth : public OutlinerUndoBase
-{
- using SfxUndoAction::Repeat;
-private:
- USHORT mnPara;
- sal_Int16 mnOldDepth;
- sal_Int16 mnNewDepth;
-
-public:
- OutlinerUndoChangeDepth( Outliner* pOutliner, USHORT nPara, sal_Int16 nOldDepth, sal_Int16 nNewDepth );
-
- virtual void Undo();
- virtual void Redo();
- virtual void Repeat();
-};
-
-// Hilfs-Undo: Wenn es fuer eine Aktion keine OutlinerUndoAction gibst, weil
-// die EditEngine das handelt, aber z.B. noch das Bullet neu berechnet werden muss.
-
-class OutlinerUndoCheckPara : public OutlinerUndoBase
-{
- using SfxUndoAction::Repeat;
-private:
- USHORT mnPara;
-
-public:
- OutlinerUndoCheckPara( Outliner* pOutliner, USHORT nPara );
-
- virtual void Undo();
- virtual void Redo();
- virtual void Repeat();
-};
-
-
-
-// -------------------------------------
-
-
-class OLUndoExpand : public EditUndo
-{
- using SfxUndoAction::Repeat;
- void Restore( BOOL bUndo );
-public:
- OLUndoExpand( Outliner* pOut, USHORT nId );
- ~OLUndoExpand();
- virtual void Undo();
- virtual void Redo();
- virtual void Repeat();
-
- USHORT* pParas; // 0 == nCount enthaelt Absatznummer
- Outliner* pOutliner;
- USHORT nCount;
-};
-
-#endif
diff --git a/svx/source/outliner/outlvw.cxx b/svx/source/outliner/outlvw.cxx
deleted file mode 100644
index d63b10502321..000000000000
--- a/svx/source/outliner/outlvw.cxx
+++ /dev/null
@@ -1,1669 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: outlvw.cxx,v $
- * $Revision: 1.34.150.2 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svx.hxx"
-#include <outl_pch.hxx>
-#include <svl/style.hxx>
-
-#define _OUTLINER_CXX
-#include <svx/outliner.hxx>
-#include <outleeng.hxx>
-#include <paralist.hxx>
-#include <outlundo.hxx>
-#include <svx/outlobj.hxx>
-#include <svx/flditem.hxx>
-#include <svx/flditem.hxx>
-#include <svx/eeitem.hxx>
-#include <svx/numitem.hxx>
-#include <vcl/window.hxx>
-#include <svl/itemset.hxx>
-#include <editstat.hxx>
-
-
-// Breite der Randzonen innerhalb derer beim D&D gescrollt wird
-#define OL_SCROLL_LRBORDERWIDTHPIX 10
-#define OL_SCROLL_TBBORDERWIDTHPIX 10
-
-// Wert, um den Fensterinhalt beim D&D gescrollt wird
-#define OL_SCROLL_HOROFFSET 20 /* in % von VisibleSize.Width */
-#define OL_SCROLL_VEROFFSET 20 /* in % von VisibleSize.Height */
-
-DBG_NAME(OutlinerView)
-
-
-OutlinerView::OutlinerView( Outliner* pOut, Window* pWin )
-{
- DBG_CTOR( OutlinerView, 0 );
-
- pOwner = pOut;
- bDDCursorVisible = FALSE;
- bInDragMode = FALSE;
- nDDScrollLRBorderWidthWin = 0;
- nDDScrollTBBorderWidthWin = 0;
- pHorTabArrDoc = 0;
-
- pEditView = new EditView( pOut->pEditEngine, pWin );
- pEditView->SetSelectionMode( EE_SELMODE_TXTONLY );
-}
-
-OutlinerView::~OutlinerView()
-{
- DBG_DTOR(OutlinerView,0);
- delete pEditView;
-}
-
-void OutlinerView::Paint( const Rectangle& rRect )
-{
- DBG_CHKTHIS(OutlinerView,0);
-
- // beim ersten Paint/KeyInput/Drop wird aus einem leeren Outliner ein
- // Outliner mit genau einem Absatz
- if( pOwner->bFirstParaIsEmpty )
- pOwner->Insert( String() );
-
- pEditView->Paint( rRect );
-}
-
-BOOL OutlinerView::PostKeyEvent( const KeyEvent& rKEvt )
-{
- DBG_CHKTHIS( OutlinerView, 0 );
-
- // beim ersten Paint/KeyInput/Drop wird aus einem leeren Outliner ein
- // Outliner mit genau einem Absatz
- if( pOwner->bFirstParaIsEmpty )
- pOwner->Insert( String() );
-
-
- BOOL bKeyProcessed = FALSE;
- ESelection aSel( pEditView->GetSelection() );
- BOOL bSelection = aSel.HasRange();
- KeyCode aKeyCode = rKEvt.GetKeyCode();
- KeyFuncType eFunc = aKeyCode.GetFunction();
- USHORT nCode = aKeyCode.GetCode();
- BOOL bReadOnly = IsReadOnly();
-
- if( bSelection && ( nCode != KEY_TAB ) && EditEngine::DoesKeyChangeText( rKEvt ) )
- {
- if ( ImpCalcSelectedPages( FALSE ) && !pOwner->ImpCanDeleteSelectedPages( this ) )
- return TRUE;
- }
-
- if ( eFunc != KEYFUNC_DONTKNOW )
- {
- switch ( eFunc )
- {
- case KEYFUNC_CUT:
- {
- if ( !bReadOnly )
- {
- Cut();
- bKeyProcessed = TRUE;
- }
- }
- break;
- case KEYFUNC_COPY:
- {
- Copy();
- bKeyProcessed = TRUE;
- }
- break;
- case KEYFUNC_PASTE:
- {
- if ( !bReadOnly )
- {
- PasteSpecial();
- bKeyProcessed = TRUE;
- }
- }
- break;
- case KEYFUNC_DELETE:
- {
- if( !bReadOnly && !bSelection && ( pOwner->ImplGetOutlinerMode() != OUTLINERMODE_TEXTOBJECT ) )
- {
- if( aSel.nEndPos == pOwner->pEditEngine->GetTextLen( aSel.nEndPara ) )
- {
- Paragraph* pNext = pOwner->pParaList->GetParagraph( aSel.nEndPara+1 );
- if( pNext && pNext->HasFlag(PARAFLAG_ISPAGE) )
- {
- if( !pOwner->ImpCanDeleteSelectedPages( this, aSel.nEndPara, 1 ) )
- return FALSE;
- }
- }
- }
- }
- break;
- default: // wird dann evtl. unten bearbeitet.
- eFunc = KEYFUNC_DONTKNOW;
- }
- }
- if ( eFunc == KEYFUNC_DONTKNOW )
- {
- switch ( nCode )
- {
- case KEY_TAB:
- {
- if ( !bReadOnly && !aKeyCode.IsMod1() && !aKeyCode.IsMod2() )
- {
- if ( ( pOwner->ImplGetOutlinerMode() != OUTLINERMODE_TEXTOBJECT ) &&
- ( pOwner->ImplGetOutlinerMode() != OUTLINERMODE_TITLEOBJECT ) &&
- ( bSelection || !aSel.nStartPos ) )
- {
- Indent( aKeyCode.IsShift() ? (-1) : (+1) );
- bKeyProcessed = TRUE;
- }
- else if ( ( pOwner->ImplGetOutlinerMode() == OUTLINERMODE_TEXTOBJECT ) &&
- !bSelection && !aSel.nEndPos && pOwner->ImplHasBullet( aSel.nEndPara ) )
- {
- Indent( aKeyCode.IsShift() ? (-1) : (+1) );
- bKeyProcessed = TRUE;
- }
- }
- }
- break;
- case KEY_BACKSPACE:
- {
- if( !bReadOnly && !bSelection && aSel.nEndPara && !aSel.nEndPos )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( aSel.nEndPara );
- Paragraph* pPrev = pOwner->pParaList->GetParagraph( aSel.nEndPara-1 );
- if( !pPrev->IsVisible() )
- return TRUE;
- if( !pPara->GetDepth() )
- {
- if(!pOwner->ImpCanDeleteSelectedPages(this, aSel.nEndPara , 1 ) )
- return TRUE;
- }
- }
- }
- break;
- case KEY_RETURN:
- {
- if ( !bReadOnly )
- {
- // Sonderbehandlung: Hartes Return am Ende eines Absatzes,
- // der eingeklappte Unterabsaetze besitzt
- Paragraph* pPara = pOwner->pParaList->GetParagraph( aSel.nEndPara );
-
- if( !aKeyCode.IsShift() )
- {
- // Nochmal ImpGetCursor ???
- if( !bSelection &&
- aSel.nEndPos == pOwner->pEditEngine->GetTextLen( aSel.nEndPara ) )
- {
- ULONG nChilds = pOwner->pParaList->GetChildCount(pPara);
- if( nChilds && !pOwner->pParaList->HasVisibleChilds(pPara))
- {
- pOwner->UndoActionStart( OLUNDO_INSERT );
- ULONG nTemp = aSel.nEndPara;
- nTemp += nChilds;
- nTemp++; // einfuegen ueber naechstem Non-Child
- pOwner->Insert( String(),nTemp,pPara->GetDepth());
- // Cursor positionieren
- ESelection aTmpSel((USHORT)nTemp,0,(USHORT)nTemp,0);
- pEditView->SetSelection( aTmpSel );
- pEditView->ShowCursor( TRUE, TRUE );
- pOwner->UndoActionEnd( OLUNDO_INSERT );
- bKeyProcessed = TRUE;
- }
- }
- }
- if( !bKeyProcessed && !bSelection &&
- !aKeyCode.IsShift() && aKeyCode.IsMod1() &&
- ( aSel.nEndPos == pOwner->pEditEngine->GetTextLen(aSel.nEndPara) ) )
- {
- pOwner->UndoActionStart( OLUNDO_INSERT );
- ULONG nTemp = aSel.nEndPara;
- nTemp++;
- pOwner->Insert( String(), nTemp, pPara->GetDepth()+1 );
-
- // Cursor positionieren
- ESelection aTmpSel((USHORT)nTemp,0,(USHORT)nTemp,0);
- pEditView->SetSelection( aTmpSel );
- pEditView->ShowCursor( TRUE, TRUE );
- pOwner->UndoActionEnd( OLUNDO_INSERT );
- bKeyProcessed = TRUE;
- }
- }
- }
- break;
- }
- }
-
- return bKeyProcessed ? TRUE : pEditView->PostKeyEvent( rKEvt );
-}
-
-
-ULONG OutlinerView::ImpCheckMousePos(const Point& rPosPix, MouseTarget& reTarget)
-{
- DBG_CHKTHIS(OutlinerView,0);
- ULONG nPara = EE_PARA_NOT_FOUND;
-
- Point aMousePosWin = pEditView->GetWindow()->PixelToLogic( rPosPix );
- if( !pEditView->GetOutputArea().IsInside( aMousePosWin ) )
- {
- reTarget = MouseOutside;
- }
- else
- {
- reTarget = MouseText;
-
- Point aPaperPos( aMousePosWin );
- Rectangle aOutArea = pEditView->GetOutputArea();
- Rectangle aVisArea = pEditView->GetVisArea();
- aPaperPos.X() -= aOutArea.Left();
- aPaperPos.X() += aVisArea.Left();
- aPaperPos.Y() -= aOutArea.Top();
- aPaperPos.Y() += aVisArea.Top();
-
- BOOL bBullet;
- if ( pOwner->IsTextPos( aPaperPos, 0, &bBullet ) )
- {
- Point aDocPos = pOwner->GetDocPos( aPaperPos );
- nPara = pOwner->pEditEngine->FindParagraph( aDocPos.Y() );
-
- if ( bBullet )
- {
- reTarget = MouseBullet;
- }
- else
- {
- // Check for hyperlink
- const SvxFieldItem* pFieldItem = pEditView->GetField( aMousePosWin );
- if ( pFieldItem && pFieldItem->GetField() && pFieldItem->GetField()->ISA( SvxURLField ) )
- reTarget = MouseHypertext;
- }
- }
- }
- return nPara;
-}
-
-BOOL __EXPORT OutlinerView::MouseMove( const MouseEvent& rMEvt )
-{
- DBG_CHKTHIS(OutlinerView,0);
-
- if( ( pOwner->ImplGetOutlinerMode() == OUTLINERMODE_TEXTOBJECT ) || pEditView->GetEditEngine()->IsInSelectionMode())
- return pEditView->MouseMove( rMEvt );
-
- Point aMousePosWin( pEditView->GetWindow()->PixelToLogic( rMEvt.GetPosPixel() ) );
- if( !pEditView->GetOutputArea().IsInside( aMousePosWin ) )
- return FALSE;
-
- Pointer aPointer = GetPointer( rMEvt.GetPosPixel() );
- pEditView->GetWindow()->SetPointer( aPointer );
- return pEditView->MouseMove( rMEvt );
-}
-
-
-BOOL __EXPORT OutlinerView::MouseButtonDown( const MouseEvent& rMEvt )
-{
- DBG_CHKTHIS(OutlinerView,0);
- if ( ( pOwner->ImplGetOutlinerMode() == OUTLINERMODE_TEXTOBJECT ) || pEditView->GetEditEngine()->IsInSelectionMode() )
- return pEditView->MouseButtonDown( rMEvt );
-
- Point aMousePosWin( pEditView->GetWindow()->PixelToLogic( rMEvt.GetPosPixel() ) );
- if( !pEditView->GetOutputArea().IsInside( aMousePosWin ) )
- return FALSE;
-
- Pointer aPointer = GetPointer( rMEvt.GetPosPixel() );
- pEditView->GetWindow()->SetPointer( aPointer );
-
- MouseTarget eTarget;
- ULONG nPara = ImpCheckMousePos( rMEvt.GetPosPixel(), eTarget );
- if ( eTarget == MouseBullet )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
- BOOL bHasChilds = (pPara && pOwner->pParaList->HasChilds(pPara));
- if( rMEvt.GetClicks() == 1 )
- {
- ULONG nEndPara = nPara;
- if ( bHasChilds && pOwner->pParaList->HasVisibleChilds(pPara) )
- nEndPara += pOwner->pParaList->GetChildCount( pPara );
- // umgekehrt rum selektieren, damit EditEngine nicht scrollt
- ESelection aSel((USHORT)nEndPara, 0xffff,(USHORT)nPara, 0 );
- pEditView->SetSelection( aSel );
- }
- else if( rMEvt.GetClicks() == 2 && bHasChilds )
- ImpToggleExpand( pPara );
-
- aDDStartPosPix = rMEvt.GetPosPixel();
- aDDStartPosRef=pEditView->GetWindow()->PixelToLogic( aDDStartPosPix,pOwner->GetRefMapMode());
- return TRUE;
- }
-
- // special case for outliner view in impress, check if double click hits the page icon for toggle
- if( (nPara == EE_PARA_NOT_FOUND) && (pOwner->ImplGetOutlinerMode() == OUTLINERMODE_OUTLINEVIEW) && (eTarget == MouseText) && (rMEvt.GetClicks() == 2) )
- {
- ESelection aSel( pEditView->GetSelection() );
- nPara = aSel.nStartPara;
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
- if( (pPara && pOwner->pParaList->HasChilds(pPara)) && pPara->HasFlag(PARAFLAG_ISPAGE) )
- {
- ImpToggleExpand( pPara );
- }
- }
- return pEditView->MouseButtonDown( rMEvt );
-}
-
-
-BOOL __EXPORT OutlinerView::MouseButtonUp( const MouseEvent& rMEvt )
-{
- DBG_CHKTHIS(OutlinerView,0);
- if ( ( pOwner->ImplGetOutlinerMode() == OUTLINERMODE_TEXTOBJECT ) || pEditView->GetEditEngine()->IsInSelectionMode() )
- return pEditView->MouseButtonUp( rMEvt );
-
- Point aMousePosWin( pEditView->GetWindow()->PixelToLogic( rMEvt.GetPosPixel() ) );
- if( !pEditView->GetOutputArea().IsInside( aMousePosWin ) )
- return FALSE;
-
- Pointer aPointer = GetPointer( rMEvt.GetPosPixel() );
- pEditView->GetWindow()->SetPointer( aPointer );
-
- return pEditView->MouseButtonUp( rMEvt );
-}
-
-void OutlinerView::ImpHideDDCursor()
-{
- DBG_CHKTHIS(OutlinerView,0);
- if ( bDDCursorVisible )
- {
- bDDCursorVisible = FALSE;
- ImpPaintDDCursor();
- }
-}
-
-void OutlinerView::ImpShowDDCursor()
-{
- DBG_CHKTHIS(OutlinerView,0);
- if ( !bDDCursorVisible )
- {
- bDDCursorVisible = TRUE;
- ImpPaintDDCursor();
- }
-}
-
-void OutlinerView::ImpPaintDDCursor()
-{
- DBG_CHKTHIS(OutlinerView,0);
-
- Window* pWindow = pEditView->GetWindow();
- RasterOp eOldOp = pWindow->GetRasterOp();
- pWindow->SetRasterOp( ROP_INVERT );
-
- const Color& rOldLineColor = pWindow->GetLineColor();
- pWindow->SetLineColor( Color( COL_BLACK ) );
-
- Point aStartPointWin, aEndPointWin;
- Rectangle aOutputArWin = pEditView->GetOutputArea();
- Rectangle aVisAreaRef = pEditView->GetVisArea();
-
- if( bDDChangingDepth )
- {
- aStartPointWin.X() = pHorTabArrDoc[ nDDCurDepth ];
- aStartPointWin.X() += aOutputArWin.Left();
- aStartPointWin.Y() = aOutputArWin.Top();
- aEndPointWin.X() = aStartPointWin.X();
- aEndPointWin.Y() = aOutputArWin.Bottom();
- }
- else
- {
- ULONG nPara = nDDCurPara;
- if ( nDDCurPara == LIST_APPEND )
- {
- Paragraph* pTemp = pOwner->pParaList->LastVisible();
- nPara = pOwner->pParaList->GetAbsPos( pTemp );
- }
- aStartPointWin = pEditView->GetWindowPosTopLeft((USHORT) nPara );
- if ( nDDCurPara == LIST_APPEND )
- {
- long nHeight = pOwner->pEditEngine->GetTextHeight((USHORT)nPara );
- aStartPointWin.Y() += nHeight;
- }
- aStartPointWin.X() = aOutputArWin.Left();
- aEndPointWin.Y() = aStartPointWin.Y();
- aEndPointWin.X() = aOutputArWin.Right();
- }
-
- pWindow->DrawLine( aStartPointWin, aEndPointWin );
- pWindow->SetLineColor( rOldLineColor );
- pWindow->SetRasterOp( eOldOp );
-}
-
-// Berechnet, ueber welchem Absatz eingefuegt werden muss
-
-ULONG OutlinerView::ImpGetInsertionPara( const Point& rPosPixel )
-{
- DBG_CHKTHIS(OutlinerView,0);
- ULONG nCurPara = pEditView->GetParagraph( rPosPixel );
- ParagraphList* pParaList = pOwner->pParaList;
-
- if ( nCurPara == EE_PARA_NOT_FOUND )
- nCurPara = LIST_APPEND;
- else
- {
- Point aPosWin = pEditView->GetWindow()->PixelToLogic( rPosPixel );
- Point aParaPosWin = pEditView->GetWindowPosTopLeft((USHORT)nCurPara);
- long nHeightRef = pOwner->pEditEngine->GetTextHeight((USHORT)nCurPara);
- long nParaYOffs = aPosWin.Y() - aParaPosWin.Y();
-
- if ( nParaYOffs > nHeightRef / 2 )
- {
- Paragraph* p = pParaList->GetParagraph( nCurPara );
- p = pParaList->NextVisible( p );
- nCurPara = p ? pParaList->GetAbsPos( p ) : LIST_APPEND;
- }
- }
- return nCurPara;
-}
-
-
-void OutlinerView::ImpToggleExpand( Paragraph* pPara )
-{
- DBG_CHKTHIS(OutlinerView,0);
-
- USHORT nPara = (USHORT) pOwner->pParaList->GetAbsPos( pPara );
- pEditView->SetSelection( ESelection( nPara, 0, nPara, 0 ) );
- ImplExpandOrCollaps( nPara, nPara, !pOwner->pParaList->HasVisibleChilds( pPara ) );
- pEditView->ShowCursor();
-}
-
-
-void OutlinerView::SetOutliner( Outliner* pOutliner )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pOwner = pOutliner;
- pEditView->SetEditEngine( pOutliner->pEditEngine );
-}
-
-
-
-ULONG OutlinerView::Select( Paragraph* pParagraph, BOOL bSelect,
- BOOL bWithChilds )
-{
- DBG_CHKTHIS(OutlinerView,0);
-
- ULONG nPara = pOwner->pParaList->GetAbsPos( pParagraph );
- USHORT nEnd = 0;
- if ( bSelect )
- nEnd = 0xffff;
-
- ULONG nChildCount = 0;
- if ( bWithChilds )
- nChildCount = pOwner->pParaList->GetChildCount( pParagraph );
-
- ESelection aSel( (USHORT)nPara, 0,(USHORT)(nPara+nChildCount), nEnd );
- pEditView->SetSelection( aSel );
- return nChildCount+1;
-}
-
-
-void OutlinerView::SetAttribs( const SfxItemSet& rAttrs )
-{
- DBG_CHKTHIS(OutlinerView,0);
-
- BOOL bUpdate = pOwner->pEditEngine->GetUpdateMode();
- pOwner->pEditEngine->SetUpdateMode( FALSE );
-
- if( !pOwner->IsInUndo() && pOwner->IsUndoEnabled() )
- pOwner->UndoActionStart( OLUNDO_ATTR );
-
- ParaRange aSel = ImpGetSelectedParagraphs( FALSE );
-
- pEditView->SetAttribs( rAttrs );
-
- // Bullet-Texte aktualisieren
- for( USHORT nPara= aSel.nStartPara; nPara <= aSel.nEndPara; nPara++ )
- {
- pOwner->ImplCheckNumBulletItem( nPara );
- pOwner->ImplCalcBulletText( nPara, FALSE, FALSE );
-
- if( !pOwner->IsInUndo() && pOwner->IsUndoEnabled() )
- pOwner->InsertUndo( new OutlinerUndoCheckPara( pOwner, nPara ) );
- }
-
- if( !pOwner->IsInUndo() && pOwner->IsUndoEnabled() )
- pOwner->UndoActionEnd( OLUNDO_ATTR );
-
- pEditView->SetEditEngineUpdateMode( bUpdate );
-}
-
-ParaRange OutlinerView::ImpGetSelectedParagraphs( BOOL bIncludeHiddenChilds )
-{
- DBG_CHKTHIS( OutlinerView, 0 );
-
- ESelection aSel = pEditView->GetSelection();
- ParaRange aParas( aSel.nStartPara, aSel.nEndPara );
- aParas.Adjust();
-
- // unsichtbare Childs des letzten Parents in Selektion mit aufnehmen
- if ( bIncludeHiddenChilds )
- {
- Paragraph* pLast = pOwner->pParaList->GetParagraph( aParas.nEndPara );
- if ( pOwner->pParaList->HasHiddenChilds( pLast ) )
- aParas.nEndPara =
- sal::static_int_cast< USHORT >(
- aParas.nEndPara +
- pOwner->pParaList->GetChildCount( pLast ) );
- }
- return aParas;
-}
-
-// MT: Name sollte mal geaendert werden!
-void OutlinerView::AdjustDepth( short nDX )
-{
- Indent( nDX );
-}
-
-void OutlinerView::Indent( short nDiff )
-{
- DBG_CHKTHIS( OutlinerView, 0 );
-
- if( !nDiff || ( ( nDiff > 0 ) && ImpCalcSelectedPages( TRUE ) && !pOwner->ImpCanIndentSelectedPages( this ) ) )
- return;
-
- const bool bOutlinerView = pOwner->pEditEngine->GetControlWord() & EE_CNTRL_OUTLINER;
- BOOL bUpdate = pOwner->pEditEngine->GetUpdateMode();
- pOwner->pEditEngine->SetUpdateMode( FALSE );
-
- BOOL bUndo = !pOwner->IsInUndo() && pOwner->IsUndoEnabled();
-
- if( bUndo )
- pOwner->UndoActionStart( OLUNDO_DEPTH );
-
- sal_Int16 nMinDepth = -1; // Optimierung: Nicht unnoetig viele Absatze neu berechnen
-
- ParaRange aSel = ImpGetSelectedParagraphs( TRUE );
- for ( USHORT nPara = aSel.nStartPara; nPara <= aSel.nEndPara; nPara++ )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
-
- sal_Int16 nOldDepth = pPara->GetDepth();
- sal_Int16 nNewDepth = nOldDepth + nDiff;
-
- if( bOutlinerView && nPara )
- {
- const bool bPage = pPara->HasFlag(PARAFLAG_ISPAGE);
- if( (bPage && (nDiff == +1)) || (!bPage && (nDiff == -1) && (nOldDepth <= 0)) )
- {
- // App benachrichtigen
- pOwner->nDepthChangedHdlPrevDepth = (sal_Int16)nOldDepth;
- pOwner->mnDepthChangeHdlPrevFlags = pPara->nFlags;
- pOwner->pHdlParagraph = pPara;
-
- if( bPage )
- pPara->RemoveFlag( PARAFLAG_ISPAGE );
- else
- pPara->SetFlag( PARAFLAG_ISPAGE );
-
- pOwner->DepthChangedHdl();
- pOwner->pEditEngine->QuickMarkInvalid( ESelection( nPara, 0, nPara, 0 ) );
-
- if( bUndo )
- pOwner->InsertUndo( new OutlinerUndoChangeParaFlags( pOwner, nPara, pOwner->mnDepthChangeHdlPrevFlags, pPara->nFlags ) );
-
- continue;
- }
- }
-
- // do not switch off numeration with tab
- if( (nOldDepth == 0) && (nNewDepth == -1) )
- continue;
-
- // do not indent if there is no numeration enabled
- if( nOldDepth == -1 )
- continue;
-
- if ( nNewDepth < pOwner->nMinDepth )
- nNewDepth = pOwner->nMinDepth;
- if ( nNewDepth > pOwner->nMaxDepth )
- nNewDepth = pOwner->nMaxDepth;
-
- if( nOldDepth < nMinDepth )
- nMinDepth = nOldDepth;
- if( nNewDepth < nMinDepth )
- nMinDepth = nNewDepth;
-
- if( nOldDepth != nNewDepth )
- {
- if ( ( nPara == aSel.nStartPara ) && aSel.nStartPara && ( pOwner->ImplGetOutlinerMode() != OUTLINERMODE_TEXTOBJECT ))
- {
- // Sonderfall: Der Vorgaenger eines eingerueckten Absatzes ist
- // unsichtbar und steht jetzt auf der gleichen Ebene wie der
- // sichtbare Absatz. In diesem Fall wird der naechste sichtbare
- // Absatz gesucht und aufgeplustert.
-#ifdef DBG_UTIL
- Paragraph* _pPara = pOwner->pParaList->GetParagraph( aSel.nStartPara );
- DBG_ASSERT(_pPara->IsVisible(),"Selected Paragraph invisible ?!");
-#endif
- Paragraph* pPrev= pOwner->pParaList->GetParagraph( aSel.nStartPara-1 );
-
- if( !pPrev->IsVisible() && ( pPrev->GetDepth() == nNewDepth ) )
- {
- // Vorgaenger ist eingeklappt und steht auf gleicher Ebene
- // => naechsten sichtbaren Absatz suchen und expandieren
- pPrev = pOwner->pParaList->GetParent( pPrev );
- while( !pPrev->IsVisible() )
- pPrev = pOwner->pParaList->GetParent( pPrev );
-
- pOwner->Expand( pPrev );
- pOwner->InvalidateBullet( pPrev, pOwner->pParaList->GetAbsPos( pPrev ) );
- }
- }
-
- pOwner->nDepthChangedHdlPrevDepth = (sal_Int16)nOldDepth;
- pOwner->mnDepthChangeHdlPrevFlags = pPara->nFlags;
- pOwner->pHdlParagraph = pPara;
-
- pOwner->ImplInitDepth( nPara, nNewDepth, TRUE, FALSE );
- pOwner->ImplCalcBulletText( nPara, FALSE, FALSE );
-
- if ( pOwner->ImplGetOutlinerMode() == OUTLINERMODE_OUTLINEOBJECT )
- pOwner->ImplSetLevelDependendStyleSheet( nPara );
-
- // App benachrichtigen
- pOwner->DepthChangedHdl();
- }
- else
- {
- // Needs at least a repaint...
- pOwner->pEditEngine->QuickMarkInvalid( ESelection( nPara, 0, nPara, 0 ) );
- }
- }
-
- // MT 19.08.99: War mal fuer Optimierung (outliner.cxx#1.193),
- // hat aber zu zuviel Wartungsaufwand / doppelten Funktionen gefuehrt
- // und zu wenig gebracht:
- // pOwner->ImpSetBulletTextsFrom( aSel.nStartPara+1, nMinDepth );
- // Wird jetzt direkt in Schleife mit ImplCalcBulletText() erledigt.
- // Jetzt fehlen nur noch die folgenden Ansaetze, die davon betroffen sind.
- USHORT nParas = (USHORT)pOwner->pParaList->GetParagraphCount();
- for ( USHORT n = aSel.nEndPara+1; n < nParas; n++ )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( n );
- if ( pPara->GetDepth() < nMinDepth )
- break;
- pOwner->ImplCalcBulletText( n, FALSE, FALSE );
- }
-
- if ( bUpdate )
- {
- pEditView->SetEditEngineUpdateMode( TRUE );
- pEditView->ShowCursor();
- }
-
- if( bUndo )
- pOwner->UndoActionEnd( OLUNDO_DEPTH );
-}
-
-BOOL OutlinerView::AdjustHeight( long nDY )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->MoveParagraphs( nDY );
- return TRUE; // remove return value...
-}
-
-void OutlinerView::AdjustDepth( Paragraph* pPara, short nDX, BOOL bWithChilds)
-{
- DBG_CHKTHIS(OutlinerView,0);
- ULONG nStartPara = pOwner->pParaList->GetAbsPos( pPara );
- ULONG nEndPara = nStartPara;
- if ( bWithChilds )
- nEndPara += pOwner->pParaList->GetChildCount( pPara );
- ESelection aSel((USHORT)nStartPara, 0,(USHORT)nEndPara, 0xffff );
- pEditView->SetSelection( aSel );
- AdjustDepth( nDX );
-}
-
-void OutlinerView::AdjustHeight( Paragraph* pPara, long nDY, BOOL bWithChilds )
-{
- DBG_CHKTHIS(OutlinerView,0);
- ULONG nStartPara = pOwner->pParaList->GetAbsPos( pPara );
- ULONG nEndPara = nStartPara;
- if ( bWithChilds )
- nEndPara += pOwner->pParaList->GetChildCount( pPara );
- ESelection aSel( (USHORT)nStartPara, 0, (USHORT)nEndPara, 0xffff );
- pEditView->SetSelection( aSel );
- AdjustHeight( nDY );
-}
-
-
-Rectangle OutlinerView::GetVisArea() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetVisArea();
-}
-
-
-Point OutlinerView::ImpGetDocPos( const Point& rPosPixel )
-{
- DBG_CHKTHIS(OutlinerView,0);
- Rectangle aOutArWin = GetOutputArea();
- // Position in der OutputArea berechnen
- Point aCurPosDoc( rPosPixel );
- aCurPosDoc = pEditView->GetWindow()->PixelToLogic( aCurPosDoc );
- aCurPosDoc -= aOutArWin.TopLeft();
- aCurPosDoc += pEditView->GetVisArea().TopLeft();
- return aCurPosDoc;
-}
-
-// MT 05/00: Wofuer dies ImpXXXScroll, sollte das nicht die EditEngine machen???
-
-void OutlinerView::ImpDragScroll( const Point& rPosPix )
-{
- DBG_CHKTHIS(OutlinerView,0);
- Point aPosWin = pEditView->GetWindow()->PixelToLogic( rPosPix );
- Rectangle aOutputArWin = pEditView->GetOutputArea();
- if ( aPosWin.X() <= aOutputArWin.Left() + nDDScrollLRBorderWidthWin)
- ImpScrollLeft();
- else if( aPosWin.X() >= aOutputArWin.Right()- nDDScrollLRBorderWidthWin)
- ImpScrollRight();
- else if( aPosWin.Y() <= aOutputArWin.Top() + nDDScrollTBBorderWidthWin)
- ImpScrollUp();
- else if(aPosWin.Y() >= aOutputArWin.Bottom() - nDDScrollTBBorderWidthWin)
- ImpScrollDown();
-}
-
-
-void OutlinerView::ImpScrollLeft()
-{
- DBG_CHKTHIS(OutlinerView,0);
- Rectangle aVisArea( pEditView->GetVisArea() );
- long nMaxScrollOffs = aVisArea.Left();
- if ( !nMaxScrollOffs )
- return;
- long nScrollOffsRef = (aVisArea.GetWidth() * OL_SCROLL_HOROFFSET) / 100;
- if ( !nScrollOffsRef )
- nScrollOffsRef = 1;
- if ( nScrollOffsRef > nMaxScrollOffs )
- nScrollOffsRef = nMaxScrollOffs;
-
- ImpHideDDCursor();
- Scroll( -nScrollOffsRef, 0 );
-
- EditStatus aScrollStat;
- aScrollStat.GetStatusWord() = EE_STAT_HSCROLL;
- pOwner->pEditEngine->GetStatusEventHdl().Call( &aScrollStat );
-}
-
-
-void OutlinerView::ImpScrollRight()
-{
- DBG_CHKTHIS(OutlinerView,0);
- Rectangle aVisArea( pEditView->GetVisArea() );
- long nMaxScrollOffs = pOwner->pEditEngine->GetPaperSize().Width() -
- aVisArea.Right();
- if ( !nMaxScrollOffs )
- return;
- long nScrollOffsRef = (aVisArea.GetWidth() * OL_SCROLL_HOROFFSET) / 100;
- if ( !nScrollOffsRef )
- nScrollOffsRef = 1;
- if ( nScrollOffsRef > nMaxScrollOffs )
- nScrollOffsRef = nMaxScrollOffs;
-
- ImpHideDDCursor();
- Scroll( nScrollOffsRef, 0 );
-
- EditStatus aScrollStat;
- aScrollStat.GetStatusWord() = EE_STAT_HSCROLL;
- pOwner->pEditEngine->GetStatusEventHdl().Call( &aScrollStat );
-}
-
-
-void OutlinerView::ImpScrollDown()
-{
- DBG_CHKTHIS(OutlinerView,0);
- Rectangle aVisArea( pEditView->GetVisArea() );
- Size aDocSize( 0, (long)pOwner->pEditEngine->GetTextHeight() );
-
- long nMaxScrollOffs = aDocSize.Height();
- nMaxScrollOffs -= aVisArea.Top();
- nMaxScrollOffs -= aVisArea.GetHeight();
- if ( !nMaxScrollOffs )
- return;
-
- long nScrollOffsRef = (aVisArea.GetHeight() * OL_SCROLL_VEROFFSET) / 100;
-
- if ( nScrollOffsRef > nMaxScrollOffs )
- nScrollOffsRef = nMaxScrollOffs;
- if ( !nScrollOffsRef )
- nScrollOffsRef = 1;
-
- ImpHideDDCursor();
- Scroll( 0, -nScrollOffsRef );
-
- EditStatus aScrollStat;
- aScrollStat.GetStatusWord() = EE_STAT_VSCROLL;
- pOwner->pEditEngine->GetStatusEventHdl().Call( &aScrollStat );
-}
-
-
-void OutlinerView::ImpScrollUp()
-{
- DBG_CHKTHIS(OutlinerView,0);
- Rectangle aVisArea( pEditView->GetVisArea() );
- long nMaxScrollOffs = aVisArea.Top();
- if ( !nMaxScrollOffs )
- return;
- long nScrollOffsRef = (aVisArea.GetHeight() * OL_SCROLL_VEROFFSET) / 100;
-
-
- if ( nScrollOffsRef > nMaxScrollOffs )
- nScrollOffsRef = nMaxScrollOffs;
- if ( !nScrollOffsRef )
- nScrollOffsRef = 1;
-
- ImpHideDDCursor();
- Scroll( 0, nScrollOffsRef );
-
- EditStatus aScrollStat;
- aScrollStat.GetStatusWord() = EE_STAT_VSCROLL;
- pOwner->pEditEngine->GetStatusEventHdl().Call( &aScrollStat );
-}
-
-
-void OutlinerView::Expand()
-{
- DBG_CHKTHIS( OutlinerView, 0 );
- ParaRange aParas = ImpGetSelectedParagraphs( FALSE );
- ImplExpandOrCollaps( aParas.nStartPara, aParas.nEndPara, TRUE );
-}
-
-
-void OutlinerView::Collapse()
-{
- DBG_CHKTHIS( OutlinerView, 0 );
- ParaRange aParas = ImpGetSelectedParagraphs( FALSE );
- ImplExpandOrCollaps( aParas.nStartPara, aParas.nEndPara, FALSE );
-}
-
-
-void OutlinerView::ExpandAll()
-{
- DBG_CHKTHIS( OutlinerView, 0 );
- ImplExpandOrCollaps( 0, (USHORT)(pOwner->pParaList->GetParagraphCount()-1), TRUE );
-}
-
-
-void OutlinerView::CollapseAll()
-{
- DBG_CHKTHIS(OutlinerView,0);
- ImplExpandOrCollaps( 0, (USHORT)(pOwner->pParaList->GetParagraphCount()-1), FALSE );
-}
-
-void OutlinerView::ImplExpandOrCollaps( USHORT nStartPara, USHORT nEndPara, BOOL bExpand )
-{
- DBG_CHKTHIS( OutlinerView, 0 );
-
- BOOL bUpdate = pOwner->GetUpdateMode();
- pOwner->SetUpdateMode( FALSE );
-
- BOOL bUndo = !pOwner->IsInUndo() && pOwner->IsUndoEnabled();
- if( bUndo )
- pOwner->UndoActionStart( bExpand ? OLUNDO_EXPAND : OLUNDO_COLLAPSE );
-
- for ( USHORT nPara = nStartPara; nPara <= nEndPara; nPara++ )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
- BOOL bDone = bExpand ? pOwner->Expand( pPara ) : pOwner->Collapse( pPara );
- if( bDone )
- {
- // Der Strich unter dem Absatz muss verschwinden...
- pOwner->pEditEngine->QuickMarkToBeRepainted( nPara );
- }
- }
-
- if( bUndo )
- pOwner->UndoActionEnd( bExpand ? OLUNDO_EXPAND : OLUNDO_COLLAPSE );
-
- if ( bUpdate )
- {
- pOwner->SetUpdateMode( TRUE );
- pEditView->ShowCursor();
- }
-}
-
-
-void OutlinerView::Expand( Paragraph* pPara)
-{
- DBG_CHKTHIS(OutlinerView,0);
- pOwner->Expand( pPara );
-}
-
-
-void OutlinerView::Collapse( Paragraph* pPara)
-{
- DBG_CHKTHIS(OutlinerView,0);
- pOwner->Collapse( pPara );
-}
-
-void OutlinerView::InsertText( const OutlinerParaObject& rParaObj )
-{
- // MT: Wie Paste, nur EditView::Insert, statt EditView::Paste.
- // Eigentlich nicht ganz richtig, das evtl. Einrueckungen
- // korrigiert werden muessen, aber das kommt spaeter durch ein
- // allgemeingueltiges Import.
- // Dann wird im Inserted gleich ermittelt, was fr eine Einrueckebene
- // Moegliche Struktur:
- // pImportInfo mit DestPara, DestPos, nFormat, pParaObj...
- // Evtl. Problematisch:
- // EditEngine, RTF => Absplittung des Bereichs, spaeter
- // zusammenfuehrung
-
- DBG_CHKTHIS(OutlinerView,0);
-
- if ( ImpCalcSelectedPages( FALSE ) && !pOwner->ImpCanDeleteSelectedPages( this ) )
- return;
-
- pOwner->UndoActionStart( OLUNDO_INSERT );
-
- pOwner->pEditEngine->SetUpdateMode( FALSE );
- ULONG nStart, nParaCount;
- nParaCount = pOwner->pEditEngine->GetParagraphCount();
- USHORT nSize = ImpInitPaste( nStart );
- pEditView->InsertText( rParaObj.GetTextObject() );
- ImpPasted( nStart, nParaCount, nSize);
- pEditView->SetEditEngineUpdateMode( TRUE );
-
- pOwner->UndoActionEnd( OLUNDO_INSERT );
-
- pEditView->ShowCursor( TRUE, TRUE );
-}
-
-
-
-void OutlinerView::Cut()
-{
- DBG_CHKTHIS(OutlinerView,0);
- if ( !ImpCalcSelectedPages( FALSE ) || pOwner->ImpCanDeleteSelectedPages( this ) )
- pEditView->Cut();
-}
-
-void OutlinerView::Paste()
-{
- DBG_CHKTHIS(OutlinerView,0);
- PasteSpecial(); // HACK(SD ruft nicht PasteSpecial auf)
-}
-
-void OutlinerView::PasteSpecial()
-{
- DBG_CHKTHIS(OutlinerView,0);
- if ( !ImpCalcSelectedPages( FALSE ) || pOwner->ImpCanDeleteSelectedPages( this ) )
- {
- pOwner->UndoActionStart( OLUNDO_INSERT );
-
- pOwner->pEditEngine->SetUpdateMode( FALSE );
- pOwner->bPasting = TRUE;
- pEditView->PasteSpecial();
-
- if ( pOwner->ImplGetOutlinerMode() == OUTLINERMODE_OUTLINEOBJECT )
- {
- const USHORT nParaCount = pOwner->pEditEngine->GetParagraphCount();
-
- for( USHORT nPara = 0; nPara < nParaCount; nPara++ )
- pOwner->ImplSetLevelDependendStyleSheet( nPara );
- }
-
- pEditView->SetEditEngineUpdateMode( TRUE );
- pOwner->UndoActionEnd( OLUNDO_INSERT );
- pEditView->ShowCursor( TRUE, TRUE );
- }
-}
-
-List* OutlinerView::CreateSelectionList()
-{
- DBG_CHKTHIS( OutlinerView, 0 );
-
- ParaRange aParas = ImpGetSelectedParagraphs( TRUE );
- List* pSelList = new List;
- for ( USHORT nPara = aParas.nStartPara; nPara <= aParas.nEndPara; nPara++ )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
- pSelList->Insert( pPara, LIST_APPEND );
- }
- return pSelList;
-}
-
-SfxStyleSheet* OutlinerView::GetStyleSheet() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetStyleSheet();
-}
-
-void OutlinerView::SetStyleSheet( SfxStyleSheet* pStyle )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetStyleSheet( pStyle );
-
- ParaRange aSel = ImpGetSelectedParagraphs( TRUE );
- for( USHORT nPara = aSel.nStartPara; nPara <= aSel.nEndPara; nPara++ )
- {
- pOwner->ImplCheckNumBulletItem( nPara );
- pOwner->ImplCalcBulletText( nPara, FALSE, FALSE );
- }
-}
-
-Pointer OutlinerView::GetPointer( const Point& rPosPixel )
-{
- DBG_CHKTHIS(OutlinerView,0);
-
- MouseTarget eTarget;
- ImpCheckMousePos( rPosPixel, eTarget );
-
- PointerStyle ePointerStyle = POINTER_ARROW;
- if ( eTarget == MouseText )
- {
- ePointerStyle = GetOutliner()->IsVertical() ? POINTER_TEXT_VERTICAL : POINTER_TEXT;
- }
- else if ( eTarget == MouseHypertext )
- {
- ePointerStyle = POINTER_REFHAND;
- }
- else if ( eTarget == MouseBullet )
- {
- ePointerStyle = POINTER_MOVE;
- }
-
- return Pointer( ePointerStyle );
-}
-
-
-USHORT OutlinerView::ImpInitPaste( ULONG& rStart )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pOwner->bPasting = TRUE;
- ESelection aSelection( pEditView->GetSelection() );
- aSelection.Adjust();
- rStart = aSelection.nStartPara;
- USHORT nSize = aSelection.nEndPara - aSelection.nStartPara + 1;
- return nSize;
-}
-
-
-void OutlinerView::ImpPasted( ULONG nStart, ULONG nPrevParaCount, USHORT nSize)
-{
- DBG_CHKTHIS(OutlinerView,0);
- pOwner->bPasting = FALSE;
- ULONG nCurParaCount = (ULONG)pOwner->pEditEngine->GetParagraphCount();
- if( nCurParaCount < nPrevParaCount )
- nSize = sal::static_int_cast< USHORT >(
- nSize - ( nPrevParaCount - nCurParaCount ) );
- else
- nSize = sal::static_int_cast< USHORT >(
- nSize + ( nCurParaCount - nPrevParaCount ) );
- pOwner->ImpTextPasted( nStart, nSize );
-}
-
-
-void OutlinerView::Command( const CommandEvent& rCEvt )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->Command( rCEvt );
-}
-
-
-void OutlinerView::SelectRange( ULONG nFirst, USHORT nCount )
-{
- DBG_CHKTHIS(OutlinerView,0);
- ULONG nLast = nFirst+nCount;
- nCount = (USHORT)pOwner->pParaList->GetParagraphCount();
- if( nLast <= nCount )
- nLast = nCount - 1;
- ESelection aSel( (USHORT)nFirst, 0, (USHORT)nLast, 0xffff );
- pEditView->SetSelection( aSel );
-}
-
-
-USHORT OutlinerView::ImpCalcSelectedPages( BOOL bIncludeFirstSelected )
-{
- DBG_CHKTHIS(OutlinerView,0);
-
- ESelection aSel( pEditView->GetSelection() );
- aSel.Adjust();
-
- USHORT nPages = 0;
- USHORT nFirstPage = 0xFFFF;
- USHORT nStartPara = aSel.nStartPara;
- if ( !bIncludeFirstSelected )
- nStartPara++; // alle nach StartPara kommenden Absaetze werden geloescht
- for ( USHORT nPara = nStartPara; nPara <= aSel.nEndPara; nPara++ )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
- DBG_ASSERT(pPara, "ImpCalcSelectedPages: ungueltige Selection? ");
- if( pPara->HasFlag(PARAFLAG_ISPAGE) )
- {
- nPages++;
- if( nFirstPage == 0xFFFF )
- nFirstPage = nPara;
- }
- }
-
- if( nPages )
- {
- pOwner->nDepthChangedHdlPrevDepth = nPages;
- pOwner->pHdlParagraph = 0;
- pOwner->mnFirstSelPage = nFirstPage;
- }
-
- return nPages;
-}
-
-
-void OutlinerView::ToggleBullets()
-{
- pOwner->UndoActionStart( OLUNDO_DEPTH );
-
- ESelection aSel( pEditView->GetSelection() );
- aSel.Adjust();
-
- const bool bUpdate = pOwner->pEditEngine->GetUpdateMode();
- pOwner->pEditEngine->SetUpdateMode( FALSE );
-
- sal_Int16 nDepth = -2;
-
- for ( USHORT nPara = aSel.nStartPara; nPara <= aSel.nEndPara; nPara++ )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
- DBG_ASSERT(pPara, "OutlinerView::ToggleBullets(), illegal selection?");
-
- if( pPara )
- {
- if( nDepth == -2 )
- nDepth = (pOwner->GetDepth(nPara) == -1) ? 0 : -1;
-
- pOwner->SetDepth( pPara, nDepth );
-
- if( nDepth == -1 )
- {
- const SfxItemSet& rAttrs = pOwner->GetParaAttribs( nPara );
- if(rAttrs.GetItemState( EE_PARA_BULLETSTATE ) == SFX_ITEM_SET)
- {
- SfxItemSet aAttrs(rAttrs);
- aAttrs.ClearItem( EE_PARA_BULLETSTATE );
- pOwner->SetParaAttribs( nPara, aAttrs );
- }
- }
- }
- }
-
- // --> OD 2009-03-10 #i100014#
- // It is not a good idea to substract 1 from a count and cast the result
- // to USHORT without check, if the count is 0.
- USHORT nParaCount = (USHORT) (pOwner->pParaList->GetParagraphCount());
- // <--
- pOwner->ImplCheckParagraphs( aSel.nStartPara, nParaCount );
- pOwner->pEditEngine->QuickMarkInvalid( ESelection( aSel.nStartPara, 0, nParaCount, 0 ) );
-
- pOwner->pEditEngine->SetUpdateMode( bUpdate );
-
- pOwner->UndoActionEnd( OLUNDO_DEPTH );
-}
-
-void OutlinerView::EnableBullets()
-{
- pOwner->UndoActionStart( OLUNDO_DEPTH );
-
- ESelection aSel( pEditView->GetSelection() );
- aSel.Adjust();
-
- const bool bUpdate = pOwner->pEditEngine->GetUpdateMode();
- pOwner->pEditEngine->SetUpdateMode( FALSE );
-
- for ( USHORT nPara = aSel.nStartPara; nPara <= aSel.nEndPara; nPara++ )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
- DBG_ASSERT(pPara, "OutlinerView::ToggleBullets(), illegal selection?");
-
- if( pPara && (pOwner->GetDepth(nPara) == -1) )
- {
- pOwner->SetDepth( pPara, 0 );
- }
- }
-
- // --> OD 2009-03-10 #i100014#
- // It is not a good idea to substract 1 from a count and cast the result
- // to USHORT without check, if the count is 0.
- USHORT nParaCount = (USHORT) (pOwner->pParaList->GetParagraphCount());
- // <--
- pOwner->ImplCheckParagraphs( aSel.nStartPara, nParaCount );
- pOwner->pEditEngine->QuickMarkInvalid( ESelection( aSel.nStartPara, 0, nParaCount, 0 ) );
-
- pOwner->pEditEngine->SetUpdateMode( bUpdate );
-
- pOwner->UndoActionEnd( OLUNDO_DEPTH );
-}
-
-
-void OutlinerView::RemoveAttribsKeepLanguages( BOOL bRemoveParaAttribs )
-{
- RemoveAttribs( bRemoveParaAttribs, 0, TRUE /*keep language attribs*/ );
-}
-
-void OutlinerView::RemoveAttribs( BOOL bRemoveParaAttribs, USHORT nWhich, BOOL bKeepLanguages )
-{
- DBG_CHKTHIS(OutlinerView,0);
- BOOL bUpdate = pOwner->GetUpdateMode();
- pOwner->SetUpdateMode( FALSE );
- pOwner->UndoActionStart( OLUNDO_ATTR );
- if (bKeepLanguages)
- pEditView->RemoveAttribsKeepLanguages( bRemoveParaAttribs );
- else
- pEditView->RemoveAttribs( bRemoveParaAttribs, nWhich );
- if ( bRemoveParaAttribs )
- {
- // Ueber alle Absaetze, und Einrueckung und Level einstellen
- ESelection aSel = pEditView->GetSelection();
- aSel.Adjust();
- for ( USHORT nPara = aSel.nStartPara; nPara <= aSel.nEndPara; nPara++ )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
- pOwner->ImplInitDepth( nPara, pPara->GetDepth(), FALSE, FALSE );
- }
- }
- pOwner->UndoActionEnd( OLUNDO_ATTR );
- pOwner->SetUpdateMode( bUpdate );
-}
-
-
-
- // =====================================================================
-// ====================== Einfache Durchreicher =======================
-// ======================================================================
-
-
-void OutlinerView::InsertText( const XubString& rNew, BOOL bSelect )
-{
- DBG_CHKTHIS(OutlinerView,0);
- if( pOwner->bFirstParaIsEmpty )
- pOwner->Insert( String() );
- pEditView->InsertText( rNew, bSelect );
-}
-
-void OutlinerView::SetVisArea( const Rectangle& rRec )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetVisArea( rRec );
-}
-
-
-void OutlinerView::SetSelection( const ESelection& rSel )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetSelection( rSel );
-}
-
-void OutlinerView::SetReadOnly( BOOL bReadOnly )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetReadOnly( bReadOnly );
-}
-
-BOOL OutlinerView::IsReadOnly() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->IsReadOnly();
-}
-
-BOOL OutlinerView::HasSelection() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->HasSelection();
-}
-
-
-void OutlinerView::ShowCursor( BOOL bGotoCursor )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->ShowCursor( bGotoCursor );
-}
-
-
-void OutlinerView::HideCursor()
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->HideCursor();
-}
-
-
-void OutlinerView::SetWindow( Window* pWin )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetWindow( pWin );
-}
-
-
-Window* OutlinerView::GetWindow() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetWindow();
-}
-
-
-void OutlinerView::SetOutputArea( const Rectangle& rRect )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetOutputArea( rRect );
-}
-
-
-Rectangle OutlinerView::GetOutputArea() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetOutputArea();
-}
-
-
-XubString OutlinerView::GetSelected() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetSelected();
-}
-
-
-void OutlinerView::RemoveCharAttribs( ULONG nPara, USHORT nWhich)
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->RemoveCharAttribs( (USHORT)nPara, nWhich);
-}
-
-
-void OutlinerView::CompleteAutoCorrect()
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->CompleteAutoCorrect();
-}
-
-
-EESpellState OutlinerView::StartSpeller( BOOL bMultiDoc )
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->StartSpeller( bMultiDoc );
-}
-
-
-EESpellState OutlinerView::StartThesaurus()
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->StartThesaurus();
-}
-
-
-void OutlinerView::StartTextConversion(
- LanguageType nSrcLang, LanguageType nDestLang, const Font *pDestFont,
- INT32 nOptions, BOOL bIsInteractive, BOOL bMultipleDoc )
-{
- DBG_CHKTHIS(OutlinerView,0);
- if (
- (LANGUAGE_KOREAN == nSrcLang && LANGUAGE_KOREAN == nDestLang) ||
- (LANGUAGE_CHINESE_SIMPLIFIED == nSrcLang && LANGUAGE_CHINESE_TRADITIONAL == nDestLang) ||
- (LANGUAGE_CHINESE_TRADITIONAL == nSrcLang && LANGUAGE_CHINESE_SIMPLIFIED == nDestLang)
- )
- {
- pEditView->StartTextConversion( nSrcLang, nDestLang, pDestFont, nOptions, bIsInteractive, bMultipleDoc );
- }
- else
- {
- DBG_ERROR( "unexpected language" );
- }
-}
-
-
-USHORT OutlinerView::StartSearchAndReplace( const SvxSearchItem& rSearchItem )
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->StartSearchAndReplace( rSearchItem );
-}
-
-void OutlinerView::TransliterateText( sal_Int32 nTransliterationMode )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->TransliterateText( nTransliterationMode );
-}
-
-
-
-ESelection OutlinerView::GetSelection()
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetSelection();
-}
-
-
-void OutlinerView::Scroll( long nHorzScroll, long nVertScroll )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->Scroll( nHorzScroll, nVertScroll );
-}
-
-
-void OutlinerView::SetControlWord( ULONG nWord )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetControlWord( nWord );
-}
-
-
-ULONG OutlinerView::GetControlWord() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetControlWord();
-}
-
-
-void OutlinerView::SetAnchorMode( EVAnchorMode eMode )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetAnchorMode( eMode );
-}
-
-
-EVAnchorMode OutlinerView::GetAnchorMode() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetAnchorMode();
-}
-
-
-void OutlinerView::Undo()
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->Undo();
-}
-
-
-void OutlinerView::Redo()
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->Redo();
-}
-
-
-void OutlinerView::EnablePaste( BOOL bEnable )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->EnablePaste( bEnable );
-}
-
-
-void OutlinerView::Copy()
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->Copy();
-}
-
-
-void OutlinerView::InsertField( const SvxFieldItem& rFld )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->InsertField( rFld );
-}
-
-
-const SvxFieldItem* OutlinerView::GetFieldUnderMousePointer() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetFieldUnderMousePointer();
-}
-
-
-const SvxFieldItem* OutlinerView::GetFieldUnderMousePointer( USHORT& nPara, USHORT& nPos ) const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetFieldUnderMousePointer( nPara, nPos );
-}
-
-
-const SvxFieldItem* OutlinerView::GetFieldAtSelection() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetFieldAtSelection();
-}
-
-void OutlinerView::SetInvalidateMore( USHORT nPixel )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetInvalidateMore( nPixel );
-}
-
-
-USHORT OutlinerView::GetInvalidateMore() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetInvalidateMore();
-}
-
-
-BOOL OutlinerView::IsCursorAtWrongSpelledWord( BOOL bMarkIfWrong )
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->IsCursorAtWrongSpelledWord( bMarkIfWrong );
-}
-
-
-BOOL OutlinerView::IsWrongSpelledWordAtPos( const Point& rPosPixel, BOOL bMarkIfWrong )
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->IsWrongSpelledWordAtPos( rPosPixel, bMarkIfWrong );
-}
-
-
-void OutlinerView::SpellIgnoreWord()
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SpellIgnoreWord();
-}
-
-
-void OutlinerView::ExecuteSpellPopup( const Point& rPosPixel, Link* pStartDlg )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->ExecuteSpellPopup( rPosPixel, pStartDlg );
-}
-
-ULONG OutlinerView::Read( SvStream& rInput, const String& rBaseURL, EETextFormat eFormat, BOOL bSelect, SvKeyValueIterator* pHTTPHeaderAttrs )
-{
- DBG_CHKTHIS(OutlinerView,0);
- USHORT nOldParaCount = pEditView->GetEditEngine()->GetParagraphCount();
- ESelection aOldSel = pEditView->GetSelection();
- aOldSel.Adjust();
-
- ULONG nRet = pEditView->Read( rInput, rBaseURL, eFormat, bSelect, pHTTPHeaderAttrs );
-
- // MT 08/00: Hier sollte eigentlich das gleiche wie in PasteSpecial passieren!
- // Mal anpassen, wenn dieses ImplInitPaste und ImpPasted-Geraffel ueberarbeitet ist.
-
- long nParaDiff = pEditView->GetEditEngine()->GetParagraphCount() - nOldParaCount;
- USHORT nChangesStart = aOldSel.nStartPara;
- USHORT nChangesEnd = sal::static_int_cast< USHORT >(nChangesStart + nParaDiff + (aOldSel.nEndPara-aOldSel.nStartPara));
-
- for ( USHORT n = nChangesStart; n <= nChangesEnd; n++ )
- {
- if ( eFormat == EE_FORMAT_BIN )
- {
- USHORT nDepth = 0;
- const SfxItemSet& rAttrs = pOwner->GetParaAttribs( n );
- const SfxInt16Item& rLevel = (const SfxInt16Item&) rAttrs.Get( EE_PARA_OUTLLEVEL );
- nDepth = rLevel.GetValue();
- pOwner->ImplInitDepth( n, nDepth, FALSE );
- }
-
- if ( pOwner->ImplGetOutlinerMode() == OUTLINERMODE_OUTLINEOBJECT )
- pOwner->ImplSetLevelDependendStyleSheet( n );
- }
-
- if ( eFormat != EE_FORMAT_BIN )
- {
- pOwner->ImpFilterIndents( nChangesStart, nChangesEnd );
- }
-
- return nRet;
-}
-
-ULONG OutlinerView::Write( SvStream& rOutput, EETextFormat eFormat )
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->Write( rOutput, eFormat );
-}
-
-void OutlinerView::SetBackgroundColor( const Color& rColor )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetBackgroundColor( rColor );
-}
-
-
-Color OutlinerView::GetBackgroundColor()
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetBackgroundColor();
-}
-
-SfxItemSet OutlinerView::GetAttribs()
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetAttribs();
-}
-
-USHORT OutlinerView::GetSelectedScriptType() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetSelectedScriptType();
-}
-
-String OutlinerView::GetSurroundingText() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetSurroundingText();
-}
-
-Selection OutlinerView::GetSurroundingTextSelection() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetSurroundingTextSelection();
-}
diff --git a/svx/source/outliner/paralist.cxx b/svx/source/outliner/paralist.cxx
deleted file mode 100644
index 3bc52fd8e460..000000000000
--- a/svx/source/outliner/paralist.cxx
+++ /dev/null
@@ -1,290 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: paralist.cxx,v $
- * $Revision: 1.11.6.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svx.hxx"
-
-#include <paralist.hxx>
-#include <svx/outliner.hxx> // nur wegen Paragraph, muss geaendert werden!
-#include <svx/numdef.hxx>
-
-DBG_NAME(Paragraph)
-
-ParagraphData::ParagraphData()
-: nDepth( -1 )
-, mnNumberingStartValue( -1 )
-, mbParaIsNumberingRestart( sal_False )
-{
-}
-
-ParagraphData::ParagraphData( const ParagraphData& r )
-: nDepth( r.nDepth )
-, mnNumberingStartValue( r.mnNumberingStartValue )
-, mbParaIsNumberingRestart( r.mbParaIsNumberingRestart )
-{
-}
-
-ParagraphData& ParagraphData::operator=( const ParagraphData& r)
-{
- nDepth = r.nDepth;
- mnNumberingStartValue = r.mnNumberingStartValue;
- mbParaIsNumberingRestart = r.mbParaIsNumberingRestart;
- return *this;
-}
-
-bool ParagraphData::operator==(const ParagraphData& rCandidate) const
-{
- return (nDepth == rCandidate.nDepth
- && mnNumberingStartValue == rCandidate.mnNumberingStartValue
- && mbParaIsNumberingRestart == rCandidate.mbParaIsNumberingRestart);
-}
-
-Paragraph::Paragraph( sal_Int16 nDDepth )
-: aBulSize( -1, -1)
-{
- DBG_CTOR( Paragraph, 0 );
-
- DBG_ASSERT( ( nDDepth >= -1 ) && ( nDDepth < SVX_MAX_NUM ), "Paragraph-CTOR: nDepth invalid!" );
-
- nDepth = nDDepth;
- nFlags = 0;
- bVisible = TRUE;
-}
-
-Paragraph::Paragraph( const Paragraph& rPara )
-: ParagraphData( rPara )
-, aBulText( rPara.aBulText )
-, aBulSize( rPara.aBulSize )
-{
- DBG_CTOR( Paragraph, 0 );
-
- nDepth = rPara.nDepth;
- nFlags = rPara.nFlags;
- bVisible = rPara.bVisible;
-}
-
-Paragraph::Paragraph( const ParagraphData& rData )
-: nFlags( 0 )
-, aBulSize( -1, -1)
-, bVisible( TRUE )
-{
- DBG_CTOR( Paragraph, 0 );
-
- nDepth = rData.nDepth;
- mnNumberingStartValue = rData.mnNumberingStartValue;
- mbParaIsNumberingRestart = rData.mbParaIsNumberingRestart;
-}
-
-Paragraph::~Paragraph()
-{
- DBG_DTOR( Paragraph, 0 );
-}
-
-void Paragraph::SetNumberingStartValue( sal_Int16 nNumberingStartValue )
-{
- mnNumberingStartValue = nNumberingStartValue;
- if( mnNumberingStartValue != -1 )
- mbParaIsNumberingRestart = true;
-}
-
-void Paragraph::SetParaIsNumberingRestart( sal_Bool bParaIsNumberingRestart )
-{
- mbParaIsNumberingRestart = bParaIsNumberingRestart;
- if( !mbParaIsNumberingRestart )
- mnNumberingStartValue = -1;
-}
-
-void ParagraphList::Clear( BOOL bDestroyParagraphs )
-{
- if ( bDestroyParagraphs )
- {
- for ( ULONG n = GetParagraphCount(); n; )
- {
- Paragraph* pPara = GetParagraph( --n );
- delete pPara;
- }
- }
- List::Clear();
-}
-
-void ParagraphList::MoveParagraphs( ULONG nStart, ULONG nDest, ULONG _nCount )
-{
- if ( ( nDest < nStart ) || ( nDest >= ( nStart + _nCount ) ) )
- {
- ULONG n;
- ParagraphList aParas;
- for ( n = 0; n < _nCount; n++ )
- {
- Paragraph* pPara = GetParagraph( nStart );
- aParas.Insert( pPara, LIST_APPEND );
- Remove( nStart );
- }
-
- if ( nDest > nStart )
- nDest -= _nCount;
-
- for ( n = 0; n < _nCount; n++ )
- {
- Paragraph* pPara = aParas.GetParagraph( n );
- Insert( pPara, nDest++ );
- }
- }
- else
- {
- DBG_ERROR( "MoveParagraphs: Invalid Parameters" );
- }
-}
-
-Paragraph* ParagraphList::NextVisible( Paragraph* pPara ) const
-{
- ULONG n = GetAbsPos( pPara );
-
- Paragraph* p = GetParagraph( ++n );
- while ( p && !p->IsVisible() )
- p = GetParagraph( ++n );
-
- return p;
-}
-
-Paragraph* ParagraphList::PrevVisible( Paragraph* pPara ) const
-{
- ULONG n = GetAbsPos( pPara );
-
- Paragraph* p = n ? GetParagraph( --n ) : NULL;
- while ( p && !p->IsVisible() )
- p = n ? GetParagraph( --n ) : NULL;
-
- return p;
-}
-
-Paragraph* ParagraphList::LastVisible() const
-{
- ULONG n = GetParagraphCount();
-
- Paragraph* p = n ? GetParagraph( --n ) : NULL;
- while ( p && !p->IsVisible() )
- p = n ? GetParagraph( --n ) : NULL;
-
- return p;
-}
-
-BOOL ParagraphList::HasChilds( Paragraph* pParagraph ) const
-{
- ULONG n = GetAbsPos( pParagraph );
- Paragraph* pNext = GetParagraph( ++n );
- return ( pNext && ( pNext->GetDepth() > pParagraph->GetDepth() ) ) ? TRUE : FALSE;
-}
-
-BOOL ParagraphList::HasHiddenChilds( Paragraph* pParagraph ) const
-{
- ULONG n = GetAbsPos( pParagraph );
- Paragraph* pNext = GetParagraph( ++n );
- return ( pNext && ( pNext->GetDepth() > pParagraph->GetDepth() ) && !pNext->IsVisible() ) ? TRUE : FALSE;
-}
-
-BOOL ParagraphList::HasVisibleChilds( Paragraph* pParagraph ) const
-{
- ULONG n = GetAbsPos( pParagraph );
- Paragraph* pNext = GetParagraph( ++n );
- return ( pNext && ( pNext->GetDepth() > pParagraph->GetDepth() ) && pNext->IsVisible() ) ? TRUE : FALSE;
-}
-
-ULONG ParagraphList::GetChildCount( Paragraph* pParent ) const
-{
- ULONG nChildCount = 0;
- ULONG n = GetAbsPos( pParent );
- Paragraph* pPara = GetParagraph( ++n );
- while ( pPara && ( pPara->GetDepth() > pParent->GetDepth() ) )
- {
- nChildCount++;
- pPara = GetParagraph( ++n );
- }
- return nChildCount;
-}
-
-Paragraph* ParagraphList::GetParent( Paragraph* pParagraph /*, USHORT& rRelPos */ ) const
-{
- /* rRelPos = 0 */;
- ULONG n = GetAbsPos( pParagraph );
- Paragraph* pPrev = GetParagraph( --n );
- while ( pPrev && ( pPrev->GetDepth() >= pParagraph->GetDepth() ) )
- {
-// if ( pPrev->GetDepth() == pParagraph->GetDepth() )
-// rRelPos++;
- pPrev = GetParagraph( --n );
- }
-
- return pPrev;
-}
-
-void ParagraphList::Expand( Paragraph* pParent )
-{
- ULONG nChildCount = GetChildCount( pParent );
- ULONG nPos = GetAbsPos( pParent );
-
- for ( ULONG n = 1; n <= nChildCount; n++ )
- {
- Paragraph* pPara = GetParagraph( nPos+n );
- if ( !( pPara->IsVisible() ) )
- {
- pPara->bVisible = TRUE;
- aVisibleStateChangedHdl.Call( pPara );
- }
- }
-}
-
-void ParagraphList::Collapse( Paragraph* pParent )
-{
- ULONG nChildCount = GetChildCount( pParent );
- ULONG nPos = GetAbsPos( pParent );
-
- for ( ULONG n = 1; n <= nChildCount; n++ )
- {
- Paragraph* pPara = GetParagraph( nPos+n );
- if ( pPara->IsVisible() )
- {
- pPara->bVisible = FALSE;
- aVisibleStateChangedHdl.Call( pPara );
- }
- }
-}
-
-ULONG ParagraphList::GetVisPos( Paragraph* pPara )
-{
- ULONG nVisPos = 0;
- ULONG nPos = GetAbsPos( pPara );
- for ( ULONG n = 0; n < nPos; n++ )
- {
- Paragraph* _pPara = GetParagraph( n );
- if ( _pPara->IsVisible() )
- nVisPos++;
- }
- return nVisPos;
-}
diff --git a/svx/source/outliner/paralist.hxx b/svx/source/outliner/paralist.hxx
deleted file mode 100644
index 91901c3815e6..000000000000
--- a/svx/source/outliner/paralist.hxx
+++ /dev/null
@@ -1,74 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: paralist.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _PARALIST_HXX
-#define _PARALIST_HXX
-
-class Paragraph;
-
-#include <tools/list.hxx>
-#include <tools/link.hxx>
-
-class ParagraphList : private List
-{
-private:
- Link aVisibleStateChangedHdl;
-
-public:
- void Clear( BOOL bDestroyParagraphs );
-
- ULONG GetParagraphCount() const { return List::Count(); }
- Paragraph* GetParagraph( ULONG nPos ) const { return (Paragraph*)List::GetObject( nPos ); }
-
- ULONG GetAbsPos( Paragraph* pParent ) const { return List::GetPos( pParent ); }
- ULONG GetVisPos( Paragraph* pParagraph );
-
- void Insert( Paragraph* pPara, ULONG nAbsPos = LIST_APPEND ) { List::Insert( pPara, nAbsPos ); }
- void Remove( ULONG nPara ) { List::Remove( nPara ); }
- void MoveParagraphs( ULONG nStart, ULONG nDest, ULONG nCount );
-
- Paragraph* NextVisible( Paragraph* ) const;
- Paragraph* PrevVisible( Paragraph* ) const;
- Paragraph* LastVisible() const;
-
- Paragraph* GetParent( Paragraph* pParagraph /*, USHORT& rRelPos */ ) const;
- BOOL HasChilds( Paragraph* pParagraph ) const;
- BOOL HasHiddenChilds( Paragraph* pParagraph ) const;
- BOOL HasVisibleChilds( Paragraph* pParagraph ) const;
- ULONG GetChildCount( Paragraph* pParagraph ) const;
-
- void Expand( Paragraph* pParent );
- void Collapse( Paragraph* pParent );
-
- void SetVisibleStateChangedHdl( const Link& rLink ) { aVisibleStateChangedHdl = rLink; }
- Link GetVisibleStateChangedHdl() const { return aVisibleStateChangedHdl; }
-};
-
-#endif