diff -uNr old/sc/sdi/prevwsh.sdi new/sc/sdi/prevwsh.sdi --- old/sc/sdi/prevwsh.sdi 2008-02-14 18:18:00.000000000 +0800 +++ new/sc/sdi/prevwsh.sdi 2008-07-09 11:15:10.000000000 +0800 @@ -47,6 +47,7 @@ SID_PREVIEW_FIRST [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ] SID_PREVIEW_LAST [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ] SID_PREVIEW_MARGIN [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ] + SID_ATTR_ZOOMSLIDER [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ] SfxVoidItem GoUpBlock SID_CURSORPAGEUP ( diff -uNr old/sc/sdi/tabvwsh.sdi new/sc/sdi/tabvwsh.sdi --- old/sc/sdi/tabvwsh.sdi 2007-07-08 15:23:36.000000000 +0800 +++ new/sc/sdi/tabvwsh.sdi 2008-07-01 15:36:46.000000000 +0800 @@ -175,6 +175,7 @@ // hat zwar ein SW im Namen, wird aber im Calc auch gebraucht SID_CREATE_SW_DRAWVIEW [ ExecMethod = Execute; ] SID_ATTR_ZOOM [ ExecMethod = Execute; StateMethod = GetState; ] + SID_ATTR_ZOOMSLIDER [ ExecMethod = Execute; StateMethod = GetState; ] FID_INSERT_FILE [ ExecMethod = Execute; StateMethod = GetState; ] // Save / SaveAs ueberladen, um die Eingabe abzuschliessen diff -uNr old/sc/source/ui/app/scdll.cxx new/sc/source/ui/app/scdll.cxx --- old/sc/source/ui/app/scdll.cxx 2008-02-06 02:41:52.000000000 +0800 +++ new/sc/source/ui/app/scdll.cxx 2008-07-01 15:39:10.000000000 +0800 @@ -126,6 +126,9 @@ #endif #include #include "tbinsert.hxx" +#ifndef _ZOOMSLIDER_STBCONTRL_HXX +#include +#endif #include // Child-Windows @@ -286,6 +289,7 @@ SvxInsertStatusBarControl ::RegisterControl(SID_ATTR_INSERT, pMod); SvxSelectionModeControl ::RegisterControl(SID_STATUS_SELMODE, pMod); SvxZoomStatusBarControl ::RegisterControl(SID_ATTR_ZOOM, pMod); + SvxZoomSliderControl ::RegisterControl(SID_ATTR_ZOOMSLIDER, pMod); SvxModifyControl ::RegisterControl(SID_DOC_MODIFIED, pMod); XmlSecStatusBarControl ::RegisterControl( SID_SIGNATURE, pMod ); @@ -401,6 +405,10 @@ SvxZoomStatusBarControl::GetDefItemWidth(rStatusBar), SIB_CENTER ); + // ZoomSlider + rStatusBar.InsertItem( SID_ATTR_ZOOMSLIDER, + TEXT_WIDTH( String().Fill( 15, 'X%' ) ), + SIB_CENTER ); // Einfuege-/Ueberschreibmodus rStatusBar.InsertItem( SID_ATTR_INSERT, SvxInsertStatusBarControl::GetDefItemWidth(rStatusBar), diff -uNr old/sc/source/ui/app/scmod.cxx new/sc/source/ui/app/scmod.cxx --- old/sc/source/ui/app/scmod.cxx 2008-03-07 23:10:48.000000000 +0800 +++ new/sc/source/ui/app/scmod.cxx 2008-07-01 15:39:42.000000000 +0800 @@ -80,6 +80,9 @@ #include #include #include +#ifndef _ZOOMSLIDER_STBCONTRL_HXX +#include +#endif #include #include #include @@ -399,12 +402,6 @@ SIB_LEFT|SIB_AUTOSIZE ); rStatusBar.SetHelpId( SID_STATUS_PAGESTYLE, SID_STATUS_PAGESTYLE ); - // Ma"sstab - rStatusBar.InsertItem( SID_ATTR_ZOOM, - SvxZoomStatusBarControl::GetDefItemWidth(rStatusBar), - SIB_CENTER ); - rStatusBar.SetHelpId( SID_ATTR_ZOOM, SID_ATTR_ZOOM ); - // Einfuege-/Ueberschreibmodus rStatusBar.InsertItem( SID_ATTR_INSERT, SvxInsertStatusBarControl::GetDefItemWidth(rStatusBar), @@ -433,6 +430,18 @@ SvxPosSizeStatusBarControl::GetDefItemWidth(rStatusBar), SIB_AUTOSIZE|SIB_LEFT|SIB_USERDRAW); rStatusBar.SetHelpId( SID_ATTR_SIZE, SID_ATTR_SIZE ); + + // Ma"sstab + rStatusBar.InsertItem( SID_ATTR_ZOOM, + SvxZoomStatusBarControl::GetDefItemWidth(rStatusBar), + SIB_CENTER ); + rStatusBar.SetHelpId( SID_ATTR_ZOOM, SID_ATTR_ZOOM ); + + // ZoomSlider + rStatusBar.InsertItem( SID_ATTR_ZOOMSLIDER, + TEXT_WIDTH( String().Fill( 15, 'X%' ) ), + SIB_CENTER ); + rStatusBar.SetHelpId( SID_ATTR_ZOOMSLIDER, SID_ATTR_ZOOMSLIDER ); } #undef TEXT_WIDTH diff -uNr old/sc/source/ui/unoobj/viewuno.cxx new/sc/source/ui/unoobj/viewuno.cxx --- old/sc/source/ui/unoobj/viewuno.cxx 2008-02-21 18:06:00.000000000 +0800 +++ new/sc/source/ui/unoobj/viewuno.cxx 2008-07-01 15:40:08.000000000 +0800 @@ -1436,6 +1436,7 @@ pViewSh->PaintTop(); pViewSh->PaintLeft(); pViewSh->GetViewFrame()->GetBindings().Invalidate( SID_ATTR_ZOOM ); + pViewSh->GetViewFrame()->GetBindings().Invalidate( SID_ATTR_ZOOMSLIDER ); } } diff -uNr old/sc/source/ui/view/preview.cxx new/sc/source/ui/view/preview.cxx --- old/sc/source/ui/view/preview.cxx 2008-02-14 18:18:32.000000000 +0800 +++ new/sc/source/ui/view/preview.cxx 2008-07-09 11:19:04.000000000 +0800 @@ -974,6 +974,7 @@ rBindings.Invalidate(SID_ATTR_ZOOM); rBindings.Invalidate(SID_PREVIEW_ZOOMIN); rBindings.Invalidate(SID_PREVIEW_ZOOMOUT); + rBindings.Invalidate(SID_ATTR_ZOOMSLIDER); } IMPL_STATIC_LINK( ScPreview, InvalidateHdl, void*, EMPTYARG ) diff -uNr old/sc/source/ui/view/prevwsh.cxx new/sc/source/ui/view/prevwsh.cxx --- old/sc/source/ui/view/prevwsh.cxx 2008-03-07 23:11:14.000000000 +0800 +++ new/sc/source/ui/view/prevwsh.cxx 2008-07-09 11:21:04.000000000 +0800 @@ -718,6 +718,20 @@ rReq.Done(); } break; + case SID_ATTR_ZOOMSLIDER: + { + const SfxPoolItem* pItem; + if( pReqArgs && SFX_ITEM_SET == pReqArgs->GetItemState( SID_ATTR_ZOOMSLIDER, TRUE, &pItem ) ) + { + const USHORT nCurrentZoom = ((const SvxZoomSliderItem*)pItem)->GetValue(); + if( nCurrentZoom ) + { + pPreview->SetZoom( nCurrentZoom ); + rReq.Done(); + } + } + } + break; case SID_PRINTPREVIEW: case SID_PREVIEW_CLOSE: // print preview is now always in the same frame as the tab view @@ -793,6 +807,13 @@ rSet.Put( aZoom ); } break; + case SID_ATTR_ZOOMSLIDER: + { + SvxZoomSliderItem aZoomSliderItem( nZoom, MINZOOM, MAXZOOM, SID_ATTR_ZOOMSLIDER ); + aZoomSliderItem.AddSnappingPoint( 100 ); + rSet.Put( aZoomSliderItem ); + } + break; case SID_STATUS_DOCPOS: rSet.Put( SfxStringItem( nWhich, pPreview->GetPosString() ) ); break; diff -uNr old/sc/source/ui/view/tabview.cxx new/sc/source/ui/view/tabview.cxx --- old/sc/source/ui/view/tabview.cxx 2008-02-21 18:06:08.000000000 +0800 +++ new/sc/source/ui/view/tabview.cxx 2008-07-01 15:40:40.000000000 +0800 @@ -922,8 +922,8 @@ PaintGrid(); PaintTop(); PaintLeft(); - aViewData.GetViewShell()->GetViewFrame()->GetBindings(). - Invalidate( SID_ATTR_ZOOM ); + aViewData.GetViewShell()->GetViewFrame()->GetBindings().Invalidate( SID_ATTR_ZOOM ); + aViewData.GetViewShell()->GetViewFrame()->GetBindings().Invalidate( SID_ATTR_ZOOMSLIDER ); } bInZoomUpdate = FALSE; } @@ -1208,6 +1208,7 @@ PaintTop(); PaintLeft(); aViewData.GetBindings().Invalidate( SID_ATTR_ZOOM ); + aViewData.GetBindings().Invalidate( SID_ATTR_ZOOMSLIDER ); } bDone = TRUE; diff -uNr old/sc/source/ui/view/tabview3.cxx new/sc/source/ui/view/tabview3.cxx --- old/sc/source/ui/view/tabview3.cxx 2008-02-21 18:06:08.000000000 +0800 +++ new/sc/source/ui/view/tabview3.cxx 2008-07-01 15:40:56.000000000 +0800 @@ -2815,6 +2815,7 @@ SfxBindings& rBindings = aViewData.GetBindings(); rBindings.Invalidate( SID_ATTR_ZOOM ); + rBindings.Invalidate( SID_ATTR_ZOOMSLIDER ); HideNoteMarker(); diff -uNr old/sc/source/ui/view/tabvwsh3.cxx new/sc/source/ui/view/tabvwsh3.cxx --- old/sc/source/ui/view/tabvwsh3.cxx 2008-01-30 21:32:58.000000000 +0800 +++ new/sc/source/ui/view/tabvwsh3.cxx 2008-07-01 15:41:16.000000000 +0800 @@ -85,6 +85,9 @@ #define _SVSTDARR_ULONGS #include +#ifndef _SVX_ZOOMSLIDERITEM_HXX +#include +#endif #include //CHINA001 #include //CHINA001 #include "scabstdlg.hxx" //CHINA001 @@ -756,6 +759,34 @@ } break; + case SID_ATTR_ZOOMSLIDER: + { + const SfxPoolItem* pItem = NULL; + BOOL bSyncZoom = SC_MOD()->GetAppOptions().GetSynchronizeZoom(); + if ( pReqArgs && pReqArgs->GetItemState(SID_ATTR_ZOOMSLIDER, TRUE, &pItem) == SFX_ITEM_SET ) + { + const USHORT nCurrentZoom = ((const SvxZoomSliderItem *)pItem)->GetValue(); + if( nCurrentZoom ) + { + if (!GetViewData()->IsPagebreakMode()) + { + ScAppOptions aNewOpt = pScMod->GetAppOptions(); + aNewOpt.SetZoom( nCurrentZoom ); + aNewOpt.SetZoomType( GetZoomType() ); + pScMod->SetAppOptions( aNewOpt ); + } + Fraction aFract( nCurrentZoom,100 ); + SetZoom( aFract, aFract, bSyncZoom ); + PaintGrid(); + PaintTop(); + PaintLeft(); + rBindings.Invalidate( SID_ATTR_ZOOMSLIDER ); + rReq.Done(); + } + } + } + break; + //---------------------------------------------------------------- case FID_TAB_SELECTALL: diff -uNr old/sc/source/ui/view/tabvwsha.cxx new/sc/source/ui/view/tabvwsha.cxx --- old/sc/source/ui/view/tabvwsha.cxx 2008-03-07 23:11:14.000000000 +0800 +++ new/sc/source/ui/view/tabvwsha.cxx 2008-07-01 15:41:34.000000000 +0800 @@ -49,6 +49,9 @@ #include #include #include +#ifndef _SVX_ZOOMSLIDERITEM_HXX +#include +#endif #include #include #include @@ -290,6 +293,25 @@ } break; + case SID_ATTR_ZOOMSLIDER: + { + if ( bOle ) + rSet.DisableItem( nWhich ); + else + { + const Fraction& rOldY = GetViewData()->GetZoomY(); + USHORT nCurrentZoom = (USHORT)(( rOldY.GetNumerator() * 100 ) / rOldY.GetDenominator()); + + if( nCurrentZoom ) + { + SvxZoomSliderItem aZoomSliderItem( nCurrentZoom, MINZOOM, MAXZOOM, SID_ATTR_ZOOMSLIDER ); + aZoomSliderItem.AddSnappingPoint( 100 ); + rSet.Put( aZoomSliderItem ); + } + } + } + break; + case FID_TOGGLESYNTAX: rSet.Put(SfxBoolItem(nWhich, GetViewData()->IsSyntaxMode())); break; diff -uNr old/sc/uiconfig/scalc/statusbar/statusbar.xml new/sc/uiconfig/scalc/statusbar/statusbar.xml --- old/sc/uiconfig/scalc/statusbar/statusbar.xml 2005-12-16 16:09:08.000000000 +0800 +++ new/sc/uiconfig/scalc/statusbar/statusbar.xml 2008-07-01 15:41:54.000000000 +0800 @@ -3,10 +3,11 @@ - + + \ No newline at end of file