xref: /aoo4110/main/toolkit/workben/layout/zoom.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 #if !TEST_LAYOUT
25*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
26*b1cdbd2cSJim Jagielski #include "precompiled_svx.hxx"
27*b1cdbd2cSJim Jagielski #endif /* !TEST_LAYOUT */
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski #ifdef SVX_DLLIMPLEMENTATION
30*b1cdbd2cSJim Jagielski #undef SVX_DLLIMPLEMENTATION
31*b1cdbd2cSJim Jagielski #endif
32*b1cdbd2cSJim Jagielski 
33*b1cdbd2cSJim Jagielski // include ---------------------------------------------------------------
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski #if TEST_LAYOUT
36*b1cdbd2cSJim Jagielski #include <cstdio>
37*b1cdbd2cSJim Jagielski #endif /* TEST_LAYOUT */
38*b1cdbd2cSJim Jagielski #include <tools/shl.hxx>
39*b1cdbd2cSJim Jagielski #include <svtools/itemset.hxx>
40*b1cdbd2cSJim Jagielski #include <svtools/itempool.hxx>
41*b1cdbd2cSJim Jagielski #include <sfx2/objsh.hxx>
42*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
43*b1cdbd2cSJim Jagielski 
44*b1cdbd2cSJim Jagielski #define _SVX_ZOOM_CXX
45*b1cdbd2cSJim Jagielski 
46*b1cdbd2cSJim Jagielski #include <svx/dialogs.hrc>
47*b1cdbd2cSJim Jagielski #if !TEST_LAYOUT
48*b1cdbd2cSJim Jagielski #include "zoom.hrc"
49*b1cdbd2cSJim Jagielski #endif /* !TEST_LAYOUT */
50*b1cdbd2cSJim Jagielski 
51*b1cdbd2cSJim Jagielski #include "zoom.hxx"
52*b1cdbd2cSJim Jagielski #if TEST_LAYOUT
53*b1cdbd2cSJim Jagielski #define SVX_ZOOM_OPTIMAL "Zoom optimal"
54*b1cdbd2cSJim Jagielski #define SVX_ZOOM_PAGEWIDTH "Zoom page width"
55*b1cdbd2cSJim Jagielski #define SVX_ZOOM_WHOLEPAGE "Zoom whole page"
56*b1cdbd2cSJim Jagielski struct SvxZoomItem
57*b1cdbd2cSJim Jagielski {
SetTypeSvxZoomItem58*b1cdbd2cSJim Jagielski     void SetType( char const* s )
59*b1cdbd2cSJim Jagielski     {
60*b1cdbd2cSJim Jagielski         fputs( s, stderr );
61*b1cdbd2cSJim Jagielski     }
62*b1cdbd2cSJim Jagielski 
SetValueSvxZoomItem63*b1cdbd2cSJim Jagielski     void SetValue( int n )
64*b1cdbd2cSJim Jagielski     {
65*b1cdbd2cSJim Jagielski         fprintf( stderr, "Zoom factor: %d\n", int( n ) );
66*b1cdbd2cSJim Jagielski     }
67*b1cdbd2cSJim Jagielski };
68*b1cdbd2cSJim Jagielski #define SfxPoolItem LAYOUT_SfxPoolItem
69*b1cdbd2cSJim Jagielski class LAYOUT_SfxPoolItem
70*b1cdbd2cSJim Jagielski {
71*b1cdbd2cSJim Jagielski };
72*b1cdbd2cSJim Jagielski struct SvxViewLayoutItem : public LAYOUT_SfxPoolItem
73*b1cdbd2cSJim Jagielski {
IsBookModeSvxViewLayoutItem74*b1cdbd2cSJim Jagielski     bool IsBookMode()
75*b1cdbd2cSJim Jagielski     {
76*b1cdbd2cSJim Jagielski         return false;
77*b1cdbd2cSJim Jagielski     }
GetValueSvxViewLayoutItem78*b1cdbd2cSJim Jagielski     USHORT GetValue()
79*b1cdbd2cSJim Jagielski     {
80*b1cdbd2cSJim Jagielski         return 0;
81*b1cdbd2cSJim Jagielski     }
82*b1cdbd2cSJim Jagielski 
SetValueSvxViewLayoutItem83*b1cdbd2cSJim Jagielski     void SetValue( int n )
84*b1cdbd2cSJim Jagielski     {
85*b1cdbd2cSJim Jagielski         fprintf( stderr, "Zoom factor: %d\n", int( n ) );
86*b1cdbd2cSJim Jagielski     }
SetBookModeSvxViewLayoutItem87*b1cdbd2cSJim Jagielski     void SetBookMode( bool )
88*b1cdbd2cSJim Jagielski     {
89*b1cdbd2cSJim Jagielski     }
90*b1cdbd2cSJim Jagielski #if 0 // needed for real SfxPoolItem
91*b1cdbd2cSJim Jagielski     int operator==( const SfxPoolItem& ) const
92*b1cdbd2cSJim Jagielski     {
93*b1cdbd2cSJim Jagielski         return 0;
94*b1cdbd2cSJim Jagielski     }
95*b1cdbd2cSJim Jagielski     SfxPoolItem* Clone( SfxItemPool* ) const
96*b1cdbd2cSJim Jagielski     {
97*b1cdbd2cSJim Jagielski         return 0;
98*b1cdbd2cSJim Jagielski     }
99*b1cdbd2cSJim Jagielski #endif
100*b1cdbd2cSJim Jagielski };
101*b1cdbd2cSJim Jagielski #else /* !TEST_LAYOUT */
102*b1cdbd2cSJim Jagielski #include <svx/zoomitem.hxx>
103*b1cdbd2cSJim Jagielski #include <svx/viewlayoutitem.hxx>
104*b1cdbd2cSJim Jagielski #include <svx/dialmgr.hxx>
105*b1cdbd2cSJim Jagielski #endif /* !TEST_LAYOUT */
106*b1cdbd2cSJim Jagielski #include "zoom_def.hxx"
107*b1cdbd2cSJim Jagielski 
108*b1cdbd2cSJim Jagielski #include <layout/layout-pre.hxx>
109*b1cdbd2cSJim Jagielski 
110*b1cdbd2cSJim Jagielski #if ENABLE_LAYOUT
111*b1cdbd2cSJim Jagielski #undef SVX_RES
112*b1cdbd2cSJim Jagielski #define SVX_RES(x) #x
113*b1cdbd2cSJim Jagielski #undef SfxModalDialog
114*b1cdbd2cSJim Jagielski #define SfxModalDialog( parent, id ) Dialog( parent, "zoom.xml", id )
115*b1cdbd2cSJim Jagielski #endif /* ENABLE_LAYOUT */
116*b1cdbd2cSJim Jagielski 
117*b1cdbd2cSJim Jagielski // static ----------------------------------------------------------------
118*b1cdbd2cSJim Jagielski 
119*b1cdbd2cSJim Jagielski static USHORT pRanges[] =
120*b1cdbd2cSJim Jagielski {
121*b1cdbd2cSJim Jagielski 	SID_ATTR_ZOOM,
122*b1cdbd2cSJim Jagielski 	SID_ATTR_ZOOM,
123*b1cdbd2cSJim Jagielski 	0
124*b1cdbd2cSJim Jagielski };
125*b1cdbd2cSJim Jagielski 
126*b1cdbd2cSJim Jagielski #define SPECIAL_FACTOR	((USHORT)0xFFFF)
127*b1cdbd2cSJim Jagielski 
128*b1cdbd2cSJim Jagielski // class SvxZoomDialog ---------------------------------------------------
129*b1cdbd2cSJim Jagielski 
GetFactor() const130*b1cdbd2cSJim Jagielski USHORT SvxZoomDialog::GetFactor() const
131*b1cdbd2cSJim Jagielski {
132*b1cdbd2cSJim Jagielski     if ( a100Btn.IsChecked() )
133*b1cdbd2cSJim Jagielski 		return 100;
134*b1cdbd2cSJim Jagielski     if ( aUserBtn.IsChecked() )
135*b1cdbd2cSJim Jagielski 		return (USHORT)aUserEdit.GetValue();
136*b1cdbd2cSJim Jagielski 	else
137*b1cdbd2cSJim Jagielski 		return SPECIAL_FACTOR;
138*b1cdbd2cSJim Jagielski }
139*b1cdbd2cSJim Jagielski 
140*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
141*b1cdbd2cSJim Jagielski 
SetFactor(USHORT nNewFactor,USHORT nBtnId)142*b1cdbd2cSJim Jagielski void SvxZoomDialog::SetFactor( USHORT nNewFactor, USHORT nBtnId )
143*b1cdbd2cSJim Jagielski {
144*b1cdbd2cSJim Jagielski #if TEST_LAYOUT
145*b1cdbd2cSJim Jagielski     printf ("\t\t set factor %d\n", (int)nNewFactor);
146*b1cdbd2cSJim Jagielski #endif /* !TEST_LAYOUT */
147*b1cdbd2cSJim Jagielski 	aUserEdit.Disable();
148*b1cdbd2cSJim Jagielski 
149*b1cdbd2cSJim Jagielski 	if ( !nBtnId )
150*b1cdbd2cSJim Jagielski 	{
151*b1cdbd2cSJim Jagielski         if ( nNewFactor == 100 )
152*b1cdbd2cSJim Jagielski 		{
153*b1cdbd2cSJim Jagielski 			a100Btn.Check();
154*b1cdbd2cSJim Jagielski 			a100Btn.GrabFocus();
155*b1cdbd2cSJim Jagielski 		}
156*b1cdbd2cSJim Jagielski         else
157*b1cdbd2cSJim Jagielski 		{
158*b1cdbd2cSJim Jagielski 			aUserBtn.Check();
159*b1cdbd2cSJim Jagielski 			aUserEdit.Enable();
160*b1cdbd2cSJim Jagielski 			aUserEdit.SetValue( (long)nNewFactor );
161*b1cdbd2cSJim Jagielski 			aUserEdit.GrabFocus();
162*b1cdbd2cSJim Jagielski 		}
163*b1cdbd2cSJim Jagielski 	}
164*b1cdbd2cSJim Jagielski 	else
165*b1cdbd2cSJim Jagielski 	{
166*b1cdbd2cSJim Jagielski 		aUserEdit.SetValue( (long)nNewFactor );
167*b1cdbd2cSJim Jagielski 
168*b1cdbd2cSJim Jagielski 		if ( ZOOMBTN_OPTIMAL == nBtnId )
169*b1cdbd2cSJim Jagielski 		{
170*b1cdbd2cSJim Jagielski 			aOptimalBtn.Check();
171*b1cdbd2cSJim Jagielski 			aOptimalBtn.GrabFocus();
172*b1cdbd2cSJim Jagielski 		}
173*b1cdbd2cSJim Jagielski 		else if ( ZOOMBTN_PAGEWIDTH == nBtnId )
174*b1cdbd2cSJim Jagielski 		{
175*b1cdbd2cSJim Jagielski 			aPageWidthBtn.Check();
176*b1cdbd2cSJim Jagielski 			aPageWidthBtn.GrabFocus();
177*b1cdbd2cSJim Jagielski 		}
178*b1cdbd2cSJim Jagielski 		else if ( ZOOMBTN_WHOLEPAGE == nBtnId )
179*b1cdbd2cSJim Jagielski 		{
180*b1cdbd2cSJim Jagielski 			aWholePageBtn.Check();
181*b1cdbd2cSJim Jagielski 			aWholePageBtn.GrabFocus();
182*b1cdbd2cSJim Jagielski 		}
183*b1cdbd2cSJim Jagielski 	}
184*b1cdbd2cSJim Jagielski }
185*b1cdbd2cSJim Jagielski 
186*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
187*b1cdbd2cSJim Jagielski 
SetButtonText(USHORT nBtnId,const String & rNewTxt)188*b1cdbd2cSJim Jagielski void SvxZoomDialog::SetButtonText( USHORT nBtnId, const String& rNewTxt )
189*b1cdbd2cSJim Jagielski {
190*b1cdbd2cSJim Jagielski 	switch ( nBtnId )
191*b1cdbd2cSJim Jagielski 	{
192*b1cdbd2cSJim Jagielski 		case ZOOMBTN_OPTIMAL: // Optimal-Button
193*b1cdbd2cSJim Jagielski 			aOptimalBtn.SetText( rNewTxt );
194*b1cdbd2cSJim Jagielski 			break;
195*b1cdbd2cSJim Jagielski 
196*b1cdbd2cSJim Jagielski 		case ZOOMBTN_PAGEWIDTH: // Seitenbreite-Button
197*b1cdbd2cSJim Jagielski 			aPageWidthBtn.SetText( rNewTxt );
198*b1cdbd2cSJim Jagielski 			break;
199*b1cdbd2cSJim Jagielski 
200*b1cdbd2cSJim Jagielski 		case ZOOMBTN_WHOLEPAGE: // Ganze Seite-Button
201*b1cdbd2cSJim Jagielski 			aWholePageBtn.SetText( rNewTxt );
202*b1cdbd2cSJim Jagielski 			break;
203*b1cdbd2cSJim Jagielski 
204*b1cdbd2cSJim Jagielski 		default:
205*b1cdbd2cSJim Jagielski 			DBG_ERROR( "wrong button number" );
206*b1cdbd2cSJim Jagielski 	}
207*b1cdbd2cSJim Jagielski }
208*b1cdbd2cSJim Jagielski 
209*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
210*b1cdbd2cSJim Jagielski 
HideButton(USHORT nBtnId)211*b1cdbd2cSJim Jagielski void SvxZoomDialog::HideButton( USHORT nBtnId )
212*b1cdbd2cSJim Jagielski {
213*b1cdbd2cSJim Jagielski 	switch ( nBtnId )
214*b1cdbd2cSJim Jagielski 	{
215*b1cdbd2cSJim Jagielski 		case ZOOMBTN_OPTIMAL: // Optimal-Button
216*b1cdbd2cSJim Jagielski 			aOptimalBtn.Hide();
217*b1cdbd2cSJim Jagielski 			break;
218*b1cdbd2cSJim Jagielski 
219*b1cdbd2cSJim Jagielski 		case ZOOMBTN_PAGEWIDTH: // Seitenbreite-Button
220*b1cdbd2cSJim Jagielski 			aPageWidthBtn.Hide();
221*b1cdbd2cSJim Jagielski 			break;
222*b1cdbd2cSJim Jagielski 
223*b1cdbd2cSJim Jagielski 		case ZOOMBTN_WHOLEPAGE: // Ganze Seite-Button
224*b1cdbd2cSJim Jagielski 			aWholePageBtn.Hide();
225*b1cdbd2cSJim Jagielski 			break;
226*b1cdbd2cSJim Jagielski 
227*b1cdbd2cSJim Jagielski 		default:
228*b1cdbd2cSJim Jagielski 			DBG_ERROR( "Falsche Button-Nummer!!!" );
229*b1cdbd2cSJim Jagielski 	}
230*b1cdbd2cSJim Jagielski }
231*b1cdbd2cSJim Jagielski 
232*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
233*b1cdbd2cSJim Jagielski 
SetLimits(USHORT nMin,USHORT nMax)234*b1cdbd2cSJim Jagielski void SvxZoomDialog::SetLimits( USHORT nMin, USHORT nMax )
235*b1cdbd2cSJim Jagielski {
236*b1cdbd2cSJim Jagielski 	DBG_ASSERT( nMin < nMax, "invalid limits" );
237*b1cdbd2cSJim Jagielski     aUserEdit.SetMin( nMin );
238*b1cdbd2cSJim Jagielski 	aUserEdit.SetFirst( nMin );
239*b1cdbd2cSJim Jagielski     aUserEdit.SetMax( nMax );
240*b1cdbd2cSJim Jagielski 	aUserEdit.SetLast( nMax );
241*b1cdbd2cSJim Jagielski }
242*b1cdbd2cSJim Jagielski 
243*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
244*b1cdbd2cSJim Jagielski 
SetSpinSize(USHORT nNewSpin)245*b1cdbd2cSJim Jagielski void SvxZoomDialog::SetSpinSize( USHORT nNewSpin )
246*b1cdbd2cSJim Jagielski {
247*b1cdbd2cSJim Jagielski 	aUserEdit.SetSpinSize( nNewSpin );
248*b1cdbd2cSJim Jagielski }
249*b1cdbd2cSJim Jagielski 
250*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
251*b1cdbd2cSJim Jagielski 
252*b1cdbd2cSJim Jagielski #if TEST_LAYOUT
SvxZoomDialog(Window * pParent)253*b1cdbd2cSJim Jagielski SvxZoomDialog::SvxZoomDialog( Window* pParent ) :
254*b1cdbd2cSJim Jagielski #else /* !TEST_LAYOUT */
255*b1cdbd2cSJim Jagielski SvxZoomDialog::SvxZoomDialog( Window* pParent, const SfxItemSet& rCoreSet ) :
256*b1cdbd2cSJim Jagielski #endif /* !TEST_LAYOUT */
257*b1cdbd2cSJim Jagielski 
258*b1cdbd2cSJim Jagielski 	SfxModalDialog( pParent, SVX_RES( RID_SVXDLG_ZOOM ) ),
259*b1cdbd2cSJim Jagielski 
260*b1cdbd2cSJim Jagielski     aZoomFl         ( this, SVX_RES( FL_ZOOM ) ),
261*b1cdbd2cSJim Jagielski     aOptimalBtn     ( this, SVX_RES( BTN_OPTIMAL ) ),
262*b1cdbd2cSJim Jagielski     aWholePageBtn   ( this, SVX_RES( BTN_WHOLE_PAGE ) ),
263*b1cdbd2cSJim Jagielski     aPageWidthBtn   ( this, SVX_RES( BTN_PAGE_WIDTH ) ),
264*b1cdbd2cSJim Jagielski     a100Btn         ( this, SVX_RES( BTN_100 ) ),
265*b1cdbd2cSJim Jagielski     aUserBtn        ( this, SVX_RES( BTN_USER ) ),
266*b1cdbd2cSJim Jagielski 	aUserEdit       ( this, SVX_RES( ED_USER ) ),
267*b1cdbd2cSJim Jagielski 
268*b1cdbd2cSJim Jagielski     aViewLayoutFl   ( this, SVX_RES( FL_VIEWLAYOUT ) ),
269*b1cdbd2cSJim Jagielski     aAutomaticBtn   ( this, SVX_RES( BTN_AUTOMATIC ) ),
270*b1cdbd2cSJim Jagielski     aSingleBtn      ( this, SVX_RES( BTN_SINGLE ) ),
271*b1cdbd2cSJim Jagielski     aColumnsBtn     ( this, SVX_RES( BTN_COLUMNS ) ),
272*b1cdbd2cSJim Jagielski     aColumnsEdit    ( this, SVX_RES( ED_COLUMNS ) ),
273*b1cdbd2cSJim Jagielski     aBookModeChk    ( this, SVX_RES( CHK_BOOK ) ),
274*b1cdbd2cSJim Jagielski 
275*b1cdbd2cSJim Jagielski     aBottomFl       ( this, SVX_RES( FL_BOTTOM ) ),
276*b1cdbd2cSJim Jagielski     aOKBtn          ( this, SVX_RES( BTN_ZOOM_OK ) ),
277*b1cdbd2cSJim Jagielski 	aCancelBtn      ( this, SVX_RES( BTN_ZOOM_CANCEL ) ),
278*b1cdbd2cSJim Jagielski 	aHelpBtn	    ( this, SVX_RES( BTN_ZOOM_HELP ) ),
279*b1cdbd2cSJim Jagielski 
280*b1cdbd2cSJim Jagielski #if !TEST_LAYOUT
281*b1cdbd2cSJim Jagielski 	rSet		( rCoreSet ),
282*b1cdbd2cSJim Jagielski #endif /* !TEST_LAYOUT */
283*b1cdbd2cSJim Jagielski 	pOutSet     ( NULL ),
284*b1cdbd2cSJim Jagielski 	bModified	( FALSE )
285*b1cdbd2cSJim Jagielski 
286*b1cdbd2cSJim Jagielski {
287*b1cdbd2cSJim Jagielski #if ENABLE_LAYOUT
288*b1cdbd2cSJim Jagielski     SetHelpId (SID_ATTR_ZOOM);
289*b1cdbd2cSJim Jagielski #endif /* ENABLE_LAYOUT */
290*b1cdbd2cSJim Jagielski 	Link aLink = LINK( this, SvxZoomDialog, UserHdl );
291*b1cdbd2cSJim Jagielski     a100Btn.SetClickHdl( aLink );
292*b1cdbd2cSJim Jagielski     aOptimalBtn.SetClickHdl( aLink );
293*b1cdbd2cSJim Jagielski 	aPageWidthBtn.SetClickHdl( aLink );
294*b1cdbd2cSJim Jagielski 	aWholePageBtn.SetClickHdl( aLink );
295*b1cdbd2cSJim Jagielski 	aUserBtn.SetClickHdl( aLink );
296*b1cdbd2cSJim Jagielski 
297*b1cdbd2cSJim Jagielski     Link aViewLayoutLink = LINK( this, SvxZoomDialog, ViewLayoutUserHdl );
298*b1cdbd2cSJim Jagielski     aAutomaticBtn.SetClickHdl( aViewLayoutLink );
299*b1cdbd2cSJim Jagielski     aSingleBtn.SetClickHdl( aViewLayoutLink );
300*b1cdbd2cSJim Jagielski     aColumnsBtn.SetClickHdl( aViewLayoutLink );
301*b1cdbd2cSJim Jagielski 
302*b1cdbd2cSJim Jagielski     Link aViewLayoutSpinLink = LINK( this, SvxZoomDialog, ViewLayoutSpinHdl );
303*b1cdbd2cSJim Jagielski     aColumnsEdit.SetModifyHdl( aViewLayoutSpinLink );
304*b1cdbd2cSJim Jagielski 
305*b1cdbd2cSJim Jagielski     Link aViewLayoutCheckLink = LINK( this, SvxZoomDialog, ViewLayoutCheckHdl );
306*b1cdbd2cSJim Jagielski     aBookModeChk.SetClickHdl( aViewLayoutCheckLink );
307*b1cdbd2cSJim Jagielski 
308*b1cdbd2cSJim Jagielski     aOKBtn.SetClickHdl( LINK( this, SvxZoomDialog, OKHdl ) );
309*b1cdbd2cSJim Jagielski 	aUserEdit.SetModifyHdl( LINK( this, SvxZoomDialog, SpinHdl ) );
310*b1cdbd2cSJim Jagielski 
311*b1cdbd2cSJim Jagielski 	// Default-Werte
312*b1cdbd2cSJim Jagielski 	USHORT nValue = 100;
313*b1cdbd2cSJim Jagielski 	USHORT nMin = 10;
314*b1cdbd2cSJim Jagielski 	USHORT nMax = 1000;
315*b1cdbd2cSJim Jagielski 
316*b1cdbd2cSJim Jagielski #if !TEST_LAYOUT
317*b1cdbd2cSJim Jagielski 	// ggf. erst den alten Wert besorgen
318*b1cdbd2cSJim Jagielski 	const SfxUInt16Item* pOldUserItem = 0;
319*b1cdbd2cSJim Jagielski 	SfxObjectShell* pSh = SfxObjectShell::Current();
320*b1cdbd2cSJim Jagielski 
321*b1cdbd2cSJim Jagielski 	if ( pSh )
322*b1cdbd2cSJim Jagielski 		pOldUserItem = (const SfxUInt16Item*)pSh->GetItem( SID_ATTR_ZOOM_USER );
323*b1cdbd2cSJim Jagielski 
324*b1cdbd2cSJim Jagielski 	if ( pOldUserItem )
325*b1cdbd2cSJim Jagielski 		nValue = pOldUserItem->GetValue();
326*b1cdbd2cSJim Jagielski 
327*b1cdbd2cSJim Jagielski 	// UserEdit initialisieren
328*b1cdbd2cSJim Jagielski 	if ( nMin > nValue )
329*b1cdbd2cSJim Jagielski 		nMin = nValue;
330*b1cdbd2cSJim Jagielski 	if ( nMax < nValue )
331*b1cdbd2cSJim Jagielski 		nMax = nValue;
332*b1cdbd2cSJim Jagielski #endif /* !TEST_LAYOUT */
333*b1cdbd2cSJim Jagielski     aUserEdit.SetMin( nMin );
334*b1cdbd2cSJim Jagielski 	aUserEdit.SetFirst( nMin );
335*b1cdbd2cSJim Jagielski     aUserEdit.SetMax( nMax );
336*b1cdbd2cSJim Jagielski 	aUserEdit.SetLast( nMax );
337*b1cdbd2cSJim Jagielski 	aUserEdit.SetValue( nValue );
338*b1cdbd2cSJim Jagielski 
339*b1cdbd2cSJim Jagielski #if TEST_LAYOUT
340*b1cdbd2cSJim Jagielski     USHORT nZoom = 100;
341*b1cdbd2cSJim Jagielski     SetFactor( nZoom );
342*b1cdbd2cSJim Jagielski #else /* !TEST_LAYOUT */
343*b1cdbd2cSJim Jagielski 	const SfxPoolItem& rItem = rSet.Get( rSet.GetPool()->GetWhich( SID_ATTR_ZOOM ) );
344*b1cdbd2cSJim Jagielski 
345*b1cdbd2cSJim Jagielski 	if ( rItem.ISA(SvxZoomItem) )
346*b1cdbd2cSJim Jagielski 	{
347*b1cdbd2cSJim Jagielski 		const SvxZoomItem& rZoomItem = (const SvxZoomItem&)rItem;
348*b1cdbd2cSJim Jagielski         const USHORT nZoom = rZoomItem.GetValue();
349*b1cdbd2cSJim Jagielski         const SvxZoomType eType = rZoomItem.GetType();
350*b1cdbd2cSJim Jagielski         const USHORT nValSet = rZoomItem.GetValueSet();
351*b1cdbd2cSJim Jagielski 		USHORT nBtnId = 0;
352*b1cdbd2cSJim Jagielski 
353*b1cdbd2cSJim Jagielski 		switch ( eType )
354*b1cdbd2cSJim Jagielski 		{
355*b1cdbd2cSJim Jagielski 			case SVX_ZOOM_OPTIMAL:
356*b1cdbd2cSJim Jagielski 				nBtnId = ZOOMBTN_OPTIMAL;
357*b1cdbd2cSJim Jagielski 				break;
358*b1cdbd2cSJim Jagielski 			case SVX_ZOOM_PAGEWIDTH:
359*b1cdbd2cSJim Jagielski 				nBtnId = ZOOMBTN_PAGEWIDTH;
360*b1cdbd2cSJim Jagielski 				break;
361*b1cdbd2cSJim Jagielski 			case SVX_ZOOM_WHOLEPAGE:
362*b1cdbd2cSJim Jagielski 				nBtnId = ZOOMBTN_WHOLEPAGE;
363*b1cdbd2cSJim Jagielski 				break;
364*b1cdbd2cSJim Jagielski 			case SVX_ZOOM_PERCENT:
365*b1cdbd2cSJim Jagielski 				break;
366*b1cdbd2cSJim Jagielski             case SVX_ZOOM_PAGEWIDTH_NOBORDER:
367*b1cdbd2cSJim Jagielski                 break;
368*b1cdbd2cSJim Jagielski 		}
369*b1cdbd2cSJim Jagielski 
370*b1cdbd2cSJim Jagielski         if ( !(SVX_ZOOM_ENABLE_100 & nValSet) )
371*b1cdbd2cSJim Jagielski 			a100Btn.Disable();
372*b1cdbd2cSJim Jagielski         if ( !(SVX_ZOOM_ENABLE_OPTIMAL & nValSet) )
373*b1cdbd2cSJim Jagielski 			aOptimalBtn.Disable();
374*b1cdbd2cSJim Jagielski 		if ( !(SVX_ZOOM_ENABLE_PAGEWIDTH & nValSet) )
375*b1cdbd2cSJim Jagielski 			aPageWidthBtn.Disable();
376*b1cdbd2cSJim Jagielski 		if ( !(SVX_ZOOM_ENABLE_WHOLEPAGE & nValSet) )
377*b1cdbd2cSJim Jagielski 			aWholePageBtn.Disable();
378*b1cdbd2cSJim Jagielski         SetFactor( nZoom, nBtnId );
379*b1cdbd2cSJim Jagielski 	}
380*b1cdbd2cSJim Jagielski 	else
381*b1cdbd2cSJim Jagielski 	{
382*b1cdbd2cSJim Jagielski         const USHORT nZoom = ( (const SfxUInt16Item&)rItem ).GetValue();
383*b1cdbd2cSJim Jagielski         SetFactor( nZoom );
384*b1cdbd2cSJim Jagielski 	}
385*b1cdbd2cSJim Jagielski 
386*b1cdbd2cSJim Jagielski     const SfxPoolItem* pViewLayoutItem = 0;
387*b1cdbd2cSJim Jagielski     if ( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_VIEWLAYOUT, FALSE, &pViewLayoutItem ) )
388*b1cdbd2cSJim Jagielski     {
389*b1cdbd2cSJim Jagielski         const USHORT nColumns = static_cast<const SvxViewLayoutItem*>(pViewLayoutItem)->GetValue();
390*b1cdbd2cSJim Jagielski         const bool bBookMode  = static_cast<const SvxViewLayoutItem*>(pViewLayoutItem)->IsBookMode();
391*b1cdbd2cSJim Jagielski 
392*b1cdbd2cSJim Jagielski         if ( 0 == nColumns )
393*b1cdbd2cSJim Jagielski         {
394*b1cdbd2cSJim Jagielski             aAutomaticBtn.Check();
395*b1cdbd2cSJim Jagielski             aColumnsEdit.SetValue( 2 );
396*b1cdbd2cSJim Jagielski             aColumnsEdit.Disable();
397*b1cdbd2cSJim Jagielski             aBookModeChk.Disable();
398*b1cdbd2cSJim Jagielski         }
399*b1cdbd2cSJim Jagielski         else if ( 1 == nColumns)
400*b1cdbd2cSJim Jagielski         {
401*b1cdbd2cSJim Jagielski             aSingleBtn.Check();
402*b1cdbd2cSJim Jagielski             aColumnsEdit.SetValue( 2 );
403*b1cdbd2cSJim Jagielski             aColumnsEdit.Disable();
404*b1cdbd2cSJim Jagielski             aBookModeChk.Disable();
405*b1cdbd2cSJim Jagielski         }
406*b1cdbd2cSJim Jagielski         else
407*b1cdbd2cSJim Jagielski         {
408*b1cdbd2cSJim Jagielski             aColumnsBtn.Check();
409*b1cdbd2cSJim Jagielski             if ( !bBookMode )
410*b1cdbd2cSJim Jagielski             {
411*b1cdbd2cSJim Jagielski                 aColumnsEdit.SetValue( nColumns );
412*b1cdbd2cSJim Jagielski                 if ( 0 != nColumns % 2 )
413*b1cdbd2cSJim Jagielski                     aBookModeChk.Disable();
414*b1cdbd2cSJim Jagielski             }
415*b1cdbd2cSJim Jagielski             else
416*b1cdbd2cSJim Jagielski             {
417*b1cdbd2cSJim Jagielski                 aColumnsEdit.SetValue( nColumns );
418*b1cdbd2cSJim Jagielski                 aBookModeChk.Check();
419*b1cdbd2cSJim Jagielski             }
420*b1cdbd2cSJim Jagielski         }
421*b1cdbd2cSJim Jagielski     }
422*b1cdbd2cSJim Jagielski     else
423*b1cdbd2cSJim Jagielski     {
424*b1cdbd2cSJim Jagielski         // hide view layout related controls:
425*b1cdbd2cSJim Jagielski         aViewLayoutFl.Disable();
426*b1cdbd2cSJim Jagielski         aAutomaticBtn.Disable();
427*b1cdbd2cSJim Jagielski         aSingleBtn.Disable();
428*b1cdbd2cSJim Jagielski         aColumnsBtn.Disable();
429*b1cdbd2cSJim Jagielski         aColumnsEdit.Disable();
430*b1cdbd2cSJim Jagielski         aBookModeChk.Disable();
431*b1cdbd2cSJim Jagielski     }
432*b1cdbd2cSJim Jagielski #endif /* !TEST_LAYOUT */
433*b1cdbd2cSJim Jagielski 
434*b1cdbd2cSJim Jagielski 	FreeResource();
435*b1cdbd2cSJim Jagielski }
436*b1cdbd2cSJim Jagielski 
437*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
438*b1cdbd2cSJim Jagielski 
~SvxZoomDialog()439*b1cdbd2cSJim Jagielski SvxZoomDialog::~SvxZoomDialog()
440*b1cdbd2cSJim Jagielski {
441*b1cdbd2cSJim Jagielski 	delete pOutSet;
442*b1cdbd2cSJim Jagielski 	pOutSet = 0;
443*b1cdbd2cSJim Jagielski }
444*b1cdbd2cSJim Jagielski 
445*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
446*b1cdbd2cSJim Jagielski 
GetRanges()447*b1cdbd2cSJim Jagielski USHORT* SvxZoomDialog::GetRanges()
448*b1cdbd2cSJim Jagielski {
449*b1cdbd2cSJim Jagielski 	return pRanges;
450*b1cdbd2cSJim Jagielski }
451*b1cdbd2cSJim Jagielski 
452*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
453*b1cdbd2cSJim Jagielski 
IMPL_LINK(SvxZoomDialog,UserHdl,RadioButton *,pBtn)454*b1cdbd2cSJim Jagielski IMPL_LINK( SvxZoomDialog, UserHdl, RadioButton *, pBtn )
455*b1cdbd2cSJim Jagielski {
456*b1cdbd2cSJim Jagielski #if TEST_LAYOUT
457*b1cdbd2cSJim Jagielski     fprintf( stderr, "SvxZoomDialog::UserHdl\n" );
458*b1cdbd2cSJim Jagielski #endif /* TEST_LAYOUT */
459*b1cdbd2cSJim Jagielski 	bModified |= TRUE;
460*b1cdbd2cSJim Jagielski 
461*b1cdbd2cSJim Jagielski 	if ( pBtn == &aUserBtn )
462*b1cdbd2cSJim Jagielski 	{
463*b1cdbd2cSJim Jagielski 		aUserEdit.Enable();
464*b1cdbd2cSJim Jagielski 		aUserEdit.GrabFocus();
465*b1cdbd2cSJim Jagielski 	}
466*b1cdbd2cSJim Jagielski 	else
467*b1cdbd2cSJim Jagielski 		aUserEdit.Disable();
468*b1cdbd2cSJim Jagielski 	return 0;
469*b1cdbd2cSJim Jagielski }
470*b1cdbd2cSJim Jagielski 
471*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
472*b1cdbd2cSJim Jagielski 
IMPL_LINK(SvxZoomDialog,SpinHdl,MetricField *,EMPTYARG)473*b1cdbd2cSJim Jagielski IMPL_LINK( SvxZoomDialog, SpinHdl, MetricField *, EMPTYARG )
474*b1cdbd2cSJim Jagielski {
475*b1cdbd2cSJim Jagielski 	if ( !aUserBtn.IsChecked() )
476*b1cdbd2cSJim Jagielski 		return 0;
477*b1cdbd2cSJim Jagielski 	bModified |= TRUE;
478*b1cdbd2cSJim Jagielski 	return 0;
479*b1cdbd2cSJim Jagielski }
480*b1cdbd2cSJim Jagielski 
481*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
482*b1cdbd2cSJim Jagielski 
IMPL_LINK(SvxZoomDialog,ViewLayoutUserHdl,RadioButton *,pBtn)483*b1cdbd2cSJim Jagielski IMPL_LINK( SvxZoomDialog, ViewLayoutUserHdl, RadioButton *, pBtn )
484*b1cdbd2cSJim Jagielski {
485*b1cdbd2cSJim Jagielski     bModified |= TRUE;
486*b1cdbd2cSJim Jagielski 
487*b1cdbd2cSJim Jagielski     if ( pBtn == &aAutomaticBtn )
488*b1cdbd2cSJim Jagielski     {
489*b1cdbd2cSJim Jagielski         aColumnsEdit.Disable();
490*b1cdbd2cSJim Jagielski         aBookModeChk.Disable();
491*b1cdbd2cSJim Jagielski     }
492*b1cdbd2cSJim Jagielski     else if ( pBtn == &aSingleBtn )
493*b1cdbd2cSJim Jagielski     {
494*b1cdbd2cSJim Jagielski         aColumnsEdit.Disable();
495*b1cdbd2cSJim Jagielski         aBookModeChk.Disable();
496*b1cdbd2cSJim Jagielski     }
497*b1cdbd2cSJim Jagielski     else if ( pBtn == &aColumnsBtn )
498*b1cdbd2cSJim Jagielski     {
499*b1cdbd2cSJim Jagielski         aColumnsEdit.Enable();
500*b1cdbd2cSJim Jagielski         aColumnsEdit.GrabFocus();
501*b1cdbd2cSJim Jagielski         if ( 0 == aColumnsEdit.GetValue() % 2 )
502*b1cdbd2cSJim Jagielski             aBookModeChk.Enable();
503*b1cdbd2cSJim Jagielski     }
504*b1cdbd2cSJim Jagielski     else
505*b1cdbd2cSJim Jagielski     {
506*b1cdbd2cSJim Jagielski         DBG_ERROR( "Wrong Button" );
507*b1cdbd2cSJim Jagielski         return 0;
508*b1cdbd2cSJim Jagielski     }
509*b1cdbd2cSJim Jagielski 
510*b1cdbd2cSJim Jagielski     return 0;
511*b1cdbd2cSJim Jagielski }
512*b1cdbd2cSJim Jagielski 
513*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
514*b1cdbd2cSJim Jagielski 
IMPL_LINK(SvxZoomDialog,ViewLayoutSpinHdl,MetricField *,pEdt)515*b1cdbd2cSJim Jagielski IMPL_LINK( SvxZoomDialog, ViewLayoutSpinHdl, MetricField *, pEdt )
516*b1cdbd2cSJim Jagielski {
517*b1cdbd2cSJim Jagielski     if ( pEdt == &aColumnsEdit && !aColumnsBtn.IsChecked() )
518*b1cdbd2cSJim Jagielski         return 0;
519*b1cdbd2cSJim Jagielski 
520*b1cdbd2cSJim Jagielski     if ( 0 == aColumnsEdit.GetValue() % 2 )
521*b1cdbd2cSJim Jagielski         aBookModeChk.Enable();
522*b1cdbd2cSJim Jagielski     else
523*b1cdbd2cSJim Jagielski     {
524*b1cdbd2cSJim Jagielski         aBookModeChk.Check( sal_False );
525*b1cdbd2cSJim Jagielski         aBookModeChk.Disable();
526*b1cdbd2cSJim Jagielski     }
527*b1cdbd2cSJim Jagielski 
528*b1cdbd2cSJim Jagielski     bModified |= TRUE;
529*b1cdbd2cSJim Jagielski 
530*b1cdbd2cSJim Jagielski     return 0;
531*b1cdbd2cSJim Jagielski }
532*b1cdbd2cSJim Jagielski 
533*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
534*b1cdbd2cSJim Jagielski 
IMPL_LINK(SvxZoomDialog,ViewLayoutCheckHdl,CheckBox *,pChk)535*b1cdbd2cSJim Jagielski IMPL_LINK( SvxZoomDialog, ViewLayoutCheckHdl, CheckBox *, pChk )
536*b1cdbd2cSJim Jagielski {
537*b1cdbd2cSJim Jagielski     if ( pChk == &aBookModeChk && !aColumnsBtn.IsChecked() )
538*b1cdbd2cSJim Jagielski         return 0;
539*b1cdbd2cSJim Jagielski 
540*b1cdbd2cSJim Jagielski     bModified |= TRUE;
541*b1cdbd2cSJim Jagielski 
542*b1cdbd2cSJim Jagielski     return 0;
543*b1cdbd2cSJim Jagielski }
544*b1cdbd2cSJim Jagielski 
545*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
546*b1cdbd2cSJim Jagielski 
IMPL_LINK(SvxZoomDialog,OKHdl,Button *,pBtn)547*b1cdbd2cSJim Jagielski IMPL_LINK( SvxZoomDialog, OKHdl, Button *, pBtn )
548*b1cdbd2cSJim Jagielski {
549*b1cdbd2cSJim Jagielski 	if ( bModified || &aOKBtn != pBtn )
550*b1cdbd2cSJim Jagielski 	{
551*b1cdbd2cSJim Jagielski #if TEST_LAYOUT
552*b1cdbd2cSJim Jagielski 		SvxZoomItem aZoomItem;
553*b1cdbd2cSJim Jagielski 		SvxViewLayoutItem aViewLayoutItem;
554*b1cdbd2cSJim Jagielski #else /* !TEST_LAYOUT */
555*b1cdbd2cSJim Jagielski         SvxZoomItem aZoomItem( SVX_ZOOM_PERCENT, 0, rSet.GetPool()->GetWhich( SID_ATTR_ZOOM ) );
556*b1cdbd2cSJim Jagielski         SvxViewLayoutItem aViewLayoutItem( 0, false, rSet.GetPool()->GetWhich( SID_ATTR_VIEWLAYOUT ) );
557*b1cdbd2cSJim Jagielski #endif /* !TEST_LAYOUT */
558*b1cdbd2cSJim Jagielski 
559*b1cdbd2cSJim Jagielski 		if ( &aOKBtn == pBtn )
560*b1cdbd2cSJim Jagielski 		{
561*b1cdbd2cSJim Jagielski 			USHORT nFactor = GetFactor();
562*b1cdbd2cSJim Jagielski 
563*b1cdbd2cSJim Jagielski 			if ( SPECIAL_FACTOR == nFactor )
564*b1cdbd2cSJim Jagielski 			{
565*b1cdbd2cSJim Jagielski 				if ( aOptimalBtn.IsChecked() )
566*b1cdbd2cSJim Jagielski                     aZoomItem.SetType( SVX_ZOOM_OPTIMAL );
567*b1cdbd2cSJim Jagielski 				else if ( aPageWidthBtn.IsChecked() )
568*b1cdbd2cSJim Jagielski                     aZoomItem.SetType( SVX_ZOOM_PAGEWIDTH );
569*b1cdbd2cSJim Jagielski 				else if ( aWholePageBtn.IsChecked() )
570*b1cdbd2cSJim Jagielski                     aZoomItem.SetType( SVX_ZOOM_WHOLEPAGE );
571*b1cdbd2cSJim Jagielski 			}
572*b1cdbd2cSJim Jagielski 			else
573*b1cdbd2cSJim Jagielski                 aZoomItem.SetValue( nFactor );
574*b1cdbd2cSJim Jagielski 
575*b1cdbd2cSJim Jagielski             if ( aAutomaticBtn.IsChecked() )
576*b1cdbd2cSJim Jagielski             {
577*b1cdbd2cSJim Jagielski                 aViewLayoutItem.SetValue( 0 );
578*b1cdbd2cSJim Jagielski                 aViewLayoutItem.SetBookMode( false );
579*b1cdbd2cSJim Jagielski             }
580*b1cdbd2cSJim Jagielski             if ( aSingleBtn.IsChecked() )
581*b1cdbd2cSJim Jagielski             {
582*b1cdbd2cSJim Jagielski                 aViewLayoutItem.SetValue( 1 );
583*b1cdbd2cSJim Jagielski                 aViewLayoutItem.SetBookMode( false );
584*b1cdbd2cSJim Jagielski             }
585*b1cdbd2cSJim Jagielski             else if ( aColumnsBtn.IsChecked() )
586*b1cdbd2cSJim Jagielski             {
587*b1cdbd2cSJim Jagielski                 aViewLayoutItem.SetValue( static_cast<USHORT>(aColumnsEdit.GetValue()) );
588*b1cdbd2cSJim Jagielski                 aViewLayoutItem.SetBookMode( aBookModeChk.IsChecked() );
589*b1cdbd2cSJim Jagielski             }
590*b1cdbd2cSJim Jagielski         }
591*b1cdbd2cSJim Jagielski 		else
592*b1cdbd2cSJim Jagielski 		{
593*b1cdbd2cSJim Jagielski 			DBG_ERROR( "Wrong Button" );
594*b1cdbd2cSJim Jagielski 			return 0;
595*b1cdbd2cSJim Jagielski 		}
596*b1cdbd2cSJim Jagielski #if !TEST_LAYOUT
597*b1cdbd2cSJim Jagielski 		pOutSet = new SfxItemSet( rSet );
598*b1cdbd2cSJim Jagielski         pOutSet->Put( aZoomItem );
599*b1cdbd2cSJim Jagielski 
600*b1cdbd2cSJim Jagielski         // don't set attribute in case the whole viewlayout stuff is disabled:
601*b1cdbd2cSJim Jagielski         if ( aViewLayoutFl.IsEnabled() )
602*b1cdbd2cSJim Jagielski             pOutSet->Put( aViewLayoutItem );
603*b1cdbd2cSJim Jagielski 
604*b1cdbd2cSJim Jagielski 		// Wert aus dem UserEdit "uber den Dialog hinaus merken
605*b1cdbd2cSJim Jagielski 		SfxObjectShell* pSh = SfxObjectShell::Current();
606*b1cdbd2cSJim Jagielski 
607*b1cdbd2cSJim Jagielski 		if ( pSh )
608*b1cdbd2cSJim Jagielski 			pSh->PutItem( SfxUInt16Item( SID_ATTR_ZOOM_USER,
609*b1cdbd2cSJim Jagielski 										 (UINT16)aUserEdit.GetValue() ) );
610*b1cdbd2cSJim Jagielski #endif /* !TEST_LAYOUT */
611*b1cdbd2cSJim Jagielski 		EndDialog( RET_OK );
612*b1cdbd2cSJim Jagielski 	}
613*b1cdbd2cSJim Jagielski 	else
614*b1cdbd2cSJim Jagielski 		EndDialog( RET_CANCEL );
615*b1cdbd2cSJim Jagielski 	return 0;
616*b1cdbd2cSJim Jagielski }
617*b1cdbd2cSJim Jagielski 
618*b1cdbd2cSJim Jagielski 
619