1*b3f79822SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*b3f79822SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*b3f79822SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*b3f79822SAndrew Rist  * distributed with this work for additional information
6*b3f79822SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*b3f79822SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*b3f79822SAndrew Rist  * "License"); you may not use this file except in compliance
9*b3f79822SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*b3f79822SAndrew Rist  *
11*b3f79822SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*b3f79822SAndrew Rist  *
13*b3f79822SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*b3f79822SAndrew Rist  * software distributed under the License is distributed on an
15*b3f79822SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b3f79822SAndrew Rist  * KIND, either express or implied.  See the License for the
17*b3f79822SAndrew Rist  * specific language governing permissions and limitations
18*b3f79822SAndrew Rist  * under the License.
19*b3f79822SAndrew Rist  *
20*b3f79822SAndrew Rist  *************************************************************/
21*b3f79822SAndrew Rist 
22*b3f79822SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sc.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #undef SC_DLLIMPLEMENTATION
28cdf0e10cSrcweir 
29cdf0e10cSrcweir 
30cdf0e10cSrcweir 
31cdf0e10cSrcweir //------------------------------------------------------------------
32cdf0e10cSrcweir 
33cdf0e10cSrcweir #define _TPHFEDIT_CXX
34cdf0e10cSrcweir #include "scitems.hxx"
35cdf0e10cSrcweir #include <editeng/eeitem.hxx>
36cdf0e10cSrcweir 
37cdf0e10cSrcweir //CHINA001 #include <svx/chardlg.hxx>
38cdf0e10cSrcweir #include <editeng/editobj.hxx>
39cdf0e10cSrcweir #include <editeng/editstat.hxx>
40cdf0e10cSrcweir #include <editeng/editview.hxx>
41cdf0e10cSrcweir #include <editeng/flditem.hxx>
42cdf0e10cSrcweir #include <sfx2/basedlgs.hxx>
43cdf0e10cSrcweir #include <sfx2/objsh.hxx>
44cdf0e10cSrcweir #include <vcl/msgbox.hxx>
45cdf0e10cSrcweir #include <vcl/svapp.hxx>
46cdf0e10cSrcweir #include <unotools/useroptions.hxx>
47cdf0e10cSrcweir #define _SVSTDARR_USHORTS
48cdf0e10cSrcweir #include <svl/svstdarr.hxx>
49cdf0e10cSrcweir 
50cdf0e10cSrcweir //CHINA001 #include "tphfedit.hxx"
51cdf0e10cSrcweir #include "editutil.hxx"
52cdf0e10cSrcweir #include "global.hxx"
53cdf0e10cSrcweir #include "attrib.hxx"
54cdf0e10cSrcweir #include "patattr.hxx"
55cdf0e10cSrcweir #include "scresid.hxx"
56cdf0e10cSrcweir #include "sc.hrc"
57cdf0e10cSrcweir #include "globstr.hrc"
58cdf0e10cSrcweir #include "tabvwsh.hxx"
59cdf0e10cSrcweir #include "prevwsh.hxx"
60cdf0e10cSrcweir #include "hfedtdlg.hrc"
61cdf0e10cSrcweir #include "textdlgs.hxx"
62cdf0e10cSrcweir #include "AccessibleEditObject.hxx"
63cdf0e10cSrcweir 
64cdf0e10cSrcweir #include "scuitphfedit.hxx" //CHINA001
65cdf0e10cSrcweir #include <memory> // header file for auto_ptr
66cdf0e10cSrcweir 
67cdf0e10cSrcweir // STATIC DATA -----------------------------------------------------------
68cdf0e10cSrcweir 
69cdf0e10cSrcweir static sal_uInt16 pPageRightHeaderRanges[] = { SID_SCATTR_PAGE_HEADERRIGHT,
70cdf0e10cSrcweir 										   SID_SCATTR_PAGE_HEADERRIGHT,
71cdf0e10cSrcweir 										   0 };
72cdf0e10cSrcweir 
73cdf0e10cSrcweir static sal_uInt16 pPageRightFooterRanges[] = { SID_SCATTR_PAGE_FOOTERRIGHT,
74cdf0e10cSrcweir 										   SID_SCATTR_PAGE_FOOTERRIGHT,
75cdf0e10cSrcweir 										   0 };
76cdf0e10cSrcweir 
77cdf0e10cSrcweir static sal_uInt16 pPageLeftHeaderRanges[] =  { SID_SCATTR_PAGE_HEADERLEFT,
78cdf0e10cSrcweir 										   SID_SCATTR_PAGE_HEADERLEFT,
79cdf0e10cSrcweir 										   0 };
80cdf0e10cSrcweir 
81cdf0e10cSrcweir static sal_uInt16 pPageLeftFooterRanges[] =  { SID_SCATTR_PAGE_FOOTERLEFT,
82cdf0e10cSrcweir 										   SID_SCATTR_PAGE_FOOTERLEFT,
83cdf0e10cSrcweir 										   0 };
84cdf0e10cSrcweir 
85cdf0e10cSrcweir 
86cdf0e10cSrcweir static ScEditWindow* pActiveEdWnd = NULL;
87cdf0e10cSrcweir 
88cdf0e10cSrcweir 
89cdf0e10cSrcweir //========================================================================
90cdf0e10cSrcweir // class ScHFEditPage
91cdf0e10cSrcweir //
92cdf0e10cSrcweir 
93cdf0e10cSrcweir ScHFEditPage::ScHFEditPage( Window* 			pParent,
94cdf0e10cSrcweir 							sal_uInt16				nResId,
95cdf0e10cSrcweir 							const SfxItemSet&	rCoreAttrs,
96cdf0e10cSrcweir 							sal_uInt16				nWhichId,
97cdf0e10cSrcweir 							bool bHeader  )
98cdf0e10cSrcweir 
99cdf0e10cSrcweir 	:	SfxTabPage		( pParent, ScResId( nResId ), rCoreAttrs ),
100cdf0e10cSrcweir 
101cdf0e10cSrcweir 		aFtLeft 		( this, ScResId( FT_LEFT ) ),
102cdf0e10cSrcweir 		aWndLeft		( this, ScResId( WND_LEFT ), Left ),
103cdf0e10cSrcweir 		aFtCenter		( this, ScResId( FT_CENTER ) ),
104cdf0e10cSrcweir 		aWndCenter		( this, ScResId( WND_CENTER ), Center ),
105cdf0e10cSrcweir 		aFtRight		( this, ScResId( FT_RIGHT ) ),
106cdf0e10cSrcweir 		aWndRight		( this, ScResId( WND_RIGHT ), Right ),
107cdf0e10cSrcweir 		maFtDefinedHF		( this, ScResId( FT_HF_DEFINED ) ),
108cdf0e10cSrcweir 		maLbDefined		( this, ScResId( LB_DEFINED ) ),
109cdf0e10cSrcweir 		maFtCustomHF		( this, ScResId( FT_HF_CUSTOM ) ),
110cdf0e10cSrcweir 		aBtnText		( this, ScResId( BTN_TEXT ) ),
111cdf0e10cSrcweir 		aBtnFile		( this, ScResId( BTN_FILE ) ),
112cdf0e10cSrcweir 		aBtnTable		( this, ScResId( BTN_TABLE ) ),
113cdf0e10cSrcweir 		aBtnPage		( this, ScResId( BTN_PAGE ) ),
114cdf0e10cSrcweir 		aBtnLastPage	( this, ScResId( BTN_PAGES ) ),
115cdf0e10cSrcweir 		aBtnDate		( this, ScResId( BTN_DATE ) ),
116cdf0e10cSrcweir 		aBtnTime		( this, ScResId( BTN_TIME ) ),
117cdf0e10cSrcweir 		aFlInfo 		( this, ScResId( FL_INFO ) ),
118cdf0e10cSrcweir 		aFtInfo 		( this, ScResId( FT_INFO ) ),
119cdf0e10cSrcweir 		aPopUpFile		( ScResId( RID_POPUP_FCOMMAND) ),
120cdf0e10cSrcweir 		nWhich			( nWhichId )
121cdf0e10cSrcweir {
122cdf0e10cSrcweir 	//!	use default style from current document?
123cdf0e10cSrcweir 	//!	if font color is used, header/footer background color must be set
124cdf0e10cSrcweir 
125cdf0e10cSrcweir 	ScPatternAttr	aPatAttr( rCoreAttrs.GetPool() );
126cdf0e10cSrcweir 
127cdf0e10cSrcweir 
128cdf0e10cSrcweir 	aBtnFile.SetPopupMenu(&aPopUpFile);
129cdf0e10cSrcweir 
130cdf0e10cSrcweir 	maLbDefined.SetSelectHdl( LINK( this, ScHFEditPage, ListHdl_Impl ) );
131cdf0e10cSrcweir 	aBtnFile.SetMenuHdl( LINK( this, ScHFEditPage, MenuHdl ) );
132cdf0e10cSrcweir 	aBtnText	.SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
133cdf0e10cSrcweir 	aBtnPage	.SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
134cdf0e10cSrcweir 	aBtnLastPage.SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
135cdf0e10cSrcweir 	aBtnDate	.SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
136cdf0e10cSrcweir 	aBtnTime	.SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
137cdf0e10cSrcweir 	aBtnFile	.SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
138cdf0e10cSrcweir 	aBtnTable	.SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
139cdf0e10cSrcweir 
140cdf0e10cSrcweir     aBtnText    .SetModeImage( Image( ScResId( IMG_TEXT_H  ) ), BMP_COLOR_HIGHCONTRAST );
141cdf0e10cSrcweir     aBtnFile    .SetModeImage( Image( ScResId( IMG_FILE_H  ) ), BMP_COLOR_HIGHCONTRAST );
142cdf0e10cSrcweir     aBtnTable   .SetModeImage( Image( ScResId( IMG_TABLE_H ) ), BMP_COLOR_HIGHCONTRAST );
143cdf0e10cSrcweir     aBtnPage    .SetModeImage( Image( ScResId( IMG_PAGE_H  ) ), BMP_COLOR_HIGHCONTRAST );
144cdf0e10cSrcweir     aBtnLastPage.SetModeImage( Image( ScResId( IMG_PAGES_H ) ), BMP_COLOR_HIGHCONTRAST );
145cdf0e10cSrcweir     aBtnDate    .SetModeImage( Image( ScResId( IMG_DATE_H  ) ), BMP_COLOR_HIGHCONTRAST );
146cdf0e10cSrcweir     aBtnTime    .SetModeImage( Image( ScResId( IMG_TIME_H  ) ), BMP_COLOR_HIGHCONTRAST );
147cdf0e10cSrcweir 
148cdf0e10cSrcweir     if(!bHeader)
149cdf0e10cSrcweir     {
150cdf0e10cSrcweir         maFtDefinedHF.SetText(ScGlobal::GetRscString( STR_FOOTER ));
151cdf0e10cSrcweir         maFtCustomHF.SetText(ScGlobal::GetRscString( STR_HF_CUSTOM_FOOTER ));
152cdf0e10cSrcweir     }
153cdf0e10cSrcweir 	if( Application::GetSettings().GetLayoutRTL() )
154cdf0e10cSrcweir 	{
155cdf0e10cSrcweir 		Point pt1 = aWndLeft.GetPosPixel();
156cdf0e10cSrcweir 		Point pt2 = aWndRight.GetPosPixel();
157cdf0e10cSrcweir 		aWndLeft.SetPosPixel(pt2);
158cdf0e10cSrcweir 		aWndRight.SetPosPixel(pt1);
159cdf0e10cSrcweir 
160cdf0e10cSrcweir 		pt1 = aFtLeft.GetPosPixel();
161cdf0e10cSrcweir 		pt2 = aFtRight.GetPosPixel();
162cdf0e10cSrcweir 		aFtLeft.SetPosPixel(pt2);
163cdf0e10cSrcweir 		aFtRight.SetPosPixel(pt1);
164cdf0e10cSrcweir 	}
165cdf0e10cSrcweir 	aWndLeft.	SetFont( aPatAttr );
166cdf0e10cSrcweir 	aWndCenter. SetFont( aPatAttr );
167cdf0e10cSrcweir 	aWndRight.	SetFont( aPatAttr );
168cdf0e10cSrcweir 
169cdf0e10cSrcweir 	FillCmdArr();
170cdf0e10cSrcweir 
171cdf0e10cSrcweir 	aWndLeft.GrabFocus();
172cdf0e10cSrcweir 
173cdf0e10cSrcweir 	InitPreDefinedList();
174cdf0e10cSrcweir 
175cdf0e10cSrcweir 	FreeResource();
176cdf0e10cSrcweir }
177cdf0e10cSrcweir 
178cdf0e10cSrcweir // -----------------------------------------------------------------------
179cdf0e10cSrcweir 
180cdf0e10cSrcweir __EXPORT ScHFEditPage::~ScHFEditPage()
181cdf0e10cSrcweir {
182cdf0e10cSrcweir }
183cdf0e10cSrcweir 
184cdf0e10cSrcweir void ScHFEditPage::SetNumType(SvxNumType eNumType)
185cdf0e10cSrcweir {
186cdf0e10cSrcweir 	aWndLeft.SetNumType(eNumType);
187cdf0e10cSrcweir 	aWndCenter.SetNumType(eNumType);
188cdf0e10cSrcweir 	aWndRight.SetNumType(eNumType);
189cdf0e10cSrcweir }
190cdf0e10cSrcweir 
191cdf0e10cSrcweir // -----------------------------------------------------------------------
192cdf0e10cSrcweir 
193cdf0e10cSrcweir #define IS_AVAILABLE(w)(rCoreSet.GetItemState( (w) ) >= SFX_ITEM_AVAILABLE)
194cdf0e10cSrcweir 
195cdf0e10cSrcweir void __EXPORT ScHFEditPage::Reset( const SfxItemSet& rCoreSet )
196cdf0e10cSrcweir {
197cdf0e10cSrcweir 	if ( IS_AVAILABLE( nWhich ) )
198cdf0e10cSrcweir 	{
199cdf0e10cSrcweir 		const ScPageHFItem& rItem = (const ScPageHFItem&)(rCoreSet.Get( nWhich ));
200cdf0e10cSrcweir 
201cdf0e10cSrcweir         if( const EditTextObject* pLeft = rItem.GetLeftArea() )
202cdf0e10cSrcweir             aWndLeft.SetText( *pLeft );
203cdf0e10cSrcweir         if( const EditTextObject* pCenter = rItem.GetCenterArea() )
204cdf0e10cSrcweir             aWndCenter.SetText( *pCenter );
205cdf0e10cSrcweir         if( const EditTextObject* pRight = rItem.GetRightArea() )
206cdf0e10cSrcweir             aWndRight.SetText( *pRight );
207cdf0e10cSrcweir 
208cdf0e10cSrcweir 		SetSelectDefinedList();
209cdf0e10cSrcweir 	}
210cdf0e10cSrcweir }
211cdf0e10cSrcweir 
212cdf0e10cSrcweir #undef IS_AVAILABLE
213cdf0e10cSrcweir 
214cdf0e10cSrcweir // -----------------------------------------------------------------------
215cdf0e10cSrcweir 
216cdf0e10cSrcweir sal_Bool __EXPORT ScHFEditPage::FillItemSet( SfxItemSet& rCoreSet )
217cdf0e10cSrcweir {
218cdf0e10cSrcweir 	ScPageHFItem	aItem( nWhich );
219cdf0e10cSrcweir 	EditTextObject* pLeft	= aWndLeft	.CreateTextObject();
220cdf0e10cSrcweir 	EditTextObject* pCenter = aWndCenter.CreateTextObject();
221cdf0e10cSrcweir 	EditTextObject* pRight	= aWndRight .CreateTextObject();
222cdf0e10cSrcweir 
223cdf0e10cSrcweir 	aItem.SetLeftArea  ( *pLeft );
224cdf0e10cSrcweir 	aItem.SetCenterArea( *pCenter );
225cdf0e10cSrcweir 	aItem.SetRightArea ( *pRight );
226cdf0e10cSrcweir 	delete pLeft;
227cdf0e10cSrcweir 	delete pCenter;
228cdf0e10cSrcweir 	delete pRight;
229cdf0e10cSrcweir 
230cdf0e10cSrcweir 	rCoreSet.Put( aItem );
231cdf0e10cSrcweir 
232cdf0e10cSrcweir 	return sal_True;
233cdf0e10cSrcweir }
234cdf0e10cSrcweir 
235cdf0e10cSrcweir // -----------------------------------------------------------------------
236cdf0e10cSrcweir 
237cdf0e10cSrcweir #define SET_CMD(i,id) \
238cdf0e10cSrcweir 	aCmd  = aDel;							\
239cdf0e10cSrcweir 	aCmd += ScGlobal::GetRscString( id );	\
240cdf0e10cSrcweir 	aCmd += aDel;							\
241cdf0e10cSrcweir 	aCmdArr[i] = aCmd;
242cdf0e10cSrcweir 
243cdf0e10cSrcweir // -----------------------------------------------------------------------
244cdf0e10cSrcweir 
245cdf0e10cSrcweir void ScHFEditPage::FillCmdArr()
246cdf0e10cSrcweir {
247cdf0e10cSrcweir 	String aDel( ScGlobal::GetRscString( STR_HFCMD_DELIMITER ) );
248cdf0e10cSrcweir 	String aCmd;
249cdf0e10cSrcweir 
250cdf0e10cSrcweir 	SET_CMD( 0, STR_HFCMD_PAGE )
251cdf0e10cSrcweir 	SET_CMD( 1, STR_HFCMD_PAGES )
252cdf0e10cSrcweir 	SET_CMD( 2, STR_HFCMD_DATE )
253cdf0e10cSrcweir 	SET_CMD( 3, STR_HFCMD_TIME )
254cdf0e10cSrcweir 	SET_CMD( 4, STR_HFCMD_FILE )
255cdf0e10cSrcweir 	SET_CMD( 5, STR_HFCMD_TABLE )
256cdf0e10cSrcweir }
257cdf0e10cSrcweir 
258cdf0e10cSrcweir #undef SET_CMD
259cdf0e10cSrcweir 
260cdf0e10cSrcweir void ScHFEditPage::InitPreDefinedList()
261cdf0e10cSrcweir {
262cdf0e10cSrcweir     SvtUserOptions aUserOpt;
263cdf0e10cSrcweir 
264cdf0e10cSrcweir     Color* pTxtColour = NULL;
265cdf0e10cSrcweir     Color* pFldColour = NULL;
266cdf0e10cSrcweir 
267cdf0e10cSrcweir     // Get the all field values at the outset.
268cdf0e10cSrcweir     String aPageFieldValue(aWndLeft.GetEditEngine()->CalcFieldValue(SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD), 0,0, pTxtColour, pFldColour));
269cdf0e10cSrcweir     String aSheetFieldValue(aWndLeft.GetEditEngine()->CalcFieldValue(SvxFieldItem(SvxTableField(), EE_FEATURE_FIELD), 0,0, pTxtColour, pFldColour));
270cdf0e10cSrcweir     String aFileFieldValue(aWndLeft.GetEditEngine()->CalcFieldValue(SvxFieldItem(SvxFileField(), EE_FEATURE_FIELD), 0,0, pTxtColour, pFldColour));
271cdf0e10cSrcweir     String aExtFileFieldValue(aWndLeft.GetEditEngine()->CalcFieldValue(SvxFieldItem(SvxExtFileField(), EE_FEATURE_FIELD), 0,0, pTxtColour, pFldColour));
272cdf0e10cSrcweir     String aDateFieldValue(aWndLeft.GetEditEngine()->CalcFieldValue(SvxFieldItem(SvxDateField(), EE_FEATURE_FIELD), 0,0, pTxtColour, pFldColour));
273cdf0e10cSrcweir 
274cdf0e10cSrcweir     maLbDefined.Clear();
275cdf0e10cSrcweir 
276cdf0e10cSrcweir     maLbDefined.InsertEntry( ScGlobal::GetRscString( STR_HF_NONE_IN_BRACKETS ));
277cdf0e10cSrcweir 
278cdf0e10cSrcweir     String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) );
279cdf0e10cSrcweir     aPageEntry += ' ';
280cdf0e10cSrcweir     aPageEntry += aPageFieldValue;
281cdf0e10cSrcweir     maLbDefined.InsertEntry(aPageEntry);
282cdf0e10cSrcweir 
283cdf0e10cSrcweir     String aPageOfEntry(aPageEntry);
284cdf0e10cSrcweir     aPageOfEntry += ' ';
285cdf0e10cSrcweir     aPageOfEntry += ScGlobal::GetRscString( STR_HF_OF_QUESTION );
286cdf0e10cSrcweir     maLbDefined.InsertEntry( aPageOfEntry);
287cdf0e10cSrcweir 
288cdf0e10cSrcweir     maLbDefined.InsertEntry(aSheetFieldValue);
289cdf0e10cSrcweir 
290cdf0e10cSrcweir     String aConfidentialEntry(aUserOpt.GetCompany());
291cdf0e10cSrcweir     aConfidentialEntry += ' ';
292cdf0e10cSrcweir     aConfidentialEntry += ScGlobal::GetRscString( STR_HF_CONFIDENTIAL );
293cdf0e10cSrcweir     aConfidentialEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", "));
294cdf0e10cSrcweir     aConfidentialEntry += aDateFieldValue;
295cdf0e10cSrcweir     aConfidentialEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", "));
296cdf0e10cSrcweir     aConfidentialEntry += aPageEntry;
297cdf0e10cSrcweir     maLbDefined.InsertEntry( aConfidentialEntry);
298cdf0e10cSrcweir 
299cdf0e10cSrcweir     String aFileNamePageEntry(aFileFieldValue);
300cdf0e10cSrcweir     aFileNamePageEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", "));
301cdf0e10cSrcweir     aFileNamePageEntry += aPageEntry;
302cdf0e10cSrcweir     maLbDefined.InsertEntry( aFileNamePageEntry);
303cdf0e10cSrcweir 
304cdf0e10cSrcweir     maLbDefined.InsertEntry( aExtFileFieldValue);
305cdf0e10cSrcweir 
306cdf0e10cSrcweir     String aPageSheetNameEntry(aPageEntry);
307cdf0e10cSrcweir     aPageSheetNameEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", "));
308cdf0e10cSrcweir     aPageSheetNameEntry += aSheetFieldValue;
309cdf0e10cSrcweir     maLbDefined.InsertEntry( aPageSheetNameEntry);
310cdf0e10cSrcweir 
311cdf0e10cSrcweir     String aPageFileNameEntry(aPageEntry);
312cdf0e10cSrcweir     aPageFileNameEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", "));
313cdf0e10cSrcweir     aPageFileNameEntry += aFileFieldValue;
314cdf0e10cSrcweir     maLbDefined.InsertEntry( aPageFileNameEntry);
315cdf0e10cSrcweir 
316cdf0e10cSrcweir     String aPagePathNameEntry(aPageEntry);
317cdf0e10cSrcweir     aPagePathNameEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", "));
318cdf0e10cSrcweir     aPagePathNameEntry += aExtFileFieldValue;
319cdf0e10cSrcweir     maLbDefined.InsertEntry( aPagePathNameEntry);
320cdf0e10cSrcweir 
321cdf0e10cSrcweir     String aUserNameEntry(aUserOpt.GetFirstName());
322cdf0e10cSrcweir     aUserNameEntry += ' ';
323cdf0e10cSrcweir     aUserNameEntry += (String)aUserOpt.GetLastName();
324cdf0e10cSrcweir     aUserNameEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", "));
325cdf0e10cSrcweir     aUserNameEntry += aPageEntry;
326cdf0e10cSrcweir     aUserNameEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", "));
327cdf0e10cSrcweir     aUserNameEntry += aDateFieldValue;
328cdf0e10cSrcweir     maLbDefined.InsertEntry( aUserNameEntry);
329cdf0e10cSrcweir 
330cdf0e10cSrcweir     String aCreatedByEntry(ScGlobal::GetRscString( STR_HF_CREATED_BY ) );
331cdf0e10cSrcweir     aCreatedByEntry += ' ';
332cdf0e10cSrcweir     aCreatedByEntry += (String)aUserOpt.GetFirstName();
333cdf0e10cSrcweir     aCreatedByEntry += ' ';
334cdf0e10cSrcweir     aCreatedByEntry += (String)aUserOpt.GetLastName();
335cdf0e10cSrcweir     aCreatedByEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", "));
336cdf0e10cSrcweir     aCreatedByEntry += aDateFieldValue;
337cdf0e10cSrcweir     aCreatedByEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", "));
338cdf0e10cSrcweir     aCreatedByEntry += aPageEntry;
339cdf0e10cSrcweir     maLbDefined.InsertEntry( aCreatedByEntry);
340cdf0e10cSrcweir }
341cdf0e10cSrcweir 
342cdf0e10cSrcweir void ScHFEditPage::InsertToDefinedList()
343cdf0e10cSrcweir {
344cdf0e10cSrcweir     sal_uInt16 nCount =  maLbDefined.GetEntryCount();
345cdf0e10cSrcweir     if(nCount == eEntryCount)
346cdf0e10cSrcweir     {
347cdf0e10cSrcweir         String aCustomizedEntry(ScGlobal::GetRscString( STR_HF_CUSTOMIZED ) );
348cdf0e10cSrcweir         maLbDefined.InsertEntry( aCustomizedEntry);
349cdf0e10cSrcweir         maLbDefined.SelectEntryPos(eEntryCount);
350cdf0e10cSrcweir     }
351cdf0e10cSrcweir }
352cdf0e10cSrcweir 
353cdf0e10cSrcweir void ScHFEditPage::RemoveFromDefinedList()
354cdf0e10cSrcweir {
355cdf0e10cSrcweir     sal_uInt16 nCount =  maLbDefined.GetEntryCount();
356cdf0e10cSrcweir     if(nCount > eEntryCount )
357cdf0e10cSrcweir         maLbDefined.RemoveEntry( nCount-1);
358cdf0e10cSrcweir }
359cdf0e10cSrcweir 
360cdf0e10cSrcweir // determine if the header/footer exists in our predefined list and set select to it.
361cdf0e10cSrcweir void ScHFEditPage::SetSelectDefinedList()
362cdf0e10cSrcweir {
363cdf0e10cSrcweir     SvtUserOptions aUserOpt;
364cdf0e10cSrcweir 
365cdf0e10cSrcweir     // default to customized
366cdf0e10cSrcweir     ScHFEntryId eSelectEntry = eEntryCount;
367cdf0e10cSrcweir 
368cdf0e10cSrcweir     ::std::auto_ptr< EditTextObject > pLeftObj;
369cdf0e10cSrcweir     ::std::auto_ptr< EditTextObject > pCenterObj;
370cdf0e10cSrcweir     ::std::auto_ptr< EditTextObject > pRightObj;
371cdf0e10cSrcweir 
372cdf0e10cSrcweir     XubString aLeftEntry;
373cdf0e10cSrcweir     XubString aCenterEntry;
374cdf0e10cSrcweir     XubString aRightEntry;
375cdf0e10cSrcweir 
376cdf0e10cSrcweir     pLeftObj.reset(aWndLeft.GetEditEngine()->CreateTextObject());
377cdf0e10cSrcweir     pCenterObj.reset(aWndCenter.GetEditEngine()->CreateTextObject());
378cdf0e10cSrcweir     pRightObj.reset(aWndRight.GetEditEngine()->CreateTextObject());
379cdf0e10cSrcweir 
380cdf0e10cSrcweir     bool bFound = false;
381cdf0e10cSrcweir 
382cdf0e10cSrcweir     sal_uInt16 i;
383cdf0e10cSrcweir     sal_uInt16 nCount =  maLbDefined.GetEntryCount();
384cdf0e10cSrcweir     for(i = 0; i < nCount && !bFound; i++)
385cdf0e10cSrcweir     {
386cdf0e10cSrcweir         switch(static_cast<ScHFEntryId>(i))
387cdf0e10cSrcweir         {
388cdf0e10cSrcweir             case eNoneEntry:
389cdf0e10cSrcweir             {
390cdf0e10cSrcweir                 aLeftEntry = pLeftObj->GetText(0);
391cdf0e10cSrcweir                 aCenterEntry = pCenterObj->GetText(0);
392cdf0e10cSrcweir                 aRightEntry = pRightObj->GetText(0);
393cdf0e10cSrcweir                 if(aLeftEntry == EMPTY_STRING && aCenterEntry == EMPTY_STRING
394cdf0e10cSrcweir                     && aRightEntry == EMPTY_STRING)
395cdf0e10cSrcweir                 {
396cdf0e10cSrcweir                     eSelectEntry = eNoneEntry;
397cdf0e10cSrcweir                     bFound = true;
398cdf0e10cSrcweir                 }
399cdf0e10cSrcweir             }
400cdf0e10cSrcweir             break;
401cdf0e10cSrcweir 
402cdf0e10cSrcweir             case ePageEntry:
403cdf0e10cSrcweir             {
404cdf0e10cSrcweir                 aLeftEntry = pLeftObj->GetText(0);
405cdf0e10cSrcweir                 aRightEntry = pRightObj->GetText(0);
406cdf0e10cSrcweir                 if(aLeftEntry == EMPTY_STRING && aRightEntry == EMPTY_STRING)
407cdf0e10cSrcweir                 {
408cdf0e10cSrcweir                     if(IsPageEntry(aWndCenter.GetEditEngine(), pCenterObj.get()))
409cdf0e10cSrcweir                     {
410cdf0e10cSrcweir                         eSelectEntry = ePageEntry;
411cdf0e10cSrcweir                         bFound = true;
412cdf0e10cSrcweir                     }
413cdf0e10cSrcweir                 }
414cdf0e10cSrcweir             }
415cdf0e10cSrcweir             break;
416cdf0e10cSrcweir 
417cdf0e10cSrcweir 
418cdf0e10cSrcweir             //TODO
419cdf0e10cSrcweir             case ePagesEntry:
420cdf0e10cSrcweir             {
421cdf0e10cSrcweir             }
422cdf0e10cSrcweir             break;
423cdf0e10cSrcweir 
424cdf0e10cSrcweir             case eSheetEntry:
425cdf0e10cSrcweir             {
426cdf0e10cSrcweir                 aLeftEntry = pLeftObj->GetText(0);
427cdf0e10cSrcweir                 aRightEntry = pRightObj->GetText(0);
428cdf0e10cSrcweir                 if(aLeftEntry == EMPTY_STRING && aRightEntry == EMPTY_STRING)
429cdf0e10cSrcweir                 {
430cdf0e10cSrcweir                     if(pCenterObj->IsFieldObject())
431cdf0e10cSrcweir                     {
432cdf0e10cSrcweir                         const SvxFieldItem* pFieldItem = pCenterObj->GetField();
433cdf0e10cSrcweir                         if(pFieldItem)
434cdf0e10cSrcweir                         {
435cdf0e10cSrcweir                             const SvxFieldData* pField = pFieldItem->GetField();
436cdf0e10cSrcweir                             if(pField && pField->ISA(SvxTableField))
437cdf0e10cSrcweir                             {
438cdf0e10cSrcweir                                 eSelectEntry = eSheetEntry;
439cdf0e10cSrcweir                                 bFound = true;
440cdf0e10cSrcweir                             }
441cdf0e10cSrcweir                         }
442cdf0e10cSrcweir                     }
443cdf0e10cSrcweir                 }
444cdf0e10cSrcweir             }
445cdf0e10cSrcweir             break;
446cdf0e10cSrcweir 
447cdf0e10cSrcweir             case eConfidentialEntry:
448cdf0e10cSrcweir             {
449cdf0e10cSrcweir                 if(IsDateEntry(pCenterObj.get()) && IsPageEntry(aWndRight.GetEditEngine(), pRightObj.get()))
450cdf0e10cSrcweir                 {
451cdf0e10cSrcweir                     String aConfidentialEntry(aUserOpt.GetCompany());
452cdf0e10cSrcweir                     aConfidentialEntry += ' ';
453cdf0e10cSrcweir                     aConfidentialEntry += ScGlobal::GetRscString( STR_HF_CONFIDENTIAL );
454cdf0e10cSrcweir                     if(aConfidentialEntry == aWndLeft.GetEditEngine()->GetText(0))
455cdf0e10cSrcweir                     {
456cdf0e10cSrcweir                         eSelectEntry = eConfidentialEntry;
457cdf0e10cSrcweir                         bFound = true;
458cdf0e10cSrcweir                     }
459cdf0e10cSrcweir                 }
460cdf0e10cSrcweir             }
461cdf0e10cSrcweir             break;
462cdf0e10cSrcweir 
463cdf0e10cSrcweir             //TODO
464cdf0e10cSrcweir             case eFileNamePageEntry:
465cdf0e10cSrcweir             {
466cdf0e10cSrcweir             }
467cdf0e10cSrcweir             break;
468cdf0e10cSrcweir 
469cdf0e10cSrcweir             case eExtFileNameEntry:
470cdf0e10cSrcweir             {
471cdf0e10cSrcweir                 aLeftEntry = pLeftObj->GetText(0);
472cdf0e10cSrcweir                 aRightEntry = pRightObj->GetText(0);
473cdf0e10cSrcweir                 if(IsExtFileNameEntry(pCenterObj.get()) && aLeftEntry == EMPTY_STRING
474cdf0e10cSrcweir                     && aRightEntry == EMPTY_STRING)
475cdf0e10cSrcweir                 {
476cdf0e10cSrcweir                     eSelectEntry = eExtFileNameEntry;
477cdf0e10cSrcweir                     bFound = true;
478cdf0e10cSrcweir                 }
479cdf0e10cSrcweir             }
480cdf0e10cSrcweir             break;
481cdf0e10cSrcweir 
482cdf0e10cSrcweir             //TODO
483cdf0e10cSrcweir             case ePageSheetEntry:
484cdf0e10cSrcweir             {
485cdf0e10cSrcweir             }
486cdf0e10cSrcweir             break;
487cdf0e10cSrcweir 
488cdf0e10cSrcweir             //TODO
489cdf0e10cSrcweir             case ePageFileNameEntry:
490cdf0e10cSrcweir             {
491cdf0e10cSrcweir             }
492cdf0e10cSrcweir             break;
493cdf0e10cSrcweir 
494cdf0e10cSrcweir             case ePageExtFileNameEntry:
495cdf0e10cSrcweir             {
496cdf0e10cSrcweir                 aLeftEntry = pLeftObj->GetText(0);
497cdf0e10cSrcweir                 if(IsPageEntry(aWndCenter.GetEditEngine(), pCenterObj.get()) &&
498cdf0e10cSrcweir                     IsExtFileNameEntry(pRightObj.get()) && aLeftEntry == EMPTY_STRING)
499cdf0e10cSrcweir                 {
500cdf0e10cSrcweir                     eSelectEntry = ePageExtFileNameEntry;
501cdf0e10cSrcweir                     bFound = true;
502cdf0e10cSrcweir                 }
503cdf0e10cSrcweir             }
504cdf0e10cSrcweir             break;
505cdf0e10cSrcweir 
506cdf0e10cSrcweir             case eUserNameEntry:
507cdf0e10cSrcweir             {
508cdf0e10cSrcweir                 if(IsDateEntry(pRightObj.get()) && IsPageEntry(aWndCenter.GetEditEngine(), pCenterObj.get()))
509cdf0e10cSrcweir                 {
510cdf0e10cSrcweir                     String aUserNameEntry(aUserOpt.GetFirstName());
511cdf0e10cSrcweir                     aUserNameEntry += ' ';
512cdf0e10cSrcweir                     aUserNameEntry += (String)aUserOpt.GetLastName();
513cdf0e10cSrcweir                     if(aUserNameEntry == aWndLeft.GetEditEngine()->GetText(0))
514cdf0e10cSrcweir                     {
515cdf0e10cSrcweir                         eSelectEntry = eUserNameEntry;
516cdf0e10cSrcweir                         bFound = true;
517cdf0e10cSrcweir                     }
518cdf0e10cSrcweir                 }
519cdf0e10cSrcweir             }
520cdf0e10cSrcweir             break;
521cdf0e10cSrcweir 
522cdf0e10cSrcweir             case eCreatedByEntry:
523cdf0e10cSrcweir             {
524cdf0e10cSrcweir                 if(IsDateEntry(pCenterObj.get()) && IsPageEntry(aWndRight.GetEditEngine(), pRightObj.get()))
525cdf0e10cSrcweir                 {
526cdf0e10cSrcweir                     String aCreatedByEntry(ScGlobal::GetRscString( STR_HF_CREATED_BY ) );
527cdf0e10cSrcweir                     aCreatedByEntry += ' ';
528cdf0e10cSrcweir                     aCreatedByEntry += (String)aUserOpt.GetFirstName();
529cdf0e10cSrcweir                     aCreatedByEntry += ' ';
530cdf0e10cSrcweir                     aCreatedByEntry += (String)aUserOpt.GetLastName();
531cdf0e10cSrcweir                     if(aCreatedByEntry == aWndLeft.GetEditEngine()->GetText(0))
532cdf0e10cSrcweir                     {
533cdf0e10cSrcweir                         eSelectEntry = eCreatedByEntry;
534cdf0e10cSrcweir                         bFound = true;
535cdf0e10cSrcweir                     }
536cdf0e10cSrcweir                 }
537cdf0e10cSrcweir             }
538cdf0e10cSrcweir             break;
539cdf0e10cSrcweir 
540cdf0e10cSrcweir             default:
541cdf0e10cSrcweir             {
542cdf0e10cSrcweir                 // added to avoid warnings
543cdf0e10cSrcweir             }
544cdf0e10cSrcweir         }
545cdf0e10cSrcweir     }
546cdf0e10cSrcweir 
547cdf0e10cSrcweir     if(eSelectEntry == eEntryCount)
548cdf0e10cSrcweir         InsertToDefinedList();
549cdf0e10cSrcweir 
550cdf0e10cSrcweir     maLbDefined.SelectEntryPos( sal::static_int_cast<sal_uInt16>( eSelectEntry ) );
551cdf0e10cSrcweir }
552cdf0e10cSrcweir 
553cdf0e10cSrcweir bool ScHFEditPage::IsPageEntry(EditEngine*pEngine, EditTextObject* pTextObj)
554cdf0e10cSrcweir {
555cdf0e10cSrcweir     if(!pEngine && !pTextObj)
556cdf0e10cSrcweir         return false;
557cdf0e10cSrcweir 
558cdf0e10cSrcweir     bool bReturn = false;
559cdf0e10cSrcweir 
560cdf0e10cSrcweir     if(!pTextObj->IsFieldObject())
561cdf0e10cSrcweir     {
562cdf0e10cSrcweir         SvUShorts aPosList;
563cdf0e10cSrcweir         pEngine->GetPortions(0,aPosList);
564cdf0e10cSrcweir         if(aPosList.Count() == 2)
565cdf0e10cSrcweir         {
566cdf0e10cSrcweir             String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) );
567cdf0e10cSrcweir             aPageEntry += ' ';
568cdf0e10cSrcweir             ESelection aSel(0,0,0,0);
569cdf0e10cSrcweir             aSel.nEndPos = aPageEntry.Len();
570cdf0e10cSrcweir             if(aPageEntry == pEngine->GetText(aSel))
571cdf0e10cSrcweir             {
572cdf0e10cSrcweir                 aSel.nStartPos = aSel.nEndPos;
573cdf0e10cSrcweir                 aSel.nEndPos++;
574cdf0e10cSrcweir                 ::std::auto_ptr< EditTextObject > pPageObj;
575cdf0e10cSrcweir                 pPageObj.reset(pEngine->CreateTextObject(aSel));
576cdf0e10cSrcweir                 if(pPageObj.get() && pPageObj->IsFieldObject() )
577cdf0e10cSrcweir                 {
578cdf0e10cSrcweir                     const SvxFieldItem* pFieldItem = pPageObj->GetField();
579cdf0e10cSrcweir                     if(pFieldItem)
580cdf0e10cSrcweir                     {
581cdf0e10cSrcweir                         const SvxFieldData* pField = pFieldItem->GetField();
582cdf0e10cSrcweir                         if(pField && pField->ISA(SvxPageField))
583cdf0e10cSrcweir                             bReturn = true;
584cdf0e10cSrcweir                     }
585cdf0e10cSrcweir                 }
586cdf0e10cSrcweir             }
587cdf0e10cSrcweir         }
588cdf0e10cSrcweir     }
589cdf0e10cSrcweir     return bReturn;
590cdf0e10cSrcweir }
591cdf0e10cSrcweir 
592cdf0e10cSrcweir bool ScHFEditPage::IsDateEntry(EditTextObject* pTextObj)
593cdf0e10cSrcweir {
594cdf0e10cSrcweir     if(!pTextObj)
595cdf0e10cSrcweir         return false;
596cdf0e10cSrcweir 
597cdf0e10cSrcweir     bool bReturn = false;
598cdf0e10cSrcweir     if(pTextObj->IsFieldObject())
599cdf0e10cSrcweir     {
600cdf0e10cSrcweir         const SvxFieldItem* pFieldItem = pTextObj->GetField();
601cdf0e10cSrcweir         if(pFieldItem)
602cdf0e10cSrcweir         {
603cdf0e10cSrcweir             const SvxFieldData* pField = pFieldItem->GetField();
604cdf0e10cSrcweir             if(pField && pField->ISA(SvxDateField))
605cdf0e10cSrcweir                 bReturn = true;
606cdf0e10cSrcweir         }
607cdf0e10cSrcweir     }
608cdf0e10cSrcweir     return bReturn;
609cdf0e10cSrcweir }
610cdf0e10cSrcweir 
611cdf0e10cSrcweir bool ScHFEditPage::IsExtFileNameEntry(EditTextObject* pTextObj)
612cdf0e10cSrcweir {
613cdf0e10cSrcweir     if(!pTextObj)
614cdf0e10cSrcweir         return false;
615cdf0e10cSrcweir     bool bReturn = false;
616cdf0e10cSrcweir     if(pTextObj->IsFieldObject())
617cdf0e10cSrcweir     {
618cdf0e10cSrcweir         const SvxFieldItem* pFieldItem = pTextObj->GetField();
619cdf0e10cSrcweir         if(pFieldItem)
620cdf0e10cSrcweir 	{
621cdf0e10cSrcweir             const SvxFieldData* pField = pFieldItem->GetField();
622cdf0e10cSrcweir             if(pField && pField->ISA(SvxExtFileField))
623cdf0e10cSrcweir                 bReturn = true;
624cdf0e10cSrcweir         }
625cdf0e10cSrcweir     }
626cdf0e10cSrcweir     return bReturn;
627cdf0e10cSrcweir }
628cdf0e10cSrcweir 
629cdf0e10cSrcweir void ScHFEditPage::ProcessDefinedListSel(ScHFEntryId eSel, bool bTravelling)
630cdf0e10cSrcweir {
631cdf0e10cSrcweir     SvtUserOptions aUserOpt;
632cdf0e10cSrcweir     ::std::auto_ptr< EditTextObject > pTextObj;
633cdf0e10cSrcweir 
634cdf0e10cSrcweir     switch(eSel)
635cdf0e10cSrcweir     {
636cdf0e10cSrcweir         case eNoneEntry:
637cdf0e10cSrcweir             ClearTextAreas();
638cdf0e10cSrcweir             if(!bTravelling)
639cdf0e10cSrcweir                 aWndLeft.GrabFocus();
640cdf0e10cSrcweir         break;
641cdf0e10cSrcweir 
642cdf0e10cSrcweir         case ePageEntry:
643cdf0e10cSrcweir         {
644cdf0e10cSrcweir             ClearTextAreas();
645cdf0e10cSrcweir             String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) );
646cdf0e10cSrcweir             aPageEntry += ' ';
647cdf0e10cSrcweir             aWndCenter.GetEditEngine()->SetText(aPageEntry);
648cdf0e10cSrcweir             aWndCenter.InsertField( SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD) );
649cdf0e10cSrcweir             if(!bTravelling)
650cdf0e10cSrcweir                 aWndCenter.GrabFocus();
651cdf0e10cSrcweir         }
652cdf0e10cSrcweir         break;
653cdf0e10cSrcweir 
654cdf0e10cSrcweir         case ePagesEntry:
655cdf0e10cSrcweir         {
656cdf0e10cSrcweir             ClearTextAreas();
657cdf0e10cSrcweir             ESelection aSel(0,0,0,0);
658cdf0e10cSrcweir             String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) );
659cdf0e10cSrcweir             aPageEntry += ' ';
660cdf0e10cSrcweir             aWndCenter.GetEditEngine()->SetText(aPageEntry);
661cdf0e10cSrcweir             aSel.nEndPos = aPageEntry.Len();
662cdf0e10cSrcweir             aWndCenter.GetEditEngine()->QuickInsertField(SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD), ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos));
663cdf0e10cSrcweir             ++aSel.nEndPos;
664cdf0e10cSrcweir             String aPageOfEntry = ' ';
665cdf0e10cSrcweir             aPageOfEntry += ScGlobal::GetRscString( STR_HF_OF );
666cdf0e10cSrcweir             aPageOfEntry += ' ';
667cdf0e10cSrcweir             aWndCenter.GetEditEngine()->QuickInsertText(aPageOfEntry,ESelection(aSel.nEndPara,aSel.nEndPos, aSel.nEndPara, aSel.nEndPos));
668cdf0e10cSrcweir             aSel.nEndPos = sal::static_int_cast<xub_StrLen>( aSel.nEndPos + aPageOfEntry.Len() );
669cdf0e10cSrcweir             aWndCenter.GetEditEngine()->QuickInsertField(SvxFieldItem(SvxPagesField(), EE_FEATURE_FIELD), ESelection(aSel.nEndPara,aSel.nEndPos, aSel.nEndPara, aSel.nEndPos));
670cdf0e10cSrcweir             pTextObj.reset(aWndCenter.GetEditEngine()->CreateTextObject());
671cdf0e10cSrcweir             aWndCenter.SetText(*pTextObj);
672cdf0e10cSrcweir             XubString aEntry(pTextObj.get()->GetText(0));
673cdf0e10cSrcweir             if(!bTravelling)
674cdf0e10cSrcweir                 aWndCenter.GrabFocus();
675cdf0e10cSrcweir         }
676cdf0e10cSrcweir         break;
677cdf0e10cSrcweir 
678cdf0e10cSrcweir         case eSheetEntry:
679cdf0e10cSrcweir             ClearTextAreas();
680cdf0e10cSrcweir             aWndCenter.InsertField( SvxFieldItem(SvxTableField(), EE_FEATURE_FIELD) );
681cdf0e10cSrcweir             if(!bTravelling)
682cdf0e10cSrcweir                 aWndCenter.GrabFocus();
683cdf0e10cSrcweir         break;
684cdf0e10cSrcweir 
685cdf0e10cSrcweir         case eConfidentialEntry:
686cdf0e10cSrcweir         {
687cdf0e10cSrcweir             ClearTextAreas();
688cdf0e10cSrcweir             String aConfidentialEntry(aUserOpt.GetCompany());
689cdf0e10cSrcweir             aConfidentialEntry += ' ';
690cdf0e10cSrcweir             aConfidentialEntry += ScGlobal::GetRscString( STR_HF_CONFIDENTIAL );
691cdf0e10cSrcweir             aWndLeft.GetEditEngine()->SetText(aConfidentialEntry);
692cdf0e10cSrcweir             aWndCenter.InsertField( SvxFieldItem(SvxDateField(Date(),SVXDATETYPE_VAR), EE_FEATURE_FIELD) );
693cdf0e10cSrcweir             String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) );
694cdf0e10cSrcweir             aPageEntry += ' ';
695cdf0e10cSrcweir             aWndRight.GetEditEngine()->SetText(aPageEntry);
696cdf0e10cSrcweir             aWndRight.InsertField( SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD) );
697cdf0e10cSrcweir             if(!bTravelling)
698cdf0e10cSrcweir                 aWndRight.GrabFocus();
699cdf0e10cSrcweir         }
700cdf0e10cSrcweir         break;
701cdf0e10cSrcweir 
702cdf0e10cSrcweir         case eFileNamePageEntry:
703cdf0e10cSrcweir         {
704cdf0e10cSrcweir             ClearTextAreas();
705cdf0e10cSrcweir             ESelection aSel(0,0,0,0);
706cdf0e10cSrcweir             aWndCenter.GetEditEngine()->QuickInsertField(SvxFieldItem( SvxFileField(), EE_FEATURE_FIELD ), aSel );
707cdf0e10cSrcweir             ++aSel.nEndPos;
708cdf0e10cSrcweir             String aPageEntry(RTL_CONSTASCII_STRINGPARAM(", "));
709cdf0e10cSrcweir             aPageEntry += ScGlobal::GetRscString( STR_PAGE ) ;
710cdf0e10cSrcweir             aPageEntry += ' ';
711cdf0e10cSrcweir             aWndCenter.GetEditEngine()->QuickInsertText(aPageEntry, ESelection(aSel.nEndPara,aSel.nEndPos, aSel.nEndPara, aSel.nEndPos));
712cdf0e10cSrcweir             aSel.nStartPos = aSel.nEndPos;
713cdf0e10cSrcweir             aSel.nEndPos = sal::static_int_cast<xub_StrLen>( aSel.nEndPos + aPageEntry.Len() );
714cdf0e10cSrcweir             aWndCenter.GetEditEngine()->QuickInsertField(SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD), ESelection(aSel.nEndPara,aSel.nEndPos, aSel.nEndPara, aSel.nEndPos));
715cdf0e10cSrcweir             pTextObj.reset(aWndCenter.GetEditEngine()->CreateTextObject());
716cdf0e10cSrcweir             aWndCenter.SetText(*pTextObj);
717cdf0e10cSrcweir             XubString aEntry2(pTextObj.get()->GetText(0));
718cdf0e10cSrcweir             if(!bTravelling)
719cdf0e10cSrcweir                 aWndCenter.GrabFocus();
720cdf0e10cSrcweir         }
721cdf0e10cSrcweir         break;
722cdf0e10cSrcweir 
723cdf0e10cSrcweir         case eExtFileNameEntry:
724cdf0e10cSrcweir             ClearTextAreas();
725cdf0e10cSrcweir             aWndCenter.InsertField( SvxFieldItem( SvxExtFileField(
726cdf0e10cSrcweir                 EMPTY_STRING, SVXFILETYPE_VAR, SVXFILEFORMAT_FULLPATH ), EE_FEATURE_FIELD ) );
727cdf0e10cSrcweir             if(!bTravelling)
728cdf0e10cSrcweir                 aWndCenter.GrabFocus();
729cdf0e10cSrcweir         break;
730cdf0e10cSrcweir 
731cdf0e10cSrcweir         case ePageSheetEntry:
732cdf0e10cSrcweir         {
733cdf0e10cSrcweir             ClearTextAreas();
734cdf0e10cSrcweir             ESelection aSel(0,0,0,0);
735cdf0e10cSrcweir             String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) );
736cdf0e10cSrcweir             aPageEntry += ' ';
737cdf0e10cSrcweir             aWndCenter.GetEditEngine()->SetText(aPageEntry);
738cdf0e10cSrcweir             aSel.nEndPos = aPageEntry.Len();
739cdf0e10cSrcweir             aWndCenter.GetEditEngine()->QuickInsertField(SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD), ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos));
740cdf0e10cSrcweir             ++aSel.nEndPos;
741cdf0e10cSrcweir             String aCommaSpace(RTL_CONSTASCII_STRINGPARAM(", "));
742cdf0e10cSrcweir             aWndCenter.GetEditEngine()->QuickInsertText(aCommaSpace,ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos));
743cdf0e10cSrcweir             aSel.nEndPos = sal::static_int_cast<xub_StrLen>( aSel.nEndPos + aCommaSpace.Len() );
744cdf0e10cSrcweir             aWndCenter.GetEditEngine()->QuickInsertField( SvxFieldItem(SvxTableField(), EE_FEATURE_FIELD), ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos));
745cdf0e10cSrcweir             pTextObj.reset(aWndCenter.GetEditEngine()->CreateTextObject());
746cdf0e10cSrcweir             aWndCenter.SetText(*pTextObj);
747cdf0e10cSrcweir             if(!bTravelling)
748cdf0e10cSrcweir                 aWndCenter.GrabFocus();
749cdf0e10cSrcweir         }
750cdf0e10cSrcweir         break;
751cdf0e10cSrcweir 
752cdf0e10cSrcweir         case ePageFileNameEntry:
753cdf0e10cSrcweir         {
754cdf0e10cSrcweir             ClearTextAreas();
755cdf0e10cSrcweir             ESelection aSel(0,0,0,0);
756cdf0e10cSrcweir             String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) );
757cdf0e10cSrcweir             aPageEntry += ' ';
758cdf0e10cSrcweir             aWndCenter.GetEditEngine()->SetText(aPageEntry);
759cdf0e10cSrcweir             aSel.nEndPos = aPageEntry.Len();
760cdf0e10cSrcweir             aWndCenter.GetEditEngine()->QuickInsertField(SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD), ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos));
761cdf0e10cSrcweir             ++aSel.nEndPos;
762cdf0e10cSrcweir             String aCommaSpace(RTL_CONSTASCII_STRINGPARAM(", "));
763cdf0e10cSrcweir             aWndCenter.GetEditEngine()->QuickInsertText(aCommaSpace,ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos));
764cdf0e10cSrcweir             aSel.nEndPos = sal::static_int_cast<xub_StrLen>( aSel.nEndPos + aCommaSpace.Len() );
765cdf0e10cSrcweir             aWndCenter.GetEditEngine()->QuickInsertField( SvxFieldItem(SvxFileField(), EE_FEATURE_FIELD), ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos));
766cdf0e10cSrcweir             pTextObj.reset(aWndCenter.GetEditEngine()->CreateTextObject());
767cdf0e10cSrcweir             aWndCenter.SetText(*pTextObj);
768cdf0e10cSrcweir             if(!bTravelling)
769cdf0e10cSrcweir                 aWndCenter.GrabFocus();
770cdf0e10cSrcweir         }
771cdf0e10cSrcweir         break;
772cdf0e10cSrcweir 
773cdf0e10cSrcweir         case ePageExtFileNameEntry:
774cdf0e10cSrcweir         {
775cdf0e10cSrcweir             ClearTextAreas();
776cdf0e10cSrcweir             String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) );
777cdf0e10cSrcweir             aPageEntry += ' ';
778cdf0e10cSrcweir             aWndCenter.GetEditEngine()->SetText(aPageEntry);
779cdf0e10cSrcweir             aWndCenter.InsertField( SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD) );
780cdf0e10cSrcweir             aWndRight.InsertField( SvxFieldItem( SvxExtFileField(
781cdf0e10cSrcweir                 EMPTY_STRING, SVXFILETYPE_VAR, SVXFILEFORMAT_FULLPATH ), EE_FEATURE_FIELD ) );
782cdf0e10cSrcweir             if(!bTravelling)
783cdf0e10cSrcweir                 aWndRight.GrabFocus();
784cdf0e10cSrcweir         }
785cdf0e10cSrcweir         break;
786cdf0e10cSrcweir 
787cdf0e10cSrcweir         case eUserNameEntry:
788cdf0e10cSrcweir         {
789cdf0e10cSrcweir             ClearTextAreas();
790cdf0e10cSrcweir             String aUserNameEntry(aUserOpt.GetFirstName());
791cdf0e10cSrcweir             aUserNameEntry += ' ';
792cdf0e10cSrcweir             aUserNameEntry += (String)aUserOpt.GetLastName();
793cdf0e10cSrcweir             aWndLeft.GetEditEngine()->SetText(aUserNameEntry);
794cdf0e10cSrcweir             String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) );
795cdf0e10cSrcweir             aPageEntry += ' ';
796cdf0e10cSrcweir             aWndCenter.GetEditEngine()->SetText(aPageEntry);
797cdf0e10cSrcweir             aWndCenter.InsertField( SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD) );
798cdf0e10cSrcweir             aWndRight.InsertField( SvxFieldItem(SvxDateField(Date(),SVXDATETYPE_VAR), EE_FEATURE_FIELD) );
799cdf0e10cSrcweir             if(!bTravelling)
800cdf0e10cSrcweir                 aWndRight.GrabFocus();
801cdf0e10cSrcweir         }
802cdf0e10cSrcweir         break;
803cdf0e10cSrcweir 
804cdf0e10cSrcweir         case eCreatedByEntry:
805cdf0e10cSrcweir         {
806cdf0e10cSrcweir             ClearTextAreas();
807cdf0e10cSrcweir             String aCreatedByEntry(ScGlobal::GetRscString( STR_HF_CREATED_BY ) );
808cdf0e10cSrcweir             aCreatedByEntry += ' ';
809cdf0e10cSrcweir             aCreatedByEntry += (String)aUserOpt.GetFirstName();
810cdf0e10cSrcweir             aCreatedByEntry += ' ';
811cdf0e10cSrcweir             aCreatedByEntry += (String)aUserOpt.GetLastName();
812cdf0e10cSrcweir             aWndLeft.GetEditEngine()->SetText(aCreatedByEntry);
813cdf0e10cSrcweir             aWndCenter.InsertField( SvxFieldItem(SvxDateField(Date(),SVXDATETYPE_VAR), EE_FEATURE_FIELD) );
814cdf0e10cSrcweir             String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) );
815cdf0e10cSrcweir             aPageEntry += ' ';
816cdf0e10cSrcweir             aWndRight.GetEditEngine()->SetText(aPageEntry);
817cdf0e10cSrcweir             aWndRight.InsertField( SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD) );
818cdf0e10cSrcweir             if(!bTravelling)
819cdf0e10cSrcweir                 aWndRight.GrabFocus();
820cdf0e10cSrcweir         }
821cdf0e10cSrcweir         break;
822cdf0e10cSrcweir 
823cdf0e10cSrcweir         default :
824cdf0e10cSrcweir             break;
825cdf0e10cSrcweir     }
826cdf0e10cSrcweir }
827cdf0e10cSrcweir 
828cdf0e10cSrcweir void ScHFEditPage::ClearTextAreas()
829cdf0e10cSrcweir {
830cdf0e10cSrcweir     aWndLeft.GetEditEngine()->SetText(EMPTY_STRING);
831cdf0e10cSrcweir     aWndLeft.Invalidate();
832cdf0e10cSrcweir     aWndCenter.GetEditEngine()->SetText(EMPTY_STRING);
833cdf0e10cSrcweir     aWndCenter.Invalidate();
834cdf0e10cSrcweir     aWndRight.GetEditEngine()->SetText(EMPTY_STRING);
835cdf0e10cSrcweir     aWndRight.Invalidate();
836cdf0e10cSrcweir }
837cdf0e10cSrcweir 
838cdf0e10cSrcweir //-----------------------------------------------------------------------
839cdf0e10cSrcweir // Handler:
840cdf0e10cSrcweir //-----------------------------------------------------------------------
841cdf0e10cSrcweir 
842cdf0e10cSrcweir IMPL_LINK( ScHFEditPage, ListHdl_Impl, ListBox*, pList )
843cdf0e10cSrcweir {
844cdf0e10cSrcweir     if ( pList && pList == &maLbDefined )
845cdf0e10cSrcweir     {
846cdf0e10cSrcweir         ScHFEntryId eSel = static_cast<ScHFEntryId>(maLbDefined.GetSelectEntryPos());
847cdf0e10cSrcweir         if(!maLbDefined.IsTravelSelect())
848cdf0e10cSrcweir         {
849cdf0e10cSrcweir             ProcessDefinedListSel(eSel);
850cdf0e10cSrcweir 
851cdf0e10cSrcweir             // check if we need to remove the customized entry.
852cdf0e10cSrcweir             if(eSel < eEntryCount)
853cdf0e10cSrcweir                 RemoveFromDefinedList();
854cdf0e10cSrcweir         }
855cdf0e10cSrcweir         else
856cdf0e10cSrcweir         {
857cdf0e10cSrcweir             ProcessDefinedListSel(eSel, true);
858cdf0e10cSrcweir         }
859cdf0e10cSrcweir     }
860cdf0e10cSrcweir     return 0;
861cdf0e10cSrcweir }
862cdf0e10cSrcweir 
863cdf0e10cSrcweir IMPL_LINK( ScHFEditPage, ClickHdl, ImageButton*, pBtn )
864cdf0e10cSrcweir {
865cdf0e10cSrcweir 	pActiveEdWnd = ::GetScEditWindow(); //CHINA001
866cdf0e10cSrcweir 	if ( !pActiveEdWnd )
867cdf0e10cSrcweir 		return 0;
868cdf0e10cSrcweir 
869cdf0e10cSrcweir 	if ( pBtn == &aBtnText )
870cdf0e10cSrcweir 	{
871cdf0e10cSrcweir 		pActiveEdWnd->SetCharAttriutes();
872cdf0e10cSrcweir 	}
873cdf0e10cSrcweir 	else
874cdf0e10cSrcweir 	{
875cdf0e10cSrcweir 		if ( pBtn == &aBtnPage )
876cdf0e10cSrcweir             pActiveEdWnd->InsertField( SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD) );
877cdf0e10cSrcweir 		else if ( pBtn == &aBtnLastPage )
878cdf0e10cSrcweir             pActiveEdWnd->InsertField( SvxFieldItem(SvxPagesField(), EE_FEATURE_FIELD) );
879cdf0e10cSrcweir 		else if ( pBtn == &aBtnDate )
880cdf0e10cSrcweir             pActiveEdWnd->InsertField( SvxFieldItem(SvxDateField(Date(),SVXDATETYPE_VAR), EE_FEATURE_FIELD) );
881cdf0e10cSrcweir 		else if ( pBtn == &aBtnTime )
882cdf0e10cSrcweir             pActiveEdWnd->InsertField( SvxFieldItem(SvxTimeField(), EE_FEATURE_FIELD) );
883cdf0e10cSrcweir 		else if ( pBtn == &aBtnFile )
884cdf0e10cSrcweir 		{
885cdf0e10cSrcweir             pActiveEdWnd->InsertField( SvxFieldItem( SvxFileField(), EE_FEATURE_FIELD ) );
886cdf0e10cSrcweir 		}
887cdf0e10cSrcweir 		else if ( pBtn == &aBtnTable )
888cdf0e10cSrcweir             pActiveEdWnd->InsertField( SvxFieldItem(SvxTableField(), EE_FEATURE_FIELD) );
889cdf0e10cSrcweir 	}
890cdf0e10cSrcweir 	InsertToDefinedList();
891cdf0e10cSrcweir 	pActiveEdWnd->GrabFocus();
892cdf0e10cSrcweir 
893cdf0e10cSrcweir 	return 0;
894cdf0e10cSrcweir }
895cdf0e10cSrcweir 
896cdf0e10cSrcweir IMPL_LINK( ScHFEditPage, MenuHdl, ScExtIButton*, pBtn )
897cdf0e10cSrcweir {
898cdf0e10cSrcweir 	pActiveEdWnd = ::GetScEditWindow(); //CHINA001
899cdf0e10cSrcweir 	if ( !pActiveEdWnd )
900cdf0e10cSrcweir 		return 0;
901cdf0e10cSrcweir 
902cdf0e10cSrcweir 	if(pBtn!=NULL)
903cdf0e10cSrcweir 	{
904cdf0e10cSrcweir 		switch(pBtn->GetSelected())
905cdf0e10cSrcweir 		{
906cdf0e10cSrcweir 			case FILE_COMMAND_TITEL:
907cdf0e10cSrcweir                 pActiveEdWnd->InsertField( SvxFieldItem( SvxFileField(), EE_FEATURE_FIELD ) );
908cdf0e10cSrcweir 				break;
909cdf0e10cSrcweir 			case FILE_COMMAND_FILENAME:
910cdf0e10cSrcweir 				pActiveEdWnd->InsertField( SvxFieldItem( SvxExtFileField(
911cdf0e10cSrcweir                         EMPTY_STRING, SVXFILETYPE_VAR, SVXFILEFORMAT_NAME_EXT ), EE_FEATURE_FIELD ) );
912cdf0e10cSrcweir 				break;
913cdf0e10cSrcweir 			case FILE_COMMAND_PATH:
914cdf0e10cSrcweir 				pActiveEdWnd->InsertField( SvxFieldItem( SvxExtFileField(
915cdf0e10cSrcweir                         EMPTY_STRING, SVXFILETYPE_VAR, SVXFILEFORMAT_FULLPATH ), EE_FEATURE_FIELD ) );
916cdf0e10cSrcweir 				break;
917cdf0e10cSrcweir 		}
918cdf0e10cSrcweir 	}
919cdf0e10cSrcweir 	return 0;
920cdf0e10cSrcweir }
921cdf0e10cSrcweir 
922cdf0e10cSrcweir //========================================================================
923cdf0e10cSrcweir // class ScRightHeaderEditPage
924cdf0e10cSrcweir //========================================================================
925cdf0e10cSrcweir 
926cdf0e10cSrcweir ScRightHeaderEditPage::ScRightHeaderEditPage( Window* pParent, const SfxItemSet& rCoreSet )
927cdf0e10cSrcweir 	: ScHFEditPage( pParent, RID_SCPAGE_HFED_HR, rCoreSet,
928cdf0e10cSrcweir 					rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_HEADERRIGHT ), true )
929cdf0e10cSrcweir 	{}
930cdf0e10cSrcweir 
931cdf0e10cSrcweir // -----------------------------------------------------------------------
932cdf0e10cSrcweir 
933cdf0e10cSrcweir sal_uInt16* __EXPORT ScRightHeaderEditPage::GetRanges()
934cdf0e10cSrcweir 	{ return pPageRightHeaderRanges; }
935cdf0e10cSrcweir 
936cdf0e10cSrcweir // -----------------------------------------------------------------------
937cdf0e10cSrcweir 
938cdf0e10cSrcweir SfxTabPage* __EXPORT ScRightHeaderEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet )
939cdf0e10cSrcweir 	{ return ( new ScRightHeaderEditPage( pParent, rCoreSet ) ); };
940cdf0e10cSrcweir 
941cdf0e10cSrcweir 
942cdf0e10cSrcweir //========================================================================
943cdf0e10cSrcweir // class ScLeftHeaderEditPage
944cdf0e10cSrcweir //========================================================================
945cdf0e10cSrcweir 
946cdf0e10cSrcweir ScLeftHeaderEditPage::ScLeftHeaderEditPage( Window* pParent, const SfxItemSet& rCoreSet )
947cdf0e10cSrcweir 	: ScHFEditPage( pParent, RID_SCPAGE_HFED_HL, rCoreSet,
948cdf0e10cSrcweir 					rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_HEADERLEFT ), true )
949cdf0e10cSrcweir 	{}
950cdf0e10cSrcweir 
951cdf0e10cSrcweir // -----------------------------------------------------------------------
952cdf0e10cSrcweir 
953cdf0e10cSrcweir sal_uInt16* __EXPORT ScLeftHeaderEditPage::GetRanges()
954cdf0e10cSrcweir 	{ return pPageLeftHeaderRanges; }
955cdf0e10cSrcweir 
956cdf0e10cSrcweir // -----------------------------------------------------------------------
957cdf0e10cSrcweir 
958cdf0e10cSrcweir SfxTabPage* __EXPORT ScLeftHeaderEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet )
959cdf0e10cSrcweir 	{ return ( new ScLeftHeaderEditPage( pParent, rCoreSet ) ); };
960cdf0e10cSrcweir 
961cdf0e10cSrcweir //========================================================================
962cdf0e10cSrcweir // class ScRightFooterEditPage
963cdf0e10cSrcweir //========================================================================
964cdf0e10cSrcweir 
965cdf0e10cSrcweir ScRightFooterEditPage::ScRightFooterEditPage( Window* pParent, const SfxItemSet& rCoreSet )
966cdf0e10cSrcweir 	: ScHFEditPage( pParent, RID_SCPAGE_HFED_FR, rCoreSet,
967cdf0e10cSrcweir 					rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_FOOTERRIGHT ), false )
968cdf0e10cSrcweir 	{}
969cdf0e10cSrcweir 
970cdf0e10cSrcweir // -----------------------------------------------------------------------
971cdf0e10cSrcweir 
972cdf0e10cSrcweir sal_uInt16* __EXPORT ScRightFooterEditPage::GetRanges()
973cdf0e10cSrcweir 	{ return pPageRightFooterRanges; }
974cdf0e10cSrcweir 
975cdf0e10cSrcweir // -----------------------------------------------------------------------
976cdf0e10cSrcweir 
977cdf0e10cSrcweir SfxTabPage* __EXPORT ScRightFooterEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet )
978cdf0e10cSrcweir 	{ return ( new ScRightFooterEditPage( pParent, rCoreSet ) ); };
979cdf0e10cSrcweir 
980cdf0e10cSrcweir //========================================================================
981cdf0e10cSrcweir // class ScLeftFooterEditPage
982cdf0e10cSrcweir //========================================================================
983cdf0e10cSrcweir 
984cdf0e10cSrcweir ScLeftFooterEditPage::ScLeftFooterEditPage( Window* pParent, const SfxItemSet& rCoreSet )
985cdf0e10cSrcweir 	: ScHFEditPage( pParent, RID_SCPAGE_HFED_FL, rCoreSet,
986cdf0e10cSrcweir 					rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_FOOTERLEFT ), false )
987cdf0e10cSrcweir 	{}
988cdf0e10cSrcweir 
989cdf0e10cSrcweir // -----------------------------------------------------------------------
990cdf0e10cSrcweir 
991cdf0e10cSrcweir sal_uInt16* __EXPORT ScLeftFooterEditPage::GetRanges()
992cdf0e10cSrcweir 	{ return pPageLeftFooterRanges; }
993cdf0e10cSrcweir 
994cdf0e10cSrcweir // -----------------------------------------------------------------------
995cdf0e10cSrcweir 
996cdf0e10cSrcweir SfxTabPage* __EXPORT ScLeftFooterEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet )
997cdf0e10cSrcweir 	{ return ( new ScLeftFooterEditPage( pParent, rCoreSet ) ); };
998