LCOV - code coverage report
Current view: top level - sw/source/core/edit - edws.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 92 133 69.2 %
Date: 2015-06-13 12:38:46 Functions: 25 36 69.4 %
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             :  * 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 <vcl/window.hxx>
      21             : 
      22             : #include <editsh.hxx>
      23             : #include <doc.hxx>
      24             : #include <IDocumentUndoRedo.hxx>
      25             : #include <IDocumentState.hxx>
      26             : #include <pam.hxx>
      27             : #include <docary.hxx>
      28             : #include <acorrect.hxx>
      29             : #include <swtable.hxx>
      30             : #include <ndtxt.hxx>
      31             : #include <swundo.hxx>
      32             : #include <SwRewriter.hxx>
      33             : 
      34             : // masqueraded copy constructor
      35           0 : SwEditShell::SwEditShell( SwEditShell& rEdSH, vcl::Window *pWindow )
      36           0 :     : SwCrsrShell( rEdSH, pWindow )
      37             : {
      38           0 : }
      39             : 
      40        2761 : SwEditShell::SwEditShell( SwDoc& rDoc, vcl::Window *pWindow, const SwViewOption *pOptions )
      41        2761 :     : SwCrsrShell( rDoc, pWindow, pOptions )
      42             : {
      43        2761 :     GetDoc()->GetIDocumentUndoRedo().DoUndo(true);
      44        2761 : }
      45             : 
      46        2757 : SwEditShell::~SwEditShell() // USED
      47             : {
      48        2757 : }
      49             : 
      50           1 : bool SwEditShell::IsModified() const
      51             : {
      52           1 :     return GetDoc()->getIDocumentState().IsModified();
      53             : }
      54             : 
      55           1 : void SwEditShell::SetModified()
      56             : {
      57           1 :     GetDoc()->getIDocumentState().SetModified();
      58           1 : }
      59             : 
      60        2716 : void SwEditShell::ResetModified()
      61             : {
      62        2716 :     GetDoc()->getIDocumentState().ResetModified();
      63        2716 : }
      64             : 
      65           0 : void SwEditShell::SetUndoNoResetModified()
      66             : {
      67           0 :     GetDoc()->getIDocumentState().SetModified();
      68           0 :     GetDoc()->GetIDocumentUndoRedo().SetUndoNoResetModified();
      69           0 : }
      70             : 
      71       17539 : void SwEditShell::StartAllAction()
      72             : {
      73       35078 :     for(SwViewShell& rCurrentShell : GetRingContainer())
      74             :     {
      75       17539 :         if( rCurrentShell.IsA( TYPE( SwEditShell ) ) )
      76       17539 :             static_cast<SwEditShell*>(&rCurrentShell)->StartAction();
      77             :         else
      78           0 :             rCurrentShell.StartAction();
      79             :     }
      80       17539 : }
      81             : 
      82       17536 : void SwEditShell::EndAllAction()
      83             : {
      84       35072 :     for(SwViewShell& rCurrentShell : GetRingContainer())
      85             :     {
      86       17536 :         if( rCurrentShell.IsA( TYPE( SwEditShell ) ) )
      87       17536 :             static_cast<SwEditShell*>(&rCurrentShell)->EndAction();
      88             :         else
      89           0 :             rCurrentShell.EndAction();
      90             :     }
      91       17536 : }
      92             : 
      93        2819 : void SwEditShell::CalcLayout()
      94             : {
      95        2819 :     StartAllAction();
      96        2819 :     SwViewShell::CalcLayout();
      97             : 
      98        5638 :     for(SwViewShell& rCurrentShell : GetRingContainer())
      99             :     {
     100        2819 :         if ( rCurrentShell.GetWin() )
     101        2819 :             rCurrentShell.GetWin()->Invalidate();
     102             :     }
     103             : 
     104        2819 :     EndAllAction();
     105        2819 : }
     106             : 
     107             : /** Get the content type of a shell
     108             :  *
     109             :  * @todo Is this called for every attribute?
     110             :  */
     111       19903 : sal_uInt16 SwEditShell::GetCntType() const
     112             : {
     113       19903 :     sal_uInt16 nRet = 0;
     114       19903 :     if( IsTableMode() )
     115          33 :         nRet = CNT_TXT;
     116             :     else
     117       19870 :         switch( GetCrsr()->GetNode().GetNodeType() )
     118             :         {
     119       19870 :         case ND_TEXTNODE:   nRet = CNT_TXT; break;
     120           0 :         case ND_GRFNODE:    nRet = CNT_GRF; break;
     121           0 :         case ND_OLENODE:    nRet = CNT_OLE; break;
     122             :         }
     123             : 
     124             :     OSL_ASSERT( nRet );
     125       19903 :     return nRet;
     126             : }
     127             : 
     128           4 : bool SwEditShell::HasOtherCnt() const
     129             : 
     130             : {
     131           4 :     if ( !GetDoc()->GetSpzFrameFormats()->empty() )
     132           0 :         return true;
     133             : 
     134           4 :     const SwNodes &rNds = GetDoc()->GetNodes();
     135             :     const SwNode *pNd;
     136             : 
     137           4 :     pNd = &rNds.GetEndOfInserts();
     138           4 :     if ( 1 != (pNd->GetIndex() - pNd->StartOfSectionIndex()) )
     139           0 :         return true;
     140             : 
     141           4 :     pNd = &rNds.GetEndOfAutotext();
     142           4 :     if ( 1 != (pNd->GetIndex() - pNd->StartOfSectionIndex()) )
     143           0 :         return true;
     144             : 
     145           4 :     return false;
     146             : }
     147             : 
     148             : // access control functions for file name handling
     149             : 
     150        1325 : SwActContext::SwActContext(SwEditShell *pShell)
     151        1325 :     : m_rShell(*pShell)
     152             : {
     153        1325 :     m_rShell.StartAction();
     154        1325 : }
     155             : 
     156        1325 : SwActContext::~SwActContext()
     157             : {
     158        1325 :     m_rShell.EndAction();
     159        1325 : }
     160             : 
     161          24 : SwMvContext::SwMvContext(SwEditShell *pShell)
     162          24 :     : m_rShell(*pShell)
     163             : {
     164          24 :     m_rShell.SttCrsrMove();
     165          24 : }
     166             : 
     167          24 : SwMvContext::~SwMvContext()
     168             : {
     169          24 :     m_rShell.EndCrsrMove();
     170          24 : }
     171             : 
     172       17615 : SwFrameFormat *SwEditShell::GetTableFormat() // fastest test on a table
     173             : {
     174       17615 :     const SwTableNode* pTableNd = IsCrsrInTable();
     175       17615 :     return pTableNd ? static_cast<SwFrameFormat*>(pTableNd->GetTable().GetFrameFormat()) : 0;
     176             : }
     177             : 
     178             : // TODO: Why is this called 3x for a new document?
     179           0 : sal_uInt16 SwEditShell::GetTOXTypeCount(TOXTypes eTyp) const
     180             : {
     181           0 :     return mpDoc->GetTOXTypeCount(eTyp);
     182             : }
     183             : 
     184           0 : void SwEditShell::InsertTOXType(const SwTOXType& rTyp)
     185             : {
     186           0 :     mpDoc->InsertTOXType(rTyp);
     187           0 : }
     188             : 
     189        2773 : void SwEditShell::DoUndo( bool bOn )
     190        2773 : { GetDoc()->GetIDocumentUndoRedo().DoUndo( bOn ); }
     191             : 
     192         436 : bool SwEditShell::DoesUndo() const
     193         436 : { return GetDoc()->GetIDocumentUndoRedo().DoesUndo(); }
     194             : 
     195           0 : void SwEditShell::DoGroupUndo( bool bOn )
     196           0 : { GetDoc()->GetIDocumentUndoRedo().DoGroupUndo( bOn ); }
     197             : 
     198           0 : bool SwEditShell::DoesGroupUndo() const
     199           0 : { return GetDoc()->GetIDocumentUndoRedo().DoesGroupUndo(); }
     200             : 
     201           0 : void SwEditShell::DelAllUndoObj()
     202             : {
     203           0 :     GetDoc()->GetIDocumentUndoRedo().DelAllUndoObj();
     204           0 : }
     205             : 
     206             : // Combine continuous calls of Insert/Delete/Overwrite on characters. Default: sdbcx::Group-Undo.
     207             : 
     208             : /** open undo container
     209             :  *
     210             :  * @return nUndoId ID of the container
     211             :  */
     212         268 : SwUndoId SwEditShell::StartUndo( SwUndoId eUndoId,
     213             :                                    const SwRewriter *pRewriter )
     214         268 : { return GetDoc()->GetIDocumentUndoRedo().StartUndo( eUndoId, pRewriter ); }
     215             : 
     216             : /** close undo container
     217             :  *
     218             :  * not used by UI
     219             :  *
     220             :  * @param eUndoId   ID of the undo container
     221             :  * @param pRewriter ?
     222             : */
     223         268 : SwUndoId SwEditShell::EndUndo(SwUndoId eUndoId, const SwRewriter *pRewriter)
     224         268 : { return GetDoc()->GetIDocumentUndoRedo().EndUndo(eUndoId, pRewriter); }
     225             : 
     226        1426 : bool     SwEditShell::GetLastUndoInfo(OUString *const o_pStr,
     227             :                                       SwUndoId *const o_pId) const
     228        1426 : { return GetDoc()->GetIDocumentUndoRedo().GetLastUndoInfo(o_pStr, o_pId); }
     229             : 
     230         957 : bool     SwEditShell::GetFirstRedoInfo(OUString *const o_pStr) const
     231         957 : { return GetDoc()->GetIDocumentUndoRedo().GetFirstRedoInfo(o_pStr); }
     232             : 
     233           9 : SwUndoId SwEditShell::GetRepeatInfo(OUString *const o_pStr) const
     234           9 : { return GetDoc()->GetIDocumentUndoRedo().GetRepeatInfo(o_pStr); }
     235             : 
     236             : /** Auto correction */
     237           3 : void SwEditShell::AutoCorrect( SvxAutoCorrect& rACorr, bool bInsert,
     238             :                                 sal_Unicode cChar )
     239             : {
     240           3 :     SET_CURR_SHELL( this );
     241             : 
     242           3 :     StartAllAction();
     243             : 
     244           3 :     SwPaM* pCrsr = getShellCrsr( true );
     245           3 :     SwTextNode* pTNd = pCrsr->GetNode().GetTextNode();
     246             : 
     247           6 :     SwAutoCorrDoc aSwAutoCorrDoc( *this, *pCrsr, cChar );
     248             :     // FIXME: this _must_ be called with reference to the actual node text!
     249           3 :     OUString const& rNodeText(pTNd->GetText());
     250             :     rACorr.DoAutoCorrect( aSwAutoCorrDoc,
     251           3 :                     rNodeText, pCrsr->GetPoint()->nContent.GetIndex(),
     252           6 :                     cChar, bInsert, GetWin() );
     253           3 :     if( cChar )
     254           3 :         SaveTableBoxContent( pCrsr->GetPoint() );
     255           6 :     EndAllAction();
     256           3 : }
     257             : 
     258           0 : void SwEditShell::SetNewDoc(bool bNew)
     259             : {
     260           0 :     GetDoc()->getIDocumentState().SetNewDoc(bNew);
     261           0 : }
     262             : 
     263           0 : bool SwEditShell::GetPrevAutoCorrWord( SvxAutoCorrect& rACorr, OUString& rWord )
     264             : {
     265           0 :     SET_CURR_SHELL( this );
     266             : 
     267             :     bool bRet;
     268           0 :     SwPaM* pCrsr = getShellCrsr( true );
     269           0 :     const sal_Int32 nPos = pCrsr->GetPoint()->nContent.GetIndex();
     270           0 :     SwTextNode* pTNd = pCrsr->GetNode().GetTextNode();
     271           0 :     if( pTNd && nPos )
     272             :     {
     273           0 :         SwAutoCorrDoc aSwAutoCorrDoc( *this, *pCrsr, 0 );
     274             :         bRet = rACorr.GetPrevAutoCorrWord( aSwAutoCorrDoc,
     275           0 :                                             pTNd->GetText(), nPos, rWord );
     276             :     }
     277             :     else
     278           0 :         bRet = false;
     279           0 :     return bRet;
     280             : }
     281             : 
     282           0 : SwAutoCompleteWord& SwEditShell::GetAutoCompleteWords()
     283             : {
     284           0 :     return SwDoc::GetAutoCompleteWords();
     285         177 : }
     286             : 
     287             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11