diff options
Diffstat (limited to 'svx/source/outliner')
-rw-r--r-- | svx/source/outliner/makefile.mk | 64 | ||||
-rw-r--r-- | svx/source/outliner/outl_pch.cxx | 34 | ||||
-rw-r--r-- | svx/source/outliner/outl_pch.hxx | 38 | ||||
-rw-r--r-- | svx/source/outliner/outleeng.cxx | 241 | ||||
-rw-r--r-- | svx/source/outliner/outleeng.hxx | 96 | ||||
-rw-r--r-- | svx/source/outliner/outlin2.cxx | 810 | ||||
-rw-r--r-- | svx/source/outliner/outliner.cxx | 2178 | ||||
-rw-r--r-- | svx/source/outliner/outliner.hrc | 48 | ||||
-rw-r--r-- | svx/source/outliner/outliner.src | 86 | ||||
-rw-r--r-- | svx/source/outliner/outlobj.cxx | 274 | ||||
-rw-r--r-- | svx/source/outliner/outlundo.cxx | 231 | ||||
-rw-r--r-- | svx/source/outliner/outlundo.hxx | 146 | ||||
-rw-r--r-- | svx/source/outliner/outlvw.cxx | 1669 | ||||
-rw-r--r-- | svx/source/outliner/paralist.cxx | 290 | ||||
-rw-r--r-- | svx/source/outliner/paralist.hxx | 74 |
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 |