1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 #ifndef _HINTS_HXX 28 #define _HINTS_HXX 29 30 #ifndef _TABLE_HXX //autogen 31 #include <tools/table.hxx> 32 #endif 33 #include <swatrset.hxx> 34 35 class SwFmt; 36 class OutputDevice; 37 class SwTable; 38 class SwNode; 39 class SwNodes; 40 class SwCntntNode; 41 class SwPageFrm; 42 class SwFrm; 43 class SwTxtNode; 44 class SwHistory; 45 46 // Basis-Klasse fuer alle Message-Hints: 47 // "Overhead" vom SfxPoolItem wird hier behandelt 48 class SwMsgPoolItem : public SfxPoolItem 49 { 50 public: 51 SwMsgPoolItem( sal_uInt16 nWhich ); 52 53 // "Overhead" vom SfxPoolItem 54 virtual int operator==( const SfxPoolItem& ) const; 55 virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const; 56 }; 57 58 59 // --------------------------------------- 60 // SwPtrMsgPoolItem (altes SwObjectDying!) 61 // --------------------------------------- 62 63 class SwPtrMsgPoolItem : public SwMsgPoolItem 64 { 65 public: 66 void * pObject; 67 68 SwPtrMsgPoolItem( sal_uInt16 nId, void * pObj ) 69 : SwMsgPoolItem( nId ), pObject( pObj ) 70 {} 71 }; 72 73 74 75 /* 76 * SwFmtChg wird verschickt, wenn ein Format gegen ein anderes 77 * Format ausgewechselt worden ist. Es werden immer 2. Hints verschickt, 78 * das alte und neue Format. 79 */ 80 class SwFmtChg: public SwMsgPoolItem 81 { 82 public: 83 SwFmt *pChangedFmt; 84 SwFmtChg( SwFmt *pFmt ); 85 }; 86 87 88 class SwInsTxt: public SwMsgPoolItem 89 { 90 public: 91 xub_StrLen nPos; 92 xub_StrLen nLen; 93 94 SwInsTxt( xub_StrLen nP, xub_StrLen nL ); 95 }; 96 97 class SwDelChr: public SwMsgPoolItem 98 { 99 public: 100 xub_StrLen nPos; 101 102 SwDelChr( xub_StrLen nP ); 103 }; 104 105 class SwDelTxt: public SwMsgPoolItem 106 { 107 public: 108 xub_StrLen nStart; 109 xub_StrLen nLen; 110 111 SwDelTxt( xub_StrLen nS, xub_StrLen nL ); 112 }; 113 114 class SwUpdateAttr: public SwMsgPoolItem 115 { 116 public: 117 xub_StrLen nStart; 118 xub_StrLen nEnd; 119 sal_uInt16 nWhichAttr; 120 SwUpdateAttr( xub_StrLen nS, xub_StrLen nE, sal_uInt16 nW ); 121 }; 122 123 124 // SwRefMarkFldUpdate wird verschickt, wenn sich die ReferenzMarkierungen 125 // Updaten sollen. Um Seiten-/KapitelNummer feststellen zu koennen, muss 126 // der akt. Frame befragt werden. Dafuer wird das akt. OutputDevice benoetigt. 127 class SwRefMarkFldUpdate : public SwMsgPoolItem 128 { 129 public: 130 const OutputDevice* pOut; // Pointer auf das aktuelle Output-Device 131 SwRefMarkFldUpdate( const OutputDevice* ); 132 }; 133 134 // SwDocPosUpdate wird verschickt, um zu signalisieren, dass nur die 135 // Frames ab oder bis zu einer bestimmten dokument-globalen Position 136 // geupdated werden brauchen. Zur Zeit wird dies nur beim Updaten 137 // von Seitennummernfeldern benoetigt. 138 139 class SwDocPosUpdate : public SwMsgPoolItem 140 { 141 public: 142 const long nDocPos; 143 SwDocPosUpdate( const long nDocPos ); 144 }; 145 146 // SwTableFmlUpdate wird verschickt, wenn sich die Tabelle neu berechnen soll 147 // JP 16.02.99: oder wenn die Tabelle selbst gemergt oder gesplittet wird 148 enum TableFmlUpdtFlags { TBL_CALC = 0, 149 TBL_BOXNAME, 150 TBL_BOXPTR, 151 TBL_RELBOXNAME, 152 TBL_MERGETBL, 153 TBL_SPLITTBL 154 }; 155 class SwTableFmlUpdate : public SwMsgPoolItem 156 { 157 public: 158 const SwTable* pTbl; // Pointer auf die zu aktuelle Tabelle 159 union { 160 const SwTable* pDelTbl; // Merge: Ptr auf die zu loeschende Tabelle 161 const String* pNewTblNm; // Split: der Name der neuen Tabelle 162 } DATA; 163 SwHistory* pHistory; 164 sal_uInt16 nSplitLine; // Split: ab dieser BaseLine wird gespl. 165 TableFmlUpdtFlags eFlags; 166 sal_Bool bModified : 1; 167 sal_Bool bBehindSplitLine : 1; 168 169 SwTableFmlUpdate( const SwTable* ); 170 }; 171 172 173 class SwAutoFmtGetDocNode: public SwMsgPoolItem 174 { 175 public: 176 const SwCntntNode* pCntntNode; 177 const SwNodes* pNodes; 178 179 SwAutoFmtGetDocNode( const SwNodes* pNds ); 180 }; 181 182 /* 183 * SwAttrSetChg wird verschicht, wenn sich in dem SwAttrSet rTheChgdSet 184 * etwas veraendert hat. Es werden immer 2. Hints 185 * verschickt, die alten und neuen Items in dem rTheChgdSet. 186 */ 187 class SwAttrSetChg: public SwMsgPoolItem 188 { 189 sal_Bool bDelSet; 190 SwAttrSet* pChgSet; // was sich veraendert hat 191 const SwAttrSet* pTheChgdSet; // wird nur zum Vergleichen gebraucht !! 192 public: 193 SwAttrSetChg( const SwAttrSet& rTheSet, SwAttrSet& rSet ); 194 SwAttrSetChg( const SwAttrSetChg& ); 195 ~SwAttrSetChg(); 196 197 // was sich veraendert hat 198 const SwAttrSet* GetChgSet() const { return pChgSet; } 199 SwAttrSet* GetChgSet() { return pChgSet; } 200 201 // wo es sich geaendert hat 202 const SwAttrSet* GetTheChgdSet() const { return pTheChgdSet; } 203 204 sal_uInt16 Count() const { return pChgSet->Count(); } 205 void ClearItem( sal_uInt16 nWhichL = 0 ) 206 #ifndef DBG_UTIL 207 { pChgSet->ClearItem( nWhichL ); } 208 #else 209 ; 210 #endif 211 }; 212 213 class SwCondCollCondChg: public SwMsgPoolItem 214 { 215 public: 216 SwFmt *pChangedFmt; 217 SwCondCollCondChg( SwFmt *pFmt ); 218 }; 219 220 class SwVirtPageNumInfo: public SwMsgPoolItem 221 { 222 const SwPageFrm *pPage; 223 const SwPageFrm *pOrigPage; 224 const SwFrm *pFrm; //An einem Absatz/Tabelle koennen mehrere 225 //Attribute sitzen. Der Frame muss dann 226 //muss dann letztlich bei bestimmen 227 //welches Attribut gilt und um welche physikalische 228 //Seite es sich handelt. 229 public: 230 SwVirtPageNumInfo( const SwPageFrm *pPg ); 231 232 const SwPageFrm *GetPage() { return pPage; } 233 const SwPageFrm *GetOrigPage() { return pOrigPage;} 234 const SwFrm *GetFrm() { return pFrm; } 235 void SetInfo( const SwPageFrm *pPg, 236 const SwFrm *pF ) { pFrm = pF, pPage = pPg; } 237 }; 238 239 240 // --> OD 2008-02-19 #refactorlists# 241 //DECLARE_TABLE( SwTxtNodeTable, SwTxtNode* ) 242 243 //class SwNumRuleInfo : public SwMsgPoolItem 244 //{ 245 // SwTxtNodeTable aList; 246 // const String& rName; 247 //public: 248 // SwNumRuleInfo( const String& rRuleName ); 249 250 // const String& GetName() const { return rName; } 251 // void AddNode( SwTxtNode& rNd ); 252 253 // // erzeuge die Liste aller Nodes der NumRule in dem angegebenem Doc 254 // // Der Code steht im docnum.cxx 255 // // #111955# 256 // void MakeList( SwDoc& rDoc, sal_Bool bOutline = sal_False ); 257 258 // const SwTxtNodeTable& GetTxtNodeList() const { return aList; } 259 //}; 260 // <-- 261 262 class SwFindNearestNode : public SwMsgPoolItem 263 { 264 const SwNode *pNd, *pFnd; 265 public: 266 SwFindNearestNode( const SwNode& rNd ); 267 void CheckNode( const SwNode& rNd ); 268 269 const SwNode* GetFoundNode() const { return pFnd; } 270 }; 271 272 class SwStringMsgPoolItem : public SwMsgPoolItem 273 { 274 String sStr; 275 public: 276 277 const String& GetString() const { return sStr; } 278 279 SwStringMsgPoolItem( sal_uInt16 nId, const String& rStr ) 280 : SwMsgPoolItem( nId ), sStr( rStr ) 281 {} 282 }; 283 284 #endif 285