/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef SW_UNDO_ATTRIBUTE_HXX #define SW_UNDO_ATTRIBUTE_HXX #include #include #ifndef _SVSTDARR_HXX #define _SVSTDARR_USHORTS #define _SVSTDARR_ULONGS #define _SVSTDARR_BOOLS #define _SVSTDARR_BYTES #define _SVSTDARR_USHORTSSORT #include #endif #include #include #include class SvxTabStopItem; class SwFmt; class SwFtnInfo; class SwEndNoteInfo; class SwUndoAttr : public SwUndo, private SwUndRng { SfxItemSet m_AttrSet; // attributes for Redo const ::std::auto_ptr m_pHistory; // History for Undo ::std::auto_ptr m_pRedlineData; // Redlining ::std::auto_ptr m_pRedlineSaveData; sal_uLong m_nNodeIndex; // Offset: for Redlining const SetAttrMode m_nInsertFlags; // insert flags void RemoveIdx( SwDoc& rDoc ); public: SwUndoAttr( const SwPaM&, const SfxItemSet &, const SetAttrMode nFlags ); SwUndoAttr( const SwPaM&, const SfxPoolItem&, const SetAttrMode nFlags ); virtual ~SwUndoAttr(); virtual void UndoImpl( ::sw::UndoRedoContext & ); virtual void RedoImpl( ::sw::UndoRedoContext & ); virtual void RepeatImpl( ::sw::RepeatContext & ); void SaveRedlineData( const SwPaM& rPam, sal_Bool bInsCntnt ); SwHistory& GetHistory() { return *m_pHistory; } }; class SwUndoResetAttr : public SwUndo, private SwUndRng { const ::std::auto_ptr m_pHistory; SvUShortsSort m_Ids; const sal_uInt16 m_nFormatId; // Format-Id for Redo public: SwUndoResetAttr( const SwPaM&, sal_uInt16 nFmtId ); SwUndoResetAttr( const SwPosition&, sal_uInt16 nFmtId ); virtual ~SwUndoResetAttr(); virtual void UndoImpl( ::sw::UndoRedoContext & ); virtual void RedoImpl( ::sw::UndoRedoContext & ); virtual void RepeatImpl( ::sw::RepeatContext & ); void SetAttrs( const SvUShortsSort& rArr ); SwHistory& GetHistory() { return *m_pHistory; } }; class SwUndoFmtAttr : public SwUndo { friend class SwUndoDefaultAttr; SwFmt * m_pFmt; ::std::auto_ptr m_pOldSet; // old attributes sal_uLong m_nNodeIndex; const sal_uInt16 m_nFmtWhich; const bool m_bSaveDrawPt; bool IsFmtInDoc( SwDoc* ); //is the attribute format still in the Doc? void SaveFlyAnchor( bool bSaveDrawPt = false ); // --> OD 2004-10-26 #i35443# - Add return value, type . // Return value indicates, if anchor attribute is restored. // Notes: - If anchor attribute is restored, all other existing attributes // are also restored. // - Anchor attribute isn't restored successfully, if it contains // an invalid anchor position and all other existing attributes // aren't restored. // This situation occurs for undo of styles. bool RestoreFlyAnchor(::sw::UndoRedoContext & rContext); // <-- // --> OD 2008-02-27 #refactorlists# - removed void Init(); // <-- public: // register at the Format and save old attributes // --> OD 2008-02-27 #refactorlists# - removed SwUndoFmtAttr( const SfxItemSet& rOldSet, SwFmt& rFmt, bool bSaveDrawPt = true ); // <-- SwUndoFmtAttr( const SfxPoolItem& rItem, SwFmt& rFmt, bool bSaveDrawPt = true ); virtual ~SwUndoFmtAttr(); virtual void UndoImpl( ::sw::UndoRedoContext & ); virtual void RedoImpl( ::sw::UndoRedoContext & ); virtual void RepeatImpl( ::sw::RepeatContext & ); virtual SwRewriter GetRewriter() const; void PutAttr( const SfxPoolItem& rItem ); SwFmt* GetFmt( SwDoc& rDoc ); // checks if it is still in the Doc! }; // --> OD 2008-02-12 #newlistlevelattrs# class SwUndoFmtResetAttr : public SwUndo { public: SwUndoFmtResetAttr( SwFmt& rChangedFormat, const sal_uInt16 nWhichId ); ~SwUndoFmtResetAttr(); virtual void UndoImpl( ::sw::UndoRedoContext & ); virtual void RedoImpl( ::sw::UndoRedoContext & ); private: // format at which a certain attribute is reset. SwFmt * const m_pChangedFormat; // which ID of the reset attribute const sal_uInt16 m_nWhichId; // old attribute which has been reset - needed for undo. ::std::auto_ptr m_pOldItem; }; // <-- class SwUndoDontExpandFmt : public SwUndo { const sal_uLong m_nNodeIndex; const xub_StrLen m_nContentIndex; public: SwUndoDontExpandFmt( const SwPosition& rPos ); virtual void UndoImpl( ::sw::UndoRedoContext & ); virtual void RedoImpl( ::sw::UndoRedoContext & ); virtual void RepeatImpl( ::sw::RepeatContext & ); }; // helper class to receive changed attribute sets class SwUndoFmtAttrHelper : public SwClient { ::std::auto_ptr m_pUndo; const bool m_bSaveDrawPt; public: SwUndoFmtAttrHelper( SwFmt& rFmt, bool bSaveDrawPt = true ); virtual void Modify( const SfxPoolItem*, const SfxPoolItem* ); SwUndoFmtAttr* GetUndo() const { return m_pUndo.get(); } // release the undo object (so it is not deleted here), and return it SwUndoFmtAttr* ReleaseUndo() { return m_pUndo.release(); } }; class SwUndoMoveLeftMargin : public SwUndo, private SwUndRng { const ::std::auto_ptr m_pHistory; const bool m_bModulus; public: SwUndoMoveLeftMargin( const SwPaM&, sal_Bool bRight, sal_Bool bModulus ); virtual ~SwUndoMoveLeftMargin(); virtual void UndoImpl( ::sw::UndoRedoContext & ); virtual void RedoImpl( ::sw::UndoRedoContext & ); virtual void RepeatImpl( ::sw::RepeatContext & ); SwHistory& GetHistory() { return *m_pHistory; } }; //-------------------------------------------------------------------- class SwUndoDefaultAttr : public SwUndo { ::std::auto_ptr m_pOldSet; // the old attributes ::std::auto_ptr m_pTabStop; public: // registers at the format and saves old attributes SwUndoDefaultAttr( const SfxItemSet& rOldSet ); virtual ~SwUndoDefaultAttr(); virtual void UndoImpl( ::sw::UndoRedoContext & ); virtual void RedoImpl( ::sw::UndoRedoContext & ); }; //-------------------------------------------------------------------- class SwUndoChangeFootNote : public SwUndo, private SwUndRng { const ::std::auto_ptr m_pHistory; const String m_Text; const sal_uInt16 m_nNumber; const bool m_bEndNote; public: SwUndoChangeFootNote( const SwPaM& rRange, const String& rTxt, sal_uInt16 nNum, bool bIsEndNote ); virtual ~SwUndoChangeFootNote(); virtual void UndoImpl( ::sw::UndoRedoContext & ); virtual void RedoImpl( ::sw::UndoRedoContext & ); virtual void RepeatImpl( ::sw::RepeatContext & ); SwHistory& GetHistory() { return *m_pHistory; } }; class SwUndoFootNoteInfo : public SwUndo { ::std::auto_ptr m_pFootNoteInfo; public: SwUndoFootNoteInfo( const SwFtnInfo &rInfo ); virtual ~SwUndoFootNoteInfo(); virtual void UndoImpl( ::sw::UndoRedoContext & ); virtual void RedoImpl( ::sw::UndoRedoContext & ); }; class SwUndoEndNoteInfo : public SwUndo { ::std::auto_ptr m_pEndNoteInfo; public: SwUndoEndNoteInfo( const SwEndNoteInfo &rInfo ); virtual ~SwUndoEndNoteInfo(); virtual void UndoImpl( ::sw::UndoRedoContext & ); virtual void RedoImpl( ::sw::UndoRedoContext & ); }; #endif // SW_UNDO_ATTRIBUTE_HXX