diff options
author | Grzegorz Araminowicz <grzegorz.araminowicz@collabora.com> | 2019-08-27 08:47:26 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2019-08-27 15:05:24 +0200 |
commit | fae4eb717427f542305d2978f5fa78cbf27eaafa (patch) | |
tree | 1dfb2a8f8a4f14aca442745deb62632ab81933cb /oox | |
parent | 423d16487b6d8bc048f546017da3b8274bc289cf (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')
-rw-r--r-- | oox/source/drawingml/diagram/diagram.cxx | 18 | ||||
-rw-r--r-- | oox/source/drawingml/diagram/diagram.hxx | 1 |
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; |