1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_cui.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir #include <com/sun/star/text/HoriOrientation.hpp> 32*cdf0e10cSrcweir #include <com/sun/star/text/VertOrientation.hpp> 33*cdf0e10cSrcweir #include <com/sun/star/text/RelOrientation.hpp> 34*cdf0e10cSrcweir 35*cdf0e10cSrcweir #include <numpages.hxx> 36*cdf0e10cSrcweir #include <numpages.hrc> 37*cdf0e10cSrcweir #include <dialmgr.hxx> 38*cdf0e10cSrcweir #include <cuires.hrc> 39*cdf0e10cSrcweir #include <tools/shl.hxx> 40*cdf0e10cSrcweir #include <i18npool/mslangid.hxx> 41*cdf0e10cSrcweir #include <svtools/valueset.hxx> 42*cdf0e10cSrcweir #include <helpid.hrc> 43*cdf0e10cSrcweir #include <editeng/numitem.hxx> 44*cdf0e10cSrcweir #include <svl/eitem.hxx> 45*cdf0e10cSrcweir #include <vcl/svapp.hxx> 46*cdf0e10cSrcweir #include <svx/gallery.hxx> 47*cdf0e10cSrcweir #include <svl/urihelper.hxx> 48*cdf0e10cSrcweir #include <editeng/brshitem.hxx> 49*cdf0e10cSrcweir #include <svl/intitem.hxx> 50*cdf0e10cSrcweir #include <sfx2/objsh.hxx> 51*cdf0e10cSrcweir #include <vcl/graph.hxx> 52*cdf0e10cSrcweir #include <vcl/msgbox.hxx> 53*cdf0e10cSrcweir #include "cuicharmap.hxx" 54*cdf0e10cSrcweir #include <editeng/flstitem.hxx> 55*cdf0e10cSrcweir #include <svx/dlgutil.hxx> 56*cdf0e10cSrcweir #include <svx/xtable.hxx> 57*cdf0e10cSrcweir #include <svx/drawitem.hxx> 58*cdf0e10cSrcweir #include <svx/numvset.hxx> 59*cdf0e10cSrcweir #include <svx/htmlmode.hxx> 60*cdf0e10cSrcweir #include <unotools/pathoptions.hxx> 61*cdf0e10cSrcweir #include <svtools/ctrltool.hxx> 62*cdf0e10cSrcweir #include <editeng/unolingu.hxx> 63*cdf0e10cSrcweir #include <com/sun/star/style/NumberingType.hpp> 64*cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp> 65*cdf0e10cSrcweir #include <com/sun/star/container/XIndexAccess.hpp> 66*cdf0e10cSrcweir #include <com/sun/star/text/XDefaultNumberingProvider.hpp> 67*cdf0e10cSrcweir #include <com/sun/star/text/XNumberingFormatter.hpp> 68*cdf0e10cSrcweir #include <com/sun/star/beans/PropertyValue.hpp> 69*cdf0e10cSrcweir #include <comphelper/processfactory.hxx> 70*cdf0e10cSrcweir #include <com/sun/star/text/XNumberingTypeInfo.hpp> 71*cdf0e10cSrcweir #include <svx/dialmgr.hxx> 72*cdf0e10cSrcweir #include <svx/dialogs.hrc> 73*cdf0e10cSrcweir 74*cdf0e10cSrcweir #include <algorithm> 75*cdf0e10cSrcweir #include <vector> 76*cdf0e10cSrcweir #include "sfx2/opengrf.hxx" 77*cdf0e10cSrcweir 78*cdf0e10cSrcweir #include <cuires.hrc> //CHINA001 79*cdf0e10cSrcweir #include <sfx2/request.hxx> //CHINA001 80*cdf0e10cSrcweir #include <svl/aeitem.hxx> //add CHINA001 81*cdf0e10cSrcweir #include <svl/stritem.hxx>//add CHINA001 82*cdf0e10cSrcweir #include <svl/slstitm.hxx> //add CHINA001 83*cdf0e10cSrcweir 84*cdf0e10cSrcweir using namespace com::sun::star; 85*cdf0e10cSrcweir using namespace com::sun::star::uno; 86*cdf0e10cSrcweir using namespace com::sun::star::beans; 87*cdf0e10cSrcweir using namespace com::sun::star::lang; 88*cdf0e10cSrcweir using namespace com::sun::star::i18n; 89*cdf0e10cSrcweir using namespace com::sun::star::text; 90*cdf0e10cSrcweir using namespace com::sun::star::container; 91*cdf0e10cSrcweir using namespace com::sun::star::style; 92*cdf0e10cSrcweir using rtl::OUString; 93*cdf0e10cSrcweir #define C2U(cChar) OUString::createFromAscii(cChar) 94*cdf0e10cSrcweir 95*cdf0e10cSrcweir SV_IMPL_PTRARR(SvxNumSettingsArr_Impl,SvxNumSettings_ImplPtr); 96*cdf0e10cSrcweir 97*cdf0e10cSrcweir /*-----------------07.02.97 15.37------------------- 98*cdf0e10cSrcweir 99*cdf0e10cSrcweir --------------------------------------------------*/ 100*cdf0e10cSrcweir #define NUM_PAGETYPE_BULLET 0 101*cdf0e10cSrcweir #define NUM_PAGETYPE_SINGLENUM 1 102*cdf0e10cSrcweir #define NUM_PAGETYPE_NUM 2 103*cdf0e10cSrcweir #define NUM_PAGETYPE_BMP 3 104*cdf0e10cSrcweir #define PAGETYPE_USER_START 10 105*cdf0e10cSrcweir 106*cdf0e10cSrcweir #define SHOW_NUMBERING 0 107*cdf0e10cSrcweir #define SHOW_BULLET 1 108*cdf0e10cSrcweir #define SHOW_BITMAP 2 109*cdf0e10cSrcweir 110*cdf0e10cSrcweir #define MAX_BMP_WIDTH 16 111*cdf0e10cSrcweir #define MAX_BMP_HEIGHT 16 112*cdf0e10cSrcweir 113*cdf0e10cSrcweir static sal_Bool bLastRelative = sal_False; 114*cdf0e10cSrcweir static const sal_Char cNumberingType[] = "NumberingType"; 115*cdf0e10cSrcweir static const sal_Char cValue[] = "Value"; 116*cdf0e10cSrcweir static const sal_Char cParentNumbering[] = "ParentNumbering"; 117*cdf0e10cSrcweir static const sal_Char cPrefix[] = "Prefix"; 118*cdf0e10cSrcweir static const sal_Char cSuffix[] = "Suffix"; 119*cdf0e10cSrcweir static const sal_Char cBulletChar[] = "BulletChar"; 120*cdf0e10cSrcweir static const sal_Char cBulletFontName[] = "BulletFontName"; 121*cdf0e10cSrcweir /* -----------------------------31.01.01 10:23-------------------------------- 122*cdf0e10cSrcweir 123*cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 124*cdf0e10cSrcweir Reference<XDefaultNumberingProvider> lcl_GetNumberingProvider() 125*cdf0e10cSrcweir { 126*cdf0e10cSrcweir Reference< XMultiServiceFactory > xMSF = ::comphelper::getProcessServiceFactory(); 127*cdf0e10cSrcweir Reference < XInterface > xI = xMSF->createInstance( 128*cdf0e10cSrcweir ::rtl::OUString::createFromAscii( "com.sun.star.text.DefaultNumberingProvider" ) ); 129*cdf0e10cSrcweir Reference<XDefaultNumberingProvider> xRet(xI, UNO_QUERY); 130*cdf0e10cSrcweir DBG_ASSERT(xRet.is(), "service missing: \"com.sun.star.text.DefaultNumberingProvider\""); 131*cdf0e10cSrcweir 132*cdf0e10cSrcweir return xRet; 133*cdf0e10cSrcweir } 134*cdf0e10cSrcweir /* -----------------------------31.01.01 11:40-------------------------------- 135*cdf0e10cSrcweir 136*cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 137*cdf0e10cSrcweir SvxNumSettings_ImplPtr lcl_CreateNumSettingsPtr(const Sequence<PropertyValue>& rLevelProps) 138*cdf0e10cSrcweir { 139*cdf0e10cSrcweir const PropertyValue* pValues = rLevelProps.getConstArray(); 140*cdf0e10cSrcweir SvxNumSettings_ImplPtr pNew = new SvxNumSettings_Impl; 141*cdf0e10cSrcweir for(sal_Int32 j = 0; j < rLevelProps.getLength(); j++) 142*cdf0e10cSrcweir { 143*cdf0e10cSrcweir if(pValues[j].Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(cNumberingType))) 144*cdf0e10cSrcweir pValues[j].Value >>= pNew->nNumberType; 145*cdf0e10cSrcweir else if(pValues[j].Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(cPrefix))) 146*cdf0e10cSrcweir pValues[j].Value >>= pNew->sPrefix; 147*cdf0e10cSrcweir else if(pValues[j].Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(cSuffix))) 148*cdf0e10cSrcweir pValues[j].Value >>= pNew->sSuffix; 149*cdf0e10cSrcweir else if(pValues[j].Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(cParentNumbering))) 150*cdf0e10cSrcweir pValues[j].Value >>= pNew->nParentNumbering; 151*cdf0e10cSrcweir else if(pValues[j].Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(cBulletChar))) 152*cdf0e10cSrcweir pValues[j].Value >>= pNew->sBulletChar; 153*cdf0e10cSrcweir else if(pValues[j].Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(cBulletFontName))) 154*cdf0e10cSrcweir pValues[j].Value >>= pNew->sBulletFont; 155*cdf0e10cSrcweir } 156*cdf0e10cSrcweir return pNew; 157*cdf0e10cSrcweir } 158*cdf0e10cSrcweir /* -----------------28.10.98 08:32------------------- 159*cdf0e10cSrcweir * 160*cdf0e10cSrcweir * --------------------------------------------------*/ 161*cdf0e10cSrcweir // Die Auswahl an Bullets aus den StarSymbol 162*cdf0e10cSrcweir static const sal_Unicode aBulletTypes[] = 163*cdf0e10cSrcweir { 164*cdf0e10cSrcweir 0x2022, 165*cdf0e10cSrcweir 0x25cf, 166*cdf0e10cSrcweir 0xe00c, 167*cdf0e10cSrcweir 0xe00a, 168*cdf0e10cSrcweir 0x2794, 169*cdf0e10cSrcweir 0x27a2, 170*cdf0e10cSrcweir 0x2717, 171*cdf0e10cSrcweir 0x2714 172*cdf0e10cSrcweir }; 173*cdf0e10cSrcweir /* -----------------28.10.98 09:42------------------- 174*cdf0e10cSrcweir * 175*cdf0e10cSrcweir * --------------------------------------------------*/ 176*cdf0e10cSrcweir static sal_Char __READONLY_DATA aNumChar[] = 177*cdf0e10cSrcweir { 178*cdf0e10cSrcweir 'A', //CHARS_UPPER_LETTER 179*cdf0e10cSrcweir 'a', //CHARS_LOWER_LETTER 180*cdf0e10cSrcweir 'I', //ROMAN_UPPER 181*cdf0e10cSrcweir 'i', //ROMAN_LOWER 182*cdf0e10cSrcweir '1', //ARABIC 183*cdf0e10cSrcweir ' ' 184*cdf0e10cSrcweir }; 185*cdf0e10cSrcweir 186*cdf0e10cSrcweir /*-----------------18.03.98 08:35------------------- 187*cdf0e10cSrcweir Ist eins der maskierten Formate gesetzt? 188*cdf0e10cSrcweir --------------------------------------------------*/ 189*cdf0e10cSrcweir sal_Bool lcl_IsNumFmtSet(SvxNumRule* pNum, sal_uInt16 nLevelMask) 190*cdf0e10cSrcweir { 191*cdf0e10cSrcweir sal_Bool bRet = sal_False; 192*cdf0e10cSrcweir sal_uInt16 nMask = 1; 193*cdf0e10cSrcweir for( sal_uInt16 i = 0; i < SVX_MAX_NUM && !bRet; i++ ) 194*cdf0e10cSrcweir { 195*cdf0e10cSrcweir if(nLevelMask & nMask) 196*cdf0e10cSrcweir bRet |= 0 != pNum->Get( i ); 197*cdf0e10cSrcweir nMask <<= 1 ; 198*cdf0e10cSrcweir } 199*cdf0e10cSrcweir return bRet; 200*cdf0e10cSrcweir } 201*cdf0e10cSrcweir /* -----------------28.10.98 08:50------------------- 202*cdf0e10cSrcweir * 203*cdf0e10cSrcweir * --------------------------------------------------*/ 204*cdf0e10cSrcweir 205*cdf0e10cSrcweir Font& lcl_GetDefaultBulletFont() 206*cdf0e10cSrcweir { 207*cdf0e10cSrcweir static sal_Bool bInit = 0; 208*cdf0e10cSrcweir static Font aDefBulletFont( UniString::CreateFromAscii( 209*cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM( "StarSymbol" ) ), 210*cdf0e10cSrcweir String(), Size( 0, 14 ) ); 211*cdf0e10cSrcweir if(!bInit) 212*cdf0e10cSrcweir { 213*cdf0e10cSrcweir aDefBulletFont.SetCharSet( RTL_TEXTENCODING_SYMBOL ); 214*cdf0e10cSrcweir aDefBulletFont.SetFamily( FAMILY_DONTKNOW ); 215*cdf0e10cSrcweir aDefBulletFont.SetPitch( PITCH_DONTKNOW ); 216*cdf0e10cSrcweir aDefBulletFont.SetWeight( WEIGHT_DONTKNOW ); 217*cdf0e10cSrcweir aDefBulletFont.SetTransparent( sal_True ); 218*cdf0e10cSrcweir bInit = sal_True; 219*cdf0e10cSrcweir } 220*cdf0e10cSrcweir return aDefBulletFont; 221*cdf0e10cSrcweir } 222*cdf0e10cSrcweir 223*cdf0e10cSrcweir 224*cdf0e10cSrcweir /**************************************************************************/ 225*cdf0e10cSrcweir /* */ 226*cdf0e10cSrcweir /* */ 227*cdf0e10cSrcweir /**************************************************************************/ 228*cdf0e10cSrcweir 229*cdf0e10cSrcweir 230*cdf0e10cSrcweir SvxSingleNumPickTabPage::SvxSingleNumPickTabPage(Window* pParent, 231*cdf0e10cSrcweir const SfxItemSet& rSet) : 232*cdf0e10cSrcweir SfxTabPage( pParent, CUI_RES( RID_SVXPAGE_PICK_SINGLE_NUM ), rSet ), 233*cdf0e10cSrcweir aValuesFL( this, CUI_RES(FL_VALUES) ), 234*cdf0e10cSrcweir pExamplesVS( new SvxNumValueSet(this, CUI_RES(VS_VALUES), NUM_PAGETYPE_SINGLENUM )), 235*cdf0e10cSrcweir pActNum(0), 236*cdf0e10cSrcweir pSaveNum(0), 237*cdf0e10cSrcweir nActNumLvl( USHRT_MAX ), 238*cdf0e10cSrcweir bModified(sal_False), 239*cdf0e10cSrcweir bPreset(sal_False), 240*cdf0e10cSrcweir nNumItemId(SID_ATTR_NUMBERING_RULE) 241*cdf0e10cSrcweir { 242*cdf0e10cSrcweir FreeResource(); 243*cdf0e10cSrcweir SetExchangeSupport(); 244*cdf0e10cSrcweir pExamplesVS->SetSelectHdl(LINK(this, SvxSingleNumPickTabPage, NumSelectHdl_Impl)); 245*cdf0e10cSrcweir pExamplesVS->SetDoubleClickHdl(LINK(this, SvxSingleNumPickTabPage, DoubleClickHdl_Impl)); 246*cdf0e10cSrcweir pExamplesVS->SetHelpId(HID_VALUESET_SINGLENUM ); 247*cdf0e10cSrcweir 248*cdf0e10cSrcweir Reference<XDefaultNumberingProvider> xDefNum = lcl_GetNumberingProvider(); 249*cdf0e10cSrcweir if(xDefNum.is()) 250*cdf0e10cSrcweir { 251*cdf0e10cSrcweir Sequence< Sequence< PropertyValue > > aNumberings; 252*cdf0e10cSrcweir LanguageType eLang = Application::GetSettings().GetLanguage(); 253*cdf0e10cSrcweir Locale aLocale = SvxCreateLocale(eLang); 254*cdf0e10cSrcweir try 255*cdf0e10cSrcweir { 256*cdf0e10cSrcweir aNumberings = 257*cdf0e10cSrcweir xDefNum->getDefaultContinuousNumberingLevels( aLocale ); 258*cdf0e10cSrcweir 259*cdf0e10cSrcweir 260*cdf0e10cSrcweir sal_Int32 nLength = aNumberings.getLength() > NUM_VALUSET_COUNT ? NUM_VALUSET_COUNT :aNumberings.getLength(); 261*cdf0e10cSrcweir 262*cdf0e10cSrcweir const Sequence<PropertyValue>* pValuesArr = aNumberings.getConstArray(); 263*cdf0e10cSrcweir for(sal_Int32 i = 0; i < nLength; i++) 264*cdf0e10cSrcweir { 265*cdf0e10cSrcweir SvxNumSettings_ImplPtr pNew = lcl_CreateNumSettingsPtr(pValuesArr[i]); 266*cdf0e10cSrcweir aNumSettingsArr.Insert(pNew, aNumSettingsArr.Count()); 267*cdf0e10cSrcweir } 268*cdf0e10cSrcweir } 269*cdf0e10cSrcweir catch(Exception&) 270*cdf0e10cSrcweir { 271*cdf0e10cSrcweir } 272*cdf0e10cSrcweir Reference<XNumberingFormatter> xFormat(xDefNum, UNO_QUERY); 273*cdf0e10cSrcweir pExamplesVS->SetNumberingSettings(aNumberings, xFormat, aLocale); 274*cdf0e10cSrcweir } 275*cdf0e10cSrcweir } 276*cdf0e10cSrcweir /*-----------------07.02.97 12.08------------------- 277*cdf0e10cSrcweir 278*cdf0e10cSrcweir --------------------------------------------------*/ 279*cdf0e10cSrcweir 280*cdf0e10cSrcweir SvxSingleNumPickTabPage::~SvxSingleNumPickTabPage() 281*cdf0e10cSrcweir { 282*cdf0e10cSrcweir delete pActNum; 283*cdf0e10cSrcweir delete pExamplesVS; 284*cdf0e10cSrcweir delete pSaveNum; 285*cdf0e10cSrcweir aNumSettingsArr.DeleteAndDestroy(0, aNumSettingsArr.Count()); 286*cdf0e10cSrcweir } 287*cdf0e10cSrcweir 288*cdf0e10cSrcweir /*-----------------07.02.97 12.13------------------- 289*cdf0e10cSrcweir 290*cdf0e10cSrcweir --------------------------------------------------*/ 291*cdf0e10cSrcweir 292*cdf0e10cSrcweir SfxTabPage* SvxSingleNumPickTabPage::Create( Window* pParent, 293*cdf0e10cSrcweir const SfxItemSet& rAttrSet) 294*cdf0e10cSrcweir { 295*cdf0e10cSrcweir return new SvxSingleNumPickTabPage(pParent, rAttrSet); 296*cdf0e10cSrcweir } 297*cdf0e10cSrcweir 298*cdf0e10cSrcweir /*-----------------07.02.97 12.09------------------- 299*cdf0e10cSrcweir 300*cdf0e10cSrcweir --------------------------------------------------*/ 301*cdf0e10cSrcweir 302*cdf0e10cSrcweir 303*cdf0e10cSrcweir sal_Bool SvxSingleNumPickTabPage::FillItemSet( SfxItemSet& rSet ) 304*cdf0e10cSrcweir { 305*cdf0e10cSrcweir if( (bPreset || bModified) && pSaveNum) 306*cdf0e10cSrcweir { 307*cdf0e10cSrcweir *pSaveNum = *pActNum; 308*cdf0e10cSrcweir rSet.Put(SvxNumBulletItem( *pSaveNum ), nNumItemId); 309*cdf0e10cSrcweir rSet.Put(SfxBoolItem(SID_PARAM_NUM_PRESET, bPreset)); 310*cdf0e10cSrcweir } 311*cdf0e10cSrcweir 312*cdf0e10cSrcweir return bModified; 313*cdf0e10cSrcweir } 314*cdf0e10cSrcweir 315*cdf0e10cSrcweir /*-----------------08.02.97 16.27------------------- 316*cdf0e10cSrcweir 317*cdf0e10cSrcweir --------------------------------------------------*/ 318*cdf0e10cSrcweir 319*cdf0e10cSrcweir void SvxSingleNumPickTabPage::ActivatePage(const SfxItemSet& rSet) 320*cdf0e10cSrcweir { 321*cdf0e10cSrcweir const SfxPoolItem* pItem; 322*cdf0e10cSrcweir bPreset = sal_False; 323*cdf0e10cSrcweir sal_Bool bIsPreset = sal_False; 324*cdf0e10cSrcweir const SfxItemSet* pExampleSet = GetTabDialog()->GetExampleSet(); 325*cdf0e10cSrcweir if(pExampleSet) 326*cdf0e10cSrcweir { 327*cdf0e10cSrcweir if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_NUM_PRESET, sal_False, &pItem)) 328*cdf0e10cSrcweir bIsPreset = ((const SfxBoolItem*)pItem)->GetValue(); 329*cdf0e10cSrcweir if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_CUR_NUM_LEVEL, sal_False, &pItem)) 330*cdf0e10cSrcweir nActNumLvl = ((const SfxUInt16Item*)pItem)->GetValue(); 331*cdf0e10cSrcweir } 332*cdf0e10cSrcweir if(SFX_ITEM_SET == rSet.GetItemState(nNumItemId, sal_False, &pItem)) 333*cdf0e10cSrcweir { 334*cdf0e10cSrcweir delete pSaveNum; 335*cdf0e10cSrcweir pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule()); 336*cdf0e10cSrcweir } 337*cdf0e10cSrcweir if(*pSaveNum != *pActNum) 338*cdf0e10cSrcweir { 339*cdf0e10cSrcweir *pActNum = *pSaveNum; 340*cdf0e10cSrcweir pExamplesVS->SetNoSelection(); 341*cdf0e10cSrcweir } 342*cdf0e10cSrcweir // ersten Eintrag vorselektieren 343*cdf0e10cSrcweir if(pActNum && (!lcl_IsNumFmtSet(pActNum, nActNumLvl) || bIsPreset)) 344*cdf0e10cSrcweir { 345*cdf0e10cSrcweir pExamplesVS->SelectItem(1); 346*cdf0e10cSrcweir NumSelectHdl_Impl(pExamplesVS); 347*cdf0e10cSrcweir bPreset = sal_True; 348*cdf0e10cSrcweir } 349*cdf0e10cSrcweir bPreset |= bIsPreset; 350*cdf0e10cSrcweir 351*cdf0e10cSrcweir bModified = sal_False; 352*cdf0e10cSrcweir } 353*cdf0e10cSrcweir 354*cdf0e10cSrcweir /*-----------------08.02.97 11.28------------------- 355*cdf0e10cSrcweir 356*cdf0e10cSrcweir --------------------------------------------------*/ 357*cdf0e10cSrcweir 358*cdf0e10cSrcweir int SvxSingleNumPickTabPage::DeactivatePage(SfxItemSet *_pSet) 359*cdf0e10cSrcweir { 360*cdf0e10cSrcweir if(_pSet) 361*cdf0e10cSrcweir FillItemSet(*_pSet); 362*cdf0e10cSrcweir return sal_True; 363*cdf0e10cSrcweir } 364*cdf0e10cSrcweir 365*cdf0e10cSrcweir /*-----------------07.02.97 12.09------------------- 366*cdf0e10cSrcweir 367*cdf0e10cSrcweir --------------------------------------------------*/ 368*cdf0e10cSrcweir 369*cdf0e10cSrcweir 370*cdf0e10cSrcweir void SvxSingleNumPickTabPage::Reset( const SfxItemSet& rSet ) 371*cdf0e10cSrcweir { 372*cdf0e10cSrcweir const SfxPoolItem* pItem; 373*cdf0e10cSrcweir // nActNumLvl = ((SwNumBulletTabDialog*)GetTabDialog())->GetActNumLevel(); 374*cdf0e10cSrcweir //im Draw gibt es das Item als WhichId, im Writer nur als SlotId 375*cdf0e10cSrcweir SfxItemState eState = rSet.GetItemState(SID_ATTR_NUMBERING_RULE, sal_False, &pItem); 376*cdf0e10cSrcweir if(eState != SFX_ITEM_SET) 377*cdf0e10cSrcweir { 378*cdf0e10cSrcweir nNumItemId = rSet.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE); 379*cdf0e10cSrcweir eState = rSet.GetItemState(nNumItemId, sal_False, &pItem); 380*cdf0e10cSrcweir 381*cdf0e10cSrcweir if( eState != SFX_ITEM_SET ) 382*cdf0e10cSrcweir { 383*cdf0e10cSrcweir pItem = &static_cast< const SvxNumBulletItem& >( rSet.Get( nNumItemId, sal_True ) ); 384*cdf0e10cSrcweir eState = SFX_ITEM_SET; 385*cdf0e10cSrcweir } 386*cdf0e10cSrcweir } 387*cdf0e10cSrcweir DBG_ASSERT(eState == SFX_ITEM_SET, "kein Item gefunden!"); 388*cdf0e10cSrcweir delete pSaveNum; 389*cdf0e10cSrcweir pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule()); 390*cdf0e10cSrcweir 391*cdf0e10cSrcweir if(!pActNum) 392*cdf0e10cSrcweir pActNum = new SvxNumRule(*pSaveNum); 393*cdf0e10cSrcweir else if(*pSaveNum != *pActNum) 394*cdf0e10cSrcweir *pActNum = *pSaveNum; 395*cdf0e10cSrcweir } 396*cdf0e10cSrcweir /*-----------------08.02.97 11.40------------------- 397*cdf0e10cSrcweir 398*cdf0e10cSrcweir --------------------------------------------------*/ 399*cdf0e10cSrcweir 400*cdf0e10cSrcweir IMPL_LINK(SvxSingleNumPickTabPage, NumSelectHdl_Impl, ValueSet*, EMPTYARG) 401*cdf0e10cSrcweir { 402*cdf0e10cSrcweir if(pActNum) 403*cdf0e10cSrcweir { 404*cdf0e10cSrcweir bPreset = sal_False; 405*cdf0e10cSrcweir bModified = sal_True; 406*cdf0e10cSrcweir sal_uInt16 nIdx = pExamplesVS->GetSelectItemId() - 1; 407*cdf0e10cSrcweir DBG_ASSERT(aNumSettingsArr.Count() > nIdx, "wrong index"); 408*cdf0e10cSrcweir if(aNumSettingsArr.Count() <= nIdx) 409*cdf0e10cSrcweir return 0; 410*cdf0e10cSrcweir SvxNumSettings_ImplPtr _pSet = aNumSettingsArr.GetObject(nIdx); 411*cdf0e10cSrcweir sal_Int16 eNewType = _pSet->nNumberType; 412*cdf0e10cSrcweir const sal_Unicode cLocalPrefix = _pSet->sPrefix.getLength() ? _pSet->sPrefix.getStr()[0] : 0; 413*cdf0e10cSrcweir const sal_Unicode cLocalSuffix = _pSet->sSuffix.getLength() ? _pSet->sSuffix.getStr()[0] : 0; 414*cdf0e10cSrcweir 415*cdf0e10cSrcweir sal_uInt16 nMask = 1; 416*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 417*cdf0e10cSrcweir { 418*cdf0e10cSrcweir if(nActNumLvl & nMask) 419*cdf0e10cSrcweir { 420*cdf0e10cSrcweir SvxNumberFormat aFmt(pActNum->GetLevel(i)); 421*cdf0e10cSrcweir aFmt.SetNumberingType(eNewType); 422*cdf0e10cSrcweir String aEmptyStr; 423*cdf0e10cSrcweir if(cLocalPrefix == ' ') 424*cdf0e10cSrcweir aFmt.SetPrefix( aEmptyStr ); 425*cdf0e10cSrcweir else 426*cdf0e10cSrcweir aFmt.SetPrefix(_pSet->sPrefix); 427*cdf0e10cSrcweir if(cLocalSuffix == ' ') 428*cdf0e10cSrcweir aFmt.SetSuffix( aEmptyStr ); 429*cdf0e10cSrcweir else 430*cdf0e10cSrcweir aFmt.SetSuffix(_pSet->sSuffix); 431*cdf0e10cSrcweir aFmt.SetCharFmtName(sNumCharFmtName); 432*cdf0e10cSrcweir // #62069# // #92724# 433*cdf0e10cSrcweir aFmt.SetBulletRelSize(100); 434*cdf0e10cSrcweir pActNum->SetLevel(i, aFmt); 435*cdf0e10cSrcweir } 436*cdf0e10cSrcweir nMask <<= 1 ; 437*cdf0e10cSrcweir } 438*cdf0e10cSrcweir } 439*cdf0e10cSrcweir return 0; 440*cdf0e10cSrcweir } 441*cdf0e10cSrcweir 442*cdf0e10cSrcweir /*-----------------06.06.97 11.15------------------- 443*cdf0e10cSrcweir 444*cdf0e10cSrcweir --------------------------------------------------*/ 445*cdf0e10cSrcweir IMPL_LINK(SvxSingleNumPickTabPage, DoubleClickHdl_Impl, ValueSet*, EMPTYARG) 446*cdf0e10cSrcweir { 447*cdf0e10cSrcweir NumSelectHdl_Impl(pExamplesVS); 448*cdf0e10cSrcweir OKButton& rOk = GetTabDialog()->GetOKButton(); 449*cdf0e10cSrcweir rOk.GetClickHdl().Call(&rOk); 450*cdf0e10cSrcweir return 0; 451*cdf0e10cSrcweir } 452*cdf0e10cSrcweir 453*cdf0e10cSrcweir /**************************************************************************/ 454*cdf0e10cSrcweir /* */ 455*cdf0e10cSrcweir /* */ 456*cdf0e10cSrcweir /**************************************************************************/ 457*cdf0e10cSrcweir 458*cdf0e10cSrcweir 459*cdf0e10cSrcweir SvxBulletPickTabPage::SvxBulletPickTabPage(Window* pParent, 460*cdf0e10cSrcweir const SfxItemSet& rSet) : 461*cdf0e10cSrcweir SfxTabPage( pParent, CUI_RES( RID_SVXPAGE_PICK_BULLET ), rSet ), 462*cdf0e10cSrcweir aValuesFL( this, CUI_RES(FL_VALUES) ), 463*cdf0e10cSrcweir pExamplesVS( new SvxNumValueSet(this, CUI_RES(VS_VALUES), NUM_PAGETYPE_BULLET )), 464*cdf0e10cSrcweir pActNum(0), 465*cdf0e10cSrcweir pSaveNum(0), 466*cdf0e10cSrcweir nActNumLvl( USHRT_MAX ), 467*cdf0e10cSrcweir bModified(sal_False), 468*cdf0e10cSrcweir bPreset(sal_False), 469*cdf0e10cSrcweir nNumItemId(SID_ATTR_NUMBERING_RULE) 470*cdf0e10cSrcweir { 471*cdf0e10cSrcweir FreeResource(); 472*cdf0e10cSrcweir SetExchangeSupport(); 473*cdf0e10cSrcweir pExamplesVS->SetSelectHdl(LINK(this, SvxBulletPickTabPage, NumSelectHdl_Impl)); 474*cdf0e10cSrcweir pExamplesVS->SetDoubleClickHdl(LINK(this, SvxBulletPickTabPage, DoubleClickHdl_Impl)); 475*cdf0e10cSrcweir pExamplesVS->SetHelpId(HID_VALUESET_BULLET ); 476*cdf0e10cSrcweir 477*cdf0e10cSrcweir } 478*cdf0e10cSrcweir /*-----------------07.02.97 12.10------------------- 479*cdf0e10cSrcweir 480*cdf0e10cSrcweir --------------------------------------------------*/ 481*cdf0e10cSrcweir 482*cdf0e10cSrcweir 483*cdf0e10cSrcweir SvxBulletPickTabPage::~SvxBulletPickTabPage() 484*cdf0e10cSrcweir { 485*cdf0e10cSrcweir delete pActNum; 486*cdf0e10cSrcweir delete pExamplesVS; 487*cdf0e10cSrcweir delete pSaveNum; 488*cdf0e10cSrcweir } 489*cdf0e10cSrcweir /*-----------------07.02.97 12.10------------------- 490*cdf0e10cSrcweir 491*cdf0e10cSrcweir --------------------------------------------------*/ 492*cdf0e10cSrcweir 493*cdf0e10cSrcweir 494*cdf0e10cSrcweir SfxTabPage* SvxBulletPickTabPage::Create( Window* pParent, 495*cdf0e10cSrcweir const SfxItemSet& rAttrSet) 496*cdf0e10cSrcweir { 497*cdf0e10cSrcweir return new SvxBulletPickTabPage(pParent, rAttrSet); 498*cdf0e10cSrcweir } 499*cdf0e10cSrcweir 500*cdf0e10cSrcweir /*-----------------07.02.97 12.10------------------- 501*cdf0e10cSrcweir 502*cdf0e10cSrcweir --------------------------------------------------*/ 503*cdf0e10cSrcweir 504*cdf0e10cSrcweir 505*cdf0e10cSrcweir sal_Bool SvxBulletPickTabPage::FillItemSet( SfxItemSet& rSet ) 506*cdf0e10cSrcweir { 507*cdf0e10cSrcweir if( (bPreset || bModified) && pActNum) 508*cdf0e10cSrcweir { 509*cdf0e10cSrcweir *pSaveNum = *pActNum; 510*cdf0e10cSrcweir rSet.Put(SvxNumBulletItem( *pSaveNum ), nNumItemId); 511*cdf0e10cSrcweir rSet.Put(SfxBoolItem(SID_PARAM_NUM_PRESET, bPreset)); 512*cdf0e10cSrcweir } 513*cdf0e10cSrcweir return bModified; 514*cdf0e10cSrcweir } 515*cdf0e10cSrcweir /*-----------------08.02.97 16.28------------------- 516*cdf0e10cSrcweir 517*cdf0e10cSrcweir --------------------------------------------------*/ 518*cdf0e10cSrcweir 519*cdf0e10cSrcweir void SvxBulletPickTabPage::ActivatePage(const SfxItemSet& rSet) 520*cdf0e10cSrcweir { 521*cdf0e10cSrcweir const SfxPoolItem* pItem; 522*cdf0e10cSrcweir bPreset = sal_False; 523*cdf0e10cSrcweir sal_Bool bIsPreset = sal_False; 524*cdf0e10cSrcweir const SfxItemSet* pExampleSet = GetTabDialog()->GetExampleSet(); 525*cdf0e10cSrcweir if(pExampleSet) 526*cdf0e10cSrcweir { 527*cdf0e10cSrcweir if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_NUM_PRESET, sal_False, &pItem)) 528*cdf0e10cSrcweir bIsPreset = ((const SfxBoolItem*)pItem)->GetValue(); 529*cdf0e10cSrcweir if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_CUR_NUM_LEVEL, sal_False, &pItem)) 530*cdf0e10cSrcweir nActNumLvl = ((const SfxUInt16Item*)pItem)->GetValue(); 531*cdf0e10cSrcweir } 532*cdf0e10cSrcweir if(SFX_ITEM_SET == rSet.GetItemState(nNumItemId, sal_False, &pItem)) 533*cdf0e10cSrcweir { 534*cdf0e10cSrcweir delete pSaveNum; 535*cdf0e10cSrcweir pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule()); 536*cdf0e10cSrcweir } 537*cdf0e10cSrcweir if(*pSaveNum != *pActNum) 538*cdf0e10cSrcweir { 539*cdf0e10cSrcweir *pActNum = *pSaveNum; 540*cdf0e10cSrcweir pExamplesVS->SetNoSelection(); 541*cdf0e10cSrcweir } 542*cdf0e10cSrcweir // ersten Eintrag vorselektieren 543*cdf0e10cSrcweir if(pActNum && (!lcl_IsNumFmtSet(pActNum, nActNumLvl) || bIsPreset)) 544*cdf0e10cSrcweir { 545*cdf0e10cSrcweir pExamplesVS->SelectItem(1); 546*cdf0e10cSrcweir NumSelectHdl_Impl(pExamplesVS); 547*cdf0e10cSrcweir bPreset = sal_True; 548*cdf0e10cSrcweir } 549*cdf0e10cSrcweir bPreset |= bIsPreset; 550*cdf0e10cSrcweir bModified = sal_False; 551*cdf0e10cSrcweir } 552*cdf0e10cSrcweir /*-----------------08.02.97 11.28------------------- 553*cdf0e10cSrcweir 554*cdf0e10cSrcweir --------------------------------------------------*/ 555*cdf0e10cSrcweir 556*cdf0e10cSrcweir int SvxBulletPickTabPage::DeactivatePage(SfxItemSet *_pSet) 557*cdf0e10cSrcweir { 558*cdf0e10cSrcweir if(_pSet) 559*cdf0e10cSrcweir FillItemSet(*_pSet); 560*cdf0e10cSrcweir return sal_True; 561*cdf0e10cSrcweir } 562*cdf0e10cSrcweir 563*cdf0e10cSrcweir /*-----------------07.02.97 12.11------------------- 564*cdf0e10cSrcweir 565*cdf0e10cSrcweir --------------------------------------------------*/ 566*cdf0e10cSrcweir 567*cdf0e10cSrcweir 568*cdf0e10cSrcweir void SvxBulletPickTabPage::Reset( const SfxItemSet& rSet ) 569*cdf0e10cSrcweir { 570*cdf0e10cSrcweir const SfxPoolItem* pItem; 571*cdf0e10cSrcweir //im Draw gibt es das Item als WhichId, im Writer nur als SlotId 572*cdf0e10cSrcweir SfxItemState eState = rSet.GetItemState(SID_ATTR_NUMBERING_RULE, sal_False, &pItem); 573*cdf0e10cSrcweir if(eState != SFX_ITEM_SET) 574*cdf0e10cSrcweir { 575*cdf0e10cSrcweir nNumItemId = rSet.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE); 576*cdf0e10cSrcweir eState = rSet.GetItemState(nNumItemId, sal_False, &pItem); 577*cdf0e10cSrcweir 578*cdf0e10cSrcweir if( eState != SFX_ITEM_SET ) 579*cdf0e10cSrcweir { 580*cdf0e10cSrcweir pItem = &static_cast< const SvxNumBulletItem& >( rSet.Get( nNumItemId, sal_True ) ); 581*cdf0e10cSrcweir eState = SFX_ITEM_SET; 582*cdf0e10cSrcweir } 583*cdf0e10cSrcweir 584*cdf0e10cSrcweir } 585*cdf0e10cSrcweir DBG_ASSERT(eState == SFX_ITEM_SET, "kein Item gefunden!"); 586*cdf0e10cSrcweir delete pSaveNum; 587*cdf0e10cSrcweir pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule()); 588*cdf0e10cSrcweir 589*cdf0e10cSrcweir // nActNumLvl = ((SwNumBulletTabDialog*)GetTabDialog())->GetActNumLevel(); 590*cdf0e10cSrcweir 591*cdf0e10cSrcweir if(!pActNum) 592*cdf0e10cSrcweir pActNum = new SvxNumRule(*pSaveNum); 593*cdf0e10cSrcweir else if(*pSaveNum != *pActNum) 594*cdf0e10cSrcweir *pActNum = *pSaveNum; 595*cdf0e10cSrcweir } 596*cdf0e10cSrcweir /*-----------------08.02.97 11.58------------------- 597*cdf0e10cSrcweir 598*cdf0e10cSrcweir --------------------------------------------------*/ 599*cdf0e10cSrcweir 600*cdf0e10cSrcweir IMPL_LINK(SvxBulletPickTabPage, NumSelectHdl_Impl, ValueSet*, EMPTYARG) 601*cdf0e10cSrcweir { 602*cdf0e10cSrcweir if(pActNum) 603*cdf0e10cSrcweir { 604*cdf0e10cSrcweir bPreset = sal_False; 605*cdf0e10cSrcweir bModified = sal_True; 606*cdf0e10cSrcweir sal_Unicode cChar = aBulletTypes[pExamplesVS->GetSelectItemId() - 1]; 607*cdf0e10cSrcweir Font& rActBulletFont = lcl_GetDefaultBulletFont(); 608*cdf0e10cSrcweir 609*cdf0e10cSrcweir sal_uInt16 nMask = 1; 610*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 611*cdf0e10cSrcweir { 612*cdf0e10cSrcweir if(nActNumLvl & nMask) 613*cdf0e10cSrcweir { 614*cdf0e10cSrcweir SvxNumberFormat aFmt(pActNum->GetLevel(i)); 615*cdf0e10cSrcweir aFmt.SetNumberingType( SVX_NUM_CHAR_SPECIAL ); 616*cdf0e10cSrcweir // #i93908# clear suffix for bullet lists 617*cdf0e10cSrcweir aFmt.SetPrefix(::rtl::OUString()); 618*cdf0e10cSrcweir aFmt.SetSuffix(::rtl::OUString()); 619*cdf0e10cSrcweir aFmt.SetBulletFont(&rActBulletFont); 620*cdf0e10cSrcweir aFmt.SetBulletChar(cChar ); 621*cdf0e10cSrcweir aFmt.SetCharFmtName(sBulletCharFmtName); 622*cdf0e10cSrcweir // #62069# // #92724# 623*cdf0e10cSrcweir aFmt.SetBulletRelSize(45); 624*cdf0e10cSrcweir pActNum->SetLevel(i, aFmt); 625*cdf0e10cSrcweir } 626*cdf0e10cSrcweir nMask <<= 1; 627*cdf0e10cSrcweir } 628*cdf0e10cSrcweir } 629*cdf0e10cSrcweir 630*cdf0e10cSrcweir return 0; 631*cdf0e10cSrcweir } 632*cdf0e10cSrcweir 633*cdf0e10cSrcweir /*-----------------06.06.97 11.16------------------- 634*cdf0e10cSrcweir 635*cdf0e10cSrcweir --------------------------------------------------*/ 636*cdf0e10cSrcweir IMPL_LINK(SvxBulletPickTabPage, DoubleClickHdl_Impl, ValueSet*, EMPTYARG) 637*cdf0e10cSrcweir { 638*cdf0e10cSrcweir NumSelectHdl_Impl(pExamplesVS); 639*cdf0e10cSrcweir OKButton& rOk = GetTabDialog()->GetOKButton(); 640*cdf0e10cSrcweir rOk.GetClickHdl().Call(&rOk); 641*cdf0e10cSrcweir return 0; 642*cdf0e10cSrcweir } 643*cdf0e10cSrcweir 644*cdf0e10cSrcweir //Add CHINA001 645*cdf0e10cSrcweir void SvxBulletPickTabPage::PageCreated(SfxAllItemSet aSet) 646*cdf0e10cSrcweir { 647*cdf0e10cSrcweir 648*cdf0e10cSrcweir SFX_ITEMSET_ARG (&aSet,pBulletCharFmt,SfxStringItem,SID_BULLET_CHAR_FMT,sal_False); 649*cdf0e10cSrcweir 650*cdf0e10cSrcweir if (pBulletCharFmt) 651*cdf0e10cSrcweir SetCharFmtName( pBulletCharFmt->GetValue()); 652*cdf0e10cSrcweir 653*cdf0e10cSrcweir 654*cdf0e10cSrcweir } 655*cdf0e10cSrcweir //end of add CHINA001 656*cdf0e10cSrcweir /**************************************************************************/ 657*cdf0e10cSrcweir /* */ 658*cdf0e10cSrcweir /* */ 659*cdf0e10cSrcweir /**************************************************************************/ 660*cdf0e10cSrcweir 661*cdf0e10cSrcweir 662*cdf0e10cSrcweir SvxNumPickTabPage::SvxNumPickTabPage(Window* pParent, 663*cdf0e10cSrcweir const SfxItemSet& rSet) : 664*cdf0e10cSrcweir SfxTabPage( pParent, CUI_RES( RID_SVXPAGE_PICK_NUM ), rSet ), 665*cdf0e10cSrcweir aValuesFL( this, CUI_RES(FL_VALUES) ), 666*cdf0e10cSrcweir pExamplesVS( new SvxNumValueSet(this, CUI_RES(VS_VALUES), NUM_PAGETYPE_NUM )), 667*cdf0e10cSrcweir pActNum(0), 668*cdf0e10cSrcweir pSaveNum(0), 669*cdf0e10cSrcweir nActNumLvl( USHRT_MAX ), 670*cdf0e10cSrcweir nNumItemId(SID_ATTR_NUMBERING_RULE), 671*cdf0e10cSrcweir bModified(sal_False), 672*cdf0e10cSrcweir bPreset(sal_False) 673*cdf0e10cSrcweir { 674*cdf0e10cSrcweir 675*cdf0e10cSrcweir FreeResource(); 676*cdf0e10cSrcweir 677*cdf0e10cSrcweir SetExchangeSupport(); 678*cdf0e10cSrcweir 679*cdf0e10cSrcweir pExamplesVS->SetSelectHdl(LINK(this, SvxNumPickTabPage, NumSelectHdl_Impl)); 680*cdf0e10cSrcweir pExamplesVS->SetDoubleClickHdl(LINK(this, SvxNumPickTabPage, DoubleClickHdl_Impl)); 681*cdf0e10cSrcweir pExamplesVS->SetHelpId(HID_VALUESET_NUM ); 682*cdf0e10cSrcweir 683*cdf0e10cSrcweir Reference<XDefaultNumberingProvider> xDefNum = lcl_GetNumberingProvider(); 684*cdf0e10cSrcweir if(xDefNum.is()) 685*cdf0e10cSrcweir { 686*cdf0e10cSrcweir Sequence<Reference<XIndexAccess> > aOutlineAccess; 687*cdf0e10cSrcweir LanguageType eLang = Application::GetSettings().GetLanguage(); 688*cdf0e10cSrcweir Locale aLocale = SvxCreateLocale(eLang); 689*cdf0e10cSrcweir try 690*cdf0e10cSrcweir { 691*cdf0e10cSrcweir aOutlineAccess = xDefNum->getDefaultOutlineNumberings( aLocale ); 692*cdf0e10cSrcweir 693*cdf0e10cSrcweir for(sal_Int32 nItem = 0; 694*cdf0e10cSrcweir nItem < aOutlineAccess.getLength() && nItem < NUM_VALUSET_COUNT; 695*cdf0e10cSrcweir nItem++ ) 696*cdf0e10cSrcweir { 697*cdf0e10cSrcweir SvxNumSettingsArr_Impl& rItemArr = aNumSettingsArrays[ nItem ]; 698*cdf0e10cSrcweir 699*cdf0e10cSrcweir Reference<XIndexAccess> xLevel = aOutlineAccess.getConstArray()[nItem]; 700*cdf0e10cSrcweir for(sal_Int32 nLevel = 0; nLevel < xLevel->getCount() && nLevel < 5; nLevel++) 701*cdf0e10cSrcweir { 702*cdf0e10cSrcweir Any aValueAny = xLevel->getByIndex(nLevel); 703*cdf0e10cSrcweir Sequence<PropertyValue> aLevelProps; 704*cdf0e10cSrcweir aValueAny >>= aLevelProps; 705*cdf0e10cSrcweir SvxNumSettings_ImplPtr pNew = lcl_CreateNumSettingsPtr(aLevelProps); 706*cdf0e10cSrcweir rItemArr.Insert( pNew, rItemArr.Count() ); 707*cdf0e10cSrcweir } 708*cdf0e10cSrcweir } 709*cdf0e10cSrcweir } 710*cdf0e10cSrcweir catch(Exception&) 711*cdf0e10cSrcweir { 712*cdf0e10cSrcweir } 713*cdf0e10cSrcweir Reference<XNumberingFormatter> xFormat(xDefNum, UNO_QUERY); 714*cdf0e10cSrcweir pExamplesVS->SetOutlineNumberingSettings(aOutlineAccess, xFormat, aLocale); 715*cdf0e10cSrcweir } 716*cdf0e10cSrcweir } 717*cdf0e10cSrcweir /*-----------------07.02.97 12.12------------------- 718*cdf0e10cSrcweir 719*cdf0e10cSrcweir --------------------------------------------------*/ 720*cdf0e10cSrcweir 721*cdf0e10cSrcweir 722*cdf0e10cSrcweir SvxNumPickTabPage::~SvxNumPickTabPage() 723*cdf0e10cSrcweir { 724*cdf0e10cSrcweir delete pActNum; 725*cdf0e10cSrcweir delete pExamplesVS; 726*cdf0e10cSrcweir delete pSaveNum; 727*cdf0e10cSrcweir } 728*cdf0e10cSrcweir 729*cdf0e10cSrcweir /*-----------------07.02.97 12.12------------------- 730*cdf0e10cSrcweir 731*cdf0e10cSrcweir --------------------------------------------------*/ 732*cdf0e10cSrcweir 733*cdf0e10cSrcweir 734*cdf0e10cSrcweir SfxTabPage* SvxNumPickTabPage::Create( Window* pParent, 735*cdf0e10cSrcweir const SfxItemSet& rAttrSet) 736*cdf0e10cSrcweir { 737*cdf0e10cSrcweir return new SvxNumPickTabPage(pParent, rAttrSet); 738*cdf0e10cSrcweir } 739*cdf0e10cSrcweir 740*cdf0e10cSrcweir /*-----------------07.02.97 12.12------------------- 741*cdf0e10cSrcweir 742*cdf0e10cSrcweir --------------------------------------------------*/ 743*cdf0e10cSrcweir 744*cdf0e10cSrcweir 745*cdf0e10cSrcweir sal_Bool SvxNumPickTabPage::FillItemSet( SfxItemSet& rSet ) 746*cdf0e10cSrcweir { 747*cdf0e10cSrcweir if( (bPreset || bModified) && pActNum) 748*cdf0e10cSrcweir { 749*cdf0e10cSrcweir *pSaveNum = *pActNum; 750*cdf0e10cSrcweir rSet.Put(SvxNumBulletItem( *pSaveNum ), nNumItemId); 751*cdf0e10cSrcweir rSet.Put(SfxBoolItem(SID_PARAM_NUM_PRESET, bPreset)); 752*cdf0e10cSrcweir } 753*cdf0e10cSrcweir return bModified; 754*cdf0e10cSrcweir } 755*cdf0e10cSrcweir /*-----------------08.02.97 16.28------------------- 756*cdf0e10cSrcweir 757*cdf0e10cSrcweir --------------------------------------------------*/ 758*cdf0e10cSrcweir 759*cdf0e10cSrcweir void SvxNumPickTabPage::ActivatePage(const SfxItemSet& rSet) 760*cdf0e10cSrcweir { 761*cdf0e10cSrcweir const SfxPoolItem* pItem; 762*cdf0e10cSrcweir bPreset = sal_False; 763*cdf0e10cSrcweir sal_Bool bIsPreset = sal_False; 764*cdf0e10cSrcweir const SfxItemSet* pExampleSet = GetTabDialog()->GetExampleSet(); 765*cdf0e10cSrcweir if(pExampleSet) 766*cdf0e10cSrcweir { 767*cdf0e10cSrcweir if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_NUM_PRESET, sal_False, &pItem)) 768*cdf0e10cSrcweir bIsPreset = ((const SfxBoolItem*)pItem)->GetValue(); 769*cdf0e10cSrcweir if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_CUR_NUM_LEVEL, sal_False, &pItem)) 770*cdf0e10cSrcweir nActNumLvl = ((const SfxUInt16Item*)pItem)->GetValue(); 771*cdf0e10cSrcweir } 772*cdf0e10cSrcweir if(SFX_ITEM_SET == rSet.GetItemState(nNumItemId, sal_False, &pItem)) 773*cdf0e10cSrcweir { 774*cdf0e10cSrcweir delete pSaveNum; 775*cdf0e10cSrcweir pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule()); 776*cdf0e10cSrcweir } 777*cdf0e10cSrcweir if(*pSaveNum != *pActNum) 778*cdf0e10cSrcweir { 779*cdf0e10cSrcweir *pActNum = *pSaveNum; 780*cdf0e10cSrcweir pExamplesVS->SetNoSelection(); 781*cdf0e10cSrcweir } 782*cdf0e10cSrcweir // ersten Eintrag vorselektieren 783*cdf0e10cSrcweir if(pActNum && (!lcl_IsNumFmtSet(pActNum, nActNumLvl) || bIsPreset)) 784*cdf0e10cSrcweir { 785*cdf0e10cSrcweir pExamplesVS->SelectItem(1); 786*cdf0e10cSrcweir NumSelectHdl_Impl(pExamplesVS); 787*cdf0e10cSrcweir bPreset = sal_True; 788*cdf0e10cSrcweir } 789*cdf0e10cSrcweir bPreset |= bIsPreset; 790*cdf0e10cSrcweir bModified = sal_False; 791*cdf0e10cSrcweir } 792*cdf0e10cSrcweir 793*cdf0e10cSrcweir /* -----------------08.02.97 11.29------------------- 794*cdf0e10cSrcweir 795*cdf0e10cSrcweir --------------------------------------------------*/ 796*cdf0e10cSrcweir 797*cdf0e10cSrcweir int SvxNumPickTabPage::DeactivatePage(SfxItemSet *_pSet) 798*cdf0e10cSrcweir { 799*cdf0e10cSrcweir if(_pSet) 800*cdf0e10cSrcweir FillItemSet(*_pSet); 801*cdf0e10cSrcweir return sal_True; 802*cdf0e10cSrcweir } 803*cdf0e10cSrcweir 804*cdf0e10cSrcweir /*-----------------07.02.97 12.12------------------- 805*cdf0e10cSrcweir 806*cdf0e10cSrcweir --------------------------------------------------*/ 807*cdf0e10cSrcweir 808*cdf0e10cSrcweir void SvxNumPickTabPage::Reset( const SfxItemSet& rSet ) 809*cdf0e10cSrcweir { 810*cdf0e10cSrcweir const SfxPoolItem* pItem; 811*cdf0e10cSrcweir //im Draw gibt es das Item als WhichId, im Writer nur als SlotId 812*cdf0e10cSrcweir SfxItemState eState = rSet.GetItemState(SID_ATTR_NUMBERING_RULE, sal_False, &pItem); 813*cdf0e10cSrcweir if(eState != SFX_ITEM_SET) 814*cdf0e10cSrcweir { 815*cdf0e10cSrcweir nNumItemId = rSet.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE); 816*cdf0e10cSrcweir eState = rSet.GetItemState(nNumItemId, sal_False, &pItem); 817*cdf0e10cSrcweir 818*cdf0e10cSrcweir if( eState != SFX_ITEM_SET ) 819*cdf0e10cSrcweir { 820*cdf0e10cSrcweir pItem = &static_cast< const SvxNumBulletItem& >( rSet.Get( nNumItemId, sal_True ) ); 821*cdf0e10cSrcweir eState = SFX_ITEM_SET; 822*cdf0e10cSrcweir } 823*cdf0e10cSrcweir 824*cdf0e10cSrcweir } 825*cdf0e10cSrcweir DBG_ASSERT(eState == SFX_ITEM_SET, "kein Item gefunden!"); 826*cdf0e10cSrcweir delete pSaveNum; 827*cdf0e10cSrcweir pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule()); 828*cdf0e10cSrcweir 829*cdf0e10cSrcweir // nActNumLvl = ((SwNumBulletTabDialog*)GetTabDialog())->GetActNumLevel(); 830*cdf0e10cSrcweir if(!pActNum) 831*cdf0e10cSrcweir pActNum = new SvxNumRule(*pSaveNum); 832*cdf0e10cSrcweir else if(*pSaveNum != *pActNum) 833*cdf0e10cSrcweir *pActNum = *pSaveNum; 834*cdf0e10cSrcweir 835*cdf0e10cSrcweir } 836*cdf0e10cSrcweir 837*cdf0e10cSrcweir /*-----------------08.02.97 11.58------------------- 838*cdf0e10cSrcweir Hier werden alle Ebenen veraendert, 839*cdf0e10cSrcweir --------------------------------------------------*/ 840*cdf0e10cSrcweir 841*cdf0e10cSrcweir IMPL_LINK(SvxNumPickTabPage, NumSelectHdl_Impl, ValueSet*, EMPTYARG) 842*cdf0e10cSrcweir { 843*cdf0e10cSrcweir if(pActNum) 844*cdf0e10cSrcweir { 845*cdf0e10cSrcweir bPreset = sal_False; 846*cdf0e10cSrcweir bModified = sal_True; 847*cdf0e10cSrcweir 848*cdf0e10cSrcweir const FontList* pList = 0; 849*cdf0e10cSrcweir 850*cdf0e10cSrcweir SvxNumSettingsArr_Impl& rItemArr = aNumSettingsArrays[pExamplesVS->GetSelectItemId() - 1]; 851*cdf0e10cSrcweir 852*cdf0e10cSrcweir Font& rActBulletFont = lcl_GetDefaultBulletFont(); 853*cdf0e10cSrcweir SvxNumSettings_ImplPtr pLevelSettings = 0; 854*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 855*cdf0e10cSrcweir { 856*cdf0e10cSrcweir if(rItemArr.Count() > i) 857*cdf0e10cSrcweir pLevelSettings = rItemArr[i]; 858*cdf0e10cSrcweir if(!pLevelSettings) 859*cdf0e10cSrcweir break; 860*cdf0e10cSrcweir SvxNumberFormat aFmt(pActNum->GetLevel(i)); 861*cdf0e10cSrcweir aFmt.SetNumberingType( pLevelSettings->nNumberType ); 862*cdf0e10cSrcweir sal_uInt16 nUpperLevelOrChar = (sal_uInt16)pLevelSettings->nParentNumbering; 863*cdf0e10cSrcweir if(aFmt.GetNumberingType() == SVX_NUM_CHAR_SPECIAL) 864*cdf0e10cSrcweir { 865*cdf0e10cSrcweir // #i93908# clear suffix for bullet lists 866*cdf0e10cSrcweir aFmt.SetPrefix(::rtl::OUString()); 867*cdf0e10cSrcweir aFmt.SetSuffix(::rtl::OUString()); 868*cdf0e10cSrcweir if( pLevelSettings->sBulletFont.getLength() && 869*cdf0e10cSrcweir pLevelSettings->sBulletFont.compareTo( 870*cdf0e10cSrcweir rActBulletFont.GetName())) 871*cdf0e10cSrcweir { 872*cdf0e10cSrcweir //search for the font 873*cdf0e10cSrcweir if(!pList) 874*cdf0e10cSrcweir { 875*cdf0e10cSrcweir SfxObjectShell* pCurDocShell = SfxObjectShell::Current(); 876*cdf0e10cSrcweir const SvxFontListItem* pFontListItem = 877*cdf0e10cSrcweir (const SvxFontListItem* )pCurDocShell 878*cdf0e10cSrcweir ->GetItem( SID_ATTR_CHAR_FONTLIST ); 879*cdf0e10cSrcweir pList = pFontListItem ? pFontListItem->GetFontList() : 0; 880*cdf0e10cSrcweir } 881*cdf0e10cSrcweir if(pList && pList->IsAvailable( pLevelSettings->sBulletFont ) ) 882*cdf0e10cSrcweir { 883*cdf0e10cSrcweir FontInfo aInfo = pList->Get( 884*cdf0e10cSrcweir pLevelSettings->sBulletFont,WEIGHT_NORMAL, ITALIC_NONE); 885*cdf0e10cSrcweir Font aFont(aInfo); 886*cdf0e10cSrcweir aFmt.SetBulletFont(&aFont); 887*cdf0e10cSrcweir } 888*cdf0e10cSrcweir else 889*cdf0e10cSrcweir { 890*cdf0e10cSrcweir //if it cannot be found then create a new one 891*cdf0e10cSrcweir Font aCreateFont( pLevelSettings->sBulletFont, 892*cdf0e10cSrcweir String(), Size( 0, 14 ) ); 893*cdf0e10cSrcweir aCreateFont.SetCharSet( RTL_TEXTENCODING_DONTKNOW ); 894*cdf0e10cSrcweir aCreateFont.SetFamily( FAMILY_DONTKNOW ); 895*cdf0e10cSrcweir aCreateFont.SetPitch( PITCH_DONTKNOW ); 896*cdf0e10cSrcweir aCreateFont.SetWeight( WEIGHT_DONTKNOW ); 897*cdf0e10cSrcweir aCreateFont.SetTransparent( sal_True ); 898*cdf0e10cSrcweir aFmt.SetBulletFont( &aCreateFont ); 899*cdf0e10cSrcweir } 900*cdf0e10cSrcweir } 901*cdf0e10cSrcweir else 902*cdf0e10cSrcweir aFmt.SetBulletFont( &rActBulletFont ); 903*cdf0e10cSrcweir 904*cdf0e10cSrcweir aFmt.SetBulletChar( pLevelSettings->sBulletChar.getLength() 905*cdf0e10cSrcweir ? pLevelSettings->sBulletChar.getStr()[0] 906*cdf0e10cSrcweir : 0 ); 907*cdf0e10cSrcweir aFmt.SetCharFmtName( sBulletCharFmtName ); 908*cdf0e10cSrcweir // #62069# // #92724# 909*cdf0e10cSrcweir aFmt.SetBulletRelSize(45); 910*cdf0e10cSrcweir } 911*cdf0e10cSrcweir else 912*cdf0e10cSrcweir { 913*cdf0e10cSrcweir aFmt.SetIncludeUpperLevels(sal::static_int_cast< sal_uInt8 >(0 != nUpperLevelOrChar ? pActNum->GetLevelCount() : 0)); 914*cdf0e10cSrcweir aFmt.SetCharFmtName(sNumCharFmtName); 915*cdf0e10cSrcweir // #62069# // #92724# 916*cdf0e10cSrcweir aFmt.SetBulletRelSize(100); 917*cdf0e10cSrcweir // #i93908# 918*cdf0e10cSrcweir aFmt.SetPrefix(pLevelSettings->sPrefix); 919*cdf0e10cSrcweir aFmt.SetSuffix(pLevelSettings->sSuffix); 920*cdf0e10cSrcweir } 921*cdf0e10cSrcweir pActNum->SetLevel(i, aFmt); 922*cdf0e10cSrcweir } 923*cdf0e10cSrcweir } 924*cdf0e10cSrcweir return 0; 925*cdf0e10cSrcweir } 926*cdf0e10cSrcweir 927*cdf0e10cSrcweir /*-----------------06.06.97 11.16------------------- 928*cdf0e10cSrcweir 929*cdf0e10cSrcweir --------------------------------------------------*/ 930*cdf0e10cSrcweir IMPL_LINK(SvxNumPickTabPage, DoubleClickHdl_Impl, ValueSet*, EMPTYARG) 931*cdf0e10cSrcweir { 932*cdf0e10cSrcweir NumSelectHdl_Impl(pExamplesVS); 933*cdf0e10cSrcweir OKButton& rOk = GetTabDialog()->GetOKButton(); 934*cdf0e10cSrcweir rOk.GetClickHdl().Call(&rOk); 935*cdf0e10cSrcweir return 0; 936*cdf0e10cSrcweir } 937*cdf0e10cSrcweir 938*cdf0e10cSrcweir //add CHINA001 begin 939*cdf0e10cSrcweir void SvxNumPickTabPage::PageCreated(SfxAllItemSet aSet) 940*cdf0e10cSrcweir { 941*cdf0e10cSrcweir SFX_ITEMSET_ARG (&aSet,pNumCharFmt,SfxStringItem,SID_NUM_CHAR_FMT,sal_False); 942*cdf0e10cSrcweir SFX_ITEMSET_ARG (&aSet,pBulletCharFmt,SfxStringItem,SID_BULLET_CHAR_FMT,sal_False); 943*cdf0e10cSrcweir 944*cdf0e10cSrcweir 945*cdf0e10cSrcweir if (pNumCharFmt &&pBulletCharFmt) 946*cdf0e10cSrcweir SetCharFmtNames( pNumCharFmt->GetValue(),pBulletCharFmt->GetValue()); 947*cdf0e10cSrcweir } 948*cdf0e10cSrcweir //end of CHINA001 949*cdf0e10cSrcweir 950*cdf0e10cSrcweir /**************************************************************************/ 951*cdf0e10cSrcweir /* */ 952*cdf0e10cSrcweir /* */ 953*cdf0e10cSrcweir /**************************************************************************/ 954*cdf0e10cSrcweir 955*cdf0e10cSrcweir SvxBitmapPickTabPage::SvxBitmapPickTabPage(Window* pParent, 956*cdf0e10cSrcweir const SfxItemSet& rSet) : 957*cdf0e10cSrcweir SfxTabPage( pParent, CUI_RES( RID_SVXPAGE_PICK_BMP ), rSet ), 958*cdf0e10cSrcweir aValuesFL( this, CUI_RES(FL_VALUES) ), 959*cdf0e10cSrcweir pExamplesVS( new SvxBmpNumValueSet(this, CUI_RES(VS_VALUES)/*, aGrfNames*/ )), 960*cdf0e10cSrcweir aErrorText( this, CUI_RES(FT_ERROR)), 961*cdf0e10cSrcweir aLinkedCB( this, CUI_RES(CB_LINKED)), 962*cdf0e10cSrcweir pActNum(0), 963*cdf0e10cSrcweir pSaveNum(0), 964*cdf0e10cSrcweir nActNumLvl( USHRT_MAX ), 965*cdf0e10cSrcweir nNumItemId(SID_ATTR_NUMBERING_RULE), 966*cdf0e10cSrcweir bModified(sal_False), 967*cdf0e10cSrcweir bPreset(sal_False) 968*cdf0e10cSrcweir { 969*cdf0e10cSrcweir FreeResource(); 970*cdf0e10cSrcweir SetExchangeSupport(); 971*cdf0e10cSrcweir eCoreUnit = rSet.GetPool()->GetMetric(rSet.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE)); 972*cdf0e10cSrcweir pExamplesVS->SetSelectHdl(LINK(this, SvxBitmapPickTabPage, NumSelectHdl_Impl)); 973*cdf0e10cSrcweir pExamplesVS->SetDoubleClickHdl(LINK(this, SvxBitmapPickTabPage, DoubleClickHdl_Impl)); 974*cdf0e10cSrcweir aLinkedCB.SetClickHdl(LINK(this, SvxBitmapPickTabPage, LinkBmpHdl_Impl)); 975*cdf0e10cSrcweir 976*cdf0e10cSrcweir // Grafiknamen ermitteln 977*cdf0e10cSrcweir 978*cdf0e10cSrcweir GalleryExplorer::FillObjList(GALLERY_THEME_BULLETS, aGrfNames); 979*cdf0e10cSrcweir pExamplesVS->SetHelpId(HID_VALUESET_NUMBMP ); 980*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < aGrfNames.Count(); i++) 981*cdf0e10cSrcweir { 982*cdf0e10cSrcweir pExamplesVS->InsertItem( i + 1, i); 983*cdf0e10cSrcweir String* pGrfNm = (String*) aGrfNames.GetObject(i); 984*cdf0e10cSrcweir INetURLObject aObj(*pGrfNm); 985*cdf0e10cSrcweir if(aObj.GetProtocol() == INET_PROT_FILE) 986*cdf0e10cSrcweir *pGrfNm = aObj.PathToFileName(); 987*cdf0e10cSrcweir pExamplesVS->SetItemText( i + 1, *pGrfNm ); 988*cdf0e10cSrcweir } 989*cdf0e10cSrcweir if(!aGrfNames.Count()) 990*cdf0e10cSrcweir { 991*cdf0e10cSrcweir aErrorText.Show(); 992*cdf0e10cSrcweir } 993*cdf0e10cSrcweir else 994*cdf0e10cSrcweir { 995*cdf0e10cSrcweir pExamplesVS->Show(); 996*cdf0e10cSrcweir pExamplesVS->Format(); 997*cdf0e10cSrcweir } 998*cdf0e10cSrcweir 999*cdf0e10cSrcweir pExamplesVS->SetAccessibleRelationMemberOf( &aValuesFL ); 1000*cdf0e10cSrcweir } 1001*cdf0e10cSrcweir 1002*cdf0e10cSrcweir /*-----------------12.02.97 07.46------------------- 1003*cdf0e10cSrcweir 1004*cdf0e10cSrcweir --------------------------------------------------*/ 1005*cdf0e10cSrcweir 1006*cdf0e10cSrcweir SvxBitmapPickTabPage::~SvxBitmapPickTabPage() 1007*cdf0e10cSrcweir { 1008*cdf0e10cSrcweir String* pStr = (String*)aGrfNames.First(); 1009*cdf0e10cSrcweir while( pStr ) 1010*cdf0e10cSrcweir { 1011*cdf0e10cSrcweir delete pStr; 1012*cdf0e10cSrcweir pStr = (String*)aGrfNames.Next(); 1013*cdf0e10cSrcweir } 1014*cdf0e10cSrcweir delete pExamplesVS; 1015*cdf0e10cSrcweir delete pActNum; 1016*cdf0e10cSrcweir delete pSaveNum; 1017*cdf0e10cSrcweir } 1018*cdf0e10cSrcweir 1019*cdf0e10cSrcweir /*-----------------12.02.97 07.46------------------- 1020*cdf0e10cSrcweir 1021*cdf0e10cSrcweir --------------------------------------------------*/ 1022*cdf0e10cSrcweir 1023*cdf0e10cSrcweir SfxTabPage* SvxBitmapPickTabPage::Create( Window* pParent, 1024*cdf0e10cSrcweir const SfxItemSet& rAttrSet) 1025*cdf0e10cSrcweir { 1026*cdf0e10cSrcweir return new SvxBitmapPickTabPage(pParent, rAttrSet); 1027*cdf0e10cSrcweir } 1028*cdf0e10cSrcweir 1029*cdf0e10cSrcweir /*-----------------12.02.97 07.46------------------- 1030*cdf0e10cSrcweir 1031*cdf0e10cSrcweir --------------------------------------------------*/ 1032*cdf0e10cSrcweir 1033*cdf0e10cSrcweir void SvxBitmapPickTabPage::ActivatePage(const SfxItemSet& rSet) 1034*cdf0e10cSrcweir { 1035*cdf0e10cSrcweir const SfxPoolItem* pItem; 1036*cdf0e10cSrcweir bPreset = sal_False; 1037*cdf0e10cSrcweir sal_Bool bIsPreset = sal_False; 1038*cdf0e10cSrcweir // nActNumLvl = ((SwNumBulletTabDialog*)GetTabDialog())->GetActNumLevel(); 1039*cdf0e10cSrcweir const SfxItemSet* pExampleSet = GetTabDialog()->GetExampleSet(); 1040*cdf0e10cSrcweir if(pExampleSet) 1041*cdf0e10cSrcweir { 1042*cdf0e10cSrcweir if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_NUM_PRESET, sal_False, &pItem)) 1043*cdf0e10cSrcweir bIsPreset = ((const SfxBoolItem*)pItem)->GetValue(); 1044*cdf0e10cSrcweir if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_CUR_NUM_LEVEL, sal_False, &pItem)) 1045*cdf0e10cSrcweir nActNumLvl = ((const SfxUInt16Item*)pItem)->GetValue(); 1046*cdf0e10cSrcweir } 1047*cdf0e10cSrcweir if(SFX_ITEM_SET == rSet.GetItemState(nNumItemId, sal_False, &pItem)) 1048*cdf0e10cSrcweir { 1049*cdf0e10cSrcweir delete pSaveNum; 1050*cdf0e10cSrcweir pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule()); 1051*cdf0e10cSrcweir } 1052*cdf0e10cSrcweir if(*pSaveNum != *pActNum) 1053*cdf0e10cSrcweir { 1054*cdf0e10cSrcweir *pActNum = *pSaveNum; 1055*cdf0e10cSrcweir pExamplesVS->SetNoSelection(); 1056*cdf0e10cSrcweir } 1057*cdf0e10cSrcweir // ersten Eintrag vorselektieren 1058*cdf0e10cSrcweir if(aGrfNames.Count() && 1059*cdf0e10cSrcweir (pActNum && (!lcl_IsNumFmtSet(pActNum, nActNumLvl) || bIsPreset))) 1060*cdf0e10cSrcweir { 1061*cdf0e10cSrcweir pExamplesVS->SelectItem(1); 1062*cdf0e10cSrcweir NumSelectHdl_Impl(pExamplesVS); 1063*cdf0e10cSrcweir bPreset = sal_True; 1064*cdf0e10cSrcweir } 1065*cdf0e10cSrcweir bPreset |= bIsPreset; 1066*cdf0e10cSrcweir bModified = sal_False; 1067*cdf0e10cSrcweir } 1068*cdf0e10cSrcweir /*-----------------12.02.97 07.46------------------- 1069*cdf0e10cSrcweir 1070*cdf0e10cSrcweir --------------------------------------------------*/ 1071*cdf0e10cSrcweir 1072*cdf0e10cSrcweir int SvxBitmapPickTabPage::DeactivatePage(SfxItemSet *_pSet) 1073*cdf0e10cSrcweir { 1074*cdf0e10cSrcweir if(_pSet) 1075*cdf0e10cSrcweir FillItemSet(*_pSet); 1076*cdf0e10cSrcweir return sal_True; 1077*cdf0e10cSrcweir } 1078*cdf0e10cSrcweir /*-----------------12.02.97 07.46------------------- 1079*cdf0e10cSrcweir 1080*cdf0e10cSrcweir --------------------------------------------------*/ 1081*cdf0e10cSrcweir 1082*cdf0e10cSrcweir sal_Bool SvxBitmapPickTabPage::FillItemSet( SfxItemSet& rSet ) 1083*cdf0e10cSrcweir { 1084*cdf0e10cSrcweir if ( !aGrfNames.Count() ) 1085*cdf0e10cSrcweir { 1086*cdf0e10cSrcweir // das ist im SfxItemSet leider nicht zulaessig #52134# 1087*cdf0e10cSrcweir // rSet.DisableItem(SID_ATTR_NUMBERING_RULE); 1088*cdf0e10cSrcweir return sal_False; 1089*cdf0e10cSrcweir } 1090*cdf0e10cSrcweir if( (bPreset || bModified) && pActNum) 1091*cdf0e10cSrcweir { 1092*cdf0e10cSrcweir *pSaveNum = *pActNum; 1093*cdf0e10cSrcweir rSet.Put(SvxNumBulletItem( *pSaveNum ), nNumItemId); 1094*cdf0e10cSrcweir rSet.Put(SfxBoolItem(SID_PARAM_NUM_PRESET, bPreset)); 1095*cdf0e10cSrcweir } 1096*cdf0e10cSrcweir 1097*cdf0e10cSrcweir return bModified; 1098*cdf0e10cSrcweir } 1099*cdf0e10cSrcweir /*-----------------12.02.97 07.46------------------- 1100*cdf0e10cSrcweir 1101*cdf0e10cSrcweir --------------------------------------------------*/ 1102*cdf0e10cSrcweir 1103*cdf0e10cSrcweir void SvxBitmapPickTabPage::Reset( const SfxItemSet& rSet ) 1104*cdf0e10cSrcweir { 1105*cdf0e10cSrcweir const SfxPoolItem* pItem; 1106*cdf0e10cSrcweir //im Draw gibt es das Item als WhichId, im Writer nur als SlotId 1107*cdf0e10cSrcweir SfxItemState eState = rSet.GetItemState(SID_ATTR_NUMBERING_RULE, sal_False, &pItem); 1108*cdf0e10cSrcweir if(eState != SFX_ITEM_SET) 1109*cdf0e10cSrcweir { 1110*cdf0e10cSrcweir nNumItemId = rSet.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE); 1111*cdf0e10cSrcweir eState = rSet.GetItemState(nNumItemId, sal_False, &pItem); 1112*cdf0e10cSrcweir 1113*cdf0e10cSrcweir if( eState != SFX_ITEM_SET ) 1114*cdf0e10cSrcweir { 1115*cdf0e10cSrcweir pItem = &static_cast< const SvxNumBulletItem& >( rSet.Get( nNumItemId, sal_True ) ); 1116*cdf0e10cSrcweir eState = SFX_ITEM_SET; 1117*cdf0e10cSrcweir } 1118*cdf0e10cSrcweir 1119*cdf0e10cSrcweir } 1120*cdf0e10cSrcweir DBG_ASSERT(eState == SFX_ITEM_SET, "kein Item gefunden!"); 1121*cdf0e10cSrcweir delete pSaveNum; 1122*cdf0e10cSrcweir pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule()); 1123*cdf0e10cSrcweir 1124*cdf0e10cSrcweir if(!pActNum) 1125*cdf0e10cSrcweir pActNum = new SvxNumRule(*pSaveNum); 1126*cdf0e10cSrcweir else if(*pSaveNum != *pActNum) 1127*cdf0e10cSrcweir *pActNum = *pSaveNum; 1128*cdf0e10cSrcweir if(!pActNum->IsFeatureSupported(NUM_ENABLE_LINKED_BMP)) 1129*cdf0e10cSrcweir { 1130*cdf0e10cSrcweir aLinkedCB.Check(sal_False); 1131*cdf0e10cSrcweir aLinkedCB.Enable(sal_False); 1132*cdf0e10cSrcweir } 1133*cdf0e10cSrcweir else if(!pActNum->IsFeatureSupported(NUM_ENABLE_EMBEDDED_BMP)) 1134*cdf0e10cSrcweir { 1135*cdf0e10cSrcweir aLinkedCB.Check(sal_True); 1136*cdf0e10cSrcweir aLinkedCB.Enable(sal_False); 1137*cdf0e10cSrcweir } 1138*cdf0e10cSrcweir } 1139*cdf0e10cSrcweir 1140*cdf0e10cSrcweir /*-----------------12.02.97 07.53------------------- 1141*cdf0e10cSrcweir 1142*cdf0e10cSrcweir --------------------------------------------------*/ 1143*cdf0e10cSrcweir 1144*cdf0e10cSrcweir IMPL_LINK(SvxBitmapPickTabPage, NumSelectHdl_Impl, ValueSet*, EMPTYARG) 1145*cdf0e10cSrcweir { 1146*cdf0e10cSrcweir if(pActNum) 1147*cdf0e10cSrcweir { 1148*cdf0e10cSrcweir bPreset = sal_False; 1149*cdf0e10cSrcweir bModified = sal_True; 1150*cdf0e10cSrcweir sal_uInt16 nIdx = pExamplesVS->GetSelectItemId() - 1; 1151*cdf0e10cSrcweir 1152*cdf0e10cSrcweir String* pGrfName = 0; 1153*cdf0e10cSrcweir if(aGrfNames.Count() > nIdx) 1154*cdf0e10cSrcweir pGrfName = (String*)aGrfNames.GetObject(nIdx); 1155*cdf0e10cSrcweir 1156*cdf0e10cSrcweir sal_uInt16 nMask = 1; 1157*cdf0e10cSrcweir String aEmptyStr; 1158*cdf0e10cSrcweir sal_uInt16 nSetNumberingType = SVX_NUM_BITMAP; 1159*cdf0e10cSrcweir if(aLinkedCB.IsChecked()) 1160*cdf0e10cSrcweir nSetNumberingType |= LINK_TOKEN; 1161*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 1162*cdf0e10cSrcweir { 1163*cdf0e10cSrcweir if(nActNumLvl & nMask) 1164*cdf0e10cSrcweir { 1165*cdf0e10cSrcweir SvxNumberFormat aFmt(pActNum->GetLevel(i)); 1166*cdf0e10cSrcweir aFmt.SetNumberingType(nSetNumberingType); 1167*cdf0e10cSrcweir aFmt.SetPrefix( aEmptyStr ); 1168*cdf0e10cSrcweir aFmt.SetSuffix( aEmptyStr ); 1169*cdf0e10cSrcweir aFmt.SetCharFmtName( sNumCharFmtName ); 1170*cdf0e10cSrcweir 1171*cdf0e10cSrcweir Graphic aGraphic; 1172*cdf0e10cSrcweir if(GalleryExplorer::GetGraphicObj( GALLERY_THEME_BULLETS, nIdx, &aGraphic)) 1173*cdf0e10cSrcweir { 1174*cdf0e10cSrcweir Size aSize = SvxNumberFormat::GetGraphicSizeMM100(&aGraphic); 1175*cdf0e10cSrcweir sal_Int16 eOrient = text::VertOrientation::LINE_CENTER; 1176*cdf0e10cSrcweir aSize = OutputDevice::LogicToLogic(aSize, MAP_100TH_MM, (MapUnit)eCoreUnit); 1177*cdf0e10cSrcweir SvxBrushItem aBrush(aGraphic, GPOS_AREA, SID_ATTR_BRUSH ); 1178*cdf0e10cSrcweir aFmt.SetGraphicBrush( &aBrush, &aSize, &eOrient ); 1179*cdf0e10cSrcweir } 1180*cdf0e10cSrcweir else if(pGrfName) 1181*cdf0e10cSrcweir aFmt.SetGraphic( *pGrfName ); 1182*cdf0e10cSrcweir pActNum->SetLevel(i, aFmt); 1183*cdf0e10cSrcweir } 1184*cdf0e10cSrcweir nMask <<= 1 ; 1185*cdf0e10cSrcweir } 1186*cdf0e10cSrcweir } 1187*cdf0e10cSrcweir 1188*cdf0e10cSrcweir return 0; 1189*cdf0e10cSrcweir } 1190*cdf0e10cSrcweir 1191*cdf0e10cSrcweir /*-----------------06.06.97 11.17------------------- 1192*cdf0e10cSrcweir 1193*cdf0e10cSrcweir --------------------------------------------------*/ 1194*cdf0e10cSrcweir IMPL_LINK(SvxBitmapPickTabPage, DoubleClickHdl_Impl, ValueSet*, EMPTYARG) 1195*cdf0e10cSrcweir { 1196*cdf0e10cSrcweir NumSelectHdl_Impl(pExamplesVS); 1197*cdf0e10cSrcweir OKButton& rOk = GetTabDialog()->GetOKButton(); 1198*cdf0e10cSrcweir rOk.GetClickHdl().Call(&rOk); 1199*cdf0e10cSrcweir return 0; 1200*cdf0e10cSrcweir } 1201*cdf0e10cSrcweir /* -----------------03.11.99 13:46------------------- 1202*cdf0e10cSrcweir 1203*cdf0e10cSrcweir --------------------------------------------------*/ 1204*cdf0e10cSrcweir IMPL_LINK(SvxBitmapPickTabPage, LinkBmpHdl_Impl, CheckBox*, EMPTYARG ) 1205*cdf0e10cSrcweir { 1206*cdf0e10cSrcweir if(!pExamplesVS->IsNoSelection()) 1207*cdf0e10cSrcweir { 1208*cdf0e10cSrcweir NumSelectHdl_Impl(pExamplesVS); 1209*cdf0e10cSrcweir } 1210*cdf0e10cSrcweir return 0; 1211*cdf0e10cSrcweir } 1212*cdf0e10cSrcweir /*-----------------13.02.97 09.40------------------- 1213*cdf0e10cSrcweir 1214*cdf0e10cSrcweir --------------------------------------------------*/ 1215*cdf0e10cSrcweir 1216*cdf0e10cSrcweir //CHINA001 SvxBmpNumValueSet::SvxBmpNumValueSet( Window* pParent, const ResId& rResId/*, const List& rStrNames*/ ) : 1217*cdf0e10cSrcweir //CHINA001 1218*cdf0e10cSrcweir //CHINA001 SvxNumValueSet( pParent, rResId, NUM_PAGETYPE_BMP ), 1219*cdf0e10cSrcweir //CHINA001 // rStrList ( rStrNames ), 1220*cdf0e10cSrcweir //CHINA001 bGrfNotFound( sal_False ) 1221*cdf0e10cSrcweir //CHINA001 1222*cdf0e10cSrcweir //CHINA001 { 1223*cdf0e10cSrcweir //CHINA001 GalleryExplorer::BeginLocking(GALLERY_THEME_BULLETS); 1224*cdf0e10cSrcweir //CHINA001 SetStyle( GetStyle() | WB_VSCROLL ); 1225*cdf0e10cSrcweir //CHINA001 SetLineCount( 3 ); 1226*cdf0e10cSrcweir //CHINA001 aFormatTimer.SetTimeout(300); 1227*cdf0e10cSrcweir //CHINA001 aFormatTimer.SetTimeoutHdl(LINK(this, SvxBmpNumValueSet, FormatHdl_Impl)); 1228*cdf0e10cSrcweir //CHINA001 } 1229*cdf0e10cSrcweir //CHINA001 1230*cdf0e10cSrcweir //CHINA001 /*-----------------13.02.97 09.41------------------- 1231*cdf0e10cSrcweir //CHINA001 1232*cdf0e10cSrcweir //CHINA001 --------------------------------------------------*/ 1233*cdf0e10cSrcweir //CHINA001 1234*cdf0e10cSrcweir //CHINA001 SvxBmpNumValueSet::~SvxBmpNumValueSet() 1235*cdf0e10cSrcweir //CHINA001 { 1236*cdf0e10cSrcweir //CHINA001 GalleryExplorer::EndLocking(GALLERY_THEME_BULLETS); 1237*cdf0e10cSrcweir //CHINA001 aFormatTimer.Stop(); 1238*cdf0e10cSrcweir //CHINA001 } 1239*cdf0e10cSrcweir //CHINA001 /*-----------------13.02.97 09.41------------------- 1240*cdf0e10cSrcweir //CHINA001 1241*cdf0e10cSrcweir //CHINA001 --------------------------------------------------*/ 1242*cdf0e10cSrcweir //CHINA001 1243*cdf0e10cSrcweir //CHINA001 void SvxBmpNumValueSet::UserDraw( const UserDrawEvent& rUDEvt ) 1244*cdf0e10cSrcweir //CHINA001 { 1245*cdf0e10cSrcweir //CHINA001 SvxNumValueSet::UserDraw(rUDEvt); 1246*cdf0e10cSrcweir //CHINA001 1247*cdf0e10cSrcweir //CHINA001 Rectangle aRect = rUDEvt.GetRect(); 1248*cdf0e10cSrcweir //CHINA001 OutputDevice* pDev = rUDEvt.GetDevice(); 1249*cdf0e10cSrcweir //CHINA001 sal_uInt16 nItemId = rUDEvt.GetItemId(); 1250*cdf0e10cSrcweir //CHINA001 Point aBLPos = aRect.TopLeft(); 1251*cdf0e10cSrcweir //CHINA001 1252*cdf0e10cSrcweir //CHINA001 int nRectHeight = aRect.GetHeight(); 1253*cdf0e10cSrcweir //CHINA001 Size aSize(nRectHeight/8, nRectHeight/8); 1254*cdf0e10cSrcweir //CHINA001 1255*cdf0e10cSrcweir //CHINA001 Graphic aGraphic; 1256*cdf0e10cSrcweir //CHINA001 if(!GalleryExplorer::GetGraphicObj( GALLERY_THEME_BULLETS, nItemId - 1, 1257*cdf0e10cSrcweir //CHINA001 &aGraphic, NULL)) 1258*cdf0e10cSrcweir //CHINA001 { 1259*cdf0e10cSrcweir //CHINA001 bGrfNotFound = sal_True; 1260*cdf0e10cSrcweir //CHINA001 } 1261*cdf0e10cSrcweir //CHINA001 else 1262*cdf0e10cSrcweir //CHINA001 { 1263*cdf0e10cSrcweir //CHINA001 Point aPos(aBLPos.X() + 5, 0); 1264*cdf0e10cSrcweir //CHINA001 for( sal_uInt16 i = 0; i < 3; i++ ) 1265*cdf0e10cSrcweir //CHINA001 { 1266*cdf0e10cSrcweir //CHINA001 sal_uInt16 nY = 11 + i * 33; 1267*cdf0e10cSrcweir //CHINA001 aPos.Y() = aBLPos.Y() + nRectHeight * nY / 100; 1268*cdf0e10cSrcweir //CHINA001 aGraphic.Draw( pDev, aPos, aSize ); 1269*cdf0e10cSrcweir //CHINA001 } 1270*cdf0e10cSrcweir //CHINA001 } 1271*cdf0e10cSrcweir //CHINA001 } 1272*cdf0e10cSrcweir //CHINA001 1273*cdf0e10cSrcweir //CHINA001 /*-----------------14.02.97 07.34------------------- 1274*cdf0e10cSrcweir //CHINA001 1275*cdf0e10cSrcweir //CHINA001 --------------------------------------------------*/ 1276*cdf0e10cSrcweir //CHINA001 1277*cdf0e10cSrcweir //CHINA001 IMPL_LINK(SvxBmpNumValueSet, FormatHdl_Impl, Timer*, EMPTYARG) 1278*cdf0e10cSrcweir //CHINA001 { 1279*cdf0e10cSrcweir //CHINA001 // nur, wenn eine Grafik nicht da war, muss formatiert werden 1280*cdf0e10cSrcweir //CHINA001 if(bGrfNotFound) 1281*cdf0e10cSrcweir //CHINA001 { 1282*cdf0e10cSrcweir //CHINA001 bGrfNotFound = sal_False; 1283*cdf0e10cSrcweir //CHINA001 Format(); 1284*cdf0e10cSrcweir //CHINA001 } 1285*cdf0e10cSrcweir //CHINA001 Invalidate(); 1286*cdf0e10cSrcweir //CHINA001 return 0; 1287*cdf0e10cSrcweir //CHINA001 } 1288*cdf0e10cSrcweir /*-----------------01.12.97 16:15------------------- 1289*cdf0e10cSrcweir Tabpage Numerierungsoptionen 1290*cdf0e10cSrcweir --------------------------------------------------*/ 1291*cdf0e10cSrcweir #define NUM_NO_GRAPHIC 1000 1292*cdf0e10cSrcweir SvxNumOptionsTabPage::SvxNumOptionsTabPage(Window* pParent, 1293*cdf0e10cSrcweir const SfxItemSet& rSet) : 1294*cdf0e10cSrcweir SfxTabPage( pParent, CUI_RES( RID_SVXPAGE_NUM_OPTIONS ), rSet ), 1295*cdf0e10cSrcweir 1296*cdf0e10cSrcweir aFormatFL( this, CUI_RES(FL_FORMAT )), 1297*cdf0e10cSrcweir aLevelFT( this, CUI_RES(FT_LEVEL )), 1298*cdf0e10cSrcweir aLevelLB( this, CUI_RES(LB_LEVEL )), 1299*cdf0e10cSrcweir aFmtFT( this, CUI_RES(FT_FMT )), 1300*cdf0e10cSrcweir aFmtLB( this, CUI_RES(LB_FMT )), 1301*cdf0e10cSrcweir aPrefixFT( this, CUI_RES(FT_PREFIX )), 1302*cdf0e10cSrcweir aPrefixED( this, CUI_RES(ED_PREFIX )), 1303*cdf0e10cSrcweir aSuffixFT( this, CUI_RES(FT_SUFFIX )), 1304*cdf0e10cSrcweir aSuffixED( this, CUI_RES(ED_SUFFIX )), 1305*cdf0e10cSrcweir aCharFmtFT( this, CUI_RES(FT_CHARFMT )), 1306*cdf0e10cSrcweir aCharFmtLB( this, CUI_RES(LB_CHARFMT )), 1307*cdf0e10cSrcweir aBulColorFT( this, CUI_RES(FT_BUL_COLOR)), 1308*cdf0e10cSrcweir aBulColLB( this, CUI_RES(LB_BUL_COLOR)), 1309*cdf0e10cSrcweir aBulRelSizeFT( this, CUI_RES(FT_BUL_REL_SIZE)), 1310*cdf0e10cSrcweir aBulRelSizeMF( this, CUI_RES(MF_BUL_REL_SIZE)), 1311*cdf0e10cSrcweir aAllLevelFT( this, CUI_RES(FT_ALL_LEVEL)), 1312*cdf0e10cSrcweir aAllLevelNF( this, CUI_RES(NF_ALL_LEVEL)), 1313*cdf0e10cSrcweir aStartFT( this, CUI_RES(FT_START )), 1314*cdf0e10cSrcweir aStartED( this, CUI_RES(ED_START )), 1315*cdf0e10cSrcweir aBulletPB( this, CUI_RES(PB_BULLET )), 1316*cdf0e10cSrcweir aAlignFT( this, CUI_RES(FT_ALIGN )), 1317*cdf0e10cSrcweir aAlignLB( this, CUI_RES(LB_ALIGN )), 1318*cdf0e10cSrcweir aBitmapFT( this, CUI_RES(FT_BITMAP )), 1319*cdf0e10cSrcweir aBitmapMB( this, CUI_RES(MB_BITMAP )), 1320*cdf0e10cSrcweir aSizeFT( this, CUI_RES(FT_SIZE )), 1321*cdf0e10cSrcweir aWidthMF( this, CUI_RES(MF_WIDTH )), 1322*cdf0e10cSrcweir aMultFT( this, CUI_RES(FT_MULT )), 1323*cdf0e10cSrcweir aHeightMF( this, CUI_RES(MF_HEIGHT )), 1324*cdf0e10cSrcweir aRatioCB( this, CUI_RES(CB_RATIO )), 1325*cdf0e10cSrcweir aOrientFT( this, CUI_RES(FT_ORIENT )), 1326*cdf0e10cSrcweir aOrientLB( this, CUI_RES(LB_ORIENT )), 1327*cdf0e10cSrcweir aSameLevelFL( this, CUI_RES(FL_SAME_LEVEL)), 1328*cdf0e10cSrcweir aSameLevelCB( this, CUI_RES(CB_SAME_LEVEL)), 1329*cdf0e10cSrcweir pPreviewWIN( new SvxNumberingPreview(this, CUI_RES(WIN_PREVIEW ))), 1330*cdf0e10cSrcweir pActNum(0), 1331*cdf0e10cSrcweir pSaveNum(0), 1332*cdf0e10cSrcweir bLastWidthModified(sal_False), 1333*cdf0e10cSrcweir bModified(sal_False), 1334*cdf0e10cSrcweir bPreset(sal_False), 1335*cdf0e10cSrcweir bAutomaticCharStyles(sal_True), 1336*cdf0e10cSrcweir bHTMLMode(sal_False), 1337*cdf0e10cSrcweir bMenuButtonInitialized(sal_False), 1338*cdf0e10cSrcweir sBullet(CUI_RES(STR_BULLET)), 1339*cdf0e10cSrcweir nBullet(0xff), 1340*cdf0e10cSrcweir nActNumLvl(USHRT_MAX), 1341*cdf0e10cSrcweir nNumItemId(SID_ATTR_NUMBERING_RULE) 1342*cdf0e10cSrcweir { 1343*cdf0e10cSrcweir sStartWith = aStartFT.GetText(); 1344*cdf0e10cSrcweir pPreviewWIN->SetBackground(Wallpaper(Color(COL_TRANSPARENT))); 1345*cdf0e10cSrcweir SetExchangeSupport(); 1346*cdf0e10cSrcweir aActBulletFont = lcl_GetDefaultBulletFont(); 1347*cdf0e10cSrcweir 1348*cdf0e10cSrcweir aBulletPB.SetClickHdl(LINK(this, SvxNumOptionsTabPage, BulletHdl_Impl)); 1349*cdf0e10cSrcweir aFmtLB.SetSelectHdl(LINK(this, SvxNumOptionsTabPage, NumberTypeSelectHdl_Impl)); 1350*cdf0e10cSrcweir aBitmapMB.SetSelectHdl(LINK(this, SvxNumOptionsTabPage, GraphicHdl_Impl)); 1351*cdf0e10cSrcweir aLevelLB.SetSelectHdl(LINK(this, SvxNumOptionsTabPage, LevelHdl_Impl)); 1352*cdf0e10cSrcweir aCharFmtLB.SetSelectHdl(LINK(this, SvxNumOptionsTabPage, CharFmtHdl_Impl)); 1353*cdf0e10cSrcweir aWidthMF.SetModifyHdl(LINK(this, SvxNumOptionsTabPage, SizeHdl_Impl)); 1354*cdf0e10cSrcweir aHeightMF.SetModifyHdl(LINK(this, SvxNumOptionsTabPage, SizeHdl_Impl)); 1355*cdf0e10cSrcweir aRatioCB.SetClickHdl(LINK(this, SvxNumOptionsTabPage, RatioHdl_Impl)); 1356*cdf0e10cSrcweir aStartED.SetModifyHdl(LINK(this, SvxNumOptionsTabPage, EditModifyHdl_Impl)); 1357*cdf0e10cSrcweir aPrefixED.SetModifyHdl(LINK(this, SvxNumOptionsTabPage, EditModifyHdl_Impl)); 1358*cdf0e10cSrcweir aSuffixED.SetModifyHdl(LINK(this, SvxNumOptionsTabPage, EditModifyHdl_Impl)); 1359*cdf0e10cSrcweir aAllLevelNF.SetModifyHdl(LINK(this,SvxNumOptionsTabPage, AllLevelHdl_Impl)); 1360*cdf0e10cSrcweir aOrientLB.SetSelectHdl(LINK(this, SvxNumOptionsTabPage, OrientHdl_Impl)); 1361*cdf0e10cSrcweir aSameLevelCB.SetClickHdl(LINK(this, SvxNumOptionsTabPage, SameLevelHdl_Impl)); 1362*cdf0e10cSrcweir aBulRelSizeMF.SetModifyHdl(LINK(this,SvxNumOptionsTabPage, BulRelSizeHdl_Impl)); 1363*cdf0e10cSrcweir aBulColLB.SetSelectHdl(LINK(this, SvxNumOptionsTabPage, BulColorHdl_Impl)); 1364*cdf0e10cSrcweir aInvalidateTimer.SetTimeoutHdl(LINK(this, SvxNumOptionsTabPage, PreviewInvalidateHdl_Impl)); 1365*cdf0e10cSrcweir aInvalidateTimer.SetTimeout(50); 1366*cdf0e10cSrcweir 1367*cdf0e10cSrcweir aBitmapMB.GetPopupMenu()->SetHighlightHdl(LINK(this, SvxNumOptionsTabPage, PopupActivateHdl_Impl)); 1368*cdf0e10cSrcweir PopupMenu* pPopup = new PopupMenu; 1369*cdf0e10cSrcweir aBitmapMB.GetPopupMenu()->SetPopupMenu( MN_GALLERY, pPopup ); 1370*cdf0e10cSrcweir 1371*cdf0e10cSrcweir pPopup->InsertItem( NUM_NO_GRAPHIC, String(CUI_RES(ST_POPUP_EMPTY_ENTRY)) ); 1372*cdf0e10cSrcweir pPopup->EnableItem( NUM_NO_GRAPHIC, sal_False ); 1373*cdf0e10cSrcweir 1374*cdf0e10cSrcweir eCoreUnit = rSet.GetPool()->GetMetric(rSet.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE)); 1375*cdf0e10cSrcweir 1376*cdf0e10cSrcweir aBitmapMB.SetAccessibleRelationLabeledBy( &aBitmapFT ); 1377*cdf0e10cSrcweir 1378*cdf0e10cSrcweir FreeResource(); 1379*cdf0e10cSrcweir 1380*cdf0e10cSrcweir //get advanced numbering types from the component 1381*cdf0e10cSrcweir Reference<XDefaultNumberingProvider> xDefNum = lcl_GetNumberingProvider(); 1382*cdf0e10cSrcweir Reference<XNumberingTypeInfo> xInfo(xDefNum, UNO_QUERY); 1383*cdf0e10cSrcweir 1384*cdf0e10cSrcweir // Extended numbering schemes present in the resource but not offered by 1385*cdf0e10cSrcweir // the i18n framework per configuration must be removed from the listbox. 1386*cdf0e10cSrcweir // Watch out for the ugly 0x88/*SVX_NUM_BITMAP|0x80*/ to not remove that. 1387*cdf0e10cSrcweir const sal_uInt16 nDontRemove = 0xffff; 1388*cdf0e10cSrcweir ::std::vector< sal_uInt16> aRemove( aFmtLB.GetEntryCount(), nDontRemove); 1389*cdf0e10cSrcweir for (size_t i=0; i<aRemove.size(); ++i) 1390*cdf0e10cSrcweir { 1391*cdf0e10cSrcweir sal_uInt16 nEntryData = (sal_uInt16)(sal_uLong)aFmtLB.GetEntryData( 1392*cdf0e10cSrcweir sal::static_int_cast< sal_uInt16 >(i)); 1393*cdf0e10cSrcweir if (nEntryData > NumberingType::CHARS_LOWER_LETTER_N && 1394*cdf0e10cSrcweir nEntryData != (SVX_NUM_BITMAP | 0x80)) 1395*cdf0e10cSrcweir aRemove[i] = nEntryData; 1396*cdf0e10cSrcweir } 1397*cdf0e10cSrcweir if(xInfo.is()) 1398*cdf0e10cSrcweir { 1399*cdf0e10cSrcweir Sequence<sal_Int16> aTypes = xInfo->getSupportedNumberingTypes( ); 1400*cdf0e10cSrcweir const sal_Int16* pTypes = aTypes.getConstArray(); 1401*cdf0e10cSrcweir for(sal_Int32 nType = 0; nType < aTypes.getLength(); nType++) 1402*cdf0e10cSrcweir { 1403*cdf0e10cSrcweir sal_Int16 nCurrent = pTypes[nType]; 1404*cdf0e10cSrcweir if(nCurrent > NumberingType::CHARS_LOWER_LETTER_N) 1405*cdf0e10cSrcweir { 1406*cdf0e10cSrcweir sal_Bool bInsert = sal_True; 1407*cdf0e10cSrcweir for(sal_uInt16 nEntry = 0; nEntry < aFmtLB.GetEntryCount(); nEntry++) 1408*cdf0e10cSrcweir { 1409*cdf0e10cSrcweir sal_uInt16 nEntryData = (sal_uInt16)(sal_uLong)aFmtLB.GetEntryData(nEntry); 1410*cdf0e10cSrcweir if(nEntryData == (sal_uInt16) nCurrent) 1411*cdf0e10cSrcweir { 1412*cdf0e10cSrcweir bInsert = sal_False; 1413*cdf0e10cSrcweir aRemove[nEntry] = nDontRemove; 1414*cdf0e10cSrcweir break; 1415*cdf0e10cSrcweir } 1416*cdf0e10cSrcweir } 1417*cdf0e10cSrcweir if(bInsert) 1418*cdf0e10cSrcweir { 1419*cdf0e10cSrcweir OUString aIdent = xInfo->getNumberingIdentifier( nCurrent ); 1420*cdf0e10cSrcweir sal_uInt16 nPos = aFmtLB.InsertEntry(aIdent); 1421*cdf0e10cSrcweir aFmtLB.SetEntryData(nPos,(void*)(sal_uLong)nCurrent); 1422*cdf0e10cSrcweir } 1423*cdf0e10cSrcweir } 1424*cdf0e10cSrcweir } 1425*cdf0e10cSrcweir } 1426*cdf0e10cSrcweir for (size_t i=0; i<aRemove.size(); ++i) 1427*cdf0e10cSrcweir { 1428*cdf0e10cSrcweir if (aRemove[i] != nDontRemove) 1429*cdf0e10cSrcweir { 1430*cdf0e10cSrcweir sal_uInt16 nPos = aFmtLB.GetEntryPos( (void*)(sal_uLong)aRemove[i]); 1431*cdf0e10cSrcweir aFmtLB.RemoveEntry( nPos); 1432*cdf0e10cSrcweir } 1433*cdf0e10cSrcweir } 1434*cdf0e10cSrcweir 1435*cdf0e10cSrcweir aBulletPB.SetAccessibleRelationMemberOf(&aFormatFL); 1436*cdf0e10cSrcweir aBulletPB.SetAccessibleRelationLabeledBy(&aStartFT); 1437*cdf0e10cSrcweir aBulletPB.SetAccessibleName(aStartFT.GetText()); 1438*cdf0e10cSrcweir } 1439*cdf0e10cSrcweir 1440*cdf0e10cSrcweir /*-----------------01.12.97 16:30------------------- 1441*cdf0e10cSrcweir 1442*cdf0e10cSrcweir --------------------------------------------------*/ 1443*cdf0e10cSrcweir SvxNumOptionsTabPage::~SvxNumOptionsTabPage() 1444*cdf0e10cSrcweir { 1445*cdf0e10cSrcweir delete aBitmapMB.GetPopupMenu()->GetPopupMenu( MN_GALLERY ); 1446*cdf0e10cSrcweir String* pStr = (String*)aGrfNames.First(); 1447*cdf0e10cSrcweir while( pStr ) 1448*cdf0e10cSrcweir { 1449*cdf0e10cSrcweir delete pStr; 1450*cdf0e10cSrcweir pStr = (String*)aGrfNames.Next(); 1451*cdf0e10cSrcweir } 1452*cdf0e10cSrcweir delete pActNum; 1453*cdf0e10cSrcweir delete pPreviewWIN; 1454*cdf0e10cSrcweir delete pSaveNum; 1455*cdf0e10cSrcweir } 1456*cdf0e10cSrcweir 1457*cdf0e10cSrcweir /*-----------------03.12.97 07:52------------------- 1458*cdf0e10cSrcweir 1459*cdf0e10cSrcweir --------------------------------------------------*/ 1460*cdf0e10cSrcweir void SvxNumOptionsTabPage::SetMetric(FieldUnit eMetric) 1461*cdf0e10cSrcweir { 1462*cdf0e10cSrcweir if(eMetric == FUNIT_MM) 1463*cdf0e10cSrcweir { 1464*cdf0e10cSrcweir aWidthMF .SetDecimalDigits(1); 1465*cdf0e10cSrcweir aHeightMF .SetDecimalDigits(1); 1466*cdf0e10cSrcweir } 1467*cdf0e10cSrcweir aWidthMF .SetUnit( eMetric ); 1468*cdf0e10cSrcweir aHeightMF .SetUnit( eMetric ); 1469*cdf0e10cSrcweir } 1470*cdf0e10cSrcweir 1471*cdf0e10cSrcweir /*-----------------01.12.97 16:30------------------- 1472*cdf0e10cSrcweir 1473*cdf0e10cSrcweir --------------------------------------------------*/ 1474*cdf0e10cSrcweir SfxTabPage* SvxNumOptionsTabPage::Create( Window* pParent, 1475*cdf0e10cSrcweir const SfxItemSet& rAttrSet) 1476*cdf0e10cSrcweir { 1477*cdf0e10cSrcweir return new SvxNumOptionsTabPage(pParent, rAttrSet); 1478*cdf0e10cSrcweir }; 1479*cdf0e10cSrcweir /*-----------------01.12.97 16:29------------------- 1480*cdf0e10cSrcweir 1481*cdf0e10cSrcweir --------------------------------------------------*/ 1482*cdf0e10cSrcweir void SvxNumOptionsTabPage::ActivatePage(const SfxItemSet& rSet) 1483*cdf0e10cSrcweir { 1484*cdf0e10cSrcweir const SfxPoolItem* pItem; 1485*cdf0e10cSrcweir const SfxItemSet* pExampleSet = GetTabDialog()->GetExampleSet(); 1486*cdf0e10cSrcweir sal_uInt16 nTmpNumLvl = USHRT_MAX; 1487*cdf0e10cSrcweir if(pExampleSet) 1488*cdf0e10cSrcweir { 1489*cdf0e10cSrcweir if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_NUM_PRESET, sal_False, &pItem)) 1490*cdf0e10cSrcweir bPreset = ((const SfxBoolItem*)pItem)->GetValue(); 1491*cdf0e10cSrcweir if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_CUR_NUM_LEVEL, sal_False, &pItem)) 1492*cdf0e10cSrcweir nTmpNumLvl = ((const SfxUInt16Item*)pItem)->GetValue(); 1493*cdf0e10cSrcweir } 1494*cdf0e10cSrcweir if(SFX_ITEM_SET == rSet.GetItemState(nNumItemId, sal_False, &pItem)) 1495*cdf0e10cSrcweir { 1496*cdf0e10cSrcweir delete pSaveNum; 1497*cdf0e10cSrcweir pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule()); 1498*cdf0e10cSrcweir } 1499*cdf0e10cSrcweir // 1500*cdf0e10cSrcweir bModified = (!pActNum->Get( 0 ) || bPreset); 1501*cdf0e10cSrcweir if(*pActNum != *pSaveNum || 1502*cdf0e10cSrcweir nActNumLvl != nTmpNumLvl) 1503*cdf0e10cSrcweir { 1504*cdf0e10cSrcweir nActNumLvl = nTmpNumLvl; 1505*cdf0e10cSrcweir sal_uInt16 nMask = 1; 1506*cdf0e10cSrcweir aLevelLB.SetUpdateMode(sal_False); 1507*cdf0e10cSrcweir aLevelLB.SetNoSelection(); 1508*cdf0e10cSrcweir aLevelLB.SelectEntryPos( pActNum->GetLevelCount(), nActNumLvl == USHRT_MAX); 1509*cdf0e10cSrcweir if(nActNumLvl != USHRT_MAX) 1510*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 1511*cdf0e10cSrcweir { 1512*cdf0e10cSrcweir if(nActNumLvl & nMask) 1513*cdf0e10cSrcweir aLevelLB.SelectEntryPos( i, sal_True); 1514*cdf0e10cSrcweir nMask <<= 1 ; 1515*cdf0e10cSrcweir } 1516*cdf0e10cSrcweir aLevelLB.SetUpdateMode(sal_True); 1517*cdf0e10cSrcweir *pActNum = *pSaveNum; 1518*cdf0e10cSrcweir InitControls(); 1519*cdf0e10cSrcweir } 1520*cdf0e10cSrcweir 1521*cdf0e10cSrcweir } 1522*cdf0e10cSrcweir /*-----------------01.12.97 16:29------------------- 1523*cdf0e10cSrcweir 1524*cdf0e10cSrcweir --------------------------------------------------*/ 1525*cdf0e10cSrcweir int SvxNumOptionsTabPage::DeactivatePage(SfxItemSet * _pSet) 1526*cdf0e10cSrcweir { 1527*cdf0e10cSrcweir if(_pSet) 1528*cdf0e10cSrcweir FillItemSet(*_pSet); 1529*cdf0e10cSrcweir return sal_True; 1530*cdf0e10cSrcweir } 1531*cdf0e10cSrcweir /*-----------------01.12.97 16:29------------------- 1532*cdf0e10cSrcweir 1533*cdf0e10cSrcweir --------------------------------------------------*/ 1534*cdf0e10cSrcweir sal_Bool SvxNumOptionsTabPage::FillItemSet( SfxItemSet& rSet ) 1535*cdf0e10cSrcweir { 1536*cdf0e10cSrcweir rSet.Put(SfxUInt16Item(SID_PARAM_CUR_NUM_LEVEL, nActNumLvl)); 1537*cdf0e10cSrcweir if(bModified && pActNum) 1538*cdf0e10cSrcweir { 1539*cdf0e10cSrcweir *pSaveNum = *pActNum; 1540*cdf0e10cSrcweir rSet.Put(SvxNumBulletItem( *pSaveNum ), nNumItemId); 1541*cdf0e10cSrcweir rSet.Put(SfxBoolItem(SID_PARAM_NUM_PRESET, sal_False)); 1542*cdf0e10cSrcweir } 1543*cdf0e10cSrcweir return bModified; 1544*cdf0e10cSrcweir }; 1545*cdf0e10cSrcweir /*-----------------01.12.97 16:29------------------- 1546*cdf0e10cSrcweir 1547*cdf0e10cSrcweir --------------------------------------------------*/ 1548*cdf0e10cSrcweir void SvxNumOptionsTabPage::Reset( const SfxItemSet& rSet ) 1549*cdf0e10cSrcweir { 1550*cdf0e10cSrcweir const SfxPoolItem* pItem; 1551*cdf0e10cSrcweir //im Draw gibt es das Item als WhichId, im Writer nur als SlotId 1552*cdf0e10cSrcweir SfxItemState eState = rSet.GetItemState(SID_ATTR_NUMBERING_RULE, sal_False, &pItem); 1553*cdf0e10cSrcweir if(eState != SFX_ITEM_SET) 1554*cdf0e10cSrcweir { 1555*cdf0e10cSrcweir nNumItemId = rSet.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE); 1556*cdf0e10cSrcweir eState = rSet.GetItemState(nNumItemId, sal_False, &pItem); 1557*cdf0e10cSrcweir 1558*cdf0e10cSrcweir if( eState != SFX_ITEM_SET ) 1559*cdf0e10cSrcweir { 1560*cdf0e10cSrcweir pItem = &static_cast< const SvxNumBulletItem& >( rSet.Get( nNumItemId, sal_True ) ); 1561*cdf0e10cSrcweir eState = SFX_ITEM_SET; 1562*cdf0e10cSrcweir } 1563*cdf0e10cSrcweir 1564*cdf0e10cSrcweir } 1565*cdf0e10cSrcweir DBG_ASSERT(eState == SFX_ITEM_SET, "kein Item gefunden!"); 1566*cdf0e10cSrcweir delete pSaveNum; 1567*cdf0e10cSrcweir pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule()); 1568*cdf0e10cSrcweir 1569*cdf0e10cSrcweir // Ebenen einfuegen 1570*cdf0e10cSrcweir if(!aLevelLB.GetEntryCount()) 1571*cdf0e10cSrcweir { 1572*cdf0e10cSrcweir for(sal_uInt16 i = 1; i <= pSaveNum->GetLevelCount(); i++) 1573*cdf0e10cSrcweir aLevelLB.InsertEntry( UniString::CreateFromInt32(i)); 1574*cdf0e10cSrcweir if(pSaveNum->GetLevelCount() > 1) 1575*cdf0e10cSrcweir { 1576*cdf0e10cSrcweir String sEntry( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "1 - " ) ) ); 1577*cdf0e10cSrcweir sEntry += UniString::CreateFromInt32( pSaveNum->GetLevelCount() ); 1578*cdf0e10cSrcweir aLevelLB.InsertEntry(sEntry); 1579*cdf0e10cSrcweir aLevelLB.SelectEntry(sEntry); 1580*cdf0e10cSrcweir } 1581*cdf0e10cSrcweir else 1582*cdf0e10cSrcweir aLevelLB.SelectEntryPos(0); 1583*cdf0e10cSrcweir } 1584*cdf0e10cSrcweir else 1585*cdf0e10cSrcweir aLevelLB.SelectEntryPos(aLevelLB.GetEntryCount() - 1); 1586*cdf0e10cSrcweir 1587*cdf0e10cSrcweir // nActNumLvl = ((SwNumBulletTabDialog*)GetTabDialog())->GetActNumLevel(); 1588*cdf0e10cSrcweir sal_uInt16 nMask = 1; 1589*cdf0e10cSrcweir aLevelLB.SetUpdateMode(sal_False); 1590*cdf0e10cSrcweir aLevelLB.SetNoSelection(); 1591*cdf0e10cSrcweir if(nActNumLvl == USHRT_MAX) 1592*cdf0e10cSrcweir { 1593*cdf0e10cSrcweir aLevelLB.SelectEntryPos( pSaveNum->GetLevelCount(), sal_True); 1594*cdf0e10cSrcweir } 1595*cdf0e10cSrcweir else 1596*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pSaveNum->GetLevelCount(); i++) 1597*cdf0e10cSrcweir { 1598*cdf0e10cSrcweir if(nActNumLvl & nMask) 1599*cdf0e10cSrcweir aLevelLB.SelectEntryPos( i, sal_True); 1600*cdf0e10cSrcweir nMask <<= 1 ; 1601*cdf0e10cSrcweir } 1602*cdf0e10cSrcweir aLevelLB.SetUpdateMode(sal_True); 1603*cdf0e10cSrcweir 1604*cdf0e10cSrcweir if(!pActNum) 1605*cdf0e10cSrcweir pActNum = new SvxNumRule(*pSaveNum); 1606*cdf0e10cSrcweir else if(*pSaveNum != *pActNum) 1607*cdf0e10cSrcweir *pActNum = *pSaveNum; 1608*cdf0e10cSrcweir pPreviewWIN->SetNumRule(pActNum); 1609*cdf0e10cSrcweir aSameLevelCB.Check(pActNum->IsContinuousNumbering()); 1610*cdf0e10cSrcweir 1611*cdf0e10cSrcweir //ColorListBox bei Bedarf fuellen 1612*cdf0e10cSrcweir if ( pActNum->IsFeatureSupported( NUM_BULLET_COLOR ) ) 1613*cdf0e10cSrcweir { 1614*cdf0e10cSrcweir SfxObjectShell* pDocSh = SfxObjectShell::Current(); 1615*cdf0e10cSrcweir DBG_ASSERT( pDocSh, "DocShell not found!" ); 1616*cdf0e10cSrcweir XColorTable* pColorTable = NULL; 1617*cdf0e10cSrcweir FASTBOOL bKillTable = sal_False; 1618*cdf0e10cSrcweir if ( pDocSh ) 1619*cdf0e10cSrcweir { 1620*cdf0e10cSrcweir pItem = pDocSh->GetItem( SID_COLOR_TABLE ); 1621*cdf0e10cSrcweir if ( pItem ) 1622*cdf0e10cSrcweir pColorTable = ( (SvxColorTableItem*)pItem )->GetColorTable(); 1623*cdf0e10cSrcweir } 1624*cdf0e10cSrcweir 1625*cdf0e10cSrcweir if ( !pColorTable ) 1626*cdf0e10cSrcweir { 1627*cdf0e10cSrcweir pColorTable = new XColorTable( SvtPathOptions().GetPalettePath() ); 1628*cdf0e10cSrcweir bKillTable = sal_True; 1629*cdf0e10cSrcweir } 1630*cdf0e10cSrcweir 1631*cdf0e10cSrcweir aBulColLB.InsertEntry( Color( COL_AUTO ), SVX_RESSTR( RID_SVXSTR_AUTOMATIC )); 1632*cdf0e10cSrcweir 1633*cdf0e10cSrcweir for ( long i = 0; i < pColorTable->Count(); i++ ) 1634*cdf0e10cSrcweir { 1635*cdf0e10cSrcweir XColorEntry* pEntry = pColorTable->GetColor(i); 1636*cdf0e10cSrcweir aBulColLB.InsertEntry( pEntry->GetColor(), pEntry->GetName() ); 1637*cdf0e10cSrcweir } 1638*cdf0e10cSrcweir 1639*cdf0e10cSrcweir if ( bKillTable ) 1640*cdf0e10cSrcweir delete pColorTable; 1641*cdf0e10cSrcweir } 1642*cdf0e10cSrcweir 1643*cdf0e10cSrcweir SfxObjectShell* pShell; 1644*cdf0e10cSrcweir if ( SFX_ITEM_SET == rSet.GetItemState( SID_HTML_MODE, sal_False, &pItem ) 1645*cdf0e10cSrcweir || ( 0 != ( pShell = SfxObjectShell::Current()) && 1646*cdf0e10cSrcweir 0 != ( pItem = pShell->GetItem( SID_HTML_MODE ) ) ) ) 1647*cdf0e10cSrcweir { 1648*cdf0e10cSrcweir sal_uInt16 nHtmlMode = ((SfxUInt16Item*)pItem)->GetValue(); 1649*cdf0e10cSrcweir bHTMLMode = 0 != (nHtmlMode&HTMLMODE_ON); 1650*cdf0e10cSrcweir } 1651*cdf0e10cSrcweir 1652*cdf0e10cSrcweir sal_Bool bCharFmt = pActNum->IsFeatureSupported(NUM_CHAR_STYLE); 1653*cdf0e10cSrcweir aCharFmtFT.Show(bCharFmt); 1654*cdf0e10cSrcweir aCharFmtLB.Show(bCharFmt); 1655*cdf0e10cSrcweir 1656*cdf0e10cSrcweir sal_Bool bContinuous = pActNum->IsFeatureSupported(NUM_CONTINUOUS); 1657*cdf0e10cSrcweir 1658*cdf0e10cSrcweir sal_Bool bAllLevel = bContinuous && !bHTMLMode; 1659*cdf0e10cSrcweir aAllLevelFT.Show(bAllLevel); 1660*cdf0e10cSrcweir aAllLevelNF.Show(bAllLevel); 1661*cdf0e10cSrcweir 1662*cdf0e10cSrcweir aSameLevelFL.Show(bContinuous); 1663*cdf0e10cSrcweir aSameLevelCB.Show(bContinuous); 1664*cdf0e10cSrcweir //wieder Missbrauch: im Draw gibt es die Numerierung nur bis zum Bitmap 1665*cdf0e10cSrcweir // without SVX_NUM_NUMBER_NONE 1666*cdf0e10cSrcweir //remove types that are unsupported by Draw/Impress 1667*cdf0e10cSrcweir if(!bContinuous) 1668*cdf0e10cSrcweir { 1669*cdf0e10cSrcweir sal_uInt16 nFmtCount = aFmtLB.GetEntryCount(); 1670*cdf0e10cSrcweir for(sal_uInt16 i = nFmtCount; i; i--) 1671*cdf0e10cSrcweir { 1672*cdf0e10cSrcweir sal_uInt16 nEntryData = (sal_uInt16)(sal_uLong)aFmtLB.GetEntryData(i - 1); 1673*cdf0e10cSrcweir if(/*SVX_NUM_NUMBER_NONE == nEntryData ||*/ 1674*cdf0e10cSrcweir ((SVX_NUM_BITMAP|LINK_TOKEN) == nEntryData)) 1675*cdf0e10cSrcweir aFmtLB.RemoveEntry(i - 1); 1676*cdf0e10cSrcweir } 1677*cdf0e10cSrcweir } 1678*cdf0e10cSrcweir //one must be enabled 1679*cdf0e10cSrcweir if(!pActNum->IsFeatureSupported(NUM_ENABLE_LINKED_BMP)) 1680*cdf0e10cSrcweir { 1681*cdf0e10cSrcweir long nData = SVX_NUM_BITMAP|LINK_TOKEN; 1682*cdf0e10cSrcweir sal_uInt16 nPos = aFmtLB.GetEntryPos((void*)nData); 1683*cdf0e10cSrcweir if(LISTBOX_ENTRY_NOTFOUND != nPos) 1684*cdf0e10cSrcweir aFmtLB.RemoveEntry(nPos); 1685*cdf0e10cSrcweir } 1686*cdf0e10cSrcweir else if(!pActNum->IsFeatureSupported(NUM_ENABLE_EMBEDDED_BMP)) 1687*cdf0e10cSrcweir { 1688*cdf0e10cSrcweir long nData = SVX_NUM_BITMAP; 1689*cdf0e10cSrcweir sal_uInt16 nPos = aFmtLB.GetEntryPos((void*)nData); 1690*cdf0e10cSrcweir if(LISTBOX_ENTRY_NOTFOUND != nPos) 1691*cdf0e10cSrcweir aFmtLB.RemoveEntry(nPos); 1692*cdf0e10cSrcweir } 1693*cdf0e10cSrcweir if(pActNum->IsFeatureSupported(NUM_SYMBOL_ALIGNMENT)) 1694*cdf0e10cSrcweir { 1695*cdf0e10cSrcweir aAlignFT.Show(); 1696*cdf0e10cSrcweir aAlignLB.Show(); 1697*cdf0e10cSrcweir Size aSz(aFormatFL.GetSizePixel()); 1698*cdf0e10cSrcweir aSz.Height() = aLevelFT.GetSizePixel().Height(); 1699*cdf0e10cSrcweir aFormatFL.SetSizePixel(aSz); 1700*cdf0e10cSrcweir aAlignLB.SetSelectHdl(LINK(this, SvxNumOptionsTabPage, EditModifyHdl_Impl)); 1701*cdf0e10cSrcweir } 1702*cdf0e10cSrcweir 1703*cdf0e10cSrcweir //MegaHack: Aufgrund eines nicht fixbaren 'designfehlers' im Impress 1704*cdf0e10cSrcweir //Alle arten der numerischen Aufzaehlungen loeschen 1705*cdf0e10cSrcweir if(pActNum->IsFeatureSupported(NUM_NO_NUMBERS)) 1706*cdf0e10cSrcweir { 1707*cdf0e10cSrcweir sal_uInt16 nFmtCount = aFmtLB.GetEntryCount(); 1708*cdf0e10cSrcweir for(sal_uInt16 i = nFmtCount; i; i--) 1709*cdf0e10cSrcweir { 1710*cdf0e10cSrcweir sal_uInt16 nEntryData = (sal_uInt16)(sal_uLong)aFmtLB.GetEntryData(i - 1); 1711*cdf0e10cSrcweir if( /*nEntryData >= SVX_NUM_CHARS_UPPER_LETTER &&*/ nEntryData <= SVX_NUM_NUMBER_NONE) 1712*cdf0e10cSrcweir aFmtLB.RemoveEntry(i - 1); 1713*cdf0e10cSrcweir } 1714*cdf0e10cSrcweir } 1715*cdf0e10cSrcweir 1716*cdf0e10cSrcweir InitControls(); 1717*cdf0e10cSrcweir bModified = sal_False; 1718*cdf0e10cSrcweir 1719*cdf0e10cSrcweir } 1720*cdf0e10cSrcweir /*-----------------02.12.97 13:47------------------- 1721*cdf0e10cSrcweir 1722*cdf0e10cSrcweir --------------------------------------------------*/ 1723*cdf0e10cSrcweir void SvxNumOptionsTabPage::InitControls() 1724*cdf0e10cSrcweir { 1725*cdf0e10cSrcweir sal_Bool bShowBullet = sal_True; 1726*cdf0e10cSrcweir sal_Bool bShowBitmap = sal_True; 1727*cdf0e10cSrcweir sal_Bool bSameType = sal_True; 1728*cdf0e10cSrcweir sal_Bool bSameStart = sal_True; 1729*cdf0e10cSrcweir sal_Bool bSamePrefix = sal_True; 1730*cdf0e10cSrcweir sal_Bool bSameSuffix = sal_True; 1731*cdf0e10cSrcweir sal_Bool bAllLevel = sal_True; 1732*cdf0e10cSrcweir sal_Bool bSameCharFmt = sal_True; 1733*cdf0e10cSrcweir sal_Bool bSameVOrient = sal_True; 1734*cdf0e10cSrcweir sal_Bool bSameSize = sal_True; 1735*cdf0e10cSrcweir sal_Bool bSameBulColor = sal_True; 1736*cdf0e10cSrcweir sal_Bool bSameBulRelSize= sal_True; 1737*cdf0e10cSrcweir sal_Bool bSameAdjust = sal_True; 1738*cdf0e10cSrcweir 1739*cdf0e10cSrcweir const SvxNumberFormat* aNumFmtArr[SVX_MAX_NUM]; 1740*cdf0e10cSrcweir String sFirstCharFmt; 1741*cdf0e10cSrcweir sal_Int16 eFirstOrient = text::VertOrientation::NONE; 1742*cdf0e10cSrcweir Size aFirstSize(0,0); 1743*cdf0e10cSrcweir sal_uInt16 nMask = 1; 1744*cdf0e10cSrcweir sal_uInt16 nLvl = USHRT_MAX; 1745*cdf0e10cSrcweir sal_uInt16 nHighestLevel = 0; 1746*cdf0e10cSrcweir String aEmptyStr; 1747*cdf0e10cSrcweir 1748*cdf0e10cSrcweir sal_Bool bBullColor = pActNum->IsFeatureSupported(NUM_BULLET_COLOR); 1749*cdf0e10cSrcweir sal_Bool bBullRelSize = pActNum->IsFeatureSupported(NUM_BULLET_REL_SIZE); 1750*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 1751*cdf0e10cSrcweir { 1752*cdf0e10cSrcweir if(nActNumLvl & nMask) 1753*cdf0e10cSrcweir { 1754*cdf0e10cSrcweir aNumFmtArr[i] = &pActNum->GetLevel(i); 1755*cdf0e10cSrcweir bShowBullet &= aNumFmtArr[i]->GetNumberingType() == SVX_NUM_CHAR_SPECIAL; 1756*cdf0e10cSrcweir bShowBitmap &= (aNumFmtArr[i]->GetNumberingType()&(~LINK_TOKEN)) == SVX_NUM_BITMAP; 1757*cdf0e10cSrcweir if(USHRT_MAX == nLvl) 1758*cdf0e10cSrcweir { 1759*cdf0e10cSrcweir nLvl = i; 1760*cdf0e10cSrcweir sFirstCharFmt = aNumFmtArr[i]->GetCharFmtName(); 1761*cdf0e10cSrcweir eFirstOrient = aNumFmtArr[i]->GetVertOrient(); 1762*cdf0e10cSrcweir if(bShowBitmap) 1763*cdf0e10cSrcweir aFirstSize = aNumFmtArr[i]->GetGraphicSize(); 1764*cdf0e10cSrcweir } 1765*cdf0e10cSrcweir if( i > nLvl) 1766*cdf0e10cSrcweir { 1767*cdf0e10cSrcweir bSameType &= aNumFmtArr[i]->GetNumberingType() == aNumFmtArr[nLvl]->GetNumberingType(); 1768*cdf0e10cSrcweir bSameStart = aNumFmtArr[i]->GetStart() == aNumFmtArr[nLvl]->GetStart(); 1769*cdf0e10cSrcweir 1770*cdf0e10cSrcweir bSamePrefix = aNumFmtArr[i]->GetPrefix() == aNumFmtArr[nLvl]->GetPrefix(); 1771*cdf0e10cSrcweir bSameSuffix = aNumFmtArr[i]->GetSuffix() == aNumFmtArr[nLvl]->GetSuffix(); 1772*cdf0e10cSrcweir bAllLevel &= aNumFmtArr[i]->GetIncludeUpperLevels() == aNumFmtArr[nLvl]->GetIncludeUpperLevels(); 1773*cdf0e10cSrcweir bSameCharFmt &= sFirstCharFmt == aNumFmtArr[i]->GetCharFmtName(); 1774*cdf0e10cSrcweir bSameVOrient &= eFirstOrient == aNumFmtArr[i]->GetVertOrient(); 1775*cdf0e10cSrcweir if(bShowBitmap && bSameSize) 1776*cdf0e10cSrcweir bSameSize &= aNumFmtArr[i]->GetGraphicSize() == aFirstSize; 1777*cdf0e10cSrcweir bSameBulColor &= aNumFmtArr[i]->GetBulletColor() == aNumFmtArr[nLvl]->GetBulletColor(); 1778*cdf0e10cSrcweir bSameBulRelSize &= aNumFmtArr[i]->GetBulletRelSize() == aNumFmtArr[nLvl]->GetBulletRelSize(); 1779*cdf0e10cSrcweir bSameAdjust &= aNumFmtArr[i]->GetNumAdjust() == aNumFmtArr[nLvl]->GetNumAdjust(); 1780*cdf0e10cSrcweir } 1781*cdf0e10cSrcweir nHighestLevel = i; 1782*cdf0e10cSrcweir } 1783*cdf0e10cSrcweir else 1784*cdf0e10cSrcweir aNumFmtArr[i] = 0; 1785*cdf0e10cSrcweir 1786*cdf0e10cSrcweir nMask <<= 1 ; 1787*cdf0e10cSrcweir 1788*cdf0e10cSrcweir } 1789*cdf0e10cSrcweir SwitchNumberType(bShowBullet ? 1 : bShowBitmap ? 2 : 0); 1790*cdf0e10cSrcweir CheckForStartValue_Impl(aNumFmtArr[nLvl]->GetNumberingType()); 1791*cdf0e10cSrcweir if(bShowBitmap) 1792*cdf0e10cSrcweir { 1793*cdf0e10cSrcweir if(!bSameVOrient || eFirstOrient == text::VertOrientation::NONE) 1794*cdf0e10cSrcweir aOrientLB.SetNoSelection(); 1795*cdf0e10cSrcweir else 1796*cdf0e10cSrcweir aOrientLB.SelectEntryPos( 1797*cdf0e10cSrcweir sal::static_int_cast< sal_uInt16 >(eFirstOrient - 1)); 1798*cdf0e10cSrcweir // kein text::VertOrientation::NONE 1799*cdf0e10cSrcweir 1800*cdf0e10cSrcweir if(bSameSize) 1801*cdf0e10cSrcweir { 1802*cdf0e10cSrcweir SetMetricValue(aHeightMF, aFirstSize.Height(), eCoreUnit); 1803*cdf0e10cSrcweir SetMetricValue(aWidthMF, aFirstSize.Width(), eCoreUnit); 1804*cdf0e10cSrcweir } 1805*cdf0e10cSrcweir else 1806*cdf0e10cSrcweir { 1807*cdf0e10cSrcweir aHeightMF.SetText(aEmptyStr); 1808*cdf0e10cSrcweir aWidthMF.SetText(aEmptyStr); 1809*cdf0e10cSrcweir } 1810*cdf0e10cSrcweir } 1811*cdf0e10cSrcweir 1812*cdf0e10cSrcweir if(bSameType) 1813*cdf0e10cSrcweir { 1814*cdf0e10cSrcweir sal_uInt16 nLBData = (sal_uInt16) aNumFmtArr[nLvl]->GetNumberingType(); 1815*cdf0e10cSrcweir aFmtLB.SelectEntryPos(aFmtLB.GetEntryPos( (void*)sal::static_int_cast<sal_uIntPtr>( nLBData ) )); 1816*cdf0e10cSrcweir } 1817*cdf0e10cSrcweir else 1818*cdf0e10cSrcweir aFmtLB.SetNoSelection(); 1819*cdf0e10cSrcweir 1820*cdf0e10cSrcweir aAllLevelNF.Enable(nHighestLevel > 0 && !aSameLevelCB.IsChecked()); 1821*cdf0e10cSrcweir aAllLevelNF.SetMax(nHighestLevel + 1); 1822*cdf0e10cSrcweir if(bAllLevel) 1823*cdf0e10cSrcweir { 1824*cdf0e10cSrcweir aAllLevelNF.SetValue(aNumFmtArr[nLvl]->GetIncludeUpperLevels()); 1825*cdf0e10cSrcweir } 1826*cdf0e10cSrcweir else 1827*cdf0e10cSrcweir { 1828*cdf0e10cSrcweir aAllLevelNF.SetText(aEmptyStr); 1829*cdf0e10cSrcweir } 1830*cdf0e10cSrcweir if(bSameAdjust) 1831*cdf0e10cSrcweir { 1832*cdf0e10cSrcweir sal_uInt16 nPos = 1; // zentriert 1833*cdf0e10cSrcweir if(aNumFmtArr[nLvl]->GetNumAdjust() == SVX_ADJUST_LEFT) 1834*cdf0e10cSrcweir nPos = 0; 1835*cdf0e10cSrcweir else if(aNumFmtArr[nLvl]->GetNumAdjust() == SVX_ADJUST_RIGHT) 1836*cdf0e10cSrcweir nPos = 2; 1837*cdf0e10cSrcweir aAlignLB.SelectEntryPos(nPos); 1838*cdf0e10cSrcweir } 1839*cdf0e10cSrcweir else 1840*cdf0e10cSrcweir { 1841*cdf0e10cSrcweir aAlignLB.SetNoSelection(); 1842*cdf0e10cSrcweir } 1843*cdf0e10cSrcweir 1844*cdf0e10cSrcweir if(bBullRelSize) 1845*cdf0e10cSrcweir { 1846*cdf0e10cSrcweir if(bSameBulRelSize) 1847*cdf0e10cSrcweir aBulRelSizeMF.SetValue(aNumFmtArr[nLvl]->GetBulletRelSize()); 1848*cdf0e10cSrcweir else 1849*cdf0e10cSrcweir aBulRelSizeMF.SetText(aEmptyStr); 1850*cdf0e10cSrcweir } 1851*cdf0e10cSrcweir if(bBullColor) 1852*cdf0e10cSrcweir { 1853*cdf0e10cSrcweir if(bSameBulColor) 1854*cdf0e10cSrcweir aBulColLB.SelectEntry(aNumFmtArr[nLvl]->GetBulletColor()); 1855*cdf0e10cSrcweir else 1856*cdf0e10cSrcweir aBulColLB.SetNoSelection(); 1857*cdf0e10cSrcweir } 1858*cdf0e10cSrcweir switch(nBullet) 1859*cdf0e10cSrcweir { 1860*cdf0e10cSrcweir case SHOW_NUMBERING: 1861*cdf0e10cSrcweir if(bSameStart) 1862*cdf0e10cSrcweir { 1863*cdf0e10cSrcweir aStartED.SetValue(aNumFmtArr[nLvl]->GetStart()); 1864*cdf0e10cSrcweir } 1865*cdf0e10cSrcweir else 1866*cdf0e10cSrcweir aStartED.SetText(aEmptyStr); 1867*cdf0e10cSrcweir break; 1868*cdf0e10cSrcweir case SHOW_BULLET: 1869*cdf0e10cSrcweir { 1870*cdf0e10cSrcweir // const Font* pFnt = aNumFmtArr[Lvl]->GetBulletFont(); 1871*cdf0e10cSrcweir // if(pFnt) 1872*cdf0e10cSrcweir // ChgTxtFont(aBulletFT, *pFnt); 1873*cdf0e10cSrcweir // aBulletFT.SetText(String((char)aNumFmtArr[nLvl]->GetBulletChar())); 1874*cdf0e10cSrcweir } 1875*cdf0e10cSrcweir break; 1876*cdf0e10cSrcweir case SHOW_BITMAP: 1877*cdf0e10cSrcweir break; 1878*cdf0e10cSrcweir } 1879*cdf0e10cSrcweir 1880*cdf0e10cSrcweir if(bSamePrefix) 1881*cdf0e10cSrcweir aPrefixED.SetText(aNumFmtArr[nLvl]->GetPrefix()); 1882*cdf0e10cSrcweir else 1883*cdf0e10cSrcweir aPrefixED.SetText(aEmptyStr); 1884*cdf0e10cSrcweir if(bSameSuffix) 1885*cdf0e10cSrcweir aSuffixED.SetText(aNumFmtArr[nLvl]->GetSuffix()); 1886*cdf0e10cSrcweir else 1887*cdf0e10cSrcweir aSuffixED.SetText(aEmptyStr); 1888*cdf0e10cSrcweir 1889*cdf0e10cSrcweir if(bSameCharFmt) 1890*cdf0e10cSrcweir { 1891*cdf0e10cSrcweir if(sFirstCharFmt.Len()) 1892*cdf0e10cSrcweir aCharFmtLB.SelectEntry(sFirstCharFmt); 1893*cdf0e10cSrcweir else 1894*cdf0e10cSrcweir aCharFmtLB.SelectEntryPos( 0 ); 1895*cdf0e10cSrcweir } 1896*cdf0e10cSrcweir else 1897*cdf0e10cSrcweir aCharFmtLB.SetNoSelection(); 1898*cdf0e10cSrcweir 1899*cdf0e10cSrcweir pPreviewWIN->SetLevel(nActNumLvl); 1900*cdf0e10cSrcweir pPreviewWIN->Invalidate(); 1901*cdf0e10cSrcweir } 1902*cdf0e10cSrcweir 1903*cdf0e10cSrcweir /*-----------------02.12.97 14:01------------------- 1904*cdf0e10cSrcweir 0 - Nummer; 1 - Bullet; 2 - Bitmap 1905*cdf0e10cSrcweir --------------------------------------------------*/ 1906*cdf0e10cSrcweir 1907*cdf0e10cSrcweir void SvxNumOptionsTabPage::SwitchNumberType( sal_uInt8 nType, sal_Bool ) 1908*cdf0e10cSrcweir { 1909*cdf0e10cSrcweir if(nBullet == nType) 1910*cdf0e10cSrcweir return; 1911*cdf0e10cSrcweir nBullet = nType; 1912*cdf0e10cSrcweir sal_Bool bBitmap = sal_False; 1913*cdf0e10cSrcweir sal_Bool bBullet = sal_False; 1914*cdf0e10cSrcweir sal_Bool bEnableBitmap = sal_False; 1915*cdf0e10cSrcweir if(nType == SHOW_NUMBERING) 1916*cdf0e10cSrcweir { 1917*cdf0e10cSrcweir // Label umschalten, alten Text merken 1918*cdf0e10cSrcweir aStartFT.SetText(sStartWith); 1919*cdf0e10cSrcweir 1920*cdf0e10cSrcweir } 1921*cdf0e10cSrcweir else if(nType == SHOW_BULLET) 1922*cdf0e10cSrcweir { 1923*cdf0e10cSrcweir // Label umschalten, alten Text merken 1924*cdf0e10cSrcweir aStartFT.SetText(sBullet); 1925*cdf0e10cSrcweir bBullet = sal_True; 1926*cdf0e10cSrcweir } 1927*cdf0e10cSrcweir else 1928*cdf0e10cSrcweir { 1929*cdf0e10cSrcweir bBitmap = sal_True; 1930*cdf0e10cSrcweir bEnableBitmap = sal_True; 1931*cdf0e10cSrcweir } 1932*cdf0e10cSrcweir sal_Bool bNumeric = !(bBitmap||bBullet); 1933*cdf0e10cSrcweir aPrefixFT.Show(bNumeric); 1934*cdf0e10cSrcweir aPrefixED.Show(bNumeric); 1935*cdf0e10cSrcweir aSuffixFT.Show(bNumeric); 1936*cdf0e10cSrcweir aSuffixED.Show(bNumeric); 1937*cdf0e10cSrcweir 1938*cdf0e10cSrcweir sal_Bool bCharFmt = pActNum->IsFeatureSupported(NUM_CHAR_STYLE); 1939*cdf0e10cSrcweir aCharFmtFT.Show(!bBitmap && bCharFmt); 1940*cdf0e10cSrcweir aCharFmtLB.Show(!bBitmap && bCharFmt); 1941*cdf0e10cSrcweir 1942*cdf0e10cSrcweir // das ist eigentlich Missbrauch, da fuer die vollst. Numerierung kein 1943*cdf0e10cSrcweir // eigenes Flag existiert 1944*cdf0e10cSrcweir sal_Bool bAllLevelFeature = pActNum->IsFeatureSupported(NUM_CONTINUOUS); 1945*cdf0e10cSrcweir sal_Bool bAllLevel = bNumeric && bAllLevelFeature && !bHTMLMode; 1946*cdf0e10cSrcweir aAllLevelFT.Show(bAllLevel); 1947*cdf0e10cSrcweir aAllLevelNF.Show(bAllLevel); 1948*cdf0e10cSrcweir 1949*cdf0e10cSrcweir aStartFT.Show(!bBitmap); 1950*cdf0e10cSrcweir aStartED.Show(!(bBullet||bBitmap)); 1951*cdf0e10cSrcweir 1952*cdf0e10cSrcweir aBulletPB.Show(bBullet); 1953*cdf0e10cSrcweir sal_Bool bBullColor = pActNum->IsFeatureSupported(NUM_BULLET_COLOR); 1954*cdf0e10cSrcweir aBulColorFT.Show( !bBitmap && bBullColor ); 1955*cdf0e10cSrcweir aBulColLB.Show( !bBitmap && bBullColor ); 1956*cdf0e10cSrcweir sal_Bool bBullResSize = pActNum->IsFeatureSupported(NUM_BULLET_REL_SIZE); 1957*cdf0e10cSrcweir aBulRelSizeFT.Show( !bBitmap && bBullResSize ); 1958*cdf0e10cSrcweir aBulRelSizeMF.Show( !bBitmap && bBullResSize ); 1959*cdf0e10cSrcweir 1960*cdf0e10cSrcweir aBitmapFT .Show(bBitmap); 1961*cdf0e10cSrcweir aBitmapMB .Show(bBitmap); 1962*cdf0e10cSrcweir 1963*cdf0e10cSrcweir aSizeFT .Show(bBitmap); 1964*cdf0e10cSrcweir aWidthMF .Show(bBitmap); 1965*cdf0e10cSrcweir aMultFT .Show(bBitmap); 1966*cdf0e10cSrcweir aHeightMF .Show(bBitmap); 1967*cdf0e10cSrcweir aRatioCB .Show(bBitmap); 1968*cdf0e10cSrcweir 1969*cdf0e10cSrcweir aOrientFT .Show(bBitmap && bAllLevelFeature); 1970*cdf0e10cSrcweir aOrientLB .Show(bBitmap && bAllLevelFeature); 1971*cdf0e10cSrcweir 1972*cdf0e10cSrcweir aSizeFT .Enable(bEnableBitmap); 1973*cdf0e10cSrcweir aWidthMF .Enable(bEnableBitmap); 1974*cdf0e10cSrcweir aMultFT .Enable(bEnableBitmap); 1975*cdf0e10cSrcweir aHeightMF .Enable(bEnableBitmap); 1976*cdf0e10cSrcweir aRatioCB .Enable(bEnableBitmap); 1977*cdf0e10cSrcweir aOrientFT .Enable(bEnableBitmap); 1978*cdf0e10cSrcweir aOrientLB .Enable(bEnableBitmap); 1979*cdf0e10cSrcweir 1980*cdf0e10cSrcweir } 1981*cdf0e10cSrcweir /*-----------------02.12.97 13:51------------------- 1982*cdf0e10cSrcweir 1983*cdf0e10cSrcweir --------------------------------------------------*/ 1984*cdf0e10cSrcweir IMPL_LINK( SvxNumOptionsTabPage, LevelHdl_Impl, ListBox *, pBox ) 1985*cdf0e10cSrcweir { 1986*cdf0e10cSrcweir sal_uInt16 nSaveNumLvl = nActNumLvl; 1987*cdf0e10cSrcweir nActNumLvl = 0; 1988*cdf0e10cSrcweir if(pBox->IsEntryPosSelected( pActNum->GetLevelCount() ) && 1989*cdf0e10cSrcweir (pBox->GetSelectEntryCount() == 1 || nSaveNumLvl != 0xffff)) 1990*cdf0e10cSrcweir { 1991*cdf0e10cSrcweir nActNumLvl = 0xFFFF; 1992*cdf0e10cSrcweir pBox->SetUpdateMode(sal_False); 1993*cdf0e10cSrcweir for( sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++ ) 1994*cdf0e10cSrcweir pBox->SelectEntryPos( i, sal_False ); 1995*cdf0e10cSrcweir pBox->SetUpdateMode(sal_True); 1996*cdf0e10cSrcweir } 1997*cdf0e10cSrcweir else if(pBox->GetSelectEntryCount()) 1998*cdf0e10cSrcweir { 1999*cdf0e10cSrcweir sal_uInt16 nMask = 1; 2000*cdf0e10cSrcweir for( sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++ ) 2001*cdf0e10cSrcweir { 2002*cdf0e10cSrcweir if(pBox->IsEntryPosSelected( i )) 2003*cdf0e10cSrcweir nActNumLvl |= nMask; 2004*cdf0e10cSrcweir nMask <<= 1; 2005*cdf0e10cSrcweir } 2006*cdf0e10cSrcweir pBox->SelectEntryPos( pActNum->GetLevelCount(), sal_False ); 2007*cdf0e10cSrcweir } 2008*cdf0e10cSrcweir else 2009*cdf0e10cSrcweir { 2010*cdf0e10cSrcweir nActNumLvl = nSaveNumLvl; 2011*cdf0e10cSrcweir sal_uInt16 nMask = 1; 2012*cdf0e10cSrcweir for( sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++ ) 2013*cdf0e10cSrcweir { 2014*cdf0e10cSrcweir if(nActNumLvl & nMask) 2015*cdf0e10cSrcweir { 2016*cdf0e10cSrcweir pBox->SelectEntryPos(i); 2017*cdf0e10cSrcweir break; 2018*cdf0e10cSrcweir } 2019*cdf0e10cSrcweir nMask <<=1; 2020*cdf0e10cSrcweir } 2021*cdf0e10cSrcweir } 2022*cdf0e10cSrcweir InitControls(); 2023*cdf0e10cSrcweir return 0; 2024*cdf0e10cSrcweir } 2025*cdf0e10cSrcweir /* -----------------------------05.04.2002 15:30------------------------------ 2026*cdf0e10cSrcweir 2027*cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 2028*cdf0e10cSrcweir IMPL_LINK( SvxNumOptionsTabPage, PreviewInvalidateHdl_Impl, Timer*, EMPTYARG ) 2029*cdf0e10cSrcweir { 2030*cdf0e10cSrcweir pPreviewWIN->Invalidate(); 2031*cdf0e10cSrcweir return 0; 2032*cdf0e10cSrcweir } 2033*cdf0e10cSrcweir /*-----------------03.12.97 12:01------------------- 2034*cdf0e10cSrcweir 2035*cdf0e10cSrcweir --------------------------------------------------*/ 2036*cdf0e10cSrcweir IMPL_LINK( SvxNumOptionsTabPage, AllLevelHdl_Impl, NumericField*, pBox ) 2037*cdf0e10cSrcweir { 2038*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 2039*cdf0e10cSrcweir { 2040*cdf0e10cSrcweir sal_uInt16 nMask = 1; 2041*cdf0e10cSrcweir for(sal_uInt16 e = 0; e < pActNum->GetLevelCount(); e++) 2042*cdf0e10cSrcweir { 2043*cdf0e10cSrcweir if(nActNumLvl & nMask) 2044*cdf0e10cSrcweir { 2045*cdf0e10cSrcweir SvxNumberFormat aNumFmt(pActNum->GetLevel(e)); 2046*cdf0e10cSrcweir aNumFmt.SetIncludeUpperLevels((sal_uInt8) std::min(pBox->GetValue(), sal_Int64(e + 1)) ); 2047*cdf0e10cSrcweir pActNum->SetLevel(e, aNumFmt); 2048*cdf0e10cSrcweir } 2049*cdf0e10cSrcweir nMask <<= 1; 2050*cdf0e10cSrcweir } 2051*cdf0e10cSrcweir } 2052*cdf0e10cSrcweir SetModified(); 2053*cdf0e10cSrcweir return 0; 2054*cdf0e10cSrcweir } 2055*cdf0e10cSrcweir 2056*cdf0e10cSrcweir /*-----------------02.12.97 08:56------------------- 2057*cdf0e10cSrcweir 2058*cdf0e10cSrcweir --------------------------------------------------*/ 2059*cdf0e10cSrcweir IMPL_LINK( SvxNumOptionsTabPage, NumberTypeSelectHdl_Impl, ListBox *, pBox ) 2060*cdf0e10cSrcweir { 2061*cdf0e10cSrcweir String sSelectStyle; 2062*cdf0e10cSrcweir sal_Int16 eOldType; 2063*cdf0e10cSrcweir sal_Bool bShowOrient = sal_False; 2064*cdf0e10cSrcweir sal_Bool bBmp = sal_False; 2065*cdf0e10cSrcweir String aEmptyStr; 2066*cdf0e10cSrcweir sal_uInt16 nMask = 1; 2067*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 2068*cdf0e10cSrcweir { 2069*cdf0e10cSrcweir if(nActNumLvl & nMask) 2070*cdf0e10cSrcweir { 2071*cdf0e10cSrcweir SvxNumberFormat aNumFmt(pActNum->GetLevel(i)); 2072*cdf0e10cSrcweir eOldType = aNumFmt.GetNumberingType(); 2073*cdf0e10cSrcweir // PAGEDESC gibt es nicht 2074*cdf0e10cSrcweir sal_uInt16 nNumType = (sal_uInt16)(sal_uLong)pBox->GetEntryData(pBox->GetSelectEntryPos()); 2075*cdf0e10cSrcweir aNumFmt.SetNumberingType((sal_Int16)nNumType); 2076*cdf0e10cSrcweir sal_uInt16 nNumberingType = aNumFmt.GetNumberingType(); 2077*cdf0e10cSrcweir if(SVX_NUM_BITMAP == (nNumberingType&(~LINK_TOKEN))) 2078*cdf0e10cSrcweir { 2079*cdf0e10cSrcweir bBmp |= 0 != aNumFmt.GetBrush(); 2080*cdf0e10cSrcweir aNumFmt.SetIncludeUpperLevels( sal_False ); 2081*cdf0e10cSrcweir aNumFmt.SetSuffix( aEmptyStr ); 2082*cdf0e10cSrcweir aNumFmt.SetPrefix( aEmptyStr ); 2083*cdf0e10cSrcweir if(!bBmp) 2084*cdf0e10cSrcweir aNumFmt.SetGraphic(aEmptyStr); 2085*cdf0e10cSrcweir pActNum->SetLevel(i, aNumFmt); 2086*cdf0e10cSrcweir SwitchNumberType(SHOW_BITMAP, bBmp ); 2087*cdf0e10cSrcweir bShowOrient = sal_True; 2088*cdf0e10cSrcweir } 2089*cdf0e10cSrcweir else if( SVX_NUM_CHAR_SPECIAL == nNumberingType ) 2090*cdf0e10cSrcweir { 2091*cdf0e10cSrcweir aNumFmt.SetIncludeUpperLevels( sal_False ); 2092*cdf0e10cSrcweir aNumFmt.SetSuffix( aEmptyStr ); 2093*cdf0e10cSrcweir aNumFmt.SetPrefix( aEmptyStr ); 2094*cdf0e10cSrcweir if( !aNumFmt.GetBulletFont() ) 2095*cdf0e10cSrcweir aNumFmt.SetBulletFont(&aActBulletFont); 2096*cdf0e10cSrcweir if( !aNumFmt.GetBulletChar() ) 2097*cdf0e10cSrcweir aNumFmt.SetBulletChar( SVX_DEF_BULLET ); 2098*cdf0e10cSrcweir pActNum->SetLevel(i, aNumFmt); 2099*cdf0e10cSrcweir SwitchNumberType(SHOW_BULLET); 2100*cdf0e10cSrcweir //ChgTxtFont(aBulletFT, *aNumFmt.GetBulletFont()); 2101*cdf0e10cSrcweir //aBulletFT.SetText( aNumFmt.GetBulletChar() ); 2102*cdf0e10cSrcweir // Zuweisung der Zeichenvorlage automatisch 2103*cdf0e10cSrcweir if(bAutomaticCharStyles) 2104*cdf0e10cSrcweir { 2105*cdf0e10cSrcweir sSelectStyle = sBulletCharFmtName; 2106*cdf0e10cSrcweir } 2107*cdf0e10cSrcweir } 2108*cdf0e10cSrcweir else 2109*cdf0e10cSrcweir { 2110*cdf0e10cSrcweir aNumFmt.SetPrefix( aPrefixED.GetText() ); 2111*cdf0e10cSrcweir aNumFmt.SetSuffix( aSuffixED.GetText() ); 2112*cdf0e10cSrcweir // aNumFmt.SetBulletFont(0); 2113*cdf0e10cSrcweir SwitchNumberType(SHOW_NUMBERING); 2114*cdf0e10cSrcweir pActNum->SetLevel(i, aNumFmt); 2115*cdf0e10cSrcweir CheckForStartValue_Impl(nNumberingType); 2116*cdf0e10cSrcweir 2117*cdf0e10cSrcweir // Zuweisung der Zeichenvorlage automatisch 2118*cdf0e10cSrcweir if(bAutomaticCharStyles) 2119*cdf0e10cSrcweir { 2120*cdf0e10cSrcweir sSelectStyle = sNumCharFmtName; 2121*cdf0e10cSrcweir } 2122*cdf0e10cSrcweir } 2123*cdf0e10cSrcweir } 2124*cdf0e10cSrcweir nMask <<= 1; 2125*cdf0e10cSrcweir } 2126*cdf0e10cSrcweir sal_Bool bAllLevelFeature = pActNum->IsFeatureSupported(NUM_CONTINUOUS); 2127*cdf0e10cSrcweir if(bShowOrient && bAllLevelFeature) 2128*cdf0e10cSrcweir { 2129*cdf0e10cSrcweir aOrientFT.Show(); 2130*cdf0e10cSrcweir aOrientLB.Show(); 2131*cdf0e10cSrcweir } 2132*cdf0e10cSrcweir else 2133*cdf0e10cSrcweir { 2134*cdf0e10cSrcweir aOrientFT.Hide(); 2135*cdf0e10cSrcweir aOrientLB.Hide(); 2136*cdf0e10cSrcweir } 2137*cdf0e10cSrcweir SetModified(); 2138*cdf0e10cSrcweir if(sSelectStyle.Len()) 2139*cdf0e10cSrcweir { 2140*cdf0e10cSrcweir aCharFmtLB.SelectEntry(sSelectStyle); 2141*cdf0e10cSrcweir CharFmtHdl_Impl(&aCharFmtLB); 2142*cdf0e10cSrcweir // bAutomaticCharStyles wird im CharFmtHdl_Impl zurueckgesetzt 2143*cdf0e10cSrcweir bAutomaticCharStyles = sal_True; 2144*cdf0e10cSrcweir } 2145*cdf0e10cSrcweir return 0; 2146*cdf0e10cSrcweir } 2147*cdf0e10cSrcweir /* -----------------06.11.2002 14:27----------------- 2148*cdf0e10cSrcweir * 2149*cdf0e10cSrcweir * --------------------------------------------------*/ 2150*cdf0e10cSrcweir void SvxNumOptionsTabPage::CheckForStartValue_Impl(sal_uInt16 nNumberingType) 2151*cdf0e10cSrcweir { 2152*cdf0e10cSrcweir sal_Bool bIsNull = aStartED.GetValue() == 0; 2153*cdf0e10cSrcweir sal_Bool bNoZeroAllowed = nNumberingType < SVX_NUM_ARABIC || 2154*cdf0e10cSrcweir SVX_NUM_CHARS_UPPER_LETTER_N == nNumberingType || 2155*cdf0e10cSrcweir SVX_NUM_CHARS_LOWER_LETTER_N == nNumberingType; 2156*cdf0e10cSrcweir aStartED.SetMin(bNoZeroAllowed ? 1 : 0); 2157*cdf0e10cSrcweir if(bIsNull && bNoZeroAllowed) 2158*cdf0e10cSrcweir aStartED.GetModifyHdl().Call(&aStartED); 2159*cdf0e10cSrcweir } 2160*cdf0e10cSrcweir /*-----------------03.12.97 16:43------------------- 2161*cdf0e10cSrcweir 2162*cdf0e10cSrcweir --------------------------------------------------*/ 2163*cdf0e10cSrcweir IMPL_LINK( SvxNumOptionsTabPage, OrientHdl_Impl, ListBox *, pBox ) 2164*cdf0e10cSrcweir { 2165*cdf0e10cSrcweir sal_uInt16 nPos = pBox->GetSelectEntryPos(); 2166*cdf0e10cSrcweir nPos ++; // kein VERT_NONE 2167*cdf0e10cSrcweir 2168*cdf0e10cSrcweir sal_uInt16 nMask = 1; 2169*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 2170*cdf0e10cSrcweir { 2171*cdf0e10cSrcweir if(nActNumLvl & nMask) 2172*cdf0e10cSrcweir { 2173*cdf0e10cSrcweir SvxNumberFormat aNumFmt(pActNum->GetLevel(i)); 2174*cdf0e10cSrcweir if(SVX_NUM_BITMAP == (aNumFmt.GetNumberingType()&(~LINK_TOKEN))) 2175*cdf0e10cSrcweir { 2176*cdf0e10cSrcweir const SvxBrushItem* pBrushItem = aNumFmt.GetBrush(); 2177*cdf0e10cSrcweir const Size& rSize = aNumFmt.GetGraphicSize(); 2178*cdf0e10cSrcweir sal_Int16 eOrient = (sal_Int16)nPos; 2179*cdf0e10cSrcweir aNumFmt.SetGraphicBrush( pBrushItem, &rSize, &eOrient ); 2180*cdf0e10cSrcweir pActNum->SetLevel(i, aNumFmt); 2181*cdf0e10cSrcweir } 2182*cdf0e10cSrcweir } 2183*cdf0e10cSrcweir nMask <<= 1; 2184*cdf0e10cSrcweir } 2185*cdf0e10cSrcweir SetModified(sal_False); 2186*cdf0e10cSrcweir return 0; 2187*cdf0e10cSrcweir 2188*cdf0e10cSrcweir } 2189*cdf0e10cSrcweir 2190*cdf0e10cSrcweir /*-----------------06.12.97 12:00------------------- 2191*cdf0e10cSrcweir 2192*cdf0e10cSrcweir --------------------------------------------------*/ 2193*cdf0e10cSrcweir IMPL_LINK( SvxNumOptionsTabPage, SameLevelHdl_Impl, CheckBox *, pBox ) 2194*cdf0e10cSrcweir { 2195*cdf0e10cSrcweir sal_Bool bSet = pBox->IsChecked(); 2196*cdf0e10cSrcweir pActNum->SetContinuousNumbering(bSet); 2197*cdf0e10cSrcweir sal_Bool bRepaint = sal_False; 2198*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 2199*cdf0e10cSrcweir { 2200*cdf0e10cSrcweir SvxNumberFormat aNumFmt(pActNum->GetLevel(i)); 2201*cdf0e10cSrcweir if(aNumFmt.GetNumberingType() != SVX_NUM_NUMBER_NONE) 2202*cdf0e10cSrcweir { 2203*cdf0e10cSrcweir bRepaint = sal_True; 2204*cdf0e10cSrcweir break; 2205*cdf0e10cSrcweir } 2206*cdf0e10cSrcweir } 2207*cdf0e10cSrcweir SetModified(bRepaint); 2208*cdf0e10cSrcweir InitControls(); 2209*cdf0e10cSrcweir return 0; 2210*cdf0e10cSrcweir } 2211*cdf0e10cSrcweir /* -----------------16.11.98 14:20------------------- 2212*cdf0e10cSrcweir * 2213*cdf0e10cSrcweir * --------------------------------------------------*/ 2214*cdf0e10cSrcweir IMPL_LINK( SvxNumOptionsTabPage, BulColorHdl_Impl, ColorListBox*, pBox ) 2215*cdf0e10cSrcweir { 2216*cdf0e10cSrcweir Color nSetColor = pBox->GetSelectEntryColor(); 2217*cdf0e10cSrcweir 2218*cdf0e10cSrcweir sal_uInt16 nMask = 1; 2219*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 2220*cdf0e10cSrcweir { 2221*cdf0e10cSrcweir if(nActNumLvl & nMask) 2222*cdf0e10cSrcweir { 2223*cdf0e10cSrcweir SvxNumberFormat aNumFmt(pActNum->GetLevel(i)); 2224*cdf0e10cSrcweir aNumFmt.SetBulletColor(nSetColor); 2225*cdf0e10cSrcweir pActNum->SetLevel(i, aNumFmt); 2226*cdf0e10cSrcweir } 2227*cdf0e10cSrcweir nMask <<= 1; 2228*cdf0e10cSrcweir } 2229*cdf0e10cSrcweir SetModified(); 2230*cdf0e10cSrcweir return 0; 2231*cdf0e10cSrcweir } 2232*cdf0e10cSrcweir /* -----------------16.11.98 14:20------------------- 2233*cdf0e10cSrcweir * 2234*cdf0e10cSrcweir * --------------------------------------------------*/ 2235*cdf0e10cSrcweir IMPL_LINK( SvxNumOptionsTabPage, BulRelSizeHdl_Impl, MetricField *, pField) 2236*cdf0e10cSrcweir { 2237*cdf0e10cSrcweir sal_uInt16 nRelSize = (sal_uInt16)pField->GetValue(); 2238*cdf0e10cSrcweir 2239*cdf0e10cSrcweir sal_uInt16 nMask = 1; 2240*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 2241*cdf0e10cSrcweir { 2242*cdf0e10cSrcweir if(nActNumLvl & nMask) 2243*cdf0e10cSrcweir { 2244*cdf0e10cSrcweir SvxNumberFormat aNumFmt(pActNum->GetLevel(i)); 2245*cdf0e10cSrcweir aNumFmt.SetBulletRelSize(nRelSize); 2246*cdf0e10cSrcweir pActNum->SetLevel(i, aNumFmt); 2247*cdf0e10cSrcweir } 2248*cdf0e10cSrcweir nMask <<= 1; 2249*cdf0e10cSrcweir } 2250*cdf0e10cSrcweir SetModified(); 2251*cdf0e10cSrcweir return 0; 2252*cdf0e10cSrcweir } 2253*cdf0e10cSrcweir 2254*cdf0e10cSrcweir /*-----------------02.12.97 10:50------------------- 2255*cdf0e10cSrcweir 2256*cdf0e10cSrcweir --------------------------------------------------*/ 2257*cdf0e10cSrcweir IMPL_LINK( SvxNumOptionsTabPage, GraphicHdl_Impl, MenuButton *, pButton ) 2258*cdf0e10cSrcweir { 2259*cdf0e10cSrcweir sal_uInt16 nItemId = pButton->GetCurItemId(); 2260*cdf0e10cSrcweir String aGrfName; 2261*cdf0e10cSrcweir Size aSize; 2262*cdf0e10cSrcweir sal_Bool bSucc(sal_False); 2263*cdf0e10cSrcweir SvxOpenGraphicDialog aGrfDlg( CUI_RES(RID_STR_EDIT_GRAPHIC) ); 2264*cdf0e10cSrcweir 2265*cdf0e10cSrcweir if(MN_GALLERY_ENTRY <= nItemId ) 2266*cdf0e10cSrcweir { 2267*cdf0e10cSrcweir aGrfName = *((String*)aGrfNames.GetObject( nItemId - MN_GALLERY_ENTRY)); 2268*cdf0e10cSrcweir Graphic aGraphic; 2269*cdf0e10cSrcweir if(GalleryExplorer::GetGraphicObj( GALLERY_THEME_BULLETS, nItemId - MN_GALLERY_ENTRY, &aGraphic)) 2270*cdf0e10cSrcweir { 2271*cdf0e10cSrcweir aSize = SvxNumberFormat::GetGraphicSizeMM100(&aGraphic); 2272*cdf0e10cSrcweir bSucc = sal_True; 2273*cdf0e10cSrcweir } 2274*cdf0e10cSrcweir } 2275*cdf0e10cSrcweir else 2276*cdf0e10cSrcweir { 2277*cdf0e10cSrcweir aGrfDlg.EnableLink( sal_False ); 2278*cdf0e10cSrcweir aGrfDlg.AsLink( sal_False ); 2279*cdf0e10cSrcweir if ( !aGrfDlg.Execute() ) 2280*cdf0e10cSrcweir { 2281*cdf0e10cSrcweir // ausgewaehlten Filter merken 2282*cdf0e10cSrcweir aGrfName = aGrfDlg.GetPath(); 2283*cdf0e10cSrcweir 2284*cdf0e10cSrcweir Graphic aGraphic; 2285*cdf0e10cSrcweir if( !aGrfDlg.GetGraphic(aGraphic) ) 2286*cdf0e10cSrcweir { 2287*cdf0e10cSrcweir aSize = SvxNumberFormat::GetGraphicSizeMM100(&aGraphic); 2288*cdf0e10cSrcweir bSucc = sal_True; 2289*cdf0e10cSrcweir } 2290*cdf0e10cSrcweir } 2291*cdf0e10cSrcweir } 2292*cdf0e10cSrcweir if(bSucc) 2293*cdf0e10cSrcweir { 2294*cdf0e10cSrcweir aSize = OutputDevice::LogicToLogic(aSize, MAP_100TH_MM, (MapUnit)eCoreUnit); 2295*cdf0e10cSrcweir 2296*cdf0e10cSrcweir sal_uInt16 nMask = 1; 2297*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 2298*cdf0e10cSrcweir { 2299*cdf0e10cSrcweir if(nActNumLvl & nMask) 2300*cdf0e10cSrcweir { 2301*cdf0e10cSrcweir SvxNumberFormat aNumFmt(pActNum->GetLevel(i)); 2302*cdf0e10cSrcweir aNumFmt.SetCharFmtName(sNumCharFmtName); 2303*cdf0e10cSrcweir aNumFmt.SetGraphic(aGrfName); 2304*cdf0e10cSrcweir 2305*cdf0e10cSrcweir // Size schon mal fuer spaeteren Groessenabgleich setzen 2306*cdf0e10cSrcweir const SvxBrushItem* pBrushItem = aNumFmt.GetBrush(); 2307*cdf0e10cSrcweir // initiate asynchronous loading 2308*cdf0e10cSrcweir sal_Int16 eOrient = aNumFmt.GetVertOrient(); 2309*cdf0e10cSrcweir aNumFmt.SetGraphicBrush( pBrushItem, &aSize, &eOrient ); 2310*cdf0e10cSrcweir aInitSize[i] = aNumFmt.GetGraphicSize(); 2311*cdf0e10cSrcweir 2312*cdf0e10cSrcweir pActNum->SetLevel(i, aNumFmt); 2313*cdf0e10cSrcweir } 2314*cdf0e10cSrcweir nMask <<= 1; 2315*cdf0e10cSrcweir } 2316*cdf0e10cSrcweir aRatioCB .Enable(); 2317*cdf0e10cSrcweir aSizeFT .Enable(); 2318*cdf0e10cSrcweir aMultFT.Enable(); 2319*cdf0e10cSrcweir aWidthMF .Enable(); 2320*cdf0e10cSrcweir aHeightMF.Enable(); 2321*cdf0e10cSrcweir SetMetricValue(aWidthMF, aSize.Width(), eCoreUnit); 2322*cdf0e10cSrcweir SetMetricValue(aHeightMF, aSize.Height(), eCoreUnit); 2323*cdf0e10cSrcweir aOrientFT.Enable(); 2324*cdf0e10cSrcweir aOrientLB.Enable(); 2325*cdf0e10cSrcweir SetModified(); 2326*cdf0e10cSrcweir //needed due to asynchronous loading of graphics in the SvxBrushItem 2327*cdf0e10cSrcweir aInvalidateTimer.Start(); 2328*cdf0e10cSrcweir } 2329*cdf0e10cSrcweir return 0; 2330*cdf0e10cSrcweir } 2331*cdf0e10cSrcweir /* -----------------27.07.99 12:20------------------- 2332*cdf0e10cSrcweir 2333*cdf0e10cSrcweir --------------------------------------------------*/ 2334*cdf0e10cSrcweir IMPL_LINK( SvxNumOptionsTabPage, PopupActivateHdl_Impl, Menu *, EMPTYARG ) 2335*cdf0e10cSrcweir { 2336*cdf0e10cSrcweir if(!bMenuButtonInitialized) 2337*cdf0e10cSrcweir { 2338*cdf0e10cSrcweir bMenuButtonInitialized = sal_True; 2339*cdf0e10cSrcweir EnterWait(); 2340*cdf0e10cSrcweir PopupMenu* pPopup = aBitmapMB.GetPopupMenu()->GetPopupMenu( MN_GALLERY ); 2341*cdf0e10cSrcweir GalleryExplorer::FillObjList(GALLERY_THEME_BULLETS, aGrfNames); 2342*cdf0e10cSrcweir if(aGrfNames.Count()) 2343*cdf0e10cSrcweir { 2344*cdf0e10cSrcweir pPopup->RemoveItem( pPopup->GetItemPos( NUM_NO_GRAPHIC )); 2345*cdf0e10cSrcweir String aEmptyStr; 2346*cdf0e10cSrcweir GalleryExplorer::BeginLocking(GALLERY_THEME_BULLETS); 2347*cdf0e10cSrcweir 2348*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < aGrfNames.Count(); i++) 2349*cdf0e10cSrcweir { 2350*cdf0e10cSrcweir Graphic aGraphic; 2351*cdf0e10cSrcweir String sGrfName = *(const String*)aGrfNames.GetObject(i); 2352*cdf0e10cSrcweir INetURLObject aObj(sGrfName); 2353*cdf0e10cSrcweir if(aObj.GetProtocol() == INET_PROT_FILE) 2354*cdf0e10cSrcweir sGrfName = aObj.PathToFileName(); 2355*cdf0e10cSrcweir if(GalleryExplorer::GetGraphicObj( GALLERY_THEME_BULLETS, i, &aGraphic)) 2356*cdf0e10cSrcweir { 2357*cdf0e10cSrcweir Bitmap aBitmap(aGraphic.GetBitmap()); 2358*cdf0e10cSrcweir Size aSize(aBitmap.GetSizePixel()); 2359*cdf0e10cSrcweir if(aSize.Width() > MAX_BMP_WIDTH || 2360*cdf0e10cSrcweir aSize.Height() > MAX_BMP_HEIGHT) 2361*cdf0e10cSrcweir { 2362*cdf0e10cSrcweir sal_Bool bWidth = aSize.Width() > aSize.Height(); 2363*cdf0e10cSrcweir double nScale = bWidth ? 2364*cdf0e10cSrcweir (double)MAX_BMP_WIDTH / (double)aSize.Width(): 2365*cdf0e10cSrcweir (double)MAX_BMP_HEIGHT / (double)aSize.Height(); 2366*cdf0e10cSrcweir aBitmap.Scale(nScale, nScale); 2367*cdf0e10cSrcweir } 2368*cdf0e10cSrcweir Image aImage(aBitmap); 2369*cdf0e10cSrcweir 2370*cdf0e10cSrcweir pPopup->InsertItem(MN_GALLERY_ENTRY + i, sGrfName, aImage ); 2371*cdf0e10cSrcweir } 2372*cdf0e10cSrcweir else 2373*cdf0e10cSrcweir { 2374*cdf0e10cSrcweir Image aImage; 2375*cdf0e10cSrcweir pPopup->InsertItem( 2376*cdf0e10cSrcweir MN_GALLERY_ENTRY + i, sGrfName, aImage ); 2377*cdf0e10cSrcweir } 2378*cdf0e10cSrcweir } 2379*cdf0e10cSrcweir GalleryExplorer::EndLocking(GALLERY_THEME_BULLETS); 2380*cdf0e10cSrcweir } 2381*cdf0e10cSrcweir LeaveWait(); 2382*cdf0e10cSrcweir } 2383*cdf0e10cSrcweir return 0; 2384*cdf0e10cSrcweir } 2385*cdf0e10cSrcweir 2386*cdf0e10cSrcweir /*-----------------02.12.97 10:58------------------- 2387*cdf0e10cSrcweir 2388*cdf0e10cSrcweir --------------------------------------------------*/ 2389*cdf0e10cSrcweir IMPL_LINK( SvxNumOptionsTabPage, BulletHdl_Impl, Button *, EMPTYARG ) 2390*cdf0e10cSrcweir { 2391*cdf0e10cSrcweir SvxCharacterMap* pMap = new SvxCharacterMap( this, sal_True ); 2392*cdf0e10cSrcweir 2393*cdf0e10cSrcweir sal_uInt16 nMask = 1; 2394*cdf0e10cSrcweir const Font* pFmtFont = 0; 2395*cdf0e10cSrcweir sal_Bool bSameBullet = sal_True; 2396*cdf0e10cSrcweir sal_Unicode cBullet = 0; 2397*cdf0e10cSrcweir sal_Bool bFirst = sal_True; 2398*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 2399*cdf0e10cSrcweir { 2400*cdf0e10cSrcweir if(nActNumLvl & nMask) 2401*cdf0e10cSrcweir { 2402*cdf0e10cSrcweir const SvxNumberFormat& rCurFmt = pActNum->GetLevel(i); 2403*cdf0e10cSrcweir if(bFirst) 2404*cdf0e10cSrcweir { 2405*cdf0e10cSrcweir cBullet = rCurFmt.GetBulletChar(); 2406*cdf0e10cSrcweir } 2407*cdf0e10cSrcweir else if(rCurFmt.GetBulletChar() != cBullet ) 2408*cdf0e10cSrcweir { 2409*cdf0e10cSrcweir bSameBullet = sal_False; 2410*cdf0e10cSrcweir break; 2411*cdf0e10cSrcweir } 2412*cdf0e10cSrcweir if(!pFmtFont) 2413*cdf0e10cSrcweir pFmtFont = rCurFmt.GetBulletFont(); 2414*cdf0e10cSrcweir bFirst = sal_False; 2415*cdf0e10cSrcweir } 2416*cdf0e10cSrcweir nMask <<= 1; 2417*cdf0e10cSrcweir 2418*cdf0e10cSrcweir } 2419*cdf0e10cSrcweir 2420*cdf0e10cSrcweir if(pFmtFont) 2421*cdf0e10cSrcweir pMap->SetCharFont(*pFmtFont); 2422*cdf0e10cSrcweir else 2423*cdf0e10cSrcweir pMap->SetCharFont(aActBulletFont); 2424*cdf0e10cSrcweir if(bSameBullet) 2425*cdf0e10cSrcweir pMap->SetChar( cBullet ); 2426*cdf0e10cSrcweir if(pMap->Execute() == RET_OK) 2427*cdf0e10cSrcweir { 2428*cdf0e10cSrcweir // Font Numrules umstellen 2429*cdf0e10cSrcweir aActBulletFont = pMap->GetCharFont(); 2430*cdf0e10cSrcweir 2431*cdf0e10cSrcweir sal_uInt16 _nMask = 1; 2432*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 2433*cdf0e10cSrcweir { 2434*cdf0e10cSrcweir if(nActNumLvl & _nMask) 2435*cdf0e10cSrcweir { 2436*cdf0e10cSrcweir SvxNumberFormat aNumFmt(pActNum->GetLevel(i)); 2437*cdf0e10cSrcweir aNumFmt.SetBulletFont(&aActBulletFont); ; 2438*cdf0e10cSrcweir aNumFmt.SetBulletChar( (sal_Unicode) pMap->GetChar() ); 2439*cdf0e10cSrcweir pActNum->SetLevel(i, aNumFmt); 2440*cdf0e10cSrcweir } 2441*cdf0e10cSrcweir _nMask <<= 1; 2442*cdf0e10cSrcweir } 2443*cdf0e10cSrcweir 2444*cdf0e10cSrcweir SetModified(); 2445*cdf0e10cSrcweir } 2446*cdf0e10cSrcweir delete pMap; 2447*cdf0e10cSrcweir return 0; 2448*cdf0e10cSrcweir } 2449*cdf0e10cSrcweir 2450*cdf0e10cSrcweir /*-----------------03.03.97 15:21------------------- 2451*cdf0e10cSrcweir 2452*cdf0e10cSrcweir --------------------------------------------------*/ 2453*cdf0e10cSrcweir 2454*cdf0e10cSrcweir IMPL_LINK( SvxNumOptionsTabPage, SizeHdl_Impl, MetricField *, pField) 2455*cdf0e10cSrcweir { 2456*cdf0e10cSrcweir sal_Bool bWidth = pField == &aWidthMF; 2457*cdf0e10cSrcweir bLastWidthModified = bWidth; 2458*cdf0e10cSrcweir sal_Bool bRatio = aRatioCB.IsChecked(); 2459*cdf0e10cSrcweir long nWidthVal = static_cast<long>(aWidthMF.Denormalize(aWidthMF.GetValue(FUNIT_100TH_MM))); 2460*cdf0e10cSrcweir long nHeightVal = static_cast<long>(aHeightMF.Denormalize(aHeightMF.GetValue(FUNIT_100TH_MM))); 2461*cdf0e10cSrcweir nWidthVal = OutputDevice::LogicToLogic( nWidthVal , 2462*cdf0e10cSrcweir MAP_100TH_MM, (MapUnit)eCoreUnit ); 2463*cdf0e10cSrcweir nHeightVal = OutputDevice::LogicToLogic( nHeightVal, 2464*cdf0e10cSrcweir MAP_100TH_MM, (MapUnit)eCoreUnit); 2465*cdf0e10cSrcweir double fSizeRatio; 2466*cdf0e10cSrcweir 2467*cdf0e10cSrcweir sal_Bool bRepaint = sal_False; 2468*cdf0e10cSrcweir sal_uInt16 nMask = 1; 2469*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 2470*cdf0e10cSrcweir { 2471*cdf0e10cSrcweir if(nActNumLvl & nMask) 2472*cdf0e10cSrcweir { 2473*cdf0e10cSrcweir SvxNumberFormat aNumFmt(pActNum->GetLevel(i)); 2474*cdf0e10cSrcweir if(SVX_NUM_BITMAP == (aNumFmt.GetNumberingType()&(~LINK_TOKEN))) 2475*cdf0e10cSrcweir { 2476*cdf0e10cSrcweir Size aSize(aNumFmt.GetGraphicSize() ); 2477*cdf0e10cSrcweir Size aSaveSize(aSize); 2478*cdf0e10cSrcweir 2479*cdf0e10cSrcweir if (aInitSize[i].Height()) 2480*cdf0e10cSrcweir fSizeRatio = (double)aInitSize[i].Width() / (double)aInitSize[i].Height(); 2481*cdf0e10cSrcweir else 2482*cdf0e10cSrcweir fSizeRatio = (double)1; 2483*cdf0e10cSrcweir 2484*cdf0e10cSrcweir if(bWidth) 2485*cdf0e10cSrcweir { 2486*cdf0e10cSrcweir long nDelta = nWidthVal - aInitSize[i].Width(); 2487*cdf0e10cSrcweir aSize.Width() = nWidthVal; 2488*cdf0e10cSrcweir if (bRatio) 2489*cdf0e10cSrcweir { 2490*cdf0e10cSrcweir aSize.Height() = aInitSize[i].Height() + (long)((double)nDelta / fSizeRatio); 2491*cdf0e10cSrcweir aHeightMF.SetUserValue(aHeightMF.Normalize( 2492*cdf0e10cSrcweir OutputDevice::LogicToLogic( aSize.Height(), (MapUnit)eCoreUnit, MAP_100TH_MM )), 2493*cdf0e10cSrcweir FUNIT_100TH_MM); 2494*cdf0e10cSrcweir } 2495*cdf0e10cSrcweir } 2496*cdf0e10cSrcweir else 2497*cdf0e10cSrcweir { 2498*cdf0e10cSrcweir long nDelta = nHeightVal - aInitSize[i].Height(); 2499*cdf0e10cSrcweir aSize.Height() = nHeightVal; 2500*cdf0e10cSrcweir if (bRatio) 2501*cdf0e10cSrcweir { 2502*cdf0e10cSrcweir aSize.Width() = aInitSize[i].Width() + (long)((double)nDelta * fSizeRatio); 2503*cdf0e10cSrcweir aWidthMF.SetUserValue(aWidthMF.Normalize( 2504*cdf0e10cSrcweir OutputDevice::LogicToLogic( aSize.Width(), (MapUnit)eCoreUnit, MAP_100TH_MM )), 2505*cdf0e10cSrcweir FUNIT_100TH_MM); 2506*cdf0e10cSrcweir } 2507*cdf0e10cSrcweir } 2508*cdf0e10cSrcweir const SvxBrushItem* pBrushItem = aNumFmt.GetBrush(); 2509*cdf0e10cSrcweir sal_Int16 eOrient = aNumFmt.GetVertOrient(); 2510*cdf0e10cSrcweir if(aSize != aSaveSize) 2511*cdf0e10cSrcweir bRepaint = sal_True; 2512*cdf0e10cSrcweir aNumFmt.SetGraphicBrush( pBrushItem, &aSize, &eOrient ); 2513*cdf0e10cSrcweir pActNum->SetLevel(i, aNumFmt); 2514*cdf0e10cSrcweir } 2515*cdf0e10cSrcweir } 2516*cdf0e10cSrcweir nMask <<= 1; 2517*cdf0e10cSrcweir } 2518*cdf0e10cSrcweir SetModified(bRepaint); 2519*cdf0e10cSrcweir return 0; 2520*cdf0e10cSrcweir } 2521*cdf0e10cSrcweir 2522*cdf0e10cSrcweir /*------------------------------------------------------------------------ 2523*cdf0e10cSrcweir Beschreibung: 2524*cdf0e10cSrcweir ------------------------------------------------------------------------*/ 2525*cdf0e10cSrcweir 2526*cdf0e10cSrcweir IMPL_LINK( SvxNumOptionsTabPage, RatioHdl_Impl, CheckBox *, pBox ) 2527*cdf0e10cSrcweir { 2528*cdf0e10cSrcweir if (pBox->IsChecked()) 2529*cdf0e10cSrcweir { 2530*cdf0e10cSrcweir if (bLastWidthModified) 2531*cdf0e10cSrcweir SizeHdl_Impl(&aWidthMF); 2532*cdf0e10cSrcweir else 2533*cdf0e10cSrcweir SizeHdl_Impl(&aHeightMF); 2534*cdf0e10cSrcweir } 2535*cdf0e10cSrcweir return 0; 2536*cdf0e10cSrcweir } 2537*cdf0e10cSrcweir 2538*cdf0e10cSrcweir /*-----------------02.12.97 16:07------------------- 2539*cdf0e10cSrcweir 2540*cdf0e10cSrcweir --------------------------------------------------*/ 2541*cdf0e10cSrcweir IMPL_LINK( SvxNumOptionsTabPage, CharFmtHdl_Impl, ListBox *, EMPTYARG ) 2542*cdf0e10cSrcweir { 2543*cdf0e10cSrcweir bAutomaticCharStyles = sal_False; 2544*cdf0e10cSrcweir sal_uInt16 nEntryPos = aCharFmtLB.GetSelectEntryPos(); 2545*cdf0e10cSrcweir String sEntry = aCharFmtLB.GetSelectEntry(); 2546*cdf0e10cSrcweir sal_uInt16 nMask = 1; 2547*cdf0e10cSrcweir String aEmptyStr; 2548*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 2549*cdf0e10cSrcweir { 2550*cdf0e10cSrcweir if(nActNumLvl & nMask) 2551*cdf0e10cSrcweir { 2552*cdf0e10cSrcweir SvxNumberFormat aNumFmt(pActNum->GetLevel(i)); 2553*cdf0e10cSrcweir if( 0 == nEntryPos ) 2554*cdf0e10cSrcweir aNumFmt.SetCharFmtName(aEmptyStr); 2555*cdf0e10cSrcweir else 2556*cdf0e10cSrcweir { 2557*cdf0e10cSrcweir if(SVX_NUM_BITMAP != (aNumFmt.GetNumberingType()&(~LINK_TOKEN))) 2558*cdf0e10cSrcweir aNumFmt.SetCharFmtName(sEntry); 2559*cdf0e10cSrcweir } 2560*cdf0e10cSrcweir pActNum->SetLevel(i, aNumFmt); 2561*cdf0e10cSrcweir } 2562*cdf0e10cSrcweir nMask <<= 1; 2563*cdf0e10cSrcweir } 2564*cdf0e10cSrcweir SetModified(sal_False); 2565*cdf0e10cSrcweir return 0; 2566*cdf0e10cSrcweir 2567*cdf0e10cSrcweir }; 2568*cdf0e10cSrcweir 2569*cdf0e10cSrcweir /*-----------------03.12.97 11:01------------------- 2570*cdf0e10cSrcweir 2571*cdf0e10cSrcweir --------------------------------------------------*/ 2572*cdf0e10cSrcweir IMPL_LINK( SvxNumOptionsTabPage, EditModifyHdl_Impl, Edit *, pEdit ) 2573*cdf0e10cSrcweir { 2574*cdf0e10cSrcweir sal_Bool bPrefix = pEdit == &aPrefixED; 2575*cdf0e10cSrcweir sal_Bool bSuffix = pEdit == &aSuffixED; 2576*cdf0e10cSrcweir sal_Bool bStart = pEdit == &aStartED; 2577*cdf0e10cSrcweir sal_uInt16 nMask = 1; 2578*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 2579*cdf0e10cSrcweir { 2580*cdf0e10cSrcweir if(nActNumLvl & nMask) 2581*cdf0e10cSrcweir { 2582*cdf0e10cSrcweir SvxNumberFormat aNumFmt(pActNum->GetLevel(i)); 2583*cdf0e10cSrcweir if(bPrefix) 2584*cdf0e10cSrcweir aNumFmt.SetPrefix( aPrefixED.GetText() ); 2585*cdf0e10cSrcweir else if(bSuffix) 2586*cdf0e10cSrcweir aNumFmt.SetSuffix( aSuffixED.GetText() ); 2587*cdf0e10cSrcweir else if(bStart) 2588*cdf0e10cSrcweir aNumFmt.SetStart( (sal_uInt16)aStartED.GetValue() ); 2589*cdf0e10cSrcweir else //align 2590*cdf0e10cSrcweir { 2591*cdf0e10cSrcweir sal_uInt16 nPos = aAlignLB.GetSelectEntryPos(); 2592*cdf0e10cSrcweir SvxAdjust eAdjust = SVX_ADJUST_CENTER; 2593*cdf0e10cSrcweir if(nPos == 0) 2594*cdf0e10cSrcweir eAdjust = SVX_ADJUST_LEFT; 2595*cdf0e10cSrcweir else if(nPos == 2) 2596*cdf0e10cSrcweir eAdjust = SVX_ADJUST_RIGHT; 2597*cdf0e10cSrcweir aNumFmt.SetNumAdjust( eAdjust ); 2598*cdf0e10cSrcweir } 2599*cdf0e10cSrcweir pActNum->SetLevel(i, aNumFmt); 2600*cdf0e10cSrcweir } 2601*cdf0e10cSrcweir nMask <<= 1; 2602*cdf0e10cSrcweir } 2603*cdf0e10cSrcweir SetModified(); 2604*cdf0e10cSrcweir 2605*cdf0e10cSrcweir return 0; 2606*cdf0e10cSrcweir } 2607*cdf0e10cSrcweir 2608*cdf0e10cSrcweir /*-----------------09.12.97 11:49------------------- 2609*cdf0e10cSrcweir 2610*cdf0e10cSrcweir --------------------------------------------------*/ 2611*cdf0e10cSrcweir sal_uInt16 lcl_DrawGraphic(VirtualDevice* pVDev, const SvxNumberFormat &rFmt, sal_uInt16 nXStart, 2612*cdf0e10cSrcweir sal_uInt16 nYStart, sal_uInt16 nDivision) 2613*cdf0e10cSrcweir { 2614*cdf0e10cSrcweir const SvxBrushItem* pBrushItem = rFmt.GetBrush(); 2615*cdf0e10cSrcweir sal_uInt16 nRet = 0; 2616*cdf0e10cSrcweir if(pBrushItem) 2617*cdf0e10cSrcweir { 2618*cdf0e10cSrcweir const Graphic* pGrf = pBrushItem->GetGraphic(); 2619*cdf0e10cSrcweir if(pGrf) 2620*cdf0e10cSrcweir { 2621*cdf0e10cSrcweir Size aGSize( rFmt.GetGraphicSize() ); 2622*cdf0e10cSrcweir aGSize.Width() /= nDivision; 2623*cdf0e10cSrcweir nRet = (sal_uInt16)aGSize.Width(); 2624*cdf0e10cSrcweir aGSize.Height() /= nDivision; 2625*cdf0e10cSrcweir pGrf->Draw( pVDev, Point(nXStart,nYStart), 2626*cdf0e10cSrcweir pVDev->PixelToLogic( aGSize ) ); 2627*cdf0e10cSrcweir } 2628*cdf0e10cSrcweir } 2629*cdf0e10cSrcweir return nRet; 2630*cdf0e10cSrcweir 2631*cdf0e10cSrcweir } 2632*cdf0e10cSrcweir 2633*cdf0e10cSrcweir /*-----------------09.12.97 11:54------------------- 2634*cdf0e10cSrcweir 2635*cdf0e10cSrcweir --------------------------------------------------*/ 2636*cdf0e10cSrcweir sal_uInt16 lcl_DrawBullet(VirtualDevice* pVDev, 2637*cdf0e10cSrcweir const SvxNumberFormat& rFmt, sal_uInt16 nXStart, 2638*cdf0e10cSrcweir sal_uInt16 nYStart, const Size& rSize) 2639*cdf0e10cSrcweir { 2640*cdf0e10cSrcweir Font aTmpFont(pVDev->GetFont()); 2641*cdf0e10cSrcweir 2642*cdf0e10cSrcweir //per Uno kann es sein, dass kein Font gesetzt ist! 2643*cdf0e10cSrcweir Font aFont(rFmt.GetBulletFont() ? *rFmt.GetBulletFont() : aTmpFont); 2644*cdf0e10cSrcweir Size aTmpSize(rSize); 2645*cdf0e10cSrcweir aTmpSize.Width() *= rFmt.GetBulletRelSize(); 2646*cdf0e10cSrcweir aTmpSize.Width() /= 100 ; 2647*cdf0e10cSrcweir aTmpSize.Height() *= rFmt.GetBulletRelSize(); 2648*cdf0e10cSrcweir aTmpSize.Height() /= 100 ; 2649*cdf0e10cSrcweir // bei einer Hoehe von Null wird in Ursprungshoehe gezeichnet 2650*cdf0e10cSrcweir if(!aTmpSize.Height()) 2651*cdf0e10cSrcweir aTmpSize.Height() = 1; 2652*cdf0e10cSrcweir aFont.SetSize(aTmpSize); 2653*cdf0e10cSrcweir aFont.SetTransparent(sal_True); 2654*cdf0e10cSrcweir Color aBulletColor = rFmt.GetBulletColor(); 2655*cdf0e10cSrcweir if(aBulletColor.GetColor() == COL_AUTO) 2656*cdf0e10cSrcweir aBulletColor = Color(pVDev->GetFillColor().IsDark() ? COL_WHITE : COL_BLACK); 2657*cdf0e10cSrcweir else if(aBulletColor == pVDev->GetFillColor()) 2658*cdf0e10cSrcweir aBulletColor.Invert(); 2659*cdf0e10cSrcweir aFont.SetColor(aBulletColor); 2660*cdf0e10cSrcweir pVDev->SetFont( aFont ); 2661*cdf0e10cSrcweir String aText(sal_Unicode(rFmt.GetBulletChar())); 2662*cdf0e10cSrcweir long nY = nYStart; 2663*cdf0e10cSrcweir nY -= ((aTmpSize.Height() - rSize.Height())/ 2); 2664*cdf0e10cSrcweir pVDev->DrawText( Point(nXStart, nY), aText ); 2665*cdf0e10cSrcweir sal_uInt16 nRet = (sal_uInt16)pVDev->GetTextWidth(aText); 2666*cdf0e10cSrcweir 2667*cdf0e10cSrcweir pVDev->SetFont(aTmpFont); 2668*cdf0e10cSrcweir return nRet; 2669*cdf0e10cSrcweir } 2670*cdf0e10cSrcweir /*-----------------02.12.97 10:34------------------- 2671*cdf0e10cSrcweir Vorschau der Numerierung painten 2672*cdf0e10cSrcweir --------------------------------------------------*/ 2673*cdf0e10cSrcweir void SvxNumberingPreview::Paint( const Rectangle& /*rRect*/ ) 2674*cdf0e10cSrcweir { 2675*cdf0e10cSrcweir Size aSize(PixelToLogic(GetOutputSizePixel())); 2676*cdf0e10cSrcweir Rectangle aRect(Point(0,0), aSize); 2677*cdf0e10cSrcweir 2678*cdf0e10cSrcweir const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); 2679*cdf0e10cSrcweir const Color aBackColor = rStyleSettings.GetFieldColor(); 2680*cdf0e10cSrcweir const Color aTextColor = rStyleSettings.GetFieldTextColor(); 2681*cdf0e10cSrcweir 2682*cdf0e10cSrcweir VirtualDevice* pVDev = new VirtualDevice(*this); 2683*cdf0e10cSrcweir pVDev->EnableRTL( IsRTLEnabled() ); 2684*cdf0e10cSrcweir pVDev->SetMapMode(GetMapMode()); 2685*cdf0e10cSrcweir pVDev->SetOutputSize( aSize ); 2686*cdf0e10cSrcweir 2687*cdf0e10cSrcweir Color aLineColor(COL_LIGHTGRAY); 2688*cdf0e10cSrcweir if(aLineColor == aBackColor) 2689*cdf0e10cSrcweir aLineColor.Invert(); 2690*cdf0e10cSrcweir pVDev->SetLineColor(aLineColor); 2691*cdf0e10cSrcweir pVDev->SetFillColor( aBackColor ); 2692*cdf0e10cSrcweir pVDev->DrawRect(aRect); 2693*cdf0e10cSrcweir 2694*cdf0e10cSrcweir if(pActNum) 2695*cdf0e10cSrcweir { 2696*cdf0e10cSrcweir sal_uInt16 nWidthRelation; 2697*cdf0e10cSrcweir if(nPageWidth) 2698*cdf0e10cSrcweir { 2699*cdf0e10cSrcweir nWidthRelation = sal_uInt16 (nPageWidth / aSize.Width()); 2700*cdf0e10cSrcweir if(bPosition) 2701*cdf0e10cSrcweir nWidthRelation = nWidthRelation * 2 / 3; 2702*cdf0e10cSrcweir else 2703*cdf0e10cSrcweir nWidthRelation = nWidthRelation / 4; 2704*cdf0e10cSrcweir } 2705*cdf0e10cSrcweir else 2706*cdf0e10cSrcweir nWidthRelation = 30; // Kapiteldialog 2707*cdf0e10cSrcweir 2708*cdf0e10cSrcweir //Hoehe pro Ebene 2709*cdf0e10cSrcweir sal_uInt16 nXStep = sal::static_int_cast< sal_uInt16 >(aSize.Width() / (3 * pActNum->GetLevelCount())); 2710*cdf0e10cSrcweir if(pActNum->GetLevelCount() < 10) 2711*cdf0e10cSrcweir nXStep /= 2; 2712*cdf0e10cSrcweir sal_uInt16 nYStart = 4; 2713*cdf0e10cSrcweir // fuer ein einziges Level darf nicht die gesamte Hoehe benutzt werden 2714*cdf0e10cSrcweir sal_uInt16 nYStep = sal::static_int_cast< sal_uInt16 >((aSize.Height() - 6)/ (pActNum->GetLevelCount() > 1 ? pActNum->GetLevelCount() : 5)); 2715*cdf0e10cSrcweir aStdFont = OutputDevice::GetDefaultFont( 2716*cdf0e10cSrcweir DEFAULTFONT_UI_SANS, MsLangId::getSystemLanguage(), DEFAULTFONT_FLAGS_ONLYONE); 2717*cdf0e10cSrcweir aStdFont.SetColor(aTextColor); 2718*cdf0e10cSrcweir aStdFont.SetFillColor(aBackColor); 2719*cdf0e10cSrcweir 2720*cdf0e10cSrcweir // 2721*cdf0e10cSrcweir sal_uInt16 nFontHeight = nYStep * 6 / 10; 2722*cdf0e10cSrcweir if(bPosition) 2723*cdf0e10cSrcweir nFontHeight = nYStep * 15 / 10; 2724*cdf0e10cSrcweir aStdFont.SetSize(Size( 0, nFontHeight )); 2725*cdf0e10cSrcweir 2726*cdf0e10cSrcweir SvxNodeNum aNum( (sal_uInt8)0 ); 2727*cdf0e10cSrcweir sal_uInt16 nPreNum = pActNum->GetLevel(0).GetStart(); 2728*cdf0e10cSrcweir 2729*cdf0e10cSrcweir if(bPosition) 2730*cdf0e10cSrcweir { 2731*cdf0e10cSrcweir sal_uInt16 nLineHeight = nFontHeight * 8 / 7; 2732*cdf0e10cSrcweir sal_uInt8 nStart = 0; 2733*cdf0e10cSrcweir while( !(nActLevel & (1<<nStart)) ) 2734*cdf0e10cSrcweir { 2735*cdf0e10cSrcweir nStart++; 2736*cdf0e10cSrcweir } 2737*cdf0e10cSrcweir if(nStart) 2738*cdf0e10cSrcweir nStart--; 2739*cdf0e10cSrcweir sal_uInt8 nEnd = std::min( (sal_uInt8)(nStart + 3), (sal_uInt8)pActNum->GetLevelCount() ); 2740*cdf0e10cSrcweir for( sal_uInt8 nLevel = nStart; nLevel < nEnd; ++nLevel ) 2741*cdf0e10cSrcweir { 2742*cdf0e10cSrcweir const SvxNumberFormat &rFmt = pActNum->GetLevel(nLevel); 2743*cdf0e10cSrcweir aNum.GetLevelVal()[ nLevel ] = rFmt.GetStart(); 2744*cdf0e10cSrcweir 2745*cdf0e10cSrcweir // --> OD 2008-01-16 #newlistlevelattrs# 2746*cdf0e10cSrcweir sal_uInt16 nXStart( 0 ); 2747*cdf0e10cSrcweir short nTextOffset( 0 ); 2748*cdf0e10cSrcweir sal_uInt16 nNumberXPos( 0 ); 2749*cdf0e10cSrcweir if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION ) 2750*cdf0e10cSrcweir { 2751*cdf0e10cSrcweir nXStart = rFmt.GetAbsLSpace() / nWidthRelation; 2752*cdf0e10cSrcweir nTextOffset = rFmt.GetCharTextDistance() / nWidthRelation; 2753*cdf0e10cSrcweir nNumberXPos = nXStart; 2754*cdf0e10cSrcweir sal_uInt16 nFirstLineOffset = (-rFmt.GetFirstLineOffset()) / nWidthRelation; 2755*cdf0e10cSrcweir 2756*cdf0e10cSrcweir if(nFirstLineOffset <= nNumberXPos) 2757*cdf0e10cSrcweir nNumberXPos = nNumberXPos - nFirstLineOffset; 2758*cdf0e10cSrcweir else 2759*cdf0e10cSrcweir nNumberXPos = 0; 2760*cdf0e10cSrcweir //im draw ist das zulaeesig 2761*cdf0e10cSrcweir if(nTextOffset < 0) 2762*cdf0e10cSrcweir nNumberXPos = nNumberXPos + nTextOffset; 2763*cdf0e10cSrcweir } 2764*cdf0e10cSrcweir else if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT ) 2765*cdf0e10cSrcweir { 2766*cdf0e10cSrcweir const long nTmpNumberXPos( ( rFmt.GetIndentAt() + 2767*cdf0e10cSrcweir rFmt.GetFirstLineIndent() ) / 2768*cdf0e10cSrcweir nWidthRelation ); 2769*cdf0e10cSrcweir if ( nTmpNumberXPos < 0 ) 2770*cdf0e10cSrcweir { 2771*cdf0e10cSrcweir nNumberXPos = 0; 2772*cdf0e10cSrcweir } 2773*cdf0e10cSrcweir else 2774*cdf0e10cSrcweir { 2775*cdf0e10cSrcweir nNumberXPos = static_cast<sal_uInt16>( nTmpNumberXPos ); 2776*cdf0e10cSrcweir } 2777*cdf0e10cSrcweir } 2778*cdf0e10cSrcweir // <-- 2779*cdf0e10cSrcweir 2780*cdf0e10cSrcweir sal_uInt16 nBulletWidth = 0; 2781*cdf0e10cSrcweir if( SVX_NUM_BITMAP == (rFmt.GetNumberingType() &(~LINK_TOKEN))) 2782*cdf0e10cSrcweir { 2783*cdf0e10cSrcweir nBulletWidth = rFmt.IsShowSymbol() ? lcl_DrawGraphic(pVDev, rFmt, 2784*cdf0e10cSrcweir nNumberXPos, 2785*cdf0e10cSrcweir nYStart, nWidthRelation) : 0; 2786*cdf0e10cSrcweir } 2787*cdf0e10cSrcweir else if( SVX_NUM_CHAR_SPECIAL == rFmt.GetNumberingType() ) 2788*cdf0e10cSrcweir { 2789*cdf0e10cSrcweir nBulletWidth = rFmt.IsShowSymbol() ? 2790*cdf0e10cSrcweir lcl_DrawBullet(pVDev, rFmt, nNumberXPos, nYStart, aStdFont.GetSize()) : 0; 2791*cdf0e10cSrcweir } 2792*cdf0e10cSrcweir else 2793*cdf0e10cSrcweir { 2794*cdf0e10cSrcweir pVDev->SetFont(aStdFont); 2795*cdf0e10cSrcweir aNum.SetLevel( nLevel ); 2796*cdf0e10cSrcweir if(pActNum->IsContinuousNumbering()) 2797*cdf0e10cSrcweir aNum.GetLevelVal()[nLevel] = nPreNum; 2798*cdf0e10cSrcweir String aText(pActNum->MakeNumString( aNum )); 2799*cdf0e10cSrcweir Font aSaveFont = pVDev->GetFont(); 2800*cdf0e10cSrcweir Font aColorFont(aSaveFont); 2801*cdf0e10cSrcweir Color aTmpBulletColor = rFmt.GetBulletColor(); 2802*cdf0e10cSrcweir if(aTmpBulletColor.GetColor() == COL_AUTO) 2803*cdf0e10cSrcweir aTmpBulletColor = Color(aBackColor.IsDark() ? COL_WHITE : COL_BLACK); 2804*cdf0e10cSrcweir else if(aTmpBulletColor == aBackColor) 2805*cdf0e10cSrcweir aTmpBulletColor.Invert(); 2806*cdf0e10cSrcweir aColorFont.SetColor(aTmpBulletColor); 2807*cdf0e10cSrcweir pVDev->SetFont(aColorFont); 2808*cdf0e10cSrcweir pVDev->DrawText( Point(nNumberXPos, nYStart), aText ); 2809*cdf0e10cSrcweir pVDev->SetFont(aSaveFont); 2810*cdf0e10cSrcweir nBulletWidth = (sal_uInt16)pVDev->GetTextWidth(aText); 2811*cdf0e10cSrcweir nPreNum++; 2812*cdf0e10cSrcweir } 2813*cdf0e10cSrcweir // --> OD 2008-01-16 #newlistlevelattrs# 2814*cdf0e10cSrcweir if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT && 2815*cdf0e10cSrcweir rFmt.GetLabelFollowedBy() == SvxNumberFormat::SPACE ) 2816*cdf0e10cSrcweir { 2817*cdf0e10cSrcweir pVDev->SetFont(aStdFont); 2818*cdf0e10cSrcweir String aText(' '); 2819*cdf0e10cSrcweir pVDev->DrawText( Point(nNumberXPos, nYStart), aText ); 2820*cdf0e10cSrcweir nBulletWidth = nBulletWidth + (sal_uInt16)pVDev->GetTextWidth(aText); 2821*cdf0e10cSrcweir } 2822*cdf0e10cSrcweir 2823*cdf0e10cSrcweir // --> OD 2008-01-16 #newlistlevelattrs# 2824*cdf0e10cSrcweir sal_uInt16 nTextXPos( 0 ); 2825*cdf0e10cSrcweir if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION ) 2826*cdf0e10cSrcweir { 2827*cdf0e10cSrcweir nTextXPos = nXStart; 2828*cdf0e10cSrcweir if(nTextOffset < 0) 2829*cdf0e10cSrcweir nTextXPos = nTextXPos + nTextOffset; 2830*cdf0e10cSrcweir if(nNumberXPos + nBulletWidth + nTextOffset > nTextXPos ) 2831*cdf0e10cSrcweir nTextXPos = nNumberXPos + nBulletWidth + nTextOffset; 2832*cdf0e10cSrcweir } 2833*cdf0e10cSrcweir else if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT ) 2834*cdf0e10cSrcweir { 2835*cdf0e10cSrcweir switch ( rFmt.GetLabelFollowedBy() ) 2836*cdf0e10cSrcweir { 2837*cdf0e10cSrcweir case SvxNumberFormat::LISTTAB: 2838*cdf0e10cSrcweir { 2839*cdf0e10cSrcweir nTextXPos = static_cast<sal_uInt16>( 2840*cdf0e10cSrcweir rFmt.GetListtabPos() / nWidthRelation ); 2841*cdf0e10cSrcweir if ( nTextXPos < nNumberXPos + nBulletWidth ) 2842*cdf0e10cSrcweir { 2843*cdf0e10cSrcweir nTextXPos = nNumberXPos + nBulletWidth; 2844*cdf0e10cSrcweir } 2845*cdf0e10cSrcweir } 2846*cdf0e10cSrcweir break; 2847*cdf0e10cSrcweir case SvxNumberFormat::SPACE: 2848*cdf0e10cSrcweir case SvxNumberFormat::NOTHING: 2849*cdf0e10cSrcweir { 2850*cdf0e10cSrcweir nTextXPos = nNumberXPos + nBulletWidth; 2851*cdf0e10cSrcweir } 2852*cdf0e10cSrcweir break; 2853*cdf0e10cSrcweir } 2854*cdf0e10cSrcweir 2855*cdf0e10cSrcweir nXStart = static_cast<sal_uInt16>( rFmt.GetIndentAt() / nWidthRelation ); 2856*cdf0e10cSrcweir } 2857*cdf0e10cSrcweir // <-- 2858*cdf0e10cSrcweir 2859*cdf0e10cSrcweir Rectangle aRect1(Point(nTextXPos, nYStart + nFontHeight / 2), Size(aSize.Width() / 2, 2)); 2860*cdf0e10cSrcweir pVDev->SetFillColor( aBackColor ); 2861*cdf0e10cSrcweir pVDev->DrawRect( aRect1 ); 2862*cdf0e10cSrcweir 2863*cdf0e10cSrcweir Rectangle aRect2(Point(nXStart, nYStart + nLineHeight + nFontHeight / 2 ), Size(aSize.Width() / 2, 2)); 2864*cdf0e10cSrcweir pVDev->DrawRect( aRect2 ); 2865*cdf0e10cSrcweir nYStart += 2 * nLineHeight; 2866*cdf0e10cSrcweir } 2867*cdf0e10cSrcweir } 2868*cdf0e10cSrcweir else 2869*cdf0e10cSrcweir { 2870*cdf0e10cSrcweir //#i5153# painting gray or black rectangles as 'normal' numbering text 2871*cdf0e10cSrcweir String sMsg( RTL_CONSTASCII_USTRINGPARAM( "Preview") ); 2872*cdf0e10cSrcweir long nWidth = pVDev->GetTextWidth(sMsg); 2873*cdf0e10cSrcweir long nTextHeight = pVDev->GetTextHeight(); 2874*cdf0e10cSrcweir long nRectHeight = nTextHeight * 2 / 3; 2875*cdf0e10cSrcweir long nTopOffset = nTextHeight - nRectHeight; 2876*cdf0e10cSrcweir Color aBlackColor(COL_BLACK); 2877*cdf0e10cSrcweir if(aBlackColor == aBackColor) 2878*cdf0e10cSrcweir aBlackColor.Invert(); 2879*cdf0e10cSrcweir 2880*cdf0e10cSrcweir for( sal_uInt8 nLevel = 0; nLevel < pActNum->GetLevelCount(); 2881*cdf0e10cSrcweir ++nLevel, nYStart = nYStart + nYStep ) 2882*cdf0e10cSrcweir { 2883*cdf0e10cSrcweir const SvxNumberFormat &rFmt = pActNum->GetLevel(nLevel); 2884*cdf0e10cSrcweir aNum.GetLevelVal()[ nLevel ] = rFmt.GetStart(); 2885*cdf0e10cSrcweir // --> OD 2008-01-31 #newlistlevelattrs# 2886*cdf0e10cSrcweir sal_uInt16 nXStart( 0 ); 2887*cdf0e10cSrcweir if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION ) 2888*cdf0e10cSrcweir { 2889*cdf0e10cSrcweir nXStart = rFmt.GetAbsLSpace() / nWidthRelation; 2890*cdf0e10cSrcweir } 2891*cdf0e10cSrcweir else if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT ) 2892*cdf0e10cSrcweir { 2893*cdf0e10cSrcweir const long nTmpXStart( ( rFmt.GetIndentAt() + 2894*cdf0e10cSrcweir rFmt.GetFirstLineIndent() ) / 2895*cdf0e10cSrcweir nWidthRelation ); 2896*cdf0e10cSrcweir if ( nTmpXStart < 0 ) 2897*cdf0e10cSrcweir { 2898*cdf0e10cSrcweir nXStart = 0; 2899*cdf0e10cSrcweir } 2900*cdf0e10cSrcweir else 2901*cdf0e10cSrcweir { 2902*cdf0e10cSrcweir nXStart = static_cast<sal_uInt16>(nTmpXStart); 2903*cdf0e10cSrcweir } 2904*cdf0e10cSrcweir } 2905*cdf0e10cSrcweir nXStart /= 2; 2906*cdf0e10cSrcweir nXStart += 2; 2907*cdf0e10cSrcweir // <-- 2908*cdf0e10cSrcweir sal_uInt16 nTextOffset = 2 * nXStep; 2909*cdf0e10cSrcweir if( SVX_NUM_BITMAP == (rFmt.GetNumberingType()&(~LINK_TOKEN)) ) 2910*cdf0e10cSrcweir { 2911*cdf0e10cSrcweir if(rFmt.IsShowSymbol()) 2912*cdf0e10cSrcweir { 2913*cdf0e10cSrcweir nTextOffset = lcl_DrawGraphic(pVDev, rFmt, nXStart, nYStart, nWidthRelation); 2914*cdf0e10cSrcweir nTextOffset = nTextOffset + nXStep; 2915*cdf0e10cSrcweir } 2916*cdf0e10cSrcweir } 2917*cdf0e10cSrcweir else if( SVX_NUM_CHAR_SPECIAL == rFmt.GetNumberingType() ) 2918*cdf0e10cSrcweir { 2919*cdf0e10cSrcweir if(rFmt.IsShowSymbol()) 2920*cdf0e10cSrcweir { 2921*cdf0e10cSrcweir nTextOffset = lcl_DrawBullet(pVDev, rFmt, nXStart, nYStart, aStdFont.GetSize()); 2922*cdf0e10cSrcweir nTextOffset = nTextOffset + nXStep; 2923*cdf0e10cSrcweir } 2924*cdf0e10cSrcweir } 2925*cdf0e10cSrcweir else 2926*cdf0e10cSrcweir { 2927*cdf0e10cSrcweir Font aColorFont(aStdFont); 2928*cdf0e10cSrcweir Color aTmpBulletColor = rFmt.GetBulletColor(); 2929*cdf0e10cSrcweir if(aTmpBulletColor.GetColor() == COL_AUTO) 2930*cdf0e10cSrcweir aTmpBulletColor = Color(aBackColor.IsDark() ? COL_WHITE : COL_BLACK); 2931*cdf0e10cSrcweir else if(aTmpBulletColor == aBackColor) 2932*cdf0e10cSrcweir aTmpBulletColor.Invert(); 2933*cdf0e10cSrcweir aColorFont.SetColor(aTmpBulletColor); 2934*cdf0e10cSrcweir pVDev->SetFont(aColorFont); 2935*cdf0e10cSrcweir aNum.SetLevel( nLevel ); 2936*cdf0e10cSrcweir if(pActNum->IsContinuousNumbering()) 2937*cdf0e10cSrcweir aNum.GetLevelVal()[nLevel] = nPreNum; 2938*cdf0e10cSrcweir String aText(pActNum->MakeNumString( aNum )); 2939*cdf0e10cSrcweir pVDev->DrawText( Point(nXStart, nYStart), aText ); 2940*cdf0e10cSrcweir pVDev->SetFont(aStdFont); 2941*cdf0e10cSrcweir nTextOffset = (sal_uInt16)pVDev->GetTextWidth(aText); 2942*cdf0e10cSrcweir nTextOffset = nTextOffset + nXStep; 2943*cdf0e10cSrcweir nPreNum++; 2944*cdf0e10cSrcweir } 2945*cdf0e10cSrcweir if(pOutlineNames) 2946*cdf0e10cSrcweir { 2947*cdf0e10cSrcweir //#i5153# outline numberings still use the style names as text 2948*cdf0e10cSrcweir pVDev->SetFont(aStdFont); 2949*cdf0e10cSrcweir sMsg = pOutlineNames[nLevel]; 2950*cdf0e10cSrcweir pVDev->DrawText( Point(nXStart + nTextOffset, nYStart), sMsg ); 2951*cdf0e10cSrcweir } 2952*cdf0e10cSrcweir else 2953*cdf0e10cSrcweir { 2954*cdf0e10cSrcweir //#i5153# the selected rectangle(s) should be black 2955*cdf0e10cSrcweir if( 0 != (nActLevel & (1<<nLevel))) 2956*cdf0e10cSrcweir { 2957*cdf0e10cSrcweir pVDev->SetFillColor( aBlackColor ); 2958*cdf0e10cSrcweir pVDev->SetLineColor( aBlackColor ); 2959*cdf0e10cSrcweir } 2960*cdf0e10cSrcweir else 2961*cdf0e10cSrcweir { 2962*cdf0e10cSrcweir //#i5153# unselected levels are gray 2963*cdf0e10cSrcweir pVDev->SetFillColor( aLineColor ); 2964*cdf0e10cSrcweir pVDev->SetLineColor( aLineColor ); 2965*cdf0e10cSrcweir } 2966*cdf0e10cSrcweir Rectangle aRect1(Point(nXStart + nTextOffset, nYStart + nTopOffset), Size(nWidth, nRectHeight)); 2967*cdf0e10cSrcweir pVDev->DrawRect(aRect1); 2968*cdf0e10cSrcweir } 2969*cdf0e10cSrcweir } 2970*cdf0e10cSrcweir } 2971*cdf0e10cSrcweir } 2972*cdf0e10cSrcweir DrawOutDev( Point(0,0), aSize, 2973*cdf0e10cSrcweir Point(0,0), aSize, 2974*cdf0e10cSrcweir *pVDev ); 2975*cdf0e10cSrcweir delete pVDev; 2976*cdf0e10cSrcweir 2977*cdf0e10cSrcweir } 2978*cdf0e10cSrcweir 2979*cdf0e10cSrcweir /*-----------------03.12.97 10:02------------------- 2980*cdf0e10cSrcweir 2981*cdf0e10cSrcweir --------------------------------------------------*/ 2982*cdf0e10cSrcweir SvxNumPositionTabPage::SvxNumPositionTabPage(Window* pParent, 2983*cdf0e10cSrcweir const SfxItemSet& rSet) : 2984*cdf0e10cSrcweir SfxTabPage( pParent, CUI_RES( RID_SVXPAGE_NUM_POSITION ), rSet ), 2985*cdf0e10cSrcweir aPositionFL( this, CUI_RES(FL_POSITION )), 2986*cdf0e10cSrcweir aLevelFT( this, CUI_RES(FT_LEVEL )), 2987*cdf0e10cSrcweir aLevelLB( this, CUI_RES(LB_LEVEL )), 2988*cdf0e10cSrcweir aDistBorderFT( this, CUI_RES(FT_BORDERDIST )), 2989*cdf0e10cSrcweir aDistBorderMF( this, CUI_RES(MF_BORDERDIST )), 2990*cdf0e10cSrcweir aRelativeCB( this, CUI_RES(CB_RELATIVE )), 2991*cdf0e10cSrcweir aIndentFT( this, CUI_RES(FT_INDENT )), 2992*cdf0e10cSrcweir aIndentMF( this, CUI_RES(MF_INDENT )), 2993*cdf0e10cSrcweir aDistNumFT( this, CUI_RES(FT_NUMDIST )), 2994*cdf0e10cSrcweir aDistNumMF( this, CUI_RES(MF_NUMDIST )), 2995*cdf0e10cSrcweir aAlignFT( this, CUI_RES(FT_ALIGN )), 2996*cdf0e10cSrcweir aAlignLB( this, CUI_RES(LB_ALIGN )), 2997*cdf0e10cSrcweir // --> OD 2008-01-10 #newlistlevelattrs# 2998*cdf0e10cSrcweir aLabelFollowedByFT( this, CUI_RES(FT_LABEL_FOLLOWED_BY) ), 2999*cdf0e10cSrcweir aLabelFollowedByLB( this, CUI_RES(LB_LABEL_FOLLOWED_BY) ), 3000*cdf0e10cSrcweir aListtabFT( this, CUI_RES(FT_LISTTAB) ), 3001*cdf0e10cSrcweir aListtabMF( this, CUI_RES(MF_LISTTAB) ), 3002*cdf0e10cSrcweir aAlign2FT( this, CUI_RES(FT_ALIGN_2) ), 3003*cdf0e10cSrcweir aAlign2LB( this, CUI_RES(LB_ALIGN_2) ), 3004*cdf0e10cSrcweir aAlignedAtFT( this, CUI_RES(FT_ALIGNED_AT) ), 3005*cdf0e10cSrcweir aAlignedAtMF( this, CUI_RES(MF_ALIGNED_AT) ), 3006*cdf0e10cSrcweir aIndentAtFT( this, CUI_RES(FT_INDENT_AT) ), 3007*cdf0e10cSrcweir aIndentAtMF( this, CUI_RES(MF_INDENT_AT) ), 3008*cdf0e10cSrcweir // <-- 3009*cdf0e10cSrcweir aStandardPB( this, CUI_RES(PB_STANDARD )), 3010*cdf0e10cSrcweir pPreviewWIN( new SvxNumberingPreview(this, CUI_RES(WIN_PREVIEW ))), 3011*cdf0e10cSrcweir pActNum(0), 3012*cdf0e10cSrcweir pSaveNum(0), 3013*cdf0e10cSrcweir nActNumLvl( USHRT_MAX ), 3014*cdf0e10cSrcweir nNumItemId(SID_ATTR_NUMBERING_RULE), 3015*cdf0e10cSrcweir bModified(false), 3016*cdf0e10cSrcweir bPreset(false), 3017*cdf0e10cSrcweir bInInintControl(sal_False), 3018*cdf0e10cSrcweir // --> OD 2008-01-11 #newlistlevelattrs# 3019*cdf0e10cSrcweir bLabelAlignmentPosAndSpaceModeActive( false ) 3020*cdf0e10cSrcweir // <-- 3021*cdf0e10cSrcweir { 3022*cdf0e10cSrcweir FreeResource(); 3023*cdf0e10cSrcweir SetExchangeSupport(); 3024*cdf0e10cSrcweir pPreviewWIN->SetBackground(Wallpaper(Color(COL_TRANSPARENT))); 3025*cdf0e10cSrcweir 3026*cdf0e10cSrcweir aRelativeCB.Check(); 3027*cdf0e10cSrcweir aAlignLB.SetSelectHdl(LINK(this, SvxNumPositionTabPage, EditModifyHdl_Impl)); 3028*cdf0e10cSrcweir // --> OD 2008-01-10 #newlistlevelattrs# 3029*cdf0e10cSrcweir aAlign2LB.SetSelectHdl(LINK(this, SvxNumPositionTabPage, EditModifyHdl_Impl)); 3030*cdf0e10cSrcweir for ( sal_uInt16 i = 0; i < aAlignLB.GetEntryCount(); ++i ) 3031*cdf0e10cSrcweir { 3032*cdf0e10cSrcweir aAlign2LB.InsertEntry( aAlignLB.GetEntry( i ) ); 3033*cdf0e10cSrcweir } 3034*cdf0e10cSrcweir aAlign2LB.SetDropDownLineCount( aAlign2LB.GetEntryCount() ); 3035*cdf0e10cSrcweir aAlign2FT.SetText( aAlignFT.GetText() ); 3036*cdf0e10cSrcweir // <-- 3037*cdf0e10cSrcweir 3038*cdf0e10cSrcweir Link aLk = LINK(this, SvxNumPositionTabPage, DistanceHdl_Impl); 3039*cdf0e10cSrcweir 3040*cdf0e10cSrcweir aDistBorderMF.SetUpHdl(aLk); 3041*cdf0e10cSrcweir aDistBorderMF.SetDownHdl(aLk); 3042*cdf0e10cSrcweir aDistBorderMF.SetLoseFocusHdl(aLk); 3043*cdf0e10cSrcweir 3044*cdf0e10cSrcweir aDistNumMF.SetUpHdl(aLk); 3045*cdf0e10cSrcweir aDistNumMF.SetDownHdl(aLk); 3046*cdf0e10cSrcweir aDistNumMF.SetLoseFocusHdl(aLk); 3047*cdf0e10cSrcweir 3048*cdf0e10cSrcweir aIndentMF.SetUpHdl(aLk); 3049*cdf0e10cSrcweir aIndentMF.SetDownHdl(aLk); 3050*cdf0e10cSrcweir aIndentMF.SetLoseFocusHdl(aLk); 3051*cdf0e10cSrcweir 3052*cdf0e10cSrcweir // --> OD 2008-01-10 #newlistlevelattrs# 3053*cdf0e10cSrcweir aLabelFollowedByLB.SetDropDownLineCount( aLabelFollowedByLB.GetEntryCount() ); 3054*cdf0e10cSrcweir aLabelFollowedByLB.SetSelectHdl( LINK(this, SvxNumPositionTabPage, LabelFollowedByHdl_Impl) ); 3055*cdf0e10cSrcweir 3056*cdf0e10cSrcweir aLk = LINK(this, SvxNumPositionTabPage, ListtabPosHdl_Impl); 3057*cdf0e10cSrcweir aListtabMF.SetUpHdl(aLk); 3058*cdf0e10cSrcweir aListtabMF.SetDownHdl(aLk); 3059*cdf0e10cSrcweir aListtabMF.SetLoseFocusHdl(aLk); 3060*cdf0e10cSrcweir 3061*cdf0e10cSrcweir aLk = LINK(this, SvxNumPositionTabPage, AlignAtHdl_Impl); 3062*cdf0e10cSrcweir aAlignedAtMF.SetUpHdl(aLk); 3063*cdf0e10cSrcweir aAlignedAtMF.SetDownHdl(aLk); 3064*cdf0e10cSrcweir aAlignedAtMF.SetLoseFocusHdl(aLk); 3065*cdf0e10cSrcweir 3066*cdf0e10cSrcweir aLk = LINK(this, SvxNumPositionTabPage, IndentAtHdl_Impl); 3067*cdf0e10cSrcweir aIndentAtMF.SetUpHdl(aLk); 3068*cdf0e10cSrcweir aIndentAtMF.SetDownHdl(aLk); 3069*cdf0e10cSrcweir aIndentAtMF.SetLoseFocusHdl(aLk); 3070*cdf0e10cSrcweir // <-- 3071*cdf0e10cSrcweir 3072*cdf0e10cSrcweir aLevelLB.SetSelectHdl(LINK(this, SvxNumPositionTabPage, LevelHdl_Impl)); 3073*cdf0e10cSrcweir aRelativeCB.SetClickHdl(LINK(this, SvxNumPositionTabPage, RelativeHdl_Impl)); 3074*cdf0e10cSrcweir aStandardPB.SetClickHdl(LINK(this, SvxNumPositionTabPage, StandardHdl_Impl)); 3075*cdf0e10cSrcweir 3076*cdf0e10cSrcweir 3077*cdf0e10cSrcweir aRelativeCB.Check(bLastRelative); 3078*cdf0e10cSrcweir pPreviewWIN->SetPositionMode(); 3079*cdf0e10cSrcweir eCoreUnit = rSet.GetPool()->GetMetric(rSet.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE)); 3080*cdf0e10cSrcweir 3081*cdf0e10cSrcweir //HACK("der Wert sollte mal sinnvol gesetzt werden") 3082*cdf0e10cSrcweir long nWidth = 10000; 3083*cdf0e10cSrcweir nWidth = OutputDevice::LogicToLogic( nWidth, 3084*cdf0e10cSrcweir (MapUnit)eCoreUnit, MAP_100TH_MM ); 3085*cdf0e10cSrcweir 3086*cdf0e10cSrcweir aDistBorderMF.SetMax(aDistBorderMF.Normalize( nWidth ), FUNIT_100TH_MM ); 3087*cdf0e10cSrcweir aDistNumMF .SetMax(aDistNumMF .Normalize( nWidth ), FUNIT_100TH_MM ); 3088*cdf0e10cSrcweir aIndentMF .SetMax(aIndentMF .Normalize( nWidth ), FUNIT_100TH_MM ); 3089*cdf0e10cSrcweir // --> OD 2008-02-18 #newlistlevelattrs# 3090*cdf0e10cSrcweir aListtabMF.SetMax(aListtabMF.Normalize( nWidth ), FUNIT_100TH_MM ); 3091*cdf0e10cSrcweir aAlignedAtMF.SetMax(aAlignedAtMF.Normalize( nWidth ), FUNIT_100TH_MM ); 3092*cdf0e10cSrcweir aIndentAtMF.SetMax(aIndentAtMF.Normalize( nWidth ), FUNIT_100TH_MM ); 3093*cdf0e10cSrcweir // <-- 3094*cdf0e10cSrcweir long nLast2 = nWidth /2; 3095*cdf0e10cSrcweir aDistBorderMF.SetLast( aDistBorderMF.Normalize( nLast2 ), FUNIT_100TH_MM ); 3096*cdf0e10cSrcweir aDistNumMF .SetLast( aDistNumMF .Normalize( nLast2 ), FUNIT_100TH_MM ); 3097*cdf0e10cSrcweir aIndentMF .SetLast( aIndentMF .Normalize( nLast2 ), FUNIT_100TH_MM ); 3098*cdf0e10cSrcweir // --> OD 2008-02-18 #newlistlevelattrs# 3099*cdf0e10cSrcweir aListtabMF.SetLast(aListtabMF.Normalize( nLast2 ), FUNIT_100TH_MM ); 3100*cdf0e10cSrcweir aAlignedAtMF.SetLast(aAlignedAtMF.Normalize( nLast2 ), FUNIT_100TH_MM ); 3101*cdf0e10cSrcweir aIndentAtMF.SetLast(aIndentAtMF.Normalize( nLast2 ), FUNIT_100TH_MM ); 3102*cdf0e10cSrcweir // <-- 3103*cdf0e10cSrcweir 3104*cdf0e10cSrcweir #if OSL_DEBUG_LEVEL > 1 3105*cdf0e10cSrcweir pDebugFixedText = new FixedText(this, 0); 3106*cdf0e10cSrcweir pDebugFixedText->Show(); 3107*cdf0e10cSrcweir Size aSize(200, 20); 3108*cdf0e10cSrcweir Point aPos(250,0); 3109*cdf0e10cSrcweir 3110*cdf0e10cSrcweir pDebugFixedText->SetPosSizePixel(aPos, aSize); 3111*cdf0e10cSrcweir pDebugFixedText->SetText( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "Das ist ein Debug-Text" ) ) ); 3112*cdf0e10cSrcweir #endif 3113*cdf0e10cSrcweir 3114*cdf0e10cSrcweir aStandardPB.SetAccessibleRelationMemberOf(&aPositionFL); 3115*cdf0e10cSrcweir } 3116*cdf0e10cSrcweir /*-----------------03.12.97 10:02------------------- 3117*cdf0e10cSrcweir 3118*cdf0e10cSrcweir --------------------------------------------------*/ 3119*cdf0e10cSrcweir SvxNumPositionTabPage::~SvxNumPositionTabPage() 3120*cdf0e10cSrcweir { 3121*cdf0e10cSrcweir delete pActNum; 3122*cdf0e10cSrcweir delete pPreviewWIN; 3123*cdf0e10cSrcweir delete pSaveNum; 3124*cdf0e10cSrcweir #if OSL_DEBUG_LEVEL > 1 3125*cdf0e10cSrcweir delete pDebugFixedText; 3126*cdf0e10cSrcweir #endif 3127*cdf0e10cSrcweir } 3128*cdf0e10cSrcweir /*-------------------------------------------------------*/ 3129*cdf0e10cSrcweir 3130*cdf0e10cSrcweir #if OSL_DEBUG_LEVEL > 1 3131*cdf0e10cSrcweir void lcl_PrintDebugOutput(FixedText& rFixed, const SvxNumberFormat& rNumFmt) 3132*cdf0e10cSrcweir { 3133*cdf0e10cSrcweir #define TWIP_TO_MM100(TWIP) ((TWIP) >= 0 ? (((TWIP)*127L+36L)/72L) : (((TWIP)*127L-36L)/72L)) 3134*cdf0e10cSrcweir 3135*cdf0e10cSrcweir sal_Char const sHash[] = " # "; 3136*cdf0e10cSrcweir if ( rNumFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION ) 3137*cdf0e10cSrcweir { 3138*cdf0e10cSrcweir String sDebugText( UniString::CreateFromInt32( TWIP_TO_MM100(rNumFmt.GetAbsLSpace() ) ) ); 3139*cdf0e10cSrcweir sDebugText.AppendAscii( RTL_CONSTASCII_STRINGPARAM( sHash ) ); 3140*cdf0e10cSrcweir sDebugText += UniString::CreateFromInt32( TWIP_TO_MM100(rNumFmt.GetCharTextDistance() ) ); 3141*cdf0e10cSrcweir sDebugText.AppendAscii( RTL_CONSTASCII_STRINGPARAM( sHash ) ); 3142*cdf0e10cSrcweir sDebugText += UniString::CreateFromInt32( TWIP_TO_MM100(rNumFmt.GetFirstLineOffset() ) ); 3143*cdf0e10cSrcweir rFixed.SetText(sDebugText); 3144*cdf0e10cSrcweir } 3145*cdf0e10cSrcweir else if ( rNumFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT ) 3146*cdf0e10cSrcweir { 3147*cdf0e10cSrcweir String sDebugText( UniString::CreateFromInt32( TWIP_TO_MM100(rNumFmt.GetListtabPos() ) ) ); 3148*cdf0e10cSrcweir sDebugText.AppendAscii( RTL_CONSTASCII_STRINGPARAM( sHash ) ); 3149*cdf0e10cSrcweir sDebugText += UniString::CreateFromInt32( TWIP_TO_MM100(rNumFmt.GetFirstLineIndent() ) ); 3150*cdf0e10cSrcweir sDebugText.AppendAscii( RTL_CONSTASCII_STRINGPARAM( sHash ) ); 3151*cdf0e10cSrcweir sDebugText += UniString::CreateFromInt32( TWIP_TO_MM100(rNumFmt.GetIndentAt() ) ); 3152*cdf0e10cSrcweir rFixed.SetText(sDebugText); 3153*cdf0e10cSrcweir } 3154*cdf0e10cSrcweir 3155*cdf0e10cSrcweir } 3156*cdf0e10cSrcweir #endif 3157*cdf0e10cSrcweir 3158*cdf0e10cSrcweir /*-----------------03.12.97 10:06------------------- 3159*cdf0e10cSrcweir 3160*cdf0e10cSrcweir --------------------------------------------------*/ 3161*cdf0e10cSrcweir void SvxNumPositionTabPage::InitControls() 3162*cdf0e10cSrcweir { 3163*cdf0e10cSrcweir bInInintControl = sal_True; 3164*cdf0e10cSrcweir // --> OD 2008-01-11 #newlistlevelattrs# 3165*cdf0e10cSrcweir const bool bRelative = !bLabelAlignmentPosAndSpaceModeActive && 3166*cdf0e10cSrcweir aRelativeCB.IsEnabled() && aRelativeCB.IsChecked(); 3167*cdf0e10cSrcweir // <-- 3168*cdf0e10cSrcweir const bool bSingleSelection = aLevelLB.GetSelectEntryCount() == 1 && 3169*cdf0e10cSrcweir USHRT_MAX != nActNumLvl; 3170*cdf0e10cSrcweir 3171*cdf0e10cSrcweir aDistBorderMF.Enable( !bLabelAlignmentPosAndSpaceModeActive && 3172*cdf0e10cSrcweir ( bSingleSelection || bRelative ) ); 3173*cdf0e10cSrcweir aDistBorderFT.Enable( !bLabelAlignmentPosAndSpaceModeActive && 3174*cdf0e10cSrcweir ( bSingleSelection || bRelative ) ); 3175*cdf0e10cSrcweir 3176*cdf0e10cSrcweir bool bSetDistEmpty = false; 3177*cdf0e10cSrcweir bool bSameDistBorderNum = !bLabelAlignmentPosAndSpaceModeActive; 3178*cdf0e10cSrcweir bool bSameDist = !bLabelAlignmentPosAndSpaceModeActive; 3179*cdf0e10cSrcweir bool bSameIndent = !bLabelAlignmentPosAndSpaceModeActive; 3180*cdf0e10cSrcweir bool bSameAdjust = true; 3181*cdf0e10cSrcweir 3182*cdf0e10cSrcweir // --> OD 2008-01-11 #newlistlevelattrs# 3183*cdf0e10cSrcweir bool bSameLabelFollowedBy = bLabelAlignmentPosAndSpaceModeActive; 3184*cdf0e10cSrcweir bool bSameListtab = bLabelAlignmentPosAndSpaceModeActive; 3185*cdf0e10cSrcweir bool bSameAlignAt = bLabelAlignmentPosAndSpaceModeActive; 3186*cdf0e10cSrcweir bool bSameIndentAt = bLabelAlignmentPosAndSpaceModeActive; 3187*cdf0e10cSrcweir // <-- 3188*cdf0e10cSrcweir 3189*cdf0e10cSrcweir const SvxNumberFormat* aNumFmtArr[SVX_MAX_NUM]; 3190*cdf0e10cSrcweir sal_uInt16 nMask = 1; 3191*cdf0e10cSrcweir sal_uInt16 nLvl = USHRT_MAX; 3192*cdf0e10cSrcweir long nFirstBorderText = 0; 3193*cdf0e10cSrcweir long nFirstBorderTextRelative = -1; 3194*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 3195*cdf0e10cSrcweir { 3196*cdf0e10cSrcweir aNumFmtArr[i] = &pActNum->GetLevel(i); 3197*cdf0e10cSrcweir if(nActNumLvl & nMask) 3198*cdf0e10cSrcweir { 3199*cdf0e10cSrcweir if(USHRT_MAX == nLvl) 3200*cdf0e10cSrcweir { 3201*cdf0e10cSrcweir nLvl = i; 3202*cdf0e10cSrcweir if ( !bLabelAlignmentPosAndSpaceModeActive ) 3203*cdf0e10cSrcweir { 3204*cdf0e10cSrcweir nFirstBorderText = nLvl > 0 ? 3205*cdf0e10cSrcweir aNumFmtArr[nLvl]->GetAbsLSpace() + aNumFmtArr[nLvl]->GetFirstLineOffset() - 3206*cdf0e10cSrcweir aNumFmtArr[nLvl - 1]->GetAbsLSpace() + aNumFmtArr[nLvl - 1]->GetFirstLineOffset(): 3207*cdf0e10cSrcweir aNumFmtArr[nLvl]->GetAbsLSpace() + aNumFmtArr[nLvl]->GetFirstLineOffset(); 3208*cdf0e10cSrcweir } 3209*cdf0e10cSrcweir } 3210*cdf0e10cSrcweir 3211*cdf0e10cSrcweir if( i > nLvl) 3212*cdf0e10cSrcweir { 3213*cdf0e10cSrcweir // --> OD 2008-01-11 #newlistlevelattrs# 3214*cdf0e10cSrcweir bSameAdjust &= aNumFmtArr[i]->GetNumAdjust() == aNumFmtArr[nLvl]->GetNumAdjust(); 3215*cdf0e10cSrcweir if ( !bLabelAlignmentPosAndSpaceModeActive ) 3216*cdf0e10cSrcweir { 3217*cdf0e10cSrcweir if(bRelative) 3218*cdf0e10cSrcweir { 3219*cdf0e10cSrcweir if(nFirstBorderTextRelative == -1) 3220*cdf0e10cSrcweir nFirstBorderTextRelative = 3221*cdf0e10cSrcweir (aNumFmtArr[i]->GetAbsLSpace() + aNumFmtArr[i]->GetFirstLineOffset() - 3222*cdf0e10cSrcweir aNumFmtArr[i - 1]->GetAbsLSpace() + aNumFmtArr[i - 1]->GetFirstLineOffset()); 3223*cdf0e10cSrcweir else 3224*cdf0e10cSrcweir bSameDistBorderNum &= nFirstBorderTextRelative == 3225*cdf0e10cSrcweir (aNumFmtArr[i]->GetAbsLSpace() + aNumFmtArr[i]->GetFirstLineOffset() - 3226*cdf0e10cSrcweir aNumFmtArr[i - 1]->GetAbsLSpace() + aNumFmtArr[i - 1]->GetFirstLineOffset()); 3227*cdf0e10cSrcweir } 3228*cdf0e10cSrcweir else 3229*cdf0e10cSrcweir bSameDistBorderNum &= 3230*cdf0e10cSrcweir aNumFmtArr[i]->GetAbsLSpace() - aNumFmtArr[i]->GetFirstLineOffset() == 3231*cdf0e10cSrcweir aNumFmtArr[i - 1]->GetAbsLSpace() - aNumFmtArr[i - 1]->GetFirstLineOffset(); 3232*cdf0e10cSrcweir 3233*cdf0e10cSrcweir bSameDist &= aNumFmtArr[i]->GetCharTextDistance() == aNumFmtArr[nLvl]->GetCharTextDistance(); 3234*cdf0e10cSrcweir bSameIndent &= aNumFmtArr[i]->GetFirstLineOffset() == aNumFmtArr[nLvl]->GetFirstLineOffset(); 3235*cdf0e10cSrcweir } 3236*cdf0e10cSrcweir else 3237*cdf0e10cSrcweir { 3238*cdf0e10cSrcweir bSameLabelFollowedBy &= 3239*cdf0e10cSrcweir aNumFmtArr[i]->GetLabelFollowedBy() == aNumFmtArr[nLvl]->GetLabelFollowedBy(); 3240*cdf0e10cSrcweir bSameListtab &= 3241*cdf0e10cSrcweir aNumFmtArr[i]->GetListtabPos() == aNumFmtArr[nLvl]->GetListtabPos(); 3242*cdf0e10cSrcweir bSameAlignAt &= 3243*cdf0e10cSrcweir ( ( aNumFmtArr[i]->GetIndentAt() + aNumFmtArr[i]->GetFirstLineIndent() ) 3244*cdf0e10cSrcweir == ( aNumFmtArr[nLvl]->GetIndentAt() + aNumFmtArr[nLvl]->GetFirstLineIndent() ) ); 3245*cdf0e10cSrcweir bSameIndentAt &= 3246*cdf0e10cSrcweir aNumFmtArr[i]->GetIndentAt() == aNumFmtArr[nLvl]->GetIndentAt(); 3247*cdf0e10cSrcweir } 3248*cdf0e10cSrcweir // <-- 3249*cdf0e10cSrcweir } 3250*cdf0e10cSrcweir } 3251*cdf0e10cSrcweir nMask <<= 1; 3252*cdf0e10cSrcweir 3253*cdf0e10cSrcweir } 3254*cdf0e10cSrcweir if(bSameDistBorderNum) 3255*cdf0e10cSrcweir { 3256*cdf0e10cSrcweir long nDistBorderNum; 3257*cdf0e10cSrcweir if(bRelative) 3258*cdf0e10cSrcweir { 3259*cdf0e10cSrcweir nDistBorderNum = (long)aNumFmtArr[nLvl]->GetAbsLSpace()+ aNumFmtArr[nLvl]->GetFirstLineOffset(); 3260*cdf0e10cSrcweir if(nLvl) 3261*cdf0e10cSrcweir nDistBorderNum -= (long)aNumFmtArr[nLvl - 1]->GetAbsLSpace()+ aNumFmtArr[nLvl - 1]->GetFirstLineOffset(); 3262*cdf0e10cSrcweir } 3263*cdf0e10cSrcweir else 3264*cdf0e10cSrcweir { 3265*cdf0e10cSrcweir nDistBorderNum = (long)aNumFmtArr[nLvl]->GetAbsLSpace()+ aNumFmtArr[nLvl]->GetFirstLineOffset(); 3266*cdf0e10cSrcweir } 3267*cdf0e10cSrcweir SetMetricValue(aDistBorderMF, nDistBorderNum, eCoreUnit); 3268*cdf0e10cSrcweir } 3269*cdf0e10cSrcweir else 3270*cdf0e10cSrcweir bSetDistEmpty = true; 3271*cdf0e10cSrcweir 3272*cdf0e10cSrcweir #if OSL_DEBUG_LEVEL > 1 3273*cdf0e10cSrcweir lcl_PrintDebugOutput(*pDebugFixedText, *aNumFmtArr[nLvl]); 3274*cdf0e10cSrcweir #endif 3275*cdf0e10cSrcweir 3276*cdf0e10cSrcweir const String aEmptyStr; 3277*cdf0e10cSrcweir if(bSameDist) 3278*cdf0e10cSrcweir SetMetricValue(aDistNumMF, aNumFmtArr[nLvl]->GetCharTextDistance(), eCoreUnit); 3279*cdf0e10cSrcweir else 3280*cdf0e10cSrcweir aDistNumMF.SetText(aEmptyStr); 3281*cdf0e10cSrcweir if(bSameIndent) 3282*cdf0e10cSrcweir SetMetricValue(aIndentMF, - aNumFmtArr[nLvl]->GetFirstLineOffset(), eCoreUnit); 3283*cdf0e10cSrcweir else 3284*cdf0e10cSrcweir aIndentMF.SetText(aEmptyStr); 3285*cdf0e10cSrcweir 3286*cdf0e10cSrcweir if(bSameAdjust) 3287*cdf0e10cSrcweir { 3288*cdf0e10cSrcweir sal_uInt16 nPos = 1; // zentriert 3289*cdf0e10cSrcweir if(aNumFmtArr[nLvl]->GetNumAdjust() == SVX_ADJUST_LEFT) 3290*cdf0e10cSrcweir nPos = 0; 3291*cdf0e10cSrcweir else if(aNumFmtArr[nLvl]->GetNumAdjust() == SVX_ADJUST_RIGHT) 3292*cdf0e10cSrcweir nPos = 2; 3293*cdf0e10cSrcweir aAlignLB.SelectEntryPos(nPos); 3294*cdf0e10cSrcweir // --> OD 2008-01-11 #newlistlevelattrs# 3295*cdf0e10cSrcweir aAlign2LB.SelectEntryPos( nPos ); 3296*cdf0e10cSrcweir // <-- 3297*cdf0e10cSrcweir } 3298*cdf0e10cSrcweir else 3299*cdf0e10cSrcweir { 3300*cdf0e10cSrcweir aAlignLB.SetNoSelection(); 3301*cdf0e10cSrcweir // --> OD 2008-01-11 #newlistlevelattrs# 3302*cdf0e10cSrcweir aAlign2LB.SetNoSelection(); 3303*cdf0e10cSrcweir // <-- 3304*cdf0e10cSrcweir } 3305*cdf0e10cSrcweir 3306*cdf0e10cSrcweir // --> OD 2008-01-11 #newlistlevelattrs# 3307*cdf0e10cSrcweir if ( bSameLabelFollowedBy ) 3308*cdf0e10cSrcweir { 3309*cdf0e10cSrcweir sal_uInt16 nPos = 0; // LISTTAB 3310*cdf0e10cSrcweir if ( aNumFmtArr[nLvl]->GetLabelFollowedBy() == SvxNumberFormat::SPACE ) 3311*cdf0e10cSrcweir { 3312*cdf0e10cSrcweir nPos = 1; 3313*cdf0e10cSrcweir } 3314*cdf0e10cSrcweir else if ( aNumFmtArr[nLvl]->GetLabelFollowedBy() == SvxNumberFormat::NOTHING ) 3315*cdf0e10cSrcweir { 3316*cdf0e10cSrcweir nPos = 2; 3317*cdf0e10cSrcweir } 3318*cdf0e10cSrcweir aLabelFollowedByLB.SelectEntryPos( nPos ); 3319*cdf0e10cSrcweir } 3320*cdf0e10cSrcweir else 3321*cdf0e10cSrcweir { 3322*cdf0e10cSrcweir aLabelFollowedByLB.SetNoSelection(); 3323*cdf0e10cSrcweir } 3324*cdf0e10cSrcweir 3325*cdf0e10cSrcweir if ( aNumFmtArr[nLvl]->GetLabelFollowedBy() == SvxNumberFormat::LISTTAB ) 3326*cdf0e10cSrcweir { 3327*cdf0e10cSrcweir aListtabFT.Enable( true ); 3328*cdf0e10cSrcweir aListtabMF.Enable( true ); 3329*cdf0e10cSrcweir if ( bSameListtab ) 3330*cdf0e10cSrcweir { 3331*cdf0e10cSrcweir SetMetricValue( aListtabMF, aNumFmtArr[nLvl]->GetListtabPos(), eCoreUnit ); 3332*cdf0e10cSrcweir } 3333*cdf0e10cSrcweir else 3334*cdf0e10cSrcweir { 3335*cdf0e10cSrcweir aListtabMF.SetText(aEmptyStr); 3336*cdf0e10cSrcweir } 3337*cdf0e10cSrcweir } 3338*cdf0e10cSrcweir else 3339*cdf0e10cSrcweir { 3340*cdf0e10cSrcweir aListtabFT.Enable( false ); 3341*cdf0e10cSrcweir aListtabMF.Enable( false ); 3342*cdf0e10cSrcweir aListtabMF.SetText(aEmptyStr); 3343*cdf0e10cSrcweir } 3344*cdf0e10cSrcweir 3345*cdf0e10cSrcweir if ( bSameAlignAt ) 3346*cdf0e10cSrcweir { 3347*cdf0e10cSrcweir SetMetricValue( aAlignedAtMF, 3348*cdf0e10cSrcweir aNumFmtArr[nLvl]->GetIndentAt() + aNumFmtArr[nLvl]->GetFirstLineIndent(), 3349*cdf0e10cSrcweir eCoreUnit ); 3350*cdf0e10cSrcweir } 3351*cdf0e10cSrcweir else 3352*cdf0e10cSrcweir { 3353*cdf0e10cSrcweir aAlignedAtMF.SetText(aEmptyStr); 3354*cdf0e10cSrcweir } 3355*cdf0e10cSrcweir 3356*cdf0e10cSrcweir if ( bSameIndentAt ) 3357*cdf0e10cSrcweir { 3358*cdf0e10cSrcweir SetMetricValue( aIndentAtMF, aNumFmtArr[nLvl]->GetIndentAt(), eCoreUnit ); 3359*cdf0e10cSrcweir } 3360*cdf0e10cSrcweir else 3361*cdf0e10cSrcweir { 3362*cdf0e10cSrcweir aIndentAtMF.SetText(aEmptyStr); 3363*cdf0e10cSrcweir } 3364*cdf0e10cSrcweir // <-- 3365*cdf0e10cSrcweir 3366*cdf0e10cSrcweir if ( bSetDistEmpty ) 3367*cdf0e10cSrcweir aDistBorderMF.SetText(aEmptyStr); 3368*cdf0e10cSrcweir 3369*cdf0e10cSrcweir bInInintControl = sal_False; 3370*cdf0e10cSrcweir } 3371*cdf0e10cSrcweir 3372*cdf0e10cSrcweir /*-----------------03.12.97 10:02------------------- 3373*cdf0e10cSrcweir 3374*cdf0e10cSrcweir --------------------------------------------------*/ 3375*cdf0e10cSrcweir void SvxNumPositionTabPage::ActivatePage(const SfxItemSet& rSet) 3376*cdf0e10cSrcweir { 3377*cdf0e10cSrcweir const SfxPoolItem* pItem; 3378*cdf0e10cSrcweir sal_uInt16 nTmpNumLvl = USHRT_MAX; 3379*cdf0e10cSrcweir const SfxItemSet* pExampleSet = GetTabDialog()->GetExampleSet(); 3380*cdf0e10cSrcweir if(pExampleSet) 3381*cdf0e10cSrcweir { 3382*cdf0e10cSrcweir if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_NUM_PRESET, sal_False, &pItem)) 3383*cdf0e10cSrcweir bPreset = ((const SfxBoolItem*)pItem)->GetValue(); 3384*cdf0e10cSrcweir if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_CUR_NUM_LEVEL, sal_False, &pItem)) 3385*cdf0e10cSrcweir nTmpNumLvl = ((const SfxUInt16Item*)pItem)->GetValue(); 3386*cdf0e10cSrcweir } 3387*cdf0e10cSrcweir // 3388*cdf0e10cSrcweir if(SFX_ITEM_SET == rSet.GetItemState(nNumItemId, sal_False, &pItem)) 3389*cdf0e10cSrcweir { 3390*cdf0e10cSrcweir delete pSaveNum; 3391*cdf0e10cSrcweir pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule()); 3392*cdf0e10cSrcweir } 3393*cdf0e10cSrcweir bModified = (!pActNum->Get( 0 ) || bPreset); 3394*cdf0e10cSrcweir if(*pSaveNum != *pActNum || 3395*cdf0e10cSrcweir nActNumLvl != nTmpNumLvl ) 3396*cdf0e10cSrcweir { 3397*cdf0e10cSrcweir *pActNum = *pSaveNum; 3398*cdf0e10cSrcweir nActNumLvl = nTmpNumLvl; 3399*cdf0e10cSrcweir sal_uInt16 nMask = 1; 3400*cdf0e10cSrcweir aLevelLB.SetUpdateMode(sal_False); 3401*cdf0e10cSrcweir aLevelLB.SetNoSelection(); 3402*cdf0e10cSrcweir aLevelLB.SelectEntryPos( pActNum->GetLevelCount(), nActNumLvl == USHRT_MAX); 3403*cdf0e10cSrcweir if(nActNumLvl != USHRT_MAX) 3404*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 3405*cdf0e10cSrcweir { 3406*cdf0e10cSrcweir if(nActNumLvl & nMask) 3407*cdf0e10cSrcweir aLevelLB.SelectEntryPos( i, sal_True); 3408*cdf0e10cSrcweir nMask <<= 1 ; 3409*cdf0e10cSrcweir } 3410*cdf0e10cSrcweir aRelativeCB.Enable(nActNumLvl != 1); 3411*cdf0e10cSrcweir aLevelLB.SetUpdateMode(sal_True); 3412*cdf0e10cSrcweir 3413*cdf0e10cSrcweir // --> OD 2008-01-11 #newlistlevelattrs# 3414*cdf0e10cSrcweir InitPosAndSpaceMode(); 3415*cdf0e10cSrcweir ShowControlsDependingOnPosAndSpaceMode(); 3416*cdf0e10cSrcweir // <-- 3417*cdf0e10cSrcweir 3418*cdf0e10cSrcweir InitControls(); 3419*cdf0e10cSrcweir } 3420*cdf0e10cSrcweir pPreviewWIN->SetLevel(nActNumLvl); 3421*cdf0e10cSrcweir pPreviewWIN->Invalidate(); 3422*cdf0e10cSrcweir } 3423*cdf0e10cSrcweir 3424*cdf0e10cSrcweir /*-----------------03.12.97 10:02------------------- 3425*cdf0e10cSrcweir 3426*cdf0e10cSrcweir --------------------------------------------------*/ 3427*cdf0e10cSrcweir int SvxNumPositionTabPage::DeactivatePage(SfxItemSet *_pSet) 3428*cdf0e10cSrcweir { 3429*cdf0e10cSrcweir if(_pSet) 3430*cdf0e10cSrcweir FillItemSet(*_pSet); 3431*cdf0e10cSrcweir return sal_True; 3432*cdf0e10cSrcweir } 3433*cdf0e10cSrcweir 3434*cdf0e10cSrcweir /*-----------------03.12.97 10:02------------------- 3435*cdf0e10cSrcweir 3436*cdf0e10cSrcweir --------------------------------------------------*/ 3437*cdf0e10cSrcweir sal_Bool SvxNumPositionTabPage::FillItemSet( SfxItemSet& rSet ) 3438*cdf0e10cSrcweir { 3439*cdf0e10cSrcweir rSet.Put(SfxUInt16Item(SID_PARAM_CUR_NUM_LEVEL, nActNumLvl)); 3440*cdf0e10cSrcweir 3441*cdf0e10cSrcweir if(bModified && pActNum) 3442*cdf0e10cSrcweir { 3443*cdf0e10cSrcweir *pSaveNum = *pActNum; 3444*cdf0e10cSrcweir rSet.Put(SvxNumBulletItem( *pSaveNum ), nNumItemId); 3445*cdf0e10cSrcweir rSet.Put(SfxBoolItem(SID_PARAM_NUM_PRESET, sal_False)); 3446*cdf0e10cSrcweir } 3447*cdf0e10cSrcweir return bModified; 3448*cdf0e10cSrcweir } 3449*cdf0e10cSrcweir 3450*cdf0e10cSrcweir /*-----------------03.12.97 10:02------------------- 3451*cdf0e10cSrcweir 3452*cdf0e10cSrcweir --------------------------------------------------*/ 3453*cdf0e10cSrcweir void SvxNumPositionTabPage::Reset( const SfxItemSet& rSet ) 3454*cdf0e10cSrcweir { 3455*cdf0e10cSrcweir const SfxPoolItem* pItem; 3456*cdf0e10cSrcweir //im Draw gibt es das Item als WhichId, im Writer nur als SlotId 3457*cdf0e10cSrcweir SfxItemState eState = rSet.GetItemState(SID_ATTR_NUMBERING_RULE, sal_False, &pItem); 3458*cdf0e10cSrcweir if(eState != SFX_ITEM_SET) 3459*cdf0e10cSrcweir { 3460*cdf0e10cSrcweir nNumItemId = rSet.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE); 3461*cdf0e10cSrcweir eState = rSet.GetItemState(nNumItemId, sal_False, &pItem); 3462*cdf0e10cSrcweir 3463*cdf0e10cSrcweir if( eState != SFX_ITEM_SET ) 3464*cdf0e10cSrcweir { 3465*cdf0e10cSrcweir pItem = &static_cast< const SvxNumBulletItem& >( rSet.Get( nNumItemId, sal_True ) ); 3466*cdf0e10cSrcweir eState = SFX_ITEM_SET; 3467*cdf0e10cSrcweir } 3468*cdf0e10cSrcweir 3469*cdf0e10cSrcweir } 3470*cdf0e10cSrcweir DBG_ASSERT(eState == SFX_ITEM_SET, "kein Item gefunden!"); 3471*cdf0e10cSrcweir delete pSaveNum; 3472*cdf0e10cSrcweir pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule()); 3473*cdf0e10cSrcweir 3474*cdf0e10cSrcweir // Ebenen einfuegen 3475*cdf0e10cSrcweir if(!aLevelLB.GetEntryCount()) 3476*cdf0e10cSrcweir { 3477*cdf0e10cSrcweir for(sal_uInt16 i = 1; i <= pSaveNum->GetLevelCount(); i++) 3478*cdf0e10cSrcweir aLevelLB.InsertEntry(UniString::CreateFromInt32(i)); 3479*cdf0e10cSrcweir if(pSaveNum->GetLevelCount() > 1) 3480*cdf0e10cSrcweir { 3481*cdf0e10cSrcweir String sEntry( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "1 - ") ) ); 3482*cdf0e10cSrcweir sEntry.Append( UniString::CreateFromInt32( pSaveNum->GetLevelCount() ) ); 3483*cdf0e10cSrcweir aLevelLB.InsertEntry(sEntry); 3484*cdf0e10cSrcweir aLevelLB.SelectEntry(sEntry); 3485*cdf0e10cSrcweir } 3486*cdf0e10cSrcweir else 3487*cdf0e10cSrcweir aLevelLB.SelectEntryPos(0); 3488*cdf0e10cSrcweir } 3489*cdf0e10cSrcweir else 3490*cdf0e10cSrcweir aLevelLB.SelectEntryPos(aLevelLB.GetEntryCount() - 1); 3491*cdf0e10cSrcweir sal_uInt16 nMask = 1; 3492*cdf0e10cSrcweir aLevelLB.SetUpdateMode(sal_False); 3493*cdf0e10cSrcweir aLevelLB.SetNoSelection(); 3494*cdf0e10cSrcweir if(nActNumLvl == USHRT_MAX) 3495*cdf0e10cSrcweir { 3496*cdf0e10cSrcweir aLevelLB.SelectEntryPos( pSaveNum->GetLevelCount(), sal_True); 3497*cdf0e10cSrcweir } 3498*cdf0e10cSrcweir else 3499*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pSaveNum->GetLevelCount(); i++) 3500*cdf0e10cSrcweir { 3501*cdf0e10cSrcweir if(nActNumLvl & nMask) 3502*cdf0e10cSrcweir aLevelLB.SelectEntryPos( i, sal_True); 3503*cdf0e10cSrcweir nMask <<= 1; 3504*cdf0e10cSrcweir } 3505*cdf0e10cSrcweir aLevelLB.SetUpdateMode(sal_True); 3506*cdf0e10cSrcweir 3507*cdf0e10cSrcweir if(!pActNum) 3508*cdf0e10cSrcweir pActNum = new SvxNumRule(*pSaveNum); 3509*cdf0e10cSrcweir else if(*pSaveNum != *pActNum) 3510*cdf0e10cSrcweir *pActNum = *pSaveNum; 3511*cdf0e10cSrcweir pPreviewWIN->SetNumRule(pActNum); 3512*cdf0e10cSrcweir 3513*cdf0e10cSrcweir // --> OD 2008-01-11 #newlistlevelattrs# 3514*cdf0e10cSrcweir InitPosAndSpaceMode(); 3515*cdf0e10cSrcweir ShowControlsDependingOnPosAndSpaceMode(); 3516*cdf0e10cSrcweir // const sal_Bool bDraw = pActNum->IsFeatureSupported(NUM_CONTINUOUS); 3517*cdf0e10cSrcweir // aDistNumFT.Show(bDraw); 3518*cdf0e10cSrcweir // aDistNumMF.Show(bDraw); 3519*cdf0e10cSrcweir // <-- 3520*cdf0e10cSrcweir 3521*cdf0e10cSrcweir InitControls(); 3522*cdf0e10cSrcweir bModified = sal_False; 3523*cdf0e10cSrcweir } 3524*cdf0e10cSrcweir 3525*cdf0e10cSrcweir // --> OD 2008-01-11 #newlistlevelattrs# 3526*cdf0e10cSrcweir void SvxNumPositionTabPage::InitPosAndSpaceMode() 3527*cdf0e10cSrcweir { 3528*cdf0e10cSrcweir if ( pActNum == 0 ) 3529*cdf0e10cSrcweir { 3530*cdf0e10cSrcweir DBG_ASSERT( false, 3531*cdf0e10cSrcweir "<SvxNumPositionTabPage::InitPosAndSpaceMode()> - misusage of method -> <pAktNum> has to be already set!" ); 3532*cdf0e10cSrcweir return; 3533*cdf0e10cSrcweir } 3534*cdf0e10cSrcweir 3535*cdf0e10cSrcweir SvxNumberFormat::SvxNumPositionAndSpaceMode ePosAndSpaceMode = 3536*cdf0e10cSrcweir SvxNumberFormat::LABEL_ALIGNMENT; 3537*cdf0e10cSrcweir sal_uInt16 nMask = 1; 3538*cdf0e10cSrcweir for( sal_uInt16 i = 0; i < pActNum->GetLevelCount(); ++i ) 3539*cdf0e10cSrcweir { 3540*cdf0e10cSrcweir if(nActNumLvl & nMask) 3541*cdf0e10cSrcweir { 3542*cdf0e10cSrcweir SvxNumberFormat aNumFmt( pActNum->GetLevel(i) ); 3543*cdf0e10cSrcweir ePosAndSpaceMode = aNumFmt.GetPositionAndSpaceMode(); 3544*cdf0e10cSrcweir if ( ePosAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT ) 3545*cdf0e10cSrcweir { 3546*cdf0e10cSrcweir break; 3547*cdf0e10cSrcweir } 3548*cdf0e10cSrcweir } 3549*cdf0e10cSrcweir nMask <<= 1; 3550*cdf0e10cSrcweir } 3551*cdf0e10cSrcweir 3552*cdf0e10cSrcweir bLabelAlignmentPosAndSpaceModeActive = 3553*cdf0e10cSrcweir ePosAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT; 3554*cdf0e10cSrcweir } 3555*cdf0e10cSrcweir 3556*cdf0e10cSrcweir void SvxNumPositionTabPage::ShowControlsDependingOnPosAndSpaceMode() 3557*cdf0e10cSrcweir { 3558*cdf0e10cSrcweir aDistBorderFT.Show( !bLabelAlignmentPosAndSpaceModeActive ); 3559*cdf0e10cSrcweir aDistBorderMF.Show( !bLabelAlignmentPosAndSpaceModeActive ); 3560*cdf0e10cSrcweir aRelativeCB.Show( !bLabelAlignmentPosAndSpaceModeActive ); 3561*cdf0e10cSrcweir aIndentFT.Show( !bLabelAlignmentPosAndSpaceModeActive ); 3562*cdf0e10cSrcweir aIndentMF.Show( !bLabelAlignmentPosAndSpaceModeActive ); 3563*cdf0e10cSrcweir aDistNumFT.Show( !bLabelAlignmentPosAndSpaceModeActive && 3564*cdf0e10cSrcweir pActNum->IsFeatureSupported(NUM_CONTINUOUS) ); 3565*cdf0e10cSrcweir aDistNumMF.Show( !bLabelAlignmentPosAndSpaceModeActive && 3566*cdf0e10cSrcweir pActNum->IsFeatureSupported(NUM_CONTINUOUS)); 3567*cdf0e10cSrcweir aAlignFT.Show( !bLabelAlignmentPosAndSpaceModeActive ); 3568*cdf0e10cSrcweir aAlignLB.Show( !bLabelAlignmentPosAndSpaceModeActive ); 3569*cdf0e10cSrcweir 3570*cdf0e10cSrcweir aLabelFollowedByFT.Show( bLabelAlignmentPosAndSpaceModeActive ); 3571*cdf0e10cSrcweir aLabelFollowedByLB.Show( bLabelAlignmentPosAndSpaceModeActive ); 3572*cdf0e10cSrcweir aListtabFT.Show( bLabelAlignmentPosAndSpaceModeActive ); 3573*cdf0e10cSrcweir aListtabMF.Show( bLabelAlignmentPosAndSpaceModeActive ); 3574*cdf0e10cSrcweir aAlign2FT.Show( bLabelAlignmentPosAndSpaceModeActive ); 3575*cdf0e10cSrcweir aAlign2LB.Show( bLabelAlignmentPosAndSpaceModeActive ); 3576*cdf0e10cSrcweir aAlignedAtFT.Show( bLabelAlignmentPosAndSpaceModeActive ); 3577*cdf0e10cSrcweir aAlignedAtMF.Show( bLabelAlignmentPosAndSpaceModeActive ); 3578*cdf0e10cSrcweir aIndentAtFT.Show( bLabelAlignmentPosAndSpaceModeActive ); 3579*cdf0e10cSrcweir aIndentAtMF.Show( bLabelAlignmentPosAndSpaceModeActive ); 3580*cdf0e10cSrcweir } 3581*cdf0e10cSrcweir // <-- 3582*cdf0e10cSrcweir 3583*cdf0e10cSrcweir /*-----------------03.12.97 10:02------------------- 3584*cdf0e10cSrcweir 3585*cdf0e10cSrcweir --------------------------------------------------*/ 3586*cdf0e10cSrcweir SfxTabPage* SvxNumPositionTabPage::Create( Window* pParent, 3587*cdf0e10cSrcweir const SfxItemSet& rAttrSet) 3588*cdf0e10cSrcweir { 3589*cdf0e10cSrcweir return new SvxNumPositionTabPage(pParent, rAttrSet); 3590*cdf0e10cSrcweir } 3591*cdf0e10cSrcweir 3592*cdf0e10cSrcweir /*-----------------04.12.97 12:51------------------- 3593*cdf0e10cSrcweir 3594*cdf0e10cSrcweir --------------------------------------------------*/ 3595*cdf0e10cSrcweir void SvxNumPositionTabPage::SetMetric(FieldUnit eMetric) 3596*cdf0e10cSrcweir { 3597*cdf0e10cSrcweir if(eMetric == FUNIT_MM) 3598*cdf0e10cSrcweir { 3599*cdf0e10cSrcweir aDistBorderMF .SetDecimalDigits(1); 3600*cdf0e10cSrcweir aDistNumMF .SetDecimalDigits(1); 3601*cdf0e10cSrcweir aIndentMF .SetDecimalDigits(1); 3602*cdf0e10cSrcweir // --> OD 2008-02-18 #newlistlevelattrs# 3603*cdf0e10cSrcweir aListtabMF.SetDecimalDigits(1); 3604*cdf0e10cSrcweir aAlignedAtMF.SetDecimalDigits(1); 3605*cdf0e10cSrcweir aIndentAtMF.SetDecimalDigits(1); 3606*cdf0e10cSrcweir // <-- 3607*cdf0e10cSrcweir } 3608*cdf0e10cSrcweir aDistBorderMF .SetUnit( eMetric ); 3609*cdf0e10cSrcweir aDistNumMF .SetUnit( eMetric ); 3610*cdf0e10cSrcweir aIndentMF .SetUnit( eMetric ); 3611*cdf0e10cSrcweir // --> OD 2008-02-18 #newlistlevelattrs# 3612*cdf0e10cSrcweir aListtabMF.SetUnit( eMetric ); 3613*cdf0e10cSrcweir aAlignedAtMF.SetUnit( eMetric ); 3614*cdf0e10cSrcweir aIndentAtMF.SetUnit( eMetric ); 3615*cdf0e10cSrcweir // <-- 3616*cdf0e10cSrcweir } 3617*cdf0e10cSrcweir 3618*cdf0e10cSrcweir /*-----------------03.12.97 11:06------------------- 3619*cdf0e10cSrcweir 3620*cdf0e10cSrcweir --------------------------------------------------*/ 3621*cdf0e10cSrcweir IMPL_LINK( SvxNumPositionTabPage, EditModifyHdl_Impl, Edit *, EMPTYARG ) 3622*cdf0e10cSrcweir { 3623*cdf0e10cSrcweir sal_uInt16 nMask = 1; 3624*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 3625*cdf0e10cSrcweir { 3626*cdf0e10cSrcweir if(nActNumLvl & nMask) 3627*cdf0e10cSrcweir { 3628*cdf0e10cSrcweir SvxNumberFormat aNumFmt(pActNum->GetLevel(i)); 3629*cdf0e10cSrcweir 3630*cdf0e10cSrcweir // --> OD 2008-01-11 #newlistlevelattrs# 3631*cdf0e10cSrcweir const sal_uInt16 nPos = aAlignLB.IsVisible() 3632*cdf0e10cSrcweir ? aAlignLB.GetSelectEntryPos() 3633*cdf0e10cSrcweir : aAlign2LB.GetSelectEntryPos(); 3634*cdf0e10cSrcweir // <-- 3635*cdf0e10cSrcweir SvxAdjust eAdjust = SVX_ADJUST_CENTER; 3636*cdf0e10cSrcweir if(nPos == 0) 3637*cdf0e10cSrcweir eAdjust = SVX_ADJUST_LEFT; 3638*cdf0e10cSrcweir else if(nPos == 2) 3639*cdf0e10cSrcweir eAdjust = SVX_ADJUST_RIGHT; 3640*cdf0e10cSrcweir aNumFmt.SetNumAdjust( eAdjust ); 3641*cdf0e10cSrcweir pActNum->SetLevel(i, aNumFmt); 3642*cdf0e10cSrcweir } 3643*cdf0e10cSrcweir nMask <<= 1; 3644*cdf0e10cSrcweir } 3645*cdf0e10cSrcweir SetModified(); 3646*cdf0e10cSrcweir return 0; 3647*cdf0e10cSrcweir } 3648*cdf0e10cSrcweir /*-----------------03.12.97 11:11------------------- 3649*cdf0e10cSrcweir 3650*cdf0e10cSrcweir --------------------------------------------------*/ 3651*cdf0e10cSrcweir IMPL_LINK( SvxNumPositionTabPage, LevelHdl_Impl, ListBox *, pBox ) 3652*cdf0e10cSrcweir { 3653*cdf0e10cSrcweir sal_uInt16 nSaveNumLvl = nActNumLvl; 3654*cdf0e10cSrcweir nActNumLvl = 0; 3655*cdf0e10cSrcweir if(pBox->IsEntryPosSelected( pActNum->GetLevelCount() ) && 3656*cdf0e10cSrcweir (pBox->GetSelectEntryCount() == 1 || nSaveNumLvl != 0xffff)) 3657*cdf0e10cSrcweir { 3658*cdf0e10cSrcweir nActNumLvl = 0xFFFF; 3659*cdf0e10cSrcweir pBox->SetUpdateMode(sal_False); 3660*cdf0e10cSrcweir for( sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++ ) 3661*cdf0e10cSrcweir pBox->SelectEntryPos( i, sal_False ); 3662*cdf0e10cSrcweir pBox->SetUpdateMode(sal_True); 3663*cdf0e10cSrcweir } 3664*cdf0e10cSrcweir else if(pBox->GetSelectEntryCount()) 3665*cdf0e10cSrcweir { 3666*cdf0e10cSrcweir sal_uInt16 nMask = 1; 3667*cdf0e10cSrcweir for( sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++ ) 3668*cdf0e10cSrcweir { 3669*cdf0e10cSrcweir if(pBox->IsEntryPosSelected( i )) 3670*cdf0e10cSrcweir nActNumLvl |= nMask; 3671*cdf0e10cSrcweir nMask <<= 1; 3672*cdf0e10cSrcweir } 3673*cdf0e10cSrcweir pBox->SelectEntryPos( pActNum->GetLevelCount(), sal_False ); 3674*cdf0e10cSrcweir } 3675*cdf0e10cSrcweir else 3676*cdf0e10cSrcweir { 3677*cdf0e10cSrcweir nActNumLvl = nSaveNumLvl; 3678*cdf0e10cSrcweir sal_uInt16 nMask = 1; 3679*cdf0e10cSrcweir for( sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++ ) 3680*cdf0e10cSrcweir { 3681*cdf0e10cSrcweir if(nActNumLvl & nMask) 3682*cdf0e10cSrcweir { 3683*cdf0e10cSrcweir pBox->SelectEntryPos(i); 3684*cdf0e10cSrcweir break; 3685*cdf0e10cSrcweir } 3686*cdf0e10cSrcweir nMask <<=1; 3687*cdf0e10cSrcweir } 3688*cdf0e10cSrcweir } 3689*cdf0e10cSrcweir aRelativeCB.Enable(nActNumLvl != 1); 3690*cdf0e10cSrcweir SetModified(); 3691*cdf0e10cSrcweir // --> OD 2008-01-15 #newlistlevelattrs# 3692*cdf0e10cSrcweir InitPosAndSpaceMode(); 3693*cdf0e10cSrcweir ShowControlsDependingOnPosAndSpaceMode(); 3694*cdf0e10cSrcweir // <-- 3695*cdf0e10cSrcweir InitControls(); 3696*cdf0e10cSrcweir return 0; 3697*cdf0e10cSrcweir } 3698*cdf0e10cSrcweir /*-----------------03.12.97 12:24------------------- 3699*cdf0e10cSrcweir 3700*cdf0e10cSrcweir --------------------------------------------------*/ 3701*cdf0e10cSrcweir IMPL_LINK( SvxNumPositionTabPage, DistanceHdl_Impl, MetricField *, pFld ) 3702*cdf0e10cSrcweir { 3703*cdf0e10cSrcweir if(bInInintControl) 3704*cdf0e10cSrcweir return 0; 3705*cdf0e10cSrcweir long nValue = GetCoreValue(*pFld, eCoreUnit); 3706*cdf0e10cSrcweir sal_uInt16 nMask = 1; 3707*cdf0e10cSrcweir #if OSL_DEBUG_LEVEL > 1 3708*cdf0e10cSrcweir sal_Bool bFirst = sal_True; 3709*cdf0e10cSrcweir #endif 3710*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 3711*cdf0e10cSrcweir { 3712*cdf0e10cSrcweir if(nActNumLvl & nMask) 3713*cdf0e10cSrcweir { 3714*cdf0e10cSrcweir SvxNumberFormat aNumFmt( pActNum->GetLevel( i ) ); 3715*cdf0e10cSrcweir if(pFld == &aDistBorderMF) 3716*cdf0e10cSrcweir { 3717*cdf0e10cSrcweir 3718*cdf0e10cSrcweir if(aRelativeCB.IsChecked()) 3719*cdf0e10cSrcweir { 3720*cdf0e10cSrcweir if(0 == i) 3721*cdf0e10cSrcweir { 3722*cdf0e10cSrcweir long nTmp = aNumFmt.GetFirstLineOffset(); 3723*cdf0e10cSrcweir aNumFmt.SetAbsLSpace( sal_uInt16(nValue - nTmp)); 3724*cdf0e10cSrcweir } 3725*cdf0e10cSrcweir else 3726*cdf0e10cSrcweir { 3727*cdf0e10cSrcweir long nTmp = pActNum->GetLevel( i - 1 ).GetAbsLSpace() + 3728*cdf0e10cSrcweir pActNum->GetLevel( i - 1 ).GetFirstLineOffset() - 3729*cdf0e10cSrcweir pActNum->GetLevel( i ).GetFirstLineOffset(); 3730*cdf0e10cSrcweir 3731*cdf0e10cSrcweir aNumFmt.SetAbsLSpace( sal_uInt16(nValue + nTmp)); 3732*cdf0e10cSrcweir } 3733*cdf0e10cSrcweir } 3734*cdf0e10cSrcweir else 3735*cdf0e10cSrcweir { 3736*cdf0e10cSrcweir aNumFmt.SetAbsLSpace( (short)nValue - aNumFmt.GetFirstLineOffset()); 3737*cdf0e10cSrcweir } 3738*cdf0e10cSrcweir } 3739*cdf0e10cSrcweir else if(pFld == &aDistNumMF) 3740*cdf0e10cSrcweir { 3741*cdf0e10cSrcweir aNumFmt.SetCharTextDistance( (short)nValue ); 3742*cdf0e10cSrcweir } 3743*cdf0e10cSrcweir else if(pFld == &aIndentMF) 3744*cdf0e10cSrcweir { 3745*cdf0e10cSrcweir //jetzt muss mit dem FirstLineOffset auch der AbsLSpace veraendert werden 3746*cdf0e10cSrcweir long nDiff = nValue + aNumFmt.GetFirstLineOffset(); 3747*cdf0e10cSrcweir long nAbsLSpace = aNumFmt.GetAbsLSpace(); 3748*cdf0e10cSrcweir aNumFmt.SetAbsLSpace(sal_uInt16(nAbsLSpace + nDiff)); 3749*cdf0e10cSrcweir aNumFmt.SetFirstLineOffset( -(short)nValue ); 3750*cdf0e10cSrcweir } 3751*cdf0e10cSrcweir 3752*cdf0e10cSrcweir #if OSL_DEBUG_LEVEL > 1 3753*cdf0e10cSrcweir if(bFirst) 3754*cdf0e10cSrcweir lcl_PrintDebugOutput(*pDebugFixedText, aNumFmt); 3755*cdf0e10cSrcweir bFirst = sal_False; 3756*cdf0e10cSrcweir #endif 3757*cdf0e10cSrcweir pActNum->SetLevel( i, aNumFmt ); 3758*cdf0e10cSrcweir } 3759*cdf0e10cSrcweir nMask <<= 1; 3760*cdf0e10cSrcweir } 3761*cdf0e10cSrcweir 3762*cdf0e10cSrcweir SetModified(); 3763*cdf0e10cSrcweir if(!aDistBorderMF.IsEnabled()) 3764*cdf0e10cSrcweir { 3765*cdf0e10cSrcweir String aEmptyStr; 3766*cdf0e10cSrcweir aDistBorderMF.SetText(aEmptyStr); 3767*cdf0e10cSrcweir } 3768*cdf0e10cSrcweir 3769*cdf0e10cSrcweir return 0; 3770*cdf0e10cSrcweir } 3771*cdf0e10cSrcweir 3772*cdf0e10cSrcweir /*-----------------04.12.97 12:35------------------- 3773*cdf0e10cSrcweir 3774*cdf0e10cSrcweir --------------------------------------------------*/ 3775*cdf0e10cSrcweir IMPL_LINK( SvxNumPositionTabPage, RelativeHdl_Impl, CheckBox *, pBox ) 3776*cdf0e10cSrcweir { 3777*cdf0e10cSrcweir sal_Bool bOn = pBox->IsChecked(); 3778*cdf0e10cSrcweir sal_Bool bSingleSelection = aLevelLB.GetSelectEntryCount() == 1 && USHRT_MAX != nActNumLvl; 3779*cdf0e10cSrcweir sal_Bool bSetValue = sal_False; 3780*cdf0e10cSrcweir long nValue = 0; 3781*cdf0e10cSrcweir if(bOn || bSingleSelection) 3782*cdf0e10cSrcweir { 3783*cdf0e10cSrcweir sal_uInt16 nMask = 1; 3784*cdf0e10cSrcweir sal_Bool bFirst = sal_True; 3785*cdf0e10cSrcweir bSetValue = sal_True; 3786*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 3787*cdf0e10cSrcweir { 3788*cdf0e10cSrcweir if(nActNumLvl & nMask) 3789*cdf0e10cSrcweir { 3790*cdf0e10cSrcweir const SvxNumberFormat &rNumFmt = pActNum->GetLevel(i); 3791*cdf0e10cSrcweir if(bFirst) 3792*cdf0e10cSrcweir { 3793*cdf0e10cSrcweir nValue = rNumFmt.GetAbsLSpace() + rNumFmt.GetFirstLineOffset(); 3794*cdf0e10cSrcweir if(bOn && i) 3795*cdf0e10cSrcweir nValue -= (pActNum->GetLevel(i - 1).GetAbsLSpace() + pActNum->GetLevel(i - 1).GetFirstLineOffset()); 3796*cdf0e10cSrcweir } 3797*cdf0e10cSrcweir else 3798*cdf0e10cSrcweir bSetValue = nValue == 3799*cdf0e10cSrcweir (rNumFmt.GetAbsLSpace() + rNumFmt.GetFirstLineOffset()) - 3800*cdf0e10cSrcweir (pActNum->GetLevel(i - 1).GetAbsLSpace() + pActNum->GetLevel(i - 1).GetFirstLineOffset()); 3801*cdf0e10cSrcweir bFirst = sal_False; 3802*cdf0e10cSrcweir } 3803*cdf0e10cSrcweir nMask <<= 1; 3804*cdf0e10cSrcweir } 3805*cdf0e10cSrcweir 3806*cdf0e10cSrcweir } 3807*cdf0e10cSrcweir String aEmptyStr; 3808*cdf0e10cSrcweir if(bSetValue) 3809*cdf0e10cSrcweir SetMetricValue(aDistBorderMF, nValue, eCoreUnit); 3810*cdf0e10cSrcweir else 3811*cdf0e10cSrcweir aDistBorderMF.SetText(aEmptyStr); 3812*cdf0e10cSrcweir aDistBorderMF.Enable(bOn || bSingleSelection); 3813*cdf0e10cSrcweir aDistBorderFT.Enable(bOn || bSingleSelection); 3814*cdf0e10cSrcweir bLastRelative = bOn; 3815*cdf0e10cSrcweir return 0; 3816*cdf0e10cSrcweir } 3817*cdf0e10cSrcweir 3818*cdf0e10cSrcweir // --> OD 2008-01-14 #newlistlevelattrs# 3819*cdf0e10cSrcweir IMPL_LINK( SvxNumPositionTabPage, LabelFollowedByHdl_Impl, ListBox*, EMPTYARG ) 3820*cdf0e10cSrcweir { 3821*cdf0e10cSrcweir // determine value to be set at the chosen list levels 3822*cdf0e10cSrcweir SvxNumberFormat::SvxNumLabelFollowedBy eLabelFollowedBy = 3823*cdf0e10cSrcweir SvxNumberFormat::LISTTAB; 3824*cdf0e10cSrcweir { 3825*cdf0e10cSrcweir const sal_uInt16 nPos = aLabelFollowedByLB.GetSelectEntryPos(); 3826*cdf0e10cSrcweir if ( nPos == 1 ) 3827*cdf0e10cSrcweir { 3828*cdf0e10cSrcweir eLabelFollowedBy = SvxNumberFormat::SPACE; 3829*cdf0e10cSrcweir } 3830*cdf0e10cSrcweir else if ( nPos == 2 ) 3831*cdf0e10cSrcweir { 3832*cdf0e10cSrcweir eLabelFollowedBy = SvxNumberFormat::NOTHING; 3833*cdf0e10cSrcweir } 3834*cdf0e10cSrcweir } 3835*cdf0e10cSrcweir 3836*cdf0e10cSrcweir // set value at the chosen list levels 3837*cdf0e10cSrcweir bool bSameListtabPos = true; 3838*cdf0e10cSrcweir sal_uInt16 nFirstLvl = USHRT_MAX; 3839*cdf0e10cSrcweir sal_uInt16 nMask = 1; 3840*cdf0e10cSrcweir for( sal_uInt16 i = 0; i < pActNum->GetLevelCount(); ++i ) 3841*cdf0e10cSrcweir { 3842*cdf0e10cSrcweir if ( nActNumLvl & nMask ) 3843*cdf0e10cSrcweir { 3844*cdf0e10cSrcweir SvxNumberFormat aNumFmt( pActNum->GetLevel(i) ); 3845*cdf0e10cSrcweir aNumFmt.SetLabelFollowedBy( eLabelFollowedBy ); 3846*cdf0e10cSrcweir pActNum->SetLevel( i, aNumFmt ); 3847*cdf0e10cSrcweir 3848*cdf0e10cSrcweir if ( nFirstLvl == USHRT_MAX ) 3849*cdf0e10cSrcweir { 3850*cdf0e10cSrcweir nFirstLvl = i; 3851*cdf0e10cSrcweir } 3852*cdf0e10cSrcweir else 3853*cdf0e10cSrcweir { 3854*cdf0e10cSrcweir bSameListtabPos &= aNumFmt.GetListtabPos() == 3855*cdf0e10cSrcweir pActNum->GetLevel( nFirstLvl ).GetListtabPos(); 3856*cdf0e10cSrcweir } 3857*cdf0e10cSrcweir } 3858*cdf0e10cSrcweir nMask <<= 1; 3859*cdf0e10cSrcweir } 3860*cdf0e10cSrcweir 3861*cdf0e10cSrcweir // enable/disable metric field for list tab stop position depending on 3862*cdf0e10cSrcweir // selected item following the list label. 3863*cdf0e10cSrcweir aListtabFT.Enable( eLabelFollowedBy == SvxNumberFormat::LISTTAB ); 3864*cdf0e10cSrcweir aListtabMF.Enable( eLabelFollowedBy == SvxNumberFormat::LISTTAB ); 3865*cdf0e10cSrcweir if ( bSameListtabPos && eLabelFollowedBy == SvxNumberFormat::LISTTAB ) 3866*cdf0e10cSrcweir { 3867*cdf0e10cSrcweir SetMetricValue( aListtabMF, pActNum->GetLevel( nFirstLvl ).GetListtabPos(), eCoreUnit ); 3868*cdf0e10cSrcweir } 3869*cdf0e10cSrcweir else 3870*cdf0e10cSrcweir { 3871*cdf0e10cSrcweir aListtabMF.SetText( String() ); 3872*cdf0e10cSrcweir } 3873*cdf0e10cSrcweir 3874*cdf0e10cSrcweir SetModified(); 3875*cdf0e10cSrcweir 3876*cdf0e10cSrcweir return 0; 3877*cdf0e10cSrcweir } 3878*cdf0e10cSrcweir // <-- 3879*cdf0e10cSrcweir 3880*cdf0e10cSrcweir // --> OD 2008-01-14 #newlistlevelattrs# 3881*cdf0e10cSrcweir IMPL_LINK( SvxNumPositionTabPage, ListtabPosHdl_Impl, MetricField*, pFld ) 3882*cdf0e10cSrcweir { 3883*cdf0e10cSrcweir // determine value to be set at the chosen list levels 3884*cdf0e10cSrcweir const long nValue = GetCoreValue( *pFld, eCoreUnit ); 3885*cdf0e10cSrcweir 3886*cdf0e10cSrcweir // set value at the chosen list levels 3887*cdf0e10cSrcweir sal_uInt16 nMask = 1; 3888*cdf0e10cSrcweir for( sal_uInt16 i = 0; i < pActNum->GetLevelCount(); ++i ) 3889*cdf0e10cSrcweir { 3890*cdf0e10cSrcweir if ( nActNumLvl & nMask ) 3891*cdf0e10cSrcweir { 3892*cdf0e10cSrcweir SvxNumberFormat aNumFmt( pActNum->GetLevel(i) ); 3893*cdf0e10cSrcweir aNumFmt.SetListtabPos( nValue ); 3894*cdf0e10cSrcweir pActNum->SetLevel( i, aNumFmt ); 3895*cdf0e10cSrcweir #if OSL_DEBUG_LEVEL > 1 3896*cdf0e10cSrcweir lcl_PrintDebugOutput(*pDebugFixedText, aNumFmt); 3897*cdf0e10cSrcweir #endif 3898*cdf0e10cSrcweir } 3899*cdf0e10cSrcweir nMask <<= 1; 3900*cdf0e10cSrcweir } 3901*cdf0e10cSrcweir 3902*cdf0e10cSrcweir SetModified(); 3903*cdf0e10cSrcweir 3904*cdf0e10cSrcweir return 0; 3905*cdf0e10cSrcweir } 3906*cdf0e10cSrcweir // <-- 3907*cdf0e10cSrcweir 3908*cdf0e10cSrcweir // --> OD 2008-01-14 #newlistlevelattrs# 3909*cdf0e10cSrcweir IMPL_LINK( SvxNumPositionTabPage, AlignAtHdl_Impl, MetricField*, pFld ) 3910*cdf0e10cSrcweir { 3911*cdf0e10cSrcweir // determine value to be set at the chosen list levels 3912*cdf0e10cSrcweir const long nValue = GetCoreValue( *pFld, eCoreUnit ); 3913*cdf0e10cSrcweir 3914*cdf0e10cSrcweir // set value at the chosen list levels 3915*cdf0e10cSrcweir sal_uInt16 nMask = 1; 3916*cdf0e10cSrcweir for( sal_uInt16 i = 0; i < pActNum->GetLevelCount(); ++i ) 3917*cdf0e10cSrcweir { 3918*cdf0e10cSrcweir if ( nActNumLvl & nMask ) 3919*cdf0e10cSrcweir { 3920*cdf0e10cSrcweir SvxNumberFormat aNumFmt( pActNum->GetLevel(i) ); 3921*cdf0e10cSrcweir const long nFirstLineIndent = nValue - aNumFmt.GetIndentAt(); 3922*cdf0e10cSrcweir aNumFmt.SetFirstLineIndent( nFirstLineIndent ); 3923*cdf0e10cSrcweir pActNum->SetLevel( i, aNumFmt ); 3924*cdf0e10cSrcweir #if OSL_DEBUG_LEVEL > 1 3925*cdf0e10cSrcweir lcl_PrintDebugOutput(*pDebugFixedText, aNumFmt); 3926*cdf0e10cSrcweir #endif 3927*cdf0e10cSrcweir } 3928*cdf0e10cSrcweir nMask <<= 1; 3929*cdf0e10cSrcweir } 3930*cdf0e10cSrcweir 3931*cdf0e10cSrcweir SetModified(); 3932*cdf0e10cSrcweir 3933*cdf0e10cSrcweir return 0; 3934*cdf0e10cSrcweir } 3935*cdf0e10cSrcweir // <-- 3936*cdf0e10cSrcweir 3937*cdf0e10cSrcweir // --> OD 2008-01-14 #newlistlevelattrs# 3938*cdf0e10cSrcweir IMPL_LINK( SvxNumPositionTabPage, IndentAtHdl_Impl, MetricField*, pFld ) 3939*cdf0e10cSrcweir { 3940*cdf0e10cSrcweir // determine value to be set at the chosen list levels 3941*cdf0e10cSrcweir const long nValue = GetCoreValue( *pFld, eCoreUnit ); 3942*cdf0e10cSrcweir 3943*cdf0e10cSrcweir // set value at the chosen list levels 3944*cdf0e10cSrcweir sal_uInt16 nMask = 1; 3945*cdf0e10cSrcweir for( sal_uInt16 i = 0; i < pActNum->GetLevelCount(); ++i ) 3946*cdf0e10cSrcweir { 3947*cdf0e10cSrcweir if ( nActNumLvl & nMask ) 3948*cdf0e10cSrcweir { 3949*cdf0e10cSrcweir SvxNumberFormat aNumFmt( pActNum->GetLevel(i) ); 3950*cdf0e10cSrcweir const long nAlignedAt = aNumFmt.GetIndentAt() + 3951*cdf0e10cSrcweir aNumFmt.GetFirstLineIndent(); 3952*cdf0e10cSrcweir aNumFmt.SetIndentAt( nValue ); 3953*cdf0e10cSrcweir const long nNewFirstLineIndent = nAlignedAt - nValue; 3954*cdf0e10cSrcweir aNumFmt.SetFirstLineIndent( nNewFirstLineIndent ); 3955*cdf0e10cSrcweir pActNum->SetLevel( i, aNumFmt ); 3956*cdf0e10cSrcweir #if OSL_DEBUG_LEVEL > 1 3957*cdf0e10cSrcweir lcl_PrintDebugOutput(*pDebugFixedText, aNumFmt); 3958*cdf0e10cSrcweir #endif 3959*cdf0e10cSrcweir } 3960*cdf0e10cSrcweir nMask <<= 1; 3961*cdf0e10cSrcweir } 3962*cdf0e10cSrcweir 3963*cdf0e10cSrcweir SetModified(); 3964*cdf0e10cSrcweir 3965*cdf0e10cSrcweir return 0; 3966*cdf0e10cSrcweir } 3967*cdf0e10cSrcweir // <-- 3968*cdf0e10cSrcweir /*-----------------05.12.97 15:33------------------- 3969*cdf0e10cSrcweir 3970*cdf0e10cSrcweir --------------------------------------------------*/ 3971*cdf0e10cSrcweir IMPL_LINK( SvxNumPositionTabPage, StandardHdl_Impl, PushButton *, EMPTYARG ) 3972*cdf0e10cSrcweir { 3973*cdf0e10cSrcweir sal_uInt16 nMask = 1; 3974*cdf0e10cSrcweir // --> OD 2008-02-11 #newlistlevelattrs# 3975*cdf0e10cSrcweir SvxNumRule aTmpNumRule( pActNum->GetFeatureFlags(), 3976*cdf0e10cSrcweir pActNum->GetLevelCount(), 3977*cdf0e10cSrcweir pActNum->IsContinuousNumbering(), 3978*cdf0e10cSrcweir SVX_RULETYPE_NUMBERING, 3979*cdf0e10cSrcweir pActNum->GetLevel( 0 ).GetPositionAndSpaceMode() ); 3980*cdf0e10cSrcweir // <-- 3981*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++) 3982*cdf0e10cSrcweir { 3983*cdf0e10cSrcweir if(nActNumLvl & nMask) 3984*cdf0e10cSrcweir { 3985*cdf0e10cSrcweir SvxNumberFormat aNumFmt( pActNum->GetLevel( i ) ); 3986*cdf0e10cSrcweir SvxNumberFormat aTempFmt(aTmpNumRule.GetLevel( i )); 3987*cdf0e10cSrcweir // --> OD 2008-02-05 #newlistlevelattrs# 3988*cdf0e10cSrcweir aNumFmt.SetPositionAndSpaceMode( aTempFmt.GetPositionAndSpaceMode() ); 3989*cdf0e10cSrcweir if ( aTempFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION ) 3990*cdf0e10cSrcweir { 3991*cdf0e10cSrcweir aNumFmt.SetAbsLSpace( aTempFmt.GetAbsLSpace() ); 3992*cdf0e10cSrcweir aNumFmt.SetCharTextDistance( aTempFmt.GetCharTextDistance() ); 3993*cdf0e10cSrcweir aNumFmt.SetFirstLineOffset( aTempFmt.GetFirstLineOffset() ); 3994*cdf0e10cSrcweir } 3995*cdf0e10cSrcweir else if ( aTempFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT ) 3996*cdf0e10cSrcweir { 3997*cdf0e10cSrcweir aNumFmt.SetNumAdjust( aTempFmt.GetNumAdjust() ); 3998*cdf0e10cSrcweir aNumFmt.SetLabelFollowedBy( aTempFmt.GetLabelFollowedBy() ); 3999*cdf0e10cSrcweir aNumFmt.SetListtabPos( aTempFmt.GetListtabPos() ); 4000*cdf0e10cSrcweir aNumFmt.SetFirstLineIndent( aTempFmt.GetFirstLineIndent() ); 4001*cdf0e10cSrcweir aNumFmt.SetIndentAt( aTempFmt.GetIndentAt() ); 4002*cdf0e10cSrcweir } 4003*cdf0e10cSrcweir // <-- 4004*cdf0e10cSrcweir 4005*cdf0e10cSrcweir pActNum->SetLevel( i, aNumFmt ); 4006*cdf0e10cSrcweir } 4007*cdf0e10cSrcweir nMask <<= 1; 4008*cdf0e10cSrcweir } 4009*cdf0e10cSrcweir 4010*cdf0e10cSrcweir InitControls(); 4011*cdf0e10cSrcweir SetModified(); 4012*cdf0e10cSrcweir return 0; 4013*cdf0e10cSrcweir } 4014*cdf0e10cSrcweir 4015*cdf0e10cSrcweir void SvxNumPositionTabPage::SetModified(sal_Bool bRepaint) 4016*cdf0e10cSrcweir { 4017*cdf0e10cSrcweir bModified = sal_True; 4018*cdf0e10cSrcweir if(bRepaint) 4019*cdf0e10cSrcweir { 4020*cdf0e10cSrcweir pPreviewWIN->SetLevel(nActNumLvl); 4021*cdf0e10cSrcweir pPreviewWIN->Invalidate(); 4022*cdf0e10cSrcweir } 4023*cdf0e10cSrcweir } 4024*cdf0e10cSrcweir 4025*cdf0e10cSrcweir void SvxNumOptionsTabPage::SetModified(sal_Bool bRepaint) 4026*cdf0e10cSrcweir { 4027*cdf0e10cSrcweir bModified = sal_True; 4028*cdf0e10cSrcweir if(bRepaint) 4029*cdf0e10cSrcweir { 4030*cdf0e10cSrcweir pPreviewWIN->SetLevel(nActNumLvl); 4031*cdf0e10cSrcweir pPreviewWIN->Invalidate(); 4032*cdf0e10cSrcweir } 4033*cdf0e10cSrcweir } 4034*cdf0e10cSrcweir 4035*cdf0e10cSrcweir //Add CHINA001 4036*cdf0e10cSrcweir void SvxNumOptionsTabPage::PageCreated(SfxAllItemSet aSet) 4037*cdf0e10cSrcweir { 4038*cdf0e10cSrcweir SFX_ITEMSET_ARG (&aSet,pListItem,SfxStringListItem,SID_CHAR_FMT_LIST_BOX,sal_False); 4039*cdf0e10cSrcweir SFX_ITEMSET_ARG (&aSet,pNumCharFmt,SfxStringItem,SID_NUM_CHAR_FMT,sal_False); 4040*cdf0e10cSrcweir SFX_ITEMSET_ARG (&aSet,pBulletCharFmt,SfxStringItem,SID_BULLET_CHAR_FMT,sal_False); 4041*cdf0e10cSrcweir SFX_ITEMSET_ARG (&aSet,pMetricItem,SfxAllEnumItem,SID_METRIC_ITEM,sal_False); 4042*cdf0e10cSrcweir 4043*cdf0e10cSrcweir if (pNumCharFmt &&pBulletCharFmt) 4044*cdf0e10cSrcweir SetCharFmts( pNumCharFmt->GetValue(),pBulletCharFmt->GetValue()); 4045*cdf0e10cSrcweir 4046*cdf0e10cSrcweir if (pListItem) 4047*cdf0e10cSrcweir { 4048*cdf0e10cSrcweir ListBox& myCharFmtLB = GetCharFmtListBox(); 4049*cdf0e10cSrcweir const List *pList = (pListItem)->GetList(); 4050*cdf0e10cSrcweir sal_uInt32 nCount = pList->Count();; 4051*cdf0e10cSrcweir for(sal_uInt32 i = 0; i < nCount; i++) 4052*cdf0e10cSrcweir { 4053*cdf0e10cSrcweir myCharFmtLB.InsertEntry(*(const String*)(pList->GetObject(i)) ); 4054*cdf0e10cSrcweir 4055*cdf0e10cSrcweir } 4056*cdf0e10cSrcweir } 4057*cdf0e10cSrcweir if (pMetricItem) 4058*cdf0e10cSrcweir SetMetric(static_cast<FieldUnit>(pMetricItem->GetValue())); 4059*cdf0e10cSrcweir } 4060*cdf0e10cSrcweir 4061*cdf0e10cSrcweir //end of add CHINA001 4062*cdf0e10cSrcweir 4063*cdf0e10cSrcweir //add CHINA001 begin 4064*cdf0e10cSrcweir 4065*cdf0e10cSrcweir void SvxNumPositionTabPage::PageCreated(SfxAllItemSet aSet) 4066*cdf0e10cSrcweir { 4067*cdf0e10cSrcweir SFX_ITEMSET_ARG (&aSet,pMetricItem,SfxAllEnumItem,SID_METRIC_ITEM,sal_False); 4068*cdf0e10cSrcweir 4069*cdf0e10cSrcweir if (pMetricItem) 4070*cdf0e10cSrcweir SetMetric(static_cast<FieldUnit>(pMetricItem->GetValue())); 4071*cdf0e10cSrcweir } 4072