LCOV - code coverage report
Current view: top level - sw/source/core/edit - edws.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 88 142 62.0 %
Date: 2014-11-03 Functions: 24 36 66.7 %
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        4708 : SwEditShell::SwEditShell( SwDoc& rDoc, vcl::Window *pWindow, const SwViewOption *pOptions )
      41        4708 :     : SwCrsrShell( rDoc, pWindow, pOptions )
      42             : {
      43        4708 :     GetDoc()->GetIDocumentUndoRedo().DoUndo(true);
      44        4708 : }
      45             : 
      46        4706 : SwEditShell::~SwEditShell() // USED
      47             : {
      48        4706 : }
      49             : 
      50           2 : bool SwEditShell::IsModified() const
      51             : {
      52           2 :     return GetDoc()->getIDocumentState().IsModified();
      53             : }
      54             : 
      55           2 : void SwEditShell::SetModified()
      56             : {
      57           2 :     GetDoc()->getIDocumentState().SetModified();
      58           2 : }
      59             : 
      60        4702 : void SwEditShell::ResetModified()
      61             : {
      62        4702 :     GetDoc()->getIDocumentState().ResetModified();
      63        4702 : }
      64             : 
      65           0 : void SwEditShell::SetUndoNoResetModified()
      66             : {
      67           0 :     GetDoc()->getIDocumentState().SetModified();
      68           0 :     GetDoc()->GetIDocumentUndoRedo().SetUndoNoResetModified();
      69           0 : }
      70             : 
      71       30900 : void SwEditShell::StartAllAction()
      72             : {
      73       30900 :     SwViewShell *pSh = this;
      74       30900 :     do {
      75       30900 :         if( pSh->IsA( TYPE( SwEditShell ) ) )
      76       30900 :             ((SwEditShell*)pSh)->StartAction();
      77             :         else
      78           0 :             pSh->StartAction();
      79       30900 :         pSh = (SwViewShell *)pSh->GetNext();
      80       30900 :     } while(pSh != this);
      81       30900 : }
      82             : 
      83       30896 : void SwEditShell::EndAllAction()
      84             : {
      85       30896 :     SwViewShell *pSh = this;
      86       30896 :     do {
      87       30896 :         if( pSh->IsA( TYPE( SwEditShell ) ) )
      88       30896 :             ((SwEditShell*)pSh)->EndAction();
      89             :         else
      90           0 :             pSh->EndAction();
      91       30896 :         pSh = (SwViewShell *)pSh->GetNext();
      92       30896 :     } while(pSh != this);
      93       30896 : }
      94             : 
      95        4728 : void SwEditShell::CalcLayout()
      96             : {
      97        4728 :     StartAllAction();
      98        4728 :     SwViewShell::CalcLayout();
      99             : 
     100        4728 :     SwViewShell *pSh = this;
     101        4728 :     do
     102             :     {
     103        4728 :         if ( pSh->GetWin() )
     104        4728 :             pSh->GetWin()->Invalidate();
     105        4728 :         pSh = (SwViewShell*)pSh->GetNext();
     106             : 
     107        4728 :     } while ( pSh != this );
     108             : 
     109        4728 :     EndAllAction();
     110        4728 : }
     111             : 
     112             : /** Get the content type of a shell
     113             :  *
     114             :  * @todo Is this called for every attribute?
     115             :  */
     116       33750 : sal_uInt16 SwEditShell::GetCntType() const
     117             : {
     118       33750 :     sal_uInt16 nRet = 0;
     119       33750 :     if( IsTableMode() )
     120          42 :         nRet = CNT_TXT;
     121             :     else
     122       33708 :         switch( GetCrsr()->GetNode().GetNodeType() )
     123             :         {
     124       33708 :         case ND_TEXTNODE:   nRet = CNT_TXT; break;
     125           0 :         case ND_GRFNODE:    nRet = CNT_GRF; break;
     126           0 :         case ND_OLENODE:    nRet = CNT_OLE; break;
     127             :         }
     128             : 
     129             :     OSL_ASSERT( nRet );
     130       33750 :     return nRet;
     131             : }
     132             : 
     133           8 : bool SwEditShell::HasOtherCnt() const
     134             : 
     135             : {
     136           8 :     if ( !GetDoc()->GetSpzFrmFmts()->empty() )
     137           0 :         return true;
     138             : 
     139           8 :     const SwNodes &rNds = GetDoc()->GetNodes();
     140             :     const SwNode *pNd;
     141             : 
     142           8 :     pNd = &rNds.GetEndOfInserts();
     143           8 :     if ( 1 != (pNd->GetIndex() - pNd->StartOfSectionIndex()) )
     144           0 :         return true;
     145             : 
     146           8 :     pNd = &rNds.GetEndOfAutotext();
     147           8 :     if ( 1 != (pNd->GetIndex() - pNd->StartOfSectionIndex()) )
     148           0 :         return true;
     149             : 
     150           8 :     return false;
     151             : }
     152             : 
     153             : // access controll functions for file name handling
     154             : 
     155        1840 : SwActContext::SwActContext(SwEditShell *pShell)
     156        1840 :     : pSh(pShell)
     157             : {
     158        1840 :     pSh->StartAction();
     159        1840 : }
     160             : 
     161        1840 : SwActContext::~SwActContext()
     162             : {
     163        1840 :     pSh->EndAction();
     164        1840 : }
     165             : 
     166          20 : SwMvContext::SwMvContext(SwEditShell *pShell)
     167          20 :     : pSh(pShell)
     168             : {
     169          20 :     pSh->SttCrsrMove();
     170          20 : }
     171             : 
     172          20 : SwMvContext::~SwMvContext()
     173             : {
     174          20 :     pSh->EndCrsrMove();
     175          20 : }
     176             : 
     177       30211 : SwFrmFmt *SwEditShell::GetTableFmt() // fastest test on a table
     178             : {
     179       30211 :     const SwTableNode* pTblNd = IsCrsrInTbl();
     180       30211 :     return pTblNd ? (SwFrmFmt*)pTblNd->GetTable().GetFrmFmt() : 0;
     181             : }
     182             : 
     183             : // TODO: Why is this called 3x for a new document?
     184           0 : sal_uInt16 SwEditShell::GetTOXTypeCount(TOXTypes eTyp) const
     185             : {
     186           0 :     return mpDoc->GetTOXTypeCount(eTyp);
     187             : }
     188             : 
     189           0 : void SwEditShell::InsertTOXType(const SwTOXType& rTyp)
     190             : {
     191           0 :     mpDoc->InsertTOXType(rTyp);
     192           0 : }
     193             : 
     194        4732 : void SwEditShell::DoUndo( bool bOn )
     195        4732 : { GetDoc()->GetIDocumentUndoRedo().DoUndo( bOn ); }
     196             : 
     197         808 : bool SwEditShell::DoesUndo() const
     198         808 : { return GetDoc()->GetIDocumentUndoRedo().DoesUndo(); }
     199             : 
     200           0 : void SwEditShell::DoGroupUndo( bool bOn )
     201           0 : { GetDoc()->GetIDocumentUndoRedo().DoGroupUndo( bOn ); }
     202             : 
     203           0 : bool SwEditShell::DoesGroupUndo() const
     204           0 : { return GetDoc()->GetIDocumentUndoRedo().DoesGroupUndo(); }
     205             : 
     206           0 : void SwEditShell::DelAllUndoObj()
     207             : {
     208           0 :     GetDoc()->GetIDocumentUndoRedo().DelAllUndoObj();
     209           0 : }
     210             : 
     211             : // Combine continuous calls of Insert/Delete/Overwrite on characters. Default: sdbcx::Group-Undo.
     212             : 
     213             : /** open undo container
     214             :  *
     215             :  * @return nUndoId ID of the container
     216             :  */
     217         416 : SwUndoId SwEditShell::StartUndo( SwUndoId eUndoId,
     218             :                                    const SwRewriter *pRewriter )
     219         416 : { return GetDoc()->GetIDocumentUndoRedo().StartUndo( eUndoId, pRewriter ); }
     220             : 
     221             : /** close undo container
     222             :  *
     223             :  * not used by UI
     224             :  *
     225             :  * @param eUndoId   ID of the undo container
     226             :  * @param pRewriter ?
     227             : */
     228         416 : SwUndoId SwEditShell::EndUndo(SwUndoId eUndoId, const SwRewriter *pRewriter)
     229         416 : { return GetDoc()->GetIDocumentUndoRedo().EndUndo(eUndoId, pRewriter); }
     230             : 
     231        1313 : bool     SwEditShell::GetLastUndoInfo(OUString *const o_pStr,
     232             :                                       SwUndoId *const o_pId) const
     233        1313 : { return GetDoc()->GetIDocumentUndoRedo().GetLastUndoInfo(o_pStr, o_pId); }
     234             : 
     235         946 : bool     SwEditShell::GetFirstRedoInfo(OUString *const o_pStr) const
     236         946 : { return GetDoc()->GetIDocumentUndoRedo().GetFirstRedoInfo(o_pStr); }
     237             : 
     238          18 : SwUndoId SwEditShell::GetRepeatInfo(OUString *const o_pStr) const
     239          18 : { return GetDoc()->GetIDocumentUndoRedo().GetRepeatInfo(o_pStr); }
     240             : 
     241             : /** Auto correction */
     242           0 : void SwEditShell::AutoCorrect( SvxAutoCorrect& rACorr, bool bInsert,
     243             :                                 sal_Unicode cChar )
     244             : {
     245           0 :     SET_CURR_SHELL( this );
     246             : 
     247           0 :     StartAllAction();
     248             : 
     249           0 :     SwPaM* pCrsr = getShellCrsr( true );
     250           0 :     SwTxtNode* pTNd = pCrsr->GetNode().GetTxtNode();
     251             : 
     252           0 :     SwAutoCorrDoc aSwAutoCorrDoc( *this, *pCrsr, cChar );
     253             :     // FIXME: this _must_ be called with reference to the actual node text!
     254           0 :     OUString const& rNodeText(pTNd->GetTxt());
     255             :     rACorr.DoAutoCorrect( aSwAutoCorrDoc,
     256           0 :                     rNodeText, pCrsr->GetPoint()->nContent.GetIndex(),
     257           0 :                     cChar, bInsert, GetWin() );
     258           0 :     if( cChar )
     259           0 :         SaveTblBoxCntnt( pCrsr->GetPoint() );
     260           0 :     EndAllAction();
     261           0 : }
     262             : 
     263           0 : void SwEditShell::SetNewDoc(bool bNew)
     264             : {
     265           0 :     GetDoc()->getIDocumentState().SetNewDoc(bNew);
     266           0 : }
     267             : 
     268           0 : bool SwEditShell::GetPrevAutoCorrWord( SvxAutoCorrect& rACorr, OUString& rWord )
     269             : {
     270           0 :     SET_CURR_SHELL( this );
     271             : 
     272             :     bool bRet;
     273           0 :     SwPaM* pCrsr = getShellCrsr( true );
     274           0 :     const sal_Int32 nPos = pCrsr->GetPoint()->nContent.GetIndex();
     275           0 :     SwTxtNode* pTNd = pCrsr->GetNode().GetTxtNode();
     276           0 :     if( pTNd && nPos )
     277             :     {
     278           0 :         SwAutoCorrDoc aSwAutoCorrDoc( *this, *pCrsr, 0 );
     279             :         bRet = rACorr.GetPrevAutoCorrWord( aSwAutoCorrDoc,
     280           0 :                                             pTNd->GetTxt(), nPos, rWord );
     281             :     }
     282             :     else
     283           0 :         bRet = false;
     284           0 :     return bRet;
     285             : }
     286             : 
     287           0 : SwAutoCompleteWord& SwEditShell::GetAutoCompleteWords()
     288             : {
     289           0 :     return SwDoc::GetAutoCompleteWords();
     290         270 : }
     291             : 
     292             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10