LCOV - code coverage report
Current view: top level - sw/source/uibase/docvw - FrameControlsManager.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 43 81 53.1 %
Date: 2015-06-13 12:38:46 Functions: 9 14 64.3 %
Legend: Lines: hit not hit

          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             : 
      10             : #include <edtwin.hxx>
      11             : #include <FrameControlsManager.hxx>
      12             : #include <HeaderFooterWin.hxx>
      13             : #include <PageBreakWin.hxx>
      14             : #include <pagefrm.hxx>
      15             : #include <viewopt.hxx>
      16             : #include <view.hxx>
      17             : #include <wrtsh.hxx>
      18             : 
      19             : using namespace std;
      20             : 
      21        2761 : SwFrameControlsManager::SwFrameControlsManager( SwEditWin* pEditWin ) :
      22             :     m_pEditWin( pEditWin ),
      23        2761 :     m_aControls( )
      24             : {
      25        2761 : }
      26             : 
      27           0 : SwFrameControlsManager::~SwFrameControlsManager()
      28             : {
      29           0 : }
      30             : 
      31           0 : SwFrameControlsManager::SwFrameControlsManager( const SwFrameControlsManager& rCopy ) :
      32             :     m_pEditWin( rCopy.m_pEditWin ),
      33           0 :     m_aControls( rCopy.m_aControls )
      34             : {
      35           0 : }
      36             : 
      37        2757 : void SwFrameControlsManager::dispose()
      38             : {
      39        2757 :     m_aControls.clear();
      40        2757 : }
      41             : 
      42           0 : const SwFrameControlsManager& SwFrameControlsManager::operator=( const SwFrameControlsManager& rCopy )
      43             : {
      44           0 :     m_pEditWin = rCopy.m_pEditWin;
      45           0 :     m_aControls = rCopy.m_aControls;
      46           0 :     return *this;
      47             : }
      48             : 
      49        2060 : SwFrameControlPtr SwFrameControlsManager::GetControl( FrameControlType eType, const SwFrm* pFrm )
      50             : {
      51        2060 :     SwFrameControlPtrMap& rControls = m_aControls[eType];
      52             : 
      53        2060 :     SwFrameControlPtrMap::iterator aIt = rControls.find(pFrm);
      54             : 
      55        2060 :     if (aIt != rControls.end())
      56           2 :         return aIt->second;
      57             : 
      58        2058 :     return SwFrameControlPtr();
      59             : }
      60             : 
      61         252 : void SwFrameControlsManager::RemoveControls( const SwFrm* pFrm )
      62             : {
      63         252 :     map< FrameControlType, SwFrameControlPtrMap >::iterator pIt = m_aControls.begin();
      64             : 
      65         537 :     while ( pIt != m_aControls.end() )
      66             :     {
      67          33 :         SwFrameControlPtrMap& rMap = pIt->second;
      68          33 :         rMap.erase(pFrm);
      69          33 :         ++pIt;
      70             :     }
      71         252 : }
      72             : 
      73       10499 : void SwFrameControlsManager::RemoveControlsByType( FrameControlType eType, const SwFrm* pFrm )
      74             : {
      75       10499 :     SwFrameControlPtrMap& rMap = m_aControls[eType];
      76       10499 :     rMap.erase(pFrm);
      77       10499 : }
      78             : 
      79           4 : void SwFrameControlsManager::HideControls( FrameControlType eType )
      80             : {
      81           4 :     SwFrameControlPtrMap::iterator pIt = m_aControls[eType].begin();
      82           8 :     while ( pIt != m_aControls[eType].end() )
      83             :     {
      84           0 :         pIt->second->ShowAll( false );
      85           0 :         ++pIt;
      86             :     }
      87           4 : }
      88             : 
      89           0 : void SwFrameControlsManager::SetReadonlyControls( bool bReadonly )
      90             : {
      91           0 :     map< FrameControlType, SwFrameControlPtrMap >::iterator pIt = m_aControls.begin();
      92             : 
      93           0 :     while ( pIt != m_aControls.end() )
      94             :     {
      95           0 :         SwFrameControlPtrMap::iterator aCtrlIt = pIt->second.begin();
      96           0 :         while ( aCtrlIt != pIt->second.end() )
      97             :         {
      98           0 :             aCtrlIt->second->SetReadonly( bReadonly );
      99           0 :             ++aCtrlIt;
     100             :         }
     101           0 :         ++pIt;
     102             :     }
     103           0 : }
     104             : 
     105           0 : void SwFrameControlsManager::SetHeaderFooterControl( const SwPageFrm* pPageFrm, FrameControlType eType, Point aOffset )
     106             : {
     107             :     OSL_ASSERT( eType == Header || eType == Footer );
     108             : 
     109             :     // Check if we already have the control
     110           0 :     SwFrameControlPtr pControl;
     111           0 :     const bool bHeader = ( eType == Header );
     112             : 
     113           0 :     SwFrameControlPtrMap& rControls = m_aControls[eType];
     114             : 
     115           0 :     SwFrameControlPtrMap::iterator lb = rControls.lower_bound(pPageFrm);
     116           0 :     if (lb != rControls.end() && !(rControls.key_comp()(pPageFrm, lb->first)))
     117           0 :         pControl = lb->second;
     118             :     else
     119             :     {
     120           0 :         SwFrameControlPtr pNewControl( new SwHeaderFooterWin( m_pEditWin, pPageFrm, bHeader ) );
     121           0 :         const SwViewOption* pViewOpt = m_pEditWin->GetView().GetWrtShell().GetViewOptions();
     122           0 :         pNewControl->SetReadonly( pViewOpt->IsReadonly() );
     123           0 :         rControls.insert(lb, make_pair(pPageFrm, pNewControl));
     124           0 :         pControl.swap( pNewControl );
     125             :     }
     126             : 
     127           0 :     Rectangle aPageRect = m_pEditWin->LogicToPixel( pPageFrm->Frm().SVRect() );
     128             : 
     129           0 :     SwHeaderFooterWin& rHFWin = dynamic_cast<SwHeaderFooterWin&>(*pControl.get());
     130             :     assert(rHFWin.IsHeader() == bHeader);
     131           0 :     rHFWin.SetOffset( aOffset, aPageRect.Left(), aPageRect.Right() );
     132             : 
     133           0 :     if (!rHFWin.IsVisible())
     134           0 :         pControl->ShowAll( true );
     135           0 : }
     136             : 
     137         392 : void SwFrameControlsManager::SetPageBreakControl( const SwPageFrm* pPageFrm )
     138             : {
     139             :     // Check if we already have the control
     140         392 :     SwFrameControlPtr pControl;
     141             : 
     142         392 :     SwFrameControlPtrMap& rControls = m_aControls[PageBreak];
     143             : 
     144         392 :     SwFrameControlPtrMap::iterator lb = rControls.lower_bound(pPageFrm);
     145         392 :     if (lb != rControls.end() && !(rControls.key_comp()(pPageFrm, lb->first)))
     146         125 :         pControl = lb->second;
     147             :     else
     148             :     {
     149         267 :         SwFrameControlPtr pNewControl( new SwPageBreakWin( m_pEditWin, pPageFrm ) );
     150         267 :         const SwViewOption* pViewOpt = m_pEditWin->GetView().GetWrtShell().GetViewOptions();
     151         267 :         pNewControl->SetReadonly( pViewOpt->IsReadonly() );
     152             : 
     153         267 :         rControls.insert(lb, make_pair(pPageFrm, pNewControl));
     154             : 
     155         267 :         pControl.swap( pNewControl );
     156             :     }
     157             : 
     158         392 :     SwPageBreakWin& rWin = dynamic_cast<SwPageBreakWin&>(*pControl.get());
     159         392 :     rWin.UpdatePosition();
     160         392 :     if (!rWin.IsVisible())
     161         392 :         pControl->ShowAll( true );
     162         569 : }
     163             : 
     164             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11