1efeef26fSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3efeef26fSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4efeef26fSAndrew Rist * or more contributor license agreements. See the NOTICE file 5efeef26fSAndrew Rist * distributed with this work for additional information 6efeef26fSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7efeef26fSAndrew Rist * to you under the Apache License, Version 2.0 (the 8efeef26fSAndrew Rist * "License"); you may not use this file except in compliance 9efeef26fSAndrew Rist * with the License. You may obtain a copy of the License at 10efeef26fSAndrew Rist * 11efeef26fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12efeef26fSAndrew Rist * 13efeef26fSAndrew Rist * Unless required by applicable law or agreed to in writing, 14efeef26fSAndrew Rist * software distributed under the License is distributed on an 15efeef26fSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16efeef26fSAndrew Rist * KIND, either express or implied. See the License for the 17efeef26fSAndrew Rist * specific language governing permissions and limitations 18efeef26fSAndrew Rist * under the License. 19efeef26fSAndrew Rist * 20efeef26fSAndrew Rist *************************************************************/ 21efeef26fSAndrew Rist 22efeef26fSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_sw.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir #ifdef SW_DLLIMPLEMENTATION 28cdf0e10cSrcweir #undef SW_DLLIMPLEMENTATION 29cdf0e10cSrcweir #endif 30cdf0e10cSrcweir 31cdf0e10cSrcweir #include "column.hxx" 32cdf0e10cSrcweir 33cdf0e10cSrcweir #include "hintids.hxx" 34cdf0e10cSrcweir #include <svx/htmlmode.hxx> 35cdf0e10cSrcweir #include <editeng/borderline.hxx> 36cdf0e10cSrcweir #include <editeng/boxitem.hxx> 37cdf0e10cSrcweir #include <editeng/lrspitem.hxx> 38cdf0e10cSrcweir #include <editeng/sizeitem.hxx> 39cdf0e10cSrcweir #include "editeng/frmdiritem.hxx" 40cdf0e10cSrcweir #include <svl/ctloptions.hxx> 41cdf0e10cSrcweir #include <sfx2/dispatch.hxx> 42cdf0e10cSrcweir #include <vcl/msgbox.hxx> 43cdf0e10cSrcweir #include <swmodule.hxx> 44cdf0e10cSrcweir 45cdf0e10cSrcweir #include <helpid.h> 46cdf0e10cSrcweir #include "globals.hrc" 47cdf0e10cSrcweir #include "swtypes.hxx" 48cdf0e10cSrcweir #include "wrtsh.hxx" 49cdf0e10cSrcweir #include "view.hxx" 50cdf0e10cSrcweir #include "docsh.hxx" 51cdf0e10cSrcweir #include "uitool.hxx" 52cdf0e10cSrcweir #include "cmdid.h" 53cdf0e10cSrcweir #include "viewopt.hxx" 54cdf0e10cSrcweir #include "format.hxx" 55cdf0e10cSrcweir #include "frmmgr.hxx" 56cdf0e10cSrcweir #include "frmdlg.hxx" 57cdf0e10cSrcweir #include "colmgr.hxx" 58cdf0e10cSrcweir #include "prcntfld.hxx" 59cdf0e10cSrcweir #include "paratr.hxx" 60cdf0e10cSrcweir #include "frmui.hrc" 61cdf0e10cSrcweir #include "poolfmt.hrc" 62cdf0e10cSrcweir #include "column.hrc" 63cdf0e10cSrcweir #include <section.hxx> 64cdf0e10cSrcweir #include <docary.hxx> 65cdf0e10cSrcweir #include <pagedesc.hxx> 66cdf0e10cSrcweir 67cdf0e10cSrcweir #include "access.hrc" 68cdf0e10cSrcweir 69cdf0e10cSrcweir #define FRAME_FORMAT_WIDTH 1000 70cdf0e10cSrcweir 71cdf0e10cSrcweir // sw/inc/fmtclds.hxx 72cdf0e10cSrcweir SV_IMPL_PTRARR( SwColumns, SwColumnPtr ) 73cdf0e10cSrcweir 74cdf0e10cSrcweir /*-------------------------------------------------------------------- 75cdf0e10cSrcweir Beschreibung: Statische Daten 76cdf0e10cSrcweir --------------------------------------------------------------------*/ 77cdf0e10cSrcweir 78cdf0e10cSrcweir static const sal_uInt16 __FAR_DATA nLines[] = { 79cdf0e10cSrcweir DEF_LINE_WIDTH_0, 80cdf0e10cSrcweir DEF_LINE_WIDTH_1, 81cdf0e10cSrcweir DEF_LINE_WIDTH_2, 82cdf0e10cSrcweir DEF_LINE_WIDTH_3, 83cdf0e10cSrcweir DEF_LINE_WIDTH_4 84cdf0e10cSrcweir }; 85cdf0e10cSrcweir 86cdf0e10cSrcweir static const sal_uInt16 nLineCount = sizeof(nLines) / sizeof(nLines[0]); 87cdf0e10cSrcweir static const sal_uInt16 nVisCols = 3; 88cdf0e10cSrcweir 89cdf0e10cSrcweir inline sal_Bool IsMarkInSameSection( SwWrtShell& rWrtSh, const SwSection* pSect ) 90cdf0e10cSrcweir { 91cdf0e10cSrcweir rWrtSh.SwapPam(); 92cdf0e10cSrcweir sal_Bool bRet = pSect == rWrtSh.GetCurrSection(); 93cdf0e10cSrcweir rWrtSh.SwapPam(); 94cdf0e10cSrcweir return bRet; 95cdf0e10cSrcweir } 96cdf0e10cSrcweir 97cdf0e10cSrcweir /*-------------------------------------------------------------------- 98cdf0e10cSrcweir Beschreibung: 99cdf0e10cSrcweir --------------------------------------------------------------------*/ 100cdf0e10cSrcweir 101cdf0e10cSrcweir SwColumnDlg::SwColumnDlg(Window* pParent, SwWrtShell& rSh) : 102cdf0e10cSrcweir SfxModalDialog(pParent, SW_RES(DLG_COLUMN)), 103cdf0e10cSrcweir aOK(this, SW_RES(PB_OK)), 104cdf0e10cSrcweir aCancel(this, SW_RES(PB_CANCEL)), 105cdf0e10cSrcweir aHelp(this, SW_RES(PB_HELP)), 106cdf0e10cSrcweir aApplyToFT(this, SW_RES(FT_APPLY_TO)), 107cdf0e10cSrcweir aApplyToLB(this, SW_RES(LB_APPLY_TO)), 108cdf0e10cSrcweir rWrtShell(rSh), 109cdf0e10cSrcweir pPageSet(0), 110cdf0e10cSrcweir pSectionSet(0), 111cdf0e10cSrcweir pSelectionSet(0), 112cdf0e10cSrcweir pFrameSet(0), 113cdf0e10cSrcweir nOldSelection(0), 114cdf0e10cSrcweir nSelectionWidth(0), 115cdf0e10cSrcweir bPageChanged(sal_False), 116cdf0e10cSrcweir bSectionChanged(sal_False), 117cdf0e10cSrcweir bSelSectionChanged(sal_False), 118cdf0e10cSrcweir bFrameChanged(sal_False) 119cdf0e10cSrcweir { 120cdf0e10cSrcweir FreeResource(); 121cdf0e10cSrcweir 122cdf0e10cSrcweir SwRect aRect; 123cdf0e10cSrcweir rWrtShell.CalcBoundRect(aRect, FLY_AS_CHAR); 124cdf0e10cSrcweir 125cdf0e10cSrcweir nSelectionWidth = aRect.Width(); 126cdf0e10cSrcweir 127cdf0e10cSrcweir SfxItemSet* pColPgSet = 0; 128cdf0e10cSrcweir static sal_uInt16 __READONLY_DATA aSectIds[] = { RES_COL, RES_COL, 129cdf0e10cSrcweir RES_FRM_SIZE, RES_FRM_SIZE, 130cdf0e10cSrcweir RES_COLUMNBALANCE, RES_FRAMEDIR, 131cdf0e10cSrcweir 0 }; 132cdf0e10cSrcweir 133cdf0e10cSrcweir const SwSection* pCurrSection = rWrtShell.GetCurrSection(); 134cdf0e10cSrcweir sal_uInt16 nFullSectCnt = rWrtShell.GetFullSelectedSectionCount(); 135cdf0e10cSrcweir if( pCurrSection && ( !rWrtShell.HasSelection() || 0 != nFullSectCnt )) 136cdf0e10cSrcweir { 137cdf0e10cSrcweir nSelectionWidth = rSh.GetSectionWidth(*pCurrSection->GetFmt()); 138cdf0e10cSrcweir if ( !nSelectionWidth ) 139cdf0e10cSrcweir nSelectionWidth = USHRT_MAX; 140cdf0e10cSrcweir pSectionSet = new SfxItemSet( rWrtShell.GetAttrPool(), aSectIds ); 141cdf0e10cSrcweir pSectionSet->Put( pCurrSection->GetFmt()->GetAttrSet() ); 142cdf0e10cSrcweir pColPgSet = pSectionSet; 143cdf0e10cSrcweir aApplyToLB.RemoveEntry( aApplyToLB.GetEntryPos( 144cdf0e10cSrcweir (void*)( 1 >= nFullSectCnt 145cdf0e10cSrcweir ? LISTBOX_SECTIONS 146cdf0e10cSrcweir : LISTBOX_SECTION ))); 147cdf0e10cSrcweir } 148cdf0e10cSrcweir else 149cdf0e10cSrcweir { 150cdf0e10cSrcweir aApplyToLB.RemoveEntry(aApplyToLB.GetEntryPos( (void*) LISTBOX_SECTION )); 151cdf0e10cSrcweir aApplyToLB.RemoveEntry(aApplyToLB.GetEntryPos( (void*) LISTBOX_SECTIONS )); 152cdf0e10cSrcweir } 153cdf0e10cSrcweir 154cdf0e10cSrcweir if( rWrtShell.HasSelection() && rWrtShell.IsInsRegionAvailable() && 155cdf0e10cSrcweir ( !pCurrSection || ( 1 != nFullSectCnt && 156cdf0e10cSrcweir IsMarkInSameSection( rWrtShell, pCurrSection ) ))) 157cdf0e10cSrcweir { 158cdf0e10cSrcweir pSelectionSet = new SfxItemSet( rWrtShell.GetAttrPool(), aSectIds ); 159cdf0e10cSrcweir pColPgSet = pSelectionSet; 160cdf0e10cSrcweir } 161cdf0e10cSrcweir else 162cdf0e10cSrcweir aApplyToLB.RemoveEntry(aApplyToLB.GetEntryPos( (void*) LISTBOX_SELECTION )); 163cdf0e10cSrcweir 164cdf0e10cSrcweir if( rWrtShell.GetFlyFrmFmt() ) 165cdf0e10cSrcweir { 166cdf0e10cSrcweir const SwFrmFmt* pFmt = rSh.GetFlyFrmFmt() ; 167cdf0e10cSrcweir pFrameSet = new SfxItemSet(rWrtShell.GetAttrPool(), aSectIds ); 168cdf0e10cSrcweir pFrameSet->Put(pFmt->GetFrmSize()); 169cdf0e10cSrcweir pFrameSet->Put(pFmt->GetCol()); 170cdf0e10cSrcweir pColPgSet = pFrameSet; 171cdf0e10cSrcweir } 172cdf0e10cSrcweir else 173cdf0e10cSrcweir aApplyToLB.RemoveEntry(aApplyToLB.GetEntryPos( (void*) LISTBOX_FRAME )); 174cdf0e10cSrcweir 175cdf0e10cSrcweir 176cdf0e10cSrcweir sal_uInt16 nPagePos = aApplyToLB.GetEntryPos( (void*) LISTBOX_PAGE ); 177cdf0e10cSrcweir const SwPageDesc* pPageDesc = rWrtShell.GetSelectedPageDescs(); 178cdf0e10cSrcweir if( pPageDesc ) 179cdf0e10cSrcweir { 180cdf0e10cSrcweir pPageSet = new SfxItemSet( rWrtShell.GetAttrPool(), 181cdf0e10cSrcweir RES_COL, RES_COL, 182cdf0e10cSrcweir RES_FRM_SIZE, RES_FRM_SIZE, 183cdf0e10cSrcweir RES_LR_SPACE, RES_LR_SPACE, 184cdf0e10cSrcweir 0 ); 185cdf0e10cSrcweir 186cdf0e10cSrcweir String sPageStr = aApplyToLB.GetEntry(nPagePos); 187cdf0e10cSrcweir aApplyToLB.RemoveEntry( nPagePos ); 188cdf0e10cSrcweir sPageStr += pPageDesc->GetName(); 189cdf0e10cSrcweir aApplyToLB.InsertEntry( sPageStr, nPagePos ); 190cdf0e10cSrcweir aApplyToLB.SetEntryData( nPagePos, (void*) LISTBOX_PAGE); 191cdf0e10cSrcweir 192cdf0e10cSrcweir const SwFrmFmt &rFmt = pPageDesc->GetMaster(); 193cdf0e10cSrcweir nPageWidth = rFmt.GetFrmSize().GetSize().Width(); 194cdf0e10cSrcweir 195cdf0e10cSrcweir const SvxLRSpaceItem& rLRSpace = (const SvxLRSpaceItem&)rFmt.GetLRSpace(); 196cdf0e10cSrcweir const SvxBoxItem& rBox = (const SvxBoxItem&) rFmt.GetBox(); 197cdf0e10cSrcweir nPageWidth -= rLRSpace.GetLeft() + rLRSpace.GetRight() + rBox.GetDistance(); 198cdf0e10cSrcweir 199cdf0e10cSrcweir pPageSet->Put(rFmt.GetCol()); 200cdf0e10cSrcweir pPageSet->Put(rFmt.GetLRSpace()); 201cdf0e10cSrcweir pColPgSet = pPageSet; 202cdf0e10cSrcweir } 203cdf0e10cSrcweir else 204cdf0e10cSrcweir aApplyToLB.RemoveEntry( nPagePos ); 205cdf0e10cSrcweir 206cdf0e10cSrcweir 207cdf0e10cSrcweir ASSERT( pColPgSet, "" ); 208cdf0e10cSrcweir // TabPage erzeugen 209cdf0e10cSrcweir SwColumnPage* pPage = (SwColumnPage*) SwColumnPage::Create( this, 210cdf0e10cSrcweir *pColPgSet ); 211cdf0e10cSrcweir pTabPage = pPage; 212cdf0e10cSrcweir 213cdf0e10cSrcweir //Groesse anpassen 214cdf0e10cSrcweir Size aPageSize(pTabPage->GetSizePixel()); 215cdf0e10cSrcweir Size aDlgSize(GetOutputSizePixel()); 216cdf0e10cSrcweir aDlgSize.Height() = aPageSize.Height(); 217cdf0e10cSrcweir SetOutputSizePixel(aDlgSize); 218cdf0e10cSrcweir pTabPage->Show(); 219cdf0e10cSrcweir 220cdf0e10cSrcweir aApplyToLB.SelectEntryPos(0); 221cdf0e10cSrcweir ObjectHdl(0); 222cdf0e10cSrcweir 223cdf0e10cSrcweir aApplyToLB.SetSelectHdl(LINK(this, SwColumnDlg, ObjectHdl)); 224cdf0e10cSrcweir aOK.SetClickHdl(LINK(this, SwColumnDlg, OkHdl)); 225cdf0e10cSrcweir //#i80458# if no columns can be set then disable OK 226cdf0e10cSrcweir if( !aApplyToLB.GetEntryCount() ) 227cdf0e10cSrcweir aOK.Enable( sal_False ); 228cdf0e10cSrcweir //#i97810# set focus to the TabPage 229cdf0e10cSrcweir pTabPage->ActivateColumnControl(); 230cdf0e10cSrcweir } 231cdf0e10cSrcweir 232cdf0e10cSrcweir /*-------------------------------------------------------------------- 233cdf0e10cSrcweir Beschreibung: 234cdf0e10cSrcweir --------------------------------------------------------------------*/ 235cdf0e10cSrcweir 236cdf0e10cSrcweir SwColumnDlg::~SwColumnDlg() 237cdf0e10cSrcweir { 238cdf0e10cSrcweir delete pTabPage; 239cdf0e10cSrcweir delete pPageSet; 240cdf0e10cSrcweir delete pSectionSet; 241cdf0e10cSrcweir delete pSelectionSet; 242cdf0e10cSrcweir } 243cdf0e10cSrcweir 244cdf0e10cSrcweir /* -----------------26.05.99 11:40------------------- 245cdf0e10cSrcweir * 246cdf0e10cSrcweir * --------------------------------------------------*/ 247cdf0e10cSrcweir IMPL_LINK(SwColumnDlg, ObjectHdl, ListBox*, pBox) 248cdf0e10cSrcweir { 249cdf0e10cSrcweir SfxItemSet* pSet = 0; 250cdf0e10cSrcweir switch(nOldSelection) 251cdf0e10cSrcweir { 252cdf0e10cSrcweir case LISTBOX_SELECTION : 253cdf0e10cSrcweir pSet = pSelectionSet; 254cdf0e10cSrcweir break; 255cdf0e10cSrcweir case LISTBOX_SECTION : 256cdf0e10cSrcweir pSet = pSectionSet; 257cdf0e10cSrcweir bSectionChanged = sal_True; 258cdf0e10cSrcweir break; 259cdf0e10cSrcweir case LISTBOX_SECTIONS : 260cdf0e10cSrcweir pSet = pSectionSet; 261cdf0e10cSrcweir bSelSectionChanged = sal_True; 262cdf0e10cSrcweir break; 263cdf0e10cSrcweir case LISTBOX_PAGE : 264cdf0e10cSrcweir pSet = pPageSet; 265cdf0e10cSrcweir bPageChanged = sal_True; 266cdf0e10cSrcweir break; 267cdf0e10cSrcweir case LISTBOX_FRAME: 268cdf0e10cSrcweir pSet = pFrameSet; 269cdf0e10cSrcweir bFrameChanged = sal_True; 270cdf0e10cSrcweir break; 271cdf0e10cSrcweir } 272cdf0e10cSrcweir if(pBox) 273cdf0e10cSrcweir { 274cdf0e10cSrcweir pTabPage->FillItemSet(*pSet); 275cdf0e10cSrcweir } 276cdf0e10cSrcweir nOldSelection = (long)aApplyToLB.GetEntryData(aApplyToLB.GetSelectEntryPos()); 277cdf0e10cSrcweir long nWidth = nSelectionWidth; 278cdf0e10cSrcweir switch(nOldSelection) 279cdf0e10cSrcweir { 280cdf0e10cSrcweir case LISTBOX_SELECTION : 281cdf0e10cSrcweir pSet = pSelectionSet; 282cdf0e10cSrcweir if( pSelectionSet ) 283cdf0e10cSrcweir pSet->Put(SwFmtFrmSize(ATT_VAR_SIZE, nWidth, nWidth)); 284cdf0e10cSrcweir break; 285cdf0e10cSrcweir case LISTBOX_SECTION : 286cdf0e10cSrcweir case LISTBOX_SECTIONS : 287cdf0e10cSrcweir pSet = pSectionSet; 288cdf0e10cSrcweir pSet->Put(SwFmtFrmSize(ATT_VAR_SIZE, nWidth, nWidth)); 289cdf0e10cSrcweir break; 290cdf0e10cSrcweir case LISTBOX_PAGE : 291cdf0e10cSrcweir nWidth = nPageWidth; 292cdf0e10cSrcweir pSet = pPageSet; 293cdf0e10cSrcweir pSet->Put(SwFmtFrmSize(ATT_VAR_SIZE, nWidth, nWidth)); 294cdf0e10cSrcweir break; 295cdf0e10cSrcweir case LISTBOX_FRAME: 296cdf0e10cSrcweir pSet = pFrameSet; 297cdf0e10cSrcweir break; 298cdf0e10cSrcweir } 299cdf0e10cSrcweir 300cdf0e10cSrcweir sal_Bool bIsSection = pSet == pSectionSet || pSet == pSelectionSet; 301cdf0e10cSrcweir pTabPage->ShowBalance(bIsSection); 302cdf0e10cSrcweir pTabPage->SetInSection(bIsSection); 303cdf0e10cSrcweir pTabPage->SetFrmMode(sal_True); 304cdf0e10cSrcweir pTabPage->SetPageWidth(nWidth); 305cdf0e10cSrcweir if( pSet ) 306cdf0e10cSrcweir pTabPage->Reset(*pSet); 307cdf0e10cSrcweir return 0; 308cdf0e10cSrcweir } 309cdf0e10cSrcweir /* -----------------26.05.99 12:32------------------- 310cdf0e10cSrcweir * 311cdf0e10cSrcweir * --------------------------------------------------*/ 312cdf0e10cSrcweir IMPL_LINK(SwColumnDlg, OkHdl, OKButton*, EMPTYARG) 313cdf0e10cSrcweir { 314cdf0e10cSrcweir //aktuelle Selektion auswerten 315cdf0e10cSrcweir SfxItemSet* pSet = 0; 316cdf0e10cSrcweir switch(nOldSelection) 317cdf0e10cSrcweir { 318cdf0e10cSrcweir case LISTBOX_SELECTION : 319cdf0e10cSrcweir pSet = pSelectionSet; 320cdf0e10cSrcweir break; 321cdf0e10cSrcweir case LISTBOX_SECTION : 322cdf0e10cSrcweir pSet = pSectionSet; 323cdf0e10cSrcweir bSectionChanged = sal_True; 324cdf0e10cSrcweir break; 325cdf0e10cSrcweir case LISTBOX_SECTIONS : 326cdf0e10cSrcweir pSet = pSectionSet; 327cdf0e10cSrcweir bSelSectionChanged = sal_True; 328cdf0e10cSrcweir break; 329cdf0e10cSrcweir case LISTBOX_PAGE : 330cdf0e10cSrcweir pSet = pPageSet; 331cdf0e10cSrcweir bPageChanged = sal_True; 332cdf0e10cSrcweir break; 333cdf0e10cSrcweir case LISTBOX_FRAME: 334cdf0e10cSrcweir pSet = pFrameSet; 335cdf0e10cSrcweir bFrameChanged = sal_True; 336cdf0e10cSrcweir break; 337cdf0e10cSrcweir } 338cdf0e10cSrcweir pTabPage->FillItemSet(*pSet); 339cdf0e10cSrcweir 340cdf0e10cSrcweir if(pSelectionSet && SFX_ITEM_SET == pSelectionSet->GetItemState(RES_COL)) 341cdf0e10cSrcweir { 342cdf0e10cSrcweir //Bereich mit Spalten einfuegen 343cdf0e10cSrcweir const SwFmtCol& rColItem = (const SwFmtCol&)pSelectionSet->Get(RES_COL); 344cdf0e10cSrcweir //nur, wenn es auch Spalten gibt! 345cdf0e10cSrcweir if(rColItem.GetNumCols() > 1) 346cdf0e10cSrcweir rWrtShell.GetView().GetViewFrame()->GetDispatcher()->Execute( 347cdf0e10cSrcweir FN_INSERT_REGION, SFX_CALLMODE_ASYNCHRON, *pSelectionSet ); 348cdf0e10cSrcweir } 349cdf0e10cSrcweir 350cdf0e10cSrcweir if(pSectionSet && pSectionSet->Count() && bSectionChanged ) 351cdf0e10cSrcweir { 352cdf0e10cSrcweir const SwSection* pCurrSection = rWrtShell.GetCurrSection(); 353cdf0e10cSrcweir const SwSectionFmt* pFmt = pCurrSection->GetFmt(); 354cdf0e10cSrcweir sal_uInt16 nNewPos = rWrtShell.GetSectionFmtPos( *pFmt ); 355cdf0e10cSrcweir SwSectionData aData(*pCurrSection); 356cdf0e10cSrcweir rWrtShell.UpdateSection( nNewPos, aData, pSectionSet ); 357cdf0e10cSrcweir } 358cdf0e10cSrcweir 359cdf0e10cSrcweir if(pSectionSet && pSectionSet->Count() && bSelSectionChanged ) 360cdf0e10cSrcweir { 361cdf0e10cSrcweir rWrtShell.SetSectionAttr( *pSectionSet ); 362cdf0e10cSrcweir } 363cdf0e10cSrcweir 364cdf0e10cSrcweir if(pPageSet && SFX_ITEM_SET == pPageSet->GetItemState(RES_COL) && bPageChanged) 365cdf0e10cSrcweir { 366cdf0e10cSrcweir // aktuellen PageDescriptor ermitteln und damit den Set fuellen 367cdf0e10cSrcweir const sal_uInt16 nCurIdx = rWrtShell.GetCurPageDesc(); 368cdf0e10cSrcweir SwPageDesc aPageDesc(rWrtShell.GetPageDesc(nCurIdx)); 369cdf0e10cSrcweir SwFrmFmt &rFmt = aPageDesc.GetMaster(); 370cdf0e10cSrcweir rFmt.SetFmtAttr(pPageSet->Get(RES_COL)); 371cdf0e10cSrcweir rWrtShell.ChgPageDesc(nCurIdx, aPageDesc); 372cdf0e10cSrcweir } 373cdf0e10cSrcweir if(pFrameSet && SFX_ITEM_SET == pFrameSet->GetItemState(RES_COL) && bFrameChanged) 374cdf0e10cSrcweir { 375cdf0e10cSrcweir SfxItemSet aTmp(*pFrameSet->GetPool(), RES_COL, RES_COL); 376cdf0e10cSrcweir aTmp.Put(*pFrameSet); 377cdf0e10cSrcweir rWrtShell.StartAction(); 378cdf0e10cSrcweir rWrtShell.Push(); 379cdf0e10cSrcweir rWrtShell.SetFlyFrmAttr( aTmp ); 380cdf0e10cSrcweir //die Rahmenselektion wieder aufheben 381cdf0e10cSrcweir if(rWrtShell.IsFrmSelected()) 382cdf0e10cSrcweir { 383cdf0e10cSrcweir rWrtShell.UnSelectFrm(); 384cdf0e10cSrcweir rWrtShell.LeaveSelFrmMode(); 385cdf0e10cSrcweir } 386cdf0e10cSrcweir rWrtShell.Pop(); 387cdf0e10cSrcweir rWrtShell.EndAction(); 388cdf0e10cSrcweir } 389cdf0e10cSrcweir EndDialog(RET_OK); 390cdf0e10cSrcweir return 0; 391cdf0e10cSrcweir } 392cdf0e10cSrcweir 393cdf0e10cSrcweir /*-------------------------------------------------------------------- 394cdf0e10cSrcweir Beschreibung: 395cdf0e10cSrcweir --------------------------------------------------------------------*/ 396cdf0e10cSrcweir 397cdf0e10cSrcweir #if OSL_DEBUG_LEVEL < 2 398cdf0e10cSrcweir inline 399cdf0e10cSrcweir #endif 400cdf0e10cSrcweir sal_uInt16 GetMaxWidth( SwColMgr* pColMgr, sal_uInt16 nCols ) 401cdf0e10cSrcweir { 402cdf0e10cSrcweir sal_uInt16 nMax = pColMgr->GetActualSize(); 403cdf0e10cSrcweir if( --nCols ) 404cdf0e10cSrcweir nMax -= pColMgr->GetGutterWidth() * nCols; 405cdf0e10cSrcweir return nMax; 406cdf0e10cSrcweir } 407cdf0e10cSrcweir 408cdf0e10cSrcweir static sal_uInt16 __FAR_DATA aPageRg[] = { 409cdf0e10cSrcweir RES_COL, RES_COL, 410cdf0e10cSrcweir 0 411cdf0e10cSrcweir }; 412cdf0e10cSrcweir 413cdf0e10cSrcweir 414cdf0e10cSrcweir DBG_NAME(columnhdl) 415cdf0e10cSrcweir 416cdf0e10cSrcweir 417cdf0e10cSrcweir 418cdf0e10cSrcweir sal_uInt16 lcl_LineWidthToPos(sal_uLong nWidth) 419cdf0e10cSrcweir { 420cdf0e10cSrcweir const sal_uInt16 nUShortWidth = (sal_uInt16)nWidth; 421cdf0e10cSrcweir for(sal_uInt16 i = 0; i < nLineCount; ++i) 422cdf0e10cSrcweir if(nUShortWidth == nLines[i]) 423cdf0e10cSrcweir return i; 424cdf0e10cSrcweir return 0; 425cdf0e10cSrcweir } 426cdf0e10cSrcweir 427cdf0e10cSrcweir 428cdf0e10cSrcweir 429cdf0e10cSrcweir void SwColumnPage::ResetColWidth() 430cdf0e10cSrcweir { 431cdf0e10cSrcweir if( nCols ) 432cdf0e10cSrcweir { 433cdf0e10cSrcweir sal_uInt16 nWidth = GetMaxWidth( pColMgr, nCols ); 434cdf0e10cSrcweir nWidth = nWidth / nCols; 435cdf0e10cSrcweir 436cdf0e10cSrcweir for(sal_uInt16 i = 0; i < nCols; ++i) 437cdf0e10cSrcweir nColWidth[i] = (long) nWidth; 438cdf0e10cSrcweir } 439cdf0e10cSrcweir 440cdf0e10cSrcweir } 441cdf0e10cSrcweir 442cdf0e10cSrcweir /*-------------------------------------------------------------------- 443cdf0e10cSrcweir Beschreibung: Jetzt als TabPage 444cdf0e10cSrcweir --------------------------------------------------------------------*/ 445cdf0e10cSrcweir 446cdf0e10cSrcweir 447cdf0e10cSrcweir 448cdf0e10cSrcweir SwColumnPage::SwColumnPage(Window *pParent, const SfxItemSet &rSet) 449cdf0e10cSrcweir 450cdf0e10cSrcweir : SfxTabPage(pParent, SW_RES(TP_COLUMN), rSet), 451cdf0e10cSrcweir 452cdf0e10cSrcweir aFLGroup(this, SW_RES(FL_COLUMNS )), 453cdf0e10cSrcweir aClNrLbl(this, SW_RES(FT_NUMBER )), 454cdf0e10cSrcweir aCLNrEdt(this, SW_RES(ED_NUMBER )), 455cdf0e10cSrcweir aDefaultVS(this, SW_RES(VS_DEFAULTS)), 456cdf0e10cSrcweir aBalanceColsCB(this, SW_RES(CB_BALANCECOLS)), 457cdf0e10cSrcweir 458cdf0e10cSrcweir aFLLayout(this, SW_RES(FL_LAYOUT)), 459cdf0e10cSrcweir aBtnUp(this, SW_RES(BTN_DOWN)), 460cdf0e10cSrcweir aColumnFT(this, SW_RES(FT_COLUMN)), 461cdf0e10cSrcweir aWidthFT(this, SW_RES(FT_WIDTH)), 462cdf0e10cSrcweir aDistFT(this, SW_RES(FT_DIST)), 463cdf0e10cSrcweir aLbl1(this, SW_RES(FT_1)), 464cdf0e10cSrcweir aEd1(this, SW_RES(ED_1)), 465cdf0e10cSrcweir aDistEd1(this, SW_RES(ED_DIST1)), 466cdf0e10cSrcweir aLbl2(this, SW_RES(FT_2)), 467cdf0e10cSrcweir aEd2(this, SW_RES(ED_2)), 468cdf0e10cSrcweir aDistEd2(this, SW_RES(ED_DIST2)), 469cdf0e10cSrcweir aLbl3(this, SW_RES(FT_3)), 470cdf0e10cSrcweir aEd3(this, SW_RES(ED_3)), 471cdf0e10cSrcweir aBtnDown(this, SW_RES(BTN_UP)), 472cdf0e10cSrcweir aAutoWidthBox(this, SW_RES(CB_AUTO_WIDTH)), 473cdf0e10cSrcweir 474cdf0e10cSrcweir aFLLineType(this, SW_RES(FL_LINETYPE)), 475cdf0e10cSrcweir aLineTypeLbl(this, SW_RES(FT_STYLE)), 476cdf0e10cSrcweir aLineTypeDLB(this, SW_RES(LB_STYLE)), 477cdf0e10cSrcweir aLineHeightLbl(this, SW_RES(FT_HEIGHT)), 478cdf0e10cSrcweir aLineHeightEdit(this, SW_RES(ED_HEIGHT)), 479cdf0e10cSrcweir aLinePosLbl(this, SW_RES(FT_POSITION)), 480cdf0e10cSrcweir aLinePosDLB(this, SW_RES(LB_POSITION)), 481cdf0e10cSrcweir 482cdf0e10cSrcweir aVertFL(this, SW_RES(FL_VERT)), 483cdf0e10cSrcweir aPropertiesFL( this, SW_RES( FL_PROPERTIES )), 484cdf0e10cSrcweir aTextDirectionFT( this, SW_RES( FT_TEXTDIRECTION )), 485cdf0e10cSrcweir aTextDirectionLB( this, SW_RES( LB_TEXTDIRECTION )), 486cdf0e10cSrcweir 487cdf0e10cSrcweir aPgeExampleWN(this, SW_RES(WN_BSP)), 488cdf0e10cSrcweir aFrmExampleWN(this, SW_RES(WN_BSP)), 489cdf0e10cSrcweir 490cdf0e10cSrcweir pColMgr(0), 491cdf0e10cSrcweir 492cdf0e10cSrcweir nFirstVis(0), 493cdf0e10cSrcweir nMinWidth(MINLAY), 494cdf0e10cSrcweir pModifiedField(0), 495cdf0e10cSrcweir bFormat(sal_False), 496cdf0e10cSrcweir bFrm(sal_False), 497cdf0e10cSrcweir bHtmlMode(sal_False), 498cdf0e10cSrcweir bLockUpdate(sal_False) 499cdf0e10cSrcweir { 500cdf0e10cSrcweir sal_uInt16 i; 501cdf0e10cSrcweir 502cdf0e10cSrcweir FreeResource(); 503cdf0e10cSrcweir SetExchangeSupport(); 504cdf0e10cSrcweir 505cdf0e10cSrcweir aBtnDown.SetAccessibleRelationMemberOf(&aFLLayout); 506cdf0e10cSrcweir aEd1.SetAccessibleRelationLabeledBy(&aWidthFT); 507cdf0e10cSrcweir aEd2.SetAccessibleRelationLabeledBy(&aWidthFT); 508cdf0e10cSrcweir aEd3.SetAccessibleRelationLabeledBy(&aWidthFT); 509cdf0e10cSrcweir aDistEd1.SetAccessibleRelationLabeledBy(&aDistFT); 510cdf0e10cSrcweir aDistEd2.SetAccessibleRelationLabeledBy(&aDistFT); 511cdf0e10cSrcweir aBtnUp.SetAccessibleRelationLabeledBy(&aColumnFT); 512cdf0e10cSrcweir aBtnDown.SetAccessibleRelationLabeledBy(&aColumnFT); 513cdf0e10cSrcweir 514cdf0e10cSrcweir aDefaultVS.SetHelpId(HID_COLUMN_VALUESET); 515cdf0e10cSrcweir aDefaultVS.SetColCount( 5 ); 516cdf0e10cSrcweir aDefaultVS.SetStyle( aDefaultVS.GetStyle() 517cdf0e10cSrcweir | WB_ITEMBORDER 518cdf0e10cSrcweir | WB_DOUBLEBORDER ); 519cdf0e10cSrcweir 520*ca62e2c2SSteve Yin //IAccessibility2 Impplementaton 2009----- 521cdf0e10cSrcweir for( i = 0; i < 5; i++) 522*ca62e2c2SSteve Yin //Solution:Set accessible name one be one 523*ca62e2c2SSteve Yin //aDefaultVS.InsertItem( i + 1, i ); 524*ca62e2c2SSteve Yin { 525*ca62e2c2SSteve Yin String aItemText; 526*ca62e2c2SSteve Yin switch( i ) 527*ca62e2c2SSteve Yin { 528*ca62e2c2SSteve Yin case 0: 529*ca62e2c2SSteve Yin aItemText = SW_RESSTR( STR_COLUMN_VALUESET_ITEM0 ) ; 530*ca62e2c2SSteve Yin break; 531*ca62e2c2SSteve Yin case 1: 532*ca62e2c2SSteve Yin aItemText = SW_RESSTR( STR_COLUMN_VALUESET_ITEM1 ) ; 533*ca62e2c2SSteve Yin break; 534*ca62e2c2SSteve Yin case 2: 535*ca62e2c2SSteve Yin aItemText = SW_RESSTR( STR_COLUMN_VALUESET_ITEM2 ) ; 536*ca62e2c2SSteve Yin break; 537*ca62e2c2SSteve Yin case 3: 538*ca62e2c2SSteve Yin aItemText = SW_RESSTR( STR_COLUMN_VALUESET_ITEM3 ); 539*ca62e2c2SSteve Yin break; 540*ca62e2c2SSteve Yin case 4: 541*ca62e2c2SSteve Yin aItemText = SW_RESSTR( STR_COLUMN_VALUESET_ITEM4 ); 542*ca62e2c2SSteve Yin break; 543*ca62e2c2SSteve Yin default: 544*ca62e2c2SSteve Yin break; 545*ca62e2c2SSteve Yin } 546*ca62e2c2SSteve Yin aDefaultVS.InsertItem( i + 1, aItemText, i ); 547*ca62e2c2SSteve Yin } 548*ca62e2c2SSteve Yin //-----IAccessibility2 Impplementaton 2009 549cdf0e10cSrcweir 550cdf0e10cSrcweir aDefaultVS.SetSelectHdl(LINK(this, SwColumnPage, SetDefaultsHdl)); 551cdf0e10cSrcweir 552cdf0e10cSrcweir // Controls fuer Zusaetzebereich beim MoreButton anmelden 553cdf0e10cSrcweir Link aCLNrLk = LINK(this, SwColumnPage, ColModify); 554cdf0e10cSrcweir aCLNrEdt.SetLoseFocusHdl(aCLNrLk); 555cdf0e10cSrcweir aCLNrEdt.SetUpHdl(aCLNrLk); 556cdf0e10cSrcweir aCLNrEdt.SetDownHdl(aCLNrLk); 557cdf0e10cSrcweir Link aLk = LINK(this, SwColumnPage, GapModify); 558cdf0e10cSrcweir aDistEd1.SetUpHdl(aLk); 559cdf0e10cSrcweir aDistEd1.SetDownHdl(aLk); 560cdf0e10cSrcweir aDistEd1.SetLoseFocusHdl(aLk); 561cdf0e10cSrcweir aDistEd2.SetUpHdl(aLk); 562cdf0e10cSrcweir aDistEd2.SetDownHdl(aLk); 563cdf0e10cSrcweir aDistEd2.SetLoseFocusHdl(aLk); 564cdf0e10cSrcweir 565cdf0e10cSrcweir aLk = LINK(this, SwColumnPage, EdModify); 566cdf0e10cSrcweir 567cdf0e10cSrcweir aEd1.SetUpHdl(aLk); 568cdf0e10cSrcweir aEd1.SetDownHdl(aLk); 569cdf0e10cSrcweir aEd1.SetLoseFocusHdl(aLk); 570cdf0e10cSrcweir 571cdf0e10cSrcweir aEd2.SetUpHdl(aLk); 572cdf0e10cSrcweir aEd2.SetDownHdl(aLk); 573cdf0e10cSrcweir aEd2.SetLoseFocusHdl(aLk); 574cdf0e10cSrcweir 575cdf0e10cSrcweir aEd3.SetUpHdl(aLk); 576cdf0e10cSrcweir aEd3.SetDownHdl(aLk); 577cdf0e10cSrcweir aEd3.SetLoseFocusHdl(aLk); 578cdf0e10cSrcweir 579cdf0e10cSrcweir aBtnUp.SetClickHdl(LINK(this, SwColumnPage, Up)); 580cdf0e10cSrcweir aBtnDown.SetClickHdl(LINK(this, SwColumnPage, Down)); 581cdf0e10cSrcweir aAutoWidthBox.SetClickHdl(LINK(this, SwColumnPage, AutoWidthHdl)); 582cdf0e10cSrcweir 583cdf0e10cSrcweir aLk = LINK( this, SwColumnPage, UpdateColMgr ); 584cdf0e10cSrcweir aLineTypeDLB.SetSelectHdl( aLk ); 585cdf0e10cSrcweir aLineHeightEdit.SetModifyHdl( aLk ); 586cdf0e10cSrcweir aLinePosDLB.SetSelectHdl( aLk ); 587cdf0e10cSrcweir 588cdf0e10cSrcweir // Trennlinie 589cdf0e10cSrcweir aLineTypeDLB.SetUnit( FUNIT_POINT ); 590cdf0e10cSrcweir aLineTypeDLB.SetSourceUnit( FUNIT_TWIP ); 591cdf0e10cSrcweir for( i = 0; i < nLineCount; ++i ) 592cdf0e10cSrcweir aLineTypeDLB.InsertEntry( 100 * nLines[ i ] ); 593cdf0e10cSrcweir } 594cdf0e10cSrcweir 595cdf0e10cSrcweir 596cdf0e10cSrcweir 597cdf0e10cSrcweir SwColumnPage::~SwColumnPage() 598cdf0e10cSrcweir { 599cdf0e10cSrcweir delete pColMgr; 600cdf0e10cSrcweir } 601cdf0e10cSrcweir 602cdf0e10cSrcweir /*-------------------------------------------------------------------- 603cdf0e10cSrcweir Beschreibung: 604cdf0e10cSrcweir --------------------------------------------------------------------*/ 605cdf0e10cSrcweir 606cdf0e10cSrcweir 607cdf0e10cSrcweir void SwColumnPage::SetPageWidth(long nPageWidth) 608cdf0e10cSrcweir { 609cdf0e10cSrcweir long nNewMaxWidth = static_cast< long >(aEd1.NormalizePercent(nPageWidth)); 610cdf0e10cSrcweir 611cdf0e10cSrcweir aDistEd1.SetMax(nNewMaxWidth, FUNIT_TWIP); 612cdf0e10cSrcweir aDistEd2.SetMax(nNewMaxWidth, FUNIT_TWIP); 613cdf0e10cSrcweir aEd1.SetMax(nNewMaxWidth, FUNIT_TWIP); 614cdf0e10cSrcweir aEd2.SetMax(nNewMaxWidth, FUNIT_TWIP); 615cdf0e10cSrcweir aEd3.SetMax(nNewMaxWidth, FUNIT_TWIP); 616cdf0e10cSrcweir } 617cdf0e10cSrcweir 618cdf0e10cSrcweir /*-------------------------------------------------------------------- 619cdf0e10cSrcweir Beschreibung: 620cdf0e10cSrcweir --------------------------------------------------------------------*/ 621cdf0e10cSrcweir 622cdf0e10cSrcweir 623cdf0e10cSrcweir 624cdf0e10cSrcweir void SwColumnPage::Reset(const SfxItemSet &rSet) 625cdf0e10cSrcweir { 626cdf0e10cSrcweir sal_uInt16 nHtmlMode = ::GetHtmlMode((const SwDocShell*)SfxObjectShell::Current()); 627cdf0e10cSrcweir if(nHtmlMode & HTMLMODE_ON) 628cdf0e10cSrcweir { 629cdf0e10cSrcweir bHtmlMode = sal_True; 630cdf0e10cSrcweir aAutoWidthBox.Enable(sal_False); 631cdf0e10cSrcweir } 632cdf0e10cSrcweir FieldUnit aMetric = ::GetDfltMetric(bHtmlMode); 633cdf0e10cSrcweir SetMetric(aEd1, aMetric); 634cdf0e10cSrcweir SetMetric(aEd2, aMetric); 635cdf0e10cSrcweir SetMetric(aEd3, aMetric); 636cdf0e10cSrcweir SetMetric(aDistEd1, aMetric); 637cdf0e10cSrcweir SetMetric(aDistEd2, aMetric); 638cdf0e10cSrcweir 639cdf0e10cSrcweir delete pColMgr; 640cdf0e10cSrcweir pColMgr = new SwColMgr(rSet); 641cdf0e10cSrcweir nCols = pColMgr->GetCount() ; 642cdf0e10cSrcweir aCLNrEdt.SetMax(Max((sal_uInt16)aCLNrEdt.GetMax(), (sal_uInt16)nCols)); 643cdf0e10cSrcweir aCLNrEdt.SetLast(Max(nCols,(sal_uInt16)aCLNrEdt.GetMax())); 644cdf0e10cSrcweir 645cdf0e10cSrcweir if(bFrm) 646cdf0e10cSrcweir { 647cdf0e10cSrcweir if(bFormat) // hier gibt es keine Size 648cdf0e10cSrcweir pColMgr->SetActualWidth(FRAME_FORMAT_WIDTH); 649cdf0e10cSrcweir else 650cdf0e10cSrcweir { 651cdf0e10cSrcweir const SwFmtFrmSize& rSize = (const SwFmtFrmSize&)rSet.Get(RES_FRM_SIZE); 652cdf0e10cSrcweir const SvxBoxItem& rBox = (const SvxBoxItem&) rSet.Get(RES_BOX); 653cdf0e10cSrcweir pColMgr->SetActualWidth((sal_uInt16)rSize.GetSize().Width() - rBox.GetDistance()); 654cdf0e10cSrcweir } 655cdf0e10cSrcweir } 656cdf0e10cSrcweir if(aBalanceColsCB.IsVisible()) 657cdf0e10cSrcweir { 658cdf0e10cSrcweir const SfxPoolItem* pItem; 659cdf0e10cSrcweir if( SFX_ITEM_SET == rSet.GetItemState( RES_COLUMNBALANCE, sal_False, &pItem )) 660cdf0e10cSrcweir aBalanceColsCB.Check(!((const SwFmtNoBalancedColumns*)pItem)->GetValue()); 661cdf0e10cSrcweir else 662cdf0e10cSrcweir aBalanceColsCB.Check( sal_True ); 663cdf0e10cSrcweir } 664cdf0e10cSrcweir 665cdf0e10cSrcweir //text direction 666cdf0e10cSrcweir if( SFX_ITEM_AVAILABLE <= rSet.GetItemState( RES_FRAMEDIR ) ) 667cdf0e10cSrcweir { 668cdf0e10cSrcweir const SvxFrameDirectionItem& rItem = (const SvxFrameDirectionItem&)rSet.Get(RES_FRAMEDIR); 669cdf0e10cSrcweir sal_uInt32 nVal = rItem.GetValue(); 670cdf0e10cSrcweir sal_uInt16 nPos = aTextDirectionLB.GetEntryPos( (void*) nVal ); 671cdf0e10cSrcweir aTextDirectionLB.SelectEntryPos( nPos ); 672cdf0e10cSrcweir aTextDirectionLB.SaveValue(); 673cdf0e10cSrcweir } 674cdf0e10cSrcweir 675cdf0e10cSrcweir Init(); 676cdf0e10cSrcweir ActivatePage( rSet ); 677cdf0e10cSrcweir } 678cdf0e10cSrcweir 679cdf0e10cSrcweir /*-------------------------------------------------------------------- 680cdf0e10cSrcweir Beschreibung: TabPage erzeugen 681cdf0e10cSrcweir --------------------------------------------------------------------*/ 682cdf0e10cSrcweir 683cdf0e10cSrcweir 684cdf0e10cSrcweir 685cdf0e10cSrcweir SfxTabPage* SwColumnPage::Create(Window *pParent, const SfxItemSet &rSet) 686cdf0e10cSrcweir { 687cdf0e10cSrcweir return new SwColumnPage(pParent, rSet); 688cdf0e10cSrcweir } 689cdf0e10cSrcweir 690cdf0e10cSrcweir /*-------------------------------------------------------------------- 691cdf0e10cSrcweir Beschreibung: Attribute in den Set stopfen bei OK 692cdf0e10cSrcweir --------------------------------------------------------------------*/ 693cdf0e10cSrcweir 694cdf0e10cSrcweir 695cdf0e10cSrcweir 696cdf0e10cSrcweir sal_Bool SwColumnPage::FillItemSet(SfxItemSet &rSet) 697cdf0e10cSrcweir { 698cdf0e10cSrcweir if(aCLNrEdt.HasChildPathFocus()) 699cdf0e10cSrcweir aCLNrEdt.GetDownHdl().Call(&aCLNrEdt); 700cdf0e10cSrcweir // Im ItemSet setzen 701cdf0e10cSrcweir // Die aktuellen Einstellungen sind 702cdf0e10cSrcweir // schon vorhanden 703cdf0e10cSrcweir // 704cdf0e10cSrcweir const SfxPoolItem* pOldItem; 705cdf0e10cSrcweir const SwFmtCol& rCol = pColMgr->GetColumns(); 706cdf0e10cSrcweir if(0 == (pOldItem = GetOldItem( rSet, RES_COL )) || 707cdf0e10cSrcweir rCol != *pOldItem ) 708cdf0e10cSrcweir rSet.Put(rCol); 709cdf0e10cSrcweir 710cdf0e10cSrcweir if(aBalanceColsCB.IsVisible() ) 711cdf0e10cSrcweir { 712cdf0e10cSrcweir rSet.Put(SwFmtNoBalancedColumns(!aBalanceColsCB.IsChecked() )); 713cdf0e10cSrcweir } 714cdf0e10cSrcweir sal_uInt16 nPos; 715cdf0e10cSrcweir if( aTextDirectionLB.IsVisible() && 716cdf0e10cSrcweir ( nPos = aTextDirectionLB.GetSelectEntryPos() ) != 717cdf0e10cSrcweir aTextDirectionLB.GetSavedValue() ) 718cdf0e10cSrcweir { 719cdf0e10cSrcweir sal_uInt32 nDirection = (sal_uInt32)(sal_IntPtr)aTextDirectionLB.GetEntryData( nPos ); 720cdf0e10cSrcweir rSet.Put( SvxFrameDirectionItem( (SvxFrameDirection)nDirection, RES_FRAMEDIR)); 721cdf0e10cSrcweir } 722cdf0e10cSrcweir return sal_True; 723cdf0e10cSrcweir } 724cdf0e10cSrcweir 725cdf0e10cSrcweir /*-------------------------------------------------------------------- 726cdf0e10cSrcweir Beschreibung: ColumnManager updaten 727cdf0e10cSrcweir --------------------------------------------------------------------*/ 728cdf0e10cSrcweir 729cdf0e10cSrcweir 730cdf0e10cSrcweir 731cdf0e10cSrcweir IMPL_LINK( SwColumnPage, UpdateColMgr, void *, /*pField*/ ) 732cdf0e10cSrcweir { 733cdf0e10cSrcweir long nGutterWidth = pColMgr->GetGutterWidth(); 734cdf0e10cSrcweir if(nCols > 1) 735cdf0e10cSrcweir { 736cdf0e10cSrcweir // Ermitteln, ob die schmalste Spalte zu schmal ist 737cdf0e10cSrcweir // fuer den eingestellten Spaltenabstand 738cdf0e10cSrcweir long nMin = nColWidth[0]; 739cdf0e10cSrcweir sal_uInt16 i; 740cdf0e10cSrcweir 741cdf0e10cSrcweir for( i = 1; i < nCols; ++i) 742cdf0e10cSrcweir nMin = Min(nMin, nColWidth[i]); 743cdf0e10cSrcweir 744cdf0e10cSrcweir sal_Bool bAutoWidth = aAutoWidthBox.IsChecked(); 745cdf0e10cSrcweir if(!bAutoWidth) 746cdf0e10cSrcweir { 747cdf0e10cSrcweir pColMgr->SetAutoWidth(sal_False); 748cdf0e10cSrcweir // falls der Benutzer nicht die Gesamtbreite vergeben hat, 749cdf0e10cSrcweir // den fehlenden Betrag auf die letzte Spalte addieren. 750cdf0e10cSrcweir long nSum = 0; 751cdf0e10cSrcweir for(i = 0; i < nCols; ++i) 752cdf0e10cSrcweir nSum += nColWidth[i]; 753cdf0e10cSrcweir nGutterWidth = 0; 754cdf0e10cSrcweir for(i = 0; i < nCols - 1; ++i) 755cdf0e10cSrcweir nGutterWidth += nColDist[i]; 756cdf0e10cSrcweir nSum += nGutterWidth; 757cdf0e10cSrcweir 758cdf0e10cSrcweir long nMaxW = pColMgr->GetActualSize(); 759cdf0e10cSrcweir 760cdf0e10cSrcweir if( nSum < nMaxW ) 761cdf0e10cSrcweir nColWidth[nCols - 1] += nMaxW - nSum; 762cdf0e10cSrcweir 763cdf0e10cSrcweir pColMgr->SetColWidth( 0, static_cast< sal_uInt16 >(nColWidth[0] + (sal_uInt16)nColDist[0]/2) ); 764cdf0e10cSrcweir for( i = 1; i < nCols-1; ++i ) 765cdf0e10cSrcweir { 766cdf0e10cSrcweir long nActDist = (nColDist[i] + nColDist[i - 1]) / 2; 767cdf0e10cSrcweir pColMgr->SetColWidth( i, (sal_uInt16)nColWidth[i] + (sal_uInt16)nActDist ); 768cdf0e10cSrcweir } 769cdf0e10cSrcweir pColMgr->SetColWidth( nCols-1, static_cast< sal_uInt16 >(nColWidth[nCols-1] + nColDist[nCols -2]/2) ); 770cdf0e10cSrcweir 771cdf0e10cSrcweir } 772cdf0e10cSrcweir 773cdf0e10cSrcweir // keins ist ausgeschaltet 774cdf0e10cSrcweir const sal_uInt16 nPos = aLineTypeDLB.GetSelectEntryPos(); 775cdf0e10cSrcweir sal_Bool bEnable = 0 != nPos; 776cdf0e10cSrcweir aLineHeightEdit.Enable( bEnable ); 777cdf0e10cSrcweir aLineHeightLbl.Enable( bEnable ); 778cdf0e10cSrcweir if( !bEnable ) 779cdf0e10cSrcweir pColMgr->SetNoLine(); 780cdf0e10cSrcweir else if( LISTBOX_ENTRY_NOTFOUND != nPos ) 781cdf0e10cSrcweir { 782cdf0e10cSrcweir pColMgr->SetLineWidthAndColor(nLines[nPos - 1], Color(COL_BLACK) ); 783cdf0e10cSrcweir pColMgr->SetAdjust( SwColLineAdj( 784cdf0e10cSrcweir aLinePosDLB.GetSelectEntryPos() + 1) ); 785cdf0e10cSrcweir pColMgr->SetLineHeightPercent((short)aLineHeightEdit.GetValue()); 786cdf0e10cSrcweir bEnable = pColMgr->GetLineHeightPercent() != 100; 787cdf0e10cSrcweir } 788cdf0e10cSrcweir aLinePosLbl.Enable( bEnable ); 789cdf0e10cSrcweir aLinePosDLB.Enable( bEnable ); 790cdf0e10cSrcweir } 791cdf0e10cSrcweir else 792cdf0e10cSrcweir { 793cdf0e10cSrcweir pColMgr->NoCols(); 794cdf0e10cSrcweir nCols = 0; 795cdf0e10cSrcweir } 796cdf0e10cSrcweir 797cdf0e10cSrcweir //Maximalwerte setzen 798cdf0e10cSrcweir aCLNrEdt.SetMax(Max(1L, 799cdf0e10cSrcweir Min(long(nMaxCols), long( pColMgr->GetActualSize() / (nGutterWidth + MINLAY)) ))); 800cdf0e10cSrcweir aCLNrEdt.SetLast(aCLNrEdt.GetMax()); 801cdf0e10cSrcweir aCLNrEdt.Reformat(); 802cdf0e10cSrcweir 803cdf0e10cSrcweir //Beispielfenster anregen 804cdf0e10cSrcweir if(!bLockUpdate) 805cdf0e10cSrcweir { 806cdf0e10cSrcweir if(bFrm) 807cdf0e10cSrcweir { 808cdf0e10cSrcweir aFrmExampleWN.SetColumns( pColMgr->GetColumns() ); 809cdf0e10cSrcweir aFrmExampleWN.Invalidate(); 810cdf0e10cSrcweir } 811cdf0e10cSrcweir else 812cdf0e10cSrcweir aPgeExampleWN.Invalidate(); 813cdf0e10cSrcweir } 814cdf0e10cSrcweir 815cdf0e10cSrcweir return 0; 816cdf0e10cSrcweir } 817cdf0e10cSrcweir 818cdf0e10cSrcweir /*------------------------------------------------------------------------ 819cdf0e10cSrcweir Beschreibung: Initialisierung 820cdf0e10cSrcweir ------------------------------------------------------------------------*/ 821cdf0e10cSrcweir 822cdf0e10cSrcweir 823cdf0e10cSrcweir 824cdf0e10cSrcweir void SwColumnPage::Init() 825cdf0e10cSrcweir { 826cdf0e10cSrcweir aCLNrEdt.SetValue(nCols); 827cdf0e10cSrcweir 828cdf0e10cSrcweir sal_Bool bAutoWidth = pColMgr->IsAutoWidth() || bHtmlMode; 829cdf0e10cSrcweir aAutoWidthBox.Check( bAutoWidth ); 830cdf0e10cSrcweir 831cdf0e10cSrcweir sal_Int32 nColumnWidthSum = 0; 832cdf0e10cSrcweir // Setzen der Breiten 833cdf0e10cSrcweir sal_uInt16 i; 834cdf0e10cSrcweir for(i = 0; i < nCols; ++i) 835cdf0e10cSrcweir { 836cdf0e10cSrcweir nColWidth[i] = pColMgr->GetColWidth(i); 837cdf0e10cSrcweir nColumnWidthSum += nColWidth[i]; 838cdf0e10cSrcweir if(i < nCols - 1) 839cdf0e10cSrcweir nColDist[i] = pColMgr->GetGutterWidth(i); 840cdf0e10cSrcweir } 841cdf0e10cSrcweir 842cdf0e10cSrcweir if( 1 < nCols ) 843cdf0e10cSrcweir { 844cdf0e10cSrcweir // #97495# make sure that the automatic column widht's are always equal 845cdf0e10cSrcweir if(bAutoWidth) 846cdf0e10cSrcweir { 847cdf0e10cSrcweir nColumnWidthSum /= nCols; 848cdf0e10cSrcweir for(i = 0; i < nCols; ++i) 849cdf0e10cSrcweir nColWidth[i] = nColumnWidthSum; 850cdf0e10cSrcweir } 851cdf0e10cSrcweir SwColLineAdj eAdj = pColMgr->GetAdjust(); 852cdf0e10cSrcweir if( COLADJ_NONE == eAdj ) // der Dialog kennt kein NONE! 853cdf0e10cSrcweir { 854cdf0e10cSrcweir eAdj = COLADJ_TOP; 855cdf0e10cSrcweir //ohne Adjust auch kein Linientyp 856cdf0e10cSrcweir aLineTypeDLB.SelectEntryPos( 0 ); 857cdf0e10cSrcweir aLineHeightEdit.SetValue( 100 ); 858cdf0e10cSrcweir } 859cdf0e10cSrcweir else 860cdf0e10cSrcweir { 861cdf0e10cSrcweir aLineTypeDLB.SelectEntryPos( lcl_LineWidthToPos(( pColMgr->GetLineWidth() )) + 1); 862cdf0e10cSrcweir aLineHeightEdit.SetValue( pColMgr->GetLineHeightPercent() ); 863cdf0e10cSrcweir } 864cdf0e10cSrcweir aLinePosDLB.SelectEntryPos( static_cast< sal_uInt16 >(eAdj - 1) ); 865cdf0e10cSrcweir } 866cdf0e10cSrcweir else 867cdf0e10cSrcweir { 868cdf0e10cSrcweir aLinePosDLB.SelectEntryPos( 0 ); 869cdf0e10cSrcweir aLineTypeDLB.SelectEntryPos( 0 ); 870cdf0e10cSrcweir aLineHeightEdit.SetValue( 100 ); 871cdf0e10cSrcweir } 872cdf0e10cSrcweir 873cdf0e10cSrcweir UpdateCols(); 874cdf0e10cSrcweir Update(); 875cdf0e10cSrcweir 876cdf0e10cSrcweir // Maximale Spaltenzahl setzen 877cdf0e10cSrcweir // Werte kleiner als 1 sind nicht erlaubt 878cdf0e10cSrcweir aCLNrEdt.SetMax(Max(1L, 879cdf0e10cSrcweir Min(long(nMaxCols), long( pColMgr->GetActualSize() / nMinWidth) ))); 880cdf0e10cSrcweir } 881cdf0e10cSrcweir 882cdf0e10cSrcweir /*------------------------------------------------------------------------ 883cdf0e10cSrcweir Beschreibung: Die Anzahl der Spalten hat sich veraendert -- hier werden 884cdf0e10cSrcweir die Controls fuer die Bearbeitung der Spalten entsprechend 885cdf0e10cSrcweir der Spaltenzahl en- oder disabled. 886cdf0e10cSrcweir Falls es mehr als nVisCols (= 3) Spalten gibt, werden 887cdf0e10cSrcweir alle Edit enabled und die Buttons fuer das Scrollen 888cdf0e10cSrcweir ebenfalls. 889cdf0e10cSrcweir Andernfalls werden die Edits jeweils fuer die entsprechenden 890cdf0e10cSrcweir Spaltenzahl enabled; eine Spalte kann nicht bearbeitet werden. 891cdf0e10cSrcweir ------------------------------------------------------------------------*/ 892cdf0e10cSrcweir 893cdf0e10cSrcweir 894cdf0e10cSrcweir 895cdf0e10cSrcweir void SwColumnPage::UpdateCols() 896cdf0e10cSrcweir { 897cdf0e10cSrcweir sal_Bool bEnableBtns= sal_False; 898cdf0e10cSrcweir sal_Bool bEnable12 = sal_False; 899cdf0e10cSrcweir sal_Bool bEnable3 = sal_False; 900cdf0e10cSrcweir const sal_Bool bEdit = !aAutoWidthBox.IsChecked(); 901cdf0e10cSrcweir if ( nCols > nVisCols ) 902cdf0e10cSrcweir { 903cdf0e10cSrcweir bEnableBtns = sal_True && !bHtmlMode; 904cdf0e10cSrcweir bEnable12 = bEnable3 = bEdit; 905cdf0e10cSrcweir } 906cdf0e10cSrcweir else if( bEdit ) 907cdf0e10cSrcweir { 908cdf0e10cSrcweir // hier gibt es absichtlich kaum noch breaks 909cdf0e10cSrcweir switch(nCols) 910cdf0e10cSrcweir { 911cdf0e10cSrcweir case 3: bEnable3 = sal_True; 912cdf0e10cSrcweir case 2: bEnable12= sal_True; break; 913cdf0e10cSrcweir default: /* do nothing */; 914cdf0e10cSrcweir } 915cdf0e10cSrcweir } 916cdf0e10cSrcweir aEd1.Enable( bEnable12 ); 917cdf0e10cSrcweir aDistEd1.Enable(nCols > 1); 918cdf0e10cSrcweir aEd2.Enable( bEnable12 ); 919cdf0e10cSrcweir aDistEd2.Enable(bEnable3); 920cdf0e10cSrcweir aEd3.Enable( bEnable3 ); 921cdf0e10cSrcweir aLbl1.Enable(bEnable12 ); 922cdf0e10cSrcweir aLbl2.Enable(bEnable12 ); 923cdf0e10cSrcweir aLbl3.Enable(bEnable3 ); 924cdf0e10cSrcweir aBtnUp.Enable( bEnableBtns ); 925cdf0e10cSrcweir aBtnDown.Enable( bEnableBtns ); 926cdf0e10cSrcweir 927cdf0e10cSrcweir const sal_Bool bEnable = nCols > 1; 928cdf0e10cSrcweir if( !bEnable ) 929cdf0e10cSrcweir { 930cdf0e10cSrcweir aLinePosDLB.Enable( sal_False ); 931cdf0e10cSrcweir aLinePosLbl.Enable( sal_False ); 932cdf0e10cSrcweir } 933cdf0e10cSrcweir aLineHeightEdit.Enable( bEnable ); 934cdf0e10cSrcweir aLineHeightLbl.Enable( bEnable ); 935cdf0e10cSrcweir aLineTypeDLB.Enable( bEnable ); 936cdf0e10cSrcweir aLineTypeLbl.Enable( bEnable ); 937cdf0e10cSrcweir aAutoWidthBox.Enable( bEnable && !bHtmlMode ); 938cdf0e10cSrcweir } 939cdf0e10cSrcweir 940cdf0e10cSrcweir void SwColumnPage::SetLabels( sal_uInt16 nVis ) 941cdf0e10cSrcweir { 942cdf0e10cSrcweir String sLbl( '~' ); 943cdf0e10cSrcweir 944cdf0e10cSrcweir String sLbl2( String::CreateFromInt32( nVis + 1 )); 945cdf0e10cSrcweir String tmp1(sLbl2); 946cdf0e10cSrcweir sLbl2.Insert(sLbl, sLbl2.Len() - 1); 947cdf0e10cSrcweir aLbl1.SetText(sLbl2); 948cdf0e10cSrcweir 949cdf0e10cSrcweir sLbl2 = String::CreateFromInt32( nVis + 2 ); 950cdf0e10cSrcweir String tmp2(sLbl2); 951cdf0e10cSrcweir sLbl2.Insert(sLbl, sLbl2.Len() - 1); 952cdf0e10cSrcweir aLbl2.SetText(sLbl2); 953cdf0e10cSrcweir 954cdf0e10cSrcweir sLbl2 = String::CreateFromInt32( nVis + 3 ); 955cdf0e10cSrcweir String tmp3(sLbl2); 956cdf0e10cSrcweir sLbl2.Insert(sLbl, sLbl2.Len() - 1); 957cdf0e10cSrcweir aLbl3.SetText(sLbl2); 958cdf0e10cSrcweir String sColumnWidth = SW_RESSTR( STR_ACCESS_COLUMN_WIDTH ) ; 959cdf0e10cSrcweir sColumnWidth.SearchAndReplaceAscii("%1", tmp1); 960cdf0e10cSrcweir aEd1.SetAccessibleName(sColumnWidth); 961cdf0e10cSrcweir 962cdf0e10cSrcweir sColumnWidth = SW_RESSTR( STR_ACCESS_COLUMN_WIDTH ) ; 963cdf0e10cSrcweir sColumnWidth.SearchAndReplaceAscii("%1", tmp2); 964cdf0e10cSrcweir aEd2.SetAccessibleName(sColumnWidth); 965cdf0e10cSrcweir 966cdf0e10cSrcweir sColumnWidth = SW_RESSTR( STR_ACCESS_COLUMN_WIDTH ) ; 967cdf0e10cSrcweir sColumnWidth.SearchAndReplaceAscii("%1", tmp3); 968cdf0e10cSrcweir aEd3.SetAccessibleName(sColumnWidth); 969cdf0e10cSrcweir 970cdf0e10cSrcweir String sDist = SW_RESSTR( STR_ACCESS_PAGESETUP_SPACING ) ; 971cdf0e10cSrcweir String sDist1 = sDist; 972cdf0e10cSrcweir sDist1.SearchAndReplaceAscii("%1", tmp1); 973cdf0e10cSrcweir sDist1.SearchAndReplaceAscii("%2", tmp2); 974cdf0e10cSrcweir aDistEd1.SetAccessibleName(sDist1); 975cdf0e10cSrcweir 976cdf0e10cSrcweir String sDist2 = sDist; 977cdf0e10cSrcweir sDist2.SearchAndReplaceAscii("%1", tmp2); 978cdf0e10cSrcweir sDist2.SearchAndReplaceAscii("%2", tmp3); 979cdf0e10cSrcweir aDistEd2.SetAccessibleName(sDist2); 980cdf0e10cSrcweir } 981cdf0e10cSrcweir 982cdf0e10cSrcweir /*------------------------------------------------------------------------ 983cdf0e10cSrcweir Beschreibung: Handler, der bei einer Veraenderung der Spaltenzahl 984cdf0e10cSrcweir gerufen wird. 985cdf0e10cSrcweir Eine Aenderung der Spaltenzahl ueberschreibt eventuelle 986cdf0e10cSrcweir Breiteneinstellungen des Benutzers; alle Spalten sind 987cdf0e10cSrcweir gleich breit. 988cdf0e10cSrcweir ------------------------------------------------------------------------*/ 989cdf0e10cSrcweir 990cdf0e10cSrcweir IMPL_LINK( SwColumnPage, ColModify, NumericField *, pNF ) 991cdf0e10cSrcweir { 992cdf0e10cSrcweir nCols = (sal_uInt16)aCLNrEdt.GetValue(); 993cdf0e10cSrcweir //#107890# the handler is also called from LoseFocus() 994cdf0e10cSrcweir //then no change has been made and thus no action should be taken 995cdf0e10cSrcweir // #i17816# changing the displayed types within the ValueSet 996cdf0e10cSrcweir //from two columns to two columns with different settings doesn't invalidate the 997cdf0e10cSrcweir // example windows in ::ColModify() 998*ca62e2c2SSteve Yin //IAccessibility2 Impplementaton 2009----- 999*ca62e2c2SSteve Yin // the pColMgr->GetCount()'s return is some how bugged, 1000*ca62e2c2SSteve Yin // it will return 0 when actual count is 1, so fix it. 1001*ca62e2c2SSteve Yin //if(!pNF ||(pColMgr->GetCount() != nCols)) 1002*ca62e2c2SSteve Yin int nTemp = pColMgr->GetCount(); 1003*ca62e2c2SSteve Yin if(nTemp == 0) nTemp = 1; 1004*ca62e2c2SSteve Yin if( nTemp != nCols ) 1005*ca62e2c2SSteve Yin //-----IAccessibility2 Impplementaton 2009 1006cdf0e10cSrcweir { 1007cdf0e10cSrcweir if(pNF) 1008cdf0e10cSrcweir aDefaultVS.SetNoSelection(); 1009cdf0e10cSrcweir long nDist = static_cast< long >(aDistEd1.DenormalizePercent(aDistEd1.GetValue(FUNIT_TWIP))); 1010cdf0e10cSrcweir pColMgr->SetCount(nCols, (sal_uInt16)nDist); 1011cdf0e10cSrcweir for(sal_uInt16 i = 0; i < nCols; i++) 1012cdf0e10cSrcweir nColDist[i] = nDist; 1013cdf0e10cSrcweir nFirstVis = 0; 1014cdf0e10cSrcweir SetLabels( nFirstVis ); 1015cdf0e10cSrcweir UpdateCols(); 1016cdf0e10cSrcweir ResetColWidth(); 1017cdf0e10cSrcweir Update(); 1018cdf0e10cSrcweir } 1019cdf0e10cSrcweir 1020cdf0e10cSrcweir return 0; 1021cdf0e10cSrcweir } 1022cdf0e10cSrcweir 1023cdf0e10cSrcweir /*------------------------------------------------------------------------ 1024cdf0e10cSrcweir Beschreibung: Modify- Handler fuer eine Aenderung der Spaltenbreite 1025cdf0e10cSrcweir oder des Spaltenabstandes. 1026cdf0e10cSrcweir Diese Aenderungen wirken sich erst zeitversetzt aus. 1027cdf0e10cSrcweir Durch eine Aenderung der Spaltenbreite wird die automatische 1028cdf0e10cSrcweir Berechnung der Spaltenbreite ausser Kraft gesetzt; erst 1029cdf0e10cSrcweir eine Aenderung der Spaltenzahl kehrt wieder zu diesem 1030cdf0e10cSrcweir Default zurueck. 1031cdf0e10cSrcweir ------------------------------------------------------------------------*/ 1032cdf0e10cSrcweir 1033cdf0e10cSrcweir 1034cdf0e10cSrcweir 1035cdf0e10cSrcweir IMPL_LINK( SwColumnPage, GapModify, PercentField *, pFld ) 1036cdf0e10cSrcweir { 1037cdf0e10cSrcweir long nActValue = static_cast< long >(pFld->DenormalizePercent(pFld->GetValue(FUNIT_TWIP))); 1038cdf0e10cSrcweir if(nCols < 2) 1039cdf0e10cSrcweir return 0; 1040cdf0e10cSrcweir if(aAutoWidthBox.IsChecked()) 1041cdf0e10cSrcweir { 1042cdf0e10cSrcweir sal_uInt16 nMaxGap = pColMgr->GetActualSize() - nCols * MINLAY; 1043cdf0e10cSrcweir DBG_ASSERT(nCols, "Abstand kann nicht ohne Spalten eingestellt werden"); 1044cdf0e10cSrcweir nMaxGap /= nCols - 1; 1045cdf0e10cSrcweir if(nActValue > nMaxGap) 1046cdf0e10cSrcweir { 1047cdf0e10cSrcweir nActValue = nMaxGap; 1048cdf0e10cSrcweir aDistEd1.SetPrcntValue(aDistEd1.NormalizePercent(nMaxGap), FUNIT_TWIP); 1049cdf0e10cSrcweir } 1050cdf0e10cSrcweir pColMgr->SetGutterWidth((sal_uInt16)nActValue); 1051cdf0e10cSrcweir for(sal_uInt16 i = 0; i < nCols; i++) 1052cdf0e10cSrcweir nColDist[i] = nActValue; 1053cdf0e10cSrcweir 1054cdf0e10cSrcweir ResetColWidth(); 1055cdf0e10cSrcweir UpdateCols(); 1056cdf0e10cSrcweir } 1057cdf0e10cSrcweir else 1058cdf0e10cSrcweir 1059cdf0e10cSrcweir { 1060cdf0e10cSrcweir sal_uInt16 nOffset = 0; 1061cdf0e10cSrcweir if(pFld == &aDistEd2) 1062cdf0e10cSrcweir { 1063cdf0e10cSrcweir nOffset = 1; 1064cdf0e10cSrcweir } 1065cdf0e10cSrcweir long nDiff = nActValue - nColDist[nFirstVis + nOffset]; 1066cdf0e10cSrcweir if(nDiff) 1067cdf0e10cSrcweir { 1068cdf0e10cSrcweir long nLeft = nColWidth[nFirstVis + nOffset]; 1069cdf0e10cSrcweir long nRight = nColWidth[nFirstVis + nOffset + 1]; 1070cdf0e10cSrcweir if(nLeft + nRight + 2 * MINLAY < nDiff) 1071cdf0e10cSrcweir nDiff = nLeft + nRight - 2 * MINLAY; 1072cdf0e10cSrcweir if(nDiff < nRight - MINLAY) 1073cdf0e10cSrcweir { 1074cdf0e10cSrcweir nRight -= nDiff; 1075cdf0e10cSrcweir } 1076cdf0e10cSrcweir else 1077cdf0e10cSrcweir { 1078cdf0e10cSrcweir long nTemp = nDiff - nRight + MINLAY; 1079cdf0e10cSrcweir nRight = MINLAY; 1080cdf0e10cSrcweir if(nLeft > nTemp - MINLAY) 1081cdf0e10cSrcweir { 1082cdf0e10cSrcweir nLeft -= nTemp; 1083cdf0e10cSrcweir nTemp = 0; 1084cdf0e10cSrcweir } 1085cdf0e10cSrcweir else 1086cdf0e10cSrcweir { 1087cdf0e10cSrcweir nTemp -= nLeft + MINLAY; 1088cdf0e10cSrcweir nLeft = MINLAY; 1089cdf0e10cSrcweir } 1090cdf0e10cSrcweir nDiff = nTemp; 1091cdf0e10cSrcweir } 1092cdf0e10cSrcweir nColWidth[nFirstVis + nOffset] = nLeft; 1093cdf0e10cSrcweir nColWidth[nFirstVis + nOffset + 1] = nRight; 1094cdf0e10cSrcweir nColDist[nFirstVis + nOffset] += nDiff; 1095cdf0e10cSrcweir 1096cdf0e10cSrcweir pColMgr->SetColWidth( nFirstVis + nOffset, sal_uInt16(nLeft) ); 1097cdf0e10cSrcweir pColMgr->SetColWidth( nFirstVis + nOffset + 1, sal_uInt16(nRight) ); 1098cdf0e10cSrcweir pColMgr->SetGutterWidth( sal_uInt16(nColDist[nFirstVis + nOffset]), nFirstVis + nOffset ); 1099cdf0e10cSrcweir } 1100cdf0e10cSrcweir 1101cdf0e10cSrcweir } 1102cdf0e10cSrcweir Update(); 1103cdf0e10cSrcweir return 0; 1104cdf0e10cSrcweir } 1105cdf0e10cSrcweir 1106cdf0e10cSrcweir /*------------------------------------------------------------------------ 1107cdf0e10cSrcweir Beschreibung: 1108cdf0e10cSrcweir ------------------------------------------------------------------------*/ 1109cdf0e10cSrcweir 1110cdf0e10cSrcweir 1111cdf0e10cSrcweir 1112cdf0e10cSrcweir IMPL_LINK( SwColumnPage, EdModify, PercentField *, pField ) 1113cdf0e10cSrcweir { 1114cdf0e10cSrcweir pModifiedField = pField; 1115cdf0e10cSrcweir Timeout(0); 1116cdf0e10cSrcweir return 0; 1117cdf0e10cSrcweir } 1118cdf0e10cSrcweir /*------------------------------------------------------------------------ 1119cdf0e10cSrcweir Beschreibung: Handler hinter der Checkbox fuer automatische Breite. 1120cdf0e10cSrcweir Ist die Box gecheckt, koennen keine expliziten Werte 1121cdf0e10cSrcweir fuer die Spaltenbreite eingegeben werden. 1122cdf0e10cSrcweir ------------------------------------------------------------------------*/ 1123cdf0e10cSrcweir 1124cdf0e10cSrcweir 1125cdf0e10cSrcweir 1126cdf0e10cSrcweir IMPL_LINK( SwColumnPage, AutoWidthHdl, CheckBox *, pBox ) 1127cdf0e10cSrcweir { 1128cdf0e10cSrcweir long nDist = static_cast< long >(aDistEd1.DenormalizePercent(aDistEd1.GetValue(FUNIT_TWIP))); 1129cdf0e10cSrcweir pColMgr->SetCount(nCols, (sal_uInt16)nDist); 1130cdf0e10cSrcweir for(sal_uInt16 i = 0; i < nCols; i++) 1131cdf0e10cSrcweir nColDist[i] = nDist; 1132cdf0e10cSrcweir if(pBox->IsChecked()) 1133cdf0e10cSrcweir { 1134cdf0e10cSrcweir pColMgr->SetGutterWidth(sal_uInt16(nDist)); 1135cdf0e10cSrcweir ResetColWidth(); 1136cdf0e10cSrcweir } 1137cdf0e10cSrcweir pColMgr->SetAutoWidth(pBox->IsChecked(), sal_uInt16(nDist)); 1138cdf0e10cSrcweir UpdateCols(); 1139cdf0e10cSrcweir Update(); 1140cdf0e10cSrcweir return 0; 1141cdf0e10cSrcweir } 1142cdf0e10cSrcweir 1143cdf0e10cSrcweir /*------------------------------------------------------------------------ 1144cdf0e10cSrcweir Beschreibung: Raufscrollen der Inhalte der Edits. 1145cdf0e10cSrcweir ------------------------------------------------------------------------*/ 1146cdf0e10cSrcweir 1147cdf0e10cSrcweir IMPL_LINK( SwColumnPage, Up, Button *, EMPTYARG ) 1148cdf0e10cSrcweir { 1149cdf0e10cSrcweir if( nFirstVis ) 1150cdf0e10cSrcweir { 1151cdf0e10cSrcweir --nFirstVis; 1152cdf0e10cSrcweir SetLabels( nFirstVis ); 1153cdf0e10cSrcweir Update(); 1154cdf0e10cSrcweir } 1155cdf0e10cSrcweir return 0; 1156cdf0e10cSrcweir } 1157cdf0e10cSrcweir /*------------------------------------------------------------------------ 1158cdf0e10cSrcweir Beschreibung: Runterscrollen der Inhalte der Edits. 1159cdf0e10cSrcweir ------------------------------------------------------------------------*/ 1160cdf0e10cSrcweir 1161cdf0e10cSrcweir IMPL_LINK( SwColumnPage, Down, Button *, EMPTYARG ) 1162cdf0e10cSrcweir { 1163cdf0e10cSrcweir if( nFirstVis + nVisCols < nCols ) 1164cdf0e10cSrcweir { 1165cdf0e10cSrcweir ++nFirstVis; 1166cdf0e10cSrcweir SetLabels( nFirstVis ); 1167cdf0e10cSrcweir Update(); 1168cdf0e10cSrcweir } 1169cdf0e10cSrcweir return 0; 1170cdf0e10cSrcweir } 1171cdf0e10cSrcweir /*------------------------------------------------------------------------ 1172cdf0e10cSrcweir Beschreibung: Relikt aus alten Zeiten - jetzt direkt ohne time 1173cdf0e10cSrcweir * Timer- Handler; angetriggert durch eine Aenderung der 1174cdf0e10cSrcweir Spaltenbreite oder des Spaltenabstandes. 1175cdf0e10cSrcweir ------------------------------------------------------------------------*/ 1176cdf0e10cSrcweir 1177cdf0e10cSrcweir IMPL_LINK( SwColumnPage, Timeout, Timer *, EMPTYARG ) 1178cdf0e10cSrcweir { 1179cdf0e10cSrcweir DBG_PROFSTART(columnhdl) ; 1180cdf0e10cSrcweir if(pModifiedField) 1181cdf0e10cSrcweir { 1182cdf0e10cSrcweir // Finden der veraenderten Spalte 1183cdf0e10cSrcweir sal_uInt16 nChanged = nFirstVis; 1184cdf0e10cSrcweir if(pModifiedField == &aEd2) 1185cdf0e10cSrcweir ++nChanged; 1186cdf0e10cSrcweir else if(pModifiedField == &aEd3) 1187cdf0e10cSrcweir nChanged += 2; 1188cdf0e10cSrcweir /*else if(pModifiedField == &aEd4) 1189cdf0e10cSrcweir nChanged += 3;*/ 1190cdf0e10cSrcweir 1191cdf0e10cSrcweir long nNewWidth = (sal_uInt16) 1192cdf0e10cSrcweir pModifiedField->DenormalizePercent(pModifiedField->GetValue(FUNIT_TWIP)); 1193cdf0e10cSrcweir long nDiff = nNewWidth - nColWidth[nChanged]; 1194cdf0e10cSrcweir 1195cdf0e10cSrcweir // wenn es die letzte Spalte ist 1196cdf0e10cSrcweir if(nChanged == nCols - 1) 1197cdf0e10cSrcweir { 1198cdf0e10cSrcweir nColWidth[0] -= nDiff; 1199cdf0e10cSrcweir if(nColWidth[0] < (long)nMinWidth) 1200cdf0e10cSrcweir { 1201cdf0e10cSrcweir nNewWidth -= nMinWidth - nColWidth[0]; 1202cdf0e10cSrcweir nColWidth[0] = nMinWidth; 1203cdf0e10cSrcweir } 1204cdf0e10cSrcweir 1205cdf0e10cSrcweir } 1206cdf0e10cSrcweir else if(nDiff) 1207cdf0e10cSrcweir { 1208cdf0e10cSrcweir nColWidth[nChanged + 1] -= nDiff; 1209cdf0e10cSrcweir if(nColWidth[nChanged + 1] < (long) nMinWidth) 1210cdf0e10cSrcweir { 1211cdf0e10cSrcweir nNewWidth -= nMinWidth - nColWidth[nChanged + 1]; 1212cdf0e10cSrcweir nColWidth[nChanged + 1] = nMinWidth; 1213cdf0e10cSrcweir } 1214cdf0e10cSrcweir } 1215cdf0e10cSrcweir nColWidth[nChanged] = nNewWidth; 1216cdf0e10cSrcweir pModifiedField = 0; 1217cdf0e10cSrcweir } 1218cdf0e10cSrcweir Update(); 1219cdf0e10cSrcweir DBG_PROFSTOP(columnhdl) ; 1220cdf0e10cSrcweir return 0; 1221cdf0e10cSrcweir } 1222cdf0e10cSrcweir /*------------------------------------------------------------------------ 1223cdf0e10cSrcweir Beschreibung: Aktualisierung der Anzeige 1224cdf0e10cSrcweir ------------------------------------------------------------------------*/ 1225cdf0e10cSrcweir 1226cdf0e10cSrcweir 1227cdf0e10cSrcweir 1228cdf0e10cSrcweir void SwColumnPage::Update() 1229cdf0e10cSrcweir { 1230cdf0e10cSrcweir aBalanceColsCB.Enable(nCols > 1); 1231cdf0e10cSrcweir if(nCols >= 2) 1232cdf0e10cSrcweir { 1233cdf0e10cSrcweir aEd1.SetPrcntValue(aEd1.NormalizePercent(nColWidth[nFirstVis]), FUNIT_TWIP); 1234cdf0e10cSrcweir aDistEd1.SetPrcntValue(aDistEd1.NormalizePercent(nColDist[nFirstVis]), FUNIT_TWIP); 1235cdf0e10cSrcweir aEd2.SetPrcntValue(aEd2.NormalizePercent(nColWidth[nFirstVis + 1]), FUNIT_TWIP); 1236cdf0e10cSrcweir if(nCols >= 3) 1237cdf0e10cSrcweir { 1238cdf0e10cSrcweir aDistEd2.SetPrcntValue(aDistEd2.NormalizePercent(nColDist[nFirstVis + 1]), FUNIT_TWIP); 1239cdf0e10cSrcweir aEd3.SetPrcntValue(aEd3.NormalizePercent(nColWidth[nFirstVis + 2]), FUNIT_TWIP); 1240cdf0e10cSrcweir } 1241cdf0e10cSrcweir else 1242cdf0e10cSrcweir { 1243cdf0e10cSrcweir aEd3.SetText(aEmptyStr); 1244cdf0e10cSrcweir aDistEd2.SetText(aEmptyStr); 1245cdf0e10cSrcweir } 1246cdf0e10cSrcweir } 1247cdf0e10cSrcweir else 1248cdf0e10cSrcweir { 1249cdf0e10cSrcweir aEd1.SetText(aEmptyStr); 1250cdf0e10cSrcweir aEd2.SetText(aEmptyStr); 1251cdf0e10cSrcweir aEd3.SetText(aEmptyStr); 1252cdf0e10cSrcweir aDistEd1.SetText(aEmptyStr); 1253cdf0e10cSrcweir aDistEd2.SetText(aEmptyStr); 1254cdf0e10cSrcweir } 1255cdf0e10cSrcweir UpdateColMgr(0); 1256cdf0e10cSrcweir } 1257cdf0e10cSrcweir 1258cdf0e10cSrcweir /*-------------------------------------------------------------------- 1259cdf0e10cSrcweir Beschreibung: Update Bsp 1260cdf0e10cSrcweir --------------------------------------------------------------------*/ 1261cdf0e10cSrcweir 1262cdf0e10cSrcweir 1263cdf0e10cSrcweir 1264cdf0e10cSrcweir void SwColumnPage::ActivatePage(const SfxItemSet& rSet) 1265cdf0e10cSrcweir { 1266cdf0e10cSrcweir if(!bFrm) 1267cdf0e10cSrcweir { 1268cdf0e10cSrcweir if( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_PAGE_SIZE )) 1269cdf0e10cSrcweir { 1270cdf0e10cSrcweir const SvxSizeItem& rSize = (const SvxSizeItem&)rSet.Get( 1271cdf0e10cSrcweir SID_ATTR_PAGE_SIZE); 1272cdf0e10cSrcweir const SvxLRSpaceItem& rLRSpace = (const SvxLRSpaceItem&)rSet.Get( 1273cdf0e10cSrcweir RES_LR_SPACE ); 1274cdf0e10cSrcweir const SvxBoxItem& rBox = (const SvxBoxItem&) rSet.Get(RES_BOX); 1275cdf0e10cSrcweir sal_uInt16 nActWidth = static_cast< sal_uInt16 >(rSize.GetSize().Width() 1276cdf0e10cSrcweir - rLRSpace.GetLeft() - rLRSpace.GetRight() - rBox.GetDistance()); 1277cdf0e10cSrcweir 1278cdf0e10cSrcweir if( pColMgr->GetActualSize() != nActWidth) 1279cdf0e10cSrcweir { 1280cdf0e10cSrcweir pColMgr->SetActualWidth(nActWidth); 1281cdf0e10cSrcweir ColModify( 0 ); 1282cdf0e10cSrcweir UpdateColMgr( 0 ); 1283cdf0e10cSrcweir } 1284cdf0e10cSrcweir } 1285cdf0e10cSrcweir aFrmExampleWN.Hide(); 1286cdf0e10cSrcweir aPgeExampleWN.UpdateExample( rSet, pColMgr ); 1287cdf0e10cSrcweir aPgeExampleWN.Show(); 1288cdf0e10cSrcweir 1289cdf0e10cSrcweir } 1290cdf0e10cSrcweir else 1291cdf0e10cSrcweir { 1292cdf0e10cSrcweir aPgeExampleWN.Hide(); 1293cdf0e10cSrcweir aFrmExampleWN.Show(); 1294cdf0e10cSrcweir 1295cdf0e10cSrcweir // Size 1296cdf0e10cSrcweir const SwFmtFrmSize& rSize = (const SwFmtFrmSize&)rSet.Get(RES_FRM_SIZE); 1297cdf0e10cSrcweir const SvxBoxItem& rBox = (const SvxBoxItem&) rSet.Get(RES_BOX); 1298cdf0e10cSrcweir 1299cdf0e10cSrcweir long nDistance = rBox.GetDistance(); 1300cdf0e10cSrcweir const sal_uInt16 nTotalWish = bFormat ? FRAME_FORMAT_WIDTH : sal_uInt16(rSize.GetWidth() - 2 * nDistance); 1301cdf0e10cSrcweir 1302cdf0e10cSrcweir // Maximalwerte der Spaltenbreiten setzen 1303cdf0e10cSrcweir SetPageWidth(nTotalWish); 1304cdf0e10cSrcweir 1305cdf0e10cSrcweir if(pColMgr->GetActualSize() != nTotalWish) 1306cdf0e10cSrcweir { 1307cdf0e10cSrcweir pColMgr->SetActualWidth(nTotalWish); 1308cdf0e10cSrcweir Init(); 1309cdf0e10cSrcweir } 1310cdf0e10cSrcweir sal_Bool bPercent; 1311cdf0e10cSrcweir // im Rahmenformat nur relative Angaben 1312cdf0e10cSrcweir if ( bFormat || (rSize.GetWidthPercent() && rSize.GetWidthPercent() != 0xff) ) 1313cdf0e10cSrcweir { 1314cdf0e10cSrcweir // Wert fuer 100% setzen 1315cdf0e10cSrcweir aEd1.SetRefValue(nTotalWish); 1316cdf0e10cSrcweir aEd2.SetRefValue(nTotalWish); 1317cdf0e10cSrcweir aEd3.SetRefValue(nTotalWish); 1318cdf0e10cSrcweir aDistEd1.SetRefValue(nTotalWish); 1319cdf0e10cSrcweir aDistEd2.SetRefValue(nTotalWish); 1320cdf0e10cSrcweir 1321cdf0e10cSrcweir // Auf %-Darstellung umschalten 1322cdf0e10cSrcweir bPercent = sal_True; 1323cdf0e10cSrcweir } 1324cdf0e10cSrcweir else 1325cdf0e10cSrcweir bPercent = sal_False; 1326cdf0e10cSrcweir 1327cdf0e10cSrcweir aEd1.ShowPercent(bPercent); 1328cdf0e10cSrcweir aEd2.ShowPercent(bPercent); 1329cdf0e10cSrcweir aEd3.ShowPercent(bPercent); 1330cdf0e10cSrcweir aDistEd1.ShowPercent(bPercent); 1331cdf0e10cSrcweir aDistEd2.ShowPercent(bPercent); 1332cdf0e10cSrcweir aDistEd1.MetricField::SetMin(0); 1333cdf0e10cSrcweir aDistEd2.MetricField::SetMin(0); 1334cdf0e10cSrcweir } 1335cdf0e10cSrcweir Update(); 1336cdf0e10cSrcweir } 1337cdf0e10cSrcweir 1338cdf0e10cSrcweir /*-------------------------------------------------------------------- 1339cdf0e10cSrcweir Beschreibung: 1340cdf0e10cSrcweir --------------------------------------------------------------------*/ 1341cdf0e10cSrcweir 1342cdf0e10cSrcweir 1343cdf0e10cSrcweir 1344cdf0e10cSrcweir int SwColumnPage::DeactivatePage(SfxItemSet *_pSet) 1345cdf0e10cSrcweir { 1346cdf0e10cSrcweir if(_pSet) 1347cdf0e10cSrcweir FillItemSet(*_pSet); 1348cdf0e10cSrcweir 1349cdf0e10cSrcweir return sal_True; 1350cdf0e10cSrcweir } 1351cdf0e10cSrcweir 1352cdf0e10cSrcweir 1353cdf0e10cSrcweir 1354cdf0e10cSrcweir sal_uInt16* SwColumnPage::GetRanges() 1355cdf0e10cSrcweir { 1356cdf0e10cSrcweir return aPageRg; 1357cdf0e10cSrcweir } 1358cdf0e10cSrcweir 1359cdf0e10cSrcweir /*-------------------------------------------------------------------- 1360cdf0e10cSrcweir Beschreibung: 1361cdf0e10cSrcweir --------------------------------------------------------------------*/ 1362cdf0e10cSrcweir 1363cdf0e10cSrcweir 1364cdf0e10cSrcweir 1365cdf0e10cSrcweir IMPL_LINK( SwColumnPage, SetDefaultsHdl, ValueSet *, pVS ) 1366cdf0e10cSrcweir { 1367cdf0e10cSrcweir sal_uInt16 nItem = pVS->GetSelectItemId(); 1368cdf0e10cSrcweir if( nItem < 4 ) 1369cdf0e10cSrcweir { 1370cdf0e10cSrcweir aCLNrEdt.SetValue( nItem ); 1371cdf0e10cSrcweir aAutoWidthBox.Check(); 1372cdf0e10cSrcweir aDistEd1.SetPrcntValue(0); 1373cdf0e10cSrcweir ColModify(0); 1374cdf0e10cSrcweir } 1375cdf0e10cSrcweir else 1376cdf0e10cSrcweir { 1377cdf0e10cSrcweir bLockUpdate = sal_True; 1378cdf0e10cSrcweir aCLNrEdt.SetValue( 2 ); 1379cdf0e10cSrcweir aAutoWidthBox.Check(sal_False); 1380cdf0e10cSrcweir aDistEd1.SetPrcntValue(0); 1381cdf0e10cSrcweir ColModify(0); 1382cdf0e10cSrcweir // jetzt noch das Breitenverhaeltnisse auf 2 : 1 bzw. 1 : 2 stellen 1383cdf0e10cSrcweir sal_uInt16 nSmall = pColMgr->GetActualSize() / 3; 1384cdf0e10cSrcweir if(nItem == 4) 1385cdf0e10cSrcweir { 1386cdf0e10cSrcweir aEd2.SetPrcntValue(aEd2.NormalizePercent(long(nSmall)), FUNIT_TWIP); 1387cdf0e10cSrcweir pModifiedField = &aEd2; 1388cdf0e10cSrcweir } 1389cdf0e10cSrcweir else 1390cdf0e10cSrcweir { 1391cdf0e10cSrcweir aEd1.SetPrcntValue(aEd1.NormalizePercent(long(nSmall)), FUNIT_TWIP); 1392cdf0e10cSrcweir pModifiedField = &aEd1; 1393cdf0e10cSrcweir } 1394cdf0e10cSrcweir bLockUpdate = sal_False; 1395cdf0e10cSrcweir Timeout(0); 1396cdf0e10cSrcweir 1397cdf0e10cSrcweir } 1398cdf0e10cSrcweir return 0; 1399cdf0e10cSrcweir } 1400cdf0e10cSrcweir 1401cdf0e10cSrcweir /*-----------------25.10.96 11.41------------------- 1402cdf0e10cSrcweir 1403cdf0e10cSrcweir --------------------------------------------------*/ 1404cdf0e10cSrcweir 1405cdf0e10cSrcweir 1406cdf0e10cSrcweir void SwColumnPage::SetFrmMode(sal_Bool bMod) 1407cdf0e10cSrcweir { 1408cdf0e10cSrcweir bFrm = bMod; 1409cdf0e10cSrcweir } 1410cdf0e10cSrcweir /* -----------------------------2002/06/19 13:08------------------------------ 1411cdf0e10cSrcweir 1412cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 1413cdf0e10cSrcweir void SwColumnPage::SetInSection(sal_Bool bSet) 1414cdf0e10cSrcweir { 1415cdf0e10cSrcweir if(!SW_MOD()->GetCTLOptions().IsCTLFontEnabled()) 1416cdf0e10cSrcweir return; 1417cdf0e10cSrcweir 1418cdf0e10cSrcweir aVertFL.Show(bSet); 1419cdf0e10cSrcweir aPropertiesFL.Show(bSet); 1420cdf0e10cSrcweir aTextDirectionFT.Show(bSet); 1421cdf0e10cSrcweir aTextDirectionLB.Show(bSet); 1422cdf0e10cSrcweir if(bSet) 1423cdf0e10cSrcweir { 1424cdf0e10cSrcweir //resize line type FixedLine 1425cdf0e10cSrcweir Point aLtPos = aFLLineType.GetPosPixel(); 1426cdf0e10cSrcweir Point aPropPos = aPropertiesFL.GetPosPixel(); 1427cdf0e10cSrcweir Size aSz = aFLLineType.GetSizePixel(); 1428cdf0e10cSrcweir aSz.Width() = aPropPos.X() - aLtPos.X() - LogicToPixel(Size(8, 8), MAP_APPFONT).Width(); 1429cdf0e10cSrcweir aFLLineType.SetSizePixel(aSz); 1430cdf0e10cSrcweir } 1431cdf0e10cSrcweir else 1432cdf0e10cSrcweir { 1433cdf0e10cSrcweir Size aSz = aFLLineType.GetSizePixel(); 1434cdf0e10cSrcweir aSz.Width() = LogicToPixel(Size(248, 248), MAP_APPFONT).Width(); 1435cdf0e10cSrcweir aFLLineType.SetSizePixel(aSz); 1436cdf0e10cSrcweir } 1437cdf0e10cSrcweir } 1438cdf0e10cSrcweir 1439cdf0e10cSrcweir /*-----------------07.03.97 08.33------------------- 1440cdf0e10cSrcweir 1441cdf0e10cSrcweir --------------------------------------------------*/ 1442cdf0e10cSrcweir 1443cdf0e10cSrcweir 1444cdf0e10cSrcweir void ColumnValueSet::UserDraw( const UserDrawEvent& rUDEvt ) 1445cdf0e10cSrcweir { 1446cdf0e10cSrcweir OutputDevice* pDev = rUDEvt.GetDevice(); 1447cdf0e10cSrcweir const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); 1448cdf0e10cSrcweir 1449cdf0e10cSrcweir Rectangle aRect = rUDEvt.GetRect(); 1450cdf0e10cSrcweir sal_uInt16 nItemId = rUDEvt.GetItemId(); 1451cdf0e10cSrcweir long nRectWidth = aRect.GetWidth(); 1452cdf0e10cSrcweir long nRectHeight = aRect.GetHeight(); 1453cdf0e10cSrcweir 1454cdf0e10cSrcweir Point aBLPos = aRect.TopLeft(); 1455cdf0e10cSrcweir Color aFillColor(pDev->GetFillColor()); 1456cdf0e10cSrcweir Color aLineColor(pDev->GetLineColor()); 1457cdf0e10cSrcweir pDev->SetFillColor(rStyleSettings.GetFieldColor()); 1458cdf0e10cSrcweir pDev->SetLineColor(SwViewOption::GetFontColor()); 1459cdf0e10cSrcweir 1460cdf0e10cSrcweir long nStep = Abs(Abs(nRectHeight * 95 /100) / 11); 1461cdf0e10cSrcweir long nTop = (nRectHeight - 11 * nStep ) / 2; 1462cdf0e10cSrcweir sal_uInt16 nCols = 0; 1463cdf0e10cSrcweir long nStarts[3]; 1464cdf0e10cSrcweir long nEnds[3]; 1465cdf0e10cSrcweir nStarts[0] = nRectWidth * 10 / 100; 1466cdf0e10cSrcweir switch( nItemId ) 1467cdf0e10cSrcweir { 1468cdf0e10cSrcweir case 1: 1469cdf0e10cSrcweir nEnds[0] = nRectWidth * 9 / 10; 1470cdf0e10cSrcweir nCols = 1; 1471cdf0e10cSrcweir break; 1472cdf0e10cSrcweir case 2: nCols = 2; 1473cdf0e10cSrcweir nEnds[0] = nRectWidth * 45 / 100; 1474cdf0e10cSrcweir nStarts[1] = nEnds[0] + nStep; 1475cdf0e10cSrcweir nEnds[1] = nRectWidth * 9 / 10; 1476cdf0e10cSrcweir break; 1477cdf0e10cSrcweir case 3: nCols = 3; 1478cdf0e10cSrcweir nEnds[0] = nRectWidth * 30 / 100; 1479cdf0e10cSrcweir nStarts[1] = nEnds[0] + nStep; 1480cdf0e10cSrcweir nEnds[1] = nRectWidth * 63 / 100; 1481cdf0e10cSrcweir nStarts[2] = nEnds[1] + nStep; 1482cdf0e10cSrcweir nEnds[2] = nRectWidth * 9 / 10; 1483cdf0e10cSrcweir break; 1484cdf0e10cSrcweir case 4: nCols = 2; 1485cdf0e10cSrcweir nEnds[0] = nRectWidth * 63 / 100; 1486cdf0e10cSrcweir nStarts[1] = nEnds[0] + nStep; 1487cdf0e10cSrcweir nEnds[1] = nRectWidth * 9 / 10; 1488cdf0e10cSrcweir break; 1489cdf0e10cSrcweir case 5: nCols = 2; 1490cdf0e10cSrcweir nEnds[0] = nRectWidth * 30 / 100; 1491cdf0e10cSrcweir nStarts[1] = nEnds[0] + nStep; 1492cdf0e10cSrcweir nEnds[1] = nRectWidth * 9 / 10; 1493cdf0e10cSrcweir break; 1494cdf0e10cSrcweir } 1495cdf0e10cSrcweir for(sal_uInt16 j = 0; j < nCols; j++ ) 1496cdf0e10cSrcweir { 1497cdf0e10cSrcweir Point aStart(aBLPos.X() + nStarts[j], 0); 1498cdf0e10cSrcweir Point aEnd(aBLPos.X() + nEnds[j], 0); 1499cdf0e10cSrcweir for( sal_uInt16 i = 0; i < 12; i ++) 1500cdf0e10cSrcweir { 1501cdf0e10cSrcweir aStart.Y() = aEnd.Y() = aBLPos.Y() + nTop + i * nStep; 1502cdf0e10cSrcweir pDev->DrawLine(aStart, aEnd); 1503cdf0e10cSrcweir } 1504cdf0e10cSrcweir } 1505cdf0e10cSrcweir pDev->SetFillColor(aFillColor); 1506cdf0e10cSrcweir pDev->SetLineColor(aLineColor); 1507cdf0e10cSrcweir } 1508cdf0e10cSrcweir 1509cdf0e10cSrcweir /*-----------------07.03.97 08.48------------------- 1510cdf0e10cSrcweir 1511cdf0e10cSrcweir --------------------------------------------------*/ 1512cdf0e10cSrcweir 1513cdf0e10cSrcweir ColumnValueSet::~ColumnValueSet() 1514cdf0e10cSrcweir { 1515cdf0e10cSrcweir } 1516cdf0e10cSrcweir /* -----------------------------02.04.2002 16:01------------------------------ 1517cdf0e10cSrcweir 1518cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 1519cdf0e10cSrcweir void ColumnValueSet::DataChanged( const DataChangedEvent& rDCEvt ) 1520cdf0e10cSrcweir { 1521cdf0e10cSrcweir if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && 1522cdf0e10cSrcweir (rDCEvt.GetFlags() & SETTINGS_STYLE) ) 1523cdf0e10cSrcweir { 1524cdf0e10cSrcweir Format(); 1525cdf0e10cSrcweir } 1526cdf0e10cSrcweir ValueSet::DataChanged( rDCEvt ); 1527cdf0e10cSrcweir } 1528cdf0e10cSrcweir 1529