summaryrefslogtreecommitdiff
path: root/sd/source/ui/unoidl
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2020-06-26 09:06:18 +0200
committerTomaž Vajngerl <quikee@gmail.com>2020-06-28 08:51:59 +0200
commitf008bd0277001226f2dd695836a019c9b9c84799 (patch)
tree392598edb0da3f98d176b662238c3e9ebd4863e4 /sd/source/ui/unoidl
parentd53a4f126e9d3ec0a63684d4c7af3108f352791c (diff)
sd: send annotation position for LOKit, fix multiple annotations
This adds support to send annotation position in the document when sending the available annotations using LOKit. It also fixes an issue with the json structure for the annotations, which sends multiple annotation objects with the same (empty) key, that after parsing reduces to only one (so only one of the many annotations is present). This fix changes that so annotation objects have each its own unique key. Change-Id: I9d994383d6ee322f27f1426be5bd96ac81e8e609 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/97329 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'sd/source/ui/unoidl')
-rw-r--r--sd/source/ui/unoidl/unomodel.cxx13
1 files changed, 11 insertions, 2 deletions
diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index c72ef5725b89..ad460509dda0 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -118,6 +118,7 @@
#include <drawinglayer/primitive2d/structuretagprimitive2d.hxx>
#include <sfx2/lokcharthelper.hxx>
+#include <tools/gen.hxx>
#include <tools/debug.hxx>
#include <tools/diagnose_ex.h>
#include <tools/json_writer.hxx>
@@ -2407,13 +2408,21 @@ void SdXImpressDocument::getPostIts(::tools::JsonWriter& rJsonWriter)
for (const uno::Reference<office::XAnnotation>& xAnnotation : aPageAnnotations)
{
- auto commentNode = rJsonWriter.startNode("");
- rJsonWriter.put("id", sd::getAnnotationId(xAnnotation));
+ sal_uInt32 nID = sd::getAnnotationId(xAnnotation);
+ OString nodeName = "comment" + OString::number(nID);
+ auto commentNode = rJsonWriter.startNode(nodeName.getStr());
+ rJsonWriter.put("id", nID);
rJsonWriter.put("author", xAnnotation->getAuthor());
rJsonWriter.put("dateTime", utl::toISO8601(xAnnotation->getDateTime()));
uno::Reference<text::XText> xText(xAnnotation->getTextRange());
rJsonWriter.put("text", xText->getString());
rJsonWriter.put("parthash", pPage->GetHashCode());
+ geometry::RealPoint2D const & rPoint = xAnnotation->getPosition();
+ geometry::RealSize2D const & rSize = xAnnotation->getSize();
+ ::tools::Rectangle aRectangle(Point(rPoint.X * 100.0, rPoint.Y * 100.0), Size(rSize.Width * 100.0, rSize.Height * 100.0));
+ aRectangle = OutputDevice::LogicToLogic(aRectangle, MapMode(MapUnit::Map100thMM), MapMode(MapUnit::MapTwip));
+ OString sRectangle = aRectangle.toString();
+ rJsonWriter.put("rectangle", sRectangle.getStr());
}
}
}