sc/inc/docuno.hxx | 3 + sc/inc/viewdata.hxx | 1 sc/source/ui/docshell/docfunc.cxx | 5 ++ sc/source/ui/unoobj/docuno.cxx | 71 +++++++++++++++++++++++++++++++++++--- 4 files changed, 74 insertions(+), 6 deletions(-)
New commits: commit a29b0d68011f9e2be8eee466f3f9ccad283f274c Author: Pranav Kant <[email protected]> Date: Wed Feb 8 20:42:17 2017 +0530 sc lok: Prevent showing comments if tiled annotations are off Change-Id: I594b61e102c0ecacb169ee6064ba96d70c16ab42 diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx index 671b400..dde0818 100644 --- a/sc/source/ui/docshell/docfunc.cxx +++ b/sc/source/ui/docshell/docfunc.cxx @@ -19,6 +19,7 @@ #include "scitems.hxx" +#include <comphelper/lok.hxx> #include <sfx2/app.hxx> #include <editeng/editobj.hxx> #include <sfx2/linkmgr.hxx> @@ -1214,7 +1215,9 @@ bool ScDocFunc::ShowNote( const ScAddress& rPos, bool bShow ) { ScDocument& rDoc = rDocShell.GetDocument(); ScPostIt* pNote = rDoc.GetNote( rPos ); - if( !pNote || (bShow == pNote->IsCaptionShown()) ) return false; + if( !pNote || (bShow == pNote->IsCaptionShown()) || + (comphelper::LibreOfficeKit::isActive() && !comphelper::LibreOfficeKit::isTiledAnnotations()) ) + return false; // move the caption to internal or hidden layer and create undo action pNote->ShowCaption( rPos, bShow ); commit c7b84ac9ea14e6c96165e3281c4bea422918c83f Author: Pranav Kant <[email protected]> Date: Wed Feb 8 20:40:57 2017 +0530 sc lok: Set appropriate ScViewOptions when annotations are off Change-Id: I65b3fea9a33396419dff70b134729594c0dda4db diff --git a/sc/inc/viewdata.hxx b/sc/inc/viewdata.hxx index 1d9dcda..6a8eb4c 100644 --- a/sc/inc/viewdata.hxx +++ b/sc/inc/viewdata.hxx @@ -431,6 +431,7 @@ public: void SetHScrollMode ( bool bNewMode ) { pOptions->SetOption( VOPT_HSCROLL, bNewMode ); } bool IsOutlineMode () const { return pOptions->GetOption( VOPT_OUTLINER ); } void SetOutlineMode ( bool bNewMode ) { pOptions->SetOption( VOPT_OUTLINER, bNewMode ); } + void SetNotesMode ( bool bNewMode ) { pOptions->SetOption( VOPT_NOTES, bNewMode ); } /// Force page size for PgUp/PgDown to overwrite the computation based on m_aVisArea. void ForcePageUpDownOffset(long nTwips) { m_nLOKPageUpDownOffset = nTwips; } diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx index beb3bd6..f506fa5 100644 --- a/sc/source/ui/unoobj/docuno.cxx +++ b/sc/source/ui/unoobj/docuno.cxx @@ -1052,6 +1052,10 @@ void ScModelObj::initializeForTiledRendering(const css::uno::Sequence<css::beans // format SvtSaveOptions().SetWarnAlienFormat(false); + // If annotations are turned off in tiled rendering case + if (comphelper::LibreOfficeKit::isActive() && !comphelper::LibreOfficeKit::isTiledAnnotations()) + ScDocShell::GetViewData()->SetNotesMode(false); + // default tile size in pixels mnTilePixelWidth = 256; mnTilePixelHeight = 256; commit 31b32d156ab69f347f21de29c8ba6cd07cc4dc95 Author: Pranav Kant <[email protected]> Date: Thu Feb 9 19:19:38 2017 +0530 sc lok: implement commandvalues command, ViewAnnotations ... to list all notes in calc. Change-Id: I6c636ebd47ee238c32e3c0b7d10254d237396a51 diff --git a/sc/inc/docuno.hxx b/sc/inc/docuno.hxx index d496958..e7195e5 100644 --- a/sc/inc/docuno.hxx +++ b/sc/inc/docuno.hxx @@ -356,6 +356,9 @@ public: /// @see vcl::ITiledRenderable::setClientVisibleArea(). virtual void setClientVisibleArea(const Rectangle& rRectangle) override; + + /// @see vcl::ITiledRenderable::getPostIts(). + OUString getPostIts() override; }; class ScDrawPagesObj : public cppu::WeakImplHelper< diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx index 2c43888..beb3bd6 100644 --- a/sc/source/ui/unoobj/docuno.cxx +++ b/sc/source/ui/unoobj/docuno.cxx @@ -19,6 +19,8 @@ #include <config_features.h> +#include <boost/property_tree/json_parser.hpp> + #include "scitems.hxx" #include <editeng/editview.hxx> #include <editeng/outliner.hxx> @@ -975,6 +977,63 @@ void ScModelObj::setClientVisibleArea(const Rectangle& rRectangle) pViewData->ForcePageUpDownOffset(rRectangle.GetHeight()); } +OUString ScModelObj::getPostIts() +{ + if (!pDocShell) + return OUString(); + + const ScDocument& rDoc = pDocShell->GetDocument(); + std::vector<sc::NoteEntry> aNotes; + rDoc.GetAllNoteEntries(aNotes); + + boost::property_tree::ptree aAnnotations; + for (const sc::NoteEntry& aNote : aNotes) + { + boost::property_tree::ptree aAnnotation; + aAnnotation.put("id", aNote.maPos.hash()); + aAnnotation.put("author", aNote.mpNote->GetAuthor()); + aAnnotation.put("dateTime", aNote.mpNote->GetDate()); + aAnnotation.put("text", aNote.mpNote->GetText()); + + // Calculating the cell cursor position + ScViewData* pViewData = ScDocShell::GetViewData(); + ScGridWindow* pGridWindow = pViewData->GetActiveWin(); + if (pGridWindow) + { + Fraction zoomX = Fraction(long(mnTilePixelWidth * TWIPS_PER_PIXEL), mnTileTwipWidth); + Fraction zoomY = Fraction(long(mnTilePixelHeight * TWIPS_PER_PIXEL), mnTileTwipHeight); + + Fraction defaultZoomX = pViewData->GetZoomX(); + Fraction defaultZoomY = pViewData->GetZoomY(); + pViewData->SetZoom(zoomX, zoomY, true); + + SCCOL nX = aNote.maPos.Col(); + SCROW nY = aNote.maPos.Row(); + Point aScrPos = pViewData->GetScrPos(nX, nY, pViewData->GetActivePart(), true); + long nSizeXPix; + long nSizeYPix; + pViewData->GetMergeSizePixel(nX, nY, nSizeXPix, nSizeYPix); + + double fPPTX = pViewData->GetPPTX(); + double fPPTY = pViewData->GetPPTY(); + Rectangle aRect(Point(aScrPos.getX() / fPPTX, aScrPos.getY() / fPPTY), + Size(nSizeXPix / fPPTX, nSizeYPix / fPPTY)); + + pViewData->SetZoom(defaultZoomX, defaultZoomY, true); + + aAnnotation.put("cellPos", aRect.toString()); + } + + aAnnotations.push_back(std::make_pair("", aAnnotation)); + } + + boost::property_tree::ptree aTree; + aTree.add_child("comments", aAnnotations); + std::stringstream aStream; + boost::property_tree::write_json(aStream, aTree); + + return OUString::createFromAscii(aStream.str().c_str()); +} void ScModelObj::initializeForTiledRendering(const css::uno::Sequence<css::beans::PropertyValue>& /*rArguments*/) { commit 16f8e1c398870870ed4ea4f90cd521f1885a1345 Author: Pranav Kant <[email protected]> Date: Wed Feb 8 15:43:42 2017 +0530 sc: Use less expensive alternative to count total notes No need to fill the vector unnecessarily when we are just concerned about the total count. Change-Id: I94d7cd6dd86e612edc078f7b70c051d67b787a5a diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx index 41b7c48..2c43888 100644 --- a/sc/source/ui/unoobj/docuno.cxx +++ b/sc/source/ui/unoobj/docuno.cxx @@ -4092,11 +4092,9 @@ sal_Int32 SAL_CALL ScAnnotationsObj::getCount() sal_Int32 nCount = 0; if (pDocShell) { - ScDocument& rDoc = pDocShell->GetDocument(); - const ScRangeList aRangeList( ScRange( 0, 0, nTab, MAXCOL, MAXROW, nTab) ); - std::vector<sc::NoteEntry> rNotes; - rDoc.GetNotesInRange(aRangeList, rNotes); - nCount = rNotes.size(); + const ScDocument& rDoc = pDocShell->GetDocument(); + for (SCCOL nCol = 0; nCol <= MAXCOL; ++nCol) + nCount += rDoc.GetNoteCount(nTab, nCol); } return nCount; } _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
