[Libreoffice-commits] core.git: Branch 'feature/sc-notes-storage' - sc/source

Laurent Godard lgodard.libre at laposte.net
Mon Oct 7 02:41:13 PDT 2013


 sc/source/ui/navipi/content.cxx |   43 +++++++++++++++++++++++++++-------------
 sc/source/ui/view/printfun.cxx  |    1 
 2 files changed, 30 insertions(+), 14 deletions(-)

New commits:
commit 8c576e8050290a8fb63f504cefe2bb7195d698bc
Author: Laurent Godard <lgodard.libre at laposte.net>
Date:   Mon Oct 7 11:40:15 2013 +0200

    refactor note loops
    
    Change-Id: I41dc2a4a0f6bb82b6a9186844479bf802bc6e66d

diff --git a/sc/source/ui/navipi/content.cxx b/sc/source/ui/navipi/content.cxx
index 58634c4..8b65d0d 100644
--- a/sc/source/ui/navipi/content.cxx
+++ b/sc/source/ui/navipi/content.cxx
@@ -870,16 +870,24 @@ void ScContentTree::GetNoteStrings()
             if ( pDoc->HasColNotes(nCol, nTab) )
             {
                 sc::CellNoteStoreType& maCellNotes = pDoc->GetColNotes(nCol, nTab);
-                for (SCROW nRow=0; nRow < MAXROWCOUNT; nRow++) // TODO : notes suboptimal ?
+
+                sc::CellNoteStoreType::const_iterator itBlk = maCellNotes.begin(), itBlkEnd = maCellNotes.end();
+                sc::cellnote_block::const_iterator itData, itDataEnd;
+
+                for(;itBlk != itBlkEnd; ++itBlk)
                 {
-                    sc::CellNoteStoreType::position_type aPos = maCellNotes.position(nRow);
-                    sc::CellNoteStoreType::iterator it = aPos.first;
-                    if (it->type == sc::element_type_cellnote)
+                    if (itBlk->data)
                     {
-                        ScPostIt* pNote = maCellNotes.get<ScPostIt*>(nRow);
-                        if (pNote)
-                            InsertContent(SC_CONTENT_NOTE, lcl_NoteString( *pNote ));
+                        itData = sc::cellnote_block::begin(*itBlk->data);
+                        itDataEnd = sc::cellnote_block::end(*itBlk->data);
+                        for (; itData != itDataEnd; ++itData)
+                        {
+                            ScPostIt* pNote = *itData;
+                            if (pNote)
+                                InsertContent(SC_CONTENT_NOTE, lcl_NoteString( *pNote ));
+                        }
                     }
+
                 }
             }
         }
@@ -902,20 +910,29 @@ ScAddress ScContentTree::GetNotePos( sal_uLong nIndex )
             if ( pDoc->HasColNotes(nCol, nTab) )
             {
                 sc::CellNoteStoreType& maCellNotes = pDoc->GetColNotes(nCol, nTab);
-                for (SCROW nRow=0; nRow < MAXROWCOUNT; nRow++) // TODO : notes suboptimal ?
+
+                sc::CellNoteStoreType::const_iterator itBlk = maCellNotes.begin(), itBlkEnd = maCellNotes.end();
+                sc::cellnote_block::const_iterator itData, itDataEnd;
+
+                for(;itBlk != itBlkEnd; ++itBlk)
                 {
-                    sc::CellNoteStoreType::position_type aPos = maCellNotes.position(nRow);
-                    sc::CellNoteStoreType::iterator it = aPos.first;
-                    if (it->type == sc::element_type_cellnote)
+                    if (itBlk->data)
                     {
-                        ScPostIt* pNote = maCellNotes.get<ScPostIt*>(nRow);
-                        if (pNote)
+                        SCROW nRow = itBlk->position;
+                        itData = sc::cellnote_block::begin(*itBlk->data);
+                        itDataEnd = sc::cellnote_block::end(*itBlk->data);
+                        for (; itData != itDataEnd; ++itData, ++nRow)
+                        {
+                            ScPostIt* pNote = *itData;
+                            if (pNote)
                             {
                                 if (nFound == nIndex)
                                     return ScAddress(nCol, nRow, nTab);
                                 ++nFound;
                             }
+                        }
                     }
+
                 }
             }
         }
diff --git a/sc/source/ui/view/printfun.cxx b/sc/source/ui/view/printfun.cxx
index 3b4b382..ac87a28 100644
--- a/sc/source/ui/view/printfun.cxx
+++ b/sc/source/ui/view/printfun.cxx
@@ -2493,7 +2493,6 @@ long ScPrintFunc::CountNotePages()
 
         if (bDoThis)
         {
-        // TODO : notes
             for ( SCCOL nCol = nStartCol; nCol <= nEndCol; ++nCol )
             {
                 if (pDoc->HasColNotes(nCol, nPrintTab))


More information about the Libreoffice-commits mailing list