diff options
75 files changed, 2019 insertions, 636 deletions
diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h index f5de3d518082..04808bd1a8fc 100644 --- a/sw/inc/cmdid.h +++ b/sw/inc/cmdid.h @@ -892,7 +892,7 @@ Achtung: Ab sofort sind in diesem File keine C++-Kommentare (//) mehr #define FN_UNO_COMPONENT (FN_EXTRA2 + 97) #define FN_WORDCOUNT_DIALOG (FN_EXTRA2 + 98) -#define FN_UNO_DEFAULT_OUTLINE_LEVEL (FN_EXTRA2 + 99) +//#define FN_UNO_DEFAULT_OUTLINE_LEVEL (FN_EXTRA2 + 99)//#outline level,removed by zahojianwei #define FN_XFORMS_DESIGN_MODE (FN_EXTRA2 + 100) diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx index 920f7495a63f..da5c9c70d3f1 100644 --- a/sw/inc/doc.hxx +++ b/sw/inc/doc.hxx @@ -701,6 +701,8 @@ private: // falls keine angegeben ist, nehme die Kapitelvorlage der 1. Ebene sal_Bool SplitDoc( sal_uInt16 eDocType, const String& rPath, const SwTxtFmtColl* pSplitColl ); + sal_Bool SplitDoc( sal_uInt16 eDocType, const String& rPath, int nOutlineLevel = 0 ); //#outline level,add by zhaijianwei. + // Charts der angegebenen Tabelle updaten void _UpdateCharts( const SwTable& rTbl, ViewShell& rVSh ) const; @@ -1890,8 +1892,11 @@ public: // falls keine angegeben ist, nehme die Kapitelvorlage der 1. Ebene sal_Bool GenerateGlobalDoc( const String& rPath, const SwTxtFmtColl* pSplitColl = 0 ); + sal_Bool GenerateGlobalDoc( const String& rPath, int nOutlineLevel = 0 ); //#outline level,add by zhaojianwei sal_Bool GenerateHTMLDoc( const String& rPath, const SwTxtFmtColl* pSplitColl = 0 ); + sal_Bool GenerateHTMLDoc( const String& rPath, int nOutlineLevel = 0 ); //#outline level,add by zhaojianwei + // vergleiche zwei Dokument miteinander long CompareDoc( const SwDoc& rDoc ); // merge zweier Dokumente diff --git a/sw/inc/editsh.hxx b/sw/inc/editsh.hxx index 771e8bfcc8f3..4e1eba53115b 100644 --- a/sw/inc/editsh.hxx +++ b/sw/inc/editsh.hxx @@ -488,6 +488,10 @@ public: // detect highest and lowest level to check moving of outline levels void GetCurrentOutlineLevels( sal_uInt8& rUpper, sal_uInt8& rLower ); + + // get Outline level of current paragraph + int GetCurrentParaOutlineLevel( ) const;// #outlinelevel add by zhaojianwei + // -> i29560 BOOL HasNumber() const; BOOL HasBullet() const; diff --git a/sw/inc/fmtcol.hxx b/sw/inc/fmtcol.hxx index 4b8de2d8bd9b..7dcb6720d593 100644 --- a/sw/inc/fmtcol.hxx +++ b/sw/inc/fmtcol.hxx @@ -69,8 +69,11 @@ class SW_DLLPUBLIC SwTxtFmtColl: public SwFmtColl // --> OD 2007-01-24 #i73790# bool mbStayAssignedToListLevelOfOutlineStyle; // <-- + protected: - BYTE nOutlineLevel; + //BYTE nOutlineLevel; //<-#outline level, removed by zhaojianwei + bool mbAssignedToOutlineStyle;//<-#outline level added by zhaojianwei + SwTxtFmtColl *pNextTxtFmtColl; SwTxtFmtColl( SwAttrPool& rPool, const sal_Char* pFmtCollName, @@ -81,7 +84,8 @@ protected: // --> OD 2007-01-24 #i73790# mbStayAssignedToListLevelOfOutlineStyle( false ), // <-- - nOutlineLevel( NO_NUMBERING ) + //nOutlineLevel( NO_NUMBERING ) //<-#outline level,removed by zhaojianwei + mbAssignedToOutlineStyle(false) //<-#outline level,added by zhaojianwei { pNextTxtFmtColl = this; } SwTxtFmtColl( SwAttrPool& rPool, const String &rFmtCollName, @@ -92,9 +96,9 @@ protected: // --> OD 2007-01-24 #i73790# mbStayAssignedToListLevelOfOutlineStyle( false ), // <-- - nOutlineLevel( NO_NUMBERING ) + //nOutlineLevel( NO_NUMBERING ) //<-#outline level,removed by zhaojianwei + mbAssignedToOutlineStyle(false) //<-#outline level,added by zhaojianwei { pNextTxtFmtColl = this; } - public: // zum "abfischen" von UL-/LR-/FontHeight Aenderungen @@ -102,24 +106,23 @@ public: TYPEINFO(); //Bereits in Basisklasse Client drin. - void SetOutlineLevel( BYTE ); - inline BYTE GetOutlineLevel() const { return nOutlineLevel; } - inline void SetNextTxtFmtColl(SwTxtFmtColl& rNext); SwTxtFmtColl& GetNextTxtFmtColl() const { return *pNextTxtFmtColl; } BOOL IsAtDocNodeSet() const; // --> OD 2006-11-22 #i71574# - inline bool AssignedToListLevelOfOutlineStyle() const - { - return ( /*0 <= GetOutlineLevel() &&*/ GetOutlineLevel() < MAXLEVEL ); - } - - inline void DeleteAssignmentToListLevelOfOutlineStyle() + //<-#outline level,zhaojianwei + void SetAttrOutlineLevel( int ); + int GetAttrOutlineLevel() const; + int GetAssignedOutlineStyleLevel() const; + inline const bool IsAssignedToListLevelOfOutlineStyle() const { - SetOutlineLevel( NO_NUMBERING ); + return mbAssignedToOutlineStyle; } + void AssignToListLevelOfOutlineStyle(const int nAssignedListLevel); + void DeleteAssignmentToListLevelOfOutlineStyle(); + //<-end // <-- // --> OD 2008-03-04 #refactorlists# diff --git a/sw/inc/hintids.hxx b/sw/inc/hintids.hxx index af29b40df0c9..53fcb75910f5 100644 --- a/sw/inc/hintids.hxx +++ b/sw/inc/hintids.hxx @@ -163,6 +163,7 @@ RES_PARATR_BEGIN = RES_TXTATR_END, RES_PARATR_VERTALIGN, // 71 RES_PARATR_SNAPTOGRID, // 72 RES_PARATR_CONNECT_BORDER, // 73 + RES_PARATR_OUTLINELEVEL, // 74 RES_PARATR_END }; @@ -172,11 +173,11 @@ RES_PARATR_END enum RES_PARATR_LIST { RES_PARATR_LIST_BEGIN = RES_PARATR_END, - RES_PARATR_LIST_ID = RES_PARATR_LIST_BEGIN, // 74 - RES_PARATR_LIST_LEVEL, // 75 - RES_PARATR_LIST_ISRESTART, // 76 - RES_PARATR_LIST_RESTARTVALUE, // 77 - RES_PARATR_LIST_ISCOUNTED, // 78 + RES_PARATR_LIST_ID = RES_PARATR_LIST_BEGIN, // 75 + RES_PARATR_LIST_LEVEL, // 76 + RES_PARATR_LIST_ISRESTART, // 77 + RES_PARATR_LIST_RESTARTVALUE, // 78 + RES_PARATR_LIST_ISCOUNTED, // 79 RES_PARATR_LIST_END }; // <-- @@ -184,92 +185,92 @@ RES_PARATR_LIST_END enum RES_FRMATR { RES_FRMATR_BEGIN = RES_PARATR_LIST_END, - RES_FILL_ORDER = RES_FRMATR_BEGIN, // 79 - RES_FRM_SIZE, // 80 - RES_PAPER_BIN, // 81 - RES_LR_SPACE, // 82 - RES_UL_SPACE, // 83 - RES_PAGEDESC, // 84 - RES_BREAK, // 85 - RES_CNTNT, // 86 - RES_HEADER, // 87 - RES_FOOTER, // 88 - RES_PRINT, // 89 - RES_OPAQUE, // 90 - RES_PROTECT, // 91 - RES_SURROUND, // 92 - RES_VERT_ORIENT, // 93 - RES_HORI_ORIENT, // 94 - RES_ANCHOR, // 95 - RES_BACKGROUND, // 96 - RES_BOX, // 97 - RES_SHADOW, // 98 - RES_FRMMACRO, // 99 - RES_COL, // 100 - RES_KEEP, // 101 - RES_URL, // 102 - RES_EDIT_IN_READONLY, // 103 - RES_LAYOUT_SPLIT, // 104 - RES_CHAIN, // 105 - RES_TEXTGRID, // 106 - RES_LINENUMBER , // 107 - RES_FTN_AT_TXTEND, // 108 - RES_END_AT_TXTEND, // 109 - RES_COLUMNBALANCE, // 110 - RES_FRAMEDIR, // 111 - RES_HEADER_FOOTER_EAT_SPACING, // 112 - RES_ROW_SPLIT, // 113 + RES_FILL_ORDER = RES_FRMATR_BEGIN, // 80 + RES_FRM_SIZE, // 81 + RES_PAPER_BIN, // 82 + RES_LR_SPACE, // 83 + RES_UL_SPACE, // 84 + RES_PAGEDESC, // 85 + RES_BREAK, // 86 + RES_CNTNT, // 87 + RES_HEADER, // 88 + RES_FOOTER, // 89 + RES_PRINT, // 90 + RES_OPAQUE, // 91 + RES_PROTECT, // 92 + RES_SURROUND, // 93 + RES_VERT_ORIENT, // 94 + RES_HORI_ORIENT, // 95 + RES_ANCHOR, // 96 + RES_BACKGROUND, // 97 + RES_BOX, // 98 + RES_SHADOW, // 99 + RES_FRMMACRO, // 100 + RES_COL, // 101 + RES_KEEP, // 102 + RES_URL, // 103 + RES_EDIT_IN_READONLY, // 104 + RES_LAYOUT_SPLIT, // 105 + RES_CHAIN, // 106 + RES_TEXTGRID, // 107 + RES_LINENUMBER , // 108 + RES_FTN_AT_TXTEND, // 109 + RES_END_AT_TXTEND, // 110 + RES_COLUMNBALANCE, // 111 + RES_FRAMEDIR, // 112 + RES_HEADER_FOOTER_EAT_SPACING, // 113 + RES_ROW_SPLIT, // 114 // OD 18.09.2003 #i18732# - insert new item and 5 dummies - RES_FOLLOW_TEXT_FLOW, // 114 + RES_FOLLOW_TEXT_FLOW, // 115 // --> collapsing borders FME 2005-05-27 #i29550# - RES_COLLAPSING_BORDERS, // 115 + RES_COLLAPSING_BORDERS, // 116 // <-- collapsing // OD 2004-05-04 #i28701# - use dummy1 for new item - RES_WRAP_INFLUENCE_ON_OBJPOS, // 116 - RES_AUTO_STYLE, // 117 - RES_FRMATR_STYLE_NAME, // 118 - RES_FRMATR_CONDITIONAL_STYLE_NAME, // 119 + RES_WRAP_INFLUENCE_ON_OBJPOS, // 117 + RES_AUTO_STYLE, // 118 + RES_FRMATR_STYLE_NAME, // 119 + RES_FRMATR_CONDITIONAL_STYLE_NAME, // 120 RES_FRMATR_END }; enum RES_GRFATR { RES_GRFATR_BEGIN = RES_FRMATR_END, - RES_GRFATR_MIRRORGRF = RES_GRFATR_BEGIN, // 120 - RES_GRFATR_CROPGRF, // 121 - - RES_GRFATR_ROTATION, // 122 - RES_GRFATR_LUMINANCE, // 123 - RES_GRFATR_CONTRAST, // 124 - RES_GRFATR_CHANNELR, // 125 - RES_GRFATR_CHANNELG, // 126 - RES_GRFATR_CHANNELB, // 127 - RES_GRFATR_GAMMA, // 128 - RES_GRFATR_INVERT, // 129 - RES_GRFATR_TRANSPARENCY, // 130 - RES_GRFATR_DRAWMODE, // 131 - - RES_GRFATR_DUMMY1, // 132 - RES_GRFATR_DUMMY2, // 133 - RES_GRFATR_DUMMY3, // 134 - RES_GRFATR_DUMMY4, // 135 - RES_GRFATR_DUMMY5, // 136 + RES_GRFATR_MIRRORGRF = RES_GRFATR_BEGIN, // 121 + RES_GRFATR_CROPGRF, // 122 + + RES_GRFATR_ROTATION, // 123 + RES_GRFATR_LUMINANCE, // 124 + RES_GRFATR_CONTRAST, // 125 + RES_GRFATR_CHANNELR, // 126 + RES_GRFATR_CHANNELG, // 127 + RES_GRFATR_CHANNELB, // 128 + RES_GRFATR_GAMMA, // 129 + RES_GRFATR_INVERT, // 130 + RES_GRFATR_TRANSPARENCY, // 131 + RES_GRFATR_DRAWMODE, // 132 + + RES_GRFATR_DUMMY1, // 133 + RES_GRFATR_DUMMY2, // 134 + RES_GRFATR_DUMMY3, // 135 + RES_GRFATR_DUMMY4, // 136 + RES_GRFATR_DUMMY5, // 137 RES_GRFATR_END }; enum RES_BOXATR { RES_BOXATR_BEGIN = RES_GRFATR_END, - RES_BOXATR_FORMAT = RES_BOXATR_BEGIN, // 137 - RES_BOXATR_FORMULA, // 138 - RES_BOXATR_VALUE, // 139 + RES_BOXATR_FORMAT = RES_BOXATR_BEGIN, // 138 + RES_BOXATR_FORMULA, // 139 + RES_BOXATR_VALUE, // 140 RES_BOXATR_END }; enum RES_UNKNOWNATR { RES_UNKNOWNATR_BEGIN = RES_BOXATR_END, - RES_UNKNOWNATR_CONTAINER = RES_UNKNOWNATR_BEGIN,// 140 + RES_UNKNOWNATR_CONTAINER = RES_UNKNOWNATR_BEGIN,// 141 RES_UNKNOWNATR_END }; diff --git a/sw/inc/ndarr.hxx b/sw/inc/ndarr.hxx index 55b38090545a..fe58df27613b 100644 --- a/sw/inc/ndarr.hxx +++ b/sw/inc/ndarr.hxx @@ -250,7 +250,7 @@ public: // Array aller GliederiungsNodes; const SwOutlineNodes& GetOutLineNds() const; - void UpdateOutlineNode( const SwNode&, BYTE nOldLevel, BYTE nNewLevel ); + //void UpdateOutlineNode( const SwNode&, BYTE nOldLevel, BYTE nNewLevel );//#outline level,removed by zhaojianwei // alle Nodes Updaten - Rule/Format-Aenderung void UpdateOutlineNode(SwNode & rNd); diff --git a/sw/inc/ndtxt.hxx b/sw/inc/ndtxt.hxx index 79b0003cfbaf..33fd760ab108 100644 --- a/sw/inc/ndtxt.hxx +++ b/sw/inc/ndtxt.hxx @@ -118,7 +118,10 @@ class SW_DLLPUBLIC SwTxtNode: public SwCntntNode bool bNotifiable; mutable BOOL bLastOutlineState : 1; - BYTE nOutlineLevel; + // BYTE nOutlineLevel; //#outline level, removed by zhaojianwei. + // --> OD 2008-11-19 #i70748# + bool mbEmptyListStyleSetDueToSetOutlineLevelAttr; + // <-- // --> OD 2008-03-27 #refactorlists# // boolean, indicating that a <SetAttr(..)> or <ResetAttr(..)> or @@ -564,7 +567,7 @@ public: @return outline level or NO_NUMBERING if there is no outline level */ - int GetOutlineLevel() const; + int GetAttrOutlineLevel() const;//#OutlineLevel,added by zhaojianwei /** Sets the out line level *at* a text node. @@ -580,6 +583,13 @@ public: NOTE: This is subject to change, see GetOutlineLevel. */ //void SetOutlineLevel(int nLevel); + void SetAttrOutlineLevel(int nLevel);//#OutlineLevel,added by zhaojianwei + + // --> OD 2008-11-19 #i70748# + bool IsEmptyListStyleDueToSetOutlineLevelAttr(); + void SetEmptyListStyleDueToSetOutlineLevelAttr(); + void ResetEmptyListStyleDueToResetOutlineLevelAttr(); + // <-- /** Returns the width of leading tabs/blanks in this paragraph. diff --git a/sw/inc/swtypes.hxx b/sw/inc/swtypes.hxx index f19df7fd1894..b424afb64bae 100644 --- a/sw/inc/swtypes.hxx +++ b/sw/inc/swtypes.hxx @@ -122,7 +122,7 @@ enum SwLabelType const BYTE OLD_MAXLEVEL = 5; const BYTE MAXLEVEL = 10; //Ehemals numrule.hxx const BYTE NO_NUM = 200; //Ehemals numrule.hxx -const BYTE NO_NUMBERING = 201; //Ehemals numrule.hxx +//const BYTE NO_NUMBERING = 201; //Ehemals numrule.hxx //#outline level,removed by zhaojianwei //const BYTE NO_INIT = 202; //Ehemals numrule.hxx // fuer Absaetze mit NO_NUM aber auf unterschiedlichen Leveln diff --git a/sw/inc/unoprnms.hxx b/sw/inc/unoprnms.hxx index 02d81ec9628d..16cb57764515 100644 --- a/sw/inc/unoprnms.hxx +++ b/sw/inc/unoprnms.hxx @@ -722,7 +722,7 @@ enum SwPropNameIds /* 0674 */ UNO_NAME_POSITION_LAYOUT_DIR, // <-- /* 0675 */ UNO_NAME_NUMBERING_IS_OUTLINE, -/* 0676 */ UNO_NAME_DEFAULT_OUTLINE_LEVEL, +///* 0676 */ UNO_NAME_DEFAULT_OUTLINE_LEVEL, //#outline level, removed by zhaojianwei // --> OD 2004-10-28 #i36248# /* 0677 */ UNO_NAME_STARTPOSITION_IN_HORI_L2R, /* 0678 */ UNO_NAME_ENDPOSITION_IN_HORI_L2R, @@ -803,7 +803,8 @@ enum SwPropNameIds /* 0733 */ UNO_NAME_CHAR_OVERLINE, /* 0734 */ UNO_NAME_CHAR_OVERLINE_COLOR, /* 0735 */ UNO_NAME_CHAR_OVERLINE_HAS_COLOR, -/* 0736 */ SW_PROPNAME_END +/* 0736 */ UNO_NAME_OUTLINE_LEVEL, //#outline level,add<-zhaojianwei outlinelevel +/* 0737 */ SW_PROPNAME_END }; diff --git a/sw/sdi/_textsh.sdi b/sw/sdi/_textsh.sdi index 0d9d53de2ac0..062c2e19eb58 100644 --- a/sw/sdi/_textsh.sdi +++ b/sw/sdi/_textsh.sdi @@ -104,6 +104,12 @@ interface BaseText ExecMethod = Execute ; DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR"; ] + //#outline level,add by zhaojianwei + SID_ATTR_PARA_OUTLINE_LEVEL + [ + ExecMethod = Execute ; + DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR"; + ]//<-end,zhaojianwei SID_ATTR_PARA_PAGENUM [ diff --git a/sw/sdi/swriter.sdi b/sw/sdi/swriter.sdi index 211fa68c98c3..69a2e80639f8 100644 --- a/sw/sdi/swriter.sdi +++ b/sw/sdi/swriter.sdi @@ -9143,6 +9143,34 @@ SwNumRuleItem NumRule SID_ATTR_PARA_NUMRULE GroupId = GID_FORMAT; ] +//#outline level,add by zhaojianwei +//--------------------------------------------------------------------------- +SfxUInt16Item OutlineLevel SID_ATTR_PARA_OUTLINE_LEVEL + +[ + /* flags: */ + AutoUpdate = FALSE, + Cachable = Cachable, + FastCall = FALSE, + HasCoreId = FALSE, + HasDialog = FALSE, + ReadOnlyDoc = FALSE, + Toggle = FALSE, + Container = FALSE, + RecordAbsolute = FALSE, + RecordPerSet; + Synchron; + + Readonly = FALSE, + + /* config: */ + AccelConfig = FALSE, + MenuConfig = FALSE, + StatusBarConfig = FALSE, + ToolBoxConfig = FALSE, + GroupId = GID_FORMAT; +] +//<-end,zhaojianwei //-------------------------------------------------------------------------- SfxUInt16Item NumNewStartAt FN_NUMBER_NEWSTART_AT diff --git a/sw/source/core/bastyp/init.cxx b/sw/source/core/bastyp/init.cxx index 0d43354160b2..9563a51324bb 100644 --- a/sw/source/core/bastyp/init.cxx +++ b/sw/source/core/bastyp/init.cxx @@ -358,6 +358,9 @@ SfxItemInfo __FAR_DATA aSlotTab[] = { SID_PARA_VERTALIGN, SFX_ITEM_POOLABLE }, // RES_PARATR_VERTALIGN { SID_ATTR_PARA_SNAPTOGRID, SFX_ITEM_POOLABLE }, // RES_PARATR_SNAPTOGRID { SID_ATTR_BORDER_CONNECT, SFX_ITEM_POOLABLE }, // RES_PARATR_CONNECT_BORDER + + { SID_ATTR_PARA_OUTLINE_LEVEL, SFX_ITEM_POOLABLE }, // RES_PARATR_OUTLINELEVEL //#outline level,zhaojianwei + // --> OD 2008-02-19 #refactorlists# { 0, SFX_ITEM_POOLABLE }, // RES_PARATR_LIST_ID { 0, SFX_ITEM_POOLABLE }, // RES_PARATR_LIST_LEVEL @@ -573,6 +576,9 @@ void _InitCore() aAttrTab[ RES_PARATR_VERTALIGN - POOLATTR_BEGIN ] = new SvxParaVertAlignItem( 0, RES_PARATR_VERTALIGN ); aAttrTab[ RES_PARATR_SNAPTOGRID - POOLATTR_BEGIN ] = new SvxParaGridItem( sal_True, RES_PARATR_SNAPTOGRID ); aAttrTab[ RES_PARATR_CONNECT_BORDER - POOLATTR_BEGIN ] = new SwParaConnectBorderItem; + + aAttrTab[ RES_PARATR_OUTLINELEVEL - POOLATTR_BEGIN ] = new SfxUInt16Item( RES_PARATR_OUTLINELEVEL, 0 );//#outline level,zhaojianwei + // --> OD 2008-02-19 #refactorlists# aAttrTab[ RES_PARATR_LIST_ID - POOLATTR_BEGIN ] = new SfxStringItem( RES_PARATR_LIST_ID, aEmptyStr ); aAttrTab[ RES_PARATR_LIST_LEVEL - POOLATTR_BEGIN ] = new SfxInt16Item( RES_PARATR_LIST_LEVEL, 0 ); diff --git a/sw/source/core/crsr/crstrvl.cxx b/sw/source/core/crsr/crstrvl.cxx index 8f7c229443f7..87a579150e76 100644 --- a/sw/source/core/crsr/crstrvl.cxx +++ b/sw/source/core/crsr/crstrvl.cxx @@ -904,8 +904,11 @@ USHORT SwCrsrShell::GetOutlinePos( BYTE nLevel ) while( nPos-- ) // immer den davor testen ! { pNd = rNds.GetOutLineNds()[ nPos ]; - if( ((SwTxtNode*)pNd)->GetTxtColl()->GetOutlineLevel() <= nLevel ) + + //if( ((SwTxtNode*)pNd)->GetTxtColl()->GetOutlineLevel() <= nLevel )//#outline level,zhaojianwei + if( ((SwTxtNode*)pNd)->GetAttrOutlineLevel()-1 <= nLevel )//<-end,zhaojianwei return nPos; + } return USHRT_MAX; // davor keiner mehr also Ende } @@ -935,11 +938,13 @@ BOOL SwCrsrShell::MakeOutlineSel( USHORT nSttPos, USHORT nEndPos, if( bWithChilds ) { - BYTE nLevel = pEndNd->GetTxtNode()->GetTxtColl()->GetOutlineLevel(); + //BYTE nLevel = pEndNd->GetTxtNode()->GetTxtColl()->GetOutlineLevel();//#outline level,zhaojianwei + const int nLevel = pEndNd->GetTxtNode()->GetAttrOutlineLevel()-1;//<-end.zhaojianwei for( ++nEndPos; nEndPos < rOutlNds.Count(); ++nEndPos ) { pEndNd = rOutlNds[ nEndPos ]; - BYTE nNxtLevel = pEndNd->GetTxtNode()->GetTxtColl()->GetOutlineLevel(); + //BYTE nNxtLevel = pEndNd->GetTxtNode()->GetTxtColl()->GetOutlineLevel();//#outline level,zhaojianwei + const int nNxtLevel = pEndNd->GetTxtNode()->GetAttrOutlineLevel()-1;//<-end,zhaojianwei if( nNxtLevel <= nLevel ) break; // EndPos steht jetzt auf dem naechsten } diff --git a/sw/source/core/doc/dbgoutsw.cxx b/sw/source/core/doc/dbgoutsw.cxx index 812399ae9bf7..e81383f0d6d5 100644 --- a/sw/source/core/doc/dbgoutsw.cxx +++ b/sw/source/core/doc/dbgoutsw.cxx @@ -574,9 +574,14 @@ String lcl_dbg_out(const SwNode & rNode) aTmpStr += String("<tbl/>", RTL_TEXTENCODING_ASCII_US); aTmpStr += String("<outlinelevel>", RTL_TEXTENCODING_ASCII_US); +<<<<<<< .working + //aTmpStr += String::CreateFromInt32(pTxtNode->GetOutlineLevel());//#outline level,zhaojianwei + aTmpStr += String::CreateFromInt32(pTxtNode->GetAttrOutlineLevel()-1);//<-end,zhaojianwei +======= aTmpStr += String::CreateFromInt32(pTxtNode->GetOutlineLevel()); aTmpStr += String("</outlinelevel>", RTL_TEXTENCODING_ASCII_US); +>>>>>>> .merge-right.r264324 const SwNumRule * pNumRule = pTxtNode->GetNumRule(); if (pNumRule != NULL) @@ -630,7 +635,8 @@ String lcl_dbg_out(const SwNode & rNode) aTmpStr += String("(", RTL_TEXTENCODING_ASCII_US); aTmpStr += String::CreateFromInt32 - (static_cast<SwTxtFmtColl *>(pColl)->GetOutlineLevel()); + //(static_cast<SwTxtFmtColl *>(pColl)->GetOutlineLevel());//#outline level,zhaojianwei + (static_cast<SwTxtFmtColl *>(pColl)->GetAssignedOutlineStyleLevel());//<-end,zhaojianwei const SwNumRuleItem & rItem = static_cast<const SwNumRuleItem &> @@ -906,7 +912,7 @@ String lcl_dbg_out(const SwTxtFmtColl & rFmt) String aResult(rFmt.GetName()); aResult += String("(", RTL_TEXTENCODING_ASCII_US); - aResult += String::CreateFromInt32(rFmt.GetOutlineLevel()); + aResult += String::CreateFromInt32(rFmt.GetAttrOutlineLevel()); aResult += String(")", RTL_TEXTENCODING_ASCII_US); return aResult; diff --git a/sw/source/core/doc/doc.cxx b/sw/source/core/doc/doc.cxx index caacb62076a0..b02551b4eead 100644 --- a/sw/source/core/doc/doc.cxx +++ b/sw/source/core/doc/doc.cxx @@ -1414,9 +1414,10 @@ void SwDoc::Summary( SwDoc* pExtDoc, BYTE nLevel, BYTE nPara, BOOL bImpress ) for( i = 0; i < rOutNds.Count(); ++i ) { ::SetProgressState( i, GetDocShell() ); - ULONG nIndex = rOutNds[ i ]->GetIndex(); - BYTE nLvl = ((SwTxtNode*)GetNodes()[ nIndex ])->GetTxtColl() - ->GetOutlineLevel(); + const ULONG nIndex = rOutNds[ i ]->GetIndex(); + //BYTE nLvl = ((SwTxtNode*)GetNodes()[ nIndex ])->GetTxtColl()//#outline level,zhaojianwei + // ->GetOutlineLevel(); + const int nLvl = ((SwTxtNode*)GetNodes()[ nIndex ])->GetAttrOutlineLevel()-1;//<-end,zhaojianwei if( nLvl > nLevel ) continue; USHORT nEndOfs = 1; @@ -1454,8 +1455,11 @@ void SwDoc::Summary( SwDoc* pExtDoc, BYTE nLevel, BYTE nPara, BOOL bImpress ) if( bImpress ) { SwTxtFmtColl* pMyColl = pNd->GetTxtColl(); - USHORT nHeadLine = static_cast<USHORT>(pMyColl->GetOutlineLevel()==NO_NUMBERING ? - RES_POOLCOLL_HEADLINE2 : RES_POOLCOLL_HEADLINE1); + //USHORT nHeadLine = static_cast<USHORT>(pMyColl->GetOutlineLevel()==NO_NUMBERING ?//#outlinelevel,zhaojianwei + const USHORT nHeadLine = static_cast<USHORT>( + !pMyColl->IsAssignedToListLevelOfOutlineStyle() //<-end,zhaojianwei + ? RES_POOLCOLL_HEADLINE2 + : RES_POOLCOLL_HEADLINE1 ); pMyColl = pExtDoc->GetTxtCollFromPool( nHeadLine ); pNd->ChgFmtColl( pMyColl ); } diff --git a/sw/source/core/doc/docdde.cxx b/sw/source/core/doc/docdde.cxx index 9d3b10404d6e..59cc7cdc97fe 100644 --- a/sw/source/core/doc/docdde.cxx +++ b/sw/source/core/doc/docdde.cxx @@ -340,7 +340,8 @@ BOOL SwDoc::SelectServerObj( const String& rStr, SwPaM*& rpPam, if( GotoOutline( aPos, sName )) { SwNode* pNd = &aPos.nNode.GetNode(); - BYTE nLvl = pNd->GetTxtNode()->GetTxtColl()->GetOutlineLevel(); + //BYTE nLvl = pNd->GetTxtNode()->GetTxtColl()->GetOutlineLevel();//#outline level,zhaojianwei + const int nLvl = pNd->GetTxtNode()->GetAttrOutlineLevel()-1;//<-end,zhaojianwei const SwOutlineNodes& rOutlNds = GetNodes().GetOutLineNds(); USHORT nTmpPos; @@ -351,7 +352,8 @@ BOOL SwDoc::SelectServerObj( const String& rStr, SwPaM*& rpPam, for( ++nTmpPos; nTmpPos < rOutlNds.Count() && nLvl < rOutlNds[ nTmpPos ]->GetTxtNode()-> - GetTxtColl()->GetOutlineLevel(); + //GetTxtColl()->GetOutlineLevel();//#outline level,zhaojianwei + GetAttrOutlineLevel()-1;//<-end,zhaojianwei ++nTmpPos ) ; // es gibt keinen Block diff --git a/sw/source/core/doc/docfld.cxx b/sw/source/core/doc/docfld.cxx index 67be965fbb44..39320b14fc02 100644 --- a/sw/source/core/doc/docfld.cxx +++ b/sw/source/core/doc/docfld.cxx @@ -1506,7 +1506,7 @@ void SwDoc::UpdateExpFlds( SwTxtFld* pUpdtFld, bool bUpdRefFlds ) if( pSFld->IsSequenceFld() ) { - BYTE nLvl = pSFldTyp->GetOutlineLvl(); + const BYTE nLvl = pSFldTyp->GetOutlineLvl(); if( MAXLEVEL > nLvl ) { // dann teste, ob die Nummer neu aufsetzen muss @@ -2199,8 +2199,9 @@ bool SwDoc::SetFieldsDirty( bool b, const SwNode* pChk, ULONG nLen ) const SwTxtNode* pTNd = rNds[ nStt++ ]->GetTxtNode(); if( pTNd ) { - if( pTNd->GetFmtColl() && - MAXLEVEL > pTNd->GetTxtColl()->GetOutlineLevel() ) + if( //pTNd->GetFmtColl() && //#outline level,zhaojianwei + // MAXLEVEL > pTNd->GetTxtColl()->GetOutlineLevel() ) + pTNd->GetAttrOutlineLevel() != 0 )//<-end,zhaojianwei // Kapitelfelder aktualisieren b = TRUE; else if( pTNd->GetpSwpHints() && pTNd->GetSwpHints().Count() ) diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx index b99f0fbb90d7..5207a638612f 100644 --- a/sw/source/core/doc/docfmt.cxx +++ b/sw/source/core/doc/docfmt.cxx @@ -131,6 +131,8 @@ struct ParaRstFmt bool bResetAll; bool bInclRefToxMark; + bool bKeepOutlineLevelAttr; //#outline level,add by zhaojianwei + ParaRstFmt( const SwPosition* pStt, const SwPosition* pEnd, SwHistory* pHst, USHORT nWhch = 0, const SfxItemSet* pSet = 0 ) : pFmtColl(0), @@ -144,7 +146,8 @@ struct ParaRstFmt bResetListAttrs( false ), // <-- bResetAll( true ), - bInclRefToxMark( false ) + bInclRefToxMark( false ), + bKeepOutlineLevelAttr( false ) //#outline level,add by zhaojianwei {} ParaRstFmt( SwHistory* pHst ) @@ -159,7 +162,8 @@ struct ParaRstFmt bResetListAttrs( false ), // <-- bResetAll( true ), - bInclRefToxMark( false ) + bInclRefToxMark( false ), + bKeepOutlineLevelAttr( false ) //#outline level,add by zhaojianwei {} }; @@ -217,6 +221,7 @@ BOOL lcl_RstAttr( const SwNodePtr& rpNd, void* pArgs ) SfxItemSet aSet( pDoc->GetAttrPool(), RES_PAGEDESC, RES_BREAK, RES_PARATR_NUMRULE, RES_PARATR_NUMRULE, + RES_PARATR_OUTLINELEVEL,RES_PARATR_OUTLINELEVEL,//#outline level,removed by zhaojianwei RES_PARATR_LIST_BEGIN, RES_PARATR_LIST_END - 1, 0 ); const SfxItemSet* pSet = pNode->GetpSwAttrSet(); @@ -247,9 +252,13 @@ BOOL lcl_RstAttr( const SwNodePtr& rpNd, void* pArgs ) // <-- const SfxPoolItem* pItem; - USHORT __READONLY_DATA aSavIds[ 3 ] = { RES_PAGEDESC, RES_BREAK, - RES_PARATR_NUMRULE }; - for( USHORT n = 0; n < 3; ++n ) + // USHORT __READONLY_DATA aSavIds[ 3 ] = { RES_PAGEDESC, RES_BREAK, //#outline level,removed by zhaojianwei + // RES_PARATR_NUMRULE }; + //for( USHORT n = 0; n < 3; ++n ) + USHORT __READONLY_DATA aSavIds[ 4 ] = { RES_PAGEDESC, RES_BREAK, //->add by zhaojianwei + RES_PARATR_NUMRULE, + RES_PARATR_OUTLINELEVEL }; + for( USHORT n = 0; n < 4; ++n ) //<-end,zhaojianwei { if( SFX_ITEM_SET == pSet->GetItemState( aSavIds[ n ], FALSE, &pItem )) { @@ -267,6 +276,11 @@ BOOL lcl_RstAttr( const SwNodePtr& rpNd, void* pArgs ) bSave = 0 != ((SwNumRuleItem*)pItem)->GetValue().Len(); } break; + case RES_PARATR_OUTLINELEVEL: //#outline level,add by zhaojianwei + { + bSave = pPara && pPara->bKeepOutlineLevelAttr; + } + break; //<-end,zhaojianwei } if( bSave ) { @@ -1707,6 +1721,10 @@ BOOL lcl_SetTxtFmtColl( const SwNodePtr& rpNode, void* pArgs ) SwTxtFmtColl* pFmt = static_cast<SwTxtFmtColl*>(pPara->pFmtColl); if ( pPara->bReset ) { + + if( pFmt->GetAttrOutlineLevel() == 0 && pPara ) + pPara->bKeepOutlineLevelAttr = true; + lcl_RstAttr( pCNd, pPara ); // --> OD 2007-11-06 #i62675# @@ -1894,9 +1912,11 @@ SwTxtFmtColl* SwDoc::CopyTxtColl( const SwTxtFmtColl& rColl ) pNewColl->CopyAttrs( rColl, TRUE ); // setze noch den Outline-Level - if( NO_NUMBERING != rColl.GetOutlineLevel() ) - pNewColl->SetOutlineLevel( rColl.GetOutlineLevel() ); - + //if( NO_NUMBERING != rColl.GetOutlineLevel() ) //#outline level,zhaojianwei + // pNewColl->SetOutlineLevel( rColl.GetOutlineLevel() ); + if(rColl.IsAssignedToListLevelOfOutlineStyle()) + pNewColl->AssignToListLevelOfOutlineStyle(rColl.GetAssignedOutlineStyleLevel());//<-end,zhaojianwei + //<-end pNewColl->SetPoolFmtId( rColl.GetPoolFmtId() ); pNewColl->SetPoolHelpId( rColl.GetPoolHelpId() ); @@ -2046,8 +2066,11 @@ void SwDoc::CopyFmtArr( const SvPtrarr& rSourceArr, rDestArr, pSrcColl->GetNextTxtFmtColl().GetName() ) ); // setze noch den Outline-Level - if( NO_NUMBERING != pSrcColl->GetOutlineLevel() ) - pDstColl->SetOutlineLevel( pSrcColl->GetOutlineLevel() ); + //if( NO_NUMBERING != pSrcColl->GetOutlineLevel() ) //#outline level,zhaojianwei + // pDstColl->SetOutlineLevel( pSrcColl->GetOutlineLevel() ); + if(pSrcColl->IsAssignedToListLevelOfOutlineStyle()) + pDstColl->AssignToListLevelOfOutlineStyle(pSrcColl->GetAssignedOutlineStyleLevel());//<-end,zhaojianwei + //<-end //FEATURE::CONDCOLL if( RES_CONDTXTFMTCOLL == pSrc->Which() ) @@ -2604,7 +2627,8 @@ namespace docfunc SwTxtFmtColl* pTxtFmtColl = (*pTxtFmtColls)[i]; if ( pTxtFmtColl->IsDefault() || - pTxtFmtColl->GetOutlineLevel() == NO_NUMBERING ) + // pTxtFmtColl->GetOutlineLevel() == NO_NUMBERING ) //#outline level,zhaojianwei + ! pTxtFmtColl->IsAssignedToListLevelOfOutlineStyle() ) //<-end,zhaojianwei { continue; } diff --git a/sw/source/core/doc/docglbl.cxx b/sw/source/core/doc/docglbl.cxx index 5501054a511c..a4bfb749174c 100644 --- a/sw/source/core/doc/docglbl.cxx +++ b/sw/source/core/doc/docglbl.cxx @@ -79,6 +79,17 @@ BOOL SwDoc::GenerateGlobalDoc( const String& rPath, return SplitDoc( SPLITDOC_TO_GLOBALDOC, rPath, pSplitColl ); } +//#outline level,add by zhaojianwei +BOOL SwDoc::GenerateGlobalDoc( const String& rPath, int nOutlineLevel ) +{ + return SplitDoc( SPLITDOC_TO_GLOBALDOC, rPath, nOutlineLevel ); +} +BOOL SwDoc::GenerateHTMLDoc( const String& rPath, int nOutlineLevel ) +{ + return SplitDoc( SPLITDOC_TO_HTML, rPath, nOutlineLevel ); +} +//<-end,zhaojianwei + BOOL SwDoc::GenerateHTMLDoc( const String& rPath, const SwTxtFmtColl* pSplitColl ) { @@ -88,7 +99,8 @@ BOOL SwDoc::GenerateHTMLDoc( const String& rPath, BYTE nLvl = 1; const SwTxtFmtColls& rFmtColls =*GetTxtFmtColls(); for( USHORT n = rFmtColls.Count(); n; ) - if( nLvl == rFmtColls[ --n ]->GetOutlineLevel() ) + //if( nLvl == rFmtColls[ --n ]->GetOutlineLevel() )//#outline level,zhaojianwei + if( nLvl == rFmtColls[ --n ]->GetAttrOutlineLevel() -1 )//<-end,zhaojianwei 0814 { pSplitColl = rFmtColls[ n ]; break; @@ -123,7 +135,8 @@ BOOL SwDoc::SplitDoc( USHORT eDocType, const String& rPath, { // wenn keine OutlineNumerierung ist, dann benutze eigenes Array // und sammel die Nodes zusammen. - if( NO_NUMBERING == pSplitColl->GetOutlineLevel() ) + //if( NO_NUMBERING == pSplitColl->GetOutlineLevel() )//#outline level,zhaojianwei + if( pSplitColl->GetAttrOutlineLevel() == 0 )//<-end,zhaojianwei, 0814 { pOutlNds = new SwOutlineNodes( 8, 8 ); SwClientIter aIter( *(SwModify*)pSplitColl ); @@ -144,7 +157,8 @@ BOOL SwDoc::SplitDoc( USHORT eDocType, const String& rPath, // dann suche die Gliederungs - Vorlage, der 1. Ebene const SwTxtFmtColls& rFmtColls =*GetTxtFmtColls(); for( USHORT n = rFmtColls.Count(); n; ) - if( !rFmtColls[ --n ]->GetOutlineLevel() ) + //if( !rFmtColls[ --n ]->GetOutlineLevel() )//#outline level,zhaojianwei + if ( rFmtColls[ --n ]->GetAttrOutlineLevel() == 1 )//<-end,zhaojianwei { pSplitColl = rFmtColls[ n ]; break; @@ -223,11 +237,17 @@ BOOL SwDoc::SplitDoc( USHORT eDocType, const String& rPath, pNd = pOutlNds->GetObject( nOutl ); SwTxtFmtColl* pTColl = pNd->GetTxtNode()->GetTxtColl(); + //if( ( pTColl == pSplitColl || //#outline level,zhaojianwei + // ( NO_NUMBERING != pSplitColl->GetOutlineLevel() && + // pTColl->GetOutlineLevel() < + // pSplitColl->GetOutlineLevel() )) && + // !pNd->FindTableNode() ) if( ( pTColl == pSplitColl || - ( NO_NUMBERING != pSplitColl->GetOutlineLevel() && - pTColl->GetOutlineLevel() < - pSplitColl->GetOutlineLevel() )) && - !pNd->FindTableNode() ) + ( pSplitColl->GetAttrOutlineLevel() > 0 && + pTColl->GetAttrOutlineLevel() > 0 && + pTColl->GetAttrOutlineLevel() < + pSplitColl->GetAttrOutlineLevel() )) && + !pNd->FindTableNode() ) //<-end,zhaojianwei { pEndNd = pNd; @@ -493,4 +513,340 @@ BOOL SwDoc::SplitDoc( USHORT eDocType, const String& rPath, return pRet && pRet->GetValue(); } +//#outline level,add by zhaojianwei +BOOL SwDoc::SplitDoc( USHORT eDocType, const String& rPath, int nOutlineLevel ) +{ + if( !pDocShell || !pDocShell->GetMedium() || + ( SPLITDOC_TO_GLOBALDOC == eDocType && get(IDocumentSettingAccess::GLOBAL_DOCUMENT) ) ) + return FALSE; + + USHORT nOutl = 0; + SwOutlineNodes* pOutlNds = (SwOutlineNodes*)&GetNodes().GetOutLineNds(); + SwNodePtr pSttNd; + + const SfxFilter* pFilter; + switch( eDocType ) + { + case SPLITDOC_TO_HTML: + pFilter = SwIoSystem::GetFilterOfFormat( String::CreateFromAscii( + RTL_CONSTASCII_STRINGPARAM( "HTML" ))); + break; + + default: +// case SPLITDOC_TO_GLOBALDOC: + pFilter = SwIoSystem::GetFilterOfFormat( + String::CreateFromAscii( FILTER_XML )); + eDocType = SPLITDOC_TO_GLOBALDOC; + break; + } + + if( !pFilter ) + return FALSE; + + // Undo/Redline aufjedenfall abschalten + DoUndo( FALSE ); + SetRedlineMode_intern( (RedlineMode_t)(GetRedlineMode() & ~nsRedlineMode_t::REDLINE_ON)); + + String sExt( pFilter->GetSuffixes().GetToken(0, ',') ); + if( !sExt.Len() ) + sExt.AssignAscii( "sxw" ); + if( '.' != sExt.GetChar( 0 ) ) + sExt.Insert( '.', 0 ); + + INetURLObject aEntry(rPath); + String sLeading(aEntry.GetBase()); + aEntry.removeSegment(); + String sPath = aEntry.GetMainURL( INetURLObject::NO_DECODE ); + utl::TempFile aTemp(sLeading,&sExt,&sPath ); + aTemp.EnableKillingFile(); + + DateTime aTmplDate; + { + Time a2Min( 0 ); a2Min.SetMin( 2 ); + aTmplDate += a2Min; + } + + + // alle Ungueltigen ueberspringen + while( nOutl < pOutlNds->Count() && + pOutlNds->GetObject( nOutl )->GetIndex() < GetNodes().GetEndOfExtras().GetIndex() ) + ++nOutl; + + do { + pSttNd = 0; + + SwNodePtr pNd; + for( ; nOutl < pOutlNds->Count(); ++nOutl ) + if( ( pNd = pOutlNds->GetObject( nOutl ))->GetTxtNode()->GetAttrOutlineLevel() == nOutlineLevel && + !pNd->FindTableNode() ) + { + pSttNd = pNd; + break; + } + + if( pSttNd ) + { + SwNodePtr pEndNd = 0; + for( ++nOutl; nOutl < pOutlNds->Count(); ++nOutl ) + { + pNd = pOutlNds->GetObject( nOutl ); + + const int nLevel = pNd->GetTxtNode()->GetAttrOutlineLevel(); + + if( ( 0 < nLevel && nLevel <= nOutlineLevel ) && + !pNd->FindTableNode() ) + { + pEndNd = pNd; + + break; + } + } + SwNodeIndex aEndIdx( pEndNd ? *pEndNd + : GetNodes().GetEndOfContent() ); + + String sFileName; + if( pSttNd->GetIndex() + 1 < aEndIdx.GetIndex() ) + { + SfxObjectShellRef xDocSh( new SwDocShell( SFX_CREATE_MODE_INTERNAL )); + if( xDocSh->DoInitNew( 0 ) ) + { + SwDoc* pDoc = ((SwDocShell*)(&xDocSh))->GetDoc(); + + uno::Reference<document::XDocumentPropertiesSupplier> xDPS( + ((SwDocShell*)(&xDocSh))->GetModel(), + uno::UNO_QUERY_THROW); + uno::Reference<document::XDocumentProperties> xDocProps( + xDPS->getDocumentProperties()); + DBG_ASSERT(xDocProps.is(), "Doc has no DocumentProperties"); + // the GlobalDoc is the template + xDocProps->setTemplateName(aEmptyStr); + ::util::DateTime uDT(aTmplDate.Get100Sec(), + aTmplDate.GetSec(), aTmplDate.GetMin(), + aTmplDate.GetHour(), aTmplDate.GetDay(), + aTmplDate.GetMonth(), aTmplDate.GetYear()); + xDocProps->setTemplateDate(uDT); + xDocProps->setTemplateURL(rPath); + //JP 14.06.99: Set the text of the "split para" as title + // from the new doc. Is the current doc has + // a title, insert it at begin. + String sTitle( xDocProps->getTitle() ); + if( sTitle.Len() ) + sTitle.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " )); + sTitle += ((SwTxtNode*)pSttNd)->GetExpandTxt(); + xDocProps->setTitle( sTitle ); + + // Vorlagen ersetzen + pDoc->ReplaceStyles( *this ); + + // KapitelNumerierung uebernehmen + if( pOutlineRule ) + pDoc->SetOutlineNumRule( *pOutlineRule ); + + SwNodeRange aRg( *pSttNd, 0, aEndIdx.GetNode() ); + SwNodeIndex aTmpIdx( pDoc->GetNodes().GetEndOfContent() ); + GetNodes()._Copy( aRg, aTmpIdx, FALSE ); + + // den initialen TextNode loeschen + SwNodeIndex aIdx( pDoc->GetNodes().GetEndOfExtras(), 2 ); + if( aIdx.GetIndex() + 1 != + pDoc->GetNodes().GetEndOfContent().GetIndex() ) + pDoc->GetNodes().Delete( aIdx, 1 ); + + // alle Flys in dem Bereich + _CopyFlyInFly( aRg, aIdx ); + + + // und noch alle Bookmarks + // ????? + + utl::TempFile aTempFile2(sLeading,&sExt,&sPath ); + sFileName = aTempFile2.GetURL(); + SfxMedium* pTmpMed = new SfxMedium( sFileName, + STREAM_STD_READWRITE, TRUE ); + pTmpMed->SetFilter( pFilter ); + + // fuer den HTML-Filter mussen wir aber ein Layout + // haben, damit Textrahmen/Controls/OLE-Objecte korrekt + // als Grafik exportiert werden koennen. + if( SPLITDOC_TO_HTML == eDocType && + pDoc->GetSpzFrmFmts()->Count() ) + { + /* SfxViewFrame* pFrame = */ + SfxViewFrame::CreateViewFrame( *xDocSh, 0, TRUE ); + } + xDocSh->DoSaveAs( *pTmpMed ); + xDocSh->DoSaveCompleted( pTmpMed ); + + // beim Fehler wird keine FileLinkSection eingefuegt + if( xDocSh->GetError() ) + sFileName.Erase(); + } + xDocSh->DoClose(); + } + + // dann koennen ja die Bereiche eingefuegt werden + if( sFileName.Len() ) + { + switch( eDocType ) + { + case SPLITDOC_TO_HTML: + { + // loesche alle Nodes im Bereich und setze im "Start- + // Node" den Link auf das gespeicherte Doc + ULONG nNodeDiff = aEndIdx.GetIndex() - + pSttNd->GetIndex() - 1; + if( nNodeDiff ) + { + SwPaM aTmp( *pSttNd, aEndIdx.GetNode(), 1, -1 ); + aTmp.GetPoint()->nContent.Assign( 0, 0 ); + aTmp.GetMark()->nContent.Assign( 0, 0 ); + SwNodeIndex aSIdx( aTmp.GetMark()->nNode ); + SwNodeIndex aEIdx( aTmp.GetPoint()->nNode ); + + // versuche hinters Ende zu verschieben + if( !aTmp.Move( fnMoveForward, fnGoNode ) ) + { + // na gut, dann an den Anfang + aTmp.Exchange(); + if( !aTmp.Move( fnMoveBackward, fnGoNode )) + { + ASSERT( FALSE, "kein Node mehr vorhanden" ); + } + } + // Bookmarks usw. verschieben + CorrAbs( aSIdx, aEIdx, *aTmp.GetPoint(), TRUE); + + // stehen noch FlyFrames rum, loesche auch diese + const SwPosition* pAPos; + for( USHORT n = 0; n < GetSpzFrmFmts()->Count(); ++n ) + { + SwFrmFmt* pFly = (*GetSpzFrmFmts())[n]; + const SwFmtAnchor* pAnchor = &pFly->GetAnchor(); + if( ( FLY_AT_CNTNT == pAnchor->GetAnchorId() || + FLY_AUTO_CNTNT == pAnchor->GetAnchorId() ) && + 0 != ( pAPos = pAnchor->GetCntntAnchor() ) && + aSIdx <= pAPos->nNode && + pAPos->nNode < aEIdx ) + { + DelLayoutFmt( pFly ); + --n; + } + } + + GetNodes().Delete( aSIdx, nNodeDiff ); + } + + // dann setze im StartNode noch den Link: + SwFmtINetFmt aINet( sFileName , aEmptyStr ); + SwTxtNode* pTNd = (SwTxtNode*)pSttNd; + pTNd->InsertItem( aINet, 0, pTNd->GetTxt().Len() ); + + // wenn der nicht mehr gefunden wird, kann das nur + // ein Bug sein! + if( !pOutlNds->Seek_Entry( pSttNd, &nOutl )) + pSttNd = 0; + ++nOutl; + } + break; + + default: + { + String sNm( INetURLObject( sFileName ).GetName() ); + SwSection aSect( FILE_LINK_SECTION, + GetUniqueSectionName( &sNm )); + SwSectionFmt* pFmt = MakeSectionFmt( 0 ); + aSect.SetLinkFileName(sFileName ); + aSect.SetProtect(); + + aEndIdx--; // im InsertSection ist Ende inclusive + while( aEndIdx.GetNode().IsStartNode() ) + aEndIdx--; + + // JP 06.07.99 - Bug 67361 - is any Section ends or + // starts in the new sectionrange, they must end or + // start before or behind the range! + SwSectionNode* pSectNd = pSttNd->FindSectionNode(); + while( pSectNd && pSectNd->EndOfSectionIndex() + <= aEndIdx.GetIndex() ) + { + const SwNode* pSectEnd = pSectNd->EndOfSectionNode(); + if( pSectNd->GetIndex() + 1 == + pSttNd->GetIndex() ) + { + BOOL bMvIdx = aEndIdx == *pSectEnd; + DelSectionFmt( pSectNd->GetSection().GetFmt() ); + if( bMvIdx ) + aEndIdx--; + } + else + { + SwNodeRange aRg( *pSttNd, *pSectEnd ); + SwNodeIndex aIdx( *pSectEnd, 1 ); + GetNodes()._MoveNodes( aRg, GetNodes(), aIdx ); + } + pSectNd = pSttNd->FindSectionNode(); + } + + pSectNd = aEndIdx.GetNode().FindSectionNode(); + while( pSectNd && pSectNd->GetIndex() > + pSttNd->GetIndex() ) + { + if( aEndIdx < pSectNd->EndOfSectionIndex() ) + { + SwNodeRange aRg( *pSectNd, 1, aEndIdx, 1 ); + SwNodeIndex aIdx( *pSectNd ); + GetNodes()._MoveNodes( aRg, GetNodes(), aIdx ); + } + + pSectNd = pSttNd->FindSectionNode(); + } + + SwNodeIndex aStartIdx(*pSttNd); + + if (aEndIdx >= aStartIdx) + pSectNd = GetNodes().InsertSection + (aStartIdx, *pFmt, aSect, &aEndIdx, FALSE ); + else + pSectNd = GetNodes().InsertSection + (aEndIdx, *pFmt, aSect, &aStartIdx, FALSE ); + + pSectNd->GetSection().CreateLink( CREATE_CONNECT ); + } + break; + } + } + } + } while( pSttNd ); + + if( pOutlNds != &GetNodes().GetOutLineNds() ) + delete pOutlNds; + + switch( eDocType ) + { + case SPLITDOC_TO_HTML: + if( get(IDocumentSettingAccess::GLOBAL_DOCUMENT) ) + { + while( GetSections().Count() ) + DelSectionFmt( GetSections()[ 0 ] ); + + SfxFilterContainer* pFCntnr = pDocShell->GetFactory().GetFilterContainer(); + pFilter = pFCntnr->GetFilter4EA( pFilter->GetTypeName(), SFX_FILTER_EXPORT ); + } + break; + +// case SPLITDOC_TO_GLOBALDOC: + default: + set(IDocumentSettingAccess::GLOBAL_DOCUMENT, true); + set(IDocumentSettingAccess::GLOBAL_DOCUMENT_SAVE_LINKS, false); + } + + SfxRequest aReq( SID_SAVEASDOC, SFX_CALLMODE_SYNCHRON, GetAttrPool() ); + aReq.AppendItem( SfxStringItem( SID_FILE_NAME, rPath ) ); + aReq.AppendItem( SfxBoolItem( SID_SAVETO, sal_True ) ); + if(pFilter) + aReq.AppendItem( SfxStringItem( SID_FILTER_NAME, pFilter->GetName() ) ); + const SfxBoolItem *pRet = (const SfxBoolItem*)pDocShell->ExecuteSlot( aReq ); + + return pRet && pRet->GetValue(); +}//<-end,zhaojianwei diff --git a/sw/source/core/doc/docnum.cxx b/sw/source/core/doc/docnum.cxx index 921e5e7cac3f..423d041c1369 100644 --- a/sw/source/core/doc/docnum.cxx +++ b/sw/source/core/doc/docnum.cxx @@ -137,7 +137,8 @@ void SwDoc::PropagateOutlineRule() { SwTxtFmtColl *pColl = (*pTxtFmtCollTbl)[n]; - if (NO_NUMBERING != pColl->GetOutlineLevel()) + // if (NO_NUMBERING != pColl->GetOutlineLevel())//#outline level,zhaojianwei + if(pColl->IsAssignedToListLevelOfOutlineStyle())//<-end,zhaojianwei { SwClientIter aIter(*pColl); @@ -160,36 +161,6 @@ void SwDoc::PropagateOutlineRule() pColl->SetFmtAttr(aNumItem); } } - - SwClient * pClient = aIter.First(TYPE(SwTxtNode)); - while (pClient) - { - SwTxtNode * pTxtNode = ((SwTxtNode *) pClient); - - if (pTxtNode->GetOutlineLevel() == NO_NUMBERING) - { - BYTE nOutlineLevel = pColl->GetOutlineLevel(); - - if (nOutlineLevel < MAXLEVEL) - { - aNodes.UpdateOutlineNode(*pTxtNode); - pTxtNode->UpdateOutlineState(); - } - } - - // --> OD 2006-01-12 #126588# - applying outline level of - // paragraph style at text node, if its numbering rule is the - // outline numbering rule doesn't seem to be necessary due to - // the changes in <SwTxtNode::SyncNumberAndNumRule()>. - // Thus, only assert, if numbering level of text node with - // outline numbering rule doesn't fit to outline level of - // its paragraph style. - ASSERT( pTxtNode->GetNumRule() != GetOutlineNumRule() || - pTxtNode->GetActualListLevel() == pColl->GetOutlineLevel(), - "<SwDoc::PropagateOutlineRule()> - text node doesn't have excepted numbering level" ); - - pClient = aIter.Next(); - } } } } @@ -226,9 +197,14 @@ BOOL SwDoc::OutlineUpDown( const SwPaM& rPam, short nOffset ) for( n = 0; n < pTxtFmtCollTbl->Count(); ++n ) { - BYTE nLevel = (*pTxtFmtCollTbl)[ n ]->GetOutlineLevel(); - if( nLevel < MAXLEVEL ) + //BYTE nLevel = (*pTxtFmtCollTbl)[ n ]->GetOutlineLevel();//#outline level,zhaojianwei + //if( nLevel < MAXLEVEL ) + // aCollArr[ nLevel ] = (*pTxtFmtCollTbl)[ n ]; + if((*pTxtFmtCollTbl)[ n ]->IsAssignedToListLevelOfOutlineStyle()) + { + const int nLevel = (*pTxtFmtCollTbl)[ n ]->GetAssignedOutlineStyleLevel(); aCollArr[ nLevel ] = (*pTxtFmtCollTbl)[ n ]; + }//<-end,zhaojianwei } /* --> #111107# */ @@ -252,10 +228,11 @@ BOOL SwDoc::OutlineUpDown( const SwPaM& rPam, short nOffset ) SwTxtFmtColl *aTmpColl = GetTxtCollFromPool(static_cast<sal_uInt16>(RES_POOLCOLL_HEADLINE1 + n)); - if (aTmpColl->GetOutlineLevel() == n) + //if (aTmpColl->GetOutlineLevel() == n)//#outline level,zhaojianwei + if( aTmpColl->IsAssignedToListLevelOfOutlineStyle() && + aTmpColl->GetAssignedOutlineStyleLevel() == n )//<-end,zhaojianwei { aCollArr[n] = aTmpColl; - break; } } @@ -281,10 +258,11 @@ BOOL SwDoc::OutlineUpDown( const SwPaM& rPam, short nOffset ) SwTxtFmtColl *aTmpColl = GetTxtCollFromPool(static_cast<sal_uInt16>(RES_POOLCOLL_HEADLINE1 + n)); - if (aTmpColl->GetOutlineLevel() == n) + //if (aTmpColl->GetOutlineLevel() == n)//#outline level,zhaojianwei + if( aTmpColl->IsAssignedToListLevelOfOutlineStyle() && + aTmpColl->GetAssignedOutlineStyleLevel() == n )//<-end,zhaojianwei { aCollArr[n] = aTmpColl; - break; } } @@ -361,10 +339,27 @@ BOOL SwDoc::OutlineUpDown( const SwPaM& rPam, short nOffset ) { SwTxtNode* pTxtNd = rOutlNds[ n ]->GetTxtNode(); SwTxtFmtColl* pColl = pTxtNd->GetTxtColl(); - int nLevel = pColl->GetOutlineLevel(); - - if (aMoveArr[nLevel] == -1) - bMoveApplicable = false; +// int nLevel = pColl->GetOutlineLevel();//#outline level,zhaojianwei +// if (aMoveArr[nLevel] == -1) +// bMoveApplicable = false; + if( pColl->IsAssignedToListLevelOfOutlineStyle() ) + { + const int nLevel = pColl->GetAssignedOutlineStyleLevel(); + if (aMoveArr[nLevel] == -1) + bMoveApplicable = false; + }//<-end,zhaojianwei + // --> OD 2008-12-16 #i70748# + // Check on outline level attribute of text node, if text node is + // not an outline via a to outline style assigned paragraph style. + else + { + const int nNewOutlineLevel = pTxtNd->GetAttrOutlineLevel() + nOffset; + if ( nNewOutlineLevel < 1 || nNewOutlineLevel > MAXLEVEL ) + { + bMoveApplicable = false; + } + } + // <-- } if (! bMoveApplicable ) @@ -386,22 +381,33 @@ BOOL SwDoc::OutlineUpDown( const SwPaM& rPam, short nOffset ) SwTxtNode* pTxtNd = rOutlNds[ n ]->GetTxtNode(); SwTxtFmtColl* pColl = pTxtNd->GetTxtColl(); - ASSERT(pColl->GetOutlineLevel() < MAXLEVEL, - "non outline node in outline nodes?"); + if( pColl->IsAssignedToListLevelOfOutlineStyle() ) + { + // ASSERT(pColl->GetOutlineLevel() < MAXLEVEL, //#outline level,removed by zhaojianwei + // "non outline node in outline nodes?"); + //int nLevel = pColl->GetOutlineLevel(); + const int nLevel = pColl->GetAssignedOutlineStyleLevel();//#outline level,add by zhaojianwei - int nLevel = pColl->GetOutlineLevel(); + ASSERT(aMoveArr[nLevel] >= 0, + "move table: current TxtColl not found when building table!"); - ASSERT(aMoveArr[nLevel] >= 0, - "move table: current TxtColl not found when building table!"); + if (nLevel < MAXLEVEL && aMoveArr[nLevel] >= 0) + { + pColl = aCollArr[ aMoveArr[nLevel] ]; - if (nLevel < MAXLEVEL && aMoveArr[nLevel] >= 0) - { - pColl = aCollArr[ aMoveArr[nLevel] ]; + if (pColl != NULL) + pColl = (SwTxtFmtColl*)pTxtNd->ChgFmtColl( pColl ); + } - if (pColl != NULL) - pColl = (SwTxtFmtColl*)pTxtNd->ChgFmtColl( pColl ); } + else if( pTxtNd->GetAttrOutlineLevel() > 0) //#outline level,add by zhaojianwei + { + int nLevel = pTxtNd->GetAttrOutlineLevel() + nOffset; + if( 0 <= nLevel && nLevel <= MAXLEVEL) + pTxtNd->SetAttrOutlineLevel( nLevel ); + + }//<-end,zhaojianwei n++; // Undo ??? @@ -432,10 +438,13 @@ BOOL SwDoc::MoveOutlinePara( const SwPaM& rPam, short nOffset ) USHORT nAktPos = 0; SwNodeIndex aSttRg( rStt.nNode ), aEndRg( rEnd.nNode ); - BYTE nOutLineLevel = NO_NUMBERING; + //BYTE nOutLineLevel = NO_NUMBERING; //#outline level,zhaojianwei + int nOutLineLevel = MAXLEVEL; //<-end,zhaojianwei SwNode* pSrch = &aSttRg.GetNode(); - if( pSrch->IsTxtNode() ) - nOutLineLevel = static_cast<BYTE>(((SwTxtNode*)pSrch)->GetOutlineLevel()); + //if( pSrch->IsTxtNode() ) //#outline level,zhaojianwei + // nOutLineLevel = static_cast<BYTE>(((SwTxtNode*)pSrch)->GetOutlineLevel()); + if( pSrch->IsTxtNode()) + nOutLineLevel = static_cast<BYTE>(((SwTxtNode*)pSrch)->GetAttrOutlineLevel()-1);//<-end,zhaojianwei SwNode* pEndSrch = &aEndRg.GetNode(); if( !GetNodes().GetOutLineNds().Seek_Entry( pSrch, &nAktPos ) ) { @@ -457,7 +466,8 @@ BOOL SwDoc::MoveOutlinePara( const SwPaM& rPam, short nOffset ) if( GetNodes().GetOutLineNds().Seek_Entry( pEndSrch, &nTmpPos ) ) { if( !pEndSrch->IsTxtNode() || pEndSrch == pSrch || - nOutLineLevel < ((SwTxtNode*)pEndSrch)->GetOutlineLevel() ) + //nOutLineLevel < ((SwTxtNode*)pEndSrch)->GetOutlineLevel() )//#outline level,zhaojianwei + nOutLineLevel < ((SwTxtNode*)pEndSrch)->GetAttrOutlineLevel()-1 )//<-end,zhaojianwei ++nTmpPos; // For sub outlines only! } @@ -648,7 +658,8 @@ USHORT lcl_FindOutlineNum( const SwNodes& rNds, String& rName ) for( ; nPos < rOutlNds.Count(); ++nPos ) { pNd = rOutlNds[ nPos ]->GetTxtNode(); - BYTE nLvl = pNd->GetTxtColl()->GetOutlineLevel(); + //BYTE nLvl = pNd->GetTxtColl()->GetOutlineLevel(); //#outline level,zhaojianwei + const int nLvl = pNd->GetAttrOutlineLevel()-1; //<-end,zhaojianwei if( nLvl == nLevel - 1) { // check for the outline num @@ -1649,8 +1660,10 @@ void SwDoc::DelNumRules( const SwPaM& rPam ) if( RES_CONDTXTFMTCOLL == pTNd->GetFmtColl()->Which() ) pTNd->ChkCondColl(); - else if( !pOutlNd && NO_NUMBERING != - ((SwTxtFmtColl*)pTNd->GetFmtColl())->GetOutlineLevel() ) + //else if( !pOutlNd && NO_NUMBERING != //#outline level,zhaojianwei + // ((SwTxtFmtColl*)pTNd->GetFmtColl())->GetOutlineLevel() ) + else if( !pOutlNd && + ((SwTxtFmtColl*)pTNd->GetFmtColl())->IsAssignedToListLevelOfOutlineStyle() )//<-end,zhaojianwei pOutlNd = pTNd; } } @@ -2739,7 +2752,8 @@ sal_Int32 SwDoc::getOutlineNodesCount() const int SwDoc::getOutlineLevel( const sal_Int32 nIdx ) const { return GetNodes().GetOutLineNds()[ static_cast<USHORT>(nIdx) ]-> - GetTxtNode()->GetOutlineLevel(); + // GetTxtNode()->GetOutlineLevel(); //#outline level,zhaojianwei + GetTxtNode()->GetAttrOutlineLevel()-1; //<-end,zhaojianwei } String SwDoc::getOutlineText( const sal_Int32 nIdx, diff --git a/sw/source/core/doc/doctxm.cxx b/sw/source/core/doc/doctxm.cxx index 1b8e6262a415..0c849d3c1cba 100644 --- a/sw/source/core/doc/doctxm.cxx +++ b/sw/source/core/doc/doctxm.cxx @@ -1297,7 +1297,8 @@ void SwTOXBaseSection::UpdateOutline( const SwTxtNode* pOwnChapterNode ) ::SetProgressState( 0, pDoc->GetDocShell() ); SwTxtNode* pTxtNd = rOutlNds[ n ]->GetTxtNode(); if( pTxtNd && pTxtNd->Len() && pTxtNd->GetDepends() && - USHORT(pTxtNd->GetTxtColl()->GetOutlineLevel()+1) <= GetLevel() && + //USHORT(pTxtNd->GetTxtColl()->GetOutlineLevel()+1) <= GetLevel() && //#outline level,zhaojianwei + USHORT( pTxtNd->GetAttrOutlineLevel()) <= GetLevel() && //<-end,zhaojianwei pTxtNd->GetFrm() && !pTxtNd->HasHiddenParaField() && !pTxtNd->HasHiddenCharAttribute( true ) && @@ -1330,8 +1331,9 @@ void SwTOXBaseSection::UpdateTemplate( const SwTxtNode* pOwnChapterNode ) if( !pColl || ( TOX_CONTENT == SwTOXBase::GetType() && GetCreateType() & nsSwTOXElement::TOX_OUTLINELEVEL && - NO_NUMBERING != pColl->GetOutlineLevel() ) ) - continue; + //NO_NUMBERING != pColl->GetOutlineLevel() ) )//#outline level,zhaojianwei + pColl->IsAssignedToListLevelOfOutlineStyle()) )//<-end,zhaojianwei + continue; SwClientIter aIter( *pColl ); SwTxtNode* pTxtNd = (SwTxtNode*)aIter.First( TYPE( SwTxtNode )); @@ -1549,7 +1551,7 @@ void SwTOXBaseSection::UpdateCntnt( SwTOXElement eMyType, if( pCNd ) { //find node in body text - USHORT nSetLevel = USHRT_MAX; + int nSetLevel = USHRT_MAX; //#111105# tables of tables|illustrations|objects don't support hierarchies if( IsLevelFromChapter() && @@ -1561,9 +1563,11 @@ void SwTOXBaseSection::UpdateCntnt( SwTOXElement eMyType, MAXLEVEL - 1 ); if( pOutlNd ) { - USHORT nTmp = pOutlNd->GetTxtColl()->GetOutlineLevel(); - if( nTmp < NO_NUMBERING ) - nSetLevel = nTmp + 1; + //USHORT nTmp = pOutlNd->GetTxtColl()->GetOutlineLevel();//#outline level,zhaojianwei + //if( nTmp < NO_NUMBERING ) + // nSetLevel = nTmp + 1; + if( pOutlNd->GetTxtColl()->IsAssignedToListLevelOfOutlineStyle()) + nSetLevel = pOutlNd->GetTxtColl()->GetAttrOutlineLevel() ;//<-end,zhaojianwei } } @@ -1571,7 +1575,9 @@ void SwTOXBaseSection::UpdateCntnt( SwTOXElement eMyType, ::lcl_FindChapterNode( *pCNd, 0 ) == pOwnChapterNode )) { SwTOXPara * pNew = new SwTOXPara( *pCNd, eMyType, - USHRT_MAX != nSetLevel ? nSetLevel : FORM_ALPHA_DELIMITTER ); + ( USHRT_MAX != nSetLevel ) + ? static_cast<USHORT>(nSetLevel) + : FORM_ALPHA_DELIMITTER ); InsertSorted( pNew ); } } @@ -1616,9 +1622,14 @@ void SwTOXBaseSection::UpdateTable( const SwTxtNode* pOwnChapterNode ) ::lcl_FindChapterNode( *pCNd, MAXLEVEL - 1 ); if( pOutlNd ) { - USHORT nTmp = pOutlNd->GetTxtColl()->GetOutlineLevel(); - if( nTmp < NO_NUMBERING ) - pNew->SetLevel( nTmp + 1 ); + //USHORT nTmp = pOutlNd->GetTxtColl()->GetOutlineLevel();//#outline level,zhaojianwei + //if( nTmp < NO_NUMBERING ) + // pNew->SetLevel( nTmp + 1 ); + if( pOutlNd->GetTxtColl()->IsAssignedToListLevelOfOutlineStyle()) + { + const int nTmp = pOutlNd->GetTxtColl()->GetAttrOutlineLevel(); + pNew->SetLevel( static_cast<USHORT>(nTmp) );//<-end ,zhaojianwei + } } } InsertSorted(pNew); diff --git a/sw/source/core/doc/fmtcol.cxx b/sw/source/core/doc/fmtcol.cxx index 9f321c07d104..83ef29ab1d1e 100644 --- a/sw/source/core/doc/fmtcol.cxx +++ b/sw/source/core/doc/fmtcol.cxx @@ -46,6 +46,12 @@ #include <numrule.hxx> #include <paratr.hxx> +//--> #outlinelevel added by zhaojianwei +#ifndef _SFXINTITEM_HXX +#include <svtools/intitem.hxx> +#endif +//<--end + TYPEINIT1( SwTxtFmtColl, SwFmtColl ); TYPEINIT1( SwGrfFmtColl, SwFmtColl ); TYPEINIT1( SwConditionTxtFmtColl, SwTxtFmtColl ); @@ -75,7 +81,7 @@ namespace TxtFmtCollFunc // --> OD 2007-01-24 #i73790# // if ( pTxtFmtColl->AssignedToListLevelOfOutlineStyle() ) if ( !pTxtFmtColl->StayAssignedToListLevelOfOutlineStyle() && - pTxtFmtColl->AssignedToListLevelOfOutlineStyle() ) + pTxtFmtColl->IsAssignedToListLevelOfOutlineStyle() ) // <-- { if ( !pNewNumRuleItem ) @@ -153,7 +159,7 @@ void SwTxtFmtColl::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) SvxLRSpaceItem *pNewLRSpace = 0, *pOldLRSpace = 0; SvxFontHeightItem* aFontSizeArr[3] = {0,0,0}; // --> OD 2006-10-17 #i70223# - const bool bAssignedToListLevelOfOutlineStyle( AssignedToListLevelOfOutlineStyle() ); + const bool bAssignedToListLevelOfOutlineStyle(IsAssignedToListLevelOfOutlineStyle());//#outline level ,zhaojianwei const SwNumRuleItem* pNewNumRuleItem( 0L ); // <-- @@ -428,9 +434,24 @@ USHORT SwTxtFmtColl::ResetAllFmtAttr() { const bool bOldState( mbStayAssignedToListLevelOfOutlineStyle ); mbStayAssignedToListLevelOfOutlineStyle = true; + // --> OD 2008-12-16 #i70748# + // Outline level is no longer a member, it is a attribute now. + // Thus, it needs to be restored, if the paragraph style is assigned + // to the outline style + const int nAssignedOutlineStyleLevel = IsAssignedToListLevelOfOutlineStyle() + ? GetAssignedOutlineStyleLevel() + : -1; + // <-- USHORT nRet = SwFmtColl::ResetAllFmtAttr(); + // --> OD 2008-12-16 #i70748# + if ( nAssignedOutlineStyleLevel != -1 ) + { + AssignToListLevelOfOutlineStyle( nAssignedOutlineStyleLevel ); + } + // <-- + mbStayAssignedToListLevelOfOutlineStyle = bOldState; return nRet; @@ -640,18 +661,38 @@ void SwConditionTxtFmtColl::SetConditions( const SwFmtCollConditions& rCndClls ) aCondColls.Insert( pNew, n ); } } +//#outline level, zhaojianwei +void SwTxtFmtColl::SetAttrOutlineLevel( int nLevel) +{ + ASSERT( 0 <= nLevel && nLevel <= MAXLEVEL ,"SwTxtFmtColl: Level Out Of Range" ); + SetFmtAttr( SfxUInt16Item( RES_PARATR_OUTLINELEVEL, + static_cast<UINT16>(nLevel) ) ); +} -void SwTxtFmtColl::SetOutlineLevel( BYTE nLevel ) +int SwTxtFmtColl::GetAttrOutlineLevel() const { - ASSERT( nLevel < MAXLEVEL || nLevel == NO_NUMBERING , - "SwTxtFmtColl: Level too low" ); - if (!(nLevel < MAXLEVEL || nLevel == NO_NUMBERING)) - // take care of out-of-bounds values that may occasionally crash the office - // such values may for example occur directly from some bad used API calls - nOutlineLevel = NO_NUMBERING; - else - nOutlineLevel = nLevel; + return ((const SfxUInt16Item &)GetFmtAttr(RES_PARATR_OUTLINELEVEL)).GetValue(); } +int SwTxtFmtColl::GetAssignedOutlineStyleLevel() const +{ + ASSERT( IsAssignedToListLevelOfOutlineStyle(), + "<SwTxtFmtColl::GetAssignedOutlineStyleLevel()> - misuse of method"); + return GetAttrOutlineLevel() - 1; +} + +void SwTxtFmtColl::AssignToListLevelOfOutlineStyle(const int nAssignedListLevel) +{ + + mbAssignedToOutlineStyle = true; + SetAttrOutlineLevel(nAssignedListLevel+1); +} + +void SwTxtFmtColl::DeleteAssignmentToListLevelOfOutlineStyle() +{ + mbAssignedToOutlineStyle = false; + ResetFmtAttr(RES_PARATR_OUTLINELEVEL); +} +//<-end,zhaojianwei //FEATURE::CONDCOLL diff --git a/sw/source/core/doc/ftnidx.cxx b/sw/source/core/doc/ftnidx.cxx index b05ac811c846..f91ee10f1ae7 100644 --- a/sw/source/core/doc/ftnidx.cxx +++ b/sw/source/core/doc/ftnidx.cxx @@ -113,11 +113,13 @@ void SwFtnIdxs::UpdateFtn( const SwNodeIndex& rStt ) for( n = 0; n < rOutlNds.Count(); ++n ) if( rOutlNds[ n ]->GetIndex() > rStt.GetIndex() ) break; // gefunden - else if( !rOutlNds[ n ]->GetTxtNode()->GetTxtColl()->GetOutlineLevel() ) + //else if( !rOutlNds[ n ]->GetTxtNode()->GetTxtColl()->GetOutlineLevel() ) //#outline level,zhaojianwei + else if ( rOutlNds[ n ]->GetTxtNode()->GetAttrOutlineLevel() == 1 ) //<-end,zhaojianwei pCapStt = rOutlNds[ n ]; // Start eines neuen Kapitels // dann suche jetzt noch das Ende vom Bereich for( ; n < rOutlNds.Count(); ++n ) - if( !rOutlNds[ n ]->GetTxtNode()->GetTxtColl()->GetOutlineLevel() ) + //if( !rOutlNds[ n ]->GetTxtNode()->GetTxtColl()->GetOutlineLevel() )//#outline level,zhaojianwei + if ( rOutlNds[ n ]->GetTxtNode()->GetAttrOutlineLevel() == 1 )//<-end,zhaojianwei { nCapEnd = rOutlNds[ n ]->GetIndex(); // Ende des gefundenen Kapitels break; @@ -231,7 +233,8 @@ void SwFtnIdxs::UpdateAllFtn() nFtnIdx = 0; // Index in das FtnIdx-Array for( USHORT n = 0; n < rOutlNds.Count(); ++n ) { - if( !rOutlNds[ n ]->GetTxtNode()->GetTxtColl()->GetOutlineLevel() ) + //if( !rOutlNds[ n ]->GetTxtNode()->GetTxtColl()->GetOutlineLevel() )//#outline level,zhaojianwei + if ( rOutlNds[ n ]->GetTxtNode()->GetAttrOutlineLevel() == 1 )//<-end,zhaojianwei { ULONG nCapStt = rOutlNds[ n ]->GetIndex(); // Start eines neuen Kapitels for( ; nFtnIdx < Count(); ++nFtnIdx ) diff --git a/sw/source/core/doc/poolfmt.cxx b/sw/source/core/doc/poolfmt.cxx index ad06bf858c99..62022147e57c 100644 --- a/sw/source/core/doc/poolfmt.cxx +++ b/sw/source/core/doc/poolfmt.cxx @@ -233,7 +233,8 @@ void lcl_SetHeadline( SwDoc* pDoc, SwTxtFmtColl* pColl, { if( !( nOutLvlBits & ( 1 << nLevel )) ) { - pColl->SetOutlineLevel( nLevel ); + //pColl->SetOutlineLevel( nLevel ); //#outline level zhaojianwei + pColl->AssignToListLevelOfOutlineStyle(nLevel);//<-end,zhaojianwei if( !bHTMLMode ) { SwNumRule * pOutlineRule = pDoc->GetOutlineNumRule(); @@ -344,8 +345,10 @@ SwTxtFmtColl* SwDoc::GetTxtCollFromPool( USHORT nId, bool bRegardLanguage ) { return pNewColl; } - if( pNewColl->GetOutlineLevel() < MAXLEVEL ) - nOutLvlBits |= ( 1 << pNewColl->GetOutlineLevel() ); + //if( pNewColl->GetOutlineLevel() < MAXLEVEL ) //#outline level,zhaojianwei + //nOutLvlBits |= ( 1 << pNewColl->GetOutlineLevel() ); + if( pNewColl->IsAssignedToListLevelOfOutlineStyle()) + nOutLvlBits |= ( 1 << pNewColl->GetAssignedOutlineStyleLevel() );//<-end,zhaojianwei } // bis hierher nicht gefunden -> neu anlegen diff --git a/sw/source/core/docnode/ndnum.cxx b/sw/source/core/docnode/ndnum.cxx index bddc10ddc79c..ae70599de061 100644 --- a/sw/source/core/docnode/ndnum.cxx +++ b/sw/source/core/docnode/ndnum.cxx @@ -127,73 +127,82 @@ void SwNodes::UpdateOutlineNode(SwNode & rNd) } } -void SwNodes::UpdateOutlineNode( const SwNode& rNd, BYTE nOldLevel, - BYTE nNewLevel ) -{ - const SwNodePtr pSrch = (SwNodePtr)&rNd; - USHORT nSttPos; - BOOL bSeekIdx = pOutlineNds->Seek_Entry( pSrch, &nSttPos ); - - if( NO_NUMBERING == nOldLevel ) // neuen Level einfuegen - { - // nicht vorhanden, also einfuegen - //ASSERT( !bSeekIdx, "Der Node ist schon als OutlineNode vorhanden" ); - - //JP 12.03.99: 63293 - Nodes vom RedlineBereich NIE aufnehmen - ULONG nNd = rNd.GetIndex(); - if( nNd < GetEndOfRedlines().GetIndex() && - nNd > GetEndOfRedlines().StartOfSectionNode()->GetIndex() ) - return ; - - // jetzt noch alle nachfolgende Outline-Nodes updaten - if (! bSeekIdx) - { - // --> OD 2005-11-03 #125329# - // assure that node <pSrch> is in the correct nodes array - if ( &(pSrch->GetNodes()) == this ) - { - pOutlineNds->Insert( pSrch ); - } - else - { - ASSERT( false, - "<SwNodes::UpdateOutlineNode(..)> - node <pSrch> isn't in correct nodes array. This is a serious defect -> inform OD" ); - } - // <-- - } - - } - else if( NO_NUMBERING == nNewLevel ) // Level entfernen - { - if( !bSeekIdx ) - return; - - // jetzt noch alle nachfolgende Outline-Nodes updaten - pOutlineNds->Remove( nSttPos ); - } - else if( !bSeekIdx ) // Update und Index nicht gefunden ?? - return ; - - { - SwTxtNode & rTxtNd = (SwTxtNode &) rNd; - SwPaM aPam(rTxtNd); // #115901# - - if (nNewLevel != NO_NUMBERING) // #115901# - { - rTxtNd.SetAttrListLevel(rTxtNd.GetTxtColl()->GetOutlineLevel()); - - rTxtNd.NumRuleChgd(); - } - else - { - GetDoc()->DelNumRules(aPam); - } - } - - // die Gliederungs-Felder Updaten - GetDoc()->GetSysFldType( RES_CHAPTERFLD )->UpdateFlds(); - GetDoc()->ChkCondColls(); -} +//void SwNodes::UpdateOutlineNode( const SwNode& rNd, BYTE nOldLevel, //#outline level,removed by zhaojianwei +// BYTE nNewLevel ) +//{ +// const SwNodePtr pSrch = (SwNodePtr)&rNd; +// USHORT nSttPos; +// BOOL bSeekIdx = pOutlineNds->Seek_Entry( pSrch, &nSttPos ); +// +// //if( NO_NUMBERING == nOldLevel ) //#outline level,zhaojianwei +// if( 0 == nOldLevel ) //<-end, zhaojianwei +// { +// // nicht vorhanden, also einfuegen +// //ASSERT( !bSeekIdx, "Der Node ist schon als OutlineNode vorhanden" ); +// +// //JP 12.03.99: 63293 - Nodes vom RedlineBereich NIE aufnehmen +// ULONG nNd = rNd.GetIndex(); +// if( nNd < GetEndOfRedlines().GetIndex() && +// nNd > GetEndOfRedlines().StartOfSectionNode()->GetIndex() ) +// return ; +// +// // jetzt noch alle nachfolgende Outline-Nodes updaten +// if (! bSeekIdx) +// { +// // --> OD 2005-11-03 #125329# +// // assure that node <pSrch> is in the correct nodes array +// if ( &(pSrch->GetNodes()) == this ) +// { +// pOutlineNds->Insert( pSrch ); +// } +// else +// { +// ASSERT( false, +// "<SwNodes::UpdateOutlineNode(..)> - node <pSrch> isn't in correct nodes array. This is a serious defect -> inform OD" ); +// } +// // <-- +// } +// +// } +// //else if( NO_NUMBERING == nNewLevel ) //#outline level,removed by zhaojianwei +// else if( 0 == nNewLevel ) //<-end,added by zhaojianwei // Level entfernen +// { +// if( !bSeekIdx ) +// return; +// +// // jetzt noch alle nachfolgende Outline-Nodes updaten +// pOutlineNds->Remove( nSttPos ); +// } +// else if( !bSeekIdx ) // Update und Index nicht gefunden ?? +// return ; +// +// { +// SwTxtNode & rTxtNd = (SwTxtNode &) rNd; +// SwPaM aPam(rTxtNd); // #115901# +// +// //if (nNewLevel != NO_NUMBERING) //#outline level,zhaojianwei // #115901# +// if (nNewLevel != 0) //<-end,zhaojianwei // #115901# +// { +// //rTxtNd.SetLevel(rTxtNd.GetTxtColl()->GetOutlineLevel()); //#outline level,zhaojianwei +// //rTxtNd.NumRuleChgd(); +// if(rTxtNd.GetTxtColl()->IsAssignedToListLevelOfOutlineStyle()) +// { +// rTxtNd.SetLevel(rTxtNd.GetTxtColl()->GetAssignedOutlineStyleLevel()); +// rTxtNd.NumRuleChgd(); +// }//<-end,zhaojianwei +// +// //GetDoc()->SetNumRule(aPam, *GetDoc()->GetOutlineNumRule()); +// } +// else +// { +// GetDoc()->DelNumRules(aPam); +// } +// } +// +// // die Gliederungs-Felder Updaten +// GetDoc()->GetSysFldType( RES_CHAPTERFLD )->UpdateFlds(); +// GetDoc()->ChkCondColls(); +//}//<-end,zhaojianwei void SwNodes::UpdtOutlineIdx( const SwNode& rNd ) { diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx index 8763f53ac627..1e1bcd55022a 100644 --- a/sw/source/core/docnode/ndtbl.cxx +++ b/sw/source/core/docnode/ndtbl.cxx @@ -344,7 +344,8 @@ BOOL SwNodes::InsBoxen( SwTableNode* pTblNd, pPrvBox = new SwTableBox( pBoxFmt, *pSttNd, pLine ); pLine->GetTabBoxes().C40_INSERT( SwTableBox, pPrvBox, nInsPos + n ); - if( NO_NUMBERING == pTxtColl->GetOutlineLevel() + //if( NO_NUMBERING == pTxtColl->GetOutlineLevel()//#outline level,zhaojianwei + if( ! pTxtColl->IsAssignedToListLevelOfOutlineStyle()//<-end,zhaojianwei //FEATURE::CONDCOLL && RES_CONDTXTFMTCOLL != pTxtColl->Which() //FEATURE::CONDCOLL diff --git a/sw/source/core/docnode/node.cxx b/sw/source/core/docnode/node.cxx index 226593bc7ffd..00b4a3ec869c 100644 --- a/sw/source/core/docnode/node.cxx +++ b/sw/source/core/docnode/node.cxx @@ -880,8 +880,10 @@ const SwTxtNode* SwNode::FindOutlineNodeOfLevel( BYTE nLvl ) const else { // oder ans Feld und von dort holen !! - while( nPos && nLvl < ( pRet = rONds[nPos]->GetTxtNode() ) - ->GetTxtColl()->GetOutlineLevel() ) + while( nPos && + nLvl < ( pRet = rONds[nPos]->GetTxtNode() ) + //->GetTxtColl()->GetOutlineLevel() )//#outline level,zhaojianwei + ->GetAttrOutlineLevel() - 1 ) //<-end,zhaojianwei --nPos; if( !nPos ) // bei 0 gesondert holen !! @@ -1998,7 +2000,7 @@ BOOL SwCntntNode::IsAnyCondition( SwCollCondition& rTmp ) const if( pOutlNd->IsOutline()) { - rTmp.SetCondition( PARA_IN_OUTLINE, pOutlNd->GetOutlineLevel() ); + rTmp.SetCondition( PARA_IN_OUTLINE, pOutlNd->GetAttrOutlineLevel() - 1 ); return TRUE; } } diff --git a/sw/source/core/docnode/nodes.cxx b/sw/source/core/docnode/nodes.cxx index 2488b1fd285a..ef39f7ced4a4 100644 --- a/sw/source/core/docnode/nodes.cxx +++ b/sw/source/core/docnode/nodes.cxx @@ -188,7 +188,8 @@ void SwNodes::ChgNode( SwNodeIndex& rDelPos, ULONG nSz, pTxtNode->RemoveFromList(); // <-- - if ( pTxtNode->GetTxtColl()->GetOutlineLevel() != NO_NUMBERING ) + //if ( pTxtNode->GetTxtColl()->GetOutlineLevel() != NO_NUMBERING )//#outline level,zhaojianwei + if ( pTxtNode->GetAttrOutlineLevel() != 0 )//<-end,zhaojianwei { const SwNodePtr pSrch = (SwNodePtr)&rNd; pOutlineNds->Remove( pSrch ); @@ -207,7 +208,8 @@ void SwNodes::ChgNode( SwNodeIndex& rDelPos, ULONG nSz, // <-- if( bInsOutlineIdx && - NO_NUMBERING != rTxtNd.GetTxtColl()->GetOutlineLevel() ) + //NO_NUMBERING != rTxtNd.GetTxtColl()->GetOutlineLevel() )//#outline level,zhaojianwei + 0 != rTxtNd.GetAttrOutlineLevel() )//<-end,zhaojianwei { const SwNodePtr pSrch = (SwNodePtr)&rNd; pOutlineNds->Insert( pSrch ); @@ -248,7 +250,8 @@ void SwNodes::ChgNode( SwNodeIndex& rDelPos, ULONG nSz, SwTxtNode* pTxtNd = (SwTxtNode*)pNd; // loesche die Gliederungs-Indizies aus dem alten Nodes-Array - if( NO_NUMBERING != pTxtNd->GetTxtColl()->GetOutlineLevel() ) + //if( NO_NUMBERING != pTxtNd->GetTxtColl()->GetOutlineLevel() )//#outline level,zhaojianwei + if( 0 != pTxtNd->GetAttrOutlineLevel() )//<-end,zhaojianwei pOutlineNds->Remove( pNd ); // muss die Rule kopiere werden? @@ -287,9 +290,13 @@ void SwNodes::ChgNode( SwNodeIndex& rDelPos, ULONG nSz, { const SwpHints* pHts = pTxtNd->GetpSwpHints(); // setze die OultineNodes im neuen Nodes-Array - if( bInsOutlineIdx && NO_NUMBERING != - pTxtNd->GetTxtColl()->GetOutlineLevel() ) + //if( bInsOutlineIdx && NO_NUMBERING != //#outline level,removed by zhaojianwei + // pTxtNd->GetTxtColl()->GetOutlineLevel() ) + if( bInsOutlineIdx && + 0 != pTxtNd->GetAttrOutlineLevel() ) //#outline level,added by zhaojianwei + { rNds.pOutlineNds->Insert( pTxtNd ); + } // --> OD 2008-03-13 #refactorlists# // pTxtNd->SyncNumberAndNumRule(); @@ -554,8 +561,10 @@ BOOL SwNodes::_MoveNodes( const SwNodeRange& aRange, SwNodes & rNodes, // setze bei Start/EndNodes die richtigen Indizies // loesche die Gliederungs-Indizies aus // dem alten Nodes-Array - if( pCNd->IsTxtNode() && NO_NUMBERING != - ((SwTxtNode*)pCNd)->GetTxtColl()->GetOutlineLevel() ) + //if( pCNd->IsTxtNode() && NO_NUMBERING != //#outline level,zhaojianwei + // ((SwTxtNode*)pCNd)->GetTxtColl()->GetOutlineLevel() ) + if( pCNd->IsTxtNode() && 0 != + ((SwTxtNode*)pCNd)->GetAttrOutlineLevel() )//<-end,by zhaojianwei pOutlineNds->Remove( pCNd ); else pCNd = 0; @@ -593,8 +602,10 @@ BOOL SwNodes::_MoveNodes( const SwNodeRange& aRange, SwNodes & rNodes, ((SwSectionNode*)pNd)->DelFrms(); } */ - BOOL bOutlNd = pNd->IsTxtNode() && NO_NUMBERING != - ((SwTxtNode*)pNd)->GetTxtColl()->GetOutlineLevel(); + //BOOL bOutlNd = pNd->IsTxtNode() && NO_NUMBERING !=//#outline level,zhaojianwei + // ((SwTxtNode*)pNd)->GetTxtColl()->GetOutlineLevel(); + const bool bOutlNd = pNd->IsTxtNode() && + 0 != ((SwTxtNode*)pNd)->GetAttrOutlineLevel();//<-end,zhaojianwei // loesche die Gliederungs-Indizies aus // dem alten Nodes-Array if( bOutlNd ) @@ -1280,9 +1291,10 @@ void SwNodes::Delete(const SwNodeIndex &rIndex, ULONG nNodes) if( pNd->IsTxtNode() ) { - if( NO_NUMBERING != - ((SwTxtNode*)pNd)->GetTxtColl()->GetOutlineLevel() && - pOutlineNds->Seek_Entry( pNd, &nIdxPos )) + //if( NO_NUMBERING != //#outline level,zhaojianwei + // ((SwTxtNode*)pNd)->GetTxtColl()->GetOutlineLevel() && + if( 0 != ((SwTxtNode*)pNd)->GetAttrOutlineLevel() &&//<-end,zhaojianwei + pOutlineNds->Seek_Entry( pNd, &nIdxPos )) { // loesche die Gliederungs-Indizies. pOutlineNds->Remove( nIdxPos ); @@ -1669,7 +1681,8 @@ void SwNodes::DelNodes( const SwNodeIndex & rStart, ULONG nCnt ) SwNode* pNd = (*this)[ n ]; if( pNd->IsTxtNode() && - NO_NUMBERING != ((SwTxtNode*)pNd)->GetTxtColl()->GetOutlineLevel() ) + //NO_NUMBERING != ((SwTxtNode*)pNd)->GetTxtColl()->GetOutlineLevel() )//#outline level,zhaojianwei + 0 != ((SwTxtNode*)pNd)->GetAttrOutlineLevel() ) //<-end,zhaojianwei { // loesche die Gliederungs-Indizies. USHORT nIdxPos; if( pOutlineNds->Seek_Entry( pNd, &nIdxPos )) diff --git a/sw/source/core/edit/acorrect.cxx b/sw/source/core/edit/acorrect.cxx index 4894ee5f1cc6..dfe258def74d 100644 --- a/sw/source/core/edit/acorrect.cxx +++ b/sw/source/core/edit/acorrect.cxx @@ -284,8 +284,8 @@ const String* SwAutoCorrDoc::GetPrevPara( BOOL bAtNormalPos ) (*pIdx)--; pTNd = pIdx->GetNode().GetTxtNode(); } - - if( pTNd && NO_NUMBERING == pTNd->GetTxtColl()->GetOutlineLevel() ) + //if( pTNd && NO_NUMBERING == pTNd->GetTxtColl()->GetOutlineLevel() ) + if( pTNd && 0 == pTNd->GetAttrOutlineLevel() )//#outline level,zhaojianwei pStr = &pTNd->GetTxt(); if( bUndoIdInitialized ) diff --git a/sw/source/core/edit/ednumber.cxx b/sw/source/core/edit/ednumber.cxx index 1e4d20855c72..b25804eadfc4 100644 --- a/sw/source/core/edit/ednumber.cxx +++ b/sw/source/core/edit/ednumber.cxx @@ -392,6 +392,19 @@ BOOL SwEditShell::MoveParagraph( long nOffset ) return bRet; } +//#outline level add by zhaojianwei +int SwEditShell::GetCurrentParaOutlineLevel( ) const +{ + int nLevel = 0; + + SwPaM* pCrsr = GetCrsr(); + const SwTxtNode* pTxtNd = pCrsr->GetNode()->GetTxtNode(); + if( pTxtNd ) + nLevel = pTxtNd->GetAttrOutlineLevel(); + return nLevel; +} +//<-end,zhaojianwei + void SwEditShell::GetCurrentOutlineLevels( sal_uInt8& rUpper, sal_uInt8& rLower ) { SwPaM* pCrsr = GetCrsr(); @@ -547,11 +560,14 @@ BOOL SwEditShell::IsProtectedOutlinePara() const for( ; nPos < rOutlNd.Count(); ++nPos ) { SwNodePtr pTmpNd = rOutlNd[ nPos ]; + // --> OD 2008-04-02 #refactorlists# // BYTE nTmpLvl = GetRealLevel( pTmpNd->GetTxtNode()-> // GetTxtColl()->GetOutlineLevel() ); - int nTmpLvl = pTmpNd->GetTxtNode()->GetOutlineLevel(); - ASSERT( nTmpLvl >= 0 && nTmpLvl < MAXLEVEL, + // int nTmpLvl = pTmpNd->GetTxtNode()->GetOutlineLevel();//#outline level,zhaojianwei + int nTmpLvl = pTmpNd->GetTxtNode()->GetAttrOutlineLevel(); + // ASSERT( nTmpLvl >= 0 && nTmpLvl < MAXLEVEL, + ASSERT( nTmpLvl >= 0 && nTmpLvl <= MAXLEVEL, //<-end,zhaojianwei "<SwEditShell::IsProtectedOutlinePara()>" ); // <-- if( bFirst ) @@ -644,7 +660,8 @@ BOOL SwEditShell::IsNoNum( BOOL bChkStart ) const BYTE SwEditShell::GetNumLevel() const { // gebe die akt. Ebene zurueck, auf der sich der Point vom Cursor befindet - BYTE nLevel = NO_NUMBERING; + //BYTE nLevel = NO_NUMBERING; //#outline level,zhaojianwei + BYTE nLevel = MAXLEVEL; //end,zhaojianwei SwPaM* pCrsr = GetCrsr(); const SwTxtNode* pTxtNd = pCrsr->GetNode()->GetTxtNode(); diff --git a/sw/source/core/fields/chpfld.cxx b/sw/source/core/fields/chpfld.cxx index 58bfc8049b6f..ed5caed87bfb 100644 --- a/sw/source/core/fields/chpfld.cxx +++ b/sw/source/core/fields/chpfld.cxx @@ -156,13 +156,18 @@ void SwChapterField::ChangeExpansion(const SwTxtNode &rTxtNd, sal_Bool bSrchNum) if( pONd && pONd->GetTxtColl() ) { BYTE nPrevLvl = nLevel; + // --> OD 2008-04-02 #refactorlists# // nLevel = GetRealLevel( pONd->GetTxtColl()-> // GetOutlineLevel() ); - ASSERT( pONd->GetOutlineLevel() >= 0 && pONd->GetOutlineLevel() < MAXLEVEL, + //ASSERT( pONd->GetOutlineLevel() >= 0 && pONd->GetOutlineLevel() < MAXLEVEL, //#outline level,zhaojianwei + // "<SwChapterField::ChangeExpansion(..)> - outline node with inconsistent outline level. Serious defect -> please inform OD." ); + //nLevel = static_cast<BYTE>(pONd->GetOutlineLevel()); + ASSERT( pONd->GetAttrOutlineLevel() >= 0 && pONd->GetAttrOutlineLevel() <= MAXLEVEL, "<SwChapterField::ChangeExpansion(..)> - outline node with inconsistent outline level. Serious defect -> please inform OD." ); - nLevel = static_cast<BYTE>(pONd->GetOutlineLevel()); + nLevel = static_cast<BYTE>(pONd->GetAttrOutlineLevel()); //<-end,zhaojianwei // <-- + if( nPrevLvl < nLevel ) nLevel = nPrevLvl; else if( SVX_NUM_NUMBER_NONE != pDoc->GetOutlineNumRule() diff --git a/sw/source/core/text/EnhancedPDFExportHelper.cxx b/sw/source/core/text/EnhancedPDFExportHelper.cxx index d274dd2bcaf2..57d32e9e13e3 100644 --- a/sw/source/core/text/EnhancedPDFExportHelper.cxx +++ b/sw/source/core/text/EnhancedPDFExportHelper.cxx @@ -1161,8 +1161,9 @@ void SwTaggedPDFHelper::BeginBlockStructureElements() // if ( pTxtNd->IsOutline() ) { - int nRealLevel = pTxtNd->GetOutlineLevel(); - nRealLevel = nRealLevel > 5 ? 5 : nRealLevel; + //int nRealLevel = pTxtNd->GetOutlineLevel(); //#outline level,zhaojianwei + int nRealLevel = pTxtNd->GetAttrOutlineLevel()-1; //<-end,zhaojianwei + nRealLevel = nRealLevel > 5 ? 5 : nRealLevel; nPDFType = static_cast<USHORT>(vcl::PDFWriter::H1 + nRealLevel); switch(nRealLevel) diff --git a/sw/source/core/tox/txmsrt.cxx b/sw/source/core/tox/txmsrt.cxx index afe9f1ef5041..555ff8e39171 100644 --- a/sw/source/core/tox/txmsrt.cxx +++ b/sw/source/core/tox/txmsrt.cxx @@ -696,9 +696,12 @@ USHORT SwTOXPara::GetLevel() const if( nsSwTOXElement::TOX_OUTLINELEVEL == eType && pNd->GetTxtNode() ) { - USHORT nTmp = ((SwTxtNode*)pNd)->GetTxtColl()->GetOutlineLevel(); - if(nTmp < NO_NUMBERING) - nRet = nTmp + 1; + //USHORT nTmp = ((SwTxtNode*)pNd)->GetTxtColl()->GetOutlineLevel();//#outline level,zhaojianwei + //if(nTmp < NO_NUMBERING) + // nRet = nTmp + 1; + const int nTmp = ((SwTxtNode*)pNd)->GetAttrOutlineLevel();//#outline level,zhaojianwei???? + if(nTmp != 0 ) + nRet = static_cast<USHORT>(nTmp); } return nRet; } @@ -715,7 +718,8 @@ String SwTOXPara::GetURL() const { const SwTxtNode * pTxtNd = static_cast<const SwTxtNode *>(pNd); - if( MAXLEVEL >= pTxtNd->GetTxtColl()->GetOutlineLevel()) + //if( MAXLEVEL >= pTxtNd->GetTxtColl()->GetOutlineLevel()) //#outline level,zhaojianwei + if ( pTxtNd->GetAttrOutlineLevel() > 0) //<-end,zhaojianwei { aTxt = '#'; const SwNumRule * pRule = pTxtNd->GetNumRule(); diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx index dd8af9d15a62..11e793e1b394 100644 --- a/sw/source/core/txtnode/ndtxt.cxx +++ b/sw/source/core/txtnode/ndtxt.cxx @@ -94,6 +94,11 @@ #include <SwStyleNameMapper.hxx> #include <numrule.hxx> +//--> #outlinelevel added by zhaojianwei +#ifndef _SFXINTITEM_HXX +#include <svtools/intitem.hxx> +#endif +//<--end #include <swtable.hxx> #include <docsh.hxx> #include <SwNodeNum.hxx> @@ -133,11 +138,15 @@ SwTxtNode *SwNodes::MakeTxtNode( const SwNodeIndex & rWhere, // call method <UpdateOutlineNode(..)> only for the document nodes array if ( IsDocNodes() ) { - if ( pColl && NO_NUMBERING != pColl->GetOutlineLevel() ) - { - UpdateOutlineNode( *pNode, NO_NUMBERING, pColl->GetOutlineLevel() ); - } - else + //if ( pColl && NO_NUMBERING != pColl->GetOutlineLevel() ) //#outline level,removed by zhaojianwei + //{ + // UpdateOutlineNode( *pNode, NO_NUMBERING, pColl->GetOutlineLevel() ); + //} +// if ( pColl && 0 != pColl->GetAttrOutlineLevel() )//#outline level,added by zhaojianwei +// { +// UpdateOutlineNode( *pNode, 0, pColl->GetAttrOutlineLevel() ); +// }//<--end +// else { UpdateOutlineNode(*pNode); } @@ -230,7 +239,10 @@ SwTxtNode::SwTxtNode( const SwNodeIndex &rWhere, mpNodeNum( 0 ), bNotifiable( false ), bLastOutlineState( FALSE ), - nOutlineLevel( pTxtColl->GetOutlineLevel() ), + //nOutlineLevel( pTxtColl->GetOutlineLevel() )//#outline level, removed by zhaojianwei. + // --> OD 2008-11-19 #i70748# + mbEmptyListStyleSetDueToSetOutlineLevelAttr( false ), + // <-- // --> OD 2008-05-06 #refactorlists# mbInSetOrResetAttr( false ), mpList( 0 ) @@ -1050,10 +1062,15 @@ void SwTxtNode::_ChgTxtCollUpdateNum( const SwTxtFmtColl *pOldColl, ASSERT( pDoc, "Kein Doc?" ); // erfrage die OutlineLevel und update gegebenenfalls das Nodes-Array, // falls sich die Level geaendert haben ! - const BYTE nOldLevel = pOldColl ? pOldColl->GetOutlineLevel():NO_NUMBERING; - const BYTE nNewLevel = pNewColl ? pNewColl->GetOutlineLevel():NO_NUMBERING; - - if ( NO_NUMBERING != nNewLevel ) + //const BYTE nOldLevel = pOldColl ? pOldColl->GetOutlineLevel():NO_NUMBERING;//#outline level,removed by zhaojianwei + //const BYTE nNewLevel = pNewColl ? pNewColl->GetOutlineLevel():NO_NUMBERING;//<-end,zhaojianwei + const int nOldLevel = pOldColl && pOldColl->IsAssignedToListLevelOfOutlineStyle() ? + pOldColl->GetAssignedOutlineStyleLevel() : MAXLEVEL; + const int nNewLevel = pNewColl && pNewColl->IsAssignedToListLevelOfOutlineStyle() ? + pNewColl->GetAssignedOutlineStyleLevel() : MAXLEVEL; + +// if ( NO_NUMBERING != nNewLevel ) //#outline level,zhaojianwei + if ( MAXLEVEL != nNewLevel ) //<-end,zhaojianwei { SetAttrListLevel(nNewLevel); } @@ -1063,9 +1080,10 @@ void SwTxtNode::_ChgTxtCollUpdateNum( const SwTxtFmtColl *pOldColl, pDoc->GetNodes().UpdateOutlineNode(*this); } + SwNodes& rNds = GetNodes(); // Update beim Level 0 noch die Fussnoten !! - if( (!nNewLevel || !nOldLevel) && pDoc->GetFtnIdxs().Count() && + if( ( !nNewLevel || !nOldLevel) && pDoc->GetFtnIdxs().Count() && FTNNUM_CHAPTER == pDoc->GetFtnInfo().eNum && rNds.IsDocNodes() ) { @@ -2750,7 +2768,7 @@ long SwTxtNode::GetLeftMarginForTabCalculation() const long nLeftMarginForTabCalc = 0; bool bLeftMarginForTabCalcSetToListLevelIndent( false ); - const SwNumRule* pRule = GetNum() ? GetNum()->GetNumRule() : 0L; + const SwNumRule* pRule = GetNum() ? GetNum()->GetNumRule() : 0; if( pRule ) { const SwNumFmt& rFmt = pRule->Get(static_cast<USHORT>(GetActualListLevel())); @@ -3245,46 +3263,114 @@ namespace { bParagraphStyleChanged = true; if( rTxtNode.GetNodes().IsDocNodes() ) { + // --> OD 2008-12-17 #i70748# + // The former list style set at the paragraph can not be + // retrieved from the change set. +// sOldNumRule = +// dynamic_cast<const SwFmtChg*>(pOldValue)->pChangedFmt->GetNumRule().GetValue(); + const SwNumRule* pFormerNumRuleAtTxtNode = + rTxtNode.GetNum() ? rTxtNode.GetNum()->GetNumRule() : 0; + if ( pFormerNumRuleAtTxtNode ) + { + sOldNumRule = pFormerNumRuleAtTxtNode->GetName(); + } + // <-- + // --> OD 2008-11-19 #i70748# + if ( rTxtNode.IsEmptyListStyleDueToSetOutlineLevelAttr() ) + { + const SwNumRuleItem& rNumRuleItem = rTxtNode.GetTxtColl()->GetNumRule(); + if ( rNumRuleItem.GetValue().Len() > 0 ) + { + rTxtNode.ResetEmptyListStyleDueToResetOutlineLevelAttr(); + } + } + // <-- const SwNumRule* pNumRuleAtTxtNode = rTxtNode.GetNumRule(); if ( pNumRuleAtTxtNode ) { bNumRuleSet = true; sNumRule = pNumRuleAtTxtNode->GetName(); } - sOldNumRule = - dynamic_cast<const SwFmtChg*>(pOldValue)->pChangedFmt->GetNumRule().GetValue(); } break; } case RES_ATTRSET_CHG: { const SfxPoolItem* pItem = 0; + // --> OD 2008-12-19 #i70748# + // The former list style set at the paragraph can not be + // retrieved from the change set. +// if ( dynamic_cast<const SwAttrSetChg*>(pOldValue)->GetChgSet()->GetItemState( RES_PARATR_NUMRULE, FALSE, &pItem ) == +// SFX_ITEM_SET ) +// { +// sOldNumRule = dynamic_cast<const SwNumRuleItem*>(pItem)->GetValue(); +// } + const SwNumRule* pFormerNumRuleAtTxtNode = + rTxtNode.GetNum() ? rTxtNode.GetNum()->GetNumRule() : 0; + if ( pFormerNumRuleAtTxtNode ) + { + sOldNumRule = pFormerNumRuleAtTxtNode->GetName(); + } + // <-- if ( dynamic_cast<const SwAttrSetChg*>(pNewValue)->GetChgSet()->GetItemState( RES_PARATR_NUMRULE, FALSE, &pItem ) == SFX_ITEM_SET ) { + // --> OD 2008-11-19 #i70748# + rTxtNode.ResetEmptyListStyleDueToResetOutlineLevelAttr(); + // <-- bNumRuleSet = true; - sNumRule = dynamic_cast<const SwNumRuleItem*>(pItem)->GetValue(); + // The new list style set at the paragraph can not be + // retrieved from the change set. +// sNumRule = dynamic_cast<const SwNumRuleItem*>(pItem)->GetValue(); + // <-- } - if ( dynamic_cast<const SwAttrSetChg*>(pOldValue)->GetChgSet()->GetItemState( RES_PARATR_NUMRULE, FALSE, &pItem ) == - SFX_ITEM_SET ) + // --> OD 2008-12-17 #i70748# + // The new list style set at the paragraph. + const SwNumRule* pNumRuleAtTxtNode = rTxtNode.GetNumRule(); + if ( pNumRuleAtTxtNode ) { - sOldNumRule = dynamic_cast<const SwNumRuleItem*>(pItem)->GetValue(); + sNumRule = pNumRuleAtTxtNode->GetName(); } + // <-- break; } case RES_PARATR_NUMRULE: { if ( rTxtNode.GetNodes().IsDocNodes() ) { + // The former list style set at the paragraph can not be + // retrieved from the change set. +// if ( pOldValue ) +// { +// sOldNumRule = dynamic_cast<const SwNumRuleItem*>(pOldValue)->GetValue(); +// } + const SwNumRule* pFormerNumRuleAtTxtNode = + rTxtNode.GetNum() ? rTxtNode.GetNum()->GetNumRule() : 0; + if ( pFormerNumRuleAtTxtNode ) + { + sOldNumRule = pFormerNumRuleAtTxtNode->GetName(); + } + // <-- if ( pNewValue ) { + // --> OD 2008-11-19 #i70748# + rTxtNode.ResetEmptyListStyleDueToResetOutlineLevelAttr(); + // <-- bNumRuleSet = true; - sNumRule = dynamic_cast<const SwNumRuleItem*>(pNewValue)->GetValue(); + // --> OD 2008-12-17 #i70748# + // The new list style set at the paragraph can not be + // retrieved from the change set. +// sNumRule = dynamic_cast<const SwNumRuleItem*>(pNewValue)->GetValue(); + // <-- } - if ( pOldValue ) + // --> OD 2008-12-17 #i70748# + // The new list style set at the paragraph. + const SwNumRule* pNumRuleAtTxtNode = rTxtNode.GetNumRule(); + if ( pNumRuleAtTxtNode ) { - sOldNumRule = dynamic_cast<const SwNumRuleItem*>(pOldValue)->GetValue(); + sNumRule = pNumRuleAtTxtNode->GetName(); } + // <-- } break; } @@ -3321,8 +3407,12 @@ namespace { if ( sNumRule == String::CreateFromAscii( SwNumRule::GetOutlineRuleName() ) ) { + // --> OD 2008-09-10 #i70748# + ASSERT( rTxtNode.GetTxtColl()->IsAssignedToListLevelOfOutlineStyle(), + "<HandleModifyAtTxtNode()> - text node with outline style, but its paragraph style is not assigned to outline style." ); int nNewListLevel = - rTxtNode.GetTxtColl()->GetOutlineLevel(); + rTxtNode.GetTxtColl()->GetAssignedOutlineStyleLevel(); + // <-- if ( 0 <= nNewListLevel && nNewListLevel < MAXLEVEL ) { rTxtNode.SetAttrListLevel( nNewListLevel ); @@ -3349,6 +3439,12 @@ namespace { &aResetAttrsArray, false ); // <-- + // --> OD 2008-11-19 #i70748# + if ( dynamic_cast<const SfxUInt16Item &>(rTxtNode.GetAttr( RES_PARATR_OUTLINELEVEL, FALSE )).GetValue() > 0 ) + { + rTxtNode.SetEmptyListStyleDueToSetOutlineLevelAttr(); + } + // <-- } } } @@ -3484,7 +3580,8 @@ BOOL SwTxtNode::IsOutline() const { BOOL bResult = FALSE; - if ( GetOutlineLevel() != NO_NUMBERING ) + //if ( GetOutlineLevel() != NO_NUMBERING )//#outline level,removed by zhaojianwei + if ( GetAttrOutlineLevel() > 0 ) //<-end,zhaojianwei { bResult = !IsInRedlines(); } @@ -3510,21 +3607,47 @@ void SwTxtNode::UpdateOutlineState() bLastOutlineState = IsOutline(); } -int SwTxtNode::GetOutlineLevel() const +//#outline level, zhaojianwei +int SwTxtNode::GetAttrOutlineLevel() const { -#if 1 - int aResult = NO_NUMBERING; + return ((const SfxUInt16Item &)GetAttr(RES_PARATR_OUTLINELEVEL)).GetValue(); +} +void SwTxtNode::SetAttrOutlineLevel(int nLevel) +{ + ASSERT( 0 <= nLevel && nLevel <= MAXLEVEL ,"SwTxtNode: Level Out Of Range" );//#outline level,zhaojianwei + if ( 0 <= nLevel && nLevel <= MAXLEVEL ) + { + SetAttr( SfxUInt16Item( RES_PARATR_OUTLINELEVEL, + static_cast<UINT16>(nLevel) ) ); + } +} +//<-end - SwFmtColl * pFmtColl = GetFmtColl(); +// --> OD 2008-11-19 #i70748# +bool SwTxtNode::IsEmptyListStyleDueToSetOutlineLevelAttr() +{ + return mbEmptyListStyleSetDueToSetOutlineLevelAttr; +} - if (pFmtColl) - aResult = ((SwTxtFmtColl *) pFmtColl)->GetOutlineLevel(); +void SwTxtNode::SetEmptyListStyleDueToSetOutlineLevelAttr() +{ + if ( !mbEmptyListStyleSetDueToSetOutlineLevelAttr ) + { + SetAttr( SwNumRuleItem() ); + mbEmptyListStyleSetDueToSetOutlineLevelAttr = true; + } +} - return aResult; -#else // for OOo3 - return nOutlineLevel -#endif +void SwTxtNode::ResetEmptyListStyleDueToResetOutlineLevelAttr() +{ + if ( mbEmptyListStyleSetDueToSetOutlineLevelAttr ) + { + ResetAttr( RES_PARATR_NUMRULE ); + mbEmptyListStyleSetDueToSetOutlineLevelAttr = false; + } } +// <-- + // --> OD 2008-02-27 #refactorlists# void SwTxtNode::SetAttrListLevel( int nLevel ) @@ -4061,6 +4184,7 @@ namespace { // is set and changed after the attributes have been set // (6) Notify list tree, if count in list - RES_PARATR_LIST_ISCOUNTED - is set // and changed after the attributes have been set + // (7) Set or Reset emtpy list style due to changed outline level - RES_PARATR_OUTLINELEVEL. class HandleSetAttrAtTxtNode { public: @@ -4076,6 +4200,9 @@ namespace { bool mbUpdateListLevel; bool mbUpdateListRestart; bool mbUpdateListCount; + // --> OD 2008-11-19 #i70748# + bool mbOutlineLevelSet; + // <-- }; HandleSetAttrAtTxtNode::HandleSetAttrAtTxtNode( SwTxtNode& rTxtNode, @@ -4084,7 +4211,10 @@ namespace { mbAddTxtNodeToList( false ), mbUpdateListLevel( false ), mbUpdateListRestart( false ), - mbUpdateListCount( false ) + mbUpdateListCount( false ), + // --> OD 2008-11-19 #i70748# + mbOutlineLevelSet( false ) + // <-- { switch ( pItem.Which() ) { @@ -4175,6 +4305,20 @@ namespace { } } break; + + // --> OD 2008-11-19 #i70748# + // handle RES_PARATR_OUTLINELEVEL + case RES_PARATR_OUTLINELEVEL: + { + const SfxUInt16Item& aOutlineLevelItem = + dynamic_cast<const SfxUInt16Item&>(pItem); + if ( aOutlineLevelItem.GetValue() != mrTxtNode.GetAttrOutlineLevel() ) + { + mbOutlineLevelSet = true; + } + } + break; + // <-- } } @@ -4185,7 +4329,10 @@ namespace { mbAddTxtNodeToList( false ), mbUpdateListLevel( false ), mbUpdateListRestart( false ), - mbUpdateListCount( false ) + mbUpdateListCount( false ), + // --> OD 2008-11-19 #i70748# + mbOutlineLevelSet( false ) + // <-- { const SfxPoolItem* pItem = 0; // handle RES_PARATR_NUMRULE @@ -4198,6 +4345,9 @@ namespace { if ( pNumRuleItem->GetValue().Len() > 0 ) { mbAddTxtNodeToList = true; + // --> OD 2008-11-19 #i70748# + mrTxtNode.ResetEmptyListStyleDueToResetOutlineLevelAttr(); + // <-- } } @@ -4269,6 +4419,19 @@ namespace { mbUpdateListCount = true; } } + + // --> OD 2008-11-19 #i70748# + // handle RES_PARATR_OUTLINELEVEL + if ( rItemSet.GetItemState( RES_PARATR_OUTLINELEVEL, FALSE, &pItem ) == SFX_ITEM_SET ) + { + const SfxUInt16Item* pOutlineLevelItem = + dynamic_cast<const SfxUInt16Item*>(pItem); + if ( pOutlineLevelItem->GetValue() != mrTxtNode.GetAttrOutlineLevel() ) + { + mbOutlineLevelSet = true; + } + } + // <-- } HandleSetAttrAtTxtNode::~HandleSetAttrAtTxtNode() @@ -4301,6 +4464,26 @@ namespace { const_cast<SwNodeNum*>(mrTxtNode.GetNum())->InvalidateAndNotifyTree(); } } + + // --> OD 2008-11-19 #i70748# + if ( mbOutlineLevelSet ) + { + if ( mrTxtNode.GetAttrOutlineLevel() == 0 ) + { + mrTxtNode.ResetEmptyListStyleDueToResetOutlineLevelAttr(); + } + else + { + const SfxPoolItem* pItem = 0; + if ( mrTxtNode.GetSwAttrSet().GetItemState( RES_PARATR_NUMRULE, + TRUE, &pItem ) + != SFX_ITEM_SET ) + { + mrTxtNode.SetEmptyListStyleDueToSetOutlineLevelAttr(); + } + } + } + // <-- } // End of class <HandleSetAttrAtTxtNode> } @@ -4349,6 +4532,7 @@ namespace { // (4) Notify list tree, if list restart - RES_PARATR_LIST_ISRESTART - is reset. // (5) Notify list tree, if list restart value - RES_PARATR_LIST_RESTARTVALUE - is reset. // (6) Notify list tree, if count in list - RES_PARATR_LIST_ISCOUNTED - is reset. + // (7) Reset empty list style, if outline level attribute - RES_PARATR_OUTLINELEVEL - is reset. class HandleResetAttrAtTxtNode { public: @@ -4415,6 +4599,14 @@ namespace { ( nWhich1 <= RES_PARATR_LIST_ISCOUNTED && RES_PARATR_LIST_ISCOUNTED <= nWhich2 && !mrTxtNode.IsCountedInList() ); } + + // --> OD 2008-11-19 #i70748# + // RES_PARATR_OUTLINELEVEL + if ( nWhich1 <= RES_PARATR_OUTLINELEVEL && RES_PARATR_OUTLINELEVEL <= nWhich2 ) + { + mrTxtNode.ResetEmptyListStyleDueToResetOutlineLevelAttr(); + } + // <-- } else { @@ -4432,6 +4624,13 @@ namespace { mbListStyleOrIdReset = true; // <-- } + // --> OD 2008-11-19 #i70748# + // RES_PARATR_OUTLINELEVEL + else if ( nWhich1 == RES_PARATR_OUTLINELEVEL ) + { + mrTxtNode.ResetEmptyListStyleDueToResetOutlineLevelAttr(); + } + // <-- if ( !bRemoveFromList ) { @@ -4486,6 +4685,13 @@ namespace { mbListStyleOrIdReset = true; // <-- } + // --> OD 2008-11-19 #i70748# + // RES_PARATR_OUTLINELEVEL + else if ( rWhichArr[ n ] == RES_PARATR_OUTLINELEVEL ) + { + mrTxtNode.ResetEmptyListStyleDueToResetOutlineLevelAttr(); + } + // <-- if ( !bRemoveFromList ) { @@ -4527,6 +4733,9 @@ namespace { { rTxtNode.RemoveFromList(); } + // --> OD 2008-11-19 #i70748# + mrTxtNode.ResetEmptyListStyleDueToResetOutlineLevelAttr(); + // <-- } HandleResetAttrAtTxtNode::~HandleResetAttrAtTxtNode() @@ -4540,6 +4749,12 @@ namespace { { mrTxtNode.AddToList(); } + // --> OD 2008-11-19 #i70748# + else if ( dynamic_cast<const SfxUInt16Item &>(mrTxtNode.GetAttr( RES_PARATR_OUTLINELEVEL, FALSE )).GetValue() > 0 ) + { + mrTxtNode.SetEmptyListStyleDueToSetOutlineLevelAttr(); + } + // <-- } if ( mrTxtNode.IsInList() ) diff --git a/sw/source/core/undo/rolbck.cxx b/sw/source/core/undo/rolbck.cxx index 0809ff64ab70..fcf13e06eedf 100644 --- a/sw/source/core/undo/rolbck.cxx +++ b/sw/source/core/undo/rolbck.cxx @@ -722,7 +722,8 @@ SwHstrySetAttrSet::SwHstrySetAttrSet( const SfxItemSet& rSet, ULONG nNodePos, aResetArr( 0, 4 ), nNode( nNodePos ), // --> OD 2007-07-09 #i77372# - mnNumLvl( NO_NUMBERING ), + //mnNumLvl( MAXLEVEL),//NO_NUMBERING ), + mnNumLvl( MAXLEVEL), //#outline level,zhaojianwei mbIsRestart( false ), mnRestartVal( USHRT_MAX ), mbIsCounted( false ) diff --git a/sw/source/core/unocore/unocrsrhelper.cxx b/sw/source/core/unocore/unocrsrhelper.cxx index 5d5fc68e1622..d2485a585605 100644 --- a/sw/source/core/unocore/unocrsrhelper.cxx +++ b/sw/source/core/unocore/unocrsrhelper.cxx @@ -154,7 +154,23 @@ sal_Bool getCrsrPropertyValue(const SfxItemPropertyMap* pMap } break; // <-- - case FN_UNO_PARA_CHAPTER_NUMBERING_LEVEL: + // --> OD 2008-05-20 #outlinelevel# - no longer needed +// case FN_UNO_PARA_CHAPTER_NUMBERING_LEVEL: +// if (pAny) +// { +// const SwTxtNode * pTmpNode = pNode; + +// if (!pTmpNode) +// pTmpNode = rPam.GetNode()->GetTxtNode(); + +// sal_Int8 nRet = -1; +// if (pTmpNode && pTmpNode->GetOutlineLevel() != NO_NUMBERING) +// nRet = sal::static_int_cast< sal_Int8 >(pTmpNode->GetOutlineLevel()); +// *pAny <<= nRet; +// } +// break; + // <-- + case RES_PARATR_OUTLINELEVEL: //#outlinelevel added by zhaojianwei if (pAny) { const SwTxtNode * pTmpNode = pNode; @@ -162,13 +178,13 @@ sal_Bool getCrsrPropertyValue(const SfxItemPropertyMap* pMap if (!pTmpNode) pTmpNode = rPam.GetNode()->GetTxtNode(); - sal_Int8 nRet = -1; - if (pTmpNode && pTmpNode->GetOutlineLevel() != NO_NUMBERING) - nRet = sal::static_int_cast< sal_Int8 >(pTmpNode->GetOutlineLevel()); + sal_Int16 nRet = -1; + if ( pTmpNode ) + nRet = sal::static_int_cast< sal_Int16 >( pTmpNode->GetAttrOutlineLevel() ); *pAny <<= nRet; } - break; + break; //<-end,zhaojianwei case FN_UNO_PARA_CONDITIONAL_STYLE_NAME: case FN_UNO_PARA_STYLE : { diff --git a/sw/source/core/unocore/unomap.cxx b/sw/source/core/unocore/unomap.cxx index 26a0392130b7..8b22521276d5 100644 --- a/sw/source/core/unocore/unomap.cxx +++ b/sw/source/core/unocore/unomap.cxx @@ -275,7 +275,8 @@ void SwUnoPropertyMapProvider::Sort( sal_uInt16 nId ) { SW_PROP_NMID(UNO_NAME_LIST_ID), FN_UNO_LIST_ID, CPPU_E2T(CPPUTYPE_OUSTRING), PropertyAttribute::MAYBEVOID, 0}, \ { SW_PROP_NMID(UNO_NAME_PARA_IS_NUMBERING_RESTART), FN_NUMBER_NEWSTART, CPPU_E2T(CPPUTYPE_BOOLEAN), PropertyAttribute::MAYBEVOID, 0 }, \ { SW_PROP_NMID(UNO_NAME_PARA_CONTINUEING_PREVIOUS_SUB_TREE), FN_UNO_PARA_CONT_PREV_SUBTREE, CPPU_E2T(CPPUTYPE_BOOLEAN), PropertyAttribute::READONLY, 0 }, \ - { SW_PROP_NMID(UNO_NAME_PARA_LIST_LABEL_STRING), FN_UNO_PARA_NUM_STRING, CPPU_E2T(CPPUTYPE_OUSTRING), PropertyAttribute::READONLY, 0 }, + { SW_PROP_NMID(UNO_NAME_PARA_LIST_LABEL_STRING), FN_UNO_PARA_NUM_STRING, CPPU_E2T(CPPUTYPE_OUSTRING), PropertyAttribute::READONLY, 0 }, \ + { SW_PROP_NMID(UNO_NAME_OUTLINE_LEVEL), RES_PARATR_OUTLINELEVEL, CPPU_E2T(CPPUTYPE_INT16), PropertyAttribute::MAYBEVOID, 0}, //#outline level, zhaojianwei #define COMMON_HYPERLINK_PROPERTIES \ { SW_PROP_NMID(UNO_NAME_HYPER_LINK_U_R_L), RES_TXTATR_INETFMT, CPPU_E2T(CPPUTYPE_OUSTRING), PropertyAttribute::MAYBEVOID ,MID_URL_URL}, \ @@ -499,6 +500,8 @@ void SwUnoPropertyMapProvider::Sort( sal_uInt16 nId ) { SW_PROP_NMID(UNO_NAME_CHAR_DIFF_HEIGHT_COMPLEX), RES_CHRATR_CTL_FONTSIZE , CPPU_E2T(CPPUTYPE_INT16), PROPERTY_NONE , MID_FONTHEIGHT_DIFF|CONVERT_TWIPS}, +//#outline level, zhaojianwei delete { SW_PROP_NMID(UNO_NAME_DEFAULT_OUTLINE_LEVEL), FN_UNO_DEFAULT_OUTLINE_LEVEL, CPPU_E2T(CPPUTYPE_INT8), PropertyAttribute::MAYBEVOID, 0}, +//add { SW_PROP_NMID(UNO_NAME_OUTLINE_LEVEL), RES_PARATR_OUTLINELEVEL,CPPU_E2T(CPPUTYPE_INT16), PropertyAttribute::MAYBEVOID, 0}, #define COMMON_PARA_STYLE_PROPERTIES \ { SW_PROP_NMID(UNO_NAME_BREAK_TYPE), RES_BREAK, CPPU_E2T(CPPUTYPE_BREAK), PROPERTY_NONE, 0},\ { SW_PROP_NMID(UNO_NAME_PAGE_DESC_NAME), RES_PAGEDESC, CPPU_E2T(CPPUTYPE_OUSTRING), PropertyAttribute::MAYBEVOID, MID_PAGEDESC_PAGEDESCNAME },\ @@ -595,8 +598,9 @@ void SwUnoPropertyMapProvider::Sort( sal_uInt16 nId ) { SW_PROP_NMID(UNO_NAME_CATEGORY), FN_UNO_CATEGORY, CPPU_E2T(CPPUTYPE_INT16), PROPERTY_NONE , 0 },\ { SW_PROP_NMID(UNO_NAME_WRITING_MODE), RES_FRAMEDIR, CPPU_E2T(CPPUTYPE_INT16), PROPERTY_NONE, 0 },\ { SW_PROP_NMID(UNO_NAME_PARA_IS_CONNECT_BORDER), RES_PARATR_CONNECT_BORDER, CPPU_E2T(CPPUTYPE_BOOLEAN), PropertyAttribute::MAYBEVOID, 0},\ - { SW_PROP_NMID(UNO_NAME_DEFAULT_OUTLINE_LEVEL), FN_UNO_DEFAULT_OUTLINE_LEVEL, CPPU_E2T(CPPUTYPE_INT8), PropertyAttribute::MAYBEVOID, 0},\ { SW_PROP_NMID(UNO_NAME_SNAP_TO_GRID), RES_PARATR_SNAPTOGRID, CPPU_E2T(CPPUTYPE_BOOLEAN), PropertyAttribute::MAYBEVOID, 0 }, \ + { SW_PROP_NMID(UNO_NAME_OUTLINE_LEVEL), RES_PARATR_OUTLINELEVEL,CPPU_E2T(CPPUTYPE_INT16), PropertyAttribute::MAYBEVOID, 0}, + #define COMMON_FLDTYP_PROPERTIES \ { SW_PROP_NMID(UNO_NAME_IS_FIELD_USED), FIELD_PROP_IS_FIELD_USED, CPPU_E2T(CPPUTYPE_FLOAT), PropertyAttribute::READONLY, 0},\ @@ -650,7 +654,8 @@ const SfxItemPropertyMap* SwUnoPropertyMapProvider::GetPropertyMap(sal_uInt16 nP { SW_PROP_NMID(UNO_NAME_TEXT_SECTION), FN_UNO_TEXT_SECTION, CPPU_E2T(CPPUTYPE_REFTEXTSECTION), PropertyAttribute::MAYBEVOID|PropertyAttribute::READONLY ,0 }, \ { SW_PROP_NMID(UNO_NAME_PARA_CHAPTER_NUMBERING_LEVEL), FN_UNO_PARA_CHAPTER_NUMBERING_LEVEL,CPPU_E2T(CPPUTYPE_INT8), PROPERTY_NONE, 0}, \ { SW_PROP_NMID(UNO_NAME_PARA_CONDITIONAL_STYLE_NAME), RES_FRMATR_CONDITIONAL_STYLE_NAME, CPPU_E2T(CPPUTYPE_OUSTRING), PropertyAttribute::MAYBEVOID|PropertyAttribute::READONLY, 0}, \ - { SW_PROP_NMID(UNO_NAME_PARA_IS_NUMBERING_RESTART), FN_NUMBER_NEWSTART, CPPU_E2T(CPPUTYPE_BOOLEAN), PropertyAttribute::MAYBEVOID, 0 }, + { SW_PROP_NMID(UNO_NAME_PARA_IS_NUMBERING_RESTART), FN_NUMBER_NEWSTART, CPPU_E2T(CPPUTYPE_BOOLEAN), PropertyAttribute::MAYBEVOID, 0 }, \ + { SW_PROP_NMID(UNO_NAME_OUTLINE_LEVEL), RES_PARATR_OUTLINELEVEL, CPPU_E2T(CPPUTYPE_INT16), PropertyAttribute::MAYBEVOID, 0}, //#outline level,zhaojianwei COMMON_CRSR_PARA_PROPERTIES_WITHOUT_FN TABSTOPS_MAP_ENTRY COMMON_TEXT_CONTENT_PROPERTIES diff --git a/sw/source/core/unocore/unoobj.cxx b/sw/source/core/unocore/unoobj.cxx index e798d6851ee6..7a8a5ace32b1 100644 --- a/sw/source/core/unocore/unoobj.cxx +++ b/sw/source/core/unocore/unoobj.cxx @@ -544,24 +544,6 @@ sal_Bool lcl_setCrsrPropertyValue(const SfxItemPropertyMap* pMap, case FN_UNO_NUM_START_VALUE : lcl_SetNodeNumStart( rPam, aValue ); break; - case FN_UNO_PARA_CHAPTER_NUMBERING_LEVEL: - { -/* Will be used in OOo 3.0 - SwTxtNode * pTmpNode = rPam.GetNode()->GetTxtNode(); - - BYTE nLevel; - aValue >>= nLevel; - - if ( pTmpNode ) - { - pTmpNode->SetOutlineLevel(nLevel); - - // --> OD 2005-09-01 #i53198# - update outline nodes array - rPam.GetDoc()->GetNodes().UpdateOutlineNode( *pTmpNode ); - // <-- - }*/ - } - break; case FN_UNO_NUM_LEVEL : // --> OD 2008-07-14 #i91601# case FN_UNO_LIST_ID: diff --git a/sw/source/core/unocore/unoobj2.cxx b/sw/source/core/unocore/unoobj2.cxx index 216cee867e1f..9b536dae7bc8 100644 --- a/sw/source/core/unocore/unoobj2.cxx +++ b/sw/source/core/unocore/unoobj2.cxx @@ -780,6 +780,17 @@ void SwXTextCursor::SetCrsrAttr(SwPaM& rPam, const SfxItemSet& rSet, USHORT nAtt // UpdateAttr(); pDoc->Insert( *pCrsr, rSet, nFlags ); } + //#outline level,add by zhaojianwei + if( rSet.GetItemState( RES_PARATR_OUTLINELEVEL, false ) >= SFX_ITEM_AVAILABLE ) + { + SwTxtNode * pTmpNode = rPam.GetNode()->GetTxtNode(); + if ( pTmpNode ) + { + rPam.GetDoc()->GetNodes().UpdateOutlineNode( *pTmpNode ); + } + + } + //<-end,zhaojianwei } /*-- 09.12.98 14:19:04--------------------------------------------------- diff --git a/sw/source/core/unocore/unoprnms.cxx b/sw/source/core/unocore/unoprnms.cxx index 2f4d5ebb05c6..262adba59ddf 100644 --- a/sw/source/core/unocore/unoprnms.cxx +++ b/sw/source/core/unocore/unoprnms.cxx @@ -718,7 +718,7 @@ const SwPropNameTab aPropNameTab = { /* 0673 UNO_NAME_TRANSFORMATION_IN_HORI_L2R*/ {MAP_CHAR_LEN("TransformationInHoriL2R")}, /* 0674 UNO_NAME_POSITION_LAYOUT_DIR*/ {MAP_CHAR_LEN("PositionLayoutDir")}, /* 0675 UNO_NAME_NUMBERING_IS_OUTLINE*/ {MAP_CHAR_LEN("NumberingIsOutline")}, -/* 0676 UNO_NAME_DEFAULT_OUTLINE_LEVEL*/ {MAP_CHAR_LEN("DefaultOutlineLevel")}, +///* 0676 UNO_NAME_DEFAULT_OUTLINE_LEVEL*/ {MAP_CHAR_LEN("DefaultOutlineLevel")}, //#outline level,removed by zhaojianwei /* 0677 UNO_NAME_STARTPOSITION_IN_HORI_L2R*/ {MAP_CHAR_LEN("StartPositionInHoriL2R")}, /* 0678 UNO_NAME_ENDPOSITION_IN_HORI_L2R*/ {MAP_CHAR_LEN("EndPositionInHoriL2R")}, /* 0679 UNO_NAME_SUBJECT */ {MAP_CHAR_LEN("Subject")}, @@ -777,7 +777,8 @@ const SwPropNameTab aPropNameTab = { /* 0732 UNO_NAME_PARA_LIST_LABEL_STRING */ {MAP_CHAR_LEN("ListLabelString")}, /* 0733 CHAR_OVERLINE */ {MAP_CHAR_LEN("CharOverline")}, /* 0734 CHAR_OVERLINE_COLOR */ {MAP_CHAR_LEN("CharOverlineColor")}, -/* 0735 CHAR_OVERLINE_HAS_COLOR */ {MAP_CHAR_LEN("CharOverlineHasColor")} +/* 0735 CHAR_OVERLINE_HAS_COLOR */ {MAP_CHAR_LEN("CharOverlineHasColor")}, +/* 0736 UNO_NAME_OUTLINE_LEVEL */ {MAP_CHAR_LEN("OutlineLevel")}//#outline level,add<-zhaojianwei Outlinelevel }; const SwPropNameLen& SwGetPropName( USHORT nId ) diff --git a/sw/source/core/unocore/unosett.cxx b/sw/source/core/unocore/unosett.cxx index ad22fc3991dd..b75cfebd4d27 100644 --- a/sw/source/core/unocore/unosett.cxx +++ b/sw/source/core/unocore/unosett.cxx @@ -1695,8 +1695,11 @@ uno::Sequence<beans::PropertyValue> SwXNumberingRules::GetNumberingRuleByIndex( if(rTxtColl.IsDefault()) continue; - sal_Int8 nOutLevel = rTxtColl.GetOutlineLevel(); - if(nOutLevel == nIndex) + //sal_Int8 nOutLevel = rTxtColl.GetOutlineLevel(); //#outline level,zhaojianwei + const sal_Int16 nOutLevel = rTxtColl.IsAssignedToListLevelOfOutlineStyle() + ? static_cast<sal_Int16>(rTxtColl.GetAssignedOutlineStyleLevel()) + : MAXLEVEL; //<-end,zhaojianwei + if ( nOutLevel == nIndex ) { sValue = rTxtColl.GetName(); break; // the style for the level in question has been found @@ -2181,11 +2184,21 @@ void SwXNumberingRules::SetNumberingRuleByIndex( SwTxtFmtColl &rTxtColl = *((*pColls)[k]); if(rTxtColl.IsDefault()) continue; - if(rTxtColl.GetOutlineLevel() == nIndex && - rTxtColl.GetName() != sStyleName) - rTxtColl.SetOutlineLevel(NO_NUMBERING); - else if(rTxtColl.GetName() == sStyleName) - rTxtColl.SetOutlineLevel(sal_Int8(nIndex)); + //if(rTxtColl.GetOutlineLevel() == nIndex && //#outline level,removed by zhaojianwei + // rTxtColl.GetName() != sStyleName) + // rTxtColl..SetOutlineLevel(NO_NUMBERING); + //else if(rTxtColl.GetName() == sStyleName) + // rTxtColl.SetOutlineLevel(sal_Int8(nIndex)); + if ( rTxtColl.IsAssignedToListLevelOfOutlineStyle() && //add by zhaojianwei + rTxtColl.GetAssignedOutlineStyleLevel() == nIndex && + rTxtColl.GetName() != sStyleName ) + { + rTxtColl.DeleteAssignmentToListLevelOfOutlineStyle(); + } + else if ( rTxtColl.GetName() == sStyleName ) + { + rTxtColl.AssignToListLevelOfOutlineStyle( nIndex ); + } //<-end,,zhaojianwei, } } break; diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx index 0115a0985064..baba996cbad5 100644 --- a/sw/source/core/unocore/unostyle.cxx +++ b/sw/source/core/unocore/unostyle.cxx @@ -1964,15 +1964,23 @@ void lcl_SetStyleProperty(const SfxItemPropertyMap* pMap, throw lang::IllegalArgumentException(); } break; - case FN_UNO_DEFAULT_OUTLINE_LEVEL: + // case FN_UNO_DEFAULT_OUTLINE_LEVEL: //#outline level,removed by zahojianwei + //{ + // sal_Int8 nLevel = 0; + // if( rValue >>= nLevel ) + // rBase.mxNewBase->GetCollection()->SetOutlineLevel( nLevel ); + // else + // rBase.mxNewBase->GetCollection()->SetOutlineLevel( NO_NUMBERING ); + //} + //break; + case RES_PARATR_OUTLINELEVEL: //add by zahojianwei { - sal_Int8 nLevel = 0; - if( rValue >>= nLevel ) - rBase.mxNewBase->GetCollection()->SetOutlineLevel( nLevel ); - else - rBase.mxNewBase->GetCollection()->SetOutlineLevel( NO_NUMBERING ); + sal_Int16 nLevel = 0; + rValue >>= nLevel; + if( 0 <= nLevel && nLevel <= MAXLEVEL) + rBase.mxNewBase->GetCollection()->SetAttrOutlineLevel( nLevel ); } - break; + break; //<-end,zhaojianwei case FN_UNO_FOLLOW_STYLE: { OUString sTmp; @@ -2214,7 +2222,9 @@ put_itemset: if ( SFX_STYLE_FAMILY_PARA == eFamily && pMap->nWID == RES_PARATR_NUMRULE && rBase.mxNewBase.is() && rBase.mxNewBase->GetCollection() && - rBase.mxNewBase->GetCollection()->GetOutlineLevel() < MAXLEVEL /* assigned to list level of outline style */) + //rBase.mxNewBase->GetCollection()->GetOutlineLevel() < MAXLEVEL /* assigned to list level of outline style */) //#outline level,removed by zhaojianwei + rBase.mxNewBase->GetCollection()->IsAssignedToListLevelOfOutlineStyle() ) ////<-end,add by zhaojianwei + { OUString sNewNumberingRuleName; rValue >>= sNewNumberingRuleName; @@ -2223,7 +2233,8 @@ put_itemset: sTmp != pDoc->GetOutlineNumRule()->GetName() ) { // delete assignment to list level of outline style. - rBase.mxNewBase->GetCollection()->SetOutlineLevel( NO_NUMBERING ); + //rBase.mxNewBase->GetCollection()->SetOutlineLevel( NO_NUMBERING ); //#outline level,removed by zhaojianwei + rBase.mxNewBase->GetCollection()->DeleteAssignmentToListLevelOfOutlineStyle(); //<-end,adde by zhaojianwei } } } @@ -2377,14 +2388,21 @@ uno::Any lcl_GetStyleProperty(const SfxItemPropertyMap* pMap, aRet.setValue(&xRules, ::getCppuType((uno::Reference<container::XIndexReplace>*)0)); } break; - case FN_UNO_DEFAULT_OUTLINE_LEVEL: + //case FN_UNO_DEFAULT_OUTLINE_LEVEL: //#outline level,removed by zahojianwei + //{ + // DBG_ASSERT( SFX_STYLE_FAMILY_PARA == eFamily, "only paras" ); + // BYTE nLevel = rBase.mxNewBase->GetCollection()->GetOutlineLevel(); + // if( nLevel != NO_NUMBERING ) + // aRet <<= static_cast<sal_Int8>( nLevel ); + //} + //break; + case RES_PARATR_OUTLINELEVEL: //add by zahojianwei { DBG_ASSERT( SFX_STYLE_FAMILY_PARA == eFamily, "only paras" ); - BYTE nLevel = rBase.mxNewBase->GetCollection()->GetOutlineLevel(); - if( nLevel != NO_NUMBERING ) - aRet <<= static_cast<sal_Int8>( nLevel ); + int nLevel = rBase.mxNewBase->GetCollection()->GetAttrOutlineLevel(); + aRet <<= static_cast<sal_Int16>( nLevel ); } - break; + break; //<-end,zhaojianwei case FN_UNO_FOLLOW_STYLE: { String aString; @@ -2779,14 +2797,14 @@ uno::Sequence< beans::PropertyState > SwXStyle::getPropertyStates( { pStates[i] = beans::PropertyState_DIRECT_VALUE; } - else if( FN_UNO_DEFAULT_OUTLINE_LEVEL == pMap->nWID ) - { - pStates[i] = - ( xStyle->GetCollection()->GetOutlineLevel() - == NO_NUMBERING ) - ? beans::PropertyState_DEFAULT_VALUE - : beans::PropertyState_DIRECT_VALUE; - } + // else if( FN_UNO_DEFAULT_OUTLINE_LEVEL == pMap->nWID ) //#outline level,removed by zahojianwei + // { + // pStates[i] = + // ( xStyle->GetCollection()->GetOutlineLevel() + // == NO_NUMBERING ) + // ? beans::PropertyState_DEFAULT_VALUE + // : beans::PropertyState_DIRECT_VALUE; + // } //<-end,zhaojianwei else if(SFX_STYLE_FAMILY_PAGE == eFamily && (rPropName.EqualsAscii("Header", 0, 6) || rPropName.EqualsAscii("Footer", 0, 6))) @@ -2910,10 +2928,14 @@ void SAL_CALL SwXStyle::setPropertiesToDefault( const uno::Sequence< OUString >& if ( pMap->nFlags & beans::PropertyAttribute::READONLY ) throw uno::RuntimeException( OUString ( RTL_CONSTASCII_USTRINGPARAM ( "setPropertiesToDefault: property is read-only: " ) ) + pNames[nProp], static_cast < cppu::OWeakObject * > ( this ) ); - if( pMap->nWID == FN_UNO_DEFAULT_OUTLINE_LEVEL ) - static_cast<SwTxtFmtColl*>(pTargetFmt)->SetOutlineLevel( NO_NUMBERING ); + //if( pMap->nWID == FN_UNO_DEFAULT_OUTLINE_LEVEL ) //#outline level, removed by zhaojianwei + // static_cast<SwTxtFmtColl*>(pTargetFmt)->SetOutlineLevel( NO_NUMBERING ); + //else + // pTargetFmt->ResetFmtAttr( pMap->nWID ); + if( pMap->nWID == RES_PARATR_OUTLINELEVEL ) //add by zhaojianwei + static_cast<SwTxtFmtColl*>(pTargetFmt)->DeleteAssignmentToListLevelOfOutlineStyle(); else - pTargetFmt->ResetFmtAttr( pMap->nWID ); + pTargetFmt->ResetFmtAttr( pMap->nWID ); //<-end,zhaojianwei } } else if ( bIsDescriptor ) @@ -2950,7 +2972,8 @@ void SAL_CALL SwXStyle::setAllPropertiesToDefault( ) // --> OD 2007-07-25 #132402# - make code robust if ( xStyle->GetCollection() ) { - xStyle->GetCollection()->SetOutlineLevel( NO_NUMBERING ); + // xStyle->GetCollection()->SetOutlineLevel( NO_NUMBERING ); //#outline level,removed by zhaojianwei + xStyle->GetCollection()->DeleteAssignmentToListLevelOfOutlineStyle(); //<-end,add by zhaojianwei } // <-- } diff --git a/sw/source/filter/rtf/rtfatr.cxx b/sw/source/filter/rtf/rtfatr.cxx index 28a410e152d9..3c099fcd62a5 100644 --- a/sw/source/filter/rtf/rtfatr.cxx +++ b/sw/source/filter/rtf/rtfatr.cxx @@ -427,14 +427,17 @@ bool SwFmtToSet(SwRTFWriter& rWrt, const SwFmt& rFmt, SfxItemSet &rSet) rWrt.Strm() << sRTF_S; rWrt.OutULong( nId ); rWrt.bOutFmtAttr = TRUE; - BYTE nLvl = ((const SwTxtFmtColl&)rFmt).GetOutlineLevel(); - if( MAXLEVEL > nLvl ) +// BYTE nLvl = ((const SwTxtFmtColl&)rFmt).GetOutlineLevel(); //#outline level,zhaojianwei +// if( MAXLEVEL > nLvl ) +// { + if(((const SwTxtFmtColl&)rFmt).IsAssignedToListLevelOfOutlineStyle()) { + int nLvl = ((const SwTxtFmtColl&)rFmt).GetAssignedOutlineStyleLevel(); //<-end,zhaojianwei USHORT nNumId = rWrt.GetNumRuleId( *rWrt.pDoc->GetOutlineNumRule() ); if( USHRT_MAX != nNumId ) { - BYTE nWWLvl = 8 >= nLvl ? nLvl : 8; + BYTE nWWLvl = 8 >= nLvl ? static_cast<BYTE>(nLvl) : 8; rWrt.Strm() << sRTF_LS; rWrt.OutULong( nNumId ); rWrt.Strm() << sRTF_ILVL; rWrt.OutULong( nWWLvl ); @@ -446,7 +449,7 @@ bool SwFmtToSet(SwRTFWriter& rWrt, const SwFmt& rFmt, SfxItemSet &rSet) } } - const SwNumFmt* pNFmt = &rWrt.pDoc->GetOutlineNumRule()->Get( nLvl ); + const SwNumFmt* pNFmt = &rWrt.pDoc->GetOutlineNumRule()->Get( static_cast<USHORT>(nLvl) ); if( pNFmt->GetAbsLSpace() ) { SfxItemSet aSet( *rFmt.GetAttrSet().GetPool(), @@ -4267,6 +4270,7 @@ SwAttrFnTab aRTFAttrFnTab = { /* RES_PARATR_VERTALIGN */ OutRTF_SwFontAlign, /* RES_PARATR_SNAPTOGRID*/ 0, // new /* RES_PARATR_CONNECT_TO_BORDER */ 0, // new +/* RES_PARATR_OUTLINELEVEL */ 0, // new - outlinelevel /* RES_PARATR_LIST_ID */ 0, // new /* RES_PARATR_LIST_LEVEL */ 0, // new diff --git a/sw/source/filter/rtf/swparrtf.cxx b/sw/source/filter/rtf/swparrtf.cxx index 8d2b6853c85a..2ecfebb09090 100644 --- a/sw/source/filter/rtf/swparrtf.cxx +++ b/sw/source/filter/rtf/swparrtf.cxx @@ -2761,11 +2761,13 @@ void SwRTFParser::MakeStyleTab() if( !IsNewDoc() ) { // search all outlined collections - BYTE nLvl; + //BYTE nLvl; const SwTxtFmtColls& rColls = *pDoc->GetTxtFmtColls(); for( USHORT n = rColls.Count(); n; ) - if( MAXLEVEL > (nLvl = rColls[ --n ]->GetOutlineLevel() )) - nValidOutlineLevels |= 1 << nLvl; + //if( MAXLEVEL > (nLvl = rColls[ --n ]->GetOutlineLevel() ))//#outline level,zhaojianwei + // nValidOutlineLevels |= 1 << nLvl; + if( rColls[ --n ]->IsAssignedToListLevelOfOutlineStyle()) + nValidOutlineLevels |= 1 << rColls[ n ]->GetAssignedOutlineStyleLevel();//<-end,zhaojianwei } SvxRTFStyleType* pStyle = GetStyleTbl().First(); @@ -3932,7 +3934,8 @@ SwTxtFmtColl* SwRTFParser::MakeColl(const String& rName, USHORT nPos, BYTE nOutlineLevel, bool& rbCollExist) { if( BYTE(-1) == nOutlineLevel ) - nOutlineLevel = NO_NUMBERING; + //nOutlineLevel = NO_NUMBERING; + nOutlineLevel = MAXLEVEL;//#outline level,zhaojianwei rbCollExist = false; SwTxtFmtColl* pColl; @@ -3943,7 +3946,11 @@ SwTxtFmtColl* SwRTFParser::MakeColl(const String& rName, USHORT nPos, if( !nPos ) { pColl = pDoc->GetTxtCollFromPool( RES_POOLCOLL_STANDARD, false ); - pColl->SetOutlineLevel( nOutlineLevel ); + //pColl->SetOutlineLevel( nOutlineLevel ); //#outline level,removed by zhaojianwei + if(nOutlineLevel < MAXLEVEL ) //->add by zhaojianwei + pColl->AssignToListLevelOfOutlineStyle( nOutlineLevel ); + else + pColl->DeleteAssignmentToListLevelOfOutlineStyle(); //<-end,zhaojianwei return pColl; } @@ -3952,7 +3959,6 @@ SwTxtFmtColl* SwRTFParser::MakeColl(const String& rName, USHORT nPos, aNm += String::CreateFromInt32( nPos ); aNm += ')'; } - ww::sti eSti = ww::GetCanonicalStiFromEnglishName(rName); sw::util::ParaStyleMapper::StyleResult aResult = maParaStyleMapper.GetStyle(rName, eSti); @@ -3967,7 +3973,12 @@ SwTxtFmtColl* SwRTFParser::MakeColl(const String& rName, USHORT nPos, } if (!rbCollExist) - pColl->SetOutlineLevel(nOutlineLevel); + //pColl->SetOutlineLevel( nOutlineLevel ); //#outline level,removed by zhaojianwei + if(nOutlineLevel < MAXLEVEL) //->add by zhaojianwei + pColl->AssignToListLevelOfOutlineStyle( nOutlineLevel ); + else + pColl->DeleteAssignmentToListLevelOfOutlineStyle(); //<-end,zhaojianwei + return pColl; } diff --git a/sw/source/filter/rtf/wrtrtf.cxx b/sw/source/filter/rtf/wrtrtf.cxx index 1f7a5b94d87d..6a6e13096c6b 100644 --- a/sw/source/filter/rtf/wrtrtf.cxx +++ b/sw/source/filter/rtf/wrtrtf.cxx @@ -292,8 +292,10 @@ void SwRTFWriter::Out_SwDoc( SwPaM* pPam ) pCurPam->GetPoint()->nContent.Assign( &rCNd, 0 ); if( !bOutOutlineOnly || - ( rCNd.IsTxtNode() && NO_NUMBERING != - ((SwTxtNode&)rCNd).GetTxtColl()->GetOutlineLevel() )) + //( rCNd.IsTxtNode() && NO_NUMBERING != //#outline level,removed by zhaojianwei + //((SwTxtNode&)rCNd).GetTxtColl()->GetOutlineLevel() )) + ( rCNd.IsTxtNode() && //->add by zhaojianwei + ((SwTxtNode&)rCNd).GetTxtColl()->IsAssignedToListLevelOfOutlineStyle()))//<-end,zhaojianwei Out( aRTFNodeFnTab, rCNd, *this ); } @@ -1078,10 +1080,12 @@ void SwRTFWriter::OutRTFStyleTab() break; } - if( NO_NUMBERING != pColl->GetOutlineLevel() ) + //if( NO_NUMBERING != pColl->GetOutlineLevel() )//#outline level,zhaojianwei + if(pColl->IsAssignedToListLevelOfOutlineStyle())//<-end,zhaojianwei { Strm() << '{' << sRTF_IGNORE << sRTF_SOUTLVL; - OutULong( pColl->GetOutlineLevel() ) << '}'; + //OutULong( pColl->GetOutlineLevel() ) << '}';//#outline level,zhaojianwei + OutULong( pColl->GetAssignedOutlineStyleLevel() ) << '}';//<-end,zhaojianwei } Strm() << ' '; diff --git a/sw/source/filter/ww8/writerhelper.cxx b/sw/source/filter/ww8/writerhelper.cxx index 7433242f2cb0..28de14c446ce 100644 --- a/sw/source/filter/ww8/writerhelper.cxx +++ b/sw/source/filter/ww8/writerhelper.cxx @@ -105,8 +105,9 @@ namespace public: bool operator()(const SwTxtFmtColl *pA, const SwTxtFmtColl *pB) const { - return pA->GetOutlineLevel() < pB->GetOutlineLevel(); - } + //return pA->GetOutlineLevel() < pB->GetOutlineLevel(); //#outline level,zhaojianwei + return pA->GetAttrOutlineLevel() < pB->GetAttrOutlineLevel(); //<-end,zhaojianwei + } }; bool IsValidSlotWhich(USHORT nSlotId, USHORT nWhichId) diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx index 332767eb38e7..deafb365bf51 100644 --- a/sw/source/filter/ww8/ww8atr.cxx +++ b/sw/source/filter/ww8/ww8atr.cxx @@ -781,9 +781,11 @@ bool SwWW8Writer::DisallowInheritingOutlineNumbering(const SwFmt &rFmt) { if (const SwFmt *pParent = rFmt.DerivedFrom()) { - BYTE nLvl = ((const SwTxtFmtColl*)pParent)->GetOutlineLevel(); - if (MAXLEVEL > nLvl) - { + //BYTE nLvl = ((const SwTxtFmtColl*)pParent)->GetOutlineLevel(); //#outline level,removed by zhaojianwei + //if (MAXLEVEL > nLvl) + //{ //<-end, ->add by zhaojianwei + if (((const SwTxtFmtColl*)pParent)->IsAssignedToListLevelOfOutlineStyle()) + { //<-end,zhaojianwei if (bWrtWW8) { SwWW8Writer::InsUInt16(*pO, 0x2640); @@ -815,14 +817,18 @@ void SwWW8Writer::Out_SwFmt(const SwFmt& rFmt, bool bPapFmt, bool bChpFmt, case RES_TXTFMTCOLL: if( bPapFmt ) { - BYTE nLvl = ((const SwTxtFmtColl&)rFmt).GetOutlineLevel(); - if (MAXLEVEL > nLvl) + //BYTE nLvl = ((const SwTxtFmtColl&)rFmt).GetOutlineLevel(); //#outline level,removed by zhaojianwei + //if (MAXLEVEL > nLvl) + //{ //<-end, ->add by zhaojianwei + if (((const SwTxtFmtColl&)rFmt).IsAssignedToListLevelOfOutlineStyle()) { + int nLvl = ((const SwTxtFmtColl&)rFmt).GetAssignedOutlineStyleLevel(); //<-end,zhaojianwei + //if outline numbered // if Write StyleDefinition then write the OutlineRule - const SwNumFmt& rNFmt = pDoc->GetOutlineNumRule()->Get(nLvl); + const SwNumFmt& rNFmt = pDoc->GetOutlineNumRule()->Get(static_cast<USHORT>(nLvl)); if (bStyDef) - ExportOutlineNumbering(nLvl, rNFmt, rFmt); + ExportOutlineNumbering(static_cast<BYTE>(nLvl), rNFmt, rFmt); // --> OD 2008-06-03 #i86652# // if (rNFmt.GetAbsLSpace()) @@ -2114,32 +2120,43 @@ void SwWW8Writer::StartTOX( const SwSection& rSect ) // Search over all the outline styles used and figure out // what is the minimum outline level we need to display // (ignoring headline styles 1-9) - BYTE nLvl = 0, nMinLvl = 0; + //BYTE nLvl = 0, nMinLvl = 0; //#outline level, removed by zhaojianwei + int nLvl = 0, nMinLvl = 0; //<-end,add by zhaojianwei const SwTxtFmtColls& rColls = *pDoc->GetTxtFmtColls(); const SwTxtFmtColl* pColl; for( n = rColls.Count(); n; ) { pColl = rColls[ --n ]; - nLvl = pColl->GetOutlineLevel(); + //nLvl = pColl->GetOutlineLevel(); //#outline level,zhaojianwei + //USHORT nPoolId = pColl->GetPoolFmtId(); + //if( MAXLEVEL > nLvl && nMinLvl < nLvl && //<-end, ->add by zhaojianwei USHORT nPoolId = pColl->GetPoolFmtId(); - if( MAXLEVEL > nLvl && nMinLvl < nLvl && + if( pColl->IsAssignedToListLevelOfOutlineStyle() && + nMinLvl < (nLvl = pColl->GetAssignedOutlineStyleLevel()) && //<-end,zhaojianwei ( RES_POOLCOLL_HEADLINE1 > nPoolId || RES_POOLCOLL_HEADLINE9 < nPoolId )) { - - - // If we are using the default heading styles then use nTOXLvl - if(!nMinLvl) - nLvl = static_cast< BYTE >(nTOXLvl); - else - nLvl = nMinLvl < nTOXLvl ? nMinLvl : (BYTE)nTOXLvl; + // If we are using the default heading styles then use nTOXLvl + if(!nMinLvl) + nLvl = nTOXLvl; + else + nLvl = nMinLvl < nTOXLvl ? nMinLvl : (BYTE)nTOXLvl; nMinLvl = nLvl; } } - if( nLvl ) + // --> OD 2008-12-19 #i70748# + // Correction: in the above loop the <nMinLvl> is set != 0, + // if a to outline style assigned paragraph style exists, + // which does not belong to the default ones. + // It has to be considered that the last checked + // to outline style assigned paragraph style could have + // assigned outline style level == 0. + // Thus, check on and export of <nMinLvl> instead of <nLvl>. +// if( nLvl ) + if ( nMinLvl > 0 ) { - USHORT nTmpLvl = nLvl + 1; + int nTmpLvl = nMinLvl + 1; if (nTmpLvl > WW8ListManager::nMaxLevel) nTmpLvl = WW8ListManager::nMaxLevel; @@ -2148,16 +2165,24 @@ void SwWW8Writer::StartTOX( const SwSection& rSect ) sStr.AppendAscii(sEntryEnd); } + // <-- - if( nLvl != nMinLvl ) + // --> OD 2008-12-19 #i70748# + // See above, checking <nLvl != nMinLvl> does not make sense. +// if( nLvl != nMinLvl ) + if( nMinLvl > 0 ) + // <-- { // collect this templates into the \t otion for( n = rColls.Count(); n;) { pColl = rColls[--n]; - nLvl = pColl->GetOutlineLevel(); - if (MAXLEVEL > nLvl && nMinLvl <= nLvl) - { + //nLvl = pColl->GetOutlineLevel(); //#outline level, removed by zhaojianwei + //if (MAXLEVEL > nLvl && nMinLvl <= nLvl) + //{ //<-end, ->add by zhaojianwei + if( pColl->IsAssignedToListLevelOfOutlineStyle() && + nMinLvl <= ( nLvl = pColl->GetAssignedOutlineStyleLevel())) + { //<-end,zhaojianwei if( sTOption.Len() ) sTOption += ';'; (( sTOption += pColl->GetName() ) += ';' ) @@ -3260,8 +3285,10 @@ static Writer& OutWW8_SwNumRuleItem( Writer& rWrt, const SfxPoolItem& rHt ) else if( rWW8Wrt.pOutFmtNode->ISA( SwTxtFmtColl )) { const SwTxtFmtColl* pC = (SwTxtFmtColl*)rWW8Wrt.pOutFmtNode; - if( pC && MAXLEVEL > pC->GetOutlineLevel() ) - nLvl = pC->GetOutlineLevel(); + //if( pC && MAXLEVEL > pC->GetOutlineLevel() ) //#outline level,removed by zhaojianwei + // nLvl = pC->GetOutlineLevel(); //<-end, ->add by zhaojianwei + if( pC && pC->IsAssignedToListLevelOfOutlineStyle() ) + nLvl = static_cast<BYTE>(pC->GetAssignedOutlineStyleLevel()); //<-end,zhaojianwei } } } @@ -4998,6 +5025,7 @@ SwAttrFnTab aWW8AttrFnTab = { /* RES_PARATR_VERTALIGN */ OutWW8_SvxParaVertAlignItem, /* RES_PARATR_SNAPTOGRID*/ OutWW8_SvxParaGridItem, /* RES_PARATR_CONNECT_TO_BORDER */ 0, // new +/* RES_PARATR_OUTLINELEVEL */ 0, // new - outlinelevel /* RES_PARATR_LIST_ID */ 0, // new /* RES_PARATR_LIST_LEVEL */ 0, // new diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx index 23c7b6133f81..a5e008811447 100644 --- a/sw/source/filter/ww8/ww8par.cxx +++ b/sw/source/filter/ww8/ww8par.cxx @@ -4367,7 +4367,8 @@ public: outlineeq(BYTE nNum) : mnNum(nNum) {} bool operator()(const SwTxtFmtColl *pTest) const { - return pTest->GetOutlineLevel() == mnNum; + //return pTest->GetOutlineLevel() == mnNum; //#outline level,zhaojianwei + return pTest->IsAssignedToListLevelOfOutlineStyle() && pTest->GetAssignedOutlineStyleLevel() == mnNum; //<-end,zhaojianwei } }; @@ -4389,7 +4390,7 @@ void SwWW8ImplReader::SetOutLineStyles() sw::ParaStyles aOutLined(sw::util::GetParaStyles(rDoc)); sw::util::SortByOutline(aOutLined); - typedef sw::ParaStyleIter myiter; + typedef sw::ParaStyleIter myParaStyleIter; /* If we are inserted into a document then don't clobber existing existing levels. @@ -4397,11 +4398,16 @@ void SwWW8ImplReader::SetOutLineStyles() USHORT nFlagsStyleOutlLevel = 0; if (!mbNewDoc) { - myiter aEnd = aOutLined.end(); - for (myiter aIter = aOutLined.begin(); aIter < aEnd; ++aIter) + // --> OD 2008-12-16 #i70748# + // backward iteration needed due to the outline level attribute + sw::ParaStyles::reverse_iterator aEnd = aOutLined.rend(); + for ( sw::ParaStyles::reverse_iterator aIter = aOutLined.rbegin(); aIter < aEnd; ++aIter) + // <-- { - if ((*aIter)->GetOutlineLevel() < MAXLEVEL) - nFlagsStyleOutlLevel |= 1 << (*aIter)->GetOutlineLevel(); + //if ((*aIter)->GetOutlineLevel() < MAXLEVEL) //#outline level,zhaojianwei, + //nFlagsStyleOutlLevel |= 1 << (*aIter)->GetOutlineLevel(); + if ((*aIter)->IsAssignedToListLevelOfOutlineStyle()) + nFlagsStyleOutlLevel |= 1 << (*aIter)->GetAssignedOutlineStyleLevel();//<-end,zhaojianwei else break; } @@ -4463,11 +4469,17 @@ void SwWW8ImplReader::SetOutLineStyles() if (mpChosenOutlineNumRule != &aOutlineRule) { - myiter aEnd = aOutLined.end(); - for (myiter aIter = aOutLined.begin(); aIter < aEnd; ++aIter) + // --> OD 2008-12-16 #i70748# + // backward iteration needed due to the outline level attribute + sw::ParaStyles::reverse_iterator aEnd = aOutLined.rend(); + for ( sw::ParaStyles::reverse_iterator aIter = aOutLined.rbegin(); aIter < aEnd; ++aIter) + // <-- { - if ((*aIter)->GetOutlineLevel() < MAXLEVEL) - (*aIter)->SetOutlineLevel(NO_NUMBERING); + //if ((*aIter)->GetOutlineLevel() < MAXLEVEL)//#outline level,zhaojianwei + // (*aIter)->SetOutlineLevel(NO_NUMBERING); + if((*aIter)->IsAssignedToListLevelOfOutlineStyle()) + (*aIter)->DeleteAssignmentToListLevelOfOutlineStyle(); //<-end + else break; } @@ -4494,7 +4506,8 @@ void SwWW8ImplReader::SetOutLineStyles() */ rSI.pFmt->SetFmtAttr( SwNumRuleItem( rSI.pOutlineNumrule->GetName() ) ); - ((SwTxtFmtColl*)rSI.pFmt)->SetOutlineLevel(NO_NUMBERING); + //((SwTxtFmtColl*)rSI.pFmt)->SetOutlineLevel(NO_NUMBERING); + ((SwTxtFmtColl*)rSI.pFmt)->DeleteAssignmentToListLevelOfOutlineStyle();//#outline level,zhaojianwei } else { @@ -4509,13 +4522,14 @@ void SwWW8ImplReader::SetOutLineStyles() the list of level in nFlagsStyleOutlLevel to ignore. */ outlineeq aCmp(rSI.nOutlineLevel); - myiter aResult = std::find_if(aOutLined.begin(), + myParaStyleIter aResult = std::find_if(aOutLined.begin(), aOutLined.end(), aCmp); - myiter aEnd = aOutLined.end(); + myParaStyleIter aEnd = aOutLined.end(); while (aResult != aEnd && aCmp(*aResult)) { - (*aResult)->SetOutlineLevel(NO_NUMBERING); + //(*aResult)->SetOutlineLevel(NO_NUMBERING);//#outline level,zhaojianwei + (*aResult)->DeleteAssignmentToListLevelOfOutlineStyle(); ++aResult; } @@ -4535,7 +4549,8 @@ void SwWW8ImplReader::SetOutLineStyles() const SwNumFmt& rRule=rSI.pOutlineNumrule->Get(nFromLevel); aOutlineRule.Set(nToLevel, rRule); // Set my outline level - ((SwTxtFmtColl*)rSI.pFmt)->SetOutlineLevel(nToLevel); + //((SwTxtFmtColl*)rSI.pFmt)->SetOutlineLevel(nToLevel);//#outline level,zhaojianwei + ((SwTxtFmtColl*)rSI.pFmt)->AssignToListLevelOfOutlineStyle(nToLevel); //<-end,zhaojianwei // If there are more styles on this level ignore them nFlagsStyleOutlLevel |= nAktFlags; } diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx index b63181ddbf65..e9f5442f240a 100644 --- a/sw/source/filter/ww8/ww8par2.cxx +++ b/sw/source/filter/ww8/ww8par2.cxx @@ -833,7 +833,8 @@ void SwWW8ImplReader::Read_ANLevelNo( USHORT, const BYTE* pData, short nLen ) { nSwNumLevel = *pData - 1; if (!bNoAttrImport) - ((SwTxtFmtColl*)pAktColl)->SetOutlineLevel( nSwNumLevel ); + //((SwTxtFmtColl*)pAktColl)->SetOutlineLevel( nSwNumLevel ); //#outline level,zhaojianwei + ((SwTxtFmtColl*)pAktColl)->AssignToListLevelOfOutlineStyle( nSwNumLevel ); //<-end,zhaojianwei // Bei WW-NoNumbering koennte auch NO_NUMBERING gesetzt // werden. ( Bei normaler Nummerierung muss NO_NUM gesetzt // werden: NO_NUM : Nummerierungs-Pause, diff --git a/sw/source/filter/ww8/ww8par5.cxx b/sw/source/filter/ww8/ww8par5.cxx index 452650e20b3b..5450b904c100 100644 --- a/sw/source/filter/ww8/ww8par5.cxx +++ b/sw/source/filter/ww8/ww8par5.cxx @@ -2617,7 +2617,8 @@ bool SwWW8ImplReader::AddExtraOutlinesAsExtraStyles(SwTOXBase& rBase) sal_uInt16 nStyleLevel = rSI.nOutlineLevel; sal_uInt16 nMaxLevel = rBase.GetLevel(); if ( - nStyleLevel != pFmt->GetOutlineLevel() && + //nStyleLevel != pFmt->GetOutlineLevel() && //#outline level,zhaojianwei + nStyleLevel != (pFmt->GetAttrOutlineLevel()-1) && //<-end,zhaojianwei nStyleLevel < nMaxLevel ) { diff --git a/sw/source/filter/xml/swxml.cxx b/sw/source/filter/xml/swxml.cxx index f27d82ae73e5..2536b9bf57e3 100644 --- a/sw/source/filter/xml/swxml.cxx +++ b/sw/source/filter/xml/swxml.cxx @@ -96,6 +96,10 @@ #include <svx/svdograf.hxx> // <-- +// --> OD 2008-12-17 #i70748# +#include <sfx2/docfilt.hxx> +// <-- + #include <istyleaccess.hxx> #define LOGFILE_AUTHOR "mb93740" @@ -422,9 +426,11 @@ void lcl_AdjustOutlineStylesForOOo( SwDoc& _rDoc ) for ( USHORT n = 1; n < rColls.Count(); ++n ) { SwTxtFmtColl* pColl = rColls[ n ]; - if ( pColl->GetOutlineLevel() != NO_NUMBERING ) + //if ( pColl->GetOutlineLevel() != NO_NUMBERING ) //#outline level zhaojianwei + if ( pColl->IsAssignedToListLevelOfOutlineStyle() ) { - aOutlineLevelAssigned[ pColl->GetOutlineLevel() ] = true; + // aOutlineLevelAssigned[ pColl->GetOutlineLevel() ] = true; + aOutlineLevelAssigned[ pColl->GetAssignedOutlineStyleLevel() ] = true;//<-end,zhaojianwei } for ( BYTE i = 0; i < MAXLEVEL; ++i ) @@ -449,11 +455,12 @@ void lcl_AdjustOutlineStylesForOOo( SwDoc& _rDoc ) // if ( aCreatedDefaultOutlineStyles[ i ] != 0 && !aOutlineLevelAssigned[ i ] ) if ( !aOutlineLevelAssigned[ i ] && aCreatedDefaultOutlineStyles[ i ] != 0 && - aCreatedDefaultOutlineStyles[ i ]->GetOutlineLevel() == NO_NUMBERING ) + ! aCreatedDefaultOutlineStyles[ i ]->IsAssignedToListLevelOfOutlineStyle() ) // <-- { // apply outline level at created default outline style - aCreatedDefaultOutlineStyles[ i ]->SetOutlineLevel( i ); + //aCreatedDefaultOutlineStyles[ i ]->SetOutlineLevel( i ); + aCreatedDefaultOutlineStyles[ i ]->AssignToListLevelOfOutlineStyle(i);//#outline level added by zhaojianwei // apply outline numbering rule, if none is set. const SfxPoolItem& rItem = @@ -961,16 +968,22 @@ ULONG XMLReader::Read( SwDoc &rDoc, const String& rBaseURL, SwPaM &rPaM, const S xObjectResolver = 0; rDoc.release(); - // --> OD 2005-09-06 #i44177# - assure that for documents in OpenOffice.org - // file format the relation between outline numbering rule and styles is - // filled-up accordingly. - // Note: The OpenOffice.org file format, which has no content that applys - // a certain style, which is related to the outline numbering rule, - // has lost the information, that this certain style is related to - // the outline numbering rule. if ( !bOASIS ) { - lcl_AdjustOutlineStylesForOOo( rDoc ); + // --> OD 2005-09-06 #i44177# - assure that for documents in OpenOffice.org + // file format the relation between outline numbering rule and styles is + // filled-up accordingly. + // Note: The OpenOffice.org file format, which has no content that applys + // a certain style, which is related to the outline numbering rule, + // has lost the information, that this certain style is related to + // the outline numbering rule. + // --> OD 2008-12-17 #i70748# - only for templates + if ( pMedium && pMedium->GetFilter() && + pMedium->GetFilter()->IsOwnTemplateFormat() ) + { + lcl_AdjustOutlineStylesForOOo( rDoc ); + } + // <-- // Fix #i58251#: Unfortunately is the static default different to SO7 behaviour, // so we have to set a dynamic default after importing SO7 rDoc.SetDefault( SfxBoolItem( RES_ROW_SPLIT, FALSE ) ); diff --git a/sw/source/filter/xml/xmlfmte.cxx b/sw/source/filter/xml/xmlfmte.cxx index e12c5eb551e3..b8a11b01c441 100644 --- a/sw/source/filter/xml/xmlfmte.cxx +++ b/sw/source/filter/xml/xmlfmte.cxx @@ -330,15 +330,18 @@ void SwXMLAutoStylePoolP::exportStyleAttributes( { OUString sStyleName; aProperty->maValue >>= sStyleName; + // --> OD 2008-11-19 #i70748# + // export also empty list styles if( sStyleName.getLength() ) { OUString sTmp = rExport.GetTextParagraphExport()->GetListAutoStylePool().Find( sStyleName ); if( sTmp.getLength() ) sStyleName = sTmp; - GetExport().AddAttribute( XML_NAMESPACE_STYLE, - sListStyleName, - GetExport().EncodeStyleName( sStyleName ) ); } + GetExport().AddAttribute( XML_NAMESPACE_STYLE, + sListStyleName, + GetExport().EncodeStyleName( sStyleName ) ); + // <-- } break; case CTF_PAGEDESCNAME: diff --git a/sw/source/ui/app/app.src b/sw/source/ui/app/app.src index 839fdb0a1ee8..961e8bdc57a0 100644 --- a/sw/source/ui/app/app.src +++ b/sw/source/ui/app/app.src @@ -473,8 +473,21 @@ String STR_FDLG_TEMPLATE_BUTTON String STR_FDLG_TEMPLATE_NAME { - Text [ en-US ] = "Styles: " ; + //Text [ en-US ] = "Styles: " ; //#outline level,removed by zhaojianwei + Text [ en-US ] = "separated by: " ; //<-end,add by zhaojianwei }; +//#outline level,add by zhaojianwei +String STR_FDLG_OUTLINE_LEVEL +{ + Text [ en-US ] = "Outline: Level "; +}; + +String STR_FDLG_STYLE +{ + Text [ en-US ] = "Style: "; +}; +//<-end + String STR_PAGEOFFSET { @@ -565,7 +578,11 @@ String STR_DONT_ASK_AGAIN { Text [ en-US ] = "~Do not show warning again" ; }; - +// --> OD 2008-04-14 #outlinelevel# +String STR_OUTLINE_NUMBERING +{ + Text [ en-US ] = "Outline Numbering"; +}; ToolBox RID_MODULE_TOOLBOX { HelpID = HID_MODULE_TOOLBOX ; diff --git a/sw/source/ui/app/docsh2.cxx b/sw/source/ui/app/docsh2.cxx index dd163a3216eb..40265dc364b7 100644 --- a/sw/source/ui/app/docsh2.cxx +++ b/sw/source/ui/app/docsh2.cxx @@ -161,6 +161,8 @@ #include "dialog.hrc" #include "swabstdlg.hxx" +#include <ndtxt.hxx> //#outline level,add by zhaojianwei + using namespace ::com::sun::star::ui::dialogs; using namespace ::com::sun::star::lang; using namespace ::com::sun::star::uno; @@ -1253,6 +1255,10 @@ void SwDocShell::Execute(SfxRequest& rReq) { bDone = FALSE; BOOL bCreateHtml = FN_NEW_HTML_DOC == nWhich; + + BOOL bCreateByOutlineLevel = false; //#outline level,add by zhaojianwei + sal_Int32 nTemplateOutlineLevel = 0 ; //#outline level,add by zhaojianwei + String aFileName, aTemplateName; if( pArgs && SFX_ITEM_SET == pArgs->GetItemState( nWhich, FALSE, &pItem ) ) { @@ -1326,35 +1332,85 @@ void SwDocShell::Execute(SfxRequest& rReq) if(!bError) { uno::Reference<XFilePickerControlAccess> xCtrlAcc(xFP, UNO_QUERY); - const USHORT nCount = pDoc->GetTxtFmtColls()->Count(); - Sequence<OUString> aListBoxEntries(nCount); + + //#removed by zhaojianwei + + // const USHORT nCount = pDoc->GetTxtFmtColls()->Count(); + // Sequence<OUString> aListBoxEntries(nCount); + // OUString* pEntries = aListBoxEntries.getArray(); + // sal_Int32 nIdx = 0; + // sal_Int16 nSelect = 0; + // OUString sStartTemplate; + // SwTxtFmtColl *pFnd = 0, *pAny = 0; + // for(USHORT i = 0; i < nCount; ++i) + // { + // SwTxtFmtColl &rTxtColl = + // *pDoc->GetTxtFmtColls()->GetObject( i ); + // if( !rTxtColl.IsDefault() && rTxtColl.IsAtDocNodeSet() ) + // { + // //if( MAXLEVEL >= rTxtColl.GetOutlineLevel() && ( !pFnd || //#outline level,zhaojianwei + //if( rTxtColl.IsAssignedToListLevelOfOutlineStyle() && ( !pFnd || //<-end,zhaojianwei + // pFnd->GetAssignedOutlineStyleLevel() > rTxtColl.GetAssignedOutlineStyleLevel() )) + // { + // nSelect = (sal_Int16)nIdx; + // pFnd = &rTxtColl; + // sStartTemplate = rTxtColl.GetName(); + // } + // else if( !pAny ) + // pAny = &rTxtColl; + // //pEntries[nIdx++] = rTxtColl.GetName(); //#outline level,remove by zhaojianwei + // pEntries[nIdx++] = sStyles + rTxtColl.GetName(); //#outline level,add by zhaojianwei + // } + // } + // if(!sStartTemplate.getLength() && pAny) + // sStartTemplate = pAny->GetName(); + // aListBoxEntries.realloc(nIdx); + //<-end,zhaojianwei + + + //#outline level,add by zhaojianwei + ///////////////////////////////////////////////////////////////////// + + bool bOutline[MAXLEVEL] = {false}; + const SwOutlineNodes& rOutlNds = pDoc->GetNodes().GetOutLineNds(); + if( rOutlNds.Count() ) + { + int nLevel; + for(USHORT n = 0; n < rOutlNds.Count(); ++n ) + if( ( nLevel = rOutlNds[n]->GetTxtNode()->GetAttrOutlineLevel()) > 0 && + ! bOutline[nLevel-1] ) + { + bOutline[nLevel-1] = true; + } + } + + const USHORT nStyleCount = pDoc->GetTxtFmtColls()->Count(); + Sequence<OUString> aListBoxEntries( MAXLEVEL + nStyleCount); OUString* pEntries = aListBoxEntries.getArray(); - sal_Int32 nIdx = 0; - sal_Int16 nSelect = 0; - OUString sStartTemplate; - SwTxtFmtColl *pFnd = 0, *pAny = 0; - for(USHORT i = 0; i < nCount; ++i) + sal_Int32 nIdx = 0 ; + + OUString sOutline( SW_RESSTR(STR_FDLG_OUTLINE_LEVEL) ); + for( USHORT i = 0; i < MAXLEVEL; ++i ) + { + if( bOutline[i] ) + pEntries[nIdx++] = sOutline + String::CreateFromInt32( i+1 ); + } + + OUString sStyle( SW_RESSTR(STR_FDLG_STYLE) ); + for(USHORT i = 0; i < nStyleCount; ++i) { SwTxtFmtColl &rTxtColl = - *pDoc->GetTxtFmtColls()->GetObject( i ); + *pDoc->GetTxtFmtColls()->GetObject( i ); if( !rTxtColl.IsDefault() && rTxtColl.IsAtDocNodeSet() ) { - if( MAXLEVEL >= rTxtColl.GetOutlineLevel() && ( !pFnd || - pFnd->GetOutlineLevel() > rTxtColl.GetOutlineLevel() )) - { - nSelect = (sal_Int16)nIdx; - pFnd = &rTxtColl; - sStartTemplate = rTxtColl.GetName(); - } - else if( !pAny ) - pAny = &rTxtColl; - pEntries[nIdx++] = rTxtColl.GetName(); + pEntries[nIdx++] = sStyle + rTxtColl.GetName(); } } - if(!sStartTemplate.getLength() && pAny) - sStartTemplate = pAny->GetName(); aListBoxEntries.realloc(nIdx); + sal_Int16 nSelect = 0; + ///////////////////////////////////////////////////////////////////// + //<-end,zhaojianwei try { @@ -1384,7 +1440,22 @@ void SwDocShell::Execute(SfxRequest& rReq) ListboxControlActions::GET_SELECTED_ITEM ); OUString sTmpl; aTemplateValue >>= sTmpl; - aTemplateName = sTmpl; + //aTemplateName = sTmpl; //#outline level,removed by zhaojianwei + //#outline level,add by zhaojianwei + + sal_Int32 nColonPos = sTmpl.indexOf( sal_Unicode(':') ); + OUString sPrefix = sTmpl.copy( 0L, nColonPos ); + if( sPrefix.equalsAscii("Style")) + { + aTemplateName = sTmpl.copy( 7L ); //get string behind "Style: " + } + else if( sPrefix.equalsAscii("Outline")) + { + nTemplateOutlineLevel = ( sTmpl.copy( 15L )).toInt32(); //get string behind "Outline: Leve "; + bCreateByOutlineLevel = true; + } + //<-end,zhaojianwei + if ( aFileName.Len() ) { rReq.AppendItem( SfxStringItem( nWhich, aFileName ) ); @@ -1395,19 +1466,35 @@ void SwDocShell::Execute(SfxRequest& rReq) } } - const SwTxtFmtColl* pSplitColl = 0; - if ( aTemplateName.Len() ) - pSplitColl = pDoc->FindTxtFmtCollByName(aTemplateName); - + //const SwTxtFmtColl* pSplitColl = 0; //#outline level,removed by zhaojianwei + // if ( aTemplateName.Len() ) + // pSplitColl = pDoc->FindTxtFmtCollByName(aTemplateName); + //<-end,zhaojianwei if( aFileName.Len() ) { if( PrepareClose( FALSE ) ) { SwWait aWait( *this, TRUE ); - bDone = bCreateHtml - ? pDoc->GenerateHTMLDoc( aFileName, pSplitColl ) - : pDoc->GenerateGlobalDoc( aFileName, pSplitColl ); + //bDone = bCreateHtml //#outline level,removed by zhaojianwei + // ? pDoc->GenerateHTMLDoc( aFileName, pSplitColl ) + // : pDoc->GenerateGlobalDoc( aFileName, pSplitColl ); + if ( bCreateByOutlineLevel ) //add by zhaojianwei + { + bDone = bCreateHtml //#outline level,removed by zhaojianwei + ? pDoc->GenerateHTMLDoc( aFileName, nTemplateOutlineLevel ) + : pDoc->GenerateGlobalDoc( aFileName, nTemplateOutlineLevel ); + } + else + { + const SwTxtFmtColl* pSplitColl = 0; + if ( aTemplateName.Len() ) + pSplitColl = pDoc->FindTxtFmtCollByName(aTemplateName); + bDone = bCreateHtml //#outline level,removed by zhaojianwei + ? pDoc->GenerateHTMLDoc( aFileName, pSplitColl ) + : pDoc->GenerateGlobalDoc( aFileName, pSplitColl ); + } + //<-end,zhaojianwei if( bDone ) { SfxStringItem aName( SID_FILE_NAME, aFileName ); diff --git a/sw/source/ui/app/docst.cxx b/sw/source/ui/app/docst.cxx index 692e054edd54..cd98bb0cb554 100644 --- a/sw/source/ui/app/docst.cxx +++ b/sw/source/ui/app/docst.cxx @@ -85,6 +85,8 @@ #include <list.hxx> // <-- +#include <paratr.hxx> //#outline level,add by zhaojianwei + using namespace ::com::sun::star; /*-------------------------------------------------------------------- @@ -546,6 +548,20 @@ USHORT SwDocShell::Edit( const String &rName, const String &rParent, USHORT nFam } pDStyle->GetCollection()->SetDerivedFrom( pColl ); pDStyle->PresetParent( rParent ); + + //#outline level,add by zhaojianwei + /*When a new paragraph style is created based on a "to outline style + assigned" paragraph style, the outline level attribute and the list + style attribute of the new paragraph style have to be set to 0 + respectively "".*/ + if( pColl->IsAssignedToListLevelOfOutlineStyle()) + { + SwNumRuleItem aItem(aEmptyStr); + pDStyle->GetCollection()->SetFmtAttr( aItem ); + pDStyle->GetCollection()->SetAttrOutlineLevel( 0 ); + } + //<-end,zhaojianwei + } else { diff --git a/sw/source/ui/app/docstyle.cxx b/sw/source/ui/app/docstyle.cxx index c7be232b2813..41814d006339 100644 --- a/sw/source/ui/app/docstyle.cxx +++ b/sw/source/ui/app/docstyle.cxx @@ -1212,7 +1212,13 @@ void SwDocStyleSheet::SetItemSet( const SfxItemSet& rSet, if( pColl != &pColl->GetNextTxtFmtColl() ) pCColl->SetNextTxtFmtColl( pColl->GetNextTxtFmtColl() ); - pCColl->SetOutlineLevel( pColl->GetOutlineLevel() ); + //pCColl->SetOutlineLevel( pColl->GetOutlineLevel() );//#outline level,zhaojianwei + if( pColl->IsAssignedToListLevelOfOutlineStyle()) + pCColl->AssignToListLevelOfOutlineStyle(pColl->GetAssignedOutlineStyleLevel()); + else + pCColl->DeleteAssignmentToListLevelOfOutlineStyle();//<--end,zhaojianwei + + SwTxtFmtColl* pFindFmt; const CommandStruct* pCmds = SwCondCollItem::GetCmds(); diff --git a/sw/source/ui/chrdlg/numpara.cxx b/sw/source/ui/chrdlg/numpara.cxx index ef7f4af3ef83..26f146e628f0 100644 --- a/sw/source/ui/chrdlg/numpara.cxx +++ b/sw/source/ui/chrdlg/numpara.cxx @@ -53,6 +53,9 @@ #include <fmtline.hxx> #include <numpara.hxx> #include <numpara.hrc> +// --> OD 2008-04-14 #outlinelevel# +#include <app.hrc> +// <-- // Globals ****************************************************************** @@ -66,6 +69,9 @@ static USHORT __FAR_DATA aPageRg[] = { SwParagraphNumTabPage::SwParagraphNumTabPage(Window* pParent, const SfxItemSet& rAttr ) : SfxTabPage(pParent, SW_RES(TP_NUMPARA), rAttr), + aOutlineStartFL ( this, SW_RES( FL_OUTLINE_START )), + aOutlineLvFT ( this, SW_RES( FT_OUTLINE_LEVEL )), + aOutlineLvLB ( this, SW_RES( LB_OUTLINE_LEVEL )), aNumberStyleFT ( this, SW_RES( FT_NUMBER_STYLE ) ), aNumberStyleLB ( this, SW_RES( LB_NUMBER_STYLE ) ), aNewStartFL ( this, SW_RES( FL_NEW_START ) ), @@ -77,6 +83,9 @@ SwParagraphNumTabPage::SwParagraphNumTabPage(Window* pParent, aRestartParaCountCB ( this, SW_RES( CB_RESTART_PARACOUNT ) ), aRestartFT ( this, SW_RES( FT_RESTART_NO ) ), aRestartNF ( this, SW_RES( NF_RESTART_PARA ) ), + // --> OD 2008-04-14 #outlinelevel# + msOutlineNumbering( SW_RES( STR_OUTLINE_NUMBERING ) ), + // <-- bModified(FALSE), bCurNumrule(FALSE) { @@ -135,6 +144,18 @@ USHORT* SwParagraphNumTabPage::GetRanges() --------------------------------------------------*/ BOOL SwParagraphNumTabPage::FillItemSet( SfxItemSet& rSet ) { + //<-#outline level, added by zhaojianwei + if( aOutlineLvLB.GetSelectEntryPos() != aOutlineLvLB.GetSavedValue()) + { + USHORT aOutlineLv = aOutlineLvLB.GetSelectEntryPos(); + const SfxUInt16Item* pOldOutlineLv = (const SfxUInt16Item*)GetOldItem( rSet, SID_ATTR_PARA_OUTLINE_LEVEL); + SfxUInt16Item* pOutlineLv = (SfxUInt16Item*)pOldOutlineLv->Clone(); + pOutlineLv->SetValue( aOutlineLv ); + rSet.Put(*pOutlineLv); + delete pOutlineLv; + bModified = TRUE; + } + //<-end if( aNumberStyleLB.GetSelectEntryPos() != aNumberStyleLB.GetSavedValue()) { String aStyle; @@ -178,16 +199,41 @@ BOOL SwParagraphNumTabPage::FillItemSet( SfxItemSet& rSet ) --------------------------------------------------*/ void SwParagraphNumTabPage::Reset( const SfxItemSet& rSet ) { - SfxItemState eItemState = rSet.GetItemState( GetWhich(SID_ATTR_PARA_NUMRULE) ); + BOOL bHasNumberStyle = FALSE; + + SfxItemState eItemState = rSet.GetItemState( GetWhich(SID_ATTR_PARA_OUTLINE_LEVEL) ); + + sal_Int16 nOutlineLv; + if( eItemState >= SFX_ITEM_AVAILABLE ) + { + nOutlineLv = ((const SfxUInt16Item &)rSet.Get( GetWhich(SID_ATTR_PARA_OUTLINE_LEVEL) )).GetValue(); + aOutlineLvLB.SelectEntryPos( nOutlineLv ) ; + } + else + { + aOutlineLvLB.SetNoSelection(); + } + aOutlineLvLB.SaveValue(); + + eItemState = rSet.GetItemState( GetWhich(SID_ATTR_PARA_NUMRULE) ); String aStyle; - BOOL bHasNumberStyle = FALSE; if( eItemState >= SFX_ITEM_AVAILABLE ) { aStyle = ((const SfxStringItem &)rSet.Get( GetWhich(SID_ATTR_PARA_NUMRULE) )).GetValue(); if(!aStyle.Len()) aStyle = aNumberStyleLB.GetEntry(0); - aNumberStyleLB.SelectEntry( aStyle ); + + if( aStyle.EqualsAscii("Outline"))// == String::CreateFromAscii("Outline")) //maybe need modify,zhaojianwei + { + aNumberStyleLB.InsertEntry( msOutlineNumbering ); + aNumberStyleLB.SelectEntry( msOutlineNumbering ); + aNumberStyleLB.RemoveEntry(msOutlineNumbering); + aNumberStyleLB.SaveValue(); + } + else + aNumberStyleLB.SelectEntry( aStyle ); + bHasNumberStyle = TRUE; } else @@ -197,7 +243,6 @@ void SwParagraphNumTabPage::Reset( const SfxItemSet& rSet ) aNumberStyleLB.SaveValue(); - eItemState = rSet.GetItemState( FN_NUMBER_NEWSTART ); if(eItemState > SFX_ITEM_AVAILABLE ) { @@ -256,9 +301,22 @@ void SwParagraphNumTabPage::Reset( const SfxItemSet& rSet ) /*-----------------31.01.98 08:38------------------- --------------------------------------------------*/ +void SwParagraphNumTabPage::DisableOutline() +{ + aOutlineLvFT.Disable(); + aOutlineLvLB.Disable(); +} +void SwParagraphNumTabPage::DisableNumbering() +{ + aNumberStyleFT.Disable(); + aNumberStyleLB.Disable(); +} + +/*-----------------31.01.98 08:38------------------- + +--------------------------------------------------*/ void SwParagraphNumTabPage::EnableNewStart() { - aNewStartFL.Show(); aNewStartCB.Show(); aNewStartNumberCB.Show(); aNewStartNF.Show(); @@ -295,9 +353,14 @@ IMPL_LINK( SwParagraphNumTabPage, LineCountHdl_Impl, CheckBox* , EMPTYARG) --------------------------------------------------*/ IMPL_LINK( SwParagraphNumTabPage, StyleHdl_Impl, ListBox*, pBox ) { +// String dd=aNumberStyleLB.GetSavedValue(); +// if( msOutlineNumbering == dd) + { + } BOOL bEnable = bCurNumrule || pBox->GetSelectEntryPos() > 0; aNewStartCB.Enable(bEnable); NewStartHdl_Impl(&aNewStartCB); + return 0; } diff --git a/sw/source/ui/chrdlg/numpara.hrc b/sw/source/ui/chrdlg/numpara.hrc index 20730715d925..97dcb5707e12 100644 --- a/sw/source/ui/chrdlg/numpara.hrc +++ b/sw/source/ui/chrdlg/numpara.hrc @@ -44,7 +44,9 @@ #define CB_RESTART_PARACOUNT 9 #define FT_RESTART_NO 10 #define NF_RESTART_PARA 11 - +#define FL_OUTLINE_START 12 +#define LB_OUTLINE_LEVEL 13 +#define FT_OUTLINE_LEVEL 14 // ********************************************************************** #endif diff --git a/sw/source/ui/chrdlg/numpara.src b/sw/source/ui/chrdlg/numpara.src index a2b09a55f8ab..e83487d1cc64 100644 --- a/sw/source/ui/chrdlg/numpara.src +++ b/sw/source/ui/chrdlg/numpara.src @@ -40,13 +40,19 @@ TabPage TP_NUMPARA HelpID = HID_NUMPARA ; Size = MAP_APPFONT ( 260 , 185 ) ; Hide = TRUE ; - FixedText FT_NUMBER_STYLE + FixedLine FL_OUTLINE_START + { + Pos = MAP_APPFONT ( 6 , 3 ) ; + Size = MAP_APPFONT ( 248 , 8 ) ; + Text [ en-US ] = "Outline" ; + }; + FixedText FT_OUTLINE_LEVEL { Pos = MAP_APPFONT ( 12 , 16 ) ; Size = MAP_APPFONT ( 112 , 8 ) ; - Text [ en-US ] = "Numbering Style" ; + Text [ en-US ] = "Outline level" ; }; - ListBox LB_NUMBER_STYLE + ListBox LB_OUTLINE_LEVEL { Pos = MAP_APPFONT ( 130 , 14 ) ; Size = MAP_APPFONT ( 118 , 65 ) ; @@ -54,19 +60,59 @@ TabPage TP_NUMPARA Border = TRUE ; StringList [ en-US ] = { - < "None" ; > ; + < "Body text" ; > ; + < "Level 1" ; >; + < "Level 2" ; >; + < "Level 3" ; >; + < "Level 4" ; >; + < "Level 5" ; >; + < "Level 6" ; >; + < "Level 7" ; >; + < "Level 8" ; >; + < "Level 9" ; >; + < "Level 10" ; >; + }; + StringList [ x-comment ] = + { + < "Level 0" ; > ; + < "Level 1" ; >; + < "Level 2" ; >; + < "Level 3" ; >; + < "Level 4" ; >; + < "Level 5" ; >; + < "Level 6" ; >; + < "Level 7" ; >; + < "Level 8" ; >; + < "Level 9" ; >; + < "Level 10" ; >; }; }; FixedLine FL_NEW_START { Pos = MAP_APPFONT ( 6 , 32 ) ; Size = MAP_APPFONT ( 248 , 8 ) ; - Hide = TRUE ; Text [ en-US ] = "Numbering" ; }; - TriStateBox CB_NEW_START + FixedText FT_NUMBER_STYLE { Pos = MAP_APPFONT ( 12 , 43 ) ; + Size = MAP_APPFONT ( 112 , 8 ) ; + Text [ en-US ] = "Numbering Style" ; + }; + ListBox LB_NUMBER_STYLE + { + Pos = MAP_APPFONT ( 130 , 41 ) ; + Size = MAP_APPFONT ( 118 , 65 ) ; + DropDown = TRUE ; + Border = TRUE ; + StringList [ en-US ] = + { + < "None" ; > ; + }; + }; + TriStateBox CB_NEW_START + { + Pos = MAP_APPFONT ( 12 , 58 ) ; Size = MAP_APPFONT ( 160 , 10 ) ; Hide = TRUE ; TabStop = TRUE ; @@ -74,7 +120,7 @@ TabPage TP_NUMPARA }; TriStateBox CB_NUMBER_NEW_START { - Pos = MAP_APPFONT ( 21 , 58 ) ; + Pos = MAP_APPFONT ( 21 , 73 ) ; Size = MAP_APPFONT ( 103 , 10 ) ; Hide = TRUE ; Disable = TRUE ; @@ -83,7 +129,7 @@ TabPage TP_NUMPARA NumericField NF_NEW_START { Border = TRUE ; - Pos = MAP_APPFONT ( 130 , 57 ) ; + Pos = MAP_APPFONT ( 130 , 72 ) ; Size = MAP_APPFONT ( 26 , 12 ) ; TabStop = TRUE ; Left = TRUE ; @@ -99,27 +145,27 @@ TabPage TP_NUMPARA }; FixedLine FL_COUNT_PARA { - Pos = MAP_APPFONT ( 6 , 75 ) ; + Pos = MAP_APPFONT ( 6 , 89 ) ; Size = MAP_APPFONT ( 248 , 8 ) ; Text [ en-US ] = "Line numbering" ; }; TriStateBox CB_COUNT_PARA { - Pos = MAP_APPFONT ( 12 , 86 ) ; + Pos = MAP_APPFONT ( 12 , 100 ) ; Size = MAP_APPFONT ( 160 , 10 ) ; TabStop = TRUE ; Text [ en-US ] = "~Include this paragraph in line numbering" ; }; TriStateBox CB_RESTART_PARACOUNT { - Pos = MAP_APPFONT ( 12 , 100 ) ; + Pos = MAP_APPFONT ( 12 , 116 ) ; Size = MAP_APPFONT ( 160 , 10 ) ; TabStop = TRUE ; Text [ en-US ] = "Rest~art at this paragraph" ; }; FixedText FT_RESTART_NO { - Pos = MAP_APPFONT ( 21 , 116 ) ; + Pos = MAP_APPFONT ( 21 , 132 ) ; Size = MAP_APPFONT ( 103 , 8 ) ; Disable = TRUE ; Text [ en-US ] = "~Start with" ; @@ -127,7 +173,7 @@ TabPage TP_NUMPARA NumericField NF_RESTART_PARA { Border = TRUE ; - Pos = MAP_APPFONT ( 130 , 114 ) ; + Pos = MAP_APPFONT ( 130 , 130 ) ; Size = MAP_APPFONT ( 26 , 12 ) ; TabStop = TRUE ; Left = TRUE ; diff --git a/sw/source/ui/chrdlg/paradlg.src b/sw/source/ui/chrdlg/paradlg.src index 3461668eeba7..54fb712cb22f 100644 --- a/sw/source/ui/chrdlg/paradlg.src +++ b/sw/source/ui/chrdlg/paradlg.src @@ -60,7 +60,7 @@ TabDialog DLG_PARA PageItem { Identifier = TP_PARA_EXT ; - /* ### ACHTUNG: Neuer Text in Resource? Textflu : Textflu */ + /* ### ACHTUNG: Neuer Text in Resource? Textflu?: Textflu?*/ Text [ en-US ] = "Text Flow" ; PageResID = TP_PARA_EXT ; }; @@ -72,7 +72,7 @@ TabDialog DLG_PARA PageItem { Identifier = TP_NUMPARA ; - Text [ en-US ] = "Numbering" ; + Text [ en-US ] = "Outline & Numbering" ; }; PageItem { diff --git a/sw/source/ui/chrdlg/pardlg.cxx b/sw/source/ui/chrdlg/pardlg.cxx index a6a100943fa8..fd8e22e88843 100644 --- a/sw/source/ui/chrdlg/pardlg.cxx +++ b/sw/source/ui/chrdlg/pardlg.cxx @@ -244,6 +244,13 @@ void __EXPORT SwParaDlg::PageCreated(USHORT nId, SfxTabPage& rPage) } else if( TP_NUMPARA == nId) { + //-->#outline level,added by zhaojianwei + SwTxtFmtColl* pTmpColl = rSh.GetCurTxtFmtColl(); + if( pTmpColl && pTmpColl->IsAssignedToListLevelOfOutlineStyle() ) + { + ((SwParagraphNumTabPage&)rPage).DisableOutline() ; + }//<-end + ((SwParagraphNumTabPage&)rPage).EnableNewStart(); ListBox & rBox = ((SwParagraphNumTabPage&)rPage).GetStyleBox(); SfxStyleSheetBasePool* pPool = rView.GetDocShell()->GetStyleSheetPool(); diff --git a/sw/source/ui/docvw/edtwin.cxx b/sw/source/ui/docvw/edtwin.cxx index 2b0b7c0931e1..a68acd0525a4 100644 --- a/sw/source/ui/docvw/edtwin.cxx +++ b/sw/source/ui/docvw/edtwin.cxx @@ -1443,6 +1443,7 @@ void SwEditWin::KeyInput(const KeyEvent &rKEvt) KS_NumIndentInc, KS_NumIndentDec, // <- #i23725# + KS_OutlineLvOff, KS_NextCell, KS_PrevCell, KS_OutlineUp, KS_OutlineDown, KS_GlossaryExpand, KS_NextPrevGlossary, KS_AutoFmtByInput, @@ -1764,7 +1765,7 @@ KEYINPUT_CHECKTABLE_INSDEL: !rSh.GetCurNumRule()->IsOutlineRule() && !rSh.HasSelection() && rSh.IsSttPara() && rSh.IsEndPara() ) - eKeyState = KS_NumOff; + eKeyState = KS_NumOff, eNextKeyState = KS_OutlineLvOff; //RETURN fuer neuen Absatz mit AutoFormatierung else if( pACfg && pACfg->IsAutoFmtByInput() && @@ -1934,7 +1935,9 @@ KEYINPUT_CHECKTABLE_INSDEL: SwTxtFmtColl* pColl = rSh.GetCurTxtFmtColl(); if( pColl && //0 <= pColl->GetOutlineLevel() && #i24560# - MAXLEVEL - 1 > pColl->GetOutlineLevel() ) + //MAXLEVEL - 1 > pColl->GetOutlineLevel() )//#outline level,zhaojianwei + pColl->IsAssignedToListLevelOfOutlineStyle() + && MAXLEVEL-1 > pColl->GetAssignedOutlineStyleLevel() )//<-end,zhaojianwei eKeyState = KS_OutlineDown; } } @@ -1984,8 +1987,11 @@ KEYINPUT_CHECKTABLE_INSDEL: if( rSh.IsSttOfPara() && !rSh.HasReadonlySel() ) { SwTxtFmtColl* pColl = rSh.GetCurTxtFmtColl(); - if( pColl && 0 < pColl->GetOutlineLevel() && - MAXLEVEL - 1 >= pColl->GetOutlineLevel() ) + //if( pColl && 0 < pColl->GetOutlineLevel() && //#outline level,zhaojianwei + // MAXLEVEL - 1 >= pColl->GetOutlineLevel() ) + if( pColl && + pColl->IsAssignedToListLevelOfOutlineStyle() && + 0 < pColl->GetAssignedOutlineStyleLevel()) eKeyState = KS_OutlineUp; } } @@ -2331,6 +2337,9 @@ KEYINPUT_CHECKTABLE_INSDEL: case KS_NumOff: // Shellwechsel - also vorher aufzeichnen rSh.DelNumRules(); + eKeyState = eNextKeyState; + break; + case KS_OutlineLvOff: // delete autofmt outlinelevel later break; case KS_NumDown: diff --git a/sw/source/ui/fmtui/tmpdlg.cxx b/sw/source/ui/fmtui/tmpdlg.cxx index 492e72048131..d7e4225c61c4 100644 --- a/sw/source/ui/fmtui/tmpdlg.cxx +++ b/sw/source/ui/fmtui/tmpdlg.cxx @@ -471,6 +471,14 @@ void SwTemplateDlg::PageCreated( USHORT nId, SfxTabPage &rPage ) break; case TP_NUMPARA: { + //-->#outlinelevel added by zhaojianwei + // handle if the current paragraph style is assigned to a list level of outline style, + SwTxtFmtColl* pTmpColl = pWrtShell->FindTxtFmtCollByName( GetStyleSheet().GetName() ); + if( pTmpColl && pTmpColl->IsAssignedToListLevelOfOutlineStyle() ) + { + ((SwParagraphNumTabPage&)rPage).DisableOutline() ; + ((SwParagraphNumTabPage&)rPage).DisableNumbering(); + }//<-end ListBox & rBox = ((SwParagraphNumTabPage&)rPage).GetStyleBox(); SfxStyleSheetBasePool* pPool = pWrtShell->GetView().GetDocShell()->GetStyleSheetPool(); pPool->SetSearchMask(SFX_STYLE_FAMILY_PSEUDO, SFXSTYLEBIT_ALL); diff --git a/sw/source/ui/fmtui/tmpdlg.src b/sw/source/ui/fmtui/tmpdlg.src index fad12491e975..d038a59ace20 100644 --- a/sw/source/ui/fmtui/tmpdlg.src +++ b/sw/source/ui/fmtui/tmpdlg.src @@ -105,7 +105,7 @@ TabDialog DLG_TEMPLATE_2 PageItem { Identifier = TP_PARA_EXT ; - /* ### ACHTUNG: Neuer Text in Resource? Textflu : Textflu */ + /* ### ACHTUNG: Neuer Text in Resource? Textflu?: Textflu?*/ Text [ en-US ] = "Text Flow" ; PageResID = TP_PARA_EXT ; }; @@ -141,7 +141,7 @@ TabDialog DLG_TEMPLATE_2 PageItem { Identifier = TP_NUMPARA ; - Text [ en-US ] = "Numbering" ; + Text [ en-US ] = "Outline & Numbering" ; }; PageItem { diff --git a/sw/source/ui/inc/app.hrc b/sw/source/ui/inc/app.hrc index 3013fcba382d..fcca0b6ceaf7 100644 --- a/sw/source/ui/inc/app.hrc +++ b/sw/source/ui/inc/app.hrc @@ -169,8 +169,15 @@ #define STR_WRITER_DOCUMENT_FULLTYPE (RC_APP_BEGIN + 100) #define STR_ABSTRACT_TITLE (RC_APP_BEGIN + 102) #define STR_DONT_ASK_AGAIN (RC_APP_BEGIN + 103) - -#define APP_ACT_END STR_DONT_ASK_AGAIN +// --> OD 2008-04-14 #outlinelevel# +#define STR_OUTLINE_NUMBERING (RC_APP_BEGIN + 104) +// <-- +//#outline level,zhaojianwei +#define STR_FDLG_OUTLINE_LEVEL (RC_APP_BEGIN + 105) +#define STR_FDLG_STYLE (RC_APP_BEGIN + 106) +//<-end,zhaojianwei + +#define APP_ACT_END STR_FDLG_STYLE #if APP_ACT_END > RC_APP_END #error Resource-Id Ueberlauf in #file, #line diff --git a/sw/source/ui/inc/numpara.hxx b/sw/source/ui/inc/numpara.hxx index 246b47232424..69034bed122f 100644 --- a/sw/source/ui/inc/numpara.hxx +++ b/sw/source/ui/inc/numpara.hxx @@ -47,6 +47,10 @@ ---------------------------------------------------------------------------*/ class SwParagraphNumTabPage : public SfxTabPage { + FixedLine aOutlineStartFL; + FixedText aOutlineLvFT; + ListBox aOutlineLvLB; + FixedText aNumberStyleFT; ListBox aNumberStyleLB; @@ -61,6 +65,10 @@ class SwParagraphNumTabPage : public SfxTabPage FixedText aRestartFT; NumericField aRestartNF; + // --> OD 2008-04-14 #outlinelevel# + const String msOutlineNumbering; + // <-- + BOOL bModified : 1; BOOL bCurNumrule : 1; @@ -82,9 +90,10 @@ public: virtual void Reset( const SfxItemSet& rSet ); void EnableNewStart(); + void DisableOutline(); + void DisableNumbering(); ListBox& GetStyleBox() {return aNumberStyleLB;}; - }; diff --git a/sw/source/ui/inc/swuicnttab.hxx b/sw/source/ui/inc/swuicnttab.hxx index 2ef8bb677954..7f7ec6cbebef 100644 --- a/sw/source/ui/inc/swuicnttab.hxx +++ b/sw/source/ui/inc/swuicnttab.hxx @@ -163,7 +163,7 @@ class SwTOXSelectTabPage : public SfxTabPage //content FixedLine aCreateFromFL; // content, user, illustration CheckBox aFromHeadingsCB; - PushButton aChapterDlgPB; +// PushButton aChapterDlgPB; //#outline level,removed by zhaojianwei CheckBox aAddStylesCB; PushButton aAddStylesPB; //user @@ -234,7 +234,7 @@ class SwTOXSelectTabPage : public SfxTabPage DECL_LINK(TOXTypeHdl, ListBox* ); DECL_LINK(TOXAreaHdl, ListBox* ); - DECL_LINK(ChapterHdl, PushButton* ); +// DECL_LINK(ChapterHdl, PushButton* ); //#outline level,removed by zhaojianwei DECL_LINK(AddStylesHdl, PushButton* ); DECL_LINK(MenuEnableHdl, Menu*); DECL_LINK(MenuExecuteHdl, Menu*); diff --git a/sw/source/ui/index/cnttab.cxx b/sw/source/ui/index/cnttab.cxx index 680220b96be0..9eeaa42ccaa4 100644 --- a/sw/source/ui/index/cnttab.cxx +++ b/sw/source/ui/index/cnttab.cxx @@ -643,12 +643,14 @@ IMPL_LINK( SwMultiTOXTabDialog, ShowPreviewHdl, CheckBox *, pBox ) sal_Bool SwMultiTOXTabDialog::IsNoNum(SwWrtShell& rSh, const String& rName) { SwTxtFmtColl* pColl = rSh.GetParaStyle(rName); - if(pColl && pColl->GetOutlineLevel() == NO_NUMBERING) + //if(pColl && pColl->GetOutlineLevel() == NO_NUMBERING) //#outline level,zhaojianwei + if(pColl && ! pColl->IsAssignedToListLevelOfOutlineStyle()) //<-end,zhaojianwei return sal_True; sal_uInt16 nId = SwStyleNameMapper::GetPoolIdFromUIName(rName, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL); if(nId != USHRT_MAX && - rSh.GetTxtCollFromPool(nId)->GetOutlineLevel() == NO_NUMBERING) + //rSh.GetTxtCollFromPool(nId)->GetOutlineLevel() == NO_NUMBERING) //#outline level,zhaojianwei + ! rSh.GetTxtCollFromPool(nId)->IsAssignedToListLevelOfOutlineStyle()) //<-end,zhaojianwei return sal_True; return sal_False; @@ -966,7 +968,7 @@ SwTOXSelectTabPage::SwTOXSelectTabPage(Window* pParent, const SfxItemSet& rAttrS aCreateFromFL( this, SW_RES(FL_CREATEFROM )), aFromHeadingsCB( this, SW_RES(CB_FROMHEADINGS )), - aChapterDlgPB( this, SW_RES(PB_CHAPTERDLG )), +// aChapterDlgPB( this, SW_RES(PB_CHAPTERDLG )),//#outline level,removed by zhaojianwei aAddStylesCB( this, SW_RES(CB_ADDSTYLES )), aAddStylesPB( this, SW_RES(PB_ADDSTYLES )), @@ -1043,7 +1045,7 @@ SwTOXSelectTabPage::SwTOXSelectTabPage(Window* pParent, const SfxItemSet& rAttrS aTypeLB.SetSelectHdl(LINK(this, SwTOXSelectTabPage, TOXTypeHdl)); aAddStylesPB.SetClickHdl(LINK(this, SwTOXSelectTabPage, AddStylesHdl)); - aChapterDlgPB.SetClickHdl(LINK(this, SwTOXSelectTabPage, ChapterHdl)); + //aChapterDlgPB.SetClickHdl(LINK(this, SwTOXSelectTabPage, ChapterHdl));//#outline level,removed by zhaojianwei PopupMenu* pMenu = aAutoMarkPB.GetPopupMenu(); pMenu->SetActivateHdl(LINK(this, SwTOXSelectTabPage, MenuEnableHdl)); @@ -1221,7 +1223,7 @@ void SwTOXSelectTabPage::ApplyTOXDescription() if(TOX_CONTENT == aCurType.eType) { aFromHeadingsCB.Check( 0 != (nCreateType & nsSwTOXElement::TOX_OUTLINELEVEL) ); - aChapterDlgPB.Enable(aFromHeadingsCB.IsChecked()); + //aChapterDlgPB.Enable(aFromHeadingsCB.IsChecked());//#outline level,removed by zhaojianwei aAddStylesCB.SetText(sAddStyleContent); aAddStylesPB.Enable(aAddStylesCB.IsChecked()); } @@ -1485,7 +1487,7 @@ IMPL_LINK(SwTOXSelectTabPage, TOXTypeHdl, ListBox*, pBox) aAreaFL.Show( 0 != (nType & (TO_CONTENT|TO_ILLUSTRATION|TO_USER|TO_INDEX|TO_TABLE|TO_OBJECT)) ); aFromHeadingsCB.Show( 0 != (nType & (TO_CONTENT)) ); - aChapterDlgPB.Show( 0 != (nType & (TO_CONTENT)) ); + // aChapterDlgPB.Show( 0 != (nType & (TO_CONTENT)) );//#outline level,removed by zhaojianwei aAddStylesCB.Show( 0 != (nType & (TO_CONTENT|TO_USER)) ); aAddStylesPB.Show( 0 != (nType & (TO_CONTENT|TO_USER)) ); @@ -1517,13 +1519,14 @@ IMPL_LINK(SwTOXSelectTabPage, TOXTypeHdl, ListBox*, pBox) aSortAlgorithmFT.Show(bEnableSortLanguage); aSortAlgorithmLB.Show(bEnableSortLanguage); - if(nType & TO_CONTENT) - { - Point aPos(aAddStylesPB.GetPosPixel()); - aPos.X() = aChapterDlgPB.GetPosPixel().X(); - aAddStylesPB.SetPosPixel(aPos); - } - else if( nType & TO_ILLUSTRATION ) + //if(nType & TO_CONTENT) //#outline level,removed by zhaojianwei + //{ + //Point aPos(aAddStylesPB.GetPosPixel()); + //aPos.X() = aChapterDlgPB.GetPosPixel().X(); + //aAddStylesPB.SetPosPixel(aPos); + //} + //else if( nType & TO_ILLUSTRATION )//<-removed end. + if( nType & TO_ILLUSTRATION ) //add by zhaojianwei aCaptionSequenceLB.SelectEntry( SwStyleNameMapper::GetUIName( RES_POOLCOLL_LABEL_ABB, aEmptyStr )); else if( nType & TO_TABLE ) @@ -1534,7 +1537,7 @@ IMPL_LINK(SwTOXSelectTabPage, TOXTypeHdl, ListBox*, pBox) aAddStylesCB.SetText(sAddStyleUser); // move left! Point aPos(aAddStylesPB.GetPosPixel()); - aPos.X() = aChapterDlgPB.GetPosPixel().X(); + // aPos.X() = aChapterDlgPB.GetPosPixel().X(); aPos.X() -= 2 * aAddStylesPB.GetSizePixel().Width(); aAddStylesPB.SetPosPixel(aPos); } @@ -1598,7 +1601,7 @@ IMPL_LINK(SwTOXSelectTabPage, CheckBoxHdl, CheckBox*, pBox ) pBox->Check(sal_True); } aAddStylesPB.Enable(aAddStylesCB.IsChecked()); - aChapterDlgPB.Enable(aFromHeadingsCB.IsChecked()); + //aChapterDlgPB.Enable(aFromHeadingsCB.IsChecked());//#outline level,removed by zhaojianwei } if(TOX_USER == aCurType.eType) { @@ -1681,42 +1684,45 @@ IMPL_LINK(SwTOXSelectTabPage, TOXAreaHdl, ListBox*, pBox) } return 0; } -/* -----------------14.06.99 13:10------------------- - - --------------------------------------------------*/ -IMPL_LINK(SwTOXSelectTabPage, ChapterHdl, PushButton*, pButton) -{ - SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog(); - SwWrtShell& rSh = pTOXDlg->GetWrtShell(); - - SfxItemSet aTmp(rSh.GetView().GetPool(), FN_PARAM_1, FN_PARAM_1); - SwOutlineTabDialog* pDlg = new SwOutlineTabDialog(pButton, &aTmp, rSh); - if(RET_OK == pDlg->Execute()) - { - CurTOXType aCurType = pTOXDlg->GetCurrentTOXType(); - SwForm* pForm = ((SwMultiTOXTabDialog*)GetTabDialog())->GetForm(aCurType); - // jetzt muss ueberprueft werden, ob dem sdbcx::Index Ueberschriftenvorlagen - // zugewiesen wurden - String sStr; - for(sal_uInt16 i = 0; i < MAXLEVEL; i++) - { - sal_Bool bNum = !SwMultiTOXTabDialog::IsNoNum(rSh, pForm->GetTemplate( i + 1 )); - if(bNum) - { - //es gibt getrennte Resourcebereiche fuer die Inhaltsverzeichnisse - if(i < 5) - SwStyleNameMapper::FillUIName( static_cast< sal_uInt16 >(RES_POOLCOLL_TOX_CNTNT1 + i), sStr ); - else - SwStyleNameMapper::FillUIName( static_cast< sal_uInt16 >(RES_POOLCOLL_TOX_CNTNT6 + i - 5), sStr ); - pForm->SetTemplate( i + 1, sStr ); - } - } - - } - delete pDlg; - return 0; -} +//#outline level, removed by zhaojianwei +//It is no longer used! +///* -----------------14.06.99 13:10------------------- +// +// --------------------------------------------------*/ +//IMPL_LINK(SwTOXSelectTabPage, ChapterHdl, PushButton*, pButton) +//{ +// SwMultiTOXTabDialog* pTOXDlg = (SwMultiTOXTabDialog*)GetTabDialog(); +// SwWrtShell& rSh = pTOXDlg->GetWrtShell(); +// +// SfxItemSet aTmp(rSh.GetView().GetPool(), FN_PARAM_1, FN_PARAM_1); +// SwOutlineTabDialog* pDlg = new SwOutlineTabDialog(pButton, &aTmp, rSh); +// +// if(RET_OK == pDlg->Execute()) +// { +// CurTOXType aCurType = pTOXDlg->GetCurrentTOXType(); +// SwForm* pForm = ((SwMultiTOXTabDialog*)GetTabDialog())->GetForm(aCurType); +// // jetzt muss ueberprueft werden, ob dem sdbcx::Index Ueberschriftenvorlagen +// // zugewiesen wurden +// String sStr; +// for(sal_uInt16 i = 0; i < MAXLEVEL; i++) +// { +// sal_Bool bNum = !SwMultiTOXTabDialog::IsNoNum(rSh, pForm->GetTemplate( i + 1 )); +// if(bNum) +// { +// //es gibt getrennte Resourcebereiche fuer die Inhaltsverzeichnisse +// if(i < 5) +// SwStyleNameMapper::FillUIName( static_cast< sal_uInt16 >(RES_POOLCOLL_TOX_CNTNT1 + i), sStr ); +// else +// SwStyleNameMapper::FillUIName( static_cast< sal_uInt16 >(RES_POOLCOLL_TOX_CNTNT6 + i - 5), sStr ); +// pForm->SetTemplate( i + 1, sStr ); +// } +// } +// +// } +// delete pDlg; +// return 0; +//} /* -----------------14.06.99 13:10------------------- --------------------------------------------------*/ diff --git a/sw/source/ui/index/cnttab.src b/sw/source/ui/index/cnttab.src index f921ad182daf..1bccc6c27765 100644 --- a/sw/source/ui/index/cnttab.src +++ b/sw/source/ui/index/cnttab.src @@ -226,13 +226,15 @@ TabPage TP_TOX_SELECT Check = TRUE; Text [ en-US ] = "Outline"; }; - PushButton PB_CHAPTERDLG +// #outline level,removed by zhaojianwei +/* PushButton PB_CHAPTERDLG { Pos = MAP_APPFONT ( 115 , 98 ) ; Size = MAP_APPFONT ( 12 , 12 ) ; Text = "~..." ; TabStop = TRUE ; }; +*/ CheckBox CB_ADDSTYLES { Pos = MAP_APPFONT ( 12 , 115 ) ; diff --git a/sw/source/ui/misc/outline.cxx b/sw/source/ui/misc/outline.cxx index b7892834f48b..57d652463a95 100644 --- a/sw/source/ui/misc/outline.cxx +++ b/sw/source/ui/misc/outline.cxx @@ -87,6 +87,9 @@ #include <unomid.h> #include <IDocumentOutlineNodes.hxx> +// --> OD 2008-04-14 #outlinelevel# +#include <app.hrc> +// <-- using namespace ::com::sun::star; @@ -234,6 +237,9 @@ SwOutlineTabDialog::SwOutlineTabDialog(Window* pParent, pChapterNumRules(SW_MOD()->GetChapterNumRules()), bModified(rWrtSh.IsModified()) { + // --> OD 2008-04-14 #outlinelevel# + SetText( SW_RES( STR_OUTLINE_NUMBERING ) ); + // <-- PushButton* pUserButton = GetUserButton(); pUserButton->SetText(SW_RES(ST_FORM)); pUserButton->SetHelpId(HID_OUTLINE_FORM); @@ -265,9 +271,15 @@ SwOutlineTabDialog::SwOutlineTabDialog(Window* pParent, SwTxtFmtColl &rTxtColl = rWrtSh.GetTxtFmtColl(i); if(!rTxtColl.IsDefault()) { - BYTE nOutLevel = rTxtColl.GetOutlineLevel(); - if(nOutLevel != NO_NUMBERING) + //BYTE nOutLevel = rTxtColl.GetOutlineLevel(); //<-#outline level, removed out by zhaojianwei + //if(nOutLevel != NO_NUMBERING) + //->added by zhaojianwei + if(rTxtColl.IsAssignedToListLevelOfOutlineStyle()) + { + int nOutLevel = rTxtColl.GetAssignedOutlineStyleLevel(); aCollNames[ nOutLevel ] = rTxtColl.GetName(); + } + //<-end } } } @@ -396,7 +408,8 @@ USHORT SwOutlineTabDialog::GetLevel(const String &rFmtName) const if(aCollNames[i] == rFmtName) return i; } - return NO_NUMBERING; + return MAXLEVEL;//NO_NUMBERING; //#outline level,zhaojianwei + } /* -----------------07.07.98 16:30------------------- * @@ -422,13 +435,34 @@ short SwOutlineTabDialog::Ok() SwTxtFmtColl &rTxtColl = rWrtSh.GetTxtFmtColl(i); if( !rTxtColl.IsDefault() ) { - rTxtColl.SetOutlineLevel( (BYTE)GetLevel(rTxtColl.GetName())); + //rTxtColl.SetOutlineLevel( (BYTE)GetLevel(rTxtColl.GetName()));//#outline level,removed by zhaojianwei const SfxPoolItem & rItem = rTxtColl.GetFmtAttr(RES_PARATR_NUMRULE, FALSE); - if ((BYTE)GetLevel(rTxtColl.GetName()) == NO_NUMBERING) + //if ((BYTE)GetLevel(rTxtColl.GetName()) == NO_NUMBERING) //#outline level,removed by zhaojianwei + //{ + // if (static_cast<const SwNumRuleItem &>(rItem).GetValue() == + // pOutlineRule->GetName()) + // { + // rTxtColl.ResetFmtAttr(RES_PARATR_NUMRULE); + // } + //} + //else + //{ + // if (static_cast<const SwNumRuleItem &>(rItem).GetValue() != + // pOutlineRule->GetName()) + // { + // SwNumRuleItem aItem(pOutlineRule->GetName()); + // rTxtColl.SetFmtAttr(aItem); + // } + //} + if ((BYTE)GetLevel(rTxtColl.GetName()) == MAXLEVEL) //add by zhaojianwei { + if(rTxtColl.IsAssignedToListLevelOfOutlineStyle()) + { + rTxtColl.DeleteAssignmentToListLevelOfOutlineStyle(); + } if (static_cast<const SwNumRuleItem &>(rItem).GetValue() == pOutlineRule->GetName()) { @@ -437,13 +471,15 @@ short SwOutlineTabDialog::Ok() } else { + rTxtColl.AssignToListLevelOfOutlineStyle(GetLevel(rTxtColl.GetName())); + if (static_cast<const SwNumRuleItem &>(rItem).GetValue() != pOutlineRule->GetName()) { SwNumRuleItem aItem(pOutlineRule->GetName()); rTxtColl.SetFmtAttr(aItem); } - } + } //<-end,zhaojianwei } } @@ -455,27 +491,74 @@ short SwOutlineTabDialog::Ok() SwTxtFmtColl* pColl = rWrtSh.FindTxtFmtCollByName( sHeadline ); if( !pColl ) { - if( !aCollNames[i].Len() ) + //if( !aCollNames[i].Len() ) //#outline level,removed by zhaojianwei + //{ + // SwTxtFmtColl* pTxtColl = rWrtSh.GetTxtCollFromPool( + // static_cast< USHORT >(RES_POOLCOLL_HEADLINE1 + i) ); + // pTxtColl->SetOutlineLevel( NO_NUMBERING ); + // pTxtColl->ResetFmtAttr(RES_PARATR_NUMRULE); + //} + //else if(aCollNames[i] != sHeadline) + //{ + // SwTxtFmtColl* pTxtColl = rWrtSh.GetParaStyle( + // aCollNames[i], SwWrtShell::GETSTYLE_CREATESOME); + // if(pTxtColl) + // { + // pTxtColl->SetOutlineLevel( static_cast< BYTE >(i) ); + + // SwNumRuleItem aItem(pOutlineRule->GetName()); + // pTxtColl->SetFmtAttr(aItem); + // } + //} + if(aCollNames[i] != sHeadline)//->added by zhaojianwei { SwTxtFmtColl* pTxtColl = rWrtSh.GetTxtCollFromPool( - static_cast< USHORT >(RES_POOLCOLL_HEADLINE1 + i) ); - pTxtColl->SetOutlineLevel( NO_NUMBERING ); + static_cast< USHORT >(RES_POOLCOLL_HEADLINE1 + i) ); + pTxtColl->DeleteAssignmentToListLevelOfOutlineStyle(); pTxtColl->ResetFmtAttr(RES_PARATR_NUMRULE); - } - else if(aCollNames[i] != sHeadline) - { - SwTxtFmtColl* pTxtColl = rWrtSh.GetParaStyle( - aCollNames[i], SwWrtShell::GETSTYLE_CREATESOME); - if(pTxtColl) + + if( aCollNames[i].Len() ) { - pTxtColl->SetOutlineLevel( static_cast< BYTE >(i) ); + pTxtColl = rWrtSh.GetParaStyle( + aCollNames[i], SwWrtShell::GETSTYLE_CREATESOME); + if(pTxtColl) + { + pTxtColl->AssignToListLevelOfOutlineStyle(i); + SwNumRuleItem aItem(pOutlineRule->GetName()); + pTxtColl->SetFmtAttr(aItem); + } + } + }//<--end,zhaojianwei + } + } - SwNumRuleItem aItem(pOutlineRule->GetName()); - pTxtColl->SetFmtAttr(aItem); + //#outline level,add by zhaojianwei + /* When a paragraph style is assigned to a list level of the outline style, + the outline level attribute and the list style attribute of its existing + child paragraph styles have to be set to 0 respectively "".*/ + nCount = rWrtSh.GetTxtFmtCollCount(); + for( i = 0; i < nCount; ++i ) + { + SwTxtFmtColl &rTxtColl = rWrtSh.GetTxtFmtColl(i); + if( !rTxtColl.IsDefault() ) + { + SwTxtFmtColl *pDerFrom = ( SwTxtFmtColl* )rTxtColl.DerivedFrom(); + if( pDerFrom->IsAssignedToListLevelOfOutlineStyle()) + { + if(rTxtColl.GetItemState( RES_PARATR_NUMRULE, FALSE ) == SFX_ITEM_DEFAULT ) + { + SwNumRuleItem aItem(aEmptyStr); + rTxtColl.SetFmtAttr( aItem ); + } + if(rTxtColl.GetItemState( RES_PARATR_OUTLINELEVEL, FALSE ) == SFX_ITEM_DEFAULT ) + { + int nOutlineLevel = 0;; + rTxtColl.SetAttrOutlineLevel( nOutlineLevel ); } } } } + //<-end,zhaojianwei rWrtSh.SetOutlineNumRule( *pNumRule); @@ -910,7 +993,7 @@ void SwOutlineSettingsTabPage::SetWrtShell(SwWrtShell* pShell) { nTmp = static_cast<USHORT>(pSh->getIDocumentOutlineNodesAccess()->getOutlineLevel(nOutlinePos)); } - aLevelLB.SelectEntryPos(nTmp); + aLevelLB.SelectEntryPos(nTmp-1);//nTmp);//#outline level,zhaojianwei // Zeichenvorlagen sammeln aCharFmtLB.Clear(); diff --git a/sw/source/ui/misc/outline.src b/sw/source/ui/misc/outline.src index 574de4bb7dac..5857e3a10fec 100644 --- a/sw/source/ui/misc/outline.src +++ b/sw/source/ui/misc/outline.src @@ -104,7 +104,10 @@ TabDialog DLG_TAB_OUTLINE { OutputSize = TRUE ; SVLook = TRUE ; - Text [ en-US ] = "Outline Numbering" ; + // --> OD 2008-04-14 #outlinelevel# + // dialog title is now given by resource STR_OUTLINE_NUMBERING +// Text [ en-US ] = "Outline Numbering" ; + // <-- Moveable = TRUE ; TabControl 1 { diff --git a/sw/source/ui/uiview/view.hrc b/sw/source/ui/uiview/view.hrc index dabfedc3466a..f3061d2e1b3f 100644 --- a/sw/source/ui/uiview/view.hrc +++ b/sw/source/ui/uiview/view.hrc @@ -42,6 +42,7 @@ #define STR_NOGLOS1 (RC_VIEW_BEGIN + 1) #define STR_NOGLOS2 (RC_VIEW_BEGIN + 2) #define STR_NUM_LEVEL (RC_VIEW_BEGIN + 3) +#define STR_NUM_OUTLINE (RC_VIEW_BEGIN + 4) #define STR_ERROR_NOLANG (RC_VIEW_BEGIN + 6) diff --git a/sw/source/ui/uiview/view.src b/sw/source/ui/uiview/view.src index b3c4cf968e94..47ffd8817777 100644 --- a/sw/source/ui/uiview/view.src +++ b/sw/source/ui/uiview/view.src @@ -152,6 +152,12 @@ String STR_NUM_LEVEL { Text [ en-US ] = "Level " ; }; +//#outline level,zhaojianwei +String STR_NUM_OUTLINE +{ + Text [ en-US ] = "Outline "; +};//<-end,zhaojianwei +// <-- String STR_ERROR_NOLANG { Text [ en-US ] = "No language is selected in the proofed section." ; diff --git a/sw/source/ui/uiview/view2.cxx b/sw/source/ui/uiview/view2.cxx index be87729e2296..2932b54a6d02 100644 --- a/sw/source/ui/uiview/view2.cxx +++ b/sw/source/ui/uiview/view2.cxx @@ -152,6 +152,8 @@ // #include <frmmgr.hxx> // #endif +#include <ndtxt.hxx> //#outline level,added by zhaojianwei + #include <comphelper/processfactory.hxx> #include <svx/svxdlg.hxx> @@ -168,6 +170,7 @@ static String sLstPg; static USHORT nPageCnt = 0; const char __FAR_DATA sStatusDelim[] = " : "; +const char __FAR_DATA sStatusComma[] = " , ";//#outlinelevel, define a Variable for "," add by zhaojianwei using ::rtl::OUString; using namespace sfx2; @@ -1410,8 +1413,51 @@ void SwView::StateStatusLine(SfxItemSet &rSet) } } } + + //#outline level, removed by zhaojianwei + //const SwNumRule* pNumRule = rShell.GetCurNumRule(); + //if (pNumRule) // Cursor in Numerierung + //{ + // BYTE nNumLevel = rShell.GetNumLevel(); + // if( IsShowNum(nNumLevel) && MAXLEVEL > + // ( nNumLevel = GetRealLevel( nNumLevel )) ) + // { + // if( sStr.Len() ) + // sStr.AppendAscii(sStatusDelim); + // sStr += SW_RESSTR(STR_NUM_LEVEL); + // sStr += String::CreateFromInt32( nNumLevel + 1 ); + // if(!pNumRule->IsAutoRule()) + // { + // SfxItemSet aSet(GetPool(), + // RES_PARATR_NUMRULE, RES_PARATR_NUMRULE); + // rShell.GetCurAttr(aSet); + // /* const SfxPoolItem* pItem; */ + // if(SFX_ITEM_AVAILABLE <= + // aSet.GetItemState(RES_PARATR_NUMRULE, TRUE + // /*, &pItem */ )) + // { + // const String& rNumStyle = + // ((const SfxStringItem &) + // aSet.Get(RES_PARATR_NUMRULE)).GetValue(); + // /* #i5116# GetItemState does not necessarily + // change pItem */ + // // ((const SfxStringItem*)pItem)->GetValue(); + // if(rNumStyle.Len()) + // { + // sStr.AppendAscii(sStatusDelim); + // sStr += rNumStyle; + // } + // } + // } + // } + //}//<-removed end ,zhaojianwei + + //-->#outline level,added by zhaojianwei const SwNumRule* pNumRule = rShell.GetCurNumRule(); - if (pNumRule) // Cursor in Numerierung + const bool bOutlineNum = pNumRule ? pNumRule->IsOutlineRule() : 0; + //((SwTxtFmtColl*)rShell.GetCrsr()->GetNode()->GetTxtNode()->GetFmtColl())->IsAssignedToListLevelOfOutlineStyle(); + + if (pNumRule && !bOutlineNum ) // Cursor in Numerierung { BYTE nNumLevel = rShell.GetNumLevel(); // --> OD 2008-04-02 #refactorlists# @@ -1420,10 +1466,6 @@ void SwView::StateStatusLine(SfxItemSet &rSet) if ( nNumLevel < MAXLEVEL ) // <-- { - if( sStr.Len() ) - sStr.AppendAscii(sStatusDelim); - sStr += SW_RESSTR(STR_NUM_LEVEL); - sStr += String::CreateFromInt32( nNumLevel + 1 ); if(!pNumRule->IsAutoRule()) { SfxItemSet aSet(GetPool(), @@ -1442,13 +1484,35 @@ void SwView::StateStatusLine(SfxItemSet &rSet) // ((const SfxStringItem*)pItem)->GetValue(); if(rNumStyle.Len()) { - sStr.AppendAscii(sStatusDelim); + if( sStr.Len() ) + sStr.AppendAscii(sStatusDelim); sStr += rNumStyle; } } } + if( sStr.Len() ) + sStr.AppendAscii(sStatusDelim); + sStr += SW_RESSTR(STR_NUM_LEVEL); + sStr += String::CreateFromInt32( nNumLevel + 1 ); + } } + const int nOutlineLevel = rShell.GetCurrentParaOutlineLevel(); + if( nOutlineLevel != 0 ) + { + if( sStr.Len() ) + sStr.AppendAscii(sStatusComma); + if( bOutlineNum ) + { + sStr += SW_RESSTR(STR_OUTLINE_NUMBERING); + sStr.AppendAscii(sStatusDelim); + sStr += SW_RESSTR(STR_NUM_LEVEL); + } + else + sStr += SW_RESSTR(STR_NUM_OUTLINE); + sStr += String::CreateFromInt32( nOutlineLevel); + } + //<-end ,zhaojianwei if( rShell.HasReadonlySel() ) { diff --git a/sw/source/ui/wrtsh/wrtsh1.cxx b/sw/source/ui/wrtsh/wrtsh1.cxx index 5d10463062f9..a98e8ade9824 100644 --- a/sw/source/ui/wrtsh/wrtsh1.cxx +++ b/sw/source/ui/wrtsh/wrtsh1.cxx @@ -664,7 +664,6 @@ void SwWrtShell::LaunchOLEObj( long nVerb ) } } - void SwWrtShell::MoveObjectIfActive( svt::EmbeddedObjectRef& xObj, const Point& rOffset ) { try @@ -1087,7 +1086,7 @@ void SwWrtShell::NumOrBulletOn(BOOL bNum) // no numbering rule can be retrieved from the paragraph style. bool bContinueFoundNumRule( false ); bool bActivateOutlineRule( false ); - sal_uInt8 nActivateOutlineLvl( MAXLEVEL ); // only relevant, if <bActivateOutlineRule> == TRUE + int nActivateOutlineLvl( MAXLEVEL ); // only relevant, if <bActivateOutlineRule> == TRUE SwTxtFmtColl * pColl = GetCurTxtFmtColl(); if ( pColl ) { @@ -1142,11 +1141,14 @@ void SwWrtShell::NumOrBulletOn(BOOL bNum) { // check, if numbering of the outline level of the pararaph // style is active. If not, activate this outline level. - nActivateOutlineLvl = pColl->GetOutlineLevel(); - ASSERT( /*nActivateOutlineLvl >= 0 &&*/ nActivateOutlineLvl < MAXLEVEL, + //nActivateOutlineLvl = pColl->GetOutlineLevel(); //#outline level,zhaojianwei + //ASSERT( /*nActivateOutlineLvl >= 0 &&*/ nActivateOutlineLvl < MAXLEVEL, + nActivateOutlineLvl = pColl->GetAssignedOutlineStyleLevel(); + ASSERT( pColl->IsAssignedToListLevelOfOutlineStyle(), //<-end,zhaojianwei "<SwWrtShell::NumOrBulletOn(..)> - paragraph style with outline rule, but no outline level" ); - if ( /*nActivateOutlineLvl >= 0 &&*/ nActivateOutlineLvl < MAXLEVEL && - pCollRule->Get( nActivateOutlineLvl ).GetNumberingType() + //if ( /*nActivateOutlineLvl >= 0 &&*/ nActivateOutlineLvl < MAXLEVEL && //#outline level,zhaojianwei + if ( pColl->IsAssignedToListLevelOfOutlineStyle() && //<-end,zhaojianwei + pCollRule->Get( static_cast<USHORT>(nActivateOutlineLvl) ).GetNumberingType() == SVX_NUM_NUMBER_NONE ) { // activate outline numbering @@ -1163,7 +1165,8 @@ void SwWrtShell::NumOrBulletOn(BOOL bNum) // activate outline numbering, because from the precondition // it's known, that <SwEdit::HasNumber()> == FALSE bActivateOutlineRule = true; - nActivateOutlineLvl = pColl->GetOutlineLevel(); + //nActivateOutlineLvl = pColl->GetOutlineLevel(); //#outline level,zhaojianwei + nActivateOutlineLvl = pColl->GetAssignedOutlineStyleLevel();//<-end,zhaojianwei } } else if ( !pNumRule ) @@ -1171,17 +1174,21 @@ void SwWrtShell::NumOrBulletOn(BOOL bNum) // activate outline numbering, because from the precondition // it's known, that <SwEdit::HasNumber()> == FALSE bActivateOutlineRule = true; - nActivateOutlineLvl = pColl->GetOutlineLevel(); + //nActivateOutlineLvl = pColl->GetOutlineLevel(); //#outline level,zhaojianwei + nActivateOutlineLvl = pColl->GetAssignedOutlineStyleLevel();//<-end,zhaojianwei,need further consideration } else { // check, if numbering of the outline level of the pararaph // style is active. If not, activate this outline level. - nActivateOutlineLvl = pColl->GetOutlineLevel(); - ASSERT( /*nActivateOutlineLvl >= 0 &&*/ nActivateOutlineLvl < MAXLEVEL, + //nActivateOutlineLvl = pColl->GetOutlineLevel(); + nActivateOutlineLvl = pColl->GetAssignedOutlineStyleLevel();//#outline level,zhaojianwei + //ASSERT( /*nActivateOutlineLvl >= 0 &&*/ nActivateOutlineLvl < MAXLEVEL, + ASSERT( pColl->IsAssignedToListLevelOfOutlineStyle(),//#outline level,zhaojianwei "<SwWrtShell::NumOrBulletOn(..)> - paragraph style with outline rule, but no outline level" ); - if ( /*nActivateOutlineLvl >= 0 &&*/ nActivateOutlineLvl < MAXLEVEL && - pCollRule->Get( nActivateOutlineLvl ).GetNumberingType() + //if ( /*nActivateOutlineLvl >= 0 &&*/ nActivateOutlineLvl < MAXLEVEL && + if ( pColl->IsAssignedToListLevelOfOutlineStyle() &&//#outline level,zhaojianwei + pCollRule->Get( static_cast<USHORT>(nActivateOutlineLvl) ).GetNumberingType() == SVX_NUM_NUMBER_NONE ) { // activate outline numbering @@ -1242,9 +1249,9 @@ void SwWrtShell::NumOrBulletOn(BOOL bNum) { // --> OD 2005-10-26 #b6340308# - use above retrieve outline // level, if outline numbering has to be activated. - sal_Int8 nLevel = bActivateOutlineRule - ? nActivateOutlineLvl - : sal::static_int_cast<sal_Int8, sal_Int32>(pTxtNode->GetActualListLevel()); + int nLevel = bActivateOutlineRule ////#outline level,zhaojianwei,need more consideration + ? nActivateOutlineLvl + : pTxtNode->GetActualListLevel(); // <-- if (nLevel < 0) @@ -1253,7 +1260,7 @@ void SwWrtShell::NumOrBulletOn(BOOL bNum) if (nLevel >= MAXLEVEL) nLevel = MAXLEVEL - 1; - SwNumFmt aFmt(aNumRule.Get(nLevel)); + SwNumFmt aFmt(aNumRule.Get(static_cast<USHORT>(nLevel))); if (bNum) aFmt.SetNumberingType(SVX_NUM_ARABIC); @@ -1267,10 +1274,10 @@ void SwWrtShell::NumOrBulletOn(BOOL bNum) aFmt.SetBulletFont( pFnt ); } // <-- - aFmt.SetBulletChar( numfunc::GetBulletChar(nLevel)); + aFmt.SetBulletChar( numfunc::GetBulletChar(static_cast<BYTE>(nLevel))); aFmt.SetNumberingType(SVX_NUM_CHAR_SPECIAL); } - aNumRule.Set(nLevel, aFmt); + aNumRule.Set(static_cast<USHORT>(nLevel), aFmt); } } // <-- |