summaryrefslogtreecommitdiff
path: root/oox/source/drawingml
diff options
context:
space:
mode:
authorGrzegorz Araminowicz <grzegorz.araminowicz@collabora.com>2019-08-27 08:47:26 +0200
committerMiklos Vajna <vmiklos@collabora.com>2019-08-27 15:05:24 +0200
commitfae4eb717427f542305d2978f5fa78cbf27eaafa (patch)
tree1dfb2a8f8a4f14aca442745deb62632ab81933cb /oox/source/drawingml
parent423d16487b6d8bc048f546017da3b8274bc289cf (diff)
SmartArt edit UI: change plain text widget to tree view
Added getChildren() data interface method, so that it's possible to recursively fill tree view with (id, text) pairs Change-Id: Ic100ded3a3e125bf79f5caa421cd8f91e5210954 Reviewed-on: https://gerrit.libreoffice.org/78169 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'oox/source/drawingml')
-rw-r--r--oox/source/drawingml/diagram/diagram.cxx18
-rw-r--r--oox/source/drawingml/diagram/diagram.hxx1
2 files changed, 19 insertions, 0 deletions
diff --git a/oox/source/drawingml/diagram/diagram.cxx b/oox/source/drawingml/diagram/diagram.cxx
index d690cdc40991..4fcfbe760699 100644
--- a/oox/source/drawingml/diagram/diagram.cxx
+++ b/oox/source/drawingml/diagram/diagram.cxx
@@ -138,6 +138,24 @@ OUString DiagramData::getString() const
return aBuf.makeStringAndClear();
}
+std::vector<std::pair<OUString, OUString>> DiagramData::getChildren(const OUString& rParentId) const
+{
+ const OUString sModelId = rParentId.isEmpty() ? getRootPoint()->msModelId : rParentId;
+ std::vector<std::pair<OUString, OUString>> aChildren;
+ for (const auto& rCxn : maConnections)
+ if (rCxn.mnType == XML_parOf && rCxn.msSourceId == sModelId)
+ {
+ if (rCxn.mnSourceOrder >= static_cast<sal_Int32>(aChildren.size()))
+ aChildren.resize(rCxn.mnSourceOrder + 1);
+ const auto pChild = maPointNameMap.find(rCxn.msDestId);
+ if (pChild != maPointNameMap.end())
+ aChildren[rCxn.mnSourceOrder] = std::make_pair(
+ pChild->second->msModelId,
+ pChild->second->mpShape->getTextBody()->getParagraphs().front()->getRuns().front()->getText());
+ }
+ return aChildren;
+}
+
#ifdef DEBUG_OOX_DIAGRAM
OString normalizeDotName( const OUString& rStr )
{
diff --git a/oox/source/drawingml/diagram/diagram.hxx b/oox/source/drawingml/diagram/diagram.hxx
index 62609b39fab1..66b57b145c3b 100644
--- a/oox/source/drawingml/diagram/diagram.hxx
+++ b/oox/source/drawingml/diagram/diagram.hxx
@@ -193,6 +193,7 @@ public:
const dgm::Point* getRootPoint() const;
void dump() const;
OUString getString() const override;
+ std::vector<std::pair<OUString, OUString>> getChildren(const OUString& rParentId) const override;
private:
void getChildrenString(OUStringBuffer& rBuf, const dgm::Point* pPoint, sal_Int32 nLevel) const;