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
IsMarkInSameSection(SwWrtShell & rWrtSh,const SwSection * pSect)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
SwColumnDlg(Window * pParent,SwWrtShell & rSh)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
~SwColumnDlg()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 * --------------------------------------------------*/
IMPL_LINK(SwColumnDlg,ObjectHdl,ListBox *,pBox)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 * --------------------------------------------------*/
IMPL_LINK(SwColumnDlg,OkHdl,OKButton *,EMPTYARG)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
GetMaxWidth(SwColMgr * pColMgr,sal_uInt16 nCols)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
DBG_NAME(columnhdl)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
ResetColWidth()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
SwColumnPage(Window * pParent,const SfxItemSet & rSet)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
520cdf0e10cSrcweir for( i = 0; i < 5; i++)
521*ca62e2c2SSteve Yin //Solution:Set accessible name one be one
522*ca62e2c2SSteve Yin //aDefaultVS.InsertItem( i + 1, i );
523*ca62e2c2SSteve Yin {
524*ca62e2c2SSteve Yin String aItemText;
525*ca62e2c2SSteve Yin switch( i )
526*ca62e2c2SSteve Yin {
527*ca62e2c2SSteve Yin case 0:
528*ca62e2c2SSteve Yin aItemText = SW_RESSTR( STR_COLUMN_VALUESET_ITEM0 ) ;
529*ca62e2c2SSteve Yin break;
530*ca62e2c2SSteve Yin case 1:
531*ca62e2c2SSteve Yin aItemText = SW_RESSTR( STR_COLUMN_VALUESET_ITEM1 ) ;
532*ca62e2c2SSteve Yin break;
533*ca62e2c2SSteve Yin case 2:
534*ca62e2c2SSteve Yin aItemText = SW_RESSTR( STR_COLUMN_VALUESET_ITEM2 ) ;
535*ca62e2c2SSteve Yin break;
536*ca62e2c2SSteve Yin case 3:
537*ca62e2c2SSteve Yin aItemText = SW_RESSTR( STR_COLUMN_VALUESET_ITEM3 );
538*ca62e2c2SSteve Yin break;
539*ca62e2c2SSteve Yin case 4:
540*ca62e2c2SSteve Yin aItemText = SW_RESSTR( STR_COLUMN_VALUESET_ITEM4 );
541*ca62e2c2SSteve Yin break;
542*ca62e2c2SSteve Yin default:
543*ca62e2c2SSteve Yin break;
544*ca62e2c2SSteve Yin }
545*ca62e2c2SSteve Yin aDefaultVS.InsertItem( i + 1, aItemText, i );
546*ca62e2c2SSteve Yin }
547cdf0e10cSrcweir
548cdf0e10cSrcweir aDefaultVS.SetSelectHdl(LINK(this, SwColumnPage, SetDefaultsHdl));
549cdf0e10cSrcweir
550cdf0e10cSrcweir // Controls fuer Zusaetzebereich beim MoreButton anmelden
551cdf0e10cSrcweir Link aCLNrLk = LINK(this, SwColumnPage, ColModify);
552cdf0e10cSrcweir aCLNrEdt.SetLoseFocusHdl(aCLNrLk);
553cdf0e10cSrcweir aCLNrEdt.SetUpHdl(aCLNrLk);
554cdf0e10cSrcweir aCLNrEdt.SetDownHdl(aCLNrLk);
555cdf0e10cSrcweir Link aLk = LINK(this, SwColumnPage, GapModify);
556cdf0e10cSrcweir aDistEd1.SetUpHdl(aLk);
557cdf0e10cSrcweir aDistEd1.SetDownHdl(aLk);
558cdf0e10cSrcweir aDistEd1.SetLoseFocusHdl(aLk);
559cdf0e10cSrcweir aDistEd2.SetUpHdl(aLk);
560cdf0e10cSrcweir aDistEd2.SetDownHdl(aLk);
561cdf0e10cSrcweir aDistEd2.SetLoseFocusHdl(aLk);
562cdf0e10cSrcweir
563cdf0e10cSrcweir aLk = LINK(this, SwColumnPage, EdModify);
564cdf0e10cSrcweir
565cdf0e10cSrcweir aEd1.SetUpHdl(aLk);
566cdf0e10cSrcweir aEd1.SetDownHdl(aLk);
567cdf0e10cSrcweir aEd1.SetLoseFocusHdl(aLk);
568cdf0e10cSrcweir
569cdf0e10cSrcweir aEd2.SetUpHdl(aLk);
570cdf0e10cSrcweir aEd2.SetDownHdl(aLk);
571cdf0e10cSrcweir aEd2.SetLoseFocusHdl(aLk);
572cdf0e10cSrcweir
573cdf0e10cSrcweir aEd3.SetUpHdl(aLk);
574cdf0e10cSrcweir aEd3.SetDownHdl(aLk);
575cdf0e10cSrcweir aEd3.SetLoseFocusHdl(aLk);
576cdf0e10cSrcweir
577cdf0e10cSrcweir aBtnUp.SetClickHdl(LINK(this, SwColumnPage, Up));
578cdf0e10cSrcweir aBtnDown.SetClickHdl(LINK(this, SwColumnPage, Down));
579cdf0e10cSrcweir aAutoWidthBox.SetClickHdl(LINK(this, SwColumnPage, AutoWidthHdl));
580cdf0e10cSrcweir
581cdf0e10cSrcweir aLk = LINK( this, SwColumnPage, UpdateColMgr );
582cdf0e10cSrcweir aLineTypeDLB.SetSelectHdl( aLk );
583cdf0e10cSrcweir aLineHeightEdit.SetModifyHdl( aLk );
584cdf0e10cSrcweir aLinePosDLB.SetSelectHdl( aLk );
585cdf0e10cSrcweir
586cdf0e10cSrcweir // Trennlinie
587cdf0e10cSrcweir aLineTypeDLB.SetUnit( FUNIT_POINT );
588cdf0e10cSrcweir aLineTypeDLB.SetSourceUnit( FUNIT_TWIP );
589cdf0e10cSrcweir for( i = 0; i < nLineCount; ++i )
590cdf0e10cSrcweir aLineTypeDLB.InsertEntry( 100 * nLines[ i ] );
591cdf0e10cSrcweir }
592cdf0e10cSrcweir
593cdf0e10cSrcweir
594cdf0e10cSrcweir
~SwColumnPage()595cdf0e10cSrcweir SwColumnPage::~SwColumnPage()
596cdf0e10cSrcweir {
597cdf0e10cSrcweir delete pColMgr;
598cdf0e10cSrcweir }
599cdf0e10cSrcweir
600cdf0e10cSrcweir /*--------------------------------------------------------------------
601cdf0e10cSrcweir Beschreibung:
602cdf0e10cSrcweir --------------------------------------------------------------------*/
603cdf0e10cSrcweir
604cdf0e10cSrcweir
SetPageWidth(long nPageWidth)605cdf0e10cSrcweir void SwColumnPage::SetPageWidth(long nPageWidth)
606cdf0e10cSrcweir {
607cdf0e10cSrcweir long nNewMaxWidth = static_cast< long >(aEd1.NormalizePercent(nPageWidth));
608cdf0e10cSrcweir
609cdf0e10cSrcweir aDistEd1.SetMax(nNewMaxWidth, FUNIT_TWIP);
610cdf0e10cSrcweir aDistEd2.SetMax(nNewMaxWidth, FUNIT_TWIP);
611cdf0e10cSrcweir aEd1.SetMax(nNewMaxWidth, FUNIT_TWIP);
612cdf0e10cSrcweir aEd2.SetMax(nNewMaxWidth, FUNIT_TWIP);
613cdf0e10cSrcweir aEd3.SetMax(nNewMaxWidth, FUNIT_TWIP);
614cdf0e10cSrcweir }
615cdf0e10cSrcweir
616cdf0e10cSrcweir /*--------------------------------------------------------------------
617cdf0e10cSrcweir Beschreibung:
618cdf0e10cSrcweir --------------------------------------------------------------------*/
619cdf0e10cSrcweir
620cdf0e10cSrcweir
621cdf0e10cSrcweir
Reset(const SfxItemSet & rSet)622cdf0e10cSrcweir void SwColumnPage::Reset(const SfxItemSet &rSet)
623cdf0e10cSrcweir {
624cdf0e10cSrcweir sal_uInt16 nHtmlMode = ::GetHtmlMode((const SwDocShell*)SfxObjectShell::Current());
625cdf0e10cSrcweir if(nHtmlMode & HTMLMODE_ON)
626cdf0e10cSrcweir {
627cdf0e10cSrcweir bHtmlMode = sal_True;
628cdf0e10cSrcweir aAutoWidthBox.Enable(sal_False);
629cdf0e10cSrcweir }
630cdf0e10cSrcweir FieldUnit aMetric = ::GetDfltMetric(bHtmlMode);
631cdf0e10cSrcweir SetMetric(aEd1, aMetric);
632cdf0e10cSrcweir SetMetric(aEd2, aMetric);
633cdf0e10cSrcweir SetMetric(aEd3, aMetric);
634cdf0e10cSrcweir SetMetric(aDistEd1, aMetric);
635cdf0e10cSrcweir SetMetric(aDistEd2, aMetric);
636cdf0e10cSrcweir
637cdf0e10cSrcweir delete pColMgr;
638cdf0e10cSrcweir pColMgr = new SwColMgr(rSet);
639cdf0e10cSrcweir nCols = pColMgr->GetCount() ;
640cdf0e10cSrcweir aCLNrEdt.SetMax(Max((sal_uInt16)aCLNrEdt.GetMax(), (sal_uInt16)nCols));
641cdf0e10cSrcweir aCLNrEdt.SetLast(Max(nCols,(sal_uInt16)aCLNrEdt.GetMax()));
642cdf0e10cSrcweir
643cdf0e10cSrcweir if(bFrm)
644cdf0e10cSrcweir {
645cdf0e10cSrcweir if(bFormat) // hier gibt es keine Size
646cdf0e10cSrcweir pColMgr->SetActualWidth(FRAME_FORMAT_WIDTH);
647cdf0e10cSrcweir else
648cdf0e10cSrcweir {
649cdf0e10cSrcweir const SwFmtFrmSize& rSize = (const SwFmtFrmSize&)rSet.Get(RES_FRM_SIZE);
650cdf0e10cSrcweir const SvxBoxItem& rBox = (const SvxBoxItem&) rSet.Get(RES_BOX);
651cdf0e10cSrcweir pColMgr->SetActualWidth((sal_uInt16)rSize.GetSize().Width() - rBox.GetDistance());
652cdf0e10cSrcweir }
653cdf0e10cSrcweir }
654cdf0e10cSrcweir if(aBalanceColsCB.IsVisible())
655cdf0e10cSrcweir {
656cdf0e10cSrcweir const SfxPoolItem* pItem;
657cdf0e10cSrcweir if( SFX_ITEM_SET == rSet.GetItemState( RES_COLUMNBALANCE, sal_False, &pItem ))
658cdf0e10cSrcweir aBalanceColsCB.Check(!((const SwFmtNoBalancedColumns*)pItem)->GetValue());
659cdf0e10cSrcweir else
660cdf0e10cSrcweir aBalanceColsCB.Check( sal_True );
661cdf0e10cSrcweir }
662cdf0e10cSrcweir
663cdf0e10cSrcweir //text direction
664cdf0e10cSrcweir if( SFX_ITEM_AVAILABLE <= rSet.GetItemState( RES_FRAMEDIR ) )
665cdf0e10cSrcweir {
666cdf0e10cSrcweir const SvxFrameDirectionItem& rItem = (const SvxFrameDirectionItem&)rSet.Get(RES_FRAMEDIR);
667cdf0e10cSrcweir sal_uInt32 nVal = rItem.GetValue();
668cdf0e10cSrcweir sal_uInt16 nPos = aTextDirectionLB.GetEntryPos( (void*) nVal );
669cdf0e10cSrcweir aTextDirectionLB.SelectEntryPos( nPos );
670cdf0e10cSrcweir aTextDirectionLB.SaveValue();
671cdf0e10cSrcweir }
672cdf0e10cSrcweir
673cdf0e10cSrcweir Init();
674cdf0e10cSrcweir ActivatePage( rSet );
675cdf0e10cSrcweir }
676cdf0e10cSrcweir
677cdf0e10cSrcweir /*--------------------------------------------------------------------
678cdf0e10cSrcweir Beschreibung: TabPage erzeugen
679cdf0e10cSrcweir --------------------------------------------------------------------*/
680cdf0e10cSrcweir
681cdf0e10cSrcweir
682cdf0e10cSrcweir
Create(Window * pParent,const SfxItemSet & rSet)683cdf0e10cSrcweir SfxTabPage* SwColumnPage::Create(Window *pParent, const SfxItemSet &rSet)
684cdf0e10cSrcweir {
685cdf0e10cSrcweir return new SwColumnPage(pParent, rSet);
686cdf0e10cSrcweir }
687cdf0e10cSrcweir
688cdf0e10cSrcweir /*--------------------------------------------------------------------
689cdf0e10cSrcweir Beschreibung: Attribute in den Set stopfen bei OK
690cdf0e10cSrcweir --------------------------------------------------------------------*/
691cdf0e10cSrcweir
692cdf0e10cSrcweir
693cdf0e10cSrcweir
FillItemSet(SfxItemSet & rSet)694cdf0e10cSrcweir sal_Bool SwColumnPage::FillItemSet(SfxItemSet &rSet)
695cdf0e10cSrcweir {
696cdf0e10cSrcweir if(aCLNrEdt.HasChildPathFocus())
697cdf0e10cSrcweir aCLNrEdt.GetDownHdl().Call(&aCLNrEdt);
698cdf0e10cSrcweir // Im ItemSet setzen
699cdf0e10cSrcweir // Die aktuellen Einstellungen sind
700cdf0e10cSrcweir // schon vorhanden
701cdf0e10cSrcweir //
702cdf0e10cSrcweir const SfxPoolItem* pOldItem;
703cdf0e10cSrcweir const SwFmtCol& rCol = pColMgr->GetColumns();
704cdf0e10cSrcweir if(0 == (pOldItem = GetOldItem( rSet, RES_COL )) ||
705cdf0e10cSrcweir rCol != *pOldItem )
706cdf0e10cSrcweir rSet.Put(rCol);
707cdf0e10cSrcweir
708cdf0e10cSrcweir if(aBalanceColsCB.IsVisible() )
709cdf0e10cSrcweir {
710cdf0e10cSrcweir rSet.Put(SwFmtNoBalancedColumns(!aBalanceColsCB.IsChecked() ));
711cdf0e10cSrcweir }
712cdf0e10cSrcweir sal_uInt16 nPos;
713cdf0e10cSrcweir if( aTextDirectionLB.IsVisible() &&
714cdf0e10cSrcweir ( nPos = aTextDirectionLB.GetSelectEntryPos() ) !=
715cdf0e10cSrcweir aTextDirectionLB.GetSavedValue() )
716cdf0e10cSrcweir {
717cdf0e10cSrcweir sal_uInt32 nDirection = (sal_uInt32)(sal_IntPtr)aTextDirectionLB.GetEntryData( nPos );
718cdf0e10cSrcweir rSet.Put( SvxFrameDirectionItem( (SvxFrameDirection)nDirection, RES_FRAMEDIR));
719cdf0e10cSrcweir }
720cdf0e10cSrcweir return sal_True;
721cdf0e10cSrcweir }
722cdf0e10cSrcweir
723cdf0e10cSrcweir /*--------------------------------------------------------------------
724cdf0e10cSrcweir Beschreibung: ColumnManager updaten
725cdf0e10cSrcweir --------------------------------------------------------------------*/
726cdf0e10cSrcweir
727cdf0e10cSrcweir
728cdf0e10cSrcweir
729cdf0e10cSrcweir IMPL_LINK( SwColumnPage, UpdateColMgr, void *, /*pField*/ )
730cdf0e10cSrcweir {
731cdf0e10cSrcweir long nGutterWidth = pColMgr->GetGutterWidth();
732cdf0e10cSrcweir if(nCols > 1)
733cdf0e10cSrcweir {
734cdf0e10cSrcweir // Ermitteln, ob die schmalste Spalte zu schmal ist
735cdf0e10cSrcweir // fuer den eingestellten Spaltenabstand
736cdf0e10cSrcweir long nMin = nColWidth[0];
737cdf0e10cSrcweir sal_uInt16 i;
738cdf0e10cSrcweir
739cdf0e10cSrcweir for( i = 1; i < nCols; ++i)
740cdf0e10cSrcweir nMin = Min(nMin, nColWidth[i]);
741cdf0e10cSrcweir
742cdf0e10cSrcweir sal_Bool bAutoWidth = aAutoWidthBox.IsChecked();
743cdf0e10cSrcweir if(!bAutoWidth)
744cdf0e10cSrcweir {
745cdf0e10cSrcweir pColMgr->SetAutoWidth(sal_False);
746cdf0e10cSrcweir // falls der Benutzer nicht die Gesamtbreite vergeben hat,
747cdf0e10cSrcweir // den fehlenden Betrag auf die letzte Spalte addieren.
748cdf0e10cSrcweir long nSum = 0;
749cdf0e10cSrcweir for(i = 0; i < nCols; ++i)
750cdf0e10cSrcweir nSum += nColWidth[i];
751cdf0e10cSrcweir nGutterWidth = 0;
752cdf0e10cSrcweir for(i = 0; i < nCols - 1; ++i)
753cdf0e10cSrcweir nGutterWidth += nColDist[i];
754cdf0e10cSrcweir nSum += nGutterWidth;
755cdf0e10cSrcweir
756cdf0e10cSrcweir long nMaxW = pColMgr->GetActualSize();
757cdf0e10cSrcweir
758cdf0e10cSrcweir if( nSum < nMaxW )
759cdf0e10cSrcweir nColWidth[nCols - 1] += nMaxW - nSum;
760cdf0e10cSrcweir
761cdf0e10cSrcweir pColMgr->SetColWidth( 0, static_cast< sal_uInt16 >(nColWidth[0] + (sal_uInt16)nColDist[0]/2) );
762cdf0e10cSrcweir for( i = 1; i < nCols-1; ++i )
763cdf0e10cSrcweir {
764cdf0e10cSrcweir long nActDist = (nColDist[i] + nColDist[i - 1]) / 2;
765cdf0e10cSrcweir pColMgr->SetColWidth( i, (sal_uInt16)nColWidth[i] + (sal_uInt16)nActDist );
766cdf0e10cSrcweir }
767cdf0e10cSrcweir pColMgr->SetColWidth( nCols-1, static_cast< sal_uInt16 >(nColWidth[nCols-1] + nColDist[nCols -2]/2) );
768cdf0e10cSrcweir
769cdf0e10cSrcweir }
770cdf0e10cSrcweir
771cdf0e10cSrcweir // keins ist ausgeschaltet
772cdf0e10cSrcweir const sal_uInt16 nPos = aLineTypeDLB.GetSelectEntryPos();
773cdf0e10cSrcweir sal_Bool bEnable = 0 != nPos;
774cdf0e10cSrcweir aLineHeightEdit.Enable( bEnable );
775cdf0e10cSrcweir aLineHeightLbl.Enable( bEnable );
776cdf0e10cSrcweir if( !bEnable )
777cdf0e10cSrcweir pColMgr->SetNoLine();
778cdf0e10cSrcweir else if( LISTBOX_ENTRY_NOTFOUND != nPos )
779cdf0e10cSrcweir {
780cdf0e10cSrcweir pColMgr->SetLineWidthAndColor(nLines[nPos - 1], Color(COL_BLACK) );
781cdf0e10cSrcweir pColMgr->SetAdjust( SwColLineAdj(
782cdf0e10cSrcweir aLinePosDLB.GetSelectEntryPos() + 1) );
783cdf0e10cSrcweir pColMgr->SetLineHeightPercent((short)aLineHeightEdit.GetValue());
784cdf0e10cSrcweir bEnable = pColMgr->GetLineHeightPercent() != 100;
785cdf0e10cSrcweir }
786cdf0e10cSrcweir aLinePosLbl.Enable( bEnable );
787cdf0e10cSrcweir aLinePosDLB.Enable( bEnable );
788cdf0e10cSrcweir }
789cdf0e10cSrcweir else
790cdf0e10cSrcweir {
791cdf0e10cSrcweir pColMgr->NoCols();
792cdf0e10cSrcweir nCols = 0;
793cdf0e10cSrcweir }
794cdf0e10cSrcweir
795cdf0e10cSrcweir //Maximalwerte setzen
796cdf0e10cSrcweir aCLNrEdt.SetMax(Max(1L,
797cdf0e10cSrcweir Min(long(nMaxCols), long( pColMgr->GetActualSize() / (nGutterWidth + MINLAY)) )));
798cdf0e10cSrcweir aCLNrEdt.SetLast(aCLNrEdt.GetMax());
799cdf0e10cSrcweir aCLNrEdt.Reformat();
800cdf0e10cSrcweir
801cdf0e10cSrcweir //Beispielfenster anregen
802cdf0e10cSrcweir if(!bLockUpdate)
803cdf0e10cSrcweir {
804cdf0e10cSrcweir if(bFrm)
805cdf0e10cSrcweir {
806cdf0e10cSrcweir aFrmExampleWN.SetColumns( pColMgr->GetColumns() );
807cdf0e10cSrcweir aFrmExampleWN.Invalidate();
808cdf0e10cSrcweir }
809cdf0e10cSrcweir else
810cdf0e10cSrcweir aPgeExampleWN.Invalidate();
811cdf0e10cSrcweir }
812cdf0e10cSrcweir
813cdf0e10cSrcweir return 0;
814cdf0e10cSrcweir }
815cdf0e10cSrcweir
816cdf0e10cSrcweir /*------------------------------------------------------------------------
817cdf0e10cSrcweir Beschreibung: Initialisierung
818cdf0e10cSrcweir ------------------------------------------------------------------------*/
819cdf0e10cSrcweir
820cdf0e10cSrcweir
821cdf0e10cSrcweir
Init()822cdf0e10cSrcweir void SwColumnPage::Init()
823cdf0e10cSrcweir {
824cdf0e10cSrcweir aCLNrEdt.SetValue(nCols);
825cdf0e10cSrcweir
826cdf0e10cSrcweir sal_Bool bAutoWidth = pColMgr->IsAutoWidth() || bHtmlMode;
827cdf0e10cSrcweir aAutoWidthBox.Check( bAutoWidth );
828cdf0e10cSrcweir
829cdf0e10cSrcweir sal_Int32 nColumnWidthSum = 0;
830cdf0e10cSrcweir // Setzen der Breiten
831cdf0e10cSrcweir sal_uInt16 i;
832cdf0e10cSrcweir for(i = 0; i < nCols; ++i)
833cdf0e10cSrcweir {
834cdf0e10cSrcweir nColWidth[i] = pColMgr->GetColWidth(i);
835cdf0e10cSrcweir nColumnWidthSum += nColWidth[i];
836cdf0e10cSrcweir if(i < nCols - 1)
837cdf0e10cSrcweir nColDist[i] = pColMgr->GetGutterWidth(i);
838cdf0e10cSrcweir }
839cdf0e10cSrcweir
840cdf0e10cSrcweir if( 1 < nCols )
841cdf0e10cSrcweir {
842cdf0e10cSrcweir // #97495# make sure that the automatic column widht's are always equal
843cdf0e10cSrcweir if(bAutoWidth)
844cdf0e10cSrcweir {
845cdf0e10cSrcweir nColumnWidthSum /= nCols;
846cdf0e10cSrcweir for(i = 0; i < nCols; ++i)
847cdf0e10cSrcweir nColWidth[i] = nColumnWidthSum;
848cdf0e10cSrcweir }
849cdf0e10cSrcweir SwColLineAdj eAdj = pColMgr->GetAdjust();
850cdf0e10cSrcweir if( COLADJ_NONE == eAdj ) // der Dialog kennt kein NONE!
851cdf0e10cSrcweir {
852cdf0e10cSrcweir eAdj = COLADJ_TOP;
853cdf0e10cSrcweir //ohne Adjust auch kein Linientyp
854cdf0e10cSrcweir aLineTypeDLB.SelectEntryPos( 0 );
855cdf0e10cSrcweir aLineHeightEdit.SetValue( 100 );
856cdf0e10cSrcweir }
857cdf0e10cSrcweir else
858cdf0e10cSrcweir {
859cdf0e10cSrcweir aLineTypeDLB.SelectEntryPos( lcl_LineWidthToPos(( pColMgr->GetLineWidth() )) + 1);
860cdf0e10cSrcweir aLineHeightEdit.SetValue( pColMgr->GetLineHeightPercent() );
861cdf0e10cSrcweir }
862cdf0e10cSrcweir aLinePosDLB.SelectEntryPos( static_cast< sal_uInt16 >(eAdj - 1) );
863cdf0e10cSrcweir }
864cdf0e10cSrcweir else
865cdf0e10cSrcweir {
866cdf0e10cSrcweir aLinePosDLB.SelectEntryPos( 0 );
867cdf0e10cSrcweir aLineTypeDLB.SelectEntryPos( 0 );
868cdf0e10cSrcweir aLineHeightEdit.SetValue( 100 );
869cdf0e10cSrcweir }
870cdf0e10cSrcweir
871cdf0e10cSrcweir UpdateCols();
872cdf0e10cSrcweir Update();
873cdf0e10cSrcweir
874cdf0e10cSrcweir // Maximale Spaltenzahl setzen
875cdf0e10cSrcweir // Werte kleiner als 1 sind nicht erlaubt
876cdf0e10cSrcweir aCLNrEdt.SetMax(Max(1L,
877cdf0e10cSrcweir Min(long(nMaxCols), long( pColMgr->GetActualSize() / nMinWidth) )));
878cdf0e10cSrcweir }
879cdf0e10cSrcweir
880cdf0e10cSrcweir /*------------------------------------------------------------------------
881cdf0e10cSrcweir Beschreibung: Die Anzahl der Spalten hat sich veraendert -- hier werden
882cdf0e10cSrcweir die Controls fuer die Bearbeitung der Spalten entsprechend
883cdf0e10cSrcweir der Spaltenzahl en- oder disabled.
884cdf0e10cSrcweir Falls es mehr als nVisCols (= 3) Spalten gibt, werden
885cdf0e10cSrcweir alle Edit enabled und die Buttons fuer das Scrollen
886cdf0e10cSrcweir ebenfalls.
887cdf0e10cSrcweir Andernfalls werden die Edits jeweils fuer die entsprechenden
888cdf0e10cSrcweir Spaltenzahl enabled; eine Spalte kann nicht bearbeitet werden.
889cdf0e10cSrcweir ------------------------------------------------------------------------*/
890cdf0e10cSrcweir
891cdf0e10cSrcweir
892cdf0e10cSrcweir
UpdateCols()893cdf0e10cSrcweir void SwColumnPage::UpdateCols()
894cdf0e10cSrcweir {
895cdf0e10cSrcweir sal_Bool bEnableBtns= sal_False;
896cdf0e10cSrcweir sal_Bool bEnable12 = sal_False;
897cdf0e10cSrcweir sal_Bool bEnable3 = sal_False;
898cdf0e10cSrcweir const sal_Bool bEdit = !aAutoWidthBox.IsChecked();
899cdf0e10cSrcweir if ( nCols > nVisCols )
900cdf0e10cSrcweir {
901cdf0e10cSrcweir bEnableBtns = sal_True && !bHtmlMode;
902cdf0e10cSrcweir bEnable12 = bEnable3 = bEdit;
903cdf0e10cSrcweir }
904cdf0e10cSrcweir else if( bEdit )
905cdf0e10cSrcweir {
906cdf0e10cSrcweir // hier gibt es absichtlich kaum noch breaks
907cdf0e10cSrcweir switch(nCols)
908cdf0e10cSrcweir {
909cdf0e10cSrcweir case 3: bEnable3 = sal_True;
910cdf0e10cSrcweir case 2: bEnable12= sal_True; break;
911cdf0e10cSrcweir default: /* do nothing */;
912cdf0e10cSrcweir }
913cdf0e10cSrcweir }
914cdf0e10cSrcweir aEd1.Enable( bEnable12 );
915cdf0e10cSrcweir aDistEd1.Enable(nCols > 1);
916cdf0e10cSrcweir aEd2.Enable( bEnable12 );
917cdf0e10cSrcweir aDistEd2.Enable(bEnable3);
918cdf0e10cSrcweir aEd3.Enable( bEnable3 );
919cdf0e10cSrcweir aLbl1.Enable(bEnable12 );
920cdf0e10cSrcweir aLbl2.Enable(bEnable12 );
921cdf0e10cSrcweir aLbl3.Enable(bEnable3 );
922cdf0e10cSrcweir aBtnUp.Enable( bEnableBtns );
923cdf0e10cSrcweir aBtnDown.Enable( bEnableBtns );
924cdf0e10cSrcweir
925cdf0e10cSrcweir const sal_Bool bEnable = nCols > 1;
926cdf0e10cSrcweir if( !bEnable )
927cdf0e10cSrcweir {
928cdf0e10cSrcweir aLinePosDLB.Enable( sal_False );
929cdf0e10cSrcweir aLinePosLbl.Enable( sal_False );
930cdf0e10cSrcweir }
931cdf0e10cSrcweir aLineHeightEdit.Enable( bEnable );
932cdf0e10cSrcweir aLineHeightLbl.Enable( bEnable );
933cdf0e10cSrcweir aLineTypeDLB.Enable( bEnable );
934cdf0e10cSrcweir aLineTypeLbl.Enable( bEnable );
935cdf0e10cSrcweir aAutoWidthBox.Enable( bEnable && !bHtmlMode );
936cdf0e10cSrcweir }
937cdf0e10cSrcweir
SetLabels(sal_uInt16 nVis)938cdf0e10cSrcweir void SwColumnPage::SetLabels( sal_uInt16 nVis )
939cdf0e10cSrcweir {
940cdf0e10cSrcweir String sLbl( '~' );
941cdf0e10cSrcweir
942cdf0e10cSrcweir String sLbl2( String::CreateFromInt32( nVis + 1 ));
943cdf0e10cSrcweir String tmp1(sLbl2);
944cdf0e10cSrcweir sLbl2.Insert(sLbl, sLbl2.Len() - 1);
945cdf0e10cSrcweir aLbl1.SetText(sLbl2);
946cdf0e10cSrcweir
947cdf0e10cSrcweir sLbl2 = String::CreateFromInt32( nVis + 2 );
948cdf0e10cSrcweir String tmp2(sLbl2);
949cdf0e10cSrcweir sLbl2.Insert(sLbl, sLbl2.Len() - 1);
950cdf0e10cSrcweir aLbl2.SetText(sLbl2);
951cdf0e10cSrcweir
952cdf0e10cSrcweir sLbl2 = String::CreateFromInt32( nVis + 3 );
953cdf0e10cSrcweir String tmp3(sLbl2);
954cdf0e10cSrcweir sLbl2.Insert(sLbl, sLbl2.Len() - 1);
955cdf0e10cSrcweir aLbl3.SetText(sLbl2);
956cdf0e10cSrcweir String sColumnWidth = SW_RESSTR( STR_ACCESS_COLUMN_WIDTH ) ;
957cdf0e10cSrcweir sColumnWidth.SearchAndReplaceAscii("%1", tmp1);
958cdf0e10cSrcweir aEd1.SetAccessibleName(sColumnWidth);
959cdf0e10cSrcweir
960cdf0e10cSrcweir sColumnWidth = SW_RESSTR( STR_ACCESS_COLUMN_WIDTH ) ;
961cdf0e10cSrcweir sColumnWidth.SearchAndReplaceAscii("%1", tmp2);
962cdf0e10cSrcweir aEd2.SetAccessibleName(sColumnWidth);
963cdf0e10cSrcweir
964cdf0e10cSrcweir sColumnWidth = SW_RESSTR( STR_ACCESS_COLUMN_WIDTH ) ;
965cdf0e10cSrcweir sColumnWidth.SearchAndReplaceAscii("%1", tmp3);
966cdf0e10cSrcweir aEd3.SetAccessibleName(sColumnWidth);
967cdf0e10cSrcweir
968cdf0e10cSrcweir String sDist = SW_RESSTR( STR_ACCESS_PAGESETUP_SPACING ) ;
969cdf0e10cSrcweir String sDist1 = sDist;
970cdf0e10cSrcweir sDist1.SearchAndReplaceAscii("%1", tmp1);
971cdf0e10cSrcweir sDist1.SearchAndReplaceAscii("%2", tmp2);
972cdf0e10cSrcweir aDistEd1.SetAccessibleName(sDist1);
973cdf0e10cSrcweir
974cdf0e10cSrcweir String sDist2 = sDist;
975cdf0e10cSrcweir sDist2.SearchAndReplaceAscii("%1", tmp2);
976cdf0e10cSrcweir sDist2.SearchAndReplaceAscii("%2", tmp3);
977cdf0e10cSrcweir aDistEd2.SetAccessibleName(sDist2);
978cdf0e10cSrcweir }
979cdf0e10cSrcweir
980cdf0e10cSrcweir /*------------------------------------------------------------------------
981cdf0e10cSrcweir Beschreibung: Handler, der bei einer Veraenderung der Spaltenzahl
982cdf0e10cSrcweir gerufen wird.
983cdf0e10cSrcweir Eine Aenderung der Spaltenzahl ueberschreibt eventuelle
984cdf0e10cSrcweir Breiteneinstellungen des Benutzers; alle Spalten sind
985cdf0e10cSrcweir gleich breit.
986cdf0e10cSrcweir ------------------------------------------------------------------------*/
987cdf0e10cSrcweir
IMPL_LINK(SwColumnPage,ColModify,NumericField *,pNF)988cdf0e10cSrcweir IMPL_LINK( SwColumnPage, ColModify, NumericField *, pNF )
989cdf0e10cSrcweir {
990cdf0e10cSrcweir nCols = (sal_uInt16)aCLNrEdt.GetValue();
991cdf0e10cSrcweir //#107890# the handler is also called from LoseFocus()
992cdf0e10cSrcweir //then no change has been made and thus no action should be taken
993cdf0e10cSrcweir // #i17816# changing the displayed types within the ValueSet
994cdf0e10cSrcweir //from two columns to two columns with different settings doesn't invalidate the
995cdf0e10cSrcweir // example windows in ::ColModify()
996*ca62e2c2SSteve Yin // the pColMgr->GetCount()'s return is some how bugged,
997*ca62e2c2SSteve Yin // it will return 0 when actual count is 1, so fix it.
998*ca62e2c2SSteve Yin //if(!pNF ||(pColMgr->GetCount() != nCols))
999*ca62e2c2SSteve Yin int nTemp = pColMgr->GetCount();
1000*ca62e2c2SSteve Yin if(nTemp == 0) nTemp = 1;
1001*ca62e2c2SSteve Yin if( nTemp != nCols )
1002cdf0e10cSrcweir {
1003cdf0e10cSrcweir if(pNF)
1004cdf0e10cSrcweir aDefaultVS.SetNoSelection();
1005cdf0e10cSrcweir long nDist = static_cast< long >(aDistEd1.DenormalizePercent(aDistEd1.GetValue(FUNIT_TWIP)));
1006cdf0e10cSrcweir pColMgr->SetCount(nCols, (sal_uInt16)nDist);
1007cdf0e10cSrcweir for(sal_uInt16 i = 0; i < nCols; i++)
1008cdf0e10cSrcweir nColDist[i] = nDist;
1009cdf0e10cSrcweir nFirstVis = 0;
1010cdf0e10cSrcweir SetLabels( nFirstVis );
1011cdf0e10cSrcweir UpdateCols();
1012cdf0e10cSrcweir ResetColWidth();
1013cdf0e10cSrcweir Update();
1014cdf0e10cSrcweir }
1015cdf0e10cSrcweir
1016cdf0e10cSrcweir return 0;
1017cdf0e10cSrcweir }
1018cdf0e10cSrcweir
1019cdf0e10cSrcweir /*------------------------------------------------------------------------
1020cdf0e10cSrcweir Beschreibung: Modify- Handler fuer eine Aenderung der Spaltenbreite
1021cdf0e10cSrcweir oder des Spaltenabstandes.
1022cdf0e10cSrcweir Diese Aenderungen wirken sich erst zeitversetzt aus.
1023cdf0e10cSrcweir Durch eine Aenderung der Spaltenbreite wird die automatische
1024cdf0e10cSrcweir Berechnung der Spaltenbreite ausser Kraft gesetzt; erst
1025cdf0e10cSrcweir eine Aenderung der Spaltenzahl kehrt wieder zu diesem
1026cdf0e10cSrcweir Default zurueck.
1027cdf0e10cSrcweir ------------------------------------------------------------------------*/
1028cdf0e10cSrcweir
1029cdf0e10cSrcweir
1030cdf0e10cSrcweir
IMPL_LINK(SwColumnPage,GapModify,PercentField *,pFld)1031cdf0e10cSrcweir IMPL_LINK( SwColumnPage, GapModify, PercentField *, pFld )
1032cdf0e10cSrcweir {
1033cdf0e10cSrcweir long nActValue = static_cast< long >(pFld->DenormalizePercent(pFld->GetValue(FUNIT_TWIP)));
1034cdf0e10cSrcweir if(nCols < 2)
1035cdf0e10cSrcweir return 0;
1036cdf0e10cSrcweir if(aAutoWidthBox.IsChecked())
1037cdf0e10cSrcweir {
1038cdf0e10cSrcweir sal_uInt16 nMaxGap = pColMgr->GetActualSize() - nCols * MINLAY;
1039cdf0e10cSrcweir DBG_ASSERT(nCols, "Abstand kann nicht ohne Spalten eingestellt werden");
1040cdf0e10cSrcweir nMaxGap /= nCols - 1;
1041cdf0e10cSrcweir if(nActValue > nMaxGap)
1042cdf0e10cSrcweir {
1043cdf0e10cSrcweir nActValue = nMaxGap;
1044cdf0e10cSrcweir aDistEd1.SetPrcntValue(aDistEd1.NormalizePercent(nMaxGap), FUNIT_TWIP);
1045cdf0e10cSrcweir }
1046cdf0e10cSrcweir pColMgr->SetGutterWidth((sal_uInt16)nActValue);
1047cdf0e10cSrcweir for(sal_uInt16 i = 0; i < nCols; i++)
1048cdf0e10cSrcweir nColDist[i] = nActValue;
1049cdf0e10cSrcweir
1050cdf0e10cSrcweir ResetColWidth();
1051cdf0e10cSrcweir UpdateCols();
1052cdf0e10cSrcweir }
1053cdf0e10cSrcweir else
1054cdf0e10cSrcweir
1055cdf0e10cSrcweir {
1056cdf0e10cSrcweir sal_uInt16 nOffset = 0;
1057cdf0e10cSrcweir if(pFld == &aDistEd2)
1058cdf0e10cSrcweir {
1059cdf0e10cSrcweir nOffset = 1;
1060cdf0e10cSrcweir }
1061cdf0e10cSrcweir long nDiff = nActValue - nColDist[nFirstVis + nOffset];
1062cdf0e10cSrcweir if(nDiff)
1063cdf0e10cSrcweir {
1064cdf0e10cSrcweir long nLeft = nColWidth[nFirstVis + nOffset];
1065cdf0e10cSrcweir long nRight = nColWidth[nFirstVis + nOffset + 1];
1066cdf0e10cSrcweir if(nLeft + nRight + 2 * MINLAY < nDiff)
1067cdf0e10cSrcweir nDiff = nLeft + nRight - 2 * MINLAY;
1068cdf0e10cSrcweir if(nDiff < nRight - MINLAY)
1069cdf0e10cSrcweir {
1070cdf0e10cSrcweir nRight -= nDiff;
1071cdf0e10cSrcweir }
1072cdf0e10cSrcweir else
1073cdf0e10cSrcweir {
1074cdf0e10cSrcweir long nTemp = nDiff - nRight + MINLAY;
1075cdf0e10cSrcweir nRight = MINLAY;
1076cdf0e10cSrcweir if(nLeft > nTemp - MINLAY)
1077cdf0e10cSrcweir {
1078cdf0e10cSrcweir nLeft -= nTemp;
1079cdf0e10cSrcweir nTemp = 0;
1080cdf0e10cSrcweir }
1081cdf0e10cSrcweir else
1082cdf0e10cSrcweir {
1083cdf0e10cSrcweir nTemp -= nLeft + MINLAY;
1084cdf0e10cSrcweir nLeft = MINLAY;
1085cdf0e10cSrcweir }
1086cdf0e10cSrcweir nDiff = nTemp;
1087cdf0e10cSrcweir }
1088cdf0e10cSrcweir nColWidth[nFirstVis + nOffset] = nLeft;
1089cdf0e10cSrcweir nColWidth[nFirstVis + nOffset + 1] = nRight;
1090cdf0e10cSrcweir nColDist[nFirstVis + nOffset] += nDiff;
1091cdf0e10cSrcweir
1092cdf0e10cSrcweir pColMgr->SetColWidth( nFirstVis + nOffset, sal_uInt16(nLeft) );
1093cdf0e10cSrcweir pColMgr->SetColWidth( nFirstVis + nOffset + 1, sal_uInt16(nRight) );
1094cdf0e10cSrcweir pColMgr->SetGutterWidth( sal_uInt16(nColDist[nFirstVis + nOffset]), nFirstVis + nOffset );
1095cdf0e10cSrcweir }
1096cdf0e10cSrcweir
1097cdf0e10cSrcweir }
1098cdf0e10cSrcweir Update();
1099cdf0e10cSrcweir return 0;
1100cdf0e10cSrcweir }
1101cdf0e10cSrcweir
1102cdf0e10cSrcweir /*------------------------------------------------------------------------
1103cdf0e10cSrcweir Beschreibung:
1104cdf0e10cSrcweir ------------------------------------------------------------------------*/
1105cdf0e10cSrcweir
1106cdf0e10cSrcweir
1107cdf0e10cSrcweir
IMPL_LINK(SwColumnPage,EdModify,PercentField *,pField)1108cdf0e10cSrcweir IMPL_LINK( SwColumnPage, EdModify, PercentField *, pField )
1109cdf0e10cSrcweir {
1110cdf0e10cSrcweir pModifiedField = pField;
1111cdf0e10cSrcweir Timeout(0);
1112cdf0e10cSrcweir return 0;
1113cdf0e10cSrcweir }
1114cdf0e10cSrcweir /*------------------------------------------------------------------------
1115cdf0e10cSrcweir Beschreibung: Handler hinter der Checkbox fuer automatische Breite.
1116cdf0e10cSrcweir Ist die Box gecheckt, koennen keine expliziten Werte
1117cdf0e10cSrcweir fuer die Spaltenbreite eingegeben werden.
1118cdf0e10cSrcweir ------------------------------------------------------------------------*/
1119cdf0e10cSrcweir
1120cdf0e10cSrcweir
1121cdf0e10cSrcweir
IMPL_LINK(SwColumnPage,AutoWidthHdl,CheckBox *,pBox)1122cdf0e10cSrcweir IMPL_LINK( SwColumnPage, AutoWidthHdl, CheckBox *, pBox )
1123cdf0e10cSrcweir {
1124cdf0e10cSrcweir long nDist = static_cast< long >(aDistEd1.DenormalizePercent(aDistEd1.GetValue(FUNIT_TWIP)));
1125cdf0e10cSrcweir pColMgr->SetCount(nCols, (sal_uInt16)nDist);
1126cdf0e10cSrcweir for(sal_uInt16 i = 0; i < nCols; i++)
1127cdf0e10cSrcweir nColDist[i] = nDist;
1128cdf0e10cSrcweir if(pBox->IsChecked())
1129cdf0e10cSrcweir {
1130cdf0e10cSrcweir pColMgr->SetGutterWidth(sal_uInt16(nDist));
1131cdf0e10cSrcweir ResetColWidth();
1132cdf0e10cSrcweir }
1133cdf0e10cSrcweir pColMgr->SetAutoWidth(pBox->IsChecked(), sal_uInt16(nDist));
1134cdf0e10cSrcweir UpdateCols();
1135cdf0e10cSrcweir Update();
1136cdf0e10cSrcweir return 0;
1137cdf0e10cSrcweir }
1138cdf0e10cSrcweir
1139cdf0e10cSrcweir /*------------------------------------------------------------------------
1140cdf0e10cSrcweir Beschreibung: Raufscrollen der Inhalte der Edits.
1141cdf0e10cSrcweir ------------------------------------------------------------------------*/
1142cdf0e10cSrcweir
IMPL_LINK(SwColumnPage,Up,Button *,EMPTYARG)1143cdf0e10cSrcweir IMPL_LINK( SwColumnPage, Up, Button *, EMPTYARG )
1144cdf0e10cSrcweir {
1145cdf0e10cSrcweir if( nFirstVis )
1146cdf0e10cSrcweir {
1147cdf0e10cSrcweir --nFirstVis;
1148cdf0e10cSrcweir SetLabels( nFirstVis );
1149cdf0e10cSrcweir Update();
1150cdf0e10cSrcweir }
1151cdf0e10cSrcweir return 0;
1152cdf0e10cSrcweir }
1153cdf0e10cSrcweir /*------------------------------------------------------------------------
1154cdf0e10cSrcweir Beschreibung: Runterscrollen der Inhalte der Edits.
1155cdf0e10cSrcweir ------------------------------------------------------------------------*/
1156cdf0e10cSrcweir
IMPL_LINK(SwColumnPage,Down,Button *,EMPTYARG)1157cdf0e10cSrcweir IMPL_LINK( SwColumnPage, Down, Button *, EMPTYARG )
1158cdf0e10cSrcweir {
1159cdf0e10cSrcweir if( nFirstVis + nVisCols < nCols )
1160cdf0e10cSrcweir {
1161cdf0e10cSrcweir ++nFirstVis;
1162cdf0e10cSrcweir SetLabels( nFirstVis );
1163cdf0e10cSrcweir Update();
1164cdf0e10cSrcweir }
1165cdf0e10cSrcweir return 0;
1166cdf0e10cSrcweir }
1167cdf0e10cSrcweir /*------------------------------------------------------------------------
1168cdf0e10cSrcweir Beschreibung: Relikt aus alten Zeiten - jetzt direkt ohne time
1169cdf0e10cSrcweir * Timer- Handler; angetriggert durch eine Aenderung der
1170cdf0e10cSrcweir Spaltenbreite oder des Spaltenabstandes.
1171cdf0e10cSrcweir ------------------------------------------------------------------------*/
1172cdf0e10cSrcweir
IMPL_LINK(SwColumnPage,Timeout,Timer *,EMPTYARG)1173cdf0e10cSrcweir IMPL_LINK( SwColumnPage, Timeout, Timer *, EMPTYARG )
1174cdf0e10cSrcweir {
1175cdf0e10cSrcweir DBG_PROFSTART(columnhdl) ;
1176cdf0e10cSrcweir if(pModifiedField)
1177cdf0e10cSrcweir {
1178cdf0e10cSrcweir // Finden der veraenderten Spalte
1179cdf0e10cSrcweir sal_uInt16 nChanged = nFirstVis;
1180cdf0e10cSrcweir if(pModifiedField == &aEd2)
1181cdf0e10cSrcweir ++nChanged;
1182cdf0e10cSrcweir else if(pModifiedField == &aEd3)
1183cdf0e10cSrcweir nChanged += 2;
1184cdf0e10cSrcweir /*else if(pModifiedField == &aEd4)
1185cdf0e10cSrcweir nChanged += 3;*/
1186cdf0e10cSrcweir
1187cdf0e10cSrcweir long nNewWidth = (sal_uInt16)
1188cdf0e10cSrcweir pModifiedField->DenormalizePercent(pModifiedField->GetValue(FUNIT_TWIP));
1189cdf0e10cSrcweir long nDiff = nNewWidth - nColWidth[nChanged];
1190cdf0e10cSrcweir
1191cdf0e10cSrcweir // wenn es die letzte Spalte ist
1192cdf0e10cSrcweir if(nChanged == nCols - 1)
1193cdf0e10cSrcweir {
1194cdf0e10cSrcweir nColWidth[0] -= nDiff;
1195cdf0e10cSrcweir if(nColWidth[0] < (long)nMinWidth)
1196cdf0e10cSrcweir {
1197cdf0e10cSrcweir nNewWidth -= nMinWidth - nColWidth[0];
1198cdf0e10cSrcweir nColWidth[0] = nMinWidth;
1199cdf0e10cSrcweir }
1200cdf0e10cSrcweir
1201cdf0e10cSrcweir }
1202cdf0e10cSrcweir else if(nDiff)
1203cdf0e10cSrcweir {
1204cdf0e10cSrcweir nColWidth[nChanged + 1] -= nDiff;
1205cdf0e10cSrcweir if(nColWidth[nChanged + 1] < (long) nMinWidth)
1206cdf0e10cSrcweir {
1207cdf0e10cSrcweir nNewWidth -= nMinWidth - nColWidth[nChanged + 1];
1208cdf0e10cSrcweir nColWidth[nChanged + 1] = nMinWidth;
1209cdf0e10cSrcweir }
1210cdf0e10cSrcweir }
1211cdf0e10cSrcweir nColWidth[nChanged] = nNewWidth;
1212cdf0e10cSrcweir pModifiedField = 0;
1213cdf0e10cSrcweir }
1214cdf0e10cSrcweir Update();
1215cdf0e10cSrcweir DBG_PROFSTOP(columnhdl) ;
1216cdf0e10cSrcweir return 0;
1217cdf0e10cSrcweir }
1218cdf0e10cSrcweir /*------------------------------------------------------------------------
1219cdf0e10cSrcweir Beschreibung: Aktualisierung der Anzeige
1220cdf0e10cSrcweir ------------------------------------------------------------------------*/
1221cdf0e10cSrcweir
1222cdf0e10cSrcweir
1223cdf0e10cSrcweir
Update()1224cdf0e10cSrcweir void SwColumnPage::Update()
1225cdf0e10cSrcweir {
1226cdf0e10cSrcweir aBalanceColsCB.Enable(nCols > 1);
1227cdf0e10cSrcweir if(nCols >= 2)
1228cdf0e10cSrcweir {
1229cdf0e10cSrcweir aEd1.SetPrcntValue(aEd1.NormalizePercent(nColWidth[nFirstVis]), FUNIT_TWIP);
1230cdf0e10cSrcweir aDistEd1.SetPrcntValue(aDistEd1.NormalizePercent(nColDist[nFirstVis]), FUNIT_TWIP);
1231cdf0e10cSrcweir aEd2.SetPrcntValue(aEd2.NormalizePercent(nColWidth[nFirstVis + 1]), FUNIT_TWIP);
1232cdf0e10cSrcweir if(nCols >= 3)
1233cdf0e10cSrcweir {
1234cdf0e10cSrcweir aDistEd2.SetPrcntValue(aDistEd2.NormalizePercent(nColDist[nFirstVis + 1]), FUNIT_TWIP);
1235cdf0e10cSrcweir aEd3.SetPrcntValue(aEd3.NormalizePercent(nColWidth[nFirstVis + 2]), FUNIT_TWIP);
1236cdf0e10cSrcweir }
1237cdf0e10cSrcweir else
1238cdf0e10cSrcweir {
1239cdf0e10cSrcweir aEd3.SetText(aEmptyStr);
1240cdf0e10cSrcweir aDistEd2.SetText(aEmptyStr);
1241cdf0e10cSrcweir }
1242cdf0e10cSrcweir }
1243cdf0e10cSrcweir else
1244cdf0e10cSrcweir {
1245cdf0e10cSrcweir aEd1.SetText(aEmptyStr);
1246cdf0e10cSrcweir aEd2.SetText(aEmptyStr);
1247cdf0e10cSrcweir aEd3.SetText(aEmptyStr);
1248cdf0e10cSrcweir aDistEd1.SetText(aEmptyStr);
1249cdf0e10cSrcweir aDistEd2.SetText(aEmptyStr);
1250cdf0e10cSrcweir }
1251cdf0e10cSrcweir UpdateColMgr(0);
1252cdf0e10cSrcweir }
1253cdf0e10cSrcweir
1254cdf0e10cSrcweir /*--------------------------------------------------------------------
1255cdf0e10cSrcweir Beschreibung: Update Bsp
1256cdf0e10cSrcweir --------------------------------------------------------------------*/
1257cdf0e10cSrcweir
1258cdf0e10cSrcweir
1259cdf0e10cSrcweir
ActivatePage(const SfxItemSet & rSet)1260cdf0e10cSrcweir void SwColumnPage::ActivatePage(const SfxItemSet& rSet)
1261cdf0e10cSrcweir {
1262cdf0e10cSrcweir if(!bFrm)
1263cdf0e10cSrcweir {
1264cdf0e10cSrcweir if( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_PAGE_SIZE ))
1265cdf0e10cSrcweir {
1266cdf0e10cSrcweir const SvxSizeItem& rSize = (const SvxSizeItem&)rSet.Get(
1267cdf0e10cSrcweir SID_ATTR_PAGE_SIZE);
1268cdf0e10cSrcweir const SvxLRSpaceItem& rLRSpace = (const SvxLRSpaceItem&)rSet.Get(
1269cdf0e10cSrcweir RES_LR_SPACE );
1270cdf0e10cSrcweir const SvxBoxItem& rBox = (const SvxBoxItem&) rSet.Get(RES_BOX);
1271cdf0e10cSrcweir sal_uInt16 nActWidth = static_cast< sal_uInt16 >(rSize.GetSize().Width()
1272cdf0e10cSrcweir - rLRSpace.GetLeft() - rLRSpace.GetRight() - rBox.GetDistance());
1273cdf0e10cSrcweir
1274cdf0e10cSrcweir if( pColMgr->GetActualSize() != nActWidth)
1275cdf0e10cSrcweir {
1276cdf0e10cSrcweir pColMgr->SetActualWidth(nActWidth);
1277cdf0e10cSrcweir ColModify( 0 );
1278cdf0e10cSrcweir UpdateColMgr( 0 );
1279cdf0e10cSrcweir }
1280cdf0e10cSrcweir }
1281cdf0e10cSrcweir aFrmExampleWN.Hide();
1282cdf0e10cSrcweir aPgeExampleWN.UpdateExample( rSet, pColMgr );
1283cdf0e10cSrcweir aPgeExampleWN.Show();
1284cdf0e10cSrcweir
1285cdf0e10cSrcweir }
1286cdf0e10cSrcweir else
1287cdf0e10cSrcweir {
1288cdf0e10cSrcweir aPgeExampleWN.Hide();
1289cdf0e10cSrcweir aFrmExampleWN.Show();
1290cdf0e10cSrcweir
1291cdf0e10cSrcweir // Size
1292cdf0e10cSrcweir const SwFmtFrmSize& rSize = (const SwFmtFrmSize&)rSet.Get(RES_FRM_SIZE);
1293cdf0e10cSrcweir const SvxBoxItem& rBox = (const SvxBoxItem&) rSet.Get(RES_BOX);
1294cdf0e10cSrcweir
1295cdf0e10cSrcweir long nDistance = rBox.GetDistance();
1296cdf0e10cSrcweir const sal_uInt16 nTotalWish = bFormat ? FRAME_FORMAT_WIDTH : sal_uInt16(rSize.GetWidth() - 2 * nDistance);
1297cdf0e10cSrcweir
1298cdf0e10cSrcweir // Maximalwerte der Spaltenbreiten setzen
1299cdf0e10cSrcweir SetPageWidth(nTotalWish);
1300cdf0e10cSrcweir
1301cdf0e10cSrcweir if(pColMgr->GetActualSize() != nTotalWish)
1302cdf0e10cSrcweir {
1303cdf0e10cSrcweir pColMgr->SetActualWidth(nTotalWish);
1304cdf0e10cSrcweir Init();
1305cdf0e10cSrcweir }
1306cdf0e10cSrcweir sal_Bool bPercent;
1307cdf0e10cSrcweir // im Rahmenformat nur relative Angaben
1308cdf0e10cSrcweir if ( bFormat || (rSize.GetWidthPercent() && rSize.GetWidthPercent() != 0xff) )
1309cdf0e10cSrcweir {
1310cdf0e10cSrcweir // Wert fuer 100% setzen
1311cdf0e10cSrcweir aEd1.SetRefValue(nTotalWish);
1312cdf0e10cSrcweir aEd2.SetRefValue(nTotalWish);
1313cdf0e10cSrcweir aEd3.SetRefValue(nTotalWish);
1314cdf0e10cSrcweir aDistEd1.SetRefValue(nTotalWish);
1315cdf0e10cSrcweir aDistEd2.SetRefValue(nTotalWish);
1316cdf0e10cSrcweir
1317cdf0e10cSrcweir // Auf %-Darstellung umschalten
1318cdf0e10cSrcweir bPercent = sal_True;
1319cdf0e10cSrcweir }
1320cdf0e10cSrcweir else
1321cdf0e10cSrcweir bPercent = sal_False;
1322cdf0e10cSrcweir
1323cdf0e10cSrcweir aEd1.ShowPercent(bPercent);
1324cdf0e10cSrcweir aEd2.ShowPercent(bPercent);
1325cdf0e10cSrcweir aEd3.ShowPercent(bPercent);
1326cdf0e10cSrcweir aDistEd1.ShowPercent(bPercent);
1327cdf0e10cSrcweir aDistEd2.ShowPercent(bPercent);
1328cdf0e10cSrcweir aDistEd1.MetricField::SetMin(0);
1329cdf0e10cSrcweir aDistEd2.MetricField::SetMin(0);
1330cdf0e10cSrcweir }
1331cdf0e10cSrcweir Update();
1332cdf0e10cSrcweir }
1333cdf0e10cSrcweir
1334cdf0e10cSrcweir /*--------------------------------------------------------------------
1335cdf0e10cSrcweir Beschreibung:
1336cdf0e10cSrcweir --------------------------------------------------------------------*/
1337cdf0e10cSrcweir
1338cdf0e10cSrcweir
1339cdf0e10cSrcweir
DeactivatePage(SfxItemSet * _pSet)1340cdf0e10cSrcweir int SwColumnPage::DeactivatePage(SfxItemSet *_pSet)
1341cdf0e10cSrcweir {
1342cdf0e10cSrcweir if(_pSet)
1343cdf0e10cSrcweir FillItemSet(*_pSet);
1344cdf0e10cSrcweir
1345cdf0e10cSrcweir return sal_True;
1346cdf0e10cSrcweir }
1347cdf0e10cSrcweir
1348cdf0e10cSrcweir
1349cdf0e10cSrcweir
GetRanges()1350cdf0e10cSrcweir sal_uInt16* SwColumnPage::GetRanges()
1351cdf0e10cSrcweir {
1352cdf0e10cSrcweir return aPageRg;
1353cdf0e10cSrcweir }
1354cdf0e10cSrcweir
1355cdf0e10cSrcweir /*--------------------------------------------------------------------
1356cdf0e10cSrcweir Beschreibung:
1357cdf0e10cSrcweir --------------------------------------------------------------------*/
1358cdf0e10cSrcweir
1359cdf0e10cSrcweir
1360cdf0e10cSrcweir
IMPL_LINK(SwColumnPage,SetDefaultsHdl,ValueSet *,pVS)1361cdf0e10cSrcweir IMPL_LINK( SwColumnPage, SetDefaultsHdl, ValueSet *, pVS )
1362cdf0e10cSrcweir {
1363cdf0e10cSrcweir sal_uInt16 nItem = pVS->GetSelectItemId();
1364cdf0e10cSrcweir if( nItem < 4 )
1365cdf0e10cSrcweir {
1366cdf0e10cSrcweir aCLNrEdt.SetValue( nItem );
1367cdf0e10cSrcweir aAutoWidthBox.Check();
1368cdf0e10cSrcweir aDistEd1.SetPrcntValue(0);
1369cdf0e10cSrcweir ColModify(0);
1370cdf0e10cSrcweir }
1371cdf0e10cSrcweir else
1372cdf0e10cSrcweir {
1373cdf0e10cSrcweir bLockUpdate = sal_True;
1374cdf0e10cSrcweir aCLNrEdt.SetValue( 2 );
1375cdf0e10cSrcweir aAutoWidthBox.Check(sal_False);
1376cdf0e10cSrcweir aDistEd1.SetPrcntValue(0);
1377cdf0e10cSrcweir ColModify(0);
1378cdf0e10cSrcweir // jetzt noch das Breitenverhaeltnisse auf 2 : 1 bzw. 1 : 2 stellen
1379cdf0e10cSrcweir sal_uInt16 nSmall = pColMgr->GetActualSize() / 3;
1380cdf0e10cSrcweir if(nItem == 4)
1381cdf0e10cSrcweir {
1382cdf0e10cSrcweir aEd2.SetPrcntValue(aEd2.NormalizePercent(long(nSmall)), FUNIT_TWIP);
1383cdf0e10cSrcweir pModifiedField = &aEd2;
1384cdf0e10cSrcweir }
1385cdf0e10cSrcweir else
1386cdf0e10cSrcweir {
1387cdf0e10cSrcweir aEd1.SetPrcntValue(aEd1.NormalizePercent(long(nSmall)), FUNIT_TWIP);
1388cdf0e10cSrcweir pModifiedField = &aEd1;
1389cdf0e10cSrcweir }
1390cdf0e10cSrcweir bLockUpdate = sal_False;
1391cdf0e10cSrcweir Timeout(0);
1392cdf0e10cSrcweir
1393cdf0e10cSrcweir }
1394cdf0e10cSrcweir return 0;
1395cdf0e10cSrcweir }
1396cdf0e10cSrcweir
1397cdf0e10cSrcweir /*-----------------25.10.96 11.41-------------------
1398cdf0e10cSrcweir
1399cdf0e10cSrcweir --------------------------------------------------*/
1400cdf0e10cSrcweir
1401cdf0e10cSrcweir
SetFrmMode(sal_Bool bMod)1402cdf0e10cSrcweir void SwColumnPage::SetFrmMode(sal_Bool bMod)
1403cdf0e10cSrcweir {
1404cdf0e10cSrcweir bFrm = bMod;
1405cdf0e10cSrcweir }
1406cdf0e10cSrcweir /* -----------------------------2002/06/19 13:08------------------------------
1407cdf0e10cSrcweir
1408cdf0e10cSrcweir ---------------------------------------------------------------------------*/
SetInSection(sal_Bool bSet)1409cdf0e10cSrcweir void SwColumnPage::SetInSection(sal_Bool bSet)
1410cdf0e10cSrcweir {
1411cdf0e10cSrcweir if(!SW_MOD()->GetCTLOptions().IsCTLFontEnabled())
1412cdf0e10cSrcweir return;
1413cdf0e10cSrcweir
1414cdf0e10cSrcweir aVertFL.Show(bSet);
1415cdf0e10cSrcweir aPropertiesFL.Show(bSet);
1416cdf0e10cSrcweir aTextDirectionFT.Show(bSet);
1417cdf0e10cSrcweir aTextDirectionLB.Show(bSet);
1418cdf0e10cSrcweir if(bSet)
1419cdf0e10cSrcweir {
1420cdf0e10cSrcweir //resize line type FixedLine
1421cdf0e10cSrcweir Point aLtPos = aFLLineType.GetPosPixel();
1422cdf0e10cSrcweir Point aPropPos = aPropertiesFL.GetPosPixel();
1423cdf0e10cSrcweir Size aSz = aFLLineType.GetSizePixel();
1424cdf0e10cSrcweir aSz.Width() = aPropPos.X() - aLtPos.X() - LogicToPixel(Size(8, 8), MAP_APPFONT).Width();
1425cdf0e10cSrcweir aFLLineType.SetSizePixel(aSz);
1426cdf0e10cSrcweir }
1427cdf0e10cSrcweir else
1428cdf0e10cSrcweir {
1429cdf0e10cSrcweir Size aSz = aFLLineType.GetSizePixel();
1430cdf0e10cSrcweir aSz.Width() = LogicToPixel(Size(248, 248), MAP_APPFONT).Width();
1431cdf0e10cSrcweir aFLLineType.SetSizePixel(aSz);
1432cdf0e10cSrcweir }
1433cdf0e10cSrcweir }
1434cdf0e10cSrcweir
1435cdf0e10cSrcweir /*-----------------07.03.97 08.33-------------------
1436cdf0e10cSrcweir
1437cdf0e10cSrcweir --------------------------------------------------*/
1438cdf0e10cSrcweir
1439cdf0e10cSrcweir
UserDraw(const UserDrawEvent & rUDEvt)1440cdf0e10cSrcweir void ColumnValueSet::UserDraw( const UserDrawEvent& rUDEvt )
1441cdf0e10cSrcweir {
1442cdf0e10cSrcweir OutputDevice* pDev = rUDEvt.GetDevice();
1443cdf0e10cSrcweir const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
1444cdf0e10cSrcweir
1445cdf0e10cSrcweir Rectangle aRect = rUDEvt.GetRect();
1446cdf0e10cSrcweir sal_uInt16 nItemId = rUDEvt.GetItemId();
1447cdf0e10cSrcweir long nRectWidth = aRect.GetWidth();
1448cdf0e10cSrcweir long nRectHeight = aRect.GetHeight();
1449cdf0e10cSrcweir
1450cdf0e10cSrcweir Point aBLPos = aRect.TopLeft();
1451cdf0e10cSrcweir Color aFillColor(pDev->GetFillColor());
1452cdf0e10cSrcweir Color aLineColor(pDev->GetLineColor());
1453cdf0e10cSrcweir pDev->SetFillColor(rStyleSettings.GetFieldColor());
1454cdf0e10cSrcweir pDev->SetLineColor(SwViewOption::GetFontColor());
1455cdf0e10cSrcweir
1456cdf0e10cSrcweir long nStep = Abs(Abs(nRectHeight * 95 /100) / 11);
1457cdf0e10cSrcweir long nTop = (nRectHeight - 11 * nStep ) / 2;
1458cdf0e10cSrcweir sal_uInt16 nCols = 0;
1459cdf0e10cSrcweir long nStarts[3];
1460cdf0e10cSrcweir long nEnds[3];
1461cdf0e10cSrcweir nStarts[0] = nRectWidth * 10 / 100;
1462cdf0e10cSrcweir switch( nItemId )
1463cdf0e10cSrcweir {
1464cdf0e10cSrcweir case 1:
1465cdf0e10cSrcweir nEnds[0] = nRectWidth * 9 / 10;
1466cdf0e10cSrcweir nCols = 1;
1467cdf0e10cSrcweir break;
1468cdf0e10cSrcweir case 2: nCols = 2;
1469cdf0e10cSrcweir nEnds[0] = nRectWidth * 45 / 100;
1470cdf0e10cSrcweir nStarts[1] = nEnds[0] + nStep;
1471cdf0e10cSrcweir nEnds[1] = nRectWidth * 9 / 10;
1472cdf0e10cSrcweir break;
1473cdf0e10cSrcweir case 3: nCols = 3;
1474cdf0e10cSrcweir nEnds[0] = nRectWidth * 30 / 100;
1475cdf0e10cSrcweir nStarts[1] = nEnds[0] + nStep;
1476cdf0e10cSrcweir nEnds[1] = nRectWidth * 63 / 100;
1477cdf0e10cSrcweir nStarts[2] = nEnds[1] + nStep;
1478cdf0e10cSrcweir nEnds[2] = nRectWidth * 9 / 10;
1479cdf0e10cSrcweir break;
1480cdf0e10cSrcweir case 4: nCols = 2;
1481cdf0e10cSrcweir nEnds[0] = nRectWidth * 63 / 100;
1482cdf0e10cSrcweir nStarts[1] = nEnds[0] + nStep;
1483cdf0e10cSrcweir nEnds[1] = nRectWidth * 9 / 10;
1484cdf0e10cSrcweir break;
1485cdf0e10cSrcweir case 5: nCols = 2;
1486cdf0e10cSrcweir nEnds[0] = nRectWidth * 30 / 100;
1487cdf0e10cSrcweir nStarts[1] = nEnds[0] + nStep;
1488cdf0e10cSrcweir nEnds[1] = nRectWidth * 9 / 10;
1489cdf0e10cSrcweir break;
1490cdf0e10cSrcweir }
1491cdf0e10cSrcweir for(sal_uInt16 j = 0; j < nCols; j++ )
1492cdf0e10cSrcweir {
1493cdf0e10cSrcweir Point aStart(aBLPos.X() + nStarts[j], 0);
1494cdf0e10cSrcweir Point aEnd(aBLPos.X() + nEnds[j], 0);
1495cdf0e10cSrcweir for( sal_uInt16 i = 0; i < 12; i ++)
1496cdf0e10cSrcweir {
1497cdf0e10cSrcweir aStart.Y() = aEnd.Y() = aBLPos.Y() + nTop + i * nStep;
1498cdf0e10cSrcweir pDev->DrawLine(aStart, aEnd);
1499cdf0e10cSrcweir }
1500cdf0e10cSrcweir }
1501cdf0e10cSrcweir pDev->SetFillColor(aFillColor);
1502cdf0e10cSrcweir pDev->SetLineColor(aLineColor);
1503cdf0e10cSrcweir }
1504cdf0e10cSrcweir
1505cdf0e10cSrcweir /*-----------------07.03.97 08.48-------------------
1506cdf0e10cSrcweir
1507cdf0e10cSrcweir --------------------------------------------------*/
1508cdf0e10cSrcweir
~ColumnValueSet()1509cdf0e10cSrcweir ColumnValueSet::~ColumnValueSet()
1510cdf0e10cSrcweir {
1511cdf0e10cSrcweir }
1512cdf0e10cSrcweir /* -----------------------------02.04.2002 16:01------------------------------
1513cdf0e10cSrcweir
1514cdf0e10cSrcweir ---------------------------------------------------------------------------*/
DataChanged(const DataChangedEvent & rDCEvt)1515cdf0e10cSrcweir void ColumnValueSet::DataChanged( const DataChangedEvent& rDCEvt )
1516cdf0e10cSrcweir {
1517cdf0e10cSrcweir if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
1518cdf0e10cSrcweir (rDCEvt.GetFlags() & SETTINGS_STYLE) )
1519cdf0e10cSrcweir {
1520cdf0e10cSrcweir Format();
1521cdf0e10cSrcweir }
1522cdf0e10cSrcweir ValueSet::DataChanged( rDCEvt );
1523cdf0e10cSrcweir }
1524cdf0e10cSrcweir
1525