xref: /aoo4110/main/sw/source/ui/utlui/uitool.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_sw.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski 
28*b1cdbd2cSJim Jagielski #include <hintids.hxx>
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski #include <tools/datetime.hxx>
31*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
32*b1cdbd2cSJim Jagielski #include <unotools/collatorwrapper.hxx>
33*b1cdbd2cSJim Jagielski #include <svl/urihelper.hxx>
34*b1cdbd2cSJim Jagielski #include <svl/stritem.hxx>
35*b1cdbd2cSJim Jagielski #include <unotools/syslocale.hxx>
36*b1cdbd2cSJim Jagielski #include <sfx2/app.hxx>
37*b1cdbd2cSJim Jagielski #include <sfx2/docfile.hxx>
38*b1cdbd2cSJim Jagielski #include <sfx2/docfilt.hxx>
39*b1cdbd2cSJim Jagielski #include <editeng/pmdlitem.hxx>
40*b1cdbd2cSJim Jagielski #ifndef _SVX_TSTPITEM_HXX //autogen
41*b1cdbd2cSJim Jagielski #include <editeng/tstpitem.hxx>
42*b1cdbd2cSJim Jagielski #endif
43*b1cdbd2cSJim Jagielski #include <editeng/boxitem.hxx>
44*b1cdbd2cSJim Jagielski #include <editeng/sizeitem.hxx>
45*b1cdbd2cSJim Jagielski #include <svx/pageitem.hxx>
46*b1cdbd2cSJim Jagielski #include <editeng/lrspitem.hxx>
47*b1cdbd2cSJim Jagielski #include <svl/style.hxx>
48*b1cdbd2cSJim Jagielski #ifndef _VCL_LSTBOX_HXX //autogen
49*b1cdbd2cSJim Jagielski #include <vcl/lstbox.hxx>
50*b1cdbd2cSJim Jagielski #endif
51*b1cdbd2cSJim Jagielski #include <unotools/localedatawrapper.hxx>
52*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XDispatch.hpp>
53*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XDispatchProvider.hpp>
54*b1cdbd2cSJim Jagielski #include <com/sun/star/util/XURLTransformer.hpp>
55*b1cdbd2cSJim Jagielski #include <comphelper/processfactory.hxx>
56*b1cdbd2cSJim Jagielski #include <sfx2/viewfrm.hxx>
57*b1cdbd2cSJim Jagielski #include <fmtornt.hxx>
58*b1cdbd2cSJim Jagielski #include <tabcol.hxx>
59*b1cdbd2cSJim Jagielski #include <edtwin.hxx>
60*b1cdbd2cSJim Jagielski #include <fmtfsize.hxx>
61*b1cdbd2cSJim Jagielski #include <fmthdft.hxx>
62*b1cdbd2cSJim Jagielski #include <fmtpdsc.hxx>
63*b1cdbd2cSJim Jagielski #include <wview.hxx>
64*b1cdbd2cSJim Jagielski #include <uiitems.hxx>
65*b1cdbd2cSJim Jagielski #ifndef _DOCSH_HXX
66*b1cdbd2cSJim Jagielski #include <docsh.hxx>
67*b1cdbd2cSJim Jagielski #endif
68*b1cdbd2cSJim Jagielski #include <wrtsh.hxx>
69*b1cdbd2cSJim Jagielski #include <swmodule.hxx>
70*b1cdbd2cSJim Jagielski #ifndef _VIEW_HXX
71*b1cdbd2cSJim Jagielski #include <view.hxx>
72*b1cdbd2cSJim Jagielski #endif
73*b1cdbd2cSJim Jagielski #include <uitool.hxx>
74*b1cdbd2cSJim Jagielski #include <frmatr.hxx>
75*b1cdbd2cSJim Jagielski #include <paratr.hxx>
76*b1cdbd2cSJim Jagielski #include <fmtcol.hxx>
77*b1cdbd2cSJim Jagielski #include <poolfmt.hxx>
78*b1cdbd2cSJim Jagielski #include "usrpref.hxx"
79*b1cdbd2cSJim Jagielski 
80*b1cdbd2cSJim Jagielski #ifndef _ERROR_H
81*b1cdbd2cSJim Jagielski #include <error.h>
82*b1cdbd2cSJim Jagielski #endif
83*b1cdbd2cSJim Jagielski #ifndef _CMDID_H
84*b1cdbd2cSJim Jagielski #include <cmdid.h>
85*b1cdbd2cSJim Jagielski #endif
86*b1cdbd2cSJim Jagielski #ifndef _GLOBALS_HRC
87*b1cdbd2cSJim Jagielski #include <globals.hrc>
88*b1cdbd2cSJim Jagielski #endif
89*b1cdbd2cSJim Jagielski #ifndef _UTLUI_HRC
90*b1cdbd2cSJim Jagielski #include <utlui.hrc>
91*b1cdbd2cSJim Jagielski #endif
92*b1cdbd2cSJim Jagielski #include <doc.hxx>
93*b1cdbd2cSJim Jagielski #include <docary.hxx>
94*b1cdbd2cSJim Jagielski #include <charfmt.hxx>
95*b1cdbd2cSJim Jagielski #include <SwStyleNameMapper.hxx>
96*b1cdbd2cSJim Jagielski // 50 cm 28350
97*b1cdbd2cSJim Jagielski //
98*b1cdbd2cSJim Jagielski #define MAXHEIGHT 28350
99*b1cdbd2cSJim Jagielski #define MAXWIDTH  28350
100*b1cdbd2cSJim Jagielski 
101*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
102*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
103*b1cdbd2cSJim Jagielski 	Beschreibung: Allgemeine List von StringPointern
104*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski 
107*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
108*b1cdbd2cSJim Jagielski 	Beschreibung: Metric umschalten
109*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
110*b1cdbd2cSJim Jagielski 
111*b1cdbd2cSJim Jagielski 
SetMetric(MetricFormatter & rCtrl,FieldUnit eUnit)112*b1cdbd2cSJim Jagielski void SetMetric(MetricFormatter& rCtrl, FieldUnit eUnit)
113*b1cdbd2cSJim Jagielski {
114*b1cdbd2cSJim Jagielski     SwTwips nMin = static_cast< SwTwips >(rCtrl.GetMin(FUNIT_TWIP));
115*b1cdbd2cSJim Jagielski     SwTwips nMax = static_cast< SwTwips >(rCtrl.GetMax(FUNIT_TWIP));
116*b1cdbd2cSJim Jagielski 
117*b1cdbd2cSJim Jagielski 	rCtrl.SetUnit(eUnit);
118*b1cdbd2cSJim Jagielski 
119*b1cdbd2cSJim Jagielski 	rCtrl.SetMin(nMin, FUNIT_TWIP);
120*b1cdbd2cSJim Jagielski 	rCtrl.SetMax(nMax, FUNIT_TWIP);
121*b1cdbd2cSJim Jagielski }
122*b1cdbd2cSJim Jagielski 
123*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
124*b1cdbd2cSJim Jagielski 	Beschreibung:	Boxinfo-Attribut setzen
125*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
126*b1cdbd2cSJim Jagielski 
127*b1cdbd2cSJim Jagielski 
PrepareBoxInfo(SfxItemSet & rSet,const SwWrtShell & rSh)128*b1cdbd2cSJim Jagielski void PrepareBoxInfo(SfxItemSet& rSet, const SwWrtShell& rSh)
129*b1cdbd2cSJim Jagielski {
130*b1cdbd2cSJim Jagielski     SvxBoxInfoItem aBoxInfo( SID_ATTR_BORDER_INNER );
131*b1cdbd2cSJim Jagielski 	const SfxPoolItem *pBoxInfo;
132*b1cdbd2cSJim Jagielski 	if ( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_BORDER_INNER,
133*b1cdbd2cSJim Jagielski 										sal_True, &pBoxInfo))
134*b1cdbd2cSJim Jagielski 		aBoxInfo = *(SvxBoxInfoItem*)pBoxInfo;
135*b1cdbd2cSJim Jagielski 
136*b1cdbd2cSJim Jagielski 		// Tabellenvariante, wenn mehrere Tabellenzellen selektiert
137*b1cdbd2cSJim Jagielski 	rSh.GetCrsr();					//Damit GetCrsrCnt() auch das Richtige liefert
138*b1cdbd2cSJim Jagielski 	aBoxInfo.SetTable          (rSh.IsTableMode() && rSh.GetCrsrCnt() > 1);
139*b1cdbd2cSJim Jagielski 		// Abstandsfeld immer anzeigen
140*b1cdbd2cSJim Jagielski 	aBoxInfo.SetDist           ((sal_Bool) sal_True);
141*b1cdbd2cSJim Jagielski 		// Minimalgroesse in Tabellen und Absaetzen setzen
142*b1cdbd2cSJim Jagielski 	aBoxInfo.SetMinDist        (rSh.IsTableMode() || rSh.GetSelectionType() & (nsSelectionType::SEL_TXT | nsSelectionType::SEL_TBL));
143*b1cdbd2cSJim Jagielski 		// Default-Abstand immer setzen
144*b1cdbd2cSJim Jagielski 	aBoxInfo.SetDefDist        (MIN_BORDER_DIST);
145*b1cdbd2cSJim Jagielski 		// Einzelne Linien koennen nur in Tabellen DontCare-Status haben
146*b1cdbd2cSJim Jagielski 	aBoxInfo.SetValid(VALID_DISABLE, !rSh.IsTableMode());
147*b1cdbd2cSJim Jagielski 
148*b1cdbd2cSJim Jagielski 	rSet.Put(aBoxInfo);
149*b1cdbd2cSJim Jagielski }
150*b1cdbd2cSJim Jagielski 
151*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
152*b1cdbd2cSJim Jagielski 	Beschreibung:	Header Footer fuellen
153*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
154*b1cdbd2cSJim Jagielski 
155*b1cdbd2cSJim Jagielski 
FillHdFt(SwFrmFmt * pFmt,const SfxItemSet & rSet)156*b1cdbd2cSJim Jagielski void FillHdFt(SwFrmFmt* pFmt, const  SfxItemSet& rSet)
157*b1cdbd2cSJim Jagielski {
158*b1cdbd2cSJim Jagielski 	SwAttrSet aSet(pFmt->GetAttrSet());
159*b1cdbd2cSJim Jagielski 	aSet.Put(rSet);
160*b1cdbd2cSJim Jagielski 
161*b1cdbd2cSJim Jagielski 	const SvxSizeItem& rSize = (const SvxSizeItem&)rSet.Get(SID_ATTR_PAGE_SIZE);
162*b1cdbd2cSJim Jagielski 	const SfxBoolItem& rDynamic = (const SfxBoolItem&)rSet.Get(SID_ATTR_PAGE_DYNAMIC);
163*b1cdbd2cSJim Jagielski 
164*b1cdbd2cSJim Jagielski 	// Groesse umsetzen
165*b1cdbd2cSJim Jagielski 	//
166*b1cdbd2cSJim Jagielski 	SwFmtFrmSize aFrmSize(rDynamic.GetValue() ? ATT_MIN_SIZE : ATT_FIX_SIZE,
167*b1cdbd2cSJim Jagielski 							rSize.GetSize().Width(),
168*b1cdbd2cSJim Jagielski 							rSize.GetSize().Height());
169*b1cdbd2cSJim Jagielski 	aSet.Put(aFrmSize);
170*b1cdbd2cSJim Jagielski     pFmt->SetFmtAttr(aSet);
171*b1cdbd2cSJim Jagielski }
172*b1cdbd2cSJim Jagielski 
173*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
174*b1cdbd2cSJim Jagielski 	Beschreibung:	PageDesc <-> in Sets wandeln und zurueck
175*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
176*b1cdbd2cSJim Jagielski 
177*b1cdbd2cSJim Jagielski 
ItemSetToPageDesc(const SfxItemSet & rSet,SwPageDesc & rPageDesc)178*b1cdbd2cSJim Jagielski void ItemSetToPageDesc( const SfxItemSet& rSet, SwPageDesc& rPageDesc )
179*b1cdbd2cSJim Jagielski {
180*b1cdbd2cSJim Jagielski 	SwFrmFmt& rMaster = rPageDesc.GetMaster();
181*b1cdbd2cSJim Jagielski 
182*b1cdbd2cSJim Jagielski 	// alle allgemeinen Rahmen-Attribute uebertragen
183*b1cdbd2cSJim Jagielski 	//
184*b1cdbd2cSJim Jagielski     rMaster.SetFmtAttr(rSet);
185*b1cdbd2cSJim Jagielski 
186*b1cdbd2cSJim Jagielski 	// PageData
187*b1cdbd2cSJim Jagielski 	//
188*b1cdbd2cSJim Jagielski 	if(rSet.GetItemState(SID_ATTR_PAGE) == SFX_ITEM_SET)
189*b1cdbd2cSJim Jagielski 	{
190*b1cdbd2cSJim Jagielski 		const SvxPageItem& rPageItem = (const SvxPageItem&)rSet.Get(SID_ATTR_PAGE);
191*b1cdbd2cSJim Jagielski 
192*b1cdbd2cSJim Jagielski 		sal_uInt16 nUse = (sal_uInt16)rPageItem.GetPageUsage();
193*b1cdbd2cSJim Jagielski 		if(nUse & 0x04)
194*b1cdbd2cSJim Jagielski 			nUse |= 0x03;
195*b1cdbd2cSJim Jagielski 		if(nUse)
196*b1cdbd2cSJim Jagielski 			rPageDesc.SetUseOn( (UseOnPage) nUse );
197*b1cdbd2cSJim Jagielski 		rPageDesc.SetLandscape(rPageItem.IsLandscape());
198*b1cdbd2cSJim Jagielski 		SvxNumberType aNumType;
199*b1cdbd2cSJim Jagielski         aNumType.SetNumberingType( static_cast< sal_Int16 >(rPageItem.GetNumType()) );
200*b1cdbd2cSJim Jagielski 		rPageDesc.SetNumType(aNumType);
201*b1cdbd2cSJim Jagielski 	}
202*b1cdbd2cSJim Jagielski 	// Groesse
203*b1cdbd2cSJim Jagielski 	//
204*b1cdbd2cSJim Jagielski 	if(rSet.GetItemState(SID_ATTR_PAGE_SIZE) == SFX_ITEM_SET)
205*b1cdbd2cSJim Jagielski 	{
206*b1cdbd2cSJim Jagielski 		const SvxSizeItem& rSizeItem = (const SvxSizeItem&)rSet.Get(SID_ATTR_PAGE_SIZE);
207*b1cdbd2cSJim Jagielski 		SwFmtFrmSize aSize(ATT_FIX_SIZE);
208*b1cdbd2cSJim Jagielski 		aSize.SetSize(rSizeItem.GetSize());
209*b1cdbd2cSJim Jagielski         rMaster.SetFmtAttr(aSize);
210*b1cdbd2cSJim Jagielski 	}
211*b1cdbd2cSJim Jagielski 	// Kopzeilen-Attribute auswerten
212*b1cdbd2cSJim Jagielski 	//
213*b1cdbd2cSJim Jagielski 	const SfxPoolItem* pItem;
214*b1cdbd2cSJim Jagielski 	if( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_PAGE_HEADERSET,
215*b1cdbd2cSJim Jagielski 			sal_False, &pItem ) )
216*b1cdbd2cSJim Jagielski 	{
217*b1cdbd2cSJim Jagielski 		const SfxItemSet& rHeaderSet = ((SvxSetItem*)pItem)->GetItemSet();
218*b1cdbd2cSJim Jagielski 		const SfxBoolItem& rHeaderOn = (const SfxBoolItem&)rHeaderSet.Get(SID_ATTR_PAGE_ON);
219*b1cdbd2cSJim Jagielski 
220*b1cdbd2cSJim Jagielski 		if(rHeaderOn.GetValue())
221*b1cdbd2cSJim Jagielski 		{
222*b1cdbd2cSJim Jagielski 			// Werte uebernehmen
223*b1cdbd2cSJim Jagielski 			if(!rMaster.GetHeader().IsActive())
224*b1cdbd2cSJim Jagielski                 rMaster.SetFmtAttr(SwFmtHeader(sal_True));
225*b1cdbd2cSJim Jagielski 
226*b1cdbd2cSJim Jagielski 			// Das Headerformat rausholen und anpassen
227*b1cdbd2cSJim Jagielski 			//
228*b1cdbd2cSJim Jagielski 			SwFmtHeader aHeaderFmt(rMaster.GetHeader());
229*b1cdbd2cSJim Jagielski 			SwFrmFmt *pHeaderFmt = aHeaderFmt.GetHeaderFmt();
230*b1cdbd2cSJim Jagielski 			ASSERT(pHeaderFmt != 0, "kein HeaderFormat");
231*b1cdbd2cSJim Jagielski 
232*b1cdbd2cSJim Jagielski 			::FillHdFt(pHeaderFmt, rHeaderSet);
233*b1cdbd2cSJim Jagielski 
234*b1cdbd2cSJim Jagielski 			rPageDesc.ChgHeaderShare(((const SfxBoolItem&)
235*b1cdbd2cSJim Jagielski 						rHeaderSet.Get(SID_ATTR_PAGE_SHARED)).GetValue());
236*b1cdbd2cSJim Jagielski 		}
237*b1cdbd2cSJim Jagielski 		else
238*b1cdbd2cSJim Jagielski 		{	// Header ausschalten
239*b1cdbd2cSJim Jagielski 			//
240*b1cdbd2cSJim Jagielski 			if(rMaster.GetHeader().IsActive())
241*b1cdbd2cSJim Jagielski 			{
242*b1cdbd2cSJim Jagielski                 rMaster.SetFmtAttr(SwFmtHeader(sal_Bool(sal_False)));
243*b1cdbd2cSJim Jagielski 				rPageDesc.ChgHeaderShare(sal_False);
244*b1cdbd2cSJim Jagielski 			}
245*b1cdbd2cSJim Jagielski 		}
246*b1cdbd2cSJim Jagielski 	}
247*b1cdbd2cSJim Jagielski 
248*b1cdbd2cSJim Jagielski 	// Fusszeilen-Attribute auswerten
249*b1cdbd2cSJim Jagielski 	//
250*b1cdbd2cSJim Jagielski 	if( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_PAGE_FOOTERSET,
251*b1cdbd2cSJim Jagielski 			sal_False, &pItem ) )
252*b1cdbd2cSJim Jagielski 	{
253*b1cdbd2cSJim Jagielski 		const SfxItemSet& rFooterSet = ((SvxSetItem*)pItem)->GetItemSet();
254*b1cdbd2cSJim Jagielski 		const SfxBoolItem& rFooterOn = (const SfxBoolItem&)rFooterSet.Get(SID_ATTR_PAGE_ON);
255*b1cdbd2cSJim Jagielski 
256*b1cdbd2cSJim Jagielski 		if(rFooterOn.GetValue())
257*b1cdbd2cSJim Jagielski 		{
258*b1cdbd2cSJim Jagielski 			// Werte uebernehmen
259*b1cdbd2cSJim Jagielski 			if(!rMaster.GetFooter().IsActive())
260*b1cdbd2cSJim Jagielski                 rMaster.SetFmtAttr(SwFmtFooter(sal_True));
261*b1cdbd2cSJim Jagielski 
262*b1cdbd2cSJim Jagielski 			// Das Footerformat rausholen und anpassen
263*b1cdbd2cSJim Jagielski 			//
264*b1cdbd2cSJim Jagielski 			SwFmtFooter aFooterFmt(rMaster.GetFooter());
265*b1cdbd2cSJim Jagielski 			SwFrmFmt *pFooterFmt = aFooterFmt.GetFooterFmt();
266*b1cdbd2cSJim Jagielski 			ASSERT(pFooterFmt != 0, "kein FooterFormat");
267*b1cdbd2cSJim Jagielski 
268*b1cdbd2cSJim Jagielski 			::FillHdFt(pFooterFmt, rFooterSet);
269*b1cdbd2cSJim Jagielski 
270*b1cdbd2cSJim Jagielski 			rPageDesc.ChgFooterShare(((const SfxBoolItem&)
271*b1cdbd2cSJim Jagielski 						rFooterSet.Get(SID_ATTR_PAGE_SHARED)).GetValue());
272*b1cdbd2cSJim Jagielski 		}
273*b1cdbd2cSJim Jagielski 		else
274*b1cdbd2cSJim Jagielski 		{	// Footer ausschalten
275*b1cdbd2cSJim Jagielski 			//
276*b1cdbd2cSJim Jagielski 			if(rMaster.GetFooter().IsActive())
277*b1cdbd2cSJim Jagielski 			{
278*b1cdbd2cSJim Jagielski                 rMaster.SetFmtAttr(SwFmtFooter(sal_Bool(sal_False)));
279*b1cdbd2cSJim Jagielski 				rPageDesc.ChgFooterShare(sal_False);
280*b1cdbd2cSJim Jagielski 			}
281*b1cdbd2cSJim Jagielski 		}
282*b1cdbd2cSJim Jagielski 	}
283*b1cdbd2cSJim Jagielski 
284*b1cdbd2cSJim Jagielski 	// Fussnoten
285*b1cdbd2cSJim Jagielski 	//
286*b1cdbd2cSJim Jagielski 	if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_FTN_INFO,
287*b1cdbd2cSJim Jagielski 			sal_False, &pItem ) )
288*b1cdbd2cSJim Jagielski 		rPageDesc.SetFtnInfo( ((SwPageFtnInfoItem*)pItem)->GetPageFtnInfo() );
289*b1cdbd2cSJim Jagielski 
290*b1cdbd2cSJim Jagielski 
291*b1cdbd2cSJim Jagielski 	//
292*b1cdbd2cSJim Jagielski 	// Columns
293*b1cdbd2cSJim Jagielski 	//
294*b1cdbd2cSJim Jagielski 
295*b1cdbd2cSJim Jagielski 	// Registerhaltigkeit
296*b1cdbd2cSJim Jagielski 
297*b1cdbd2cSJim Jagielski 	if(SFX_ITEM_SET == rSet.GetItemState(
298*b1cdbd2cSJim Jagielski 							SID_SWREGISTER_MODE, sal_False, &pItem))
299*b1cdbd2cSJim Jagielski 	{
300*b1cdbd2cSJim Jagielski 		sal_Bool bSet = ((const SfxBoolItem*)pItem)->GetValue();
301*b1cdbd2cSJim Jagielski 		if(!bSet)
302*b1cdbd2cSJim Jagielski 			rPageDesc.SetRegisterFmtColl(0);
303*b1cdbd2cSJim Jagielski 		else if(SFX_ITEM_SET == rSet.GetItemState(
304*b1cdbd2cSJim Jagielski 								SID_SWREGISTER_COLLECTION, sal_False, &pItem))
305*b1cdbd2cSJim Jagielski 		{
306*b1cdbd2cSJim Jagielski 			const String& rColl = ((const SfxStringItem*)pItem)->GetValue();
307*b1cdbd2cSJim Jagielski 			SwDoc& rDoc = *rMaster.GetDoc();
308*b1cdbd2cSJim Jagielski 			SwTxtFmtColl* pColl = rDoc.FindTxtFmtCollByName( rColl );
309*b1cdbd2cSJim Jagielski 			if( !pColl )
310*b1cdbd2cSJim Jagielski 			{
311*b1cdbd2cSJim Jagielski 				sal_uInt16 nId = SwStyleNameMapper::GetPoolIdFromUIName( rColl, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
312*b1cdbd2cSJim Jagielski 				if( USHRT_MAX != nId )
313*b1cdbd2cSJim Jagielski 					pColl = rDoc.GetTxtCollFromPool( nId );
314*b1cdbd2cSJim Jagielski 				else
315*b1cdbd2cSJim Jagielski 					pColl = rDoc.MakeTxtFmtColl( rColl,
316*b1cdbd2cSJim Jagielski 								(SwTxtFmtColl*)rDoc.GetDfltTxtFmtColl() );
317*b1cdbd2cSJim Jagielski 			}
318*b1cdbd2cSJim Jagielski 			if( pColl )
319*b1cdbd2cSJim Jagielski                 pColl->SetFmtAttr( SwRegisterItem ( sal_True ));
320*b1cdbd2cSJim Jagielski 			rPageDesc.SetRegisterFmtColl( pColl );
321*b1cdbd2cSJim Jagielski 		}
322*b1cdbd2cSJim Jagielski 	}
323*b1cdbd2cSJim Jagielski }
324*b1cdbd2cSJim Jagielski 
325*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
326*b1cdbd2cSJim Jagielski 	Beschreibung:
327*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
328*b1cdbd2cSJim Jagielski 
329*b1cdbd2cSJim Jagielski 
PageDescToItemSet(const SwPageDesc & rPageDesc,SfxItemSet & rSet)330*b1cdbd2cSJim Jagielski void PageDescToItemSet(	const SwPageDesc& rPageDesc, SfxItemSet& rSet)
331*b1cdbd2cSJim Jagielski {
332*b1cdbd2cSJim Jagielski 	const SwFrmFmt& rMaster = rPageDesc.GetMaster();
333*b1cdbd2cSJim Jagielski 
334*b1cdbd2cSJim Jagielski 	// Seitendaten
335*b1cdbd2cSJim Jagielski 	//
336*b1cdbd2cSJim Jagielski 	SvxPageItem aPageItem(SID_ATTR_PAGE);
337*b1cdbd2cSJim Jagielski 	aPageItem.SetDescName(rPageDesc.GetName());
338*b1cdbd2cSJim Jagielski     aPageItem.SetPageUsage(rPageDesc.GetUseOn());
339*b1cdbd2cSJim Jagielski 	aPageItem.SetLandscape(rPageDesc.GetLandscape());
340*b1cdbd2cSJim Jagielski 	aPageItem.SetNumType((SvxNumType)rPageDesc.GetNumType().GetNumberingType());
341*b1cdbd2cSJim Jagielski 	rSet.Put(aPageItem);
342*b1cdbd2cSJim Jagielski 
343*b1cdbd2cSJim Jagielski 	// Groesse
344*b1cdbd2cSJim Jagielski 	SvxSizeItem aSizeItem(SID_ATTR_PAGE_SIZE, rMaster.GetFrmSize().GetSize());
345*b1cdbd2cSJim Jagielski 	rSet.Put(aSizeItem);
346*b1cdbd2cSJim Jagielski 
347*b1cdbd2cSJim Jagielski 	// Maximale Groesse
348*b1cdbd2cSJim Jagielski 	SvxSizeItem aMaxSizeItem(SID_ATTR_PAGE_MAXSIZE, Size(MAXWIDTH, MAXHEIGHT));
349*b1cdbd2cSJim Jagielski 	rSet.Put(aMaxSizeItem);
350*b1cdbd2cSJim Jagielski 
351*b1cdbd2cSJim Jagielski 	// Raender, Umrandung und das andere Zeug
352*b1cdbd2cSJim Jagielski 	//
353*b1cdbd2cSJim Jagielski 	rSet.Put(rMaster.GetAttrSet());
354*b1cdbd2cSJim Jagielski 
355*b1cdbd2cSJim Jagielski     SvxBoxInfoItem aBoxInfo( SID_ATTR_BORDER_INNER );
356*b1cdbd2cSJim Jagielski 	const SfxPoolItem *pBoxInfo;
357*b1cdbd2cSJim Jagielski 	if ( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_BORDER_INNER,
358*b1cdbd2cSJim Jagielski 											sal_True, &pBoxInfo) )
359*b1cdbd2cSJim Jagielski 		aBoxInfo = *(SvxBoxInfoItem*)pBoxInfo;
360*b1cdbd2cSJim Jagielski 
361*b1cdbd2cSJim Jagielski 	aBoxInfo.SetTable( sal_False );
362*b1cdbd2cSJim Jagielski 		// Abstandsfeld immer anzeigen
363*b1cdbd2cSJim Jagielski 	aBoxInfo.SetDist( sal_True);
364*b1cdbd2cSJim Jagielski 		// Minimalgroesse in Tabellen und Absaetzen setzen
365*b1cdbd2cSJim Jagielski 	aBoxInfo.SetMinDist( sal_False );
366*b1cdbd2cSJim Jagielski 	// Default-Abstand immer setzen
367*b1cdbd2cSJim Jagielski 	aBoxInfo.SetDefDist( MIN_BORDER_DIST );
368*b1cdbd2cSJim Jagielski 		// Einzelne Linien koennen nur in Tabellen DontCare-Status haben
369*b1cdbd2cSJim Jagielski 	aBoxInfo.SetValid( VALID_DISABLE );
370*b1cdbd2cSJim Jagielski 	rSet.Put( aBoxInfo );
371*b1cdbd2cSJim Jagielski 
372*b1cdbd2cSJim Jagielski 
373*b1cdbd2cSJim Jagielski 	SfxStringItem aFollow(SID_ATTR_PAGE_EXT1, aEmptyStr);
374*b1cdbd2cSJim Jagielski 	if(rPageDesc.GetFollow())
375*b1cdbd2cSJim Jagielski 		aFollow.SetValue(rPageDesc.GetFollow()->GetName());
376*b1cdbd2cSJim Jagielski 	rSet.Put(aFollow);
377*b1cdbd2cSJim Jagielski 
378*b1cdbd2cSJim Jagielski 	// Header
379*b1cdbd2cSJim Jagielski 	//
380*b1cdbd2cSJim Jagielski 	if(rMaster.GetHeader().IsActive())
381*b1cdbd2cSJim Jagielski 	{
382*b1cdbd2cSJim Jagielski 		const SwFmtHeader &rHeaderFmt = rMaster.GetHeader();
383*b1cdbd2cSJim Jagielski 		const SwFrmFmt *pHeaderFmt = rHeaderFmt.GetHeaderFmt();
384*b1cdbd2cSJim Jagielski 		ASSERT(pHeaderFmt != 0, kein HeaderFormat.);
385*b1cdbd2cSJim Jagielski 
386*b1cdbd2cSJim Jagielski 		// HeaderInfo, Raender, Hintergrund, Umrandung
387*b1cdbd2cSJim Jagielski 		//
388*b1cdbd2cSJim Jagielski 		SfxItemSet aHeaderSet( *rSet.GetPool(),
389*b1cdbd2cSJim Jagielski 					SID_ATTR_PAGE_ON, 		SID_ATTR_PAGE_SHARED,
390*b1cdbd2cSJim Jagielski 					SID_ATTR_PAGE_SIZE, 	SID_ATTR_PAGE_SIZE,
391*b1cdbd2cSJim Jagielski 					SID_ATTR_BORDER_INNER,	SID_ATTR_BORDER_INNER,
392*b1cdbd2cSJim Jagielski 					RES_FRMATR_BEGIN,		RES_FRMATR_END-1,
393*b1cdbd2cSJim Jagielski 					0);
394*b1cdbd2cSJim Jagielski 
395*b1cdbd2cSJim Jagielski 		// dynamische oder feste Hoehe
396*b1cdbd2cSJim Jagielski 		//
397*b1cdbd2cSJim Jagielski 		SfxBoolItem aOn(SID_ATTR_PAGE_ON, sal_True);
398*b1cdbd2cSJim Jagielski 		aHeaderSet.Put(aOn);
399*b1cdbd2cSJim Jagielski 
400*b1cdbd2cSJim Jagielski 		const SwFmtFrmSize &rFrmSize = pHeaderFmt->GetFrmSize();
401*b1cdbd2cSJim Jagielski         const SwFrmSize eSizeType = rFrmSize.GetHeightSizeType();
402*b1cdbd2cSJim Jagielski 		SfxBoolItem aDynamic(SID_ATTR_PAGE_DYNAMIC, eSizeType != ATT_FIX_SIZE);
403*b1cdbd2cSJim Jagielski 		aHeaderSet.Put(aDynamic);
404*b1cdbd2cSJim Jagielski 
405*b1cdbd2cSJim Jagielski 		// Links gleich rechts
406*b1cdbd2cSJim Jagielski 		//
407*b1cdbd2cSJim Jagielski 		SfxBoolItem aShared(SID_ATTR_PAGE_SHARED, rPageDesc.IsHeaderShared());
408*b1cdbd2cSJim Jagielski 		aHeaderSet.Put(aShared);
409*b1cdbd2cSJim Jagielski 
410*b1cdbd2cSJim Jagielski 		// Groesse
411*b1cdbd2cSJim Jagielski 		SvxSizeItem aSize(SID_ATTR_PAGE_SIZE, Size(rFrmSize.GetSize()));
412*b1cdbd2cSJim Jagielski 		aHeaderSet.Put(aSize);
413*b1cdbd2cSJim Jagielski 
414*b1cdbd2cSJim Jagielski 		// Rahmen-Attribute umschaufeln
415*b1cdbd2cSJim Jagielski 		//
416*b1cdbd2cSJim Jagielski 		aHeaderSet.Put(pHeaderFmt->GetAttrSet());
417*b1cdbd2cSJim Jagielski 		aHeaderSet.Put( aBoxInfo );
418*b1cdbd2cSJim Jagielski 
419*b1cdbd2cSJim Jagielski 		// SetItem erzeugen
420*b1cdbd2cSJim Jagielski 		//
421*b1cdbd2cSJim Jagielski 		SvxSetItem aSetItem(SID_ATTR_PAGE_HEADERSET, aHeaderSet);
422*b1cdbd2cSJim Jagielski 		rSet.Put(aSetItem);
423*b1cdbd2cSJim Jagielski 	}
424*b1cdbd2cSJim Jagielski 
425*b1cdbd2cSJim Jagielski 	// Footer
426*b1cdbd2cSJim Jagielski 	if(rMaster.GetFooter().IsActive())
427*b1cdbd2cSJim Jagielski 	{
428*b1cdbd2cSJim Jagielski 		const SwFmtFooter &rFooterFmt = rMaster.GetFooter();
429*b1cdbd2cSJim Jagielski 		const SwFrmFmt *pFooterFmt = rFooterFmt.GetFooterFmt();
430*b1cdbd2cSJim Jagielski 		ASSERT(pFooterFmt != 0, kein FooterFormat.);
431*b1cdbd2cSJim Jagielski 
432*b1cdbd2cSJim Jagielski 		// FooterInfo, Raender, Hintergrund, Umrandung
433*b1cdbd2cSJim Jagielski 		//
434*b1cdbd2cSJim Jagielski 		SfxItemSet aFooterSet( *rSet.GetPool(),
435*b1cdbd2cSJim Jagielski 					SID_ATTR_PAGE_ON, 		SID_ATTR_PAGE_SHARED,
436*b1cdbd2cSJim Jagielski 					SID_ATTR_PAGE_SIZE, 	SID_ATTR_PAGE_SIZE,
437*b1cdbd2cSJim Jagielski 					SID_ATTR_BORDER_INNER,	SID_ATTR_BORDER_INNER,
438*b1cdbd2cSJim Jagielski 					RES_FRMATR_BEGIN, 		RES_FRMATR_END-1,
439*b1cdbd2cSJim Jagielski 					0);
440*b1cdbd2cSJim Jagielski 
441*b1cdbd2cSJim Jagielski 		// dynamische oder feste Hoehe
442*b1cdbd2cSJim Jagielski 		//
443*b1cdbd2cSJim Jagielski 		SfxBoolItem aOn(SID_ATTR_PAGE_ON, sal_True);
444*b1cdbd2cSJim Jagielski 		aFooterSet.Put(aOn);
445*b1cdbd2cSJim Jagielski 
446*b1cdbd2cSJim Jagielski 		const SwFmtFrmSize &rFrmSize = pFooterFmt->GetFrmSize();
447*b1cdbd2cSJim Jagielski         const SwFrmSize eSizeType = rFrmSize.GetHeightSizeType();
448*b1cdbd2cSJim Jagielski 		SfxBoolItem aDynamic(SID_ATTR_PAGE_DYNAMIC, eSizeType != ATT_FIX_SIZE);
449*b1cdbd2cSJim Jagielski 		aFooterSet.Put(aDynamic);
450*b1cdbd2cSJim Jagielski 
451*b1cdbd2cSJim Jagielski 		// Links gleich rechts
452*b1cdbd2cSJim Jagielski 		//
453*b1cdbd2cSJim Jagielski 		SfxBoolItem aShared(SID_ATTR_PAGE_SHARED, rPageDesc.IsFooterShared());
454*b1cdbd2cSJim Jagielski 		aFooterSet.Put(aShared);
455*b1cdbd2cSJim Jagielski 
456*b1cdbd2cSJim Jagielski 		// Groesse
457*b1cdbd2cSJim Jagielski 		SvxSizeItem aSize(SID_ATTR_PAGE_SIZE, Size(rFrmSize.GetSize()));
458*b1cdbd2cSJim Jagielski 		aFooterSet.Put(aSize);
459*b1cdbd2cSJim Jagielski 
460*b1cdbd2cSJim Jagielski 		// Rahmen-Attribute umschaufeln
461*b1cdbd2cSJim Jagielski 		//
462*b1cdbd2cSJim Jagielski 		aFooterSet.Put(pFooterFmt->GetAttrSet());
463*b1cdbd2cSJim Jagielski 		aFooterSet.Put( aBoxInfo );
464*b1cdbd2cSJim Jagielski 
465*b1cdbd2cSJim Jagielski 		// SetItem erzeugen
466*b1cdbd2cSJim Jagielski 		//
467*b1cdbd2cSJim Jagielski 		SvxSetItem aSetItem(SID_ATTR_PAGE_FOOTERSET, aFooterSet);
468*b1cdbd2cSJim Jagielski 		rSet.Put(aSetItem);
469*b1cdbd2cSJim Jagielski 	}
470*b1cdbd2cSJim Jagielski 
471*b1cdbd2cSJim Jagielski 	// Fussnoten einbauen
472*b1cdbd2cSJim Jagielski 	//
473*b1cdbd2cSJim Jagielski 	SwPageFtnInfo& rInfo = (SwPageFtnInfo&)rPageDesc.GetFtnInfo();
474*b1cdbd2cSJim Jagielski 	SwPageFtnInfoItem aFtnItem(FN_PARAM_FTN_INFO, rInfo);
475*b1cdbd2cSJim Jagielski 	rSet.Put(aFtnItem);
476*b1cdbd2cSJim Jagielski 
477*b1cdbd2cSJim Jagielski 	// Registerhaltigkeit
478*b1cdbd2cSJim Jagielski 
479*b1cdbd2cSJim Jagielski 	const SwTxtFmtColl* pCol = rPageDesc.GetRegisterFmtColl();
480*b1cdbd2cSJim Jagielski 	SwRegisterItem aReg(pCol != 0);
481*b1cdbd2cSJim Jagielski 	aReg.SetWhich(SID_SWREGISTER_MODE);
482*b1cdbd2cSJim Jagielski 	rSet.Put(aReg);
483*b1cdbd2cSJim Jagielski 	if(pCol)
484*b1cdbd2cSJim Jagielski 		rSet.Put(SfxStringItem(SID_SWREGISTER_COLLECTION, pCol->GetName()));
485*b1cdbd2cSJim Jagielski 
486*b1cdbd2cSJim Jagielski }
487*b1cdbd2cSJim Jagielski 
488*b1cdbd2cSJim Jagielski 
489*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
490*b1cdbd2cSJim Jagielski 	Beschreibung:	DefaultTabs setzen
491*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
492*b1cdbd2cSJim Jagielski 
493*b1cdbd2cSJim Jagielski 
MakeDefTabs(SwTwips nDefDist,SvxTabStopItem & rTabs)494*b1cdbd2cSJim Jagielski void MakeDefTabs(SwTwips nDefDist, SvxTabStopItem& rTabs)
495*b1cdbd2cSJim Jagielski {
496*b1cdbd2cSJim Jagielski 	if( rTabs.Count() )
497*b1cdbd2cSJim Jagielski 		return;
498*b1cdbd2cSJim Jagielski 	{
499*b1cdbd2cSJim Jagielski 		SvxTabStop aSwTabStop( nDefDist, SVX_TAB_ADJUST_DEFAULT );
500*b1cdbd2cSJim Jagielski 		rTabs.Insert( aSwTabStop );
501*b1cdbd2cSJim Jagielski 	}
502*b1cdbd2cSJim Jagielski }
503*b1cdbd2cSJim Jagielski 
504*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
505*b1cdbd2cSJim Jagielski 	Beschreibung:	Abstand zwischen zwei Tabs
506*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
507*b1cdbd2cSJim Jagielski 
508*b1cdbd2cSJim Jagielski 
GetTabDist(const SvxTabStopItem & rTabs)509*b1cdbd2cSJim Jagielski sal_uInt16 GetTabDist(const SvxTabStopItem& rTabs)
510*b1cdbd2cSJim Jagielski {
511*b1cdbd2cSJim Jagielski 	sal_uInt16 nDefDist;
512*b1cdbd2cSJim Jagielski 	if( rTabs.Count() )
513*b1cdbd2cSJim Jagielski 		nDefDist = (sal_uInt16)( rTabs[0].GetTabPos() );
514*b1cdbd2cSJim Jagielski 	else
515*b1cdbd2cSJim Jagielski 		nDefDist = 1134;     // 2cm
516*b1cdbd2cSJim Jagielski 	return nDefDist;
517*b1cdbd2cSJim Jagielski }
518*b1cdbd2cSJim Jagielski 
519*b1cdbd2cSJim Jagielski 
520*b1cdbd2cSJim Jagielski // erfrage ob im Set eine Sfx-PageDesc-Kombination vorliegt und returne diese
SfxToSwPageDescAttr(const SwWrtShell & rShell,SfxItemSet & rSet)521*b1cdbd2cSJim Jagielski void SfxToSwPageDescAttr( const SwWrtShell& rShell, SfxItemSet& rSet )
522*b1cdbd2cSJim Jagielski {
523*b1cdbd2cSJim Jagielski 	const SfxPoolItem* pItem;
524*b1cdbd2cSJim Jagielski 	SwFmtPageDesc aPgDesc;
525*b1cdbd2cSJim Jagielski 
526*b1cdbd2cSJim Jagielski 	sal_Bool bChanged = sal_False;
527*b1cdbd2cSJim Jagielski 	// Seitennummer
528*b1cdbd2cSJim Jagielski 	if(SFX_ITEM_SET == rSet.GetItemState(SID_ATTR_PARA_PAGENUM, sal_False, &pItem))
529*b1cdbd2cSJim Jagielski 	{
530*b1cdbd2cSJim Jagielski 		aPgDesc.SetNumOffset(((SfxUInt16Item*)pItem)->GetValue());
531*b1cdbd2cSJim Jagielski 		bChanged = sal_True;
532*b1cdbd2cSJim Jagielski 	}
533*b1cdbd2cSJim Jagielski 	if( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_PARA_MODEL, sal_False, &pItem ))
534*b1cdbd2cSJim Jagielski 	{
535*b1cdbd2cSJim Jagielski 		const String& rDescName = ((SvxPageModelItem*)pItem)->GetValue();
536*b1cdbd2cSJim Jagielski 		if( rDescName.Len() )	// kein Name -> PageDesc ausschalten!
537*b1cdbd2cSJim Jagielski 		{
538*b1cdbd2cSJim Jagielski 			// nur loeschen, wenn PageDesc eingschaltet wird!
539*b1cdbd2cSJim Jagielski 			rSet.ClearItem( RES_BREAK );
540*b1cdbd2cSJim Jagielski 			SwPageDesc* pDesc = ((SwWrtShell&)rShell).FindPageDescByName(
541*b1cdbd2cSJim Jagielski 													rDescName, sal_True );
542*b1cdbd2cSJim Jagielski 			if( pDesc )
543*b1cdbd2cSJim Jagielski                 aPgDesc.RegisterToPageDesc( *pDesc );
544*b1cdbd2cSJim Jagielski 		}
545*b1cdbd2cSJim Jagielski 		rSet.ClearItem( SID_ATTR_PARA_MODEL );
546*b1cdbd2cSJim Jagielski 		bChanged = sal_True;
547*b1cdbd2cSJim Jagielski 	}
548*b1cdbd2cSJim Jagielski 	else
549*b1cdbd2cSJim Jagielski 	{
550*b1cdbd2cSJim Jagielski 		SfxItemSet aCoreSet(rShell.GetView().GetPool(), RES_PAGEDESC, RES_PAGEDESC );
551*b1cdbd2cSJim Jagielski         rShell.GetCurAttr( aCoreSet );
552*b1cdbd2cSJim Jagielski 		if(SFX_ITEM_SET == aCoreSet.GetItemState( RES_PAGEDESC, sal_True, &pItem ) )
553*b1cdbd2cSJim Jagielski 		{
554*b1cdbd2cSJim Jagielski 			if( ((SwFmtPageDesc*)pItem)->GetPageDesc() )
555*b1cdbd2cSJim Jagielski 			{
556*b1cdbd2cSJim Jagielski                 aPgDesc.RegisterToPageDesc( *((SwFmtPageDesc*)pItem)->GetPageDesc() );
557*b1cdbd2cSJim Jagielski 			}
558*b1cdbd2cSJim Jagielski 		}
559*b1cdbd2cSJim Jagielski 	}
560*b1cdbd2cSJim Jagielski 
561*b1cdbd2cSJim Jagielski 
562*b1cdbd2cSJim Jagielski 	if(bChanged)
563*b1cdbd2cSJim Jagielski 		rSet.Put( aPgDesc );
564*b1cdbd2cSJim Jagielski }
565*b1cdbd2cSJim Jagielski 
566*b1cdbd2cSJim Jagielski 
567*b1cdbd2cSJim Jagielski // erfrage ob im Set eine Sfx-PageDesc-Kombination vorliegt und returne diese
SwToSfxPageDescAttr(SfxItemSet & rCoreSet)568*b1cdbd2cSJim Jagielski void SwToSfxPageDescAttr( SfxItemSet& rCoreSet )
569*b1cdbd2cSJim Jagielski {
570*b1cdbd2cSJim Jagielski 	const SfxPoolItem* pItem = 0;
571*b1cdbd2cSJim Jagielski 	String aName;
572*b1cdbd2cSJim Jagielski 	sal_uInt16 nPageNum = 0;
573*b1cdbd2cSJim Jagielski 	sal_Bool bPut = sal_True;
574*b1cdbd2cSJim Jagielski 	switch( rCoreSet.GetItemState( RES_PAGEDESC, sal_True, &pItem ) )
575*b1cdbd2cSJim Jagielski 	{
576*b1cdbd2cSJim Jagielski 	case SFX_ITEM_SET:
577*b1cdbd2cSJim Jagielski 		{
578*b1cdbd2cSJim Jagielski 			if( ((SwFmtPageDesc*)pItem)->GetPageDesc() )
579*b1cdbd2cSJim Jagielski 			{
580*b1cdbd2cSJim Jagielski 				aName = ((SwFmtPageDesc*)pItem)->GetPageDesc()->GetName();
581*b1cdbd2cSJim Jagielski 				nPageNum = ((SwFmtPageDesc*)pItem)->GetNumOffset();
582*b1cdbd2cSJim Jagielski 			}
583*b1cdbd2cSJim Jagielski 			rCoreSet.ClearItem( RES_PAGEDESC );
584*b1cdbd2cSJim Jagielski 			// Seitennummer
585*b1cdbd2cSJim Jagielski 		}
586*b1cdbd2cSJim Jagielski 		break;
587*b1cdbd2cSJim Jagielski 
588*b1cdbd2cSJim Jagielski 	case SFX_ITEM_AVAILABLE:
589*b1cdbd2cSJim Jagielski 		break;
590*b1cdbd2cSJim Jagielski 
591*b1cdbd2cSJim Jagielski 	default:
592*b1cdbd2cSJim Jagielski 		bPut = sal_False;
593*b1cdbd2cSJim Jagielski 	}
594*b1cdbd2cSJim Jagielski 	SfxUInt16Item aPageNum( SID_ATTR_PARA_PAGENUM, nPageNum );
595*b1cdbd2cSJim Jagielski 	rCoreSet.Put( aPageNum );
596*b1cdbd2cSJim Jagielski 
597*b1cdbd2cSJim Jagielski 	if(bPut)
598*b1cdbd2cSJim Jagielski 		rCoreSet.Put( SvxPageModelItem( aName, sal_True, SID_ATTR_PARA_MODEL ) );
599*b1cdbd2cSJim Jagielski }
600*b1cdbd2cSJim Jagielski 
601*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
602*b1cdbd2cSJim Jagielski 	Beschreibung:	Metric ermitteln
603*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
604*b1cdbd2cSJim Jagielski 
605*b1cdbd2cSJim Jagielski 
GetDfltMetric(sal_Bool bWeb)606*b1cdbd2cSJim Jagielski FieldUnit	GetDfltMetric(sal_Bool bWeb)
607*b1cdbd2cSJim Jagielski {
608*b1cdbd2cSJim Jagielski 	return SW_MOD()->GetUsrPref(bWeb)->GetMetric();
609*b1cdbd2cSJim Jagielski }
610*b1cdbd2cSJim Jagielski 
611*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
612*b1cdbd2cSJim Jagielski 	Beschreibung:	Metric ermitteln
613*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
614*b1cdbd2cSJim Jagielski 
615*b1cdbd2cSJim Jagielski 
SetDfltMetric(FieldUnit eMetric,sal_Bool bWeb)616*b1cdbd2cSJim Jagielski void	SetDfltMetric( FieldUnit eMetric, sal_Bool bWeb )
617*b1cdbd2cSJim Jagielski {
618*b1cdbd2cSJim Jagielski 	SW_MOD()->ApplyUserMetric(eMetric, bWeb);
619*b1cdbd2cSJim Jagielski }
620*b1cdbd2cSJim Jagielski 
621*b1cdbd2cSJim Jagielski /*-----------------09.04.98 16:58-------------------
622*b1cdbd2cSJim Jagielski 
623*b1cdbd2cSJim Jagielski --------------------------------------------------*/
InsertStringSorted(const String & rEntry,ListBox & rToFill,sal_uInt16 nOffset)624*b1cdbd2cSJim Jagielski sal_uInt16 InsertStringSorted(const String& rEntry, ListBox& rToFill, sal_uInt16 nOffset )
625*b1cdbd2cSJim Jagielski {
626*b1cdbd2cSJim Jagielski     sal_uInt16 i = nOffset;
627*b1cdbd2cSJim Jagielski 	CollatorWrapper& rCaseColl = ::GetAppCaseCollator();
628*b1cdbd2cSJim Jagielski 
629*b1cdbd2cSJim Jagielski 	for( ; i < rToFill.GetEntryCount(); i++ )
630*b1cdbd2cSJim Jagielski 	{
631*b1cdbd2cSJim Jagielski 		if( 0 < rCaseColl.compareString( rToFill.GetEntry(i), rEntry ))
632*b1cdbd2cSJim Jagielski 			break;
633*b1cdbd2cSJim Jagielski 	}
634*b1cdbd2cSJim Jagielski 	return rToFill.InsertEntry(rEntry, i);
635*b1cdbd2cSJim Jagielski }
FillCharStyleListBox(ListBox & rToFill,SwDocShell * pDocSh,sal_Bool bSorted,sal_Bool bWithDefault)636*b1cdbd2cSJim Jagielski void FillCharStyleListBox(ListBox& rToFill, SwDocShell* pDocSh, sal_Bool bSorted, sal_Bool bWithDefault)
637*b1cdbd2cSJim Jagielski {
638*b1cdbd2cSJim Jagielski 	sal_Bool bHasOffset = rToFill.GetEntryCount() > 0;
639*b1cdbd2cSJim Jagielski 	SfxStyleSheetBasePool* pPool = pDocSh->GetStyleSheetPool();
640*b1cdbd2cSJim Jagielski 	pPool->SetSearchMask(SFX_STYLE_FAMILY_CHAR, SFXSTYLEBIT_ALL);
641*b1cdbd2cSJim Jagielski 	SwDoc* pDoc = pDocSh->GetDoc();
642*b1cdbd2cSJim Jagielski 	const SfxStyleSheetBase* pBase = pPool->First();
643*b1cdbd2cSJim Jagielski 	String sStandard;
644*b1cdbd2cSJim Jagielski 	SwStyleNameMapper::FillUIName( RES_POOLCOLL_STANDARD, sStandard );
645*b1cdbd2cSJim Jagielski 	while(pBase)
646*b1cdbd2cSJim Jagielski 	{
647*b1cdbd2cSJim Jagielski         if(bWithDefault || pBase->GetName() !=  sStandard)
648*b1cdbd2cSJim Jagielski 		{
649*b1cdbd2cSJim Jagielski 			sal_uInt16 nPos;
650*b1cdbd2cSJim Jagielski 			if(bSorted)
651*b1cdbd2cSJim Jagielski 				nPos = InsertStringSorted(pBase->GetName(), rToFill, bHasOffset );
652*b1cdbd2cSJim Jagielski 			else
653*b1cdbd2cSJim Jagielski 				nPos = rToFill.InsertEntry(pBase->GetName());
654*b1cdbd2cSJim Jagielski 			long nPoolId = SwStyleNameMapper::GetPoolIdFromUIName( pBase->GetName(), nsSwGetPoolIdFromName::GET_POOLID_CHRFMT );
655*b1cdbd2cSJim Jagielski 			rToFill.SetEntryData( nPos, (void*) (nPoolId));
656*b1cdbd2cSJim Jagielski 		}
657*b1cdbd2cSJim Jagielski 		pBase = pPool->Next();
658*b1cdbd2cSJim Jagielski 	}
659*b1cdbd2cSJim Jagielski 	// non-pool styles
660*b1cdbd2cSJim Jagielski 	const SwCharFmts* pFmts = pDoc->GetCharFmts();
661*b1cdbd2cSJim Jagielski 	for(sal_uInt16 i = 0; i < pFmts->Count(); i++)
662*b1cdbd2cSJim Jagielski 	{
663*b1cdbd2cSJim Jagielski 		const SwCharFmt* pFmt = (*pFmts)[i];
664*b1cdbd2cSJim Jagielski 		if(pFmt->IsDefault())
665*b1cdbd2cSJim Jagielski 			continue;
666*b1cdbd2cSJim Jagielski 		const String& rName = pFmt->GetName();
667*b1cdbd2cSJim Jagielski 		if(rToFill.GetEntryPos(rName) == LISTBOX_ENTRY_NOTFOUND)
668*b1cdbd2cSJim Jagielski 		{
669*b1cdbd2cSJim Jagielski 			sal_uInt16 nPos;
670*b1cdbd2cSJim Jagielski 			if(bSorted)
671*b1cdbd2cSJim Jagielski 				nPos = InsertStringSorted(rName, rToFill, bHasOffset );
672*b1cdbd2cSJim Jagielski 			else
673*b1cdbd2cSJim Jagielski 				nPos = rToFill.InsertEntry(rName);
674*b1cdbd2cSJim Jagielski 			long nPoolId = USHRT_MAX;
675*b1cdbd2cSJim Jagielski 			rToFill.SetEntryData( nPos, (void*) (nPoolId));
676*b1cdbd2cSJim Jagielski 		}
677*b1cdbd2cSJim Jagielski 	}
678*b1cdbd2cSJim Jagielski };
679*b1cdbd2cSJim Jagielski 
680*b1cdbd2cSJim Jagielski /* -----------------27.04.98 08:26-------------------
681*b1cdbd2cSJim Jagielski  *
682*b1cdbd2cSJim Jagielski  * --------------------------------------------------*/
GetTableWidth(SwFrmFmt * pFmt,SwTabCols & rCols,sal_uInt16 * pPercent,SwWrtShell * pSh)683*b1cdbd2cSJim Jagielski SwTwips GetTableWidth( SwFrmFmt* pFmt, SwTabCols& rCols, sal_uInt16 *pPercent,
684*b1cdbd2cSJim Jagielski 			SwWrtShell* pSh )
685*b1cdbd2cSJim Jagielski {
686*b1cdbd2cSJim Jagielski 	//Die Breite zu besorgen ist etwas komplizierter.
687*b1cdbd2cSJim Jagielski     SwTwips nWidth = 0;
688*b1cdbd2cSJim Jagielski     const sal_Int16 eOri = pFmt->GetHoriOrient().GetHoriOrient();
689*b1cdbd2cSJim Jagielski 	switch(eOri)
690*b1cdbd2cSJim Jagielski 	{
691*b1cdbd2cSJim Jagielski         case text::HoriOrientation::FULL: nWidth = rCols.GetRight(); break;
692*b1cdbd2cSJim Jagielski         case text::HoriOrientation::LEFT_AND_WIDTH:
693*b1cdbd2cSJim Jagielski         case text::HoriOrientation::LEFT:
694*b1cdbd2cSJim Jagielski         case text::HoriOrientation::RIGHT:
695*b1cdbd2cSJim Jagielski         case text::HoriOrientation::CENTER:
696*b1cdbd2cSJim Jagielski 			nWidth = pFmt->GetFrmSize().GetWidth();
697*b1cdbd2cSJim Jagielski 		break;
698*b1cdbd2cSJim Jagielski 		default:
699*b1cdbd2cSJim Jagielski 		{
700*b1cdbd2cSJim Jagielski 			if(pSh)
701*b1cdbd2cSJim Jagielski 			{
702*b1cdbd2cSJim Jagielski 				const SwFrmFmt *pFlyFmt;
703*b1cdbd2cSJim Jagielski 				if ( 0 == (pFlyFmt = pSh->GetFlyFrmFmt()) )
704*b1cdbd2cSJim Jagielski 				{
705*b1cdbd2cSJim Jagielski 					nWidth = pSh->GetAnyCurRect(RECT_PAGE_PRT).Width();
706*b1cdbd2cSJim Jagielski 				}
707*b1cdbd2cSJim Jagielski 				else
708*b1cdbd2cSJim Jagielski 				{
709*b1cdbd2cSJim Jagielski 					nWidth = pSh->GetAnyCurRect(RECT_FLY_PRT_EMBEDDED).Width();
710*b1cdbd2cSJim Jagielski 				}
711*b1cdbd2cSJim Jagielski 			}
712*b1cdbd2cSJim Jagielski 			else
713*b1cdbd2cSJim Jagielski 			{
714*b1cdbd2cSJim Jagielski 				DBG_ERROR("wo soll die Breite denn herkommen?");
715*b1cdbd2cSJim Jagielski 			}
716*b1cdbd2cSJim Jagielski 			const SvxLRSpaceItem& rLRSpace = pFmt->GetLRSpace();
717*b1cdbd2cSJim Jagielski 			nWidth -= (rLRSpace.GetRight() + rLRSpace.GetLeft());
718*b1cdbd2cSJim Jagielski 		}
719*b1cdbd2cSJim Jagielski 	}
720*b1cdbd2cSJim Jagielski 	if (pPercent)
721*b1cdbd2cSJim Jagielski 		*pPercent = pFmt->GetFrmSize().GetWidthPercent();
722*b1cdbd2cSJim Jagielski 	return nWidth;
723*b1cdbd2cSJim Jagielski }
724*b1cdbd2cSJim Jagielski 
725*b1cdbd2cSJim Jagielski /*------------------------------------------------------------------------*/
726*b1cdbd2cSJim Jagielski 
GetAppLangDateTimeString(const DateTime & rDT)727*b1cdbd2cSJim Jagielski String GetAppLangDateTimeString( const DateTime& rDT )
728*b1cdbd2cSJim Jagielski {
729*b1cdbd2cSJim Jagielski     const SvtSysLocale aSysLocale;
730*b1cdbd2cSJim Jagielski 	const LocaleDataWrapper& rAppLclData = aSysLocale.GetLocaleData();
731*b1cdbd2cSJim Jagielski 	String sRet( rAppLclData.getDate( rDT ));
732*b1cdbd2cSJim Jagielski 	( sRet += ' ' ) += rAppLclData.getTime( rDT, sal_False, sal_False );
733*b1cdbd2cSJim Jagielski 	return sRet;
734*b1cdbd2cSJim Jagielski }
735*b1cdbd2cSJim Jagielski 
736*b1cdbd2cSJim Jagielski /*-- 26.01.2006 08:06:33---------------------------------------------------
737*b1cdbd2cSJim Jagielski 
738*b1cdbd2cSJim Jagielski   -----------------------------------------------------------------------*/
ExecuteMenuCommand(PopupMenu & rMenu,SfxViewFrame & rViewFrame,sal_uInt16 nId)739*b1cdbd2cSJim Jagielski bool ExecuteMenuCommand( PopupMenu& rMenu, SfxViewFrame& rViewFrame, sal_uInt16 nId )
740*b1cdbd2cSJim Jagielski {
741*b1cdbd2cSJim Jagielski     bool bRet = false;
742*b1cdbd2cSJim Jagielski     sal_uInt16 nItemCount = rMenu.GetItemCount();
743*b1cdbd2cSJim Jagielski     String sCommand;
744*b1cdbd2cSJim Jagielski     for( sal_uInt16 nItem = 0; nItem < nItemCount; ++nItem)
745*b1cdbd2cSJim Jagielski     {
746*b1cdbd2cSJim Jagielski         PopupMenu* pPopup = rMenu.GetPopupMenu( rMenu.GetItemId( nItem ) );
747*b1cdbd2cSJim Jagielski         if(pPopup)
748*b1cdbd2cSJim Jagielski         {
749*b1cdbd2cSJim Jagielski             sCommand = pPopup->GetItemCommand(nId);
750*b1cdbd2cSJim Jagielski             if(sCommand.Len())
751*b1cdbd2cSJim Jagielski                 break;
752*b1cdbd2cSJim Jagielski         }
753*b1cdbd2cSJim Jagielski     }
754*b1cdbd2cSJim Jagielski     if(sCommand.Len())
755*b1cdbd2cSJim Jagielski     {
756*b1cdbd2cSJim Jagielski         uno::Reference< frame::XFrame >  xFrame = rViewFrame.GetFrame().GetFrameInterface();
757*b1cdbd2cSJim Jagielski         uno::Reference < frame::XDispatchProvider > xProv( xFrame, uno::UNO_QUERY );
758*b1cdbd2cSJim Jagielski         util::URL aURL;
759*b1cdbd2cSJim Jagielski         aURL.Complete = sCommand;
760*b1cdbd2cSJim Jagielski         uno::Reference < util::XURLTransformer > xTrans( ::comphelper::getProcessServiceFactory()->createInstance( rtl::OUString::createFromAscii("com.sun.star.util.URLTransformer" )), uno::UNO_QUERY );
761*b1cdbd2cSJim Jagielski         xTrans->parseStrict( aURL );
762*b1cdbd2cSJim Jagielski         uno::Reference< frame::XDispatch >  xDisp = xProv->queryDispatch( aURL, ::rtl::OUString(), 0 );
763*b1cdbd2cSJim Jagielski         if( xDisp.is() )
764*b1cdbd2cSJim Jagielski         {
765*b1cdbd2cSJim Jagielski             uno::Sequence< beans::PropertyValue > aSeq;
766*b1cdbd2cSJim Jagielski             xDisp->dispatch( aURL, aSeq );
767*b1cdbd2cSJim Jagielski             bRet = true;
768*b1cdbd2cSJim Jagielski         }
769*b1cdbd2cSJim Jagielski     }
770*b1cdbd2cSJim Jagielski     return bRet;
771*b1cdbd2cSJim Jagielski }
772