1*efeef26fSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*efeef26fSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*efeef26fSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*efeef26fSAndrew Rist * distributed with this work for additional information 6*efeef26fSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*efeef26fSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*efeef26fSAndrew Rist * "License"); you may not use this file except in compliance 9*efeef26fSAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*efeef26fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*efeef26fSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*efeef26fSAndrew Rist * software distributed under the License is distributed on an 15*efeef26fSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*efeef26fSAndrew Rist * KIND, either express or implied. See the License for the 17*efeef26fSAndrew Rist * specific language governing permissions and limitations 18*efeef26fSAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*efeef26fSAndrew Rist *************************************************************/ 21*efeef26fSAndrew Rist 22*efeef26fSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_sw.hxx" 26cdf0e10cSrcweir #ifdef SW_DLLIMPLEMENTATION 27cdf0e10cSrcweir #undef SW_DLLIMPLEMENTATION 28cdf0e10cSrcweir #endif 29cdf0e10cSrcweir #include <hintids.hxx> 30cdf0e10cSrcweir #include <tools/shl.hxx> 31cdf0e10cSrcweir #ifndef _MENU_HXX //autogen 32cdf0e10cSrcweir #include <vcl/menu.hxx> 33cdf0e10cSrcweir #endif 34cdf0e10cSrcweir #ifndef _MSGBOX_HXX //autogen 35cdf0e10cSrcweir #include <vcl/msgbox.hxx> 36cdf0e10cSrcweir #endif 37cdf0e10cSrcweir #include <sfx2/tabdlg.hxx> 38cdf0e10cSrcweir #include <editeng/brshitem.hxx> 39cdf0e10cSrcweir #include <unotools/configmgr.hxx> 40cdf0e10cSrcweir #include <SwStyleNameMapper.hxx> 41cdf0e10cSrcweir 42cdf0e10cSrcweir #ifndef _NUM_HXX //autogen 43cdf0e10cSrcweir #define USE_NUMTABPAGES 44cdf0e10cSrcweir #include <num.hxx> 45cdf0e10cSrcweir #endif 46cdf0e10cSrcweir #ifndef _VIEW_HXX 47cdf0e10cSrcweir #include <view.hxx> 48cdf0e10cSrcweir #endif 49cdf0e10cSrcweir #ifndef _DOCSH_HXX 50cdf0e10cSrcweir #include <docsh.hxx> 51cdf0e10cSrcweir #endif 52cdf0e10cSrcweir #include <uitool.hxx> 53cdf0e10cSrcweir #include <errhdl.hxx> 54cdf0e10cSrcweir #include <wrtsh.hxx> 55cdf0e10cSrcweir #include <swmodule.hxx> 56cdf0e10cSrcweir #include <fmtcol.hxx> 57cdf0e10cSrcweir #include <outline.hxx> 58cdf0e10cSrcweir #include <uinums.hxx> 59cdf0e10cSrcweir #include <poolfmt.hxx> 60cdf0e10cSrcweir #include <shellres.hxx> 61cdf0e10cSrcweir #include <svl/style.hxx> 62cdf0e10cSrcweir #include <charfmt.hxx> 63cdf0e10cSrcweir #include <docstyle.hxx> 64cdf0e10cSrcweir #include <viewopt.hxx> 65cdf0e10cSrcweir #include <svtools/ctrlbox.hxx> 66cdf0e10cSrcweir #ifndef _HELPID_H 67cdf0e10cSrcweir #include <helpid.h> 68cdf0e10cSrcweir #endif 69cdf0e10cSrcweir #ifndef _GLOBALS_HRC 70cdf0e10cSrcweir #include <globals.hrc> // fuer Vorlagenname 'keins' 71cdf0e10cSrcweir #endif 72cdf0e10cSrcweir #ifndef _MISC_HRC 73cdf0e10cSrcweir #include <misc.hrc> 74cdf0e10cSrcweir #endif 75cdf0e10cSrcweir #ifndef _OUTLINE_HRC 76cdf0e10cSrcweir #include <outline.hrc> 77cdf0e10cSrcweir #endif 78cdf0e10cSrcweir #include <paratr.hxx> 79cdf0e10cSrcweir 80cdf0e10cSrcweir #include <unomid.h> 81cdf0e10cSrcweir 82cdf0e10cSrcweir #include <IDocumentOutlineNodes.hxx> 83cdf0e10cSrcweir // --> OD 2008-04-14 #outlinelevel# 84cdf0e10cSrcweir #include <app.hrc> 85cdf0e10cSrcweir // <-- 86cdf0e10cSrcweir 87cdf0e10cSrcweir #ifndef _COM_SUN_STAR_ACCESSIBILITY_ACCESSIBLEROLE_HPP_ 88cdf0e10cSrcweir #include <com/sun/star/accessibility/AccessibleRole.hpp> 89cdf0e10cSrcweir #endif 90cdf0e10cSrcweir 91cdf0e10cSrcweir using namespace ::com::sun::star; 92cdf0e10cSrcweir 93cdf0e10cSrcweir /* -----------------------------31.01.01 10:23-------------------------------- 94cdf0e10cSrcweir 95cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 96cdf0e10cSrcweir 97cdf0e10cSrcweir DBG_NAME(outlinehdl) 98cdf0e10cSrcweir 99cdf0e10cSrcweir /*--------------------------------------------------------------------- 100cdf0e10cSrcweir 101cdf0e10cSrcweir ---------------------------------------------------------------------*/ 102cdf0e10cSrcweir 103cdf0e10cSrcweir class SwNumNamesDlg: public ModalDialog 104cdf0e10cSrcweir { 105cdf0e10cSrcweir FixedLine aFormFL; 106cdf0e10cSrcweir Edit aFormEdit; 107cdf0e10cSrcweir ListBox aFormBox; 108cdf0e10cSrcweir OKButton aOKBtn; 109cdf0e10cSrcweir CancelButton aCancelBtn; 110cdf0e10cSrcweir HelpButton aHelpBtn; 111cdf0e10cSrcweir 112cdf0e10cSrcweir DECL_LINK( ModifyHdl, Edit * ); 113cdf0e10cSrcweir DECL_LINK( SelectHdl, ListBox * ); 114cdf0e10cSrcweir DECL_LINK( DoubleClickHdl, ListBox * ); 115cdf0e10cSrcweir 116cdf0e10cSrcweir public: 117cdf0e10cSrcweir SwNumNamesDlg(Window *pParent); 118cdf0e10cSrcweir ~SwNumNamesDlg(); 119cdf0e10cSrcweir void SetUserNames(const String *pList[]); 120cdf0e10cSrcweir String GetName() const { return aFormEdit.GetText(); } 121cdf0e10cSrcweir sal_uInt16 GetCurEntryPos() const { return aFormBox.GetSelectEntryPos(); } 122cdf0e10cSrcweir }; 123cdf0e10cSrcweir 124cdf0e10cSrcweir /*------------------------------------------------------------------------ 125cdf0e10cSrcweir Beschreibung: selektierten Eintrag merken 126cdf0e10cSrcweir ------------------------------------------------------------------------*/ 127cdf0e10cSrcweir 128cdf0e10cSrcweir 129cdf0e10cSrcweir IMPL_LINK_INLINE_START( SwNumNamesDlg, SelectHdl, ListBox *, pBox ) 130cdf0e10cSrcweir { 131cdf0e10cSrcweir aFormEdit.SetText(pBox->GetSelectEntry()); 132cdf0e10cSrcweir aFormEdit.SetSelection(Selection(0, SELECTION_MAX)); 133cdf0e10cSrcweir return 0; 134cdf0e10cSrcweir } 135cdf0e10cSrcweir IMPL_LINK_INLINE_END( SwNumNamesDlg, SelectHdl, ListBox *, pBox ) 136cdf0e10cSrcweir 137cdf0e10cSrcweir /*------------------------------------------------------------------------ 138cdf0e10cSrcweir Beschreibung: Setzen der vom Benutzer vergebenen Namen 139cdf0e10cSrcweir Parameter: Liste der vom Benutzer vergebenen Namen; 140cdf0e10cSrcweir nicht vom Benutzer benannte Positionen sind 0. 141cdf0e10cSrcweir ------------------------------------------------------------------------*/ 142cdf0e10cSrcweir 143cdf0e10cSrcweir 144cdf0e10cSrcweir void SwNumNamesDlg::SetUserNames(const String *pList[]) 145cdf0e10cSrcweir { 146cdf0e10cSrcweir sal_uInt16 nSelect = 0; 147cdf0e10cSrcweir for(sal_uInt16 i = 0; i < SwBaseNumRules::nMaxRules; ++i) 148cdf0e10cSrcweir { 149cdf0e10cSrcweir if(pList[i]) 150cdf0e10cSrcweir { 151cdf0e10cSrcweir aFormBox.RemoveEntry(i); 152cdf0e10cSrcweir aFormBox.InsertEntry(*pList[i], i); 153cdf0e10cSrcweir if(i == nSelect && nSelect < SwBaseNumRules::nMaxRules) 154cdf0e10cSrcweir nSelect++; 155cdf0e10cSrcweir } 156cdf0e10cSrcweir } 157cdf0e10cSrcweir aFormBox.SelectEntryPos(nSelect); 158cdf0e10cSrcweir SelectHdl(&aFormBox); 159cdf0e10cSrcweir } 160cdf0e10cSrcweir /*------------------------------------------------------------------------ 161cdf0e10cSrcweir Beschreibung: OK-Button freischalten, wenn Text im Edit steht. 162cdf0e10cSrcweir ------------------------------------------------------------------------*/ 163cdf0e10cSrcweir 164cdf0e10cSrcweir 165cdf0e10cSrcweir IMPL_LINK_INLINE_START( SwNumNamesDlg, ModifyHdl, Edit *, pBox ) 166cdf0e10cSrcweir { 167cdf0e10cSrcweir aOKBtn.Enable(0 != pBox->GetText().Len()); 168cdf0e10cSrcweir return 0; 169cdf0e10cSrcweir } 170cdf0e10cSrcweir IMPL_LINK_INLINE_END( SwNumNamesDlg, ModifyHdl, Edit *, pBox ) 171cdf0e10cSrcweir /*------------------------------------------------------------------------ 172cdf0e10cSrcweir Beschreibung: DoubleClickHdl 173cdf0e10cSrcweir ------------------------------------------------------------------------*/ 174cdf0e10cSrcweir 175cdf0e10cSrcweir 176cdf0e10cSrcweir IMPL_LINK_INLINE_START( SwNumNamesDlg, DoubleClickHdl, ListBox *, EMPTYARG ) 177cdf0e10cSrcweir { 178cdf0e10cSrcweir EndDialog(RET_OK); 179cdf0e10cSrcweir return 0; 180cdf0e10cSrcweir } 181cdf0e10cSrcweir IMPL_LINK_INLINE_END( SwNumNamesDlg, DoubleClickHdl, ListBox *, EMPTYARG ) 182cdf0e10cSrcweir 183cdf0e10cSrcweir /*-------------------------------------------------- 184cdf0e10cSrcweir 185cdf0e10cSrcweir --------------------------------------------------*/ 186cdf0e10cSrcweir 187cdf0e10cSrcweir SwNumNamesDlg::SwNumNamesDlg(Window *pParent) 188cdf0e10cSrcweir : ModalDialog(pParent, SW_RES(DLG_NUM_NAMES)), 189cdf0e10cSrcweir aFormFL(this, SW_RES(FL_FORM)), 190cdf0e10cSrcweir aFormEdit(this, SW_RES(ED_FORM)), 191cdf0e10cSrcweir aFormBox(this, SW_RES(LB_FORM)), 192cdf0e10cSrcweir aOKBtn(this, SW_RES(BT_OK)), 193cdf0e10cSrcweir aCancelBtn(this, SW_RES(BT_CANCEL)), 194cdf0e10cSrcweir aHelpBtn(this, SW_RES(BT_HELP)) 195cdf0e10cSrcweir { 196cdf0e10cSrcweir FreeResource(); 197cdf0e10cSrcweir aFormEdit.SetModifyHdl(LINK(this, SwNumNamesDlg, ModifyHdl)); 198cdf0e10cSrcweir aFormBox.SetSelectHdl(LINK(this, SwNumNamesDlg, SelectHdl)); 199cdf0e10cSrcweir aFormBox.SetDoubleClickHdl(LINK(this, SwNumNamesDlg, DoubleClickHdl)); 200cdf0e10cSrcweir SelectHdl(&aFormBox); 201cdf0e10cSrcweir } 202cdf0e10cSrcweir 203cdf0e10cSrcweir /*-------------------------------------------------- 204cdf0e10cSrcweir 205cdf0e10cSrcweir --------------------------------------------------*/ 206cdf0e10cSrcweir 207cdf0e10cSrcweir __EXPORT SwNumNamesDlg::~SwNumNamesDlg() {} 208cdf0e10cSrcweir 209cdf0e10cSrcweir 210cdf0e10cSrcweir /* -----------------08.07.98 08:46------------------- 211cdf0e10cSrcweir * 212cdf0e10cSrcweir * --------------------------------------------------*/ 213cdf0e10cSrcweir sal_uInt16 lcl_BitToLevel(sal_uInt16 nActLevel) 214cdf0e10cSrcweir { 215cdf0e10cSrcweir sal_uInt16 nTmp = nActLevel; 216cdf0e10cSrcweir sal_uInt16 nTmpLevel = 0; 217cdf0e10cSrcweir while( 0 != (nTmp >>= 1) ) 218cdf0e10cSrcweir nTmpLevel++; 219cdf0e10cSrcweir return nTmpLevel; 220cdf0e10cSrcweir } 221cdf0e10cSrcweir 222cdf0e10cSrcweir /* -----------------07.07.98 14:13------------------- 223cdf0e10cSrcweir * 224cdf0e10cSrcweir * --------------------------------------------------*/ 225cdf0e10cSrcweir sal_uInt16 SwOutlineTabDialog::nNumLevel = 1; 226cdf0e10cSrcweir SwOutlineTabDialog::SwOutlineTabDialog(Window* pParent, 227cdf0e10cSrcweir const SfxItemSet* pSwItemSet, 228cdf0e10cSrcweir SwWrtShell &rSh) : 229cdf0e10cSrcweir //der UserString wird danach richtig gesetzt 230cdf0e10cSrcweir SfxTabDialog(pParent, SW_RES(DLG_TAB_OUTLINE), pSwItemSet, sal_False, &aEmptyStr), 231cdf0e10cSrcweir aNullStr(C2S("____")), 232cdf0e10cSrcweir aFormMenu(SW_RES(MN_FORM)), 233cdf0e10cSrcweir rWrtSh(rSh), 234cdf0e10cSrcweir pChapterNumRules(SW_MOD()->GetChapterNumRules()), 235cdf0e10cSrcweir bModified(rWrtSh.IsModified()) 236cdf0e10cSrcweir { 237cdf0e10cSrcweir // --> OD 2008-04-14 #outlinelevel# 238cdf0e10cSrcweir SetText( SW_RES( STR_OUTLINE_NUMBERING ) ); 239cdf0e10cSrcweir // <-- 240cdf0e10cSrcweir PushButton* pUserButton = GetUserButton(); 241cdf0e10cSrcweir pUserButton->SetText(SW_RES(ST_FORM)); 242cdf0e10cSrcweir pUserButton->SetHelpId(HID_OUTLINE_FORM); 243cdf0e10cSrcweir pUserButton->SetClickHdl(LINK(this, SwOutlineTabDialog, FormHdl)); 244cdf0e10cSrcweir pUserButton->SetAccessibleRole( com::sun::star::accessibility::AccessibleRole::BUTTON_MENU ); 245cdf0e10cSrcweir 246cdf0e10cSrcweir FreeResource(); 247cdf0e10cSrcweir pNumRule = new SwNumRule( *rSh.GetOutlineNumRule() ); 248cdf0e10cSrcweir GetCancelButton().SetClickHdl(LINK(this, SwOutlineTabDialog, CancelHdl)); 249cdf0e10cSrcweir 250cdf0e10cSrcweir AddTabPage(TP_NUM_POSITION , &SwNumPositionTabPage::Create, 0); 251cdf0e10cSrcweir AddTabPage(TP_OUTLINE_NUM , &SwOutlineSettingsTabPage::Create, 0); 252cdf0e10cSrcweir 253cdf0e10cSrcweir String sHeadline; 254cdf0e10cSrcweir sal_uInt16 i; 255cdf0e10cSrcweir 256cdf0e10cSrcweir for( i = 0; i < MAXLEVEL; ++i ) 257cdf0e10cSrcweir { 258cdf0e10cSrcweir // wurde die Vorlage noch nicht angelegt, dann ist sie noch an dieserPosition 259cdf0e10cSrcweir if( !rWrtSh.GetParaStyle( sHeadline = 260cdf0e10cSrcweir SwStyleNameMapper::GetUIName( static_cast< sal_uInt16 >(RES_POOLCOLL_HEADLINE1 + i), 261cdf0e10cSrcweir sHeadline )) ) 262cdf0e10cSrcweir aCollNames[i] = sHeadline; 263cdf0e10cSrcweir } 264cdf0e10cSrcweir 265cdf0e10cSrcweir // Erfragen der Gliederungsebenen der Textvorlagen 266cdf0e10cSrcweir const sal_uInt16 nCount = rWrtSh.GetTxtFmtCollCount(); 267cdf0e10cSrcweir for(i = 0; i < nCount; ++i ) 268cdf0e10cSrcweir { 269cdf0e10cSrcweir SwTxtFmtColl &rTxtColl = rWrtSh.GetTxtFmtColl(i); 270cdf0e10cSrcweir if(!rTxtColl.IsDefault()) 271cdf0e10cSrcweir { 272cdf0e10cSrcweir //sal_uInt8 nOutLevel = rTxtColl.GetOutlineLevel(); //<-#outline level, removed out by zhaojianwei 273cdf0e10cSrcweir //if(nOutLevel != NO_NUMBERING) 274cdf0e10cSrcweir //->added by zhaojianwei 275cdf0e10cSrcweir if(rTxtColl.IsAssignedToListLevelOfOutlineStyle()) 276cdf0e10cSrcweir { 277cdf0e10cSrcweir int nOutLevel = rTxtColl.GetAssignedOutlineStyleLevel(); 278cdf0e10cSrcweir aCollNames[ nOutLevel ] = rTxtColl.GetName(); 279cdf0e10cSrcweir } 280cdf0e10cSrcweir //<-end 281cdf0e10cSrcweir } 282cdf0e10cSrcweir } 283cdf0e10cSrcweir } 284cdf0e10cSrcweir 285cdf0e10cSrcweir /* -----------------07.07.98 14:13------------------- 286cdf0e10cSrcweir * 287cdf0e10cSrcweir * --------------------------------------------------*/ 288cdf0e10cSrcweir SwOutlineTabDialog::~SwOutlineTabDialog() 289cdf0e10cSrcweir { 290cdf0e10cSrcweir delete pNumRule; 291cdf0e10cSrcweir } 292cdf0e10cSrcweir 293cdf0e10cSrcweir /* -----------------07.07.98 14:13------------------- 294cdf0e10cSrcweir * 295cdf0e10cSrcweir * --------------------------------------------------*/ 296cdf0e10cSrcweir void SwOutlineTabDialog::PageCreated(sal_uInt16 nPageId, SfxTabPage& rPage) 297cdf0e10cSrcweir { 298cdf0e10cSrcweir switch ( nPageId ) 299cdf0e10cSrcweir { 300cdf0e10cSrcweir case TP_NUM_POSITION: 301cdf0e10cSrcweir ((SwNumPositionTabPage&)rPage).SetWrtShell(&rWrtSh); 302cdf0e10cSrcweir ((SwNumPositionTabPage&)rPage).SetOutlineTabDialog(this); 303cdf0e10cSrcweir break; 304cdf0e10cSrcweir case TP_OUTLINE_NUM: 305cdf0e10cSrcweir ((SwOutlineSettingsTabPage&)rPage).SetWrtShell(&rWrtSh); 306cdf0e10cSrcweir break; 307cdf0e10cSrcweir } 308cdf0e10cSrcweir } 309cdf0e10cSrcweir /* -----------------07.07.98 14:19------------------- 310cdf0e10cSrcweir * 311cdf0e10cSrcweir * --------------------------------------------------*/ 312cdf0e10cSrcweir IMPL_LINK( SwOutlineTabDialog, CancelHdl, Button *, EMPTYARG ) 313cdf0e10cSrcweir { 314cdf0e10cSrcweir if (!bModified) 315cdf0e10cSrcweir rWrtSh.ResetModified(); 316cdf0e10cSrcweir EndDialog(RET_CANCEL); 317cdf0e10cSrcweir return 0; 318cdf0e10cSrcweir } 319cdf0e10cSrcweir /* -----------------08.07.98 12:14------------------- 320cdf0e10cSrcweir * 321cdf0e10cSrcweir * --------------------------------------------------*/ 322cdf0e10cSrcweir IMPL_LINK( SwOutlineTabDialog, FormHdl, Button *, pBtn ) 323cdf0e10cSrcweir { 324cdf0e10cSrcweir //PopupMenu auffuellen 325cdf0e10cSrcweir for( sal_uInt16 i = 0; i < SwChapterNumRules::nMaxRules; ++i ) 326cdf0e10cSrcweir { 327cdf0e10cSrcweir const SwNumRulesWithName *pRules = pChapterNumRules->GetRules(i); 328cdf0e10cSrcweir if( pRules ) 329cdf0e10cSrcweir aFormMenu.SetItemText(i + MN_FORMBASE, pRules->GetName()); 330cdf0e10cSrcweir } 331cdf0e10cSrcweir aFormMenu.SetSelectHdl(LINK(this, SwOutlineTabDialog, MenuSelectHdl)); 332cdf0e10cSrcweir aFormMenu.Execute(pBtn, Rectangle(Point(0,0), pBtn->GetSizePixel()), POPUPMENU_EXECUTE_DOWN); 333cdf0e10cSrcweir return 0; 334cdf0e10cSrcweir } 335cdf0e10cSrcweir 336cdf0e10cSrcweir /* -----------------08.07.98 12:14------------------- 337cdf0e10cSrcweir * 338cdf0e10cSrcweir * --------------------------------------------------*/ 339cdf0e10cSrcweir IMPL_LINK( SwOutlineTabDialog, MenuSelectHdl, Menu *, pMenu ) 340cdf0e10cSrcweir { 341cdf0e10cSrcweir sal_uInt8 nLevelNo = 0; 342cdf0e10cSrcweir switch(pMenu->GetCurItemId()) 343cdf0e10cSrcweir { 344cdf0e10cSrcweir case MN_FORM1: nLevelNo = 1; break; 345cdf0e10cSrcweir case MN_FORM2: nLevelNo = 2; break; 346cdf0e10cSrcweir case MN_FORM3: nLevelNo = 3; break; 347cdf0e10cSrcweir case MN_FORM4: nLevelNo = 4; break; 348cdf0e10cSrcweir case MN_FORM5: nLevelNo = 5; break; 349cdf0e10cSrcweir case MN_FORM6: nLevelNo = 6; break; 350cdf0e10cSrcweir case MN_FORM7: nLevelNo = 7; break; 351cdf0e10cSrcweir case MN_FORM8: nLevelNo = 8; break; 352cdf0e10cSrcweir case MN_FORM9: nLevelNo = 9; break; 353cdf0e10cSrcweir 354cdf0e10cSrcweir case MN_SAVE: 355cdf0e10cSrcweir { 356cdf0e10cSrcweir SwNumNamesDlg *pDlg = new SwNumNamesDlg(this); 357cdf0e10cSrcweir const String *aStrArr[SwChapterNumRules::nMaxRules]; 358cdf0e10cSrcweir for(sal_uInt16 i = 0; i < SwChapterNumRules::nMaxRules; ++i) 359cdf0e10cSrcweir { 360cdf0e10cSrcweir const SwNumRulesWithName *pRules = pChapterNumRules->GetRules(i); 361cdf0e10cSrcweir if(pRules) 362cdf0e10cSrcweir aStrArr[i] = &pRules->GetName(); 363cdf0e10cSrcweir else 364cdf0e10cSrcweir aStrArr[i] = 0; 365cdf0e10cSrcweir } 366cdf0e10cSrcweir pDlg->SetUserNames(aStrArr); 367cdf0e10cSrcweir if(RET_OK == pDlg->Execute()) 368cdf0e10cSrcweir { 369cdf0e10cSrcweir const String aName(pDlg->GetName()); 370cdf0e10cSrcweir pChapterNumRules->ApplyNumRules( SwNumRulesWithName( 371cdf0e10cSrcweir *pNumRule, aName ), pDlg->GetCurEntryPos() ); 372cdf0e10cSrcweir pMenu->SetItemText( 373cdf0e10cSrcweir pDlg->GetCurEntryPos() + MN_FORMBASE, aName); 374cdf0e10cSrcweir } 375cdf0e10cSrcweir delete pDlg; 376cdf0e10cSrcweir return 0; 377cdf0e10cSrcweir 378cdf0e10cSrcweir } 379cdf0e10cSrcweir 380cdf0e10cSrcweir } 381cdf0e10cSrcweir if( nLevelNo-- ) 382cdf0e10cSrcweir { 383cdf0e10cSrcweir const SwNumRulesWithName *pRules = pChapterNumRules->GetRules( nLevelNo ); 384cdf0e10cSrcweir if( pRules ) 385cdf0e10cSrcweir { 386cdf0e10cSrcweir pRules->MakeNumRule( rWrtSh, *pNumRule ); 387cdf0e10cSrcweir pNumRule->SetRuleType( OUTLINE_RULE ); 388cdf0e10cSrcweir } 389cdf0e10cSrcweir else 390cdf0e10cSrcweir *pNumRule = *rWrtSh.GetOutlineNumRule(); 391cdf0e10cSrcweir } 392cdf0e10cSrcweir 393cdf0e10cSrcweir sal_uInt16 nPageId = GetCurPageId(); 394cdf0e10cSrcweir SfxTabPage* pPage = GetTabPage( nPageId ); 395cdf0e10cSrcweir pPage->Reset(*GetOutputItemSet()); 396cdf0e10cSrcweir 397cdf0e10cSrcweir return 0; 398cdf0e10cSrcweir } 399cdf0e10cSrcweir /* -----------------07.07.98 14:19------------------- 400cdf0e10cSrcweir * 401cdf0e10cSrcweir * --------------------------------------------------*/ 402cdf0e10cSrcweir sal_uInt16 SwOutlineTabDialog::GetLevel(const String &rFmtName) const 403cdf0e10cSrcweir { 404cdf0e10cSrcweir for(sal_uInt16 i = 0; i < MAXLEVEL; ++i) 405cdf0e10cSrcweir { 406cdf0e10cSrcweir if(aCollNames[i] == rFmtName) 407cdf0e10cSrcweir return i; 408cdf0e10cSrcweir } 409cdf0e10cSrcweir return MAXLEVEL;//NO_NUMBERING; //#outline level,zhaojianwei 410cdf0e10cSrcweir 411cdf0e10cSrcweir } 412cdf0e10cSrcweir /* -----------------07.07.98 16:30------------------- 413cdf0e10cSrcweir * 414cdf0e10cSrcweir * --------------------------------------------------*/ 415cdf0e10cSrcweir short SwOutlineTabDialog::Ok() 416cdf0e10cSrcweir { 417cdf0e10cSrcweir SfxTabDialog::Ok(); 418cdf0e10cSrcweir // bei allen erzeugten Vorlagen die Ebenen setzen, muss 419cdf0e10cSrcweir // geschehen, um evtl. aufgehobene Zuordnungen 420cdf0e10cSrcweir // auch wieder zu loeschen 421cdf0e10cSrcweir 422cdf0e10cSrcweir // --> OD 2006-12-11 #130443# 423cdf0e10cSrcweir // encapsulate changes into a action to avoid effects on the current cursor 424cdf0e10cSrcweir // position during the changes. 425cdf0e10cSrcweir rWrtSh.StartAction(); 426cdf0e10cSrcweir // <-- 427cdf0e10cSrcweir 428cdf0e10cSrcweir const SwNumRule * pOutlineRule = rWrtSh.GetOutlineNumRule(); 429cdf0e10cSrcweir 430cdf0e10cSrcweir sal_uInt16 i, nCount = rWrtSh.GetTxtFmtCollCount(); 431cdf0e10cSrcweir for( i = 0; i < nCount; ++i ) 432cdf0e10cSrcweir { 433cdf0e10cSrcweir SwTxtFmtColl &rTxtColl = rWrtSh.GetTxtFmtColl(i); 434cdf0e10cSrcweir if( !rTxtColl.IsDefault() ) 435cdf0e10cSrcweir { 436cdf0e10cSrcweir //rTxtColl.SetOutlineLevel( (sal_uInt8)GetLevel(rTxtColl.GetName()));//#outline level,removed by zhaojianwei 437cdf0e10cSrcweir 438cdf0e10cSrcweir const SfxPoolItem & rItem = 439cdf0e10cSrcweir rTxtColl.GetFmtAttr(RES_PARATR_NUMRULE, sal_False); 440cdf0e10cSrcweir 441cdf0e10cSrcweir //if ((sal_uInt8)GetLevel(rTxtColl.GetName()) == NO_NUMBERING) //#outline level,removed by zhaojianwei 442cdf0e10cSrcweir //{ 443cdf0e10cSrcweir // if (static_cast<const SwNumRuleItem &>(rItem).GetValue() == 444cdf0e10cSrcweir // pOutlineRule->GetName()) 445cdf0e10cSrcweir // { 446cdf0e10cSrcweir // rTxtColl.ResetFmtAttr(RES_PARATR_NUMRULE); 447cdf0e10cSrcweir // } 448cdf0e10cSrcweir //} 449cdf0e10cSrcweir //else 450cdf0e10cSrcweir //{ 451cdf0e10cSrcweir // if (static_cast<const SwNumRuleItem &>(rItem).GetValue() != 452cdf0e10cSrcweir // pOutlineRule->GetName()) 453cdf0e10cSrcweir // { 454cdf0e10cSrcweir // SwNumRuleItem aItem(pOutlineRule->GetName()); 455cdf0e10cSrcweir // rTxtColl.SetFmtAttr(aItem); 456cdf0e10cSrcweir // } 457cdf0e10cSrcweir //} 458cdf0e10cSrcweir if ((sal_uInt8)GetLevel(rTxtColl.GetName()) == MAXLEVEL) //add by zhaojianwei 459cdf0e10cSrcweir { 460cdf0e10cSrcweir if(rTxtColl.IsAssignedToListLevelOfOutlineStyle()) 461cdf0e10cSrcweir { 462cdf0e10cSrcweir rTxtColl.DeleteAssignmentToListLevelOfOutlineStyle(); 463cdf0e10cSrcweir } 464cdf0e10cSrcweir if (static_cast<const SwNumRuleItem &>(rItem).GetValue() == 465cdf0e10cSrcweir pOutlineRule->GetName()) 466cdf0e10cSrcweir { 467cdf0e10cSrcweir rTxtColl.ResetFmtAttr(RES_PARATR_NUMRULE); 468cdf0e10cSrcweir } 469cdf0e10cSrcweir } 470cdf0e10cSrcweir else 471cdf0e10cSrcweir { 472cdf0e10cSrcweir rTxtColl.AssignToListLevelOfOutlineStyle(GetLevel(rTxtColl.GetName())); 473cdf0e10cSrcweir 474cdf0e10cSrcweir if (static_cast<const SwNumRuleItem &>(rItem).GetValue() != 475cdf0e10cSrcweir pOutlineRule->GetName()) 476cdf0e10cSrcweir { 477cdf0e10cSrcweir SwNumRuleItem aItem(pOutlineRule->GetName()); 478cdf0e10cSrcweir rTxtColl.SetFmtAttr(aItem); 479cdf0e10cSrcweir } 480cdf0e10cSrcweir } //<-end,zhaojianwei 481cdf0e10cSrcweir } 482cdf0e10cSrcweir } 483cdf0e10cSrcweir 484cdf0e10cSrcweir for(i = 0; i < MAXLEVEL; ++i ) 485cdf0e10cSrcweir { 486cdf0e10cSrcweir String sHeadline; 487cdf0e10cSrcweir ::SwStyleNameMapper::FillUIName( static_cast< sal_uInt16 >(RES_POOLCOLL_HEADLINE1 + i), 488cdf0e10cSrcweir sHeadline ); 489cdf0e10cSrcweir SwTxtFmtColl* pColl = rWrtSh.FindTxtFmtCollByName( sHeadline ); 490cdf0e10cSrcweir if( !pColl ) 491cdf0e10cSrcweir { 492cdf0e10cSrcweir //if( !aCollNames[i].Len() ) //#outline level,removed by zhaojianwei 493cdf0e10cSrcweir //{ 494cdf0e10cSrcweir // SwTxtFmtColl* pTxtColl = rWrtSh.GetTxtCollFromPool( 495cdf0e10cSrcweir // static_cast< sal_uInt16 >(RES_POOLCOLL_HEADLINE1 + i) ); 496cdf0e10cSrcweir // pTxtColl->SetOutlineLevel( NO_NUMBERING ); 497cdf0e10cSrcweir // pTxtColl->ResetFmtAttr(RES_PARATR_NUMRULE); 498cdf0e10cSrcweir //} 499cdf0e10cSrcweir //else if(aCollNames[i] != sHeadline) 500cdf0e10cSrcweir //{ 501cdf0e10cSrcweir // SwTxtFmtColl* pTxtColl = rWrtSh.GetParaStyle( 502cdf0e10cSrcweir // aCollNames[i], SwWrtShell::GETSTYLE_CREATESOME); 503cdf0e10cSrcweir // if(pTxtColl) 504cdf0e10cSrcweir // { 505cdf0e10cSrcweir // pTxtColl->SetOutlineLevel( static_cast< sal_uInt8 >(i) ); 506cdf0e10cSrcweir 507cdf0e10cSrcweir // SwNumRuleItem aItem(pOutlineRule->GetName()); 508cdf0e10cSrcweir // pTxtColl->SetFmtAttr(aItem); 509cdf0e10cSrcweir // } 510cdf0e10cSrcweir //} 511cdf0e10cSrcweir if(aCollNames[i] != sHeadline)//->added by zhaojianwei 512cdf0e10cSrcweir { 513cdf0e10cSrcweir SwTxtFmtColl* pTxtColl = rWrtSh.GetTxtCollFromPool( 514cdf0e10cSrcweir static_cast< sal_uInt16 >(RES_POOLCOLL_HEADLINE1 + i) ); 515cdf0e10cSrcweir pTxtColl->DeleteAssignmentToListLevelOfOutlineStyle(); 516cdf0e10cSrcweir pTxtColl->ResetFmtAttr(RES_PARATR_NUMRULE); 517cdf0e10cSrcweir 518cdf0e10cSrcweir if( aCollNames[i].Len() ) 519cdf0e10cSrcweir { 520cdf0e10cSrcweir pTxtColl = rWrtSh.GetParaStyle( 521cdf0e10cSrcweir aCollNames[i], SwWrtShell::GETSTYLE_CREATESOME); 522cdf0e10cSrcweir if(pTxtColl) 523cdf0e10cSrcweir { 524cdf0e10cSrcweir pTxtColl->AssignToListLevelOfOutlineStyle(i); 525cdf0e10cSrcweir SwNumRuleItem aItem(pOutlineRule->GetName()); 526cdf0e10cSrcweir pTxtColl->SetFmtAttr(aItem); 527cdf0e10cSrcweir } 528cdf0e10cSrcweir } 529cdf0e10cSrcweir }//<--end,zhaojianwei 530cdf0e10cSrcweir } 531cdf0e10cSrcweir } 532cdf0e10cSrcweir 533cdf0e10cSrcweir rWrtSh.SetOutlineNumRule( *pNumRule); 534cdf0e10cSrcweir 535cdf0e10cSrcweir // --> OD 2006-12-11 #130443# 536cdf0e10cSrcweir rWrtSh.EndAction(); 537cdf0e10cSrcweir // <-- 538cdf0e10cSrcweir 539cdf0e10cSrcweir return RET_OK; 540cdf0e10cSrcweir } 541cdf0e10cSrcweir 542cdf0e10cSrcweir /* -----------------07.07.98 14:19------------------- 543cdf0e10cSrcweir * 544cdf0e10cSrcweir * --------------------------------------------------*/ 545cdf0e10cSrcweir SwOutlineSettingsTabPage::SwOutlineSettingsTabPage(Window* pParent, const SfxItemSet& rSet) : 546cdf0e10cSrcweir SfxTabPage(pParent, SW_RES(TP_OUTLINE_NUM), rSet), 547cdf0e10cSrcweir aLevelFL( this, SW_RES(FL_LEVEL )), 548cdf0e10cSrcweir aLevelLB( this, SW_RES(LB_LEVEL )), 549cdf0e10cSrcweir aNumberFL(this, SW_RES(FL_NUMBER)), 550cdf0e10cSrcweir aCollLbl(this, SW_RES(FT_COLL)), 551cdf0e10cSrcweir aCollBox(this, SW_RES(LB_COLL)), 552cdf0e10cSrcweir aNumberLbl(this, SW_RES(FT_NUMBER)), 553cdf0e10cSrcweir aNumberBox(this, SW_RES(LB_NUMBER), INSERT_NUM_TYPE_NO_NUMBERING|INSERT_NUM_EXTENDED_TYPES), 554cdf0e10cSrcweir aCharFmtFT(this, SW_RES(FT_CHARFMT)), 555cdf0e10cSrcweir aCharFmtLB(this, SW_RES(LB_CHARFMT)), 556cdf0e10cSrcweir aAllLevelFT( this, SW_RES(FT_ALL_LEVEL)), 557cdf0e10cSrcweir aAllLevelNF( this, SW_RES(NF_ALL_LEVEL)), 558cdf0e10cSrcweir aDelim(this, SW_RES(FT_DELIM)), 559cdf0e10cSrcweir aPrefixFT(this, SW_RES(FT_PREFIX)), 560cdf0e10cSrcweir aPrefixED(this, SW_RES(ED_PREFIX)), 561cdf0e10cSrcweir aSuffixFT(this, SW_RES(FT_SUFFIX)), 562cdf0e10cSrcweir aSuffixED(this, SW_RES(ED_SUFFIX)), 563cdf0e10cSrcweir aStartLbl(this, SW_RES(FT_START)), 564cdf0e10cSrcweir aStartEdit(this, SW_RES(ED_START)), 565cdf0e10cSrcweir aPreviewWIN( this, SW_RES(WIN_PREVIEW )), 566cdf0e10cSrcweir 567cdf0e10cSrcweir aNoFmtName(SW_RES(ST_NO_COLL)), 568cdf0e10cSrcweir pSh(0), 569cdf0e10cSrcweir pCollNames(0), 570cdf0e10cSrcweir nActLevel(1) 571cdf0e10cSrcweir { 572cdf0e10cSrcweir FreeResource(); 573cdf0e10cSrcweir SetExchangeSupport(); 574cdf0e10cSrcweir 575cdf0e10cSrcweir aCollBox.InsertEntry(aNoFmtName); 576cdf0e10cSrcweir aLevelLB.SetSelectHdl(LINK(this, SwOutlineSettingsTabPage, LevelHdl)); 577cdf0e10cSrcweir aAllLevelNF.SetModifyHdl(LINK(this, SwOutlineSettingsTabPage, ToggleComplete)); 578cdf0e10cSrcweir aCollBox.SetSelectHdl(LINK(this, SwOutlineSettingsTabPage, CollSelect)); 579cdf0e10cSrcweir aCollBox.SetGetFocusHdl(LINK(this, SwOutlineSettingsTabPage, CollSelectGetFocus)); 580cdf0e10cSrcweir aNumberBox.SetSelectHdl(LINK(this, SwOutlineSettingsTabPage, NumberSelect)); 581cdf0e10cSrcweir aPrefixED.SetModifyHdl(LINK(this, SwOutlineSettingsTabPage, DelimModify)); 582cdf0e10cSrcweir aSuffixED.SetModifyHdl(LINK(this, SwOutlineSettingsTabPage, DelimModify)); 583cdf0e10cSrcweir aStartEdit.SetModifyHdl(LINK(this, SwOutlineSettingsTabPage, StartModified)); 584cdf0e10cSrcweir aCharFmtLB.SetSelectHdl(LINK(this, SwOutlineSettingsTabPage, CharFmtHdl)); 585cdf0e10cSrcweir 586cdf0e10cSrcweir } 587cdf0e10cSrcweir /* -----------------07.07.98 14:19------------------- 588cdf0e10cSrcweir * 589cdf0e10cSrcweir * --------------------------------------------------*/ 590cdf0e10cSrcweir void SwOutlineSettingsTabPage::Update() 591cdf0e10cSrcweir { 592cdf0e10cSrcweir // falls eine Vorlage fuer diese Ebene bereits selektiert wurde, 593cdf0e10cSrcweir // diese in der ListBox auswaehlean 594cdf0e10cSrcweir aCollBox.Enable(USHRT_MAX != nActLevel); 595cdf0e10cSrcweir if(USHRT_MAX == nActLevel) 596cdf0e10cSrcweir { 597cdf0e10cSrcweir sal_Bool bSamePrefix = sal_True; 598cdf0e10cSrcweir sal_Bool bSameSuffix = sal_True; 599cdf0e10cSrcweir sal_Bool bSameType = sal_True; 600cdf0e10cSrcweir sal_Bool bSameComplete = sal_True; 601cdf0e10cSrcweir sal_Bool bSameStart = sal_True; 602cdf0e10cSrcweir sal_Bool bSameCharFmt = sal_True; 603cdf0e10cSrcweir 604cdf0e10cSrcweir const SwNumFmt* aNumFmtArr[MAXLEVEL]; 605cdf0e10cSrcweir const SwCharFmt* pFirstFmt = 0; 606cdf0e10cSrcweir 607cdf0e10cSrcweir for(sal_uInt16 i = 0; i < MAXLEVEL; i++) 608cdf0e10cSrcweir { 609cdf0e10cSrcweir 610cdf0e10cSrcweir aNumFmtArr[ i ] = &pNumRule->Get(i); 611cdf0e10cSrcweir if(i == 0) 612cdf0e10cSrcweir pFirstFmt = aNumFmtArr[i]->GetCharFmt(); 613cdf0e10cSrcweir else 614cdf0e10cSrcweir { 615cdf0e10cSrcweir bSameType &= aNumFmtArr[i]->GetNumberingType() == aNumFmtArr[0]->GetNumberingType(); 616cdf0e10cSrcweir bSameStart &= aNumFmtArr[i]->GetStart() == aNumFmtArr[0]->GetStart(); 617cdf0e10cSrcweir bSamePrefix &= aNumFmtArr[i]->GetPrefix() == aNumFmtArr[0]->GetPrefix(); 618cdf0e10cSrcweir bSameSuffix &= aNumFmtArr[i]->GetSuffix() == aNumFmtArr[0]->GetSuffix(); 619cdf0e10cSrcweir bSameComplete &= aNumFmtArr[i]->GetIncludeUpperLevels() == aNumFmtArr[0]->GetIncludeUpperLevels(); 620cdf0e10cSrcweir const SwCharFmt* pFmt = aNumFmtArr[i]->GetCharFmt(); 621cdf0e10cSrcweir bSameCharFmt &= (!pFirstFmt && !pFmt) 622cdf0e10cSrcweir || (pFirstFmt && pFmt && pFmt->GetName() == pFirstFmt->GetName()); 623cdf0e10cSrcweir } 624cdf0e10cSrcweir } 625cdf0e10cSrcweir CheckForStartValue_Impl(aNumFmtArr[0]->GetNumberingType()); 626cdf0e10cSrcweir if(bSameType) 627cdf0e10cSrcweir aNumberBox.SelectNumberingType( aNumFmtArr[0]->GetNumberingType() ); 628cdf0e10cSrcweir else 629cdf0e10cSrcweir aNumberBox.SetNoSelection(); 630cdf0e10cSrcweir if(bSameStart) 631cdf0e10cSrcweir aStartEdit.SetValue(aNumFmtArr[0]->GetStart()); 632cdf0e10cSrcweir else 633cdf0e10cSrcweir aStartEdit.SetText(aEmptyStr); 634cdf0e10cSrcweir if(bSamePrefix) 635cdf0e10cSrcweir aPrefixED.SetText(aNumFmtArr[0]->GetPrefix()); 636cdf0e10cSrcweir else 637cdf0e10cSrcweir aPrefixED.SetText(aEmptyStr); 638cdf0e10cSrcweir if(bSameSuffix) 639cdf0e10cSrcweir aSuffixED.SetText(aNumFmtArr[0]->GetSuffix()); 640cdf0e10cSrcweir else 641cdf0e10cSrcweir aSuffixED.SetText(aEmptyStr); 642cdf0e10cSrcweir 643cdf0e10cSrcweir if(bSameCharFmt) 644cdf0e10cSrcweir { 645cdf0e10cSrcweir if(pFirstFmt) 646cdf0e10cSrcweir aCharFmtLB.SelectEntry(pFirstFmt->GetName()); 647cdf0e10cSrcweir else 648cdf0e10cSrcweir aCharFmtLB.SelectEntry( ViewShell::GetShellRes()->aStrNone ); 649cdf0e10cSrcweir } 650cdf0e10cSrcweir else 651cdf0e10cSrcweir aCharFmtLB.SetNoSelection(); 652cdf0e10cSrcweir 653cdf0e10cSrcweir aAllLevelFT.Enable(sal_True); 654cdf0e10cSrcweir aAllLevelNF.Enable(sal_True); 655cdf0e10cSrcweir aAllLevelNF.SetMax(MAXLEVEL); 656cdf0e10cSrcweir if(bSameComplete) 657cdf0e10cSrcweir { 658cdf0e10cSrcweir aAllLevelNF.SetValue(aNumFmtArr[0]->GetIncludeUpperLevels()); 659cdf0e10cSrcweir } 660cdf0e10cSrcweir else 661cdf0e10cSrcweir { 662cdf0e10cSrcweir aAllLevelNF.SetText(aEmptyStr); 663cdf0e10cSrcweir } 664cdf0e10cSrcweir } 665cdf0e10cSrcweir else 666cdf0e10cSrcweir { 667cdf0e10cSrcweir sal_uInt16 nTmpLevel = lcl_BitToLevel(nActLevel); 668cdf0e10cSrcweir String aColl(pCollNames[nTmpLevel]); 669cdf0e10cSrcweir if(aColl.Len()) 670cdf0e10cSrcweir aCollBox.SelectEntry(aColl); 671cdf0e10cSrcweir else 672cdf0e10cSrcweir aCollBox.SelectEntry(aNoFmtName); 673cdf0e10cSrcweir const SwNumFmt &rFmt = pNumRule->Get(nTmpLevel); 674cdf0e10cSrcweir 675cdf0e10cSrcweir aNumberBox.SelectNumberingType( rFmt.GetNumberingType() ); 676cdf0e10cSrcweir aPrefixED.SetText(rFmt.GetPrefix()); 677cdf0e10cSrcweir aSuffixED.SetText(rFmt.GetSuffix()); 678cdf0e10cSrcweir const SwCharFmt* pFmt = rFmt.GetCharFmt(); 679cdf0e10cSrcweir if(pFmt) 680cdf0e10cSrcweir aCharFmtLB.SelectEntry(pFmt->GetName()); 681cdf0e10cSrcweir else 682cdf0e10cSrcweir aCharFmtLB.SelectEntry( ViewShell::GetShellRes()->aStrNone ); 683cdf0e10cSrcweir 684cdf0e10cSrcweir if(nTmpLevel) 685cdf0e10cSrcweir { 686cdf0e10cSrcweir aAllLevelFT.Enable(sal_True); 687cdf0e10cSrcweir aAllLevelNF.Enable(sal_True); 688cdf0e10cSrcweir aAllLevelNF.SetMax(nTmpLevel + 1); 689cdf0e10cSrcweir aAllLevelNF.SetValue(rFmt.GetIncludeUpperLevels()); 690cdf0e10cSrcweir } 691cdf0e10cSrcweir else 692cdf0e10cSrcweir { 693cdf0e10cSrcweir aAllLevelNF.SetText(aEmptyStr); 694cdf0e10cSrcweir aAllLevelNF.Enable(sal_False); 695cdf0e10cSrcweir aAllLevelFT.Enable(sal_False); 696cdf0e10cSrcweir } 697cdf0e10cSrcweir CheckForStartValue_Impl(rFmt.GetNumberingType()); 698cdf0e10cSrcweir aStartEdit.SetValue( rFmt.GetStart() ); 699cdf0e10cSrcweir } 700cdf0e10cSrcweir SetModified(); 701cdf0e10cSrcweir } 702cdf0e10cSrcweir 703cdf0e10cSrcweir /* -----------------07.07.98 14:19------------------- 704cdf0e10cSrcweir * 705cdf0e10cSrcweir * --------------------------------------------------*/ 706cdf0e10cSrcweir IMPL_LINK( SwOutlineSettingsTabPage, LevelHdl, ListBox *, pBox ) 707cdf0e10cSrcweir { 708cdf0e10cSrcweir nActLevel = 0; 709cdf0e10cSrcweir if(pBox->IsEntryPosSelected( MAXLEVEL )) 710cdf0e10cSrcweir { 711cdf0e10cSrcweir nActLevel = 0xFFFF; 712cdf0e10cSrcweir } 713cdf0e10cSrcweir else 714cdf0e10cSrcweir { 715cdf0e10cSrcweir sal_uInt16 nMask = 1; 716cdf0e10cSrcweir for( sal_uInt16 i = 0; i < MAXLEVEL; i++ ) 717cdf0e10cSrcweir { 718cdf0e10cSrcweir if(pBox->IsEntryPosSelected( i )) 719cdf0e10cSrcweir nActLevel |= nMask; 720cdf0e10cSrcweir nMask <<= 1; 721cdf0e10cSrcweir } 722cdf0e10cSrcweir } 723cdf0e10cSrcweir Update(); 724cdf0e10cSrcweir return 0; 725cdf0e10cSrcweir } 726cdf0e10cSrcweir /* -----------------07.07.98 14:19------------------- 727cdf0e10cSrcweir * 728cdf0e10cSrcweir * --------------------------------------------------*/ 729cdf0e10cSrcweir IMPL_LINK( SwOutlineSettingsTabPage, ToggleComplete, NumericField *, pFld ) 730cdf0e10cSrcweir { 731cdf0e10cSrcweir sal_uInt16 nMask = 1; 732cdf0e10cSrcweir for(sal_uInt16 i = 0; i < MAXLEVEL; i++) 733cdf0e10cSrcweir { 734cdf0e10cSrcweir if(nActLevel & nMask) 735cdf0e10cSrcweir { 736cdf0e10cSrcweir SwNumFmt aNumFmt(pNumRule->Get(i)); 737cdf0e10cSrcweir aNumFmt.SetIncludeUpperLevels( Min( (sal_uInt8)pFld->GetValue(), 738cdf0e10cSrcweir (sal_uInt8)(i + 1)) ); 739cdf0e10cSrcweir pNumRule->Set(i, aNumFmt); 740cdf0e10cSrcweir } 741cdf0e10cSrcweir nMask <<= 1; 742cdf0e10cSrcweir } 743cdf0e10cSrcweir SetModified(); 744cdf0e10cSrcweir return 0; 745cdf0e10cSrcweir } 746cdf0e10cSrcweir /* -----------------07.07.98 14:19------------------- 747cdf0e10cSrcweir * 748cdf0e10cSrcweir * --------------------------------------------------*/ 749cdf0e10cSrcweir IMPL_LINK( SwOutlineSettingsTabPage, CollSelect, ListBox *, pBox ) 750cdf0e10cSrcweir { 751cdf0e10cSrcweir sal_uInt8 i; 752cdf0e10cSrcweir 753cdf0e10cSrcweir const String aCollName(pBox->GetSelectEntry()); 754cdf0e10cSrcweir //0xFFFF darf hier nicht sein (disable) 755cdf0e10cSrcweir sal_uInt16 nTmpLevel = lcl_BitToLevel(nActLevel); 756cdf0e10cSrcweir String sOldName( pCollNames[nTmpLevel] ); 757cdf0e10cSrcweir 758cdf0e10cSrcweir for( i = 0; i < MAXLEVEL; ++i) 759cdf0e10cSrcweir pCollNames[i] = aSaveCollNames[i]; 760cdf0e10cSrcweir 761cdf0e10cSrcweir if(aCollName == aNoFmtName) 762cdf0e10cSrcweir pCollNames[nTmpLevel] = aEmptyStr; 763cdf0e10cSrcweir else 764cdf0e10cSrcweir { 765cdf0e10cSrcweir pCollNames[nTmpLevel] = aCollName; 766cdf0e10cSrcweir // wird die Vorlage bereits verwendet ? 767cdf0e10cSrcweir for( i = 0; i < MAXLEVEL; ++i) 768cdf0e10cSrcweir if(i != nTmpLevel && pCollNames[i] == aCollName ) 769cdf0e10cSrcweir pCollNames[i] = aEmptyStr; 770cdf0e10cSrcweir } 771cdf0e10cSrcweir 772cdf0e10cSrcweir // search the oldname and put it into the current entries 773cdf0e10cSrcweir if( sOldName.Len() ) 774cdf0e10cSrcweir for( i = 0; i < MAXLEVEL; ++i) 775cdf0e10cSrcweir if( aSaveCollNames[ i ] == sOldName && i != nTmpLevel && 776cdf0e10cSrcweir !pCollNames[ i ].Len() ) 777cdf0e10cSrcweir { 778cdf0e10cSrcweir sal_uInt8 n; 779cdf0e10cSrcweir for( n = 0; n < MAXLEVEL; ++n ) 780cdf0e10cSrcweir if( pCollNames[ n ] == sOldName ) 781cdf0e10cSrcweir break; 782cdf0e10cSrcweir 783cdf0e10cSrcweir if( MAXLEVEL == n ) 784cdf0e10cSrcweir // it was a outline leveld name and the current entries is zero. 785cdf0e10cSrcweir pCollNames[ i ] = sOldName; 786cdf0e10cSrcweir } 787cdf0e10cSrcweir 788cdf0e10cSrcweir SetModified(); 789cdf0e10cSrcweir return 0; 790cdf0e10cSrcweir } 791cdf0e10cSrcweir 792cdf0e10cSrcweir IMPL_LINK( SwOutlineSettingsTabPage, CollSelectGetFocus, ListBox *, EMPTYARG ) 793cdf0e10cSrcweir { 794cdf0e10cSrcweir for( sal_uInt8 i = 0; i < MAXLEVEL; ++i) 795cdf0e10cSrcweir aSaveCollNames[i] = pCollNames[i]; 796cdf0e10cSrcweir return 0; 797cdf0e10cSrcweir } 798cdf0e10cSrcweir 799cdf0e10cSrcweir /* -----------------07.07.98 14:19------------------- 800cdf0e10cSrcweir * 801cdf0e10cSrcweir * --------------------------------------------------*/ 802cdf0e10cSrcweir IMPL_LINK( SwOutlineSettingsTabPage, NumberSelect, SwNumberingTypeListBox *, pBox ) 803cdf0e10cSrcweir { 804cdf0e10cSrcweir sal_uInt16 nMask = 1; 805cdf0e10cSrcweir sal_Int16 nNumberType = pBox->GetSelectedNumberingType();//(sal_Int16)(sal_uLong)pBox->GetEntryData(pBox->GetSelectEntryPos()); 806cdf0e10cSrcweir for(sal_uInt16 i = 0; i < MAXLEVEL; i++) 807cdf0e10cSrcweir { 808cdf0e10cSrcweir if(nActLevel & nMask) 809cdf0e10cSrcweir { 810cdf0e10cSrcweir SwNumFmt aNumFmt(pNumRule->Get(i)); 811cdf0e10cSrcweir aNumFmt.SetNumberingType(nNumberType); 812cdf0e10cSrcweir pNumRule->Set(i, aNumFmt); 813cdf0e10cSrcweir CheckForStartValue_Impl(nNumberType); 814cdf0e10cSrcweir } 815cdf0e10cSrcweir nMask <<= 1; 816cdf0e10cSrcweir } 817cdf0e10cSrcweir SetModified(); 818cdf0e10cSrcweir return 0; 819cdf0e10cSrcweir } 820cdf0e10cSrcweir /* -----------------07.07.98 14:19------------------- 821cdf0e10cSrcweir * 822cdf0e10cSrcweir * --------------------------------------------------*/ 823cdf0e10cSrcweir IMPL_LINK( SwOutlineSettingsTabPage, DelimModify, Edit *, EMPTYARG ) 824cdf0e10cSrcweir { 825cdf0e10cSrcweir sal_uInt16 nMask = 1; 826cdf0e10cSrcweir for(sal_uInt16 i = 0; i < MAXLEVEL; i++) 827cdf0e10cSrcweir { 828cdf0e10cSrcweir if(nActLevel & nMask) 829cdf0e10cSrcweir { 830cdf0e10cSrcweir SwNumFmt aNumFmt(pNumRule->Get(i)); 831cdf0e10cSrcweir aNumFmt.SetPrefix( aPrefixED.GetText() ); 832cdf0e10cSrcweir aNumFmt.SetSuffix( aSuffixED.GetText() ); 833cdf0e10cSrcweir pNumRule->Set(i, aNumFmt); 834cdf0e10cSrcweir } 835cdf0e10cSrcweir nMask <<= 1; 836cdf0e10cSrcweir } 837cdf0e10cSrcweir SetModified(); 838cdf0e10cSrcweir return 0; 839cdf0e10cSrcweir } 840cdf0e10cSrcweir /* -----------------07.07.98 14:19------------------- 841cdf0e10cSrcweir * 842cdf0e10cSrcweir * --------------------------------------------------*/ 843cdf0e10cSrcweir IMPL_LINK( SwOutlineSettingsTabPage, StartModified, NumericField *, pFld ) 844cdf0e10cSrcweir { 845cdf0e10cSrcweir sal_uInt16 nMask = 1; 846cdf0e10cSrcweir for(sal_uInt16 i = 0; i < MAXLEVEL; i++) 847cdf0e10cSrcweir { 848cdf0e10cSrcweir if(nActLevel & nMask) 849cdf0e10cSrcweir { 850cdf0e10cSrcweir SwNumFmt aNumFmt(pNumRule->Get(i)); 851cdf0e10cSrcweir aNumFmt.SetStart( (sal_uInt16)pFld->GetValue() ); 852cdf0e10cSrcweir pNumRule->Set(i, aNumFmt); 853cdf0e10cSrcweir } 854cdf0e10cSrcweir nMask <<= 1; 855cdf0e10cSrcweir } 856cdf0e10cSrcweir SetModified(); 857cdf0e10cSrcweir return 0; 858cdf0e10cSrcweir } 859cdf0e10cSrcweir /* -----------------21.09.98 12:21------------------- 860cdf0e10cSrcweir * 861cdf0e10cSrcweir * --------------------------------------------------*/ 862cdf0e10cSrcweir IMPL_LINK( SwOutlineSettingsTabPage, CharFmtHdl, ListBox *, EMPTYARG ) 863cdf0e10cSrcweir { 864cdf0e10cSrcweir // bAutomaticCharStyles = sal_False; 865cdf0e10cSrcweir String sEntry = aCharFmtLB.GetSelectEntry(); 866cdf0e10cSrcweir sal_uInt16 nMask = 1; 867cdf0e10cSrcweir sal_Bool bFormatNone = sEntry == ViewShell::GetShellRes()->aStrNone; 868cdf0e10cSrcweir SwCharFmt* pFmt = 0; 869cdf0e10cSrcweir if(!bFormatNone) 870cdf0e10cSrcweir { 871cdf0e10cSrcweir sal_uInt16 nChCount = pSh->GetCharFmtCount(); 872cdf0e10cSrcweir for(sal_uInt16 i = 0; i < nChCount; i++) 873cdf0e10cSrcweir { 874cdf0e10cSrcweir SwCharFmt& rChFmt = pSh->GetCharFmt(i); 875cdf0e10cSrcweir if(rChFmt.GetName() == sEntry) 876cdf0e10cSrcweir { 877cdf0e10cSrcweir pFmt = &rChFmt; 878cdf0e10cSrcweir break; 879cdf0e10cSrcweir } 880cdf0e10cSrcweir } 881cdf0e10cSrcweir if(!pFmt) 882cdf0e10cSrcweir { 883cdf0e10cSrcweir SfxStyleSheetBasePool* pPool = pSh->GetView().GetDocShell()->GetStyleSheetPool(); 884cdf0e10cSrcweir SfxStyleSheetBase* pBase; 885cdf0e10cSrcweir pBase = pPool->Find(sEntry, SFX_STYLE_FAMILY_CHAR); 886cdf0e10cSrcweir if(!pBase) 887cdf0e10cSrcweir pBase = &pPool->Make(sEntry, SFX_STYLE_FAMILY_PAGE); 888cdf0e10cSrcweir pFmt = ((SwDocStyleSheet*)pBase)->GetCharFmt(); 889cdf0e10cSrcweir 890cdf0e10cSrcweir } 891cdf0e10cSrcweir } 892cdf0e10cSrcweir 893cdf0e10cSrcweir for(sal_uInt16 i = 0; i < MAXLEVEL; i++) 894cdf0e10cSrcweir { 895cdf0e10cSrcweir if(nActLevel & nMask) 896cdf0e10cSrcweir { 897cdf0e10cSrcweir SwNumFmt aNumFmt(pNumRule->Get(i)); 898cdf0e10cSrcweir if(bFormatNone) 899cdf0e10cSrcweir aNumFmt.SetCharFmt(0); 900cdf0e10cSrcweir else 901cdf0e10cSrcweir aNumFmt.SetCharFmt(pFmt); 902cdf0e10cSrcweir pNumRule->Set(i, aNumFmt); 903cdf0e10cSrcweir } 904cdf0e10cSrcweir nMask <<= 1; 905cdf0e10cSrcweir } 906cdf0e10cSrcweir return RET_OK; 907cdf0e10cSrcweir } 908cdf0e10cSrcweir /* -----------------07.07.98 14:19------------------- 909cdf0e10cSrcweir * 910cdf0e10cSrcweir * --------------------------------------------------*/ 911cdf0e10cSrcweir SwOutlineSettingsTabPage::~SwOutlineSettingsTabPage() 912cdf0e10cSrcweir { 913cdf0e10cSrcweir } 914cdf0e10cSrcweir /* -----------------07.07.98 16:27------------------- 915cdf0e10cSrcweir * 916cdf0e10cSrcweir * --------------------------------------------------*/ 917cdf0e10cSrcweir void SwOutlineSettingsTabPage::SetWrtShell(SwWrtShell* pShell) 918cdf0e10cSrcweir { 919cdf0e10cSrcweir pSh = pShell; 920cdf0e10cSrcweir // Erfragen der NumRules dieses Dokumentes 921cdf0e10cSrcweir pNumRule = ((SwOutlineTabDialog*)GetTabDialog())->GetNumRule(); 922cdf0e10cSrcweir pCollNames = ((SwOutlineTabDialog*)GetTabDialog())->GetCollNames(); 923cdf0e10cSrcweir 924cdf0e10cSrcweir //pNumRule = new SwNumRule( *rSh.GetOutlineNumRule() ); 925cdf0e10cSrcweir 926cdf0e10cSrcweir aPreviewWIN.SetNumRule(pNumRule); 927cdf0e10cSrcweir aPreviewWIN.SetOutlineNames(pCollNames); 928cdf0e10cSrcweir // Startwert setzen - nActLevel muss hier 1 sein 929cdf0e10cSrcweir sal_uInt16 nTmpLevel = lcl_BitToLevel(nActLevel); 930cdf0e10cSrcweir const SwNumFmt& rNumFmt = pNumRule->Get( nTmpLevel ); 931cdf0e10cSrcweir aStartEdit.SetValue( rNumFmt.GetStart() ); 932cdf0e10cSrcweir 933cdf0e10cSrcweir // Poolformate fuer Ueberschriften anlegen 934cdf0e10cSrcweir String sStr; 935cdf0e10cSrcweir sal_uInt16 i; 936cdf0e10cSrcweir for( i = 0; i < MAXLEVEL; ++i ) 937cdf0e10cSrcweir { 938cdf0e10cSrcweir aCollBox.InsertEntry( SwStyleNameMapper::GetUIName( 939cdf0e10cSrcweir static_cast< sal_uInt16 >(RES_POOLCOLL_HEADLINE1 + i), aEmptyStr )); 940cdf0e10cSrcweir aLevelLB.InsertEntry( String::CreateFromInt32(i + 1) ); 941cdf0e10cSrcweir } 942cdf0e10cSrcweir sStr.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "1 - " )); 943cdf0e10cSrcweir sStr += String::CreateFromInt32(MAXLEVEL); 944cdf0e10cSrcweir aLevelLB.InsertEntry( sStr ); 945cdf0e10cSrcweir 946cdf0e10cSrcweir // Erfragen der Gliederungsebenen der Textvorlagen 947cdf0e10cSrcweir const sal_uInt16 nCount = pSh->GetTxtFmtCollCount(); 948cdf0e10cSrcweir for( i = 0; i < nCount; ++i ) 949cdf0e10cSrcweir { 950cdf0e10cSrcweir SwTxtFmtColl &rTxtColl = pSh->GetTxtFmtColl(i); 951cdf0e10cSrcweir if(!rTxtColl.IsDefault()) 952cdf0e10cSrcweir { 953cdf0e10cSrcweir sStr = rTxtColl.GetName(); 954cdf0e10cSrcweir if(LISTBOX_ENTRY_NOTFOUND == aCollBox.GetEntryPos( sStr )) 955cdf0e10cSrcweir aCollBox.InsertEntry( sStr ); 956cdf0e10cSrcweir } 957cdf0e10cSrcweir } 958cdf0e10cSrcweir 959cdf0e10cSrcweir aNumberBox.SelectNumberingType(rNumFmt.GetNumberingType()); 960cdf0e10cSrcweir sal_uInt16 nOutlinePos = pSh->GetOutlinePos(MAXLEVEL); 961cdf0e10cSrcweir sal_uInt16 nTmp = 0; 962cdf0e10cSrcweir if(nOutlinePos != USHRT_MAX) 963cdf0e10cSrcweir { 964cdf0e10cSrcweir nTmp = static_cast<sal_uInt16>(pSh->getIDocumentOutlineNodesAccess()->getOutlineLevel(nOutlinePos)); 965cdf0e10cSrcweir } 966cdf0e10cSrcweir aLevelLB.SelectEntryPos(nTmp-1);//nTmp);//#outline level,zhaojianwei 967cdf0e10cSrcweir 968cdf0e10cSrcweir // Zeichenvorlagen sammeln 969cdf0e10cSrcweir aCharFmtLB.Clear(); 970cdf0e10cSrcweir aCharFmtLB.InsertEntry( ViewShell::GetShellRes()->aStrNone ); 971cdf0e10cSrcweir 972cdf0e10cSrcweir // Zeichenvorlagen 973cdf0e10cSrcweir ::FillCharStyleListBox(aCharFmtLB, 974cdf0e10cSrcweir pSh->GetView().GetDocShell()); 975cdf0e10cSrcweir Update(); 976cdf0e10cSrcweir } 977cdf0e10cSrcweir /* -----------------07.07.98 14:19------------------- 978cdf0e10cSrcweir * 979cdf0e10cSrcweir * --------------------------------------------------*/ 980cdf0e10cSrcweir void SwOutlineSettingsTabPage::ActivatePage(const SfxItemSet& ) 981cdf0e10cSrcweir { 982cdf0e10cSrcweir nActLevel = SwOutlineTabDialog::GetActNumLevel(); 983cdf0e10cSrcweir if(nActLevel != USHRT_MAX) 984cdf0e10cSrcweir aLevelLB.SelectEntryPos(lcl_BitToLevel(nActLevel)); 985cdf0e10cSrcweir else 986cdf0e10cSrcweir aLevelLB.SelectEntryPos(MAXLEVEL); 987cdf0e10cSrcweir LevelHdl(&aLevelLB); 988cdf0e10cSrcweir } 989cdf0e10cSrcweir /* -----------------07.07.98 14:19------------------- 990cdf0e10cSrcweir * 991cdf0e10cSrcweir * --------------------------------------------------*/ 992cdf0e10cSrcweir int SwOutlineSettingsTabPage::DeactivatePage(SfxItemSet*) 993cdf0e10cSrcweir { 994cdf0e10cSrcweir SwOutlineTabDialog::SetActNumLevel(nActLevel); 995cdf0e10cSrcweir return LEAVE_PAGE; 996cdf0e10cSrcweir } 997cdf0e10cSrcweir /* -----------------07.07.98 14:19------------------- 998cdf0e10cSrcweir * 999cdf0e10cSrcweir * --------------------------------------------------*/ 1000cdf0e10cSrcweir sal_Bool SwOutlineSettingsTabPage::FillItemSet( SfxItemSet& ) 1001cdf0e10cSrcweir { 1002cdf0e10cSrcweir return sal_True; 1003cdf0e10cSrcweir } 1004cdf0e10cSrcweir /* -----------------07.07.98 14:19------------------- 1005cdf0e10cSrcweir * 1006cdf0e10cSrcweir * --------------------------------------------------*/ 1007cdf0e10cSrcweir void SwOutlineSettingsTabPage::Reset( const SfxItemSet& rSet ) 1008cdf0e10cSrcweir { 1009cdf0e10cSrcweir ActivatePage(rSet); 1010cdf0e10cSrcweir } 1011cdf0e10cSrcweir /* -----------------07.07.98 14:19------------------- 1012cdf0e10cSrcweir * 1013cdf0e10cSrcweir * --------------------------------------------------*/ 1014cdf0e10cSrcweir SfxTabPage* SwOutlineSettingsTabPage::Create( Window* pParent, 1015cdf0e10cSrcweir const SfxItemSet& rAttrSet) 1016cdf0e10cSrcweir { 1017cdf0e10cSrcweir return new SwOutlineSettingsTabPage(pParent, rAttrSet); 1018cdf0e10cSrcweir } 1019cdf0e10cSrcweir /* -----------------07.11.2002 15:13----------------- 1020cdf0e10cSrcweir * 1021cdf0e10cSrcweir * --------------------------------------------------*/ 1022cdf0e10cSrcweir void SwOutlineSettingsTabPage::CheckForStartValue_Impl(sal_uInt16 nNumberingType) 1023cdf0e10cSrcweir { 1024cdf0e10cSrcweir sal_Bool bIsNull = aStartEdit.GetValue() == 0; 1025cdf0e10cSrcweir sal_Bool bNoZeroAllowed = nNumberingType < SVX_NUM_ARABIC || 1026cdf0e10cSrcweir SVX_NUM_CHARS_UPPER_LETTER_N == nNumberingType || 1027cdf0e10cSrcweir SVX_NUM_CHARS_LOWER_LETTER_N == nNumberingType; 1028cdf0e10cSrcweir aStartEdit.SetMin(bNoZeroAllowed ? 1 : 0); 1029cdf0e10cSrcweir if(bIsNull && bNoZeroAllowed) 1030cdf0e10cSrcweir aStartEdit.GetModifyHdl().Call(&aStartEdit); 1031cdf0e10cSrcweir } 1032cdf0e10cSrcweir /*-----------------09.12.97 11:54------------------- 1033cdf0e10cSrcweir 1034cdf0e10cSrcweir --------------------------------------------------*/ 1035cdf0e10cSrcweir sal_uInt16 lcl_DrawBullet(VirtualDevice* pVDev, 1036cdf0e10cSrcweir const SwNumFmt& rFmt, sal_uInt16 nXStart, 1037cdf0e10cSrcweir sal_uInt16 nYStart, const Size& rSize) 1038cdf0e10cSrcweir { 1039cdf0e10cSrcweir Font aTmpFont(pVDev->GetFont()); 1040cdf0e10cSrcweir 1041cdf0e10cSrcweir Font aFont(*rFmt.GetBulletFont()); 1042cdf0e10cSrcweir aFont.SetSize(rSize); 1043cdf0e10cSrcweir aFont.SetTransparent(sal_True); 1044cdf0e10cSrcweir pVDev->SetFont( aFont ); 1045cdf0e10cSrcweir String aText(rFmt.GetBulletChar()); 1046cdf0e10cSrcweir pVDev->DrawText( Point(nXStart, nYStart), aText ); 1047cdf0e10cSrcweir sal_uInt16 nRet = (sal_uInt16)pVDev->GetTextWidth(aText); 1048cdf0e10cSrcweir 1049cdf0e10cSrcweir pVDev->SetFont(aTmpFont); 1050cdf0e10cSrcweir return nRet; 1051cdf0e10cSrcweir } 1052cdf0e10cSrcweir /*-----------------09.12.97 11:49------------------- 1053cdf0e10cSrcweir 1054cdf0e10cSrcweir --------------------------------------------------*/ 1055cdf0e10cSrcweir sal_uInt16 lcl_DrawGraphic(VirtualDevice* pVDev, const SwNumFmt &rFmt, sal_uInt16 nXStart, 1056cdf0e10cSrcweir sal_uInt16 nYStart, sal_uInt16 nDivision) 1057cdf0e10cSrcweir { 1058cdf0e10cSrcweir const SvxBrushItem* pBrushItem = rFmt.GetBrush(); 1059cdf0e10cSrcweir sal_uInt16 nRet = 0; 1060cdf0e10cSrcweir if(pBrushItem) 1061cdf0e10cSrcweir { 1062cdf0e10cSrcweir const Graphic* pGrf = pBrushItem->GetGraphic(); 1063cdf0e10cSrcweir if(pGrf) 1064cdf0e10cSrcweir { 1065cdf0e10cSrcweir Size aGSize( rFmt.GetGraphicSize()); 1066cdf0e10cSrcweir aGSize.Width() /= nDivision; 1067cdf0e10cSrcweir nRet = (sal_uInt16)aGSize.Width(); 1068cdf0e10cSrcweir aGSize.Height() /= nDivision; 1069cdf0e10cSrcweir pGrf->Draw( pVDev, Point(nXStart,nYStart), 1070cdf0e10cSrcweir pVDev->PixelToLogic( aGSize ) ); 1071cdf0e10cSrcweir } 1072cdf0e10cSrcweir } 1073cdf0e10cSrcweir return nRet; 1074cdf0e10cSrcweir 1075cdf0e10cSrcweir } 1076cdf0e10cSrcweir /*-----------------02.12.97 10:34------------------- 1077cdf0e10cSrcweir Vorschau der Numerierung painten 1078cdf0e10cSrcweir --------------------------------------------------*/ 1079cdf0e10cSrcweir void NumberingPreview::Paint( const Rectangle& /*rRect*/ ) 1080cdf0e10cSrcweir { 1081cdf0e10cSrcweir Size aSize(PixelToLogic(GetOutputSizePixel())); 1082cdf0e10cSrcweir Rectangle aRect(Point(0,0), aSize); 1083cdf0e10cSrcweir 1084cdf0e10cSrcweir VirtualDevice* pVDev = new VirtualDevice(*this); 1085cdf0e10cSrcweir pVDev->SetMapMode(GetMapMode()); 1086cdf0e10cSrcweir pVDev->SetOutputSize( aSize ); 1087cdf0e10cSrcweir 1088cdf0e10cSrcweir // #101524# OJ 1089cdf0e10cSrcweir pVDev->SetFillColor( GetSettings().GetStyleSettings().GetWindowColor() ); 1090cdf0e10cSrcweir pVDev->SetLineColor( GetSettings().GetStyleSettings().GetButtonTextColor() ); 1091cdf0e10cSrcweir pVDev->DrawRect(aRect); 1092cdf0e10cSrcweir 1093cdf0e10cSrcweir if(pActNum) 1094cdf0e10cSrcweir { 1095cdf0e10cSrcweir sal_uInt16 nWidthRelation; 1096cdf0e10cSrcweir if(nPageWidth) 1097cdf0e10cSrcweir { 1098cdf0e10cSrcweir nWidthRelation = sal_uInt16 (nPageWidth / aSize.Width()); 1099cdf0e10cSrcweir if(bPosition) 1100cdf0e10cSrcweir nWidthRelation = nWidthRelation * 2 / 3; 1101cdf0e10cSrcweir else 1102cdf0e10cSrcweir nWidthRelation = nWidthRelation / 4; 1103cdf0e10cSrcweir } 1104cdf0e10cSrcweir else 1105cdf0e10cSrcweir nWidthRelation = 30; // Kapiteldialog 1106cdf0e10cSrcweir 1107cdf0e10cSrcweir //Hoehe pro Ebene 1108cdf0e10cSrcweir sal_uInt16 nXStep = sal_uInt16(aSize.Width() / (3 * MAXLEVEL)); 1109cdf0e10cSrcweir if(MAXLEVEL < 10) 1110cdf0e10cSrcweir nXStep /= 2; 1111cdf0e10cSrcweir sal_uInt16 nYStart = 4; 1112cdf0e10cSrcweir sal_uInt16 nYStep = sal_uInt16((aSize.Height() - 6)/ MAXLEVEL); 1113cdf0e10cSrcweir aStdFont = OutputDevice::GetDefaultFont( 1114cdf0e10cSrcweir DEFAULTFONT_UI_SANS, (LanguageType)GetAppLanguage(), 1115cdf0e10cSrcweir DEFAULTFONT_FLAGS_ONLYONE, this ); 1116cdf0e10cSrcweir // #101524# OJ 1117cdf0e10cSrcweir aStdFont.SetColor( SwViewOption::GetFontColor() ); 1118cdf0e10cSrcweir 1119cdf0e10cSrcweir // 1120cdf0e10cSrcweir sal_uInt16 nFontHeight = nYStep * 6 / 10; 1121cdf0e10cSrcweir if(bPosition) 1122cdf0e10cSrcweir nFontHeight = nYStep * 15 / 10; 1123cdf0e10cSrcweir aStdFont.SetSize(Size( 0, nFontHeight )); 1124cdf0e10cSrcweir 1125cdf0e10cSrcweir sal_uInt16 nPreNum = pActNum->Get(0).GetStart(); 1126cdf0e10cSrcweir 1127cdf0e10cSrcweir if(bPosition) 1128cdf0e10cSrcweir { 1129cdf0e10cSrcweir sal_uInt16 nLineHeight = nFontHeight * 8 / 7; 1130cdf0e10cSrcweir sal_uInt8 nStart = 0; 1131cdf0e10cSrcweir while( !(nActLevel & (1<<nStart)) ) 1132cdf0e10cSrcweir { 1133cdf0e10cSrcweir nStart++; 1134cdf0e10cSrcweir } 1135cdf0e10cSrcweir if(nStart) // damit moeglichs Vorgaenger und Nachfolger gezeigt werden 1136cdf0e10cSrcweir nStart--; 1137cdf0e10cSrcweir 1138cdf0e10cSrcweir SwNumberTree::tNumberVector aNumVector; 1139cdf0e10cSrcweir sal_uInt8 nEnd = Min( (sal_uInt8)(nStart + 3), MAXLEVEL ); 1140cdf0e10cSrcweir for( sal_uInt8 nLevel = nStart; nLevel < nEnd; ++nLevel ) 1141cdf0e10cSrcweir { 1142cdf0e10cSrcweir const SwNumFmt &rFmt = pActNum->Get(nLevel); 1143cdf0e10cSrcweir aNumVector.push_back(rFmt.GetStart()); 1144cdf0e10cSrcweir 1145cdf0e10cSrcweir // --> OD 2008-02-01 #newlistlevelattrs# 1146cdf0e10cSrcweir sal_uInt16 nXStart( 0 ); 1147cdf0e10cSrcweir short nTextOffset( 0 ); 1148cdf0e10cSrcweir sal_uInt16 nNumberXPos( 0 ); 1149cdf0e10cSrcweir if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION ) 1150cdf0e10cSrcweir { 1151cdf0e10cSrcweir nXStart = rFmt.GetAbsLSpace() / nWidthRelation; 1152cdf0e10cSrcweir nTextOffset = rFmt.GetCharTextDistance() / nWidthRelation; 1153cdf0e10cSrcweir nNumberXPos = nXStart; 1154cdf0e10cSrcweir sal_uInt16 nFirstLineOffset = (-rFmt.GetFirstLineOffset()) / nWidthRelation; 1155cdf0e10cSrcweir 1156cdf0e10cSrcweir if(nFirstLineOffset <= nNumberXPos) 1157cdf0e10cSrcweir nNumberXPos = nNumberXPos - nFirstLineOffset; 1158cdf0e10cSrcweir else 1159cdf0e10cSrcweir nNumberXPos = 0; 1160cdf0e10cSrcweir } 1161cdf0e10cSrcweir else if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT ) 1162cdf0e10cSrcweir { 1163cdf0e10cSrcweir const long nTmpNumberXPos( ( rFmt.GetIndentAt() + 1164cdf0e10cSrcweir rFmt.GetFirstLineIndent() ) / 1165cdf0e10cSrcweir nWidthRelation ); 1166cdf0e10cSrcweir if ( nTmpNumberXPos < 0 ) 1167cdf0e10cSrcweir { 1168cdf0e10cSrcweir nNumberXPos = 0; 1169cdf0e10cSrcweir } 1170cdf0e10cSrcweir else 1171cdf0e10cSrcweir { 1172cdf0e10cSrcweir nNumberXPos = static_cast<sal_uInt16>(nTmpNumberXPos); 1173cdf0e10cSrcweir } 1174cdf0e10cSrcweir } 1175cdf0e10cSrcweir // <-- 1176cdf0e10cSrcweir 1177cdf0e10cSrcweir sal_uInt16 nBulletWidth = 0; 1178cdf0e10cSrcweir if( SVX_NUM_BITMAP == rFmt.GetNumberingType() ) 1179cdf0e10cSrcweir { 1180cdf0e10cSrcweir nBulletWidth = lcl_DrawGraphic(pVDev, rFmt, 1181cdf0e10cSrcweir nNumberXPos, 1182cdf0e10cSrcweir nYStart, nWidthRelation); 1183cdf0e10cSrcweir } 1184cdf0e10cSrcweir else if( SVX_NUM_CHAR_SPECIAL == rFmt.GetNumberingType() ) 1185cdf0e10cSrcweir { 1186cdf0e10cSrcweir nBulletWidth = lcl_DrawBullet(pVDev, rFmt, nNumberXPos, nYStart, aStdFont.GetSize()); 1187cdf0e10cSrcweir } 1188cdf0e10cSrcweir else 1189cdf0e10cSrcweir { 1190cdf0e10cSrcweir pVDev->SetFont(aStdFont); 1191cdf0e10cSrcweir if(pActNum->IsContinusNum()) 1192cdf0e10cSrcweir aNumVector[nLevel] = nPreNum; 1193cdf0e10cSrcweir // --> OD 2005-11-17 #128041# 1194cdf0e10cSrcweir String aText(pActNum->MakeNumString( aNumVector )); 1195cdf0e10cSrcweir // <-- 1196cdf0e10cSrcweir pVDev->DrawText( Point(nNumberXPos, nYStart), aText ); 1197cdf0e10cSrcweir nBulletWidth = (sal_uInt16)pVDev->GetTextWidth(aText); 1198cdf0e10cSrcweir nPreNum++; 1199cdf0e10cSrcweir } 1200cdf0e10cSrcweir // --> OD 2008-02-01 #newlistlevelattrs# 1201cdf0e10cSrcweir if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT && 1202cdf0e10cSrcweir rFmt.GetLabelFollowedBy() == SvxNumberFormat::SPACE ) 1203cdf0e10cSrcweir { 1204cdf0e10cSrcweir pVDev->SetFont(aStdFont); 1205cdf0e10cSrcweir String aText(' '); 1206cdf0e10cSrcweir pVDev->DrawText( Point(nNumberXPos, nYStart), aText ); 1207cdf0e10cSrcweir nBulletWidth = nBulletWidth + (sal_uInt16)pVDev->GetTextWidth(aText); 1208cdf0e10cSrcweir } 1209cdf0e10cSrcweir // <-- 1210cdf0e10cSrcweir 1211cdf0e10cSrcweir // --> OD 2008-02-01 #newlistlevelattrs# 1212cdf0e10cSrcweir sal_uInt16 nTextXPos( 0 ); 1213cdf0e10cSrcweir if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION ) 1214cdf0e10cSrcweir { 1215cdf0e10cSrcweir nTextXPos = nXStart; 1216cdf0e10cSrcweir if(nTextOffset < 0) 1217cdf0e10cSrcweir nTextXPos = nTextXPos + nTextOffset; 1218cdf0e10cSrcweir if(nNumberXPos + nBulletWidth + nTextOffset > nTextXPos ) 1219cdf0e10cSrcweir nTextXPos = nNumberXPos + nBulletWidth + nTextOffset; 1220cdf0e10cSrcweir } 1221cdf0e10cSrcweir else if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT ) 1222cdf0e10cSrcweir { 1223cdf0e10cSrcweir switch ( rFmt.GetLabelFollowedBy() ) 1224cdf0e10cSrcweir { 1225cdf0e10cSrcweir case SvxNumberFormat::LISTTAB: 1226cdf0e10cSrcweir { 1227cdf0e10cSrcweir nTextXPos = static_cast<sal_uInt16>( 1228cdf0e10cSrcweir rFmt.GetListtabPos() / nWidthRelation ); 1229cdf0e10cSrcweir if ( nTextXPos < nNumberXPos + nBulletWidth ) 1230cdf0e10cSrcweir { 1231cdf0e10cSrcweir nTextXPos = nNumberXPos + nBulletWidth; 1232cdf0e10cSrcweir } 1233cdf0e10cSrcweir } 1234cdf0e10cSrcweir break; 1235cdf0e10cSrcweir case SvxNumberFormat::SPACE: 1236cdf0e10cSrcweir case SvxNumberFormat::NOTHING: 1237cdf0e10cSrcweir { 1238cdf0e10cSrcweir nTextXPos = nNumberXPos + nBulletWidth; 1239cdf0e10cSrcweir } 1240cdf0e10cSrcweir break; 1241cdf0e10cSrcweir } 1242cdf0e10cSrcweir 1243cdf0e10cSrcweir nXStart = static_cast<sal_uInt16>( rFmt.GetIndentAt() / nWidthRelation ); 1244cdf0e10cSrcweir } 1245cdf0e10cSrcweir // <-- 1246cdf0e10cSrcweir 1247cdf0e10cSrcweir 1248cdf0e10cSrcweir Rectangle aRect1(Point(nTextXPos, nYStart + nFontHeight / 2), Size(aSize.Width() / 2, 2)); 1249cdf0e10cSrcweir pVDev->SetFillColor( GetSettings().GetStyleSettings().GetWindowColor() ); // Color( COL_BLACK ) ); 1250cdf0e10cSrcweir pVDev->DrawRect( aRect1 ); 1251cdf0e10cSrcweir 1252cdf0e10cSrcweir Rectangle aRect2(Point(nXStart, nYStart + nLineHeight + nFontHeight / 2 ), Size(aSize.Width() / 2, 2)); 1253cdf0e10cSrcweir pVDev->DrawRect( aRect2 ); 1254cdf0e10cSrcweir nYStart += 2 * nLineHeight; 1255cdf0e10cSrcweir } 1256cdf0e10cSrcweir } 1257cdf0e10cSrcweir else 1258cdf0e10cSrcweir { 1259cdf0e10cSrcweir SwNumberTree::tNumberVector aNumVector; 1260cdf0e10cSrcweir sal_uInt16 nLineHeight = nFontHeight * 3 / 2; 1261cdf0e10cSrcweir for( sal_uInt8 nLevel = 0; nLevel < MAXLEVEL; 1262cdf0e10cSrcweir ++nLevel, nYStart = nYStart + nYStep ) 1263cdf0e10cSrcweir { 1264cdf0e10cSrcweir const SwNumFmt &rFmt = pActNum->Get(nLevel); 1265cdf0e10cSrcweir aNumVector.push_back(rFmt.GetStart()); 1266cdf0e10cSrcweir // --> OD 2008-02-01 #newlistlevelattrs# 1267cdf0e10cSrcweir sal_uInt16 nXStart( 0 ); 1268cdf0e10cSrcweir if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION ) 1269cdf0e10cSrcweir { 1270cdf0e10cSrcweir nXStart = rFmt.GetAbsLSpace() / nWidthRelation; 1271cdf0e10cSrcweir } 1272cdf0e10cSrcweir else if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT ) 1273cdf0e10cSrcweir { 1274cdf0e10cSrcweir const long nTmpXStart( ( rFmt.GetIndentAt() + 1275cdf0e10cSrcweir rFmt.GetFirstLineIndent() ) / 1276cdf0e10cSrcweir nWidthRelation ); 1277cdf0e10cSrcweir if ( nTmpXStart < 0 ) 1278cdf0e10cSrcweir { 1279cdf0e10cSrcweir nXStart = 0; 1280cdf0e10cSrcweir } 1281cdf0e10cSrcweir else 1282cdf0e10cSrcweir { 1283cdf0e10cSrcweir nXStart = static_cast<sal_uInt16>(nTmpXStart); 1284cdf0e10cSrcweir } 1285cdf0e10cSrcweir } 1286cdf0e10cSrcweir nXStart /= 2; 1287cdf0e10cSrcweir nXStart += 2; 1288cdf0e10cSrcweir // <-- 1289cdf0e10cSrcweir sal_uInt16 nTextOffset = 2 * nXStep; 1290cdf0e10cSrcweir if( SVX_NUM_BITMAP == rFmt.GetNumberingType() ) 1291cdf0e10cSrcweir { 1292cdf0e10cSrcweir lcl_DrawGraphic(pVDev, rFmt, nXStart, nYStart, nWidthRelation); 1293cdf0e10cSrcweir nTextOffset = nLineHeight + nXStep; 1294cdf0e10cSrcweir } 1295cdf0e10cSrcweir else if( SVX_NUM_CHAR_SPECIAL == rFmt.GetNumberingType() ) 1296cdf0e10cSrcweir { 1297cdf0e10cSrcweir nTextOffset = lcl_DrawBullet(pVDev, rFmt, nXStart, nYStart, aStdFont.GetSize()); 1298cdf0e10cSrcweir nTextOffset = nTextOffset + nXStep; 1299cdf0e10cSrcweir } 1300cdf0e10cSrcweir else 1301cdf0e10cSrcweir { 1302cdf0e10cSrcweir pVDev->SetFont(aStdFont); 1303cdf0e10cSrcweir if(pActNum->IsContinusNum()) 1304cdf0e10cSrcweir aNumVector[nLevel] = nPreNum; 1305cdf0e10cSrcweir // --> OD 2005-11-17 #128041# 1306cdf0e10cSrcweir String aText(pActNum->MakeNumString( aNumVector )); 1307cdf0e10cSrcweir // <-- 1308cdf0e10cSrcweir pVDev->DrawText( Point(nXStart, nYStart), aText ); 1309cdf0e10cSrcweir nTextOffset = (sal_uInt16)pVDev->GetTextWidth(aText); 1310cdf0e10cSrcweir nTextOffset = nTextOffset + nXStep; 1311cdf0e10cSrcweir nPreNum++; 1312cdf0e10cSrcweir } 1313cdf0e10cSrcweir pVDev->SetFont(aStdFont); 1314cdf0e10cSrcweir 1315cdf0e10cSrcweir // Changed as per BugID 79541 Branding/Configuration 1316cdf0e10cSrcweir uno::Any MyAny = ::utl::ConfigManager::GetConfigManager()-> 1317cdf0e10cSrcweir GetDirectConfigProperty( ::utl::ConfigManager::PRODUCTNAME ); 1318cdf0e10cSrcweir ::rtl::OUString aProductName; 1319cdf0e10cSrcweir 1320cdf0e10cSrcweir MyAny >>= aProductName; 1321cdf0e10cSrcweir String sMsg(C2S("%PRODUCTNAME")); 1322cdf0e10cSrcweir sMsg.SearchAndReplaceAscii( "%PRODUCTNAME" , aProductName ); 1323cdf0e10cSrcweir 1324cdf0e10cSrcweir if(pOutlineNames) 1325cdf0e10cSrcweir sMsg = pOutlineNames[nLevel]; 1326cdf0e10cSrcweir pVDev->DrawText( Point(nXStart + nTextOffset, nYStart), sMsg ); 1327cdf0e10cSrcweir } 1328cdf0e10cSrcweir } 1329cdf0e10cSrcweir } 1330cdf0e10cSrcweir DrawOutDev( Point(0,0), aSize, 1331cdf0e10cSrcweir Point(0,0), aSize, 1332cdf0e10cSrcweir *pVDev ); 1333cdf0e10cSrcweir delete pVDev; 1334cdf0e10cSrcweir 1335cdf0e10cSrcweir } 1336cdf0e10cSrcweir 1337cdf0e10cSrcweir /*-----------------02.12.97 10:34------------------- 1338cdf0e10cSrcweir 1339cdf0e10cSrcweir --------------------------------------------------*/ 1340cdf0e10cSrcweir NumberingPreview::~NumberingPreview() 1341cdf0e10cSrcweir { 1342cdf0e10cSrcweir } 1343cdf0e10cSrcweir 1344cdf0e10cSrcweir 1345