xref: /aoo41x/main/sc/source/ui/pagedlg/tphf.cxx (revision b3f79822)
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 _TPHF_CXX
34cdf0e10cSrcweir #include "scitems.hxx"
35cdf0e10cSrcweir #include <sfx2/basedlgs.hxx>
36cdf0e10cSrcweir #include <svl/style.hxx>
37cdf0e10cSrcweir #include <vcl/svapp.hxx>
38cdf0e10cSrcweir #include <vcl/msgbox.hxx>
39cdf0e10cSrcweir 
40cdf0e10cSrcweir #include "tphf.hxx"
41cdf0e10cSrcweir #include "sc.hrc"
42cdf0e10cSrcweir #include "globstr.hrc"
43cdf0e10cSrcweir #include "tabvwsh.hxx"
44cdf0e10cSrcweir #include "viewdata.hxx"
45cdf0e10cSrcweir #include "document.hxx"
46cdf0e10cSrcweir //CHINA001 #include "tphfedit.hxx"
47cdf0e10cSrcweir #include "hfedtdlg.hxx"
48cdf0e10cSrcweir #include "styledlg.hxx"
49cdf0e10cSrcweir #include "scresid.hxx"
50cdf0e10cSrcweir #include "scuitphfedit.hxx" //CHINA001
51cdf0e10cSrcweir #undef _TPHF_CXX
52cdf0e10cSrcweir 
53cdf0e10cSrcweir 
54cdf0e10cSrcweir 
55cdf0e10cSrcweir //==================================================================
56cdf0e10cSrcweir // class ScHFPage
57cdf0e10cSrcweir //==================================================================
58cdf0e10cSrcweir 
ScHFPage(Window * pParent,sal_uInt16 nResId,const SfxItemSet & rSet,sal_uInt16 nSetId)59cdf0e10cSrcweir ScHFPage::ScHFPage( Window* pParent, sal_uInt16 nResId,
60cdf0e10cSrcweir 					const SfxItemSet& rSet, sal_uInt16 nSetId )
61cdf0e10cSrcweir 
62cdf0e10cSrcweir 	:	SvxHFPage	( pParent, nResId, rSet, nSetId ),
63cdf0e10cSrcweir 		aBtnEdit	( this, ScResId( RID_SCBTN_HFEDIT ) ),
64cdf0e10cSrcweir 		aDataSet 	( *rSet.GetPool(),
65cdf0e10cSrcweir 					   ATTR_PAGE_HEADERLEFT, ATTR_PAGE_FOOTERRIGHT,
66cdf0e10cSrcweir 					   ATTR_PAGE, ATTR_PAGE, 0 ),
67cdf0e10cSrcweir 		nPageUsage	( (sal_uInt16)SVX_PAGE_ALL ),
68cdf0e10cSrcweir 		pStyleDlg	( NULL )
69cdf0e10cSrcweir {
70cdf0e10cSrcweir 	SetExchangeSupport();
71cdf0e10cSrcweir 
72cdf0e10cSrcweir 	SfxViewShell*	pSh = SfxViewShell::Current();
73cdf0e10cSrcweir 	ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell,pSh);
74cdf0e10cSrcweir 	Point			aPos( aBackgroundBtn.GetPosPixel() );
75cdf0e10cSrcweir 
76cdf0e10cSrcweir 	// aBackgroundBtn position not changed anymore
77cdf0e10cSrcweir 
78cdf0e10cSrcweir 	aPos.X() += aBackgroundBtn.GetSizePixel().Width();
79cdf0e10cSrcweir 	aPos.X() += LogicToPixel( Size(3,0), MAP_APPFONT ).Width();
80cdf0e10cSrcweir 	aBtnEdit.SetPosPixel( aPos );
81cdf0e10cSrcweir 	aBtnEdit.Show();
82cdf0e10cSrcweir 
83cdf0e10cSrcweir 	aDataSet.Put( rSet );
84cdf0e10cSrcweir 
85cdf0e10cSrcweir 	if ( pViewSh )
86cdf0e10cSrcweir 	{
87cdf0e10cSrcweir 		ScViewData* pViewData = pViewSh->GetViewData();
88cdf0e10cSrcweir 		ScDocument* pDoc	  = pViewData->GetDocument();
89cdf0e10cSrcweir 
90cdf0e10cSrcweir 		aStrPageStyle = pDoc->GetPageStyle( pViewData->GetTabNo() );
91cdf0e10cSrcweir 	}
92cdf0e10cSrcweir 
93cdf0e10cSrcweir 	aBtnEdit.SetClickHdl 	( LINK( this, ScHFPage, BtnHdl ) );
94cdf0e10cSrcweir 	aTurnOnBox.SetClickHdl	( LINK( this, ScHFPage, TurnOnHdl ) );
95cdf0e10cSrcweir 
96cdf0e10cSrcweir 	if ( nId == SID_ATTR_PAGE_HEADERSET )
97cdf0e10cSrcweir 		aBtnEdit.SetHelpId( HID_SC_HEADER_EDIT );
98cdf0e10cSrcweir 	else
99cdf0e10cSrcweir 		aBtnEdit.SetHelpId( HID_SC_FOOTER_EDIT );
100cdf0e10cSrcweir 
101cdf0e10cSrcweir 	aBtnEdit.SetAccessibleRelationMemberOf(&aFrm);
102cdf0e10cSrcweir }
103cdf0e10cSrcweir 
104cdf0e10cSrcweir //------------------------------------------------------------------
105cdf0e10cSrcweir 
~ScHFPage()106cdf0e10cSrcweir __EXPORT ScHFPage::~ScHFPage()
107cdf0e10cSrcweir {
108cdf0e10cSrcweir }
109cdf0e10cSrcweir 
110cdf0e10cSrcweir //------------------------------------------------------------------
111cdf0e10cSrcweir 
Reset(const SfxItemSet & rSet)112cdf0e10cSrcweir void __EXPORT ScHFPage::Reset( const SfxItemSet& rSet )
113cdf0e10cSrcweir {
114cdf0e10cSrcweir 	SvxHFPage::Reset( rSet );
115cdf0e10cSrcweir 	TurnOnHdl( 0 );
116cdf0e10cSrcweir }
117cdf0e10cSrcweir 
118cdf0e10cSrcweir //------------------------------------------------------------------
119cdf0e10cSrcweir 
FillItemSet(SfxItemSet & rOutSet)120cdf0e10cSrcweir sal_Bool __EXPORT ScHFPage::FillItemSet( SfxItemSet& rOutSet )
121cdf0e10cSrcweir {
122cdf0e10cSrcweir 	sal_Bool bResult = SvxHFPage::FillItemSet( rOutSet );
123cdf0e10cSrcweir 
124cdf0e10cSrcweir 	if ( nId == SID_ATTR_PAGE_HEADERSET )
125cdf0e10cSrcweir 	{
126cdf0e10cSrcweir 		rOutSet.Put( aDataSet.Get( ATTR_PAGE_HEADERLEFT ) );
127cdf0e10cSrcweir 		rOutSet.Put( aDataSet.Get( ATTR_PAGE_HEADERRIGHT ) );
128cdf0e10cSrcweir 	}
129cdf0e10cSrcweir 	else
130cdf0e10cSrcweir 	{
131cdf0e10cSrcweir 		rOutSet.Put( aDataSet.Get( ATTR_PAGE_FOOTERLEFT ) );
132cdf0e10cSrcweir 		rOutSet.Put( aDataSet.Get( ATTR_PAGE_FOOTERRIGHT ) );
133cdf0e10cSrcweir 	}
134cdf0e10cSrcweir 
135cdf0e10cSrcweir 	return bResult;
136cdf0e10cSrcweir }
137cdf0e10cSrcweir 
138cdf0e10cSrcweir //------------------------------------------------------------------
139cdf0e10cSrcweir 
ActivatePage(const SfxItemSet & rSet)140cdf0e10cSrcweir void __EXPORT ScHFPage::ActivatePage( const SfxItemSet& rSet )
141cdf0e10cSrcweir {
142cdf0e10cSrcweir 	sal_uInt16				nPageWhich = GetWhich( SID_ATTR_PAGE );
143cdf0e10cSrcweir 	const SvxPageItem&	rPageItem  = (const SvxPageItem&)
144cdf0e10cSrcweir 									 rSet.Get(nPageWhich);
145cdf0e10cSrcweir 
146cdf0e10cSrcweir 	nPageUsage = rPageItem.GetPageUsage();
147cdf0e10cSrcweir 
148cdf0e10cSrcweir 	if ( pStyleDlg )
149cdf0e10cSrcweir 		aStrPageStyle = pStyleDlg->GetStyleSheet().GetName();
150cdf0e10cSrcweir 
151cdf0e10cSrcweir 	aDataSet.Put( rSet.Get(ATTR_PAGE) );
152cdf0e10cSrcweir 
153cdf0e10cSrcweir 	SvxHFPage::ActivatePage( rSet );
154cdf0e10cSrcweir }
155cdf0e10cSrcweir 
156cdf0e10cSrcweir //------------------------------------------------------------------
157cdf0e10cSrcweir 
DeactivatePage(SfxItemSet * pSetP)158cdf0e10cSrcweir int __EXPORT ScHFPage::DeactivatePage( SfxItemSet* pSetP )
159cdf0e10cSrcweir {
160cdf0e10cSrcweir     if ( LEAVE_PAGE == SvxHFPage::DeactivatePage( pSetP ) )
161cdf0e10cSrcweir         if ( pSetP )
162cdf0e10cSrcweir             FillItemSet( *pSetP );
163cdf0e10cSrcweir 
164cdf0e10cSrcweir 	return LEAVE_PAGE;
165cdf0e10cSrcweir }
166cdf0e10cSrcweir 
167cdf0e10cSrcweir //------------------------------------------------------------------
168cdf0e10cSrcweir 
ActivatePage()169cdf0e10cSrcweir void ScHFPage::ActivatePage()
170cdf0e10cSrcweir {
171cdf0e10cSrcweir }
172cdf0e10cSrcweir 
DeactivatePage()173cdf0e10cSrcweir void ScHFPage::DeactivatePage()
174cdf0e10cSrcweir {
175cdf0e10cSrcweir }
176cdf0e10cSrcweir 
177cdf0e10cSrcweir //------------------------------------------------------------------
178cdf0e10cSrcweir // Handler:
179cdf0e10cSrcweir //------------------------------------------------------------------
180cdf0e10cSrcweir 
IMPL_LINK(ScHFPage,TurnOnHdl,CheckBox *,EMPTYARG)181cdf0e10cSrcweir IMPL_LINK( ScHFPage, TurnOnHdl, CheckBox*, EMPTYARG )
182cdf0e10cSrcweir {
183cdf0e10cSrcweir 	SvxHFPage::TurnOnHdl( &aTurnOnBox );
184cdf0e10cSrcweir 
185cdf0e10cSrcweir 	if ( aTurnOnBox.IsChecked() )
186cdf0e10cSrcweir 		aBtnEdit.Enable();
187cdf0e10cSrcweir 	else
188cdf0e10cSrcweir 		aBtnEdit.Disable();
189cdf0e10cSrcweir 
190cdf0e10cSrcweir 	return 0;
191cdf0e10cSrcweir }
192cdf0e10cSrcweir 
193cdf0e10cSrcweir 
194cdf0e10cSrcweir //------------------------------------------------------------------
195cdf0e10cSrcweir 
IMPL_LINK(ScHFPage,BtnHdl,PushButton *,EMPTYARG)196cdf0e10cSrcweir IMPL_LINK( ScHFPage, BtnHdl, PushButton*, EMPTYARG )
197cdf0e10cSrcweir {
198cdf0e10cSrcweir 	//	Wenn der Bearbeiten-Dialog direkt aus dem Click-Handler des Buttons
199cdf0e10cSrcweir 	//	aufgerufen wird, funktioniert im Bearbeiten-Dialog unter OS/2 das
200cdf0e10cSrcweir 	//	GrabFocus nicht (Bug #41805#).
201cdf0e10cSrcweir 	//	Mit dem neuen StarView sollte dieser Workaround wieder raus koennen!
202cdf0e10cSrcweir 
203cdf0e10cSrcweir 	Application::PostUserEvent( LINK( this, ScHFPage, HFEditHdl ) );
204cdf0e10cSrcweir 	return 0;
205cdf0e10cSrcweir }
206cdf0e10cSrcweir 
IMPL_LINK(ScHFPage,HFEditHdl,void *,EMPTYARG)207cdf0e10cSrcweir IMPL_LINK( ScHFPage, HFEditHdl, void*, EMPTYARG )
208cdf0e10cSrcweir {
209cdf0e10cSrcweir 	SfxViewShell*	pViewSh = SfxViewShell::Current();
210cdf0e10cSrcweir 
211cdf0e10cSrcweir 	if ( !pViewSh )
212cdf0e10cSrcweir 	{
213cdf0e10cSrcweir 		DBG_ERROR( "Current ViewShell not found." );
214cdf0e10cSrcweir 		return 0;
215cdf0e10cSrcweir 	}
216cdf0e10cSrcweir 
217cdf0e10cSrcweir 	if (   aCntSharedBox.IsEnabled()
218cdf0e10cSrcweir 		&& !aCntSharedBox.IsChecked() )
219cdf0e10cSrcweir 	{
220cdf0e10cSrcweir 		sal_uInt16 nResId = ( nId == SID_ATTR_PAGE_HEADERSET )
221cdf0e10cSrcweir 							? RID_SCDLG_HFED_HEADER
222cdf0e10cSrcweir 							: RID_SCDLG_HFED_FOOTER;
223cdf0e10cSrcweir 
224cdf0e10cSrcweir 		ScHFEditDlg* pDlg
225cdf0e10cSrcweir 			 = new ScHFEditDlg( pViewSh->GetViewFrame(), this,
226cdf0e10cSrcweir 								aDataSet, aStrPageStyle, nResId );
227cdf0e10cSrcweir 
228cdf0e10cSrcweir 		if ( pDlg->Execute() == RET_OK )
229cdf0e10cSrcweir 		{
230cdf0e10cSrcweir 			aDataSet.Put( *pDlg->GetOutputItemSet() );
231cdf0e10cSrcweir 		}
232cdf0e10cSrcweir 
233cdf0e10cSrcweir 		delete pDlg;
234cdf0e10cSrcweir 	}
235cdf0e10cSrcweir 	else
236cdf0e10cSrcweir 	{
237cdf0e10cSrcweir 		String				aText;
238cdf0e10cSrcweir 		SfxSingleTabDialog* pDlg = new SfxSingleTabDialog( this, aDataSet, 42 );
239cdf0e10cSrcweir 		sal_Bool bRightPage =   aCntSharedBox.IsChecked()
240cdf0e10cSrcweir 						 || ( SVX_PAGE_LEFT != SvxPageUsage(nPageUsage) );
241cdf0e10cSrcweir 
242cdf0e10cSrcweir 		if ( nId == SID_ATTR_PAGE_HEADERSET )
243cdf0e10cSrcweir 		{
244cdf0e10cSrcweir 			aText = ScGlobal::GetRscString( STR_PAGEHEADER );
245cdf0e10cSrcweir 			if ( bRightPage )
246cdf0e10cSrcweir 				pDlg->SetTabPage( ScRightHeaderEditPage::Create( pDlg, aDataSet ) );
247cdf0e10cSrcweir 			else
248cdf0e10cSrcweir 				pDlg->SetTabPage( ScLeftHeaderEditPage::Create( pDlg, aDataSet ) );
249cdf0e10cSrcweir 		}
250cdf0e10cSrcweir 		else
251cdf0e10cSrcweir 		{
252cdf0e10cSrcweir 			aText = ScGlobal::GetRscString( STR_PAGEFOOTER );
253cdf0e10cSrcweir 			if ( bRightPage )
254cdf0e10cSrcweir 				pDlg->SetTabPage( ScRightFooterEditPage::Create( pDlg, aDataSet ) );
255cdf0e10cSrcweir 			else
256cdf0e10cSrcweir 				pDlg->SetTabPage( ScLeftFooterEditPage::Create( pDlg, aDataSet ) );
257cdf0e10cSrcweir 		}
258cdf0e10cSrcweir 
259cdf0e10cSrcweir 		SvxNumType eNumType = ((const SvxPageItem&)aDataSet.Get(ATTR_PAGE)).GetNumType();
260cdf0e10cSrcweir 		((ScHFEditPage*)pDlg->GetTabPage())->SetNumType(eNumType);
261cdf0e10cSrcweir 
262cdf0e10cSrcweir 		aText.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " (" ));
263cdf0e10cSrcweir 		aText += ScGlobal::GetRscString( STR_PAGESTYLE );
264cdf0e10cSrcweir 		aText.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ": " ));
265cdf0e10cSrcweir 		aText += aStrPageStyle;
266cdf0e10cSrcweir 		aText += ')';
267cdf0e10cSrcweir 
268cdf0e10cSrcweir 		pDlg->SetText( aText );
269cdf0e10cSrcweir 
270cdf0e10cSrcweir 		if ( pDlg->Execute() == RET_OK )
271cdf0e10cSrcweir 		{
272cdf0e10cSrcweir 			aDataSet.Put( *pDlg->GetOutputItemSet() );
273cdf0e10cSrcweir 		}
274cdf0e10cSrcweir 
275cdf0e10cSrcweir 		delete pDlg;
276cdf0e10cSrcweir 	}
277cdf0e10cSrcweir 
278cdf0e10cSrcweir 	return 0;
279cdf0e10cSrcweir }
280cdf0e10cSrcweir 
281cdf0e10cSrcweir //==================================================================
282cdf0e10cSrcweir // class ScHeaderPage
283cdf0e10cSrcweir //==================================================================
284cdf0e10cSrcweir 
ScHeaderPage(Window * pParent,const SfxItemSet & rSet)285cdf0e10cSrcweir ScHeaderPage::ScHeaderPage( Window* pParent, const SfxItemSet& rSet )
286cdf0e10cSrcweir 	: ScHFPage( pParent, RID_SVXPAGE_HEADER, rSet, SID_ATTR_PAGE_HEADERSET )
287cdf0e10cSrcweir {
288cdf0e10cSrcweir }
289cdf0e10cSrcweir 
290cdf0e10cSrcweir //------------------------------------------------------------------
291cdf0e10cSrcweir 
Create(Window * pParent,const SfxItemSet & rCoreSet)292cdf0e10cSrcweir SfxTabPage* __EXPORT ScHeaderPage::Create( Window* pParent, const SfxItemSet& rCoreSet )
293cdf0e10cSrcweir {
294cdf0e10cSrcweir 	return ( new ScHeaderPage( pParent, rCoreSet ) );
295cdf0e10cSrcweir }
296cdf0e10cSrcweir 
297cdf0e10cSrcweir //------------------------------------------------------------------
298cdf0e10cSrcweir 
GetRanges()299cdf0e10cSrcweir sal_uInt16* __EXPORT ScHeaderPage::GetRanges()
300cdf0e10cSrcweir {
301cdf0e10cSrcweir 	return SvxHeaderPage::GetRanges();
302cdf0e10cSrcweir }
303cdf0e10cSrcweir 
304cdf0e10cSrcweir //==================================================================
305cdf0e10cSrcweir // class ScFooterPage
306cdf0e10cSrcweir //==================================================================
307cdf0e10cSrcweir 
ScFooterPage(Window * pParent,const SfxItemSet & rSet)308cdf0e10cSrcweir ScFooterPage::ScFooterPage( Window* pParent, const SfxItemSet& rSet )
309cdf0e10cSrcweir 	: ScHFPage( pParent, RID_SVXPAGE_FOOTER, rSet, SID_ATTR_PAGE_FOOTERSET )
310cdf0e10cSrcweir {
311cdf0e10cSrcweir }
312cdf0e10cSrcweir 
313cdf0e10cSrcweir //------------------------------------------------------------------
314cdf0e10cSrcweir 
Create(Window * pParent,const SfxItemSet & rCoreSet)315cdf0e10cSrcweir SfxTabPage* __EXPORT ScFooterPage::Create( Window* pParent, const SfxItemSet& rCoreSet )
316cdf0e10cSrcweir {
317cdf0e10cSrcweir 	return ( new ScFooterPage( pParent, rCoreSet ) );
318cdf0e10cSrcweir }
319cdf0e10cSrcweir 
320cdf0e10cSrcweir //------------------------------------------------------------------
321cdf0e10cSrcweir 
GetRanges()322cdf0e10cSrcweir sal_uInt16* __EXPORT ScFooterPage::GetRanges()
323cdf0e10cSrcweir {
324cdf0e10cSrcweir 	return SvxHeaderPage::GetRanges();
325cdf0e10cSrcweir }
326cdf0e10cSrcweir 
327cdf0e10cSrcweir 
328cdf0e10cSrcweir 
329cdf0e10cSrcweir 
330