From 8dc4c857f06dc9b106e6337c1f7f75bb63f7ce73 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 12 Nov 2021 07:49:44 +0100 Subject: [PATCH] App: add upgrade() method to PropertyLinkSubList --- src/App/PropertyLinks.cpp | 30 ++++++++++++++++++++++++++++++ src/App/PropertyLinks.h | 1 + 2 files changed, 31 insertions(+) diff --git a/src/App/PropertyLinks.cpp b/src/App/PropertyLinks.cpp index f92879aa4e..af4102c879 100644 --- a/src/App/PropertyLinks.cpp +++ b/src/App/PropertyLinks.cpp @@ -2180,6 +2180,36 @@ void PropertyLinkSubList::Restore(Base::XMLReader &reader) _mapped.swap(mapped); } +bool PropertyLinkSubList::upgrade(Base::XMLReader &reader, const char *typeName) +{ + Base::Type type = Base::Type::fromName(typeName); + if (type.isDerivedFrom(PropertyLink::getClassTypeId())) { + PropertyLink prop; + prop.setContainer(getContainer()); + prop.Restore(reader); + setValue(prop.getValue()); + return true; + } + else if (type.isDerivedFrom(PropertyLinkList::getClassTypeId())) { + PropertyLinkList prop; + prop.setContainer(getContainer()); + prop.Restore(reader); + std::vector subnames; + subnames.resize(prop.getSize()); + setValues(prop.getValues(), subnames); + return true; + } + else if (type.isDerivedFrom(PropertyLinkSub::getClassTypeId())) { + PropertyLinkSub prop; + prop.setContainer(getContainer()); + prop.Restore(reader); + setValue(prop.getValue(), prop.getSubValues()); + return true; + } + + return false; +} + Property *PropertyLinkSubList::CopyOnImportExternal( const std::map &nameMap) const { diff --git a/src/App/PropertyLinks.h b/src/App/PropertyLinks.h index 5e63a648b0..7b82113a15 100644 --- a/src/App/PropertyLinks.h +++ b/src/App/PropertyLinks.h @@ -973,6 +973,7 @@ public: virtual void Save (Base::Writer &writer) const override; virtual void Restore(Base::XMLReader &reader) override; + bool upgrade(Base::XMLReader &reader, const char *typeName); virtual Property *Copy(void) const override; virtual void Paste(const Property &from) override;