Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <string>
21 :
22 : #include "hintids.hxx"
23 : #include <vcl/svapp.hxx>
24 : #include <sfx2/dispatch.hxx>
25 : #include <svx/ruler.hxx>
26 : #include <editeng/lrspitem.hxx>
27 : #include <svl/srchitem.hxx>
28 : #include <svl/stritem.hxx>
29 : #include <sfx2/request.hxx>
30 : #include <swmodule.hxx>
31 : #include <view.hxx>
32 : #include <wrtsh.hxx>
33 : #include <docsh.hxx>
34 : #include <viewopt.hxx>
35 : #include <frmatr.hxx>
36 : #include <wdocsh.hxx>
37 : #include <uitool.hxx>
38 : #include <edtwin.hxx>
39 : #include <pagedesc.hxx>
40 : #include <IMark.hxx>
41 : #include <fldbas.hxx>
42 : #include <workctrl.hxx>
43 : #include <usrpref.hxx>
44 : #include <scroll.hxx>
45 : #include <wview.hxx>
46 :
47 : #include <cmdid.h>
48 : #include <view.hrc>
49 : #include <ribbar.hrc>
50 : #include <helpid.h>
51 : #include <globals.hrc>
52 :
53 : #include <IDocumentSettingAccess.hxx>
54 : #include <PostItMgr.hxx>
55 :
56 : sal_uInt16 SwView::m_nMoveType = NID_PGE;
57 : sal_Int32 SwView::m_nActMark = 0;
58 :
59 : using namespace ::com::sun::star::uno;
60 : using namespace ::com::sun::star::frame;
61 :
62 0 : void SwView::SetZoom( SvxZoomType eZoomType, short nFactor, sal_Bool bViewOnly )
63 : {
64 0 : bool const bCrsrIsVisible(m_pWrtShell->IsCrsrVisible());
65 0 : _SetZoom( GetEditWin().GetOutputSizePixel(), eZoomType, nFactor, bViewOnly );
66 : // fdo#40465 force the cursor to stay in view whilst zooming
67 0 : if (bCrsrIsVisible)
68 0 : m_pWrtShell->ShowCrsr();
69 0 : }
70 :
71 0 : void SwView::_SetZoom( const Size &rEditSize, SvxZoomType eZoomType,
72 : short nFactor, sal_Bool bViewOnly )
73 : {
74 0 : sal_Bool bUnLockView = !m_pWrtShell->IsViewLocked();
75 0 : m_pWrtShell->LockView( sal_True );
76 0 : m_pWrtShell->LockPaint();
77 :
78 : {
79 0 : SwActContext aActContext(m_pWrtShell);
80 :
81 0 : long nFac = nFactor;
82 :
83 0 : sal_Bool bWeb = 0 != PTR_CAST(SwWebView, this);
84 0 : SwMasterUsrPref *pUsrPref = (SwMasterUsrPref*)SW_MOD()->GetUsrPref(bWeb);
85 :
86 0 : const SwPageDesc &rDesc = m_pWrtShell->GetPageDesc( m_pWrtShell->GetCurPageDesc() );
87 0 : const SvxLRSpaceItem &rLRSpace = rDesc.GetMaster().GetLRSpace();
88 0 : const SwViewOption *pOpt = m_pWrtShell->GetViewOptions();
89 0 : long lLeftMargin = 0;
90 :
91 0 : if( eZoomType != SVX_ZOOM_PERCENT )
92 : {
93 0 : const bool bAutomaticViewLayout = 0 == pOpt->GetViewLayoutColumns();
94 :
95 0 : const SwRect aPageRect( m_pWrtShell->GetAnyCurRect( RECT_PAGE_CALC ) );
96 0 : const SwRect aRootRect( m_pWrtShell->GetAnyCurRect( RECT_PAGES_AREA ) );
97 0 : Size aPageSize( aPageRect.SSize() );
98 0 : Size aRootSize( aRootRect.SSize() );
99 :
100 : //mod #i6193# added sidebar width
101 0 : SwPostItMgr* pPostItMgr = GetPostItMgr();
102 0 : if (pPostItMgr->HasNotes() && pPostItMgr->ShowNotes())
103 0 : aPageSize.Width() += pPostItMgr->GetSidebarWidth() + pPostItMgr->GetSidebarBorderWidth();
104 :
105 0 : const MapMode aTmpMap( MAP_TWIP );
106 0 : const Size aWindowSize( GetEditWin().PixelToLogic( rEditSize, aTmpMap ) );
107 :
108 0 : if( nsUseOnPage::PD_MIRROR == rDesc.GetUseOn() ) // mirrored pages
109 : {
110 0 : const SvxLRSpaceItem &rLeftLRSpace = rDesc.GetLeft().GetLRSpace();
111 0 : aPageSize.Width() += std::abs( long(rLeftLRSpace.GetLeft()) - long(rLRSpace.GetLeft()) );
112 : }
113 :
114 0 : if( SVX_ZOOM_OPTIMAL == eZoomType )
115 : {
116 0 : if (!pPostItMgr->HasNotes() || !pPostItMgr->ShowNotes())
117 0 : aPageSize.Width() -= ( rLRSpace.GetLeft() + rLRSpace.GetRight() + nLeftOfst * 2 );
118 0 : lLeftMargin = long(rLRSpace.GetLeft()) + DOCUMENTBORDER + nLeftOfst;
119 0 : nFac = aWindowSize.Width() * 100 / aPageSize.Width();
120 : }
121 0 : else if(SVX_ZOOM_WHOLEPAGE == eZoomType || SVX_ZOOM_PAGEWIDTH == eZoomType )
122 : {
123 0 : const long nOf = DOCUMENTBORDER * 2L;
124 0 : long nTmpWidth = bAutomaticViewLayout ? aPageSize.Width() : aRootSize.Width();
125 0 : nTmpWidth += nOf;
126 0 : aPageSize.Height() += nOf;
127 0 : nFac = aWindowSize.Width() * 100 / nTmpWidth;
128 :
129 0 : if ( SVX_ZOOM_WHOLEPAGE == eZoomType )
130 : {
131 0 : long nVisPercent = aWindowSize.Height() * 100 / aPageSize.Height();
132 0 : nFac = std::min( nFac, nVisPercent );
133 0 : }
134 : }
135 : else
136 : {
137 0 : const long nTmpWidth = bAutomaticViewLayout ? aPageSize.Width() : aRootSize.Width();
138 0 : nFac = aWindowSize.Width() * 100 / nTmpWidth;
139 0 : }
140 : }
141 :
142 0 : nFac = std::max( long( MINZOOM ), nFac );
143 :
144 0 : SwViewOption aOpt( *pOpt );
145 0 : if ( !GetViewFrame()->GetFrame().IsInPlace() )
146 : {
147 : //Update MasterUsrPrefs and after that update the ViewOptions of the current View.
148 0 : if ( !bViewOnly &&
149 0 : (sal_uInt16(nFac) != pUsrPref->GetZoom() ||
150 0 : sal_uInt8 (eZoomType) != pUsrPref->GetZoomType()) )
151 : {
152 0 : pUsrPref->SetZoom ( sal_uInt16(nFac) );
153 0 : pUsrPref->SetZoomType( eZoomType );
154 0 : SW_MOD()->ApplyUsrPref( *pUsrPref,
155 : bViewOnly ? this: 0,
156 0 : bViewOnly ? VIEWOPT_DEST_VIEW_ONLY : 0 );
157 0 : pUsrPref->SetModified();
158 : }
159 0 : if ( pOpt->GetZoom() != (sal_uInt16) nFac )
160 : {
161 0 : aOpt.SetZoom ( sal_uInt16(nFac) );
162 0 : aOpt.SetReadonly(pOpt->IsReadonly());
163 0 : m_pWrtShell->ApplyViewOptions( aOpt );
164 : }
165 0 : if ( eZoomType != SVX_ZOOM_PERCENT )
166 : {
167 0 : Point aPos;
168 :
169 0 : if ( eZoomType == SVX_ZOOM_WHOLEPAGE )
170 0 : aPos.Y() = m_pWrtShell->GetAnyCurRect(RECT_PAGE).Top() - DOCUMENTBORDER;
171 : else
172 : {
173 : // Make sure that the cursor is in the visible range, so that
174 : // the scrolling will be performed only once.
175 0 : aPos.X() = lLeftMargin;
176 0 : const SwRect &rCharRect = m_pWrtShell->GetCharRect();
177 0 : if ( rCharRect.Top() > GetVisArea().Bottom() ||
178 0 : rCharRect.Bottom() < aPos.Y() )
179 0 : aPos.Y() = rCharRect.Top() - rCharRect.Height();
180 : else
181 0 : aPos.Y() = GetVisArea().Top();
182 : }
183 0 : SetVisArea( aPos );
184 : }
185 : // Compromise solution - Under certain circumstances SetZoom is called
186 : // in CalcVisAreas again and thus be set wrong values.
187 0 : ((SwViewOption*)m_pWrtShell->GetViewOptions())->SetZoomType( eZoomType );
188 0 : CalcVisArea( rEditSize ); // for the recalculation of the viewable area
189 : }
190 0 : else if ( sal_uInt16(nFac) != pOpt->GetZoom() )
191 : {
192 0 : aOpt.SetZoom ( sal_uInt16(nFac) );
193 0 : m_pWrtShell->ApplyViewOptions( aOpt );
194 : }
195 :
196 0 : const Fraction aFrac( nFac, 100 );
197 0 : m_pVRuler->SetZoom( aFrac );
198 0 : m_pVRuler->ForceUpdate();
199 0 : m_pHRuler->SetZoom( aFrac );
200 0 : m_pHRuler->ForceUpdate();
201 0 : ((SwViewOption*)m_pWrtShell->GetViewOptions())->SetZoomType( eZoomType );
202 : }
203 0 : m_pWrtShell->UnlockPaint();
204 0 : if( bUnLockView )
205 0 : m_pWrtShell->LockView( sal_False );
206 0 : }
207 :
208 0 : void SwView::SetViewLayout( sal_uInt16 nColumns, bool bBookMode, sal_Bool bViewOnly )
209 : {
210 0 : const sal_Bool bUnLockView = !m_pWrtShell->IsViewLocked();
211 0 : m_pWrtShell->LockView( sal_True );
212 0 : m_pWrtShell->LockPaint();
213 :
214 : {
215 :
216 0 : SwActContext aActContext(m_pWrtShell);
217 :
218 0 : if ( !GetViewFrame()->GetFrame().IsInPlace() && !bViewOnly )
219 : {
220 0 : const sal_Bool bWeb = 0 != PTR_CAST(SwWebView, this);
221 0 : SwMasterUsrPref *pUsrPref = (SwMasterUsrPref*)SW_MOD()->GetUsrPref(bWeb);
222 :
223 : // Update MasterUsrPrefs and after that update the ViewOptions of the current View.
224 0 : if ( nColumns != pUsrPref->GetViewLayoutColumns() ||
225 0 : bBookMode != pUsrPref->IsViewLayoutBookMode() )
226 : {
227 0 : pUsrPref->SetViewLayoutColumns( nColumns );
228 0 : pUsrPref->SetViewLayoutBookMode( bBookMode );
229 0 : SW_MOD()->ApplyUsrPref( *pUsrPref,
230 : bViewOnly ? this: 0,
231 0 : bViewOnly ? VIEWOPT_DEST_VIEW_ONLY : 0 );
232 0 : pUsrPref->SetModified();
233 : }
234 : }
235 :
236 0 : const SwViewOption *pOpt = m_pWrtShell->GetViewOptions();
237 :
238 0 : if ( nColumns != pOpt->GetViewLayoutColumns() ||
239 0 : bBookMode != pOpt->IsViewLayoutBookMode() )
240 : {
241 0 : SwViewOption aOpt( *pOpt );
242 0 : aOpt.SetViewLayoutColumns( nColumns );
243 0 : aOpt.SetViewLayoutBookMode( bBookMode );
244 0 : m_pWrtShell->ApplyViewOptions( aOpt );
245 : }
246 :
247 0 : m_pVRuler->ForceUpdate();
248 0 : m_pHRuler->ForceUpdate();
249 :
250 : }
251 :
252 0 : m_pWrtShell->UnlockPaint();
253 0 : if( bUnLockView )
254 0 : m_pWrtShell->LockView( sal_False );
255 :
256 0 : SfxBindings& rBnd = GetViewFrame()->GetBindings();
257 0 : rBnd.Invalidate( SID_ATTR_VIEWLAYOUT );
258 0 : rBnd.Invalidate( SID_ATTR_ZOOMSLIDER);
259 0 : }
260 :
261 : // Scrollbar - Handler
262 :
263 0 : IMPL_LINK( SwView, WindowChildEventListener, VclSimpleEvent*, pEvent )
264 : {
265 : OSL_ENSURE( pEvent && pEvent->ISA( VclWindowEvent ), "Unknown WindowEvent!" );
266 0 : if ( pEvent && pEvent->ISA( VclWindowEvent ) )
267 : {
268 0 : VclWindowEvent *pVclEvent = static_cast< VclWindowEvent * >( pEvent );
269 : OSL_ENSURE( pVclEvent->GetWindow(), "Window???" );
270 0 : Window* pChildWin = static_cast< Window* >( pVclEvent->GetData() );
271 :
272 0 : switch ( pVclEvent->GetId() )
273 : {
274 : case VCLEVENT_WINDOW_HIDE:
275 0 : if( pChildWin == m_pHScrollbar )
276 0 : ShowHScrollbar( sal_False );
277 0 : else if( pChildWin == m_pVScrollbar )
278 0 : ShowVScrollbar( sal_False );
279 0 : break;
280 : case VCLEVENT_WINDOW_SHOW:
281 0 : if( pChildWin == m_pHScrollbar )
282 0 : ShowHScrollbar( sal_True );
283 0 : else if( pChildWin == m_pVScrollbar )
284 0 : ShowVScrollbar( sal_True );
285 0 : break;
286 : }
287 : }
288 :
289 0 : return 0;
290 : }
291 :
292 0 : int SwView::_CreateScrollbar( sal_Bool bHori )
293 : {
294 0 : Window *pMDI = &GetViewFrame()->GetWindow();
295 0 : SwScrollbar** ppScrollbar = bHori ? &m_pHScrollbar : &m_pVScrollbar;
296 :
297 : OSL_ENSURE( !*ppScrollbar, "check beforehand!" );
298 :
299 0 : *ppScrollbar = new SwScrollbar( pMDI, bHori );
300 0 : UpdateScrollbars();
301 0 : if(bHori)
302 0 : (*ppScrollbar)->SetScrollHdl( LINK( this, SwView, EndScrollHdl ));
303 : else
304 0 : (*ppScrollbar)->SetScrollHdl( LINK( this, SwView, ScrollHdl ));
305 0 : (*ppScrollbar)->SetEndScrollHdl( LINK( this, SwView, EndScrollHdl ));
306 :
307 0 : (*ppScrollbar)->EnableDrag( true );
308 :
309 0 : if(GetWindow())
310 0 : InvalidateBorder();
311 :
312 : // The scrollbar has to be tested again, as in InvalidateBorder possibly
313 : // the scrollbar has been deleted.
314 0 : if ( !m_bShowAtResize && (*ppScrollbar))
315 0 : (*ppScrollbar)->ExtendedShow();
316 :
317 0 : return 1;
318 : }
319 :
320 0 : IMPL_STATIC_LINK( SwView, MoveNavigationHdl, bool *, pbNext )
321 : {
322 0 : if ( !pbNext )
323 0 : return 0;
324 0 : const bool bNext = *pbNext;
325 0 : SwWrtShell& rSh = pThis->GetWrtShell();
326 0 : switch( m_nMoveType )
327 : {
328 : case NID_PGE:
329 0 : bNext ? pThis->PhyPageDown() : pThis->PhyPageUp();
330 0 : break;
331 : case NID_TBL :
332 0 : rSh.EnterStdMode();
333 0 : if(bNext)
334 0 : rSh.MoveTable(fnTableNext, fnTableStart);
335 : else
336 0 : rSh.MoveTable(fnTablePrev, fnTableStart);
337 0 : break;
338 : case NID_FRM :
339 : case NID_GRF:
340 : case NID_OLE:
341 : {
342 0 : sal_uInt16 eType = GOTOOBJ_FLY_FRM;
343 0 : if(m_nMoveType == NID_GRF)
344 0 : eType = GOTOOBJ_FLY_GRF;
345 0 : else if(m_nMoveType == NID_OLE)
346 0 : eType = GOTOOBJ_FLY_OLE;
347 : sal_Bool bSuccess = bNext ?
348 0 : rSh.GotoNextFly(eType) :
349 0 : rSh.GotoPrevFly(eType);
350 0 : if(bSuccess)
351 : {
352 0 : rSh.HideCrsr();
353 0 : rSh.EnterSelFrmMode();
354 : }
355 : }
356 0 : break;
357 : case NID_DRW :
358 : case NID_CTRL:
359 : rSh.GotoObj(bNext,
360 0 : m_nMoveType == NID_DRW ?
361 : GOTOOBJ_DRAW_SIMPLE :
362 0 : GOTOOBJ_DRAW_CONTROL);
363 0 : break;
364 : case NID_REG :
365 0 : rSh.EnterStdMode();
366 0 : if(bNext)
367 0 : rSh.MoveRegion(fnRegionNext, fnRegionStart);
368 : else
369 0 : rSh.MoveRegion(fnRegionPrev, fnRegionStart);
370 :
371 0 : break;
372 : case NID_BKM :
373 0 : rSh.EnterStdMode();
374 : pThis->GetViewFrame()->GetDispatcher()->Execute(bNext ?
375 : FN_NEXT_BOOKMARK :
376 0 : FN_PREV_BOOKMARK);
377 0 : break;
378 : case NID_OUTL:
379 0 : rSh.EnterStdMode();
380 0 : bNext ? rSh.GotoNextOutline() : rSh.GotoPrevOutline();
381 0 : break;
382 : case NID_SEL :
383 0 : bNext ? rSh.GoNextCrsr() : rSh.GoPrevCrsr();
384 0 : break;
385 : case NID_FTN:
386 0 : rSh.EnterStdMode();
387 : bNext ?
388 0 : rSh.GotoNextFtnAnchor() :
389 0 : rSh.GotoPrevFtnAnchor();
390 0 : break;
391 : case NID_MARK:
392 : {
393 : // unselect
394 0 : rSh.MoveCrsr();
395 0 : rSh.EnterStdMode();
396 :
397 : // collect navigator reminders
398 0 : IDocumentMarkAccess* const pMarkAccess = rSh.getIDocumentMarkAccess();
399 0 : ::std::vector< const ::sw::mark::IMark* > vNavMarks;
400 0 : for( IDocumentMarkAccess::const_iterator_t ppMark = pMarkAccess->getAllMarksBegin();
401 0 : ppMark != pMarkAccess->getAllMarksEnd();
402 : ppMark++)
403 : {
404 0 : if( IDocumentMarkAccess::GetType(**ppMark) == IDocumentMarkAccess::NAVIGATOR_REMINDER )
405 0 : vNavMarks.push_back(ppMark->get());
406 : }
407 :
408 : // move
409 0 : if(!vNavMarks.empty())
410 : {
411 0 : if(bNext)
412 : {
413 0 : m_nActMark++;
414 0 : if (m_nActMark >= MAX_MARKS || m_nActMark >= static_cast<sal_Int32>(vNavMarks.size()))
415 0 : m_nActMark = 0;
416 : }
417 : else
418 : {
419 0 : m_nActMark--;
420 0 : if (m_nActMark < 0 || m_nActMark >= static_cast<sal_Int32>(vNavMarks.size()))
421 0 : m_nActMark = vNavMarks.size()-1;
422 : }
423 0 : rSh.GotoMark(vNavMarks[m_nActMark]);
424 0 : }
425 : }
426 0 : break;
427 :
428 : case NID_POSTIT:
429 : {
430 0 : sw::sidebarwindows::SwSidebarWin* pPostIt = pThis->GetPostItMgr()->GetActiveSidebarWin();
431 0 : if (pPostIt)
432 0 : pThis->GetPostItMgr()->SetActiveSidebarWin(0);
433 0 : SwFieldType* pFldType = rSh.GetFldType(0, RES_POSTITFLD);
434 0 : if ( rSh.MoveFldType( pFldType, bNext ) )
435 0 : pThis->GetViewFrame()->GetDispatcher()->Execute(FN_POSTIT);
436 : else
437 : //first/last item
438 0 : pThis->GetPostItMgr()->SetActiveSidebarWin(pPostIt);
439 : }
440 0 : break;
441 :
442 : case NID_SRCH_REP:
443 0 : if(m_pSrchItem)
444 : {
445 0 : sal_Bool bBackward = m_pSrchItem->GetBackward();
446 0 : if(rSh.HasSelection() && !bNext == rSh.IsCrsrPtAtEnd())
447 0 : rSh.SwapPam();
448 0 : m_pSrchItem->SetBackward(!bNext);
449 0 : SfxRequest aReq(FN_REPEAT_SEARCH, SFX_CALLMODE_SLOT, pThis->GetPool());
450 0 : pThis->ExecSearch(aReq);
451 0 : m_pSrchItem->SetBackward(bBackward);
452 : }
453 0 : break;
454 : case NID_INDEX_ENTRY:
455 0 : rSh.GotoNxtPrvTOXMark(bNext);
456 0 : break;
457 :
458 : case NID_TABLE_FORMULA:
459 0 : rSh.GotoNxtPrvTblFormula( bNext );
460 0 : break;
461 :
462 : case NID_TABLE_FORMULA_ERROR:
463 0 : rSh.GotoNxtPrvTblFormula( bNext, sal_True );
464 0 : break;
465 : }
466 0 : pThis->m_pEditWin->GrabFocus();
467 0 : delete pbNext;
468 0 : return 0;
469 : }
470 :
471 0 : int SwView::CreateTab()
472 : {
473 0 : m_pHRuler->SetActive(GetFrame() && IsActive());
474 :
475 0 : m_pHRuler->Show();
476 0 : InvalidateBorder();
477 0 : return 1;
478 : }
479 :
480 0 : int SwView::KillTab()
481 : {
482 0 : m_pHRuler->Hide();
483 0 : InvalidateBorder();
484 0 : return 1;
485 : }
486 :
487 0 : void SwView::ChangeTabMetric( FieldUnit eUnit )
488 : {
489 0 : if(m_pHRuler->GetUnit() != eUnit )
490 : {
491 0 : m_pHRuler->SetUnit( eUnit );
492 0 : m_pHRuler->Invalidate();
493 : }
494 0 : }
495 :
496 0 : void SwView::ChangeVRulerMetric( FieldUnit eUnit )
497 : {
498 0 : if(m_pVRuler->GetUnit() != eUnit)
499 : {
500 0 : m_pVRuler->SetUnit( eUnit );
501 0 : m_pVRuler->Invalidate();
502 : }
503 0 : }
504 :
505 0 : void SwView::GetVRulerMetric(FieldUnit& eToFill) const
506 : {
507 0 : eToFill = m_pVRuler->GetUnit();
508 0 : }
509 :
510 0 : void SwView::GetHRulerMetric(FieldUnit& eToFill) const
511 : {
512 0 : eToFill = m_pHRuler->GetUnit();
513 0 : }
514 :
515 0 : int SwView::CreateVRuler()
516 : {
517 0 : m_pHRuler->SetBorderPos( m_pVRuler->GetSizePixel().Width()-1 );
518 :
519 0 : m_pVRuler->SetActive(GetFrame() && IsActive());
520 0 : m_pVRuler->Show();
521 0 : InvalidateBorder();
522 0 : return 1;
523 : }
524 :
525 0 : int SwView::KillVRuler()
526 : {
527 0 : m_pVRuler->Hide();
528 0 : m_pHRuler->SetBorderPos( 0 );
529 0 : InvalidateBorder();
530 0 : return 1;
531 : }
532 :
533 0 : IMPL_LINK( SwView, ExecRulerClick, Ruler *, pRuler )
534 : {
535 0 : OUString sDefPage;
536 0 : switch( pRuler->GetClickType() )
537 : {
538 : case RULER_TYPE_DONTKNOW:
539 : case RULER_TYPE_OUTSIDE:
540 : case RULER_TYPE_INDENT:
541 : case RULER_TYPE_MARGIN1:
542 : case RULER_TYPE_MARGIN2:
543 0 : sDefPage = "indents";
544 0 : break;
545 : default:
546 0 : sDefPage = "tabs";
547 :
548 : }
549 :
550 0 : SfxStringItem aDefPage(SID_PARA_DLG, sDefPage);
551 : GetViewFrame()->GetDispatcher()->Execute( SID_PARA_DLG,
552 : SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD,
553 0 : &aDefPage, 0L );
554 0 : return 0;
555 : }
556 :
557 0 : sal_uInt16 SwView::GetMoveType()
558 : {
559 0 : return m_nMoveType;
560 : }
561 :
562 0 : void SwView::SetMoveType(sal_uInt16 nSet)
563 : {
564 0 : m_nMoveType = nSet;
565 0 : }
566 :
567 0 : void SwView::SetActMark(sal_Int32 nSet)
568 : {
569 0 : m_nActMark = nSet;
570 0 : }
571 :
572 0 : void SwView::ShowHScrollbar(sal_Bool bShow)
573 : {
574 : OSL_ENSURE(m_pHScrollbar, "Scrollbar invalid");
575 0 : m_pHScrollbar->ExtendedShow(bShow);
576 0 : }
577 :
578 0 : sal_Bool SwView::IsHScrollbarVisible()const
579 : {
580 : OSL_ENSURE(m_pHScrollbar, "Scrollbar invalid");
581 0 : return m_pHScrollbar->IsVisible( sal_False ) || m_pHScrollbar->IsAuto();
582 : }
583 :
584 0 : void SwView::ShowVScrollbar(sal_Bool bShow)
585 : {
586 : OSL_ENSURE(m_pVScrollbar, "Scrollbar invalid");
587 0 : m_pVScrollbar->ExtendedShow(bShow);
588 0 : }
589 :
590 0 : sal_Bool SwView::IsVScrollbarVisible()const
591 : {
592 : OSL_ENSURE(m_pVScrollbar, "Scrollbar invalid");
593 0 : return m_pVScrollbar->IsVisible( sal_False );
594 : }
595 :
596 0 : void SwView::EnableHScrollbar(bool bEnable)
597 : {
598 0 : if (m_bHScrollbarEnabled != bEnable)
599 : {
600 0 : m_bHScrollbarEnabled = bEnable;
601 0 : InvalidateBorder();
602 : }
603 0 : }
604 :
605 0 : void SwView::EnableVScrollbar(bool bEnable)
606 : {
607 0 : if (m_bVScrollbarEnabled != bEnable)
608 : {
609 0 : m_bVScrollbarEnabled = bEnable;
610 0 : InvalidateBorder();
611 : }
612 0 : }
613 :
614 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|