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